to post messages and comments.

If you wan to add element in existing list - use nested joins:

ExternalBastionSecurityGroups - List<AWS::EC2::SecurityGroup::Id>
SecurityGroupsList            - List<AWS::EC2::SecurityGroup::Id>
Outputs.BastionSecurityGroup  - AWS::EC2::SecurityGroup::Id

SecurityGroupsList: !Join
  - ','
  - - !GetAtt [ securitygroups, Outputs.BastionSecurityGroup ]
    - !Join [ ',', !Ref ExternalBastionSecurityGroups ]

How to filter intalled on the host certificates by FriendlyName

@powershell "Get-ChildItem -Recurse Cert: | where { $_.FriendlyName -eq 'Starfield Class 2 Certification Authority' -or $_.FriendlyName -eq 'Starfield Services Root Certificate Authority - G2' -or $_.FriendlyName -eq 'Amazon Root CA 1'} | Format-Table -AutoSize | Out-String -Width 2000"

Жуйк, а ты знал, что в VBScript можно получать указатели на функции?
Простой пример.

Option Explicit

Function AddNumbers(One, Two)
	AddNumbers = One + Two
End Function

Dim objFunctionPointer
Set objFunctionPointer = GetRef("AddNumbers")

WScript.Echo objFunctionPointer(3, 5)

hPutStr :: Handle -> BL.ByteString -> IO ()
hPutStr hdl lbs = wantWritableHandle "Data.ByteString.Lazy.hPutStr" hdl $ \hdl__ ->
  BL.foldrChunks (go hdl__) (commit hdl__) lbs
 where
  go hdl__ (S.PS ps s l) rest = do
   unless (l == 0) $ withForeignPtr ps $ \p -> do
    _ <- bufWrite hdl__ (p `plusPtr` s) l True
    pure ()
   rest
  commit hdl__ =
   case haBufferMode hdl__ of
    BlockBuffering _   -> do return ()
    _line_or_no_buffering -> do flushWriteBuffer hdl__
                  return ()

    ghc.EXE: unable to load package `text-icu-0.7.0.1'
    ghc.EXE: addLibrarySearchPath: C:\Users\****\backend\windows\deps\usr\local\lib (Win32 error 3): я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜.
    ghc.EXE: addLibrarySearchPath: C:\Users\****\backend\windows\deps\usr\local\lib (Win32 error 3): я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜.
    ghc.EXE: addLibrarySearchPath: C:\Users\****\backend\windows\deps\usr\local\lib (Win32 error 3): я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜.
    ghc.EXE: addLibrarySearchPath: C:\Users\****\backend\windows\deps\usr\local\lib (Win32 error 3): я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜ я┐╜я┐╜я┐╜я┐╜.
    ghc.EXE: C:\sr\snapshots\7dd4ddea\lib\x86_64-windows-ghc-8.0.2\text-icu-0.7.0.1-JAtt4aKN3S2FwEv7rbv9x1\HStext-icu-0.7.0.1-JAtt4aKN3S2FwEv7rbv9x1.o: unknown symbol `ucnv_getMaxCharSize_57'

СПАСИБО ВИНДАВС Я ТАК И ПОНЯЛ, ЧТО ТЫ ГОВОРИШЬ ЧТО ПУТЬ НЕ ВЕРНЫЙ

amap :: (Category p, Strong p, Choice p, Profunctor p) => p a b -> p [a] [b]
amap = make . it . tasty where -- (p ||| amap p) where
  -- make :: Profunctor p => p (Either () (a,[a])) (Either () (b,[b])) -> p [a] [b]
  make = dimap view build
    where
     build = either (const []) (uncurry (:))
     view = maybe (Left ()) Right . uncons
  -- it :: (Choice p, Profunctor p) => p (a,[a]) (b,[b]) -> p (Either () (a,[a])) (Either () (b,[b]))
  it = right'
  -- tasty :: (Choice p, Category p, Strong p) => p a b -> p (a,[a]) (b,[b])
  tasty p = p ||| amap p
  (|||) x y = first' x >>> second' y

меняем it на right' и все перестает компилироваться, почему?

Prelude> let x = (id True, id undefined)
Prelude> :sprint x
x = _
Prelude> let x = (True, id undefined)
Prelude> :sprint x
x = _
Prelude> let x = (True, undefined)
Prelude> :sprint x
x = (,) True _
Prelude> let x = (True, undefined::Int)
Prelude> :sprint x
x = (True,_)
Prelude> let x = (True, False)
Prelude> :sprint x
x = (True,False)

кто-нить может мне объяснить почему вывод именно такой?

заглянул в букмарки, а там такое

javascript:(function()%7Bjavascript:var%20s%3Ddocument.createElement(%27script%27)%3Bs.setAttribute(%27src%27,%27https://nthitz.github.io/turndownforwhatjs/tdfw.js%27)%3Bdocument.body.appendChild(s)%3B%7D)()%3B

попробуйте на главной жуйка, например

Чото я не понял. cgi в iis сделал, программу сделал. В песочнице всё работало.
На работе запускаю - пишет:

Unhandled Exception: System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.ArgumentException: Illegal characters in path.
 at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters(String[] str, Boolean onlyCheckExtras)
 at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
 at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
 at System.AppDomainSetup.VerifyDir(String dir, Boolean normalize)
 at System.AppDomainSetup.get_ConfigurationFile()
 at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
 at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
 at System.Configuration.ClientConfigurationHost.GetStreamName(String configPath)
 at System.Configuration.ClientConfigurationHost.get_IsAppConfigHttp()
 at System.Configuration.ClientConfigurationSystem..ctor()
 at System.Configuration.ConfigurationManager.EnsureConfigurationSystem() --- End of inner exception stack trace ---
 at System.Configuration.ConfigurationManager.PrepareConfigSystem()
 at System.Configuration.ConfigurationManager.GetSection(String sectionName)
 at System.Configuration.ConfigurationManager.get_AppSettings()
.....

залез дебаггером - он ищет путь до конфига как "\\?C:\....exe.config"
Ну и видимо как-то умудряется на этом упасть
Что я не так сделал?

Что я делаю неправильно, что чувствую потребность в таких конструкциях?

#define ZIP(__x_, __xs_, __y_, __ys_) \
     for(auto __x_ = __xs_.begin(); __x_ == __xs_.begin();) \
         for(auto __y_ = __ys_.begin(); \
             __y_ != __ys_.end() && __x_ != __xs_.end(); \
             __y_++, __x_++)
int main()
{
     std::vector<int> xs(3);
     xs = {0, 1, 2};
     std::vector<double> ys(4);
     ys = {3.5, 2.5, 1.5, 0.5};
     
     ZIP(x, xs, y, ys){
         std::cout<<(*x)<<" "<<(*y)<<"\n";
     }
}

Вывод:
0 3.5
1 2.5
2 1.5

Жуйк, хочу странного:
У меня на удаленной машине есть башевская переменная, пусть она будет $USERS и в ней будет массив с юзернеймами.
Есть ли какой-нибудь способ сделать так, чтобы эта переменная появилась у меня на машине?
Самое умное, до чего я дошел, это:
USERS=$(ssh example.com 'echo ${USERS[@]}')
но тогда массив перестает быть массивом.

// Как жить без приватных методов в интерфейсах?
// Например, пишем такое в DefaultsInterface.java:
public interface DefaultsInterface {

	default void test1() {
		DefaultsInterfaceCompanion.INSTANCE.test("S1");
	}

	default void test2() {
		DefaultsInterfaceCompanion.INSTANCE.test("S2");
	}
}

enum DefaultsInterfaceCompanion {
	INSTANCE();

	void test(String suffix) {
		System.out.println("test" + suffix);
	}
}

// Да, замена не равноценная, но проблему дублирования кода 
// в дефолтных методах решает, не загрязняя интерфейс. 

Хотел поделиться радостью, что в плюсцах-то multiline string завезли, вдруг кто прозевал уже несколько лет, в С++14

Вот она мечта идиота (решетка - это произвольный маркер)

                database->update(R"#(
                                                   delete from tab1
                                                   where a=? and c=?
                                                    )#", binds2(number1, string2));

В следующей декаде завезут наверно string interpolation. Доживу, возрадуюсь.


                         ..sSs$$$$$$b.                                       
                       .$$$$$$$$$$$$$$$.                                     
                    .$$$$$$$$$$$$$$$$$$$$$b.                                 
                  .$$$$$$$$$$$$$$$$$$$$$$$$$                                 
                 $$$$$$$$$$$$$$$$$S'   `$$$$                                 
                 $$$$$$$$$$$$$$S'        $$$                                 
                 $$$$$$$$$$$$$'          `$$.                                
                 `$$$$$$$$$$$$$           `$$$.                              
                   `$$$$$$$$$'       .s$$$ $$ $                              
                     $$$$$$$$$.sSs .s$$s"   s s                              
                      $$$$$$$$$$$$           $P                              
                      `$$$$$$$$$$$s          $                               
                        $$$$$$$$$$$.    ",                                   
                        `$$$$$$$$$$sS$                                       
        s$$$.            `$$$$$$$$$$$$.s"'   .$.                             
        $$$$$.              `$$$$$$$$$$.    .$$$Ss.s$s.                      
         $$$$$.              `$$$$$$$$$P   .$$$$$$$$$$$$.                    
         $$$$$$.               `$$$$$$$' .$$$$$$$$$$$$$$$$.                  
         `$$$$$$.                 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$s.          
           $$$$$$.                `$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$s.      
         .s$$$$$$$.                 `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.    
         s  $$$$$$$.                .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.   
         `$$$$$$$$$$.             .$$$' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.  
          `$$$$$$$$$$.           s$'   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.
          $$$$$$$$$$$$e         $$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
        .' $$$$$$$$$$7         $$$$       `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       "   `$$$$$$$$7         $$$$$       .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$Ss..$$$$$$$7        $$$$$$$    .s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$        $$$$$$$$ .s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
        $$$$$$$$$$$     .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      .$$$$$$$$$$$$$   .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$  .$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$ .$$$$$$$$$$$' `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$ $$$$$$$$$$$$   `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$$$$$$$$$$$$$$    `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      `$$$$$$$$$$$$$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$$$$$$$$$$$$$$$.     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       `$$$$$$$$$$$$$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
         $$$$$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
           $$$$$$$$$$ $$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
            $$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
             $$$$$$$$$$$$$$$$$$$$'      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
             `$$$$$$$$$$$$$$$$$$$       $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
              `$$$$$$$$$$$$$$$$$$.      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
               `$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                 $$$$$$$$$$$$$$$$$.     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                  `$$$$$$$$$$$$$$$$     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                    $$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                    $$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-'    `-::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::-'          `::::::::::::::::
:::::::::::::::::::::::::::::::::::::::-  '   /(_M_)\  `:::::::::::::::
:::::::::::::::::::::::::::::::::::-'        |       |  :::::::::::::::
::::::::::::::::::::::::::::::::-         .   \/~V~\/  ,:::::::::::::::
::::::::::::::::::::::::::::-'             .          ,::::::::::::::::
:::::::::::::::::::::::::-'                 `-.    .-::::::::::::::::::
:::::::::::::::::::::-'                  _,,-::::::::::::::::::::::::::
::::::::::::::::::-'                _,--:::::::::::::::::::::::::::::::
::::::::::::::-'               _.--::::::::::::::::::::::#####:::::::::
:::::::::::-'             _.--:::::::::::::::::::::::::::#####:::::####
::::::::'    ##     ###.-::::::###:::::::::::::::::::::::#####:::::####
::::-'       ###_.::######:::::###::::::::::::::#####:##########:::####
:'         .:###::########:::::###::::::::::::::#####:##########:::####
     ...--:::###::########:::::###:::::######:::#####:##########:::####
 _.--:::##:::###:#########:::::###:::::######:::#####:#################
'#########:::###:#########::#########::######:::#####:#################
:#########:::#############::#########::######:::#######################
##########:::########################::################################
##########:::##########################################################
##########:::##########################################################
#######################################################################
#######################################################################
################################################################# dp ##
#######################################################################

                   ____==========_______
        _--____   |    | ""  " "|       \
       /  )8}  ^^^| 0  |  =     |  o  0  |
     </_ +-==B vvv|""  |  =     | '  "" "|
        \_____/   |____|________|________|
                 (_(  )\________/___(  )__)
                   |\  \            /  /\    
                   | \  \          /  /\ \      
                   | |\  \        /  /  \ \    
                   (  )(  )       (  \   (  )
                    \  / /        \  \   \  \    
                     \|  |\        \  \  |  |
                      |  | )____    \  \ \  )___      
                      (  )  /  /    (  )  (/  /
                     /___\ /__/     /___\ /__/

║KKT_8_14_02_02_Full.EXE                                │  69 M║║
║Read.me                                                │  2715║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║
║                                   ╔════════════════════════ Copy ════════════════════════╗
║                                   ║ Copying the file                                     ║
║                                   ║ KKT_8_14_02_02_Full.EXE                              ║
║                                   ║ to                                                   ║
║                                   ║ \\192.168.4.254\C$\Install\KKT_8_14_02_02_Full.EXE   ║
║                                   ║ ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   7% ║
║                                   ╟─────────────────────── Total ────────────────────────╢
║                                   ║ Files processed: 0                                   ║
║                                   ║ Bytes processed: 2 097 1524 073 708 503 040          ║
║                                   ╟──────────────────────────────────────────────────────╢
║                                   ║ Time: 00:02:18    Remaining: 00:29:40     37,10 KB/s ║
║                                   ╚══════════════════════════════════════════════════════╝
║
║                                                       │      ║║

ДОМ С ТРУБОЙ               @  @
   МЫ С КОЛЯНОМ НЕГОДУЕМ        @     
                             [email protected]      
    ,,,         _____________| |_     
   ,@[email protected],       / __  \       | | \    
  ,@[email protected][email protected],     / /  \  \      | |  \   
 ,@[email protected][email protected][email protected],   /  \__/   \           \  
 ,@\|| /@,  /___________\___________\ 
,@$ ||/@[email protected]  |  _______  |  .____.   | 
 @,\|| /@   | |   |   | |  |    |   | 
    ||/     | |---|---| |  |   ]|   | 
mabu||      | |___|___| |  |    |   | 
`17 ||      |___________|__!____!___| 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Я написал дурацкий быдлокод!
Вставка вот такого фрагмента не помогает. Всё равно программа не работает.
for (i = 0; i < 100; i++)
  {
    _asm nop;
  }

А вот вставка:
for (i = 0; i < 2; i++)
  {
    _asm nop;
    _asm nop;
  }
Помогает, всё работает. Может быть, дело не в задержке, а в выравнивании адресов?..

Открыл для себя Vert.x, плюс Kotlin = полностью асинхронное всё: http сервер, https (!!) клиент, кафка, постгрес, вебсокеты уже то понятно. В котлине 1.1.1 все на корутинах.. прямо скала. Адопшн кажется будет побольше чем у скалы, поэтому ожидаем вскорости бум. С небольшим набором корутинных врапперов пишем буквально следующее:

    suspend fun graphAPI(request: String, access: String) : JsonObject {
        val resp = VX.getJson("https://graph.facebook.com/v2.3/$request&access_token=$access")
        when(resp.statusCode) {
            200 -> return JsonObject(resp.response)
            else -> throw IOException("Facebook invalid response: "+resp.toString());
        }
    }

        when (req.path()) {
            "/register_server" -> {
                exec("delete from other_servers where ip_address=${v(param("ip"))}")
                exec("insert into other_servers(ip_address, hostname) values(${v(param("ip"))},${v(param("host"))}) ")
                commit()
                output(JsonObject(Pair("result","OK")))
            }

(во втором куске кода sql bindings безопасные если шо)
(может можно кое что еще проще, пока не знаю как)
(обработка ошибок, выделение коннекшнов, транзакциы всякие итп - все снаружи)
(ексепшны в котлине отлично дружат в асинхронном коде)
(а и не скажешь, что асинхронный, верно?)

21 век настал.

import Data.Proxy
import Data.Kind

type family Saturate (f :: k) (v :: a) :: Type where
    Saturate (f :: a -> Type) v = f v
    Saturate (f :: a -> k)    v = Saturate (f v) v

data Select f = Select (forall a. Saturate f a -> a)

sel :: Proxy f -> (forall a. Saturate f a -> a) -> Select f
sel _ = Select

data T a b c = T { x :: a, y :: b, z :: c }

Есть такой кусочек кода. Всё как всегда:
Select x — реджектится компилятором (без явной аннотации типа) потому что из Saturate f a нельзя вывести f.
sel x — работает, но таскать Proxy (или явную аппликацию типа) не хочется.
Есть шанс сделать красиво?

баловались в фидо

      ,gSS$$SSg,
    ,J$$$$$$$$$$S,     шуршал себе по лесу неспеша,
   ,Y'  `$$$$$$$$$L             топтал дорожки, любовался елкой...
   $'g$$b`$$$$$$$$B    вдруг на меня, такого малыша,
   `j'$'$h`$$$$$$$Y             свалилось яблоко,
@,.d$g$g$$ $$$$$$Y'                     чуть-чуть помяв иголки :)
 "╚S$$' Y╝'`''''