Русский
Русский
English
Статистика
Реклама

Хакатоны

Финал рояля разбираем загадки и подводим итоги

02.06.2021 18:06:54 | Автор: admin
Котика разбили, рояль спасли точнее, наоборот: котика скачали с сервера, роялю поломали ножки, но в целом он бодрячком. И сегодня был последний день, когда все желающие могли попробовать свои силы в скачивании NFT-гифки с танцующим котиком, хотя ноутбук уже пять дней как двинул лапти за печь. А теперь мы вскрываем все карты и рассказываем обо всех загадках и их решениях.

По истории, хозяин ноутбука дал нам его IP-адрес, SSH-ключ и логин. В конфиге SSH был настроен доступ только по ключам, чтобы участники могли не тратить время на подбор пароля. Публичный ключ был таким:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDMyK0W5OMnzJFszo5ClCVbqAQ6s1NWYeast+WjIyWF7

Главная цель была попасть на ноутбук нашего друга и скачать с него NFT-гифку с котиком, пока на ноут не упадёт рояль. Но вскоре, после начала операции по спасению котика, выяснилось, что в ноутбуке уже потоптались хакеры, поэтому участники не могли попасть на ноутбук не подходил приватный ключ. Группа хакеров называла себя sp0rk b4gel


Их интересовал исходный код, принадлежавший компании, где работал герой нашей истории. Код они слили, а вместе с ним случайно и котика прихватили, даже не заметив этого. После этого, хакеры начали шантажировать нашего друга, угрожая опубликовать его наработки, что грозило ему судебным преследованием.

Для надежного сохранения измененного SSH-ключа, хакерская группа разделила его по схеме Шамира на 10 частей, из которых 8 были необходимыми для входа в ноутбук. 9 ключей были распределены среди хакеров, а 10-й, бонусный, мы вставили вне сюжета (об этом ниже). И участникам нужно было решить несколько задач, получая за каждую из них по фрагменту правильного приватного ключа. Сами задания были в виде случайных промашек хакеров.

Поскольку кроме названия хакерской группы у участников не было иных зацепок, то им пришлось обратиться сначала к Google.

В поисковой выдаче они нашли манифест хакеров. Текст манифеста на textbin.net был успешно проиндексирован Google и находился по названию. В конце манифеста указаны ники хакеров, по каждому из которых можно было найти соответствующее задание-подкоп под хакера, ведь просто так они не отдали бы измененный ключ, верно?

Задание 50n1c4h0


Часть ключа:
ssss-01-5dc6284446d3f3ae3d2b9e12167a118708f08686474e6471d178703938e3bc043796c79f72853a2cd77d2e956e41490b9b961a526f4911527bfe14c24f0022ce31a52f5fc118ca1dd1c1f0

Категория задания: crypto, re
Гуглим ник, в итоге находим фотоальбом (проиндексированные во время квеста ссылки на него на Pinterest или Juxtapost) и сайт https://50n1c4h0.netlify.app/ по одной из фотографий в фотоальбоме, рекомендующей использовать этот сайт:


Сайт протектор для защиты конфиденциальных данных. Внутри него доморощенная 16-битная виртуальная машина с байткодом, немного накрытая обфускатором. Программа для этой машины реализация поточного шифра RC4 с ключом 4c524338f5169e91e0cc05971f5b9b6e (hex). На фотографии из фотоальбома показан результат работы протектора над искомой частью ключа (из QR-кода декодируем:

6efb5c8eaf511770715681cac161b49f45ad9c12837ae41b35639653fcbc03e55e16a5d4953ba1fee6f8d4a3606b0751fd6d6a0b8e14200f4ed78943d4553d0bebfabcb8c0e30fa3580ab08899edbadd878b6e7c033febf6679558d1511c74f8d9ca54ef4c646a08f1bfeefe1a3b7884d3f2c94ee14649dcdc11591b8a8b0a005c80a8ce4b7c3dde988d59065ec574ad194fdc204137fc6748994942237e).

Поскольку алгоритм обратим, можно воспользоваться любой реализацией шифра RC4, подставить ключ и получить исходный открытый текст это reverse-путь решения задания.

Можно было пойти и другим, криптоаналитическим путём: заметив, что выходной байт шифротекста зависит только от позиции и значения входного байта и не меняется (например, байт 0x41 на позиции 1 будет всегда преобразован в 0x39, байт 0x42 в 0x5F и т.д.), можно было побайтово подбирать входные данные под известные из QR-кода выходные, таким образом также получив искомую часть ключа, байт за байтом.

Задание GemmadohA


Часть ключа:
ssss-02-8e8425381bc24f44cbdefdae711d91c0a733350e949827f66a0ee00a5301afc3f68aad0a69e1b3d93465e70db0675089dd27fd993efe39bc881ad00b19d6055b856e9853af0b681213cb81

Категория задания: почти pwn
Мы не могли оставить в стороне прошлый квест (подробнее о нём читайте тут) и решили использовать сайт студии Сокол как дань уважения тем участникам, которые дни и ночи пытались спасти деньги из пасти прожорливого шредера.

Заходим на сайт https://ooosokol.ru/ (намёк на этот проект был в сообщении хакеров). Видим, что сайт уже взломал хакер GemmadohA. Также он оставил там веб-шелл (есть в комментарии в странице дефейса, чтобы не забыть). Логин и пароль для веб-шелла:gemmadoha:gemmadoha, почти как классический admin:admin.

Хакер также создал на взломанном сервере себе аккаунт. Приватный ключ от него с сервера не убрал (/home/gemmadoha/.ssh/id_rsa), поскольку генерировал на нём же. Читаем веб-шеллом приватный ключ, заходим на сервер ooosokol.ru по SSH.


Видим, что хакер всё еще висит (подсказка что если хакер всё ещё на сервере, он же только недавно его взломал в Discord) по SSH (с IP 194.87.236.30), что-то копается в файлах. Для него висит сокет агента SSH в /tmp, это можно обнаружить, просто поискав все файлы, владельцем которых является хакер (а чтобы не тратить зря время на попытки повышения привилегий, в Discord была дана подсказка то, что вы ищете не на этом сервере).

При помощи команды:

SSH_AUTH_SOCK=/tmp/ssh-5j3MjI6mby/agent.23577 ssh gemmadoha@194.87.236.30

используем его SSH-агент против него самого (хакаем хакера, в Discord была дана подсказка hack the hacker) и заходим на его же сервер. В домашней папке лежит очередной secret.txt.

Задание thereane777


Часть ключа:
ssss-04-44ed995def2ab783d02fdd783c528a347f29adc494130b65827721002fe47d0b5d3f29cf55620b596c49f23652cb4648cb3c7b5c605d5a9e2f0f3c46f32894c9980d028a7e7b33f8c8c48b

Категория задания: misc
Гуглим ник, попадаем в темы на хакерских форумах, где зарегистрирован этот хакер.

В описании профиля хакера указана ссылка на Яндекс.Диск для полезной информации: https://disk.yandex.ru/d/kQ9MPqO3anRiTA

На диске среди всяких полезных программ (клиенты ICQ) находится запароленный архив icons.zip. Пароль от него: v1pPGOuPS8HXFrS (длинный и неподбираемый). Без знания пароля видно, что в архиве два файла .png (картинки) и интересный файл secret.txt.

Задание решается без знания пароля по малоизвестному, но всё же все еще актуальному методу zip known plaintext attack при помощи программы bkcrack (наследница pkcrack). Именно для реализации этой атаки в архиве лежат две случайные PNG-картинки (их содержимое участникам неизвестно, да это и не требуется, однако найти в интернете их тоже можно), поскольку их заголовок, первые 16 байт которого одинаковы для любого PNG-файла, и является достаточным (там достаточно всего 12 байт, причем даже необязательно последовательных) для проведения атаки.




В результате получаем ZipCrypto-ключ dd8d62b4 83fed681 6761bbc1, при помощи которого открываем архив и получаем содержимое файла secret.txt, в котором лежит искомая часть ключа.

Задание y4n4naby5


Часть ключа:
ssss-05-9b5f9fef9cf5d85d206ed65b4a645888f6409b79c956309a2f1860daa0c4d8cd23113fdcee5fa5575ff7e9398d061eed52c62eee743f77c569c861fb1ade55a2149dc05a9f2e4f2e18bad5

Категория задания: forensics
Гуглим ник, находим (во время проведения квеста находилась) тему на форуме с просьбой о помощи по вскрытию Wi-Fi сети с именем DIR-615 y4n4naby5 (видимо Wi-Fi искомого хакера). В сообщении приложен дамп трафика, который необходим для подбора пароля к Wi-Fi сети (четырёхкратное WPA-рукопожатие).

В теме на форуме выложен дамп трафика Wi-Fi сети, и в дампе информации даже больше, чем необходимо для подбора пароля. Пароль же подбирается по старому, очень известному (он даже включен в самый известный пентестерский дистрибутив Kali Linux) и применяемому при первом же удобном случае при практически любых подборах словарю RockYou. Этот пароль fireheart79 (был успешно подобран участником форума). Подбор займет не более часа на современном процессоре (никакие видеокарты не нужны) при помощи того же hashcat.

Знание пароля также позволит и расшифровать ненужный WiFi-трафик при помощи того же Wireshark, и увидеть, что за данные передавал хакер. Кроме мусора (обмен данными с серверами Alibaba и Google) можно заметить интересное подключение по протоколу FTPS (FTP поверх SSL/TLS) к серверу soclose.numbers.com (такое имя не зарегистрировано, это и не важно, а IP вообще подделан на один из IP Google). TLS, как известно, шифрованный протокол, однако параметры без каких-либо дополнительных специальных настроек (сервером был vsftpd, а клиентом andftp) оказались такими (TLS 1.2 без использования выработки общего секрета по схеме Диффи-Хеллмана), что для расшифровки трафика из дампа нужен лишь приватный ключ сервера (если задействовать схему Диффи-Хеллмана, то это было бы невозможно без дампов памяти клиента или сервера). Параметры ключа сервера (RSA-2048) подобраны так (p и q близки друг к другу), чтобы быть подверженными атаке по методу факторизации Ферма. На это есть намек в имени сервера (so close numbers). Атака выполняется мгновенно при помощи той же RSACtfTool, и дает

p = 133205738301055492415292455053957573761950370019465363197330018804911429748841372623440097998280840848577224963374030102174633719338576372412863025595291812898461741802590180711710007911941796139236802646966981084378380345280502967196789430710224184344783160032007107024729298554505470658071546418304653261811

q = 133205738301055492415292455053957573761950370019465363197330018804911429748841372623440097998280840848577224963374030102174633719338576372412863025595291812898461741802590180711710007911941796139236802646966981084378380345280502967196789430710224184344783160032007107024729298554505470658071546418304653247279

А соответственно и приватный ключ:

-----BEGIN RSA PRIVATE KEY-----MIIEoAIBAAKCAQEAjI7G8TjcvnASyKj8jlnIC8mj2BjCISJRKa91xVC2ATA6dgJQVq12wxCJ/4tvG/GHv4mtTF3T5EASTUD+KSIjGPxakcXFEF13VfNS6C0TwyBH5+yZ/f5AdzTPDqF2ScZQ1J461NVOscZN9eXU5JGO/b+NpP/QZ2Od4E3WBTfP1zpBSAnoVOLs3TjWSAfW1AY6uEBS2NKT0VMRSya2u57ZdPkC2+pH1NG9GW6CR4KR2RVT2vdFCOEyMNSixhklBdVNNIHkZYQH0NMt4FUfY5bE9W6wBvUtzIEVqNXCQv3IC6tmPYIgvy8FquGNln1mFr7+H4TMaoIlz4LYdK2UwtBanQIDAQABAoIBAHTRZT6uh6gu9S2YZO7aZ4yEdYvwZ8eqAdKnZTYssleigbP6kFK5sG7GnCqq9BlBUBU8k69Ye/bD2XIjhhkhqhHmClAFEpdbVwc0R793V2lgtuJmnkWevm1UkpISV4FRNXTAXRzue4z8x2aLMbkV0MXMIij0A30qKdh2WF3V2QOCx9dLjuL5AZ6B4keOYz3mKbp1fzU/xWzEgSaJqBtcf4qZcj/c3Kov+3i3/WDXu4phCYVi/JpBok0zTKiMLFJ+xqISabd8yZJb5hViVSu9YRyu4H1rg3N6a5Ukdgp56F3kW4sur6KsftQmLShdgGctF+SBF7ZiKcfkT9oXtQ0guvECgYEAvbD27ue9r5qmuBX4WdqtbM6tEGm5q914wKnpbTb1ZNp2fzoSU3ticfpUpxvsFQy8P8SB0Lv6sTzC6wfPhGVMnXa4HE5NrZ4jtXdk1dxaC/TvaYGeHpTj/fGARDDRXBlbXVFgnPnC3EOUATWD5obWtaJg5HOSZwMFJB1ehPWc+/MCgYEAvbD27ue9r5qmuBX4WdqtbM6tEGm5q914wKnpbTb1ZNp2fzoSU3ticfpUpxvsFQy8P8SB0Lv6sTzC6wfPhGVMnXa4HE5NrZ4jtXdk1dxaC/TvaYGeHpTj/fGARDDRXBlbXVFgnPnC3EOUATWD5obWtaJg5HOSZwMFJB1ehPWcwy8Cf0Kv9CAJWKZjuDj/gFAWkOGvxyf+A0holAsnsOi0aZELPJ19zPOMbQ+k8h3NszGzSHsimoDHlVq6Acye8lWZR1YUZqWM4cIn1mX1k32b+gw6D/EHoI8fyQd935oZj4DRaU1lTpHhPKAzIdVK+xQQU2uHqoimGNIePbB0osYbkxUCgYBwECTBnNx96pJFvIz8oGjGGA873AnZk7xrrbV+VPKCA2Hv5aG/+et9xFLQanl9Mgngbjn206bVoDzS1slswN+TQvifmE7hm8Qix4clpMj5uVja7r03+eP7OPn6zxBQJZbJOXMnKZJJyA6e7DuhK9WadnRhYjmCa9FUtZkKWYOj9wKBgCzJOfLSMgROqzznGTesCXueTI0NnecG7WvZehtRc0LHEAiC12e9YvCqj7AoJsZBfec+IGk2vX8AunUKvYUZL2J7WfCyp57Kj1YgnEyikTVPsOEwjb5lALK1FwITxTH7xPD8OVIW0eQPvmhczoMKYPQG0mtZk+QkPr9dv0YcvwNB-----END RSA PRIVATE KEY-----

С ним расшифровываем TLS-трафик (снова тем же Wireshark) и получаем содержимое заливаемого по FTPS файла secret.txt, в котором лежит искомая часть ключа. То есть выполняем два шага: взломать WPA и взломать TLS.



Задание m0x143y


Часть ключа:
ssss-06-ad1a38b7f24f17489ef204207f7c3b8cf17032b316d5cb9d123619d209676ad6e7ba567c33ac41376876265a70f45f73a991cb6e9100b0df4b8b102a51a147dc6d641cf8bbbecd07321e0b

Категория задания: forensics
Гуглим ник, находим (во время проведения квеста находилась) тему на форуме с просьбой проверить ошибку при открытии тома TrueCrypt:




В сообщении на форуме написано, что возникает проблема при открытии определенного TrueCrypt-тома. Дан скриншот ошибки и ссылки на файлообменники, на которых лежит сам контейнер и дамп памяти для отладки проблемы. Пароль на контейнер длинный и неподбираемый: uBocLXywprQ9VJ6jxpYP. Однако есть дамп памяти, и, например, при помощи volatility-плагина truecryptmaster можно извлечь мастер-ключ TrueCrypt-а (truecryptsummary выдаст, что том был смонтирован и пути к нему, а truecryptpassphrase не выдаст ничего, потому как дефолтная настройка TrueCrypt не кешировать пароли).

Он будет вот таким:

Container: \??\C:\Users\m0x143y\Documents\encrypted.tcHidden Volume: NoRemovable: NoRead Only: NoDisk Length: 66846720 (bytes)Host Length: 67108864 (bytes)Encryption Algorithm: AESMode: XTSMaster Key0xfffffa801b57f1a8  84 2c 3d a3 24 7d 9a 37 d6 53 7e ac 1f 3c 2c 7f   .,=.$}.7.S~..<,.0xfffffa801b57f1b8  de 61 85 de 81 a9 84 2a 4d 3c d9 57 df 81 c7 29   .a.....*M<.W...)0xfffffa801b57f1c8  8f 56 fc e1 80 4e cf 2a ce 44 5b 9f a6 10 6f 98   .V...N.*.D[...o.0xfffffa801b57f1d8  15 e2 50 1f 49 38 f0 a9 62 a7 96 4a db d3 53 9f   ..P.I8..b..J..S.


Адрес KDBG для volatility 0xf80002a45120, профиль подойдет Win7SP1x64_23418 (т.е. volatility --kdbg=0xf80002a45120 --profile=Win7SP1x64_23418 -f mem.raw truecryptmaster). Затем при помощи, например, MKDecrypt можно по полученному мастер-ключу (без знания пароля, он уже не нужен) дешифровать контейнер в сыром виде. Для чего? Искомый файл secret.docx (сделано так, чтобы он не попал целиком в память в MFT и не сильно упростил решение из-за малого размера) удален из контейнера (подсказка там уже нет ничего важного в рояле), как и обещано в сообщении (и в Discord была дана подсказка а была ли там важная информация?), там лежит только всякий мусор (пентест-программы и пустые кошельки Monero). Однако с сырым расшифрованным контейнером и практически любой программой восстановления данных с FAT-разделов, например, R-Studio, photorec или DMDE, удаленный из криптоконтейнера файл с частью ключа восстанавливается.



Задание 3r1or0l3r


Часть ключа:
ssss-07-7931b90aace8673aa4d6162c3e729b7c89152de5e9bed9ab9fb9ff8eb1fbe8307bd985f728de99123980abee36d0495fbad93cf52d990a9a0fdbb82b62c7b141f3642e051dfa8112b56833

Категория задания: stego
Гуглим ник, находим его творчество: https://textbin.net/hzbmlkhzjg

Текстовая стеганография по методу цепей (о чем была дана подсказка в Discord связанные одной цепью и текст связан, неслучаен, имеет смысл в видео) Маркова: An Approach for Text Steganography Based on Markov Chains (подсказка в Discord 1409.0915). Реализация этой идеи: http://jthuraisamy.github.io/markovTextStego.js/

В текста творчества (первая глава киберпанк-романа) есть очевидным образом находимые имена собственные, например, McCoy Pauley или Bobby Quine, взятые из первой известной книги в этом жанре: Нейромант Уильяма Гибсона. В качестве специфичного корпуса текста для цепей Маркова использована первая глава этой книги (о чем есть намек в названии повести, да и других слов и предложений кроме как из первой главы там нет), свободно доступная здесь.

Вводим текст первой главы Нейроманта в качестве корпуса, вводим текст первой главы творчества хакера в качестве шифротекста и получаем искомую часть ключа. Да, со стеганографией всегда приходится немного погадать и поподбирать варианты.



Задание VenchamoSs


Часть ключа:
ssss-08-6fe2d9b400840e44d5f20e15043cc4739ed97879110790350dd2e5e67f0b56b6e11607bb9e99f0cb1c57ede4d309e9f85363168f2ff1d2f316c9c89a8179110a759140a911075a0547f908

Категория задания: osint
Находим (это же osint) хакера на том же github: https://github.com/VenchamoSs.

На гитхабе указан второй ник a.k.a. welAnty. В понравившихся репах gpg, а значит хакер пользуется и интересуется PGP/GPG-решениями. Находим хакера на keybase.io (известный сайт, где пользователи GPG обмениваются приватными ключами), там есть публичный ключ с email welanty@forexrobotexperts.now.im. А также указание не использовать старый ключ с ID 0xF6B246D4. Если поискать по этому ID на самом известном и старом сайте для обмена ключами, то можно найти тот самый старый ключ с email eukx@forexrobotexperts.com. По нему в утечке ANTIPUBLIC (входит и в Collection #1, самая крупная компиляция утечек за последние несколько лет) есть пароль N4syZRJ843.Заходим по паролю на SSH (единственный открытый на сервере сервис) welanty@forexrobotexperts.now.im, забираем часть ключа.

Задание -velashic-


Часть ключа:
ssss-09-be6c314465393225739da1e65200657df7d4a15e66e606c9619ef51a88d5b4015353ac2f089f3dfcd3f86757e89e404dfc2552fe59218310f94b8834d7a82d47b68669aa31eb0860a95d26

Категория задания: osint, forensics
a href=www.google.com/search?q=%22-velashic-%22>Гуглим ник, находим тему на форуме Cyberforum в разделе про Arduino. Там всё описано: хакер просит помощи, по своей некорректно работающей Arduino и прилагает дамп USB-трафика, поскольку подозревает, что она слишком китайская и при заливке прошивки что-то идет не так. Код прошивки должен играть песню группы Metallica Master of Puppets. В дампе помимо заливки прошивки на Arduino попало также и общение с USB-флешкой (распространенная ситуация, поскольку USB-интерфейсов в Wireshark меньше, чем USB-портов на компьютере, ведь их количество соответствует не портам, а USB-хабам на материнской плате). С флешки считывается файл с той же песней для прослушивания, а также записывается запароленный архив secret.7z. Во время извлечения видим, что происходит запись в NTFS-раздел на флешке, а в NTFS есть концепция fixup, поэтому не забываем поправить (о чем была дана подсказка в рояле) 2 байта по смещению 142 (попали на границу сектора) с 0600 на 708f по таблице USN/USA (Update Sequence Array) FILE-записи. Пароль к архиву угадывается из очевидного интереса хакера группа metallica (также есть и в известном словаре RockYou), в архиве лежит secret.txt с искомой частью ключа.




Задание chyrgerillll


Часть ключа:
ssss-10-132faac795e60a0f9457167c3db3f1b1efd25cdd5049329e68fd43ce884e606d17fb14e70c897bd3308aaa213443952522c95b2e3c29d68dca9611a12e6f3d8a660113370c2f6753fc0643

Категория задания: crypto, re
Находим github-аккаунт с единственным репозиторием: https://github.com/chyrgerillll/mymnemonicgen В репозитории лежит реализация генератора мнемонических фраз, использующихся для запоминания доступа к криптокошелькам в голове по стандарту BIP39. Этот стандарт используется практически во всех криптовалютах и практически во всех реализациях их кошельков, далеко не только в Bitcoin. Генерацию приватных ключей для кошельков из этих мнемофраз описывает стандарт BIP44, также используемый большинством реализаций криптокошельков, о чем есть намек в репозитории. Seed-данные из энтропии, сохраненной в мнемофразе, для него вырабатываются по BIP32 (список всех трёх стандартов в первой подсказке из видео). Пример того, как всё это генерируется, можно увидеть вот здесь: https://iancoleman.io/bip39/ (последняя подсказка, данная в Discord; также подсказан использованный стандартный путь генерации m/44/60/0/0/0).

Там же, в репозитории, есть и адрес кошелька в тестнете Ropsten криптовалюты Ethereum, для приема донатов на продолжение разработки генератора. На нем лежит несколько тестовых эфиров. В репозитории также есть и намек на то, что требуется для выполнения задания: попробовать сломать сгенерированный этой доморощенной реализацией генератора кошелек и дать знать об этом автору (или и вовсе увести тестовые эфиры). Необходимый для связи email хакера (chyrgerillll@rambler.ru) можно узнать, склонировав репозиторий к себе и посмотрев, как он засветился в одном из коммитов (также неочевидная и частая проблема пользователей git).

Генератор использует стандартный питоновский ГПСЧ (вихрь Мерсенна), в качестве seedа к нему текущее время. Оно берётся из транзакции с пополнением средств (и подбирается 30 секунд, поскольку время на компьютере хакера могло быть не идеально правильным, о чем была дана подсказка в Discord всего 60 000 вариантов). Таким образом восстанавливается состояние ГПСЧ (seed 1621586183221, 21.05.2021 08:36:23.221 GMT) и получается искомая seed-фраза try process bubble call spell peanut pear valve boring stumble inject turn, а по ней и приватный ключ (0x702ca34414cc046ed2f63857a098b166541c3f477d7679a19e51de901d0df471), дающий доступ к кошельку.

Если отправить полученные сведения и ключ (как подтверждение того, что генератор действительно уязвим) хакеру по почте, то он предложит сделку: участник не трогает более его кошелек, а в ответ получает искомую часть ключа.


На третий день висения рояля мы дали участникам подсказку, которая помогала решить это задание. Подсказка зашифрована в конце этого видео:


Интересный факт: актриса не собиралась ломать гипсовый череп, но настолько вжилась в роль, что сделала это весьма экспрессивно, удачно оживив видео. Хорошо, что количество черепов по привычке зарезервировали по схеме N+1, и мы смогли записать еще пару дублей.

Так вот, мы решили взять этот забавный момент, зациклить и зашифровать в него подсказку. Закодированное в аудио RTTY-сообщение (на что в Discord были даны подсказки по поводу того, что звук похож на звучание старого модема или даже скорее телетайпа) можно было декодировать например с помощью известной в узких радиолюбительских кругах программы Fldigi:


Сообщение таким образом давало подсказки по заданиям для хакеров 3r1or0l3r и chyrgerillll.

Результат выполнения заданий победителем


Если собрать полученные при решении заданий части ключа в программе ssss (реализует разделение секрета по схеме Шамира, намек на эту программу содержится в тексте всех частей), то участник получает ссылку (зашифрованную pastebin): https://0bin.net/paste/YrFxYqMg#ZVK78BWtOhtncw3-xwJe9dw5rGBOboTBOJhEaop8tge

По этой ссылке находится приватная часть ключа, необходимая для захода на ноутбук.

Бонусный ключ (10-й).


В посте про музыкальные монограммы у нас есть описание одного из алгоритмов шифрования (немецкий метод, 18 век). Задание простое: участнику необходимо набрать на рояле зашифрованную монограмму RUVDS:


На сайте на клавиатуре у нас были такие вот надписи:


Для того, чтобы набрать RuVDS, надо было проиграть на рояле такую вот последовательность:

4 7 1 4 5

Результатом этого будет сообщение, которое приходит в Telegram того, кто проиграл эту мелодию:
Поздравляем! Ты вскрыл одну из 8 частей для раскрытия секрета (SSH-ключа)!
Вот она: ssss-11-2ff9228ea4b6b1fe9361a28e506ca2d35699652cc2a5838d185b075ebe9b60ce4d6e1345f6a0ebe55f5a097218265bb35a3fea2632cc569a5bb6f377591138c0d80daa96420be7150d183a



Отвечая на вопросы участников, да, это был бонусный ключ, его наличие не обязательно для прохождение квеста, поэтому он выбивается из общего сценария повествования квеста (лора).

Хозяйке на заметку: термин лор произошёл от английского слова lore, что в контексте квестов означает знание, предание.

Бонусный ключ мы добавили для того, чтобы дать тем участникам, для которых основной сюжет слишком сложный, попробовать себя и получить хоть какой-то ключ.


Кроме того, мы следили в Discord за тем, как участники проходили квест, и подкинули им дополнительные подсказки. Если участники догадывались проиграть на рояле закодированные ники хакеров, то получали такие сообщения через Telegram-бота:

1 5 5 1 5 1 2 3 (-velashic-, задание 9)

Молодец! Вот тебе подсказка по нику -velashic-:

проверь целостность извлеченного архива.

6 1 3 2 5 4 4 или 6 3 4 (m0x143y)

Молодец! Вот тебе подсказка по нику m0x143y:

Перед выкладыванием в интернет по своей проблеме он ведь сказал что там уже нет приватной инфы



Победители и призы


Мы уже объявили имена победителей, успевших скачать котика. Но после падения рояля у участников было ещё пять дней, чтобы решить все задания, уже только из спортивного интереса. И мы поздравляем еще раз всех, кто не опустил руки и тоже добрался до гифки с котиком!

Добравшиеся до конца
Александр
not-alone
lofarter
Герман
Ильдар

А ещё, по результатам голосования в Discord мы решили наградить участника not-alone за огромную помощь в совместном решении задач: мы дарим ему сертификат на 200 долларов для аренды виртуального сервера в любом из 11 дата-центров RUVDS, а также ящик нашего фирменного пенного Smart Admin.
Всем победителям добравшимся до конца, мы дарим промокод на 50% скидки на Хакер.

За получением призов необходимо обратиться к @Johurn.

И напоследок хотим поделиться некоторыми забавными цитатами участников:







Еще немного забавных картинок из дискорда:



И теперь точно в завершение: помним, любим, скорбим.



Подробнее..

Рояль, азот и котик как это было

16.06.2021 12:16:05 | Автор: admin
Если кто-то пропустил, то с 24 по 28 мая мы реализовали проект под кодовым названием Рояль, азот и котик. И настало время рассказать о том, как мы всё организовали, с грязными подробностями, скандалами, интригами и расследованиями.

Сразу скажем, что это был, пожалуй, самый смелый и необычный проект для нашей компании.

Итак, наливайте в кружку кофе, смузи или ягер, и устраивайтесь поудобнее: впереди много гик-порно, мужиков с перфораторами и сварочными аппаратами, красивых девушек и, собственно, самого рояля Красный октябрь, который, как и полагается музыкальному инструменту Made in USSR, пережил падение и даже не расстроился (в прямом и переносном смысле). Чего не скажешь о капиталистическом ноутбуке

Всё началось с идеи. Ты никогда не знаешь, когда на тебя упадет рояль фраза, которая не один раз обыгрывалась в литературе и кинематографе и описывает гипотетическую ситуацию, когда происходит какое-то нелепое событие, которое, скажем так, вносит коррективы в планы главного героя.


Ок, а куда мы будем ронять этот рояль?


Очевидно, что ронять мы его будем на компьютер или ноутбук, так как речь идет о ситуации, когда под угрозой оказываются данные, хозяин которых не позаботился о цифровой копии в облаке. Чертежи, секретные материалы или резервная копия базы данных 1С: Бухгалтерии потеря этих данных уже обыгрывалась, и не один раз, как в фильмах, так и в страшных снах системных администраторов. Поэтому хотелось найти что-то свежее. И тогда мы схватились за идею, что это будет NFT-гифка с котиком, ценность которой стремительно растет.

Ну и вишенкой к этой истории станет любовная драма, которая разыграется с вашим гипотетическим другом (простым застенчивым программистом) и его девушкой властной, эмоциональной, импульсивной и доминирующей особой, в чьи коварные лапы попал ноутбук с гифкой. Долгая самоизоляция из-за коронавируса обнажила проблемы в не самых удачных союзах и отношениях между парами. По всему миру, в том числе и в России, выросло количество разводов, и этот вопрос поднялся в рейтинге актуальности на первые места. К тому же наш расчёт был и в том, что если и не у участников нашего квеста, то уж у их друзей или знакомых были какие-то эмоциональные переживания, связанные с расставанием с близким человеком, и эта история сможет вызвать более высокое вовлечение.

Итак, история придумана, основные инструменты подобраны, осталось дело за малым, весь этот план реализовать

Окей, гугл, как подвесить рояль к потолку?


Да, по этому запросу результатов катастрофически мало, поэтому придется делать всё самим.

В первую очередь мы сделали трехмерную модель всей сцены, чтобы оценить масштабы помещения, высоту, на которую надо будет повесить рояль, рассчитать ускорение, толщину тросов и прочее.


Визуализация помогла нам понять, как размещать камеры, как лучше крепить тросы, под каким углом развернуть рояль и где разместить жертву (ноутбук).

А что с помещением?


Самой сложной частью проекта оказался поиск подходящего помещения. Во-первых, нам нужен был стабильный интернет. Во-вторых, крепкий пол, который выдержит падение рояля. В-третьих, потолок высотой не менее 6 метров, на котором при этом можно будет закрепить это вс.

В голову приходили только строительные ангары, промышленные склады или заброшенные цеха. Вокруг мы построили бы декорации квартиры девушки и сносно вписались бы в легенду. Три location-менеджера, услышав наш бюджет и вышеописанные требования, глубокомысленно молчали. А когда слышали про наш план, что именно мы собираемся там уронить, вежливо заканчивали разговор и желали нам успехов в поисках.

И тут мы вспомнили о нашем друге, Алексее Горове, владельце студии Faraloft, в которой мы снимали уже несколько видео-проектов, и, не особо рассчитывая, позвонили ему. Хабр? Рояль? Жидкий азот? Разбить ноутбук? Ахаха, я в деле! ответил Алексей, и мы в очередной раз поверили в великую силу Хабра.

Оказалось, что он фанат Хабра, у него своя мини-ферма, где майнится крипта, и вообще он не против, чтобы в его легендарной студии произошла еще одна не менее легендарная история. А у него этих историй, поверьте, хватает.

Студия интересна тем, что она находится в бывшем гараже Госплана, спроектированном архитектором Мельниковым.


Сам Константин Мельников писал о своем творении так: Один глаз, смещенный с центра к высокому объёму административного корпуса с узким прорезом трубы, и я обрёл связь формалистического подхода с самой сущностью из мира прекрасного. Вобщем, идеальное место для такого авангардного арт-проекта, Константин Степанович оценил бы.

Ок, а что с роялем?


Найти в Москве поддержанный рояль было не сложно. Но когда речь заходила о том, чтобы он был в рабочем состоянии (нам нужно было, чтобы центральная октава была рабочей), тут все владельцы были не очень уверены в своих показаниях.

Наконец, нашелся один в Подмосковье (Электросталь), вполне вписывался в бюджет.

  • А он у вас в рабочем состоянии? спрашивали мы.
  • Да, две недели назад настраивали, говорила Валентина Ивановна, его владелица. Будьте с ним аккуратнее, пожалуйста!
  • Ну что вы, Валентина Ивановна! Будем сдувать с него пылинки! отвечали мы, стараясь сохранить благородные интонации в голосе.

К нам в студию он прибыл тщательно упакованный от царапин:


Как только мы его распаковали и перевезли в студию, поняли, что рояль отлично вписывается в интерьер:


Фабрика Красный октябрь (бывшая фортепианная фабрика Беккер) выпускала отличные музыкальные инструменты.
Немного из истории фабрики: В 1947 году на фабрике было создано конструкторское бюро, и в 1950-е о достоинствах инструментов Красный Октябрь заговорили в Европе. Сенсацией стало завоевание ленинградским роялем Гран-при на Всемирной промышленной выставке в Брюсселе в 1958 году, ведь прославленные Блютнер, Бехштейн и Стейнвей его и за конкурента не считали.
И да, качество рояля весьма добротное, после падения у него сломались только педали, две ножки и отлетела одна из клавиш, но при этом он даже не расстроился и на нем можно было продолжать играть:


После окончания проекта владелец студии Faraloft, Алексей Горов, отдал рояль на реконструкцию, так что наш герой еще будет радовать посетителей студии своим великолепным звучанием.

Ок, а как мы его подвесим к потолку?


Первый набросок схемы крепления рояля к потолку выглядел так:

За кадром остались пенные напитки RuVDS, без которых никак нельзя было разобраться.

Три года назад мы с командой Хабра участвовали в регате AFR, и оттуда взялась идея стянуть все тросы, удерживающие рояль, в одну консоль, которую на яхтах называют пианино (подробнее о той легендарной регате читайте тут.



Первый эскиз пианино выглядел так:


Эту консоль мы сварили из металлического профиля, и рядом со стеной закрепили лебедку, с помощью которой поднимали рояль.




Потолочный подвес сделали через балку, удерживающую крышу. Она железобетонная, поэтому спокойно выдержала рояль:

Алексей Горов (владелец студии Faraloft) монтирует строительные леса, без которых до балки было не добраться.


Простите, Валентина Ивановна, мы постарались не царапать ваш рояль

Тросы крепились за специальный поддерживающий каркас из нержавеющего профиля, прикрученного ко дну рояля:


Да, по расчетам рояль мог висеть и на одном из этих тросов. Но шоу у нас длится 5 дней, поэтому и тросов несколько:


С такелажем и консолью не всё получилось сразу. Пришлось поменять болты с 8-миллиметровых на 10-миллиметровые, потому что при тестах их кое-где начало гнуть. А на соединениях тросов пришлось добавить П-образные хомуты, потому что двойные плоские стяжки не справлялись.

Первое тестовое поднятие рояля:


Да, в кадре пусто, потому что многие из нас смотрели фильм Корабль-призрак и на всякий случай отошли подальше. Никто не захотел быть героем сиквела Рояль-призрак.

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


Сложно сказать, насколько они помогли, на замедленном видео видно, как трос с валиком спокойно отлетает в сторону крепления у потолка. Но была вероятность, что он вполне мог хлестануть в окно, закрученные волны троса намекают на это:


А что, если на рояле можно будет поиграть?


Идея дать пользователям возможность поиграть на рояле вызвала у всей команды проекта восторг.

Во-первых, это интерактив, потому что долго смотреть на висящий рояль не интересно, а вот удаленно сыграть на нем это сразу повышает вовлечение.

Во-вторых, это же квест, и рояль может стать одним из ключевых элементов. Можно будет сыграть нужную мелодию и получить доступ к одному из ключей. Про бонусный, 10-й ключ читайте в нашей инструкции по прохождению.

Параллельно мы начали думать о том, как организовать игру на рояле, и собрали на коленке прототип устройства на базе Arduino Nano и Raspberry Pi. В первом варианте у нас зажигались нужные лампочки адресной светодиодной ленты.


В конечном варианте мы добавили плату расширения с реле и два ряда соленоидов на фанерке:


Устройство собрано и готово ко встрече с роялем:


В финальном варианте это выглядело так:


Хотя сперва и была идея распечатать корпус на 3D-принтере, мы не стали прятать внутренности. Во-первых, чтобы оставить видимыми светодиоды, по которым нам будет понятно, работают ли основные узлы устройства или нет. А во-вторых, это же проект для Хабра, гик-порно и немного киберпанка:

Кадр из заставки сериала Мир дикого запада.

На сайте мы разместили клавиатуру, на которой нарисовали и цифры с нотами, что жирно намекало на то, что мы что-то там зашифровали:


Очевидно, что желающих проиграть свою мелодию будет много (за весь проект на рояле было проиграно около 2100 мелодий), поэтому мы реализовали механизм очереди через Telegram-бота. Участник проигрывал мелодию, она записывалась и передавалась ботом через API на Raspberry Pi. Пользователю сразу же после этого приходило первое оповещение с прогнозом времени воспроизведения, а затем, примерно за 20 секунд до того, как будет проигрываться запись, приглашение посмотреть этот момент вживую через трансляцию на сайте:


Участник переходил по ссылке и слушал, как его мелодия проигрывается в какой-то далекой московской квартире:


К слову, рояль играл не переставая, нам пришлось записывать несколько дублей для этого видео, чтобы найти паузу:


А что там с азотом?


Собственно, зачем вообще нужен был азот? Ну, во-первых, это красиво. А во-вторых, современные HDD делаются довольно прочными и вполне себе могут пережить такую незначительную неприятность, как падение рояля. Поэтому мы решили подойти к вопросу уничтожения NFT c котиком основательно и добавить в сюжет жидкий азот. Чтобы наверняка.

Для того, чтобы жидкий азот никуда не разлился, мы купили обычный душевой поддон и заварили у него сливное отверстие:


Резиновая пробка или герметик под действием азота могли бы довольно быстро разрушиться, поэтому Только сварка! Только хардкор!

Жидкий азот приехал к нам в обычной газели внутри которой размещался такой вот агрегат:


Да, судя по всему, одного из участников Дом 2 заморозили, чтобы реанимировать в 2035-м году и придать шоу новое дыхание:


Процесс переливки в жидкого азота в сосуд Дьюара:


В назначенный час мы, как и обещали, залили ноутбук жидким азотом:


Стоп-кадр за несколько миллисекунд до встречи с роялем. Видно, что от резкого охлаждения вспучилась панель ноутбука и клавиатура покрылась инеем:


А вот что стало с ноутбуком после заморозки и встречи с 500-килограммовым роялем:


Диск мы впоследствии вытащили, он действительно был целым, но данные на нем уже не читались, видимо, резкое переохлаждение всё же нарушило целостность печатной платы или микросхем. Ну штош, не самый дешевый способ избавиться от данных. Зато весьма зрелищный!

Итоги проекта и немного статистики:


  • 7635 уникальных посетителей заглянуло на сайт проекта.
  • 10 литров жидкого азота было вылито на ноутбук перед падением рояля.
  • 45 метров троса понадобилось для поднятия и удержания рояля.
  • 4 человека прошло квест до конца.
  • 2340 раз рояль проиграл мелодии участников проекта.
  • 113 раз рояль сыграл мелодию Чижик пыжик где ты был?


Хронология постов по проекту:


  1. Спаси котика из-под рояля
  2. Котики в NFT: революция в цифровом мире или хайповая пирамида?
  3. Рояль над котиком, день первый
  4. Хроники котика: брутфорс рояля, крыса-кун и деанон Оксаны
  5. Финал квеста и победители: особенности криогравитационного воздействия на портативные ЭВМ
  6. Hack the hackers: полное руководство по прохождению квеста
  7. Как организовать трансляцию на 5 суток (почти) без разрывов?
  8. Рояль, азот и котик: как это было <=== Вы сейчас здесь



Подробнее..

Как команда it-animals в финале Цифрового Прорыва выиграла

24.05.2021 16:18:49 | Автор: admin

Данная статья написана в соавторстве с тимлидом @Restlin

Выбор кейса и наше видение его решения

Изначально выбор пал на кейс МВД: Разработка автономного программного решения лингвистического анализа и преобразования в тексте лица повествования.

Формулировка кейса:

Учитывая специфику деятельности определенных служб МВД России, при подготовке документов требуется преобразование в тексте лица повествования от первого лица в третье с учетом рода. Например, фраза в исходном тексте Я увидел, что Иванов пошёл ко мне в итоговом тексте должна быть преобразована в Он увидел, что Иванов пошёл к нему. Разработанное программное решение позволит в автоматическом режиме проводить процесс конвертации лица повествования, что позволит сотрудникам уделить больше времени на иные аспекты служебной деятельности. Кейс подготовлен Департаментом информационных технологий, связи и защиты информации МВД России.

Нам он был близок по специализации, и было четкое представление как красиво можно решить данную задачу.

Планировалось, что мы создадим веб-сервис, который умеет автоматически преобразовывать показания свидетеля из первого лица в третье.

Все складывалось как нельзя лучше до того момента, как мы не посмотрели видео с презентацией кейса от кейсодержателя, что на выходе они ждут:

1) локальное решение, работающее без доступа в сеть;

2) интегрированные офисные пакеты посредством макросов.

Наша команда разделилась на 2 лагеря: половина настаивала на четком соблюдении требований кейсодержателя, в противном случае смене кейса, вторая настаивала на первичном варианте решения ( оффтоп: подобное решение выстрелило у других ребят и они выиграли).

Долгое время споры не утихали по данному поводу, все же решили сменить первоначальный выбор на кейс Почты России: Разработка прототипа системы обработки и подписания документов с использованием электронной подписи, применяемой для работы с обращениями граждан.

Формулировка кейса:

Согласно действующему законодательству Почта России обязана официально отвечать на поступающие запросы граждан, связанные с работой компании и качеством оказания услуг. Обращения поступают в профильное подразделение, где, после подготовки ответа, подписываются, сканируются и отправляются в соответствующий филиал или автору обращения. Процесс является трудоемким и ресурсоемким с точки зрения ручных операций и расходных материалов (бумага, расходы на оргтехнику). Участникам хакатона предлагается разработать программное решение - модуль подписания документов с помощью электронной подписи, который расширит функциональность существующей системы работы с обращениями (Террасофт Creatio). Модуль должен формировать электронную подпись для каждого файла отдельно и перед подписанием проверять срок действия сертификата электронной подписи уполномоченного сотрудника.

Почему он? У нас было понимание как работать с электронной подписью на Open source решениях: OpenSSL. Пригодился опыт Ильи в разработке СЭД - он знал о существовании php библиотеки tcpdf для генерации файла pdf с возможностью встроить электронную подпись. Плюс на текущем проекте pirs.online мы уже копали эту тему, и оттого данной задачей заниматься было приятно вдвойне.

Вся наша подготовка к финалу заключалась в обсуждениях плана решения и договоренности с родными, что мы опять пропадем на работе на все выходные.

Панические атаки и ведро валерьянки

В пятницу вечером мы остались в офисе, получили подробное техническое задание кейса и приступили к решению. Последнее вранье - мы начали неистово паниковать, так как в технических ограничениях к решению значилось требование в реализации на ASP.NET.

Написали в чат поддержки ЦП (хвала за неиссякаемое терпение Ирине с вопросом: что нам делать и можно ли сменить кейс? К счастью, организаторам удалось переубедить представителей Почты России снять это ограничение и только тогда мы смогли приступить к решению.

А что потом? Технические подробности

Дальше пошло по накатанной: первый чекпоинт и наши идеи по реализации, полученное одобрение экспертов и практически бессонная ночь работы.

Нам повезло: роли между командой у нас распределены четко, и каждый занимается своей задачей. Марина - презентация и вычитка спитча Ильи. Илья отвечает за спитч, архитектуру, бэк. Дима и Кирилл - фуллстеки.

С точки зрения технической реализации функционал прототипа выглядел просто:

  • вход пользователя под одной из двух ролей: гость и администратор;

  • формирование обращения администратору (почте РФ);

  • рассмотрение обращения и формирование ответа;

  • можно прикрепить файлы к обращению и ответу;

  • создать сертификат пользователя в личном кабинете;

  • подписать файлы ответа электронной подписью;

  • выгрузить обращение с электронной подписью;

  • проверить электронную подпись в обращении.

Структура базы данных прототипа уместилась всего в 3 таблицы, размещенных в PostgreSQL:

  1. user - таблица пользователей с реквизитами и типами;

  2. message - таблица обращений и ответов. По сути это переписка клиента и администратора;

  3. file - таблица файлов, прикрепленных к обращениям и ответам.

Благодаря большому опыту команды с php-фреймворком Yii2 мы в короткие сроки разработали основной функционал приложения. А вот задача интеграции функционала по работе с электронными подписями была трудоемкой и нетривиальной.

Для работы с электронными подписями мы решили использовать OpenSSL, как открытый стандарт де-факто по работе с электронными подписями.

Как и ожидалось библиотека очень мощная, но из коробки не поддерживает отечественные алгоритмы шифрования. Какое-то время ушло на интеграцию и настройку криптографического движка (libengine-gost-openssl 1.1) на алгоритмы ГОСТ, в частности ГОСТ-2012. Затем мы создали и настроили удостоверяющий центр.

Второй чекпоинт: показали первичный вид презентации. Первый провал - ошиблись с формулировкой проблематики кейса, близко, но не то. Вот почему важно презентацию хотя бы раз показать экспертам!

Пилим прототип дальше

PHP содержит функции для работы с openssl по созданию сертификатов и подписи файлов, но после тщательного изучения документации, выяснилось, что переключить openssl engine на ГОСТ невозможно.

Поэтому команда принимает решение перейти к работе с openssl через консоль. Решение выглядит менее изящным, зато предоставляет доступ ко всей функциональности openssl.

Создание сертификата пользователя:

exec("openssl req -nodes -newkey gost2012_512 -keyout $eSignPath/client.key -pkeyopt paramset:A -out $eSignPath/client.csr -subj \"/C=RU/ST=Udm/L=Izhevsk/O=IT/OU=animals/CN=user-{$user->id}\" -config $caPath/openssl.cnf ");

exec("openssl ca -engine gost -keyfile $caPath/ca.key -cert $caPath/ca.crt -in $eSignPath/client.csr -out $eSignPath/client.crt -batch -config $caPath/openssl.cnf 2>&1", $output);

где $eSignPath - путь до папки с ключами пользователей, а $caPath - путь до папки удостоверяющего центра.

Удаление сертификата пользователя:

exec("openssl ca -config $caPath/openssl.cnf -keyfile $caPath/ca.key -cert $caPath/ca.crt -revoke $eSignPath/client.crt 2>&1", $output);

exec("openssl ca -gencrl -config $caPath/openssl.cnf -keyfile $caPath/ca.key -cert $caPath/ca.crt -out $caPath/crl.pem 2>&1", $output);

где $eSignPath - путь до папки с ключами пользователей, а $caPath - путь до папки удостоверяющего центра.

Подписание файла сертификатом пользователя:

exec("openssl smime -engine gost -sign -in $fp -out $fp.sig -nodetach -binary -signer $clientKeysPath/client.crt -inkey $clientKeysPath/client.key -outform SMIME 2>&1", $output);

где $fp - путь до файла, $clientKeysPath - путь до папки с ключами пользователя.

Проверка подписи файла:

$output = exec("openssl cms -engine gost -verify -in $sigPath -inform SMIME -CAfile $pathCA/ca.crt -out $fp -certsout $clientKeysPath/client.crt 2>&1");

где $fp - путь до файла, $clientKeysPath - путь до папки с ключами пользователя, $sigPath - путь до электронной подписи.

Долгие часы настройки openssl и его интеграции в веб-приложение увенчались успехом. К третьему чекпоинту прототип уже мог создавать сертификат пользователя, подписывать сертификатом обращение, а затем проверять подпись. Решение было рабочим, но чутье подсказывало: не хватает какой-то главной фишки.

Появилась идея: Илья вспоминает, что в одной не самой популярной библиотеке tcpdf по формированию pdf файлов была возможность встраивания электронной подписи в pdf файл. А это значит, что можно из обращения создать pdf файл и сразу встроить в него электронную подпись.

Ночь субботы подходит к концу: мы голодные и злые все еще работаем в офисе. Тошнит от доставок, работы вагон, но мы верим в команду и в то, что победа близка. Договариваемся ехать домой, и доделывать уже там.

Начинаем реализовывать и понимаем на сколько в библиотеке tcpdf захардкодена работа с openssl. Вылазят проблемы невозможности смены движка и другие конфликты библиотеки с нашим решением. Создаем потомка библиотеки и заменяем всю генерацию подписи с хардкода openssl на наш костыль (херак-херак, и впродакшн) через локальный метод api:

$fields = [

'r' => 'api/sign',

'filePath' => $tempdoc,

'userId' => $user->id,

];

$query = http_build_query($fields);

$ch = curl_init();

$host = \Yii::$app->params['apiHost'] ?? '';

curl_setopt($ch, CURLOPT_URL, $host . '/index.php?' . $query);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$signature = curl_exec($ch);

/*if (empty($this->signature_data['extracerts'])) {

openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED);

} else {

openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED, $this->signature_data['extracerts']);

}*/

И все же мы успеваем в последний момент и к утру воскресенья прототип полностью работает!

Последний рывок и мы у цели

В середине дня воскресенья Илья подключается по Zoom к защите решения, жюри неумалимы, ну а мы ждем результатов.

Было страшновато: осознание, что ты соревнуешься с лучшими (в финал попали топ 5 команд из отборочных региональных туров) подстегивало выкладываться на полную.

Неожиданно результатов пришлось ждать до вечера, хотя на Северо-Западном хабе объявили победителей чуть ли не через час после защит. Время тянулось как доставка Почты России.

Офтоп: мы победители! 750 тысяч на команду, Карл! 750 за 2 дня, Карл! А значит едем на грандфинал Цифрового прорыва в Москву!

Репозиторий нашего решения

Подробнее..

Recovery mode Правильное распределение ролей в проекте половина успеха!

17.06.2021 20:21:19 | Автор: admin

Авторы кейса для хакатона рассказали, как стать победителем IT-конкурса.

Уже завтра Нижний Новгород превратится в столицу цифровой экономики. Здесь проведут сразу два хакатона: первое в России IT-соревнование по искусственному интеллекту и полуфинал Всероссийского конкурса разработчиков Цифровой прорыв Медицина, здравоохранение, наука. Для последнего EPAM вместе с ННГУ им. Лобачевского подготовили кейс CardioSpike. На основе полученных учеными данных нужно разработать детектор ковидных аномалий в ритме сердца. Пять сотрудников EPAM практики Data Science, которые участвовали в создании датасета, войдут в состав жюри. Они рассказали, как правильно подготовиться к хакатону.

Павел Шашкин, Data Science, EPAM: Каждый набор данных особенный по-своему, и не всегда перенос опыта из других задач даёт хорошие результаты. Начинайте с максимально простого решения, постепенно эмпирически проверяя новые гипотезы и наращивая сложность. Важно отдавать себе отчёт, что, независимо от уровня ваших навыков, с ростом количества разнообразной логики в решении растёт и вероятность допустить в одном из шагов ошибку.

Даниил Гусев, Data Scientist, EPAM: Каждый хакатон это вызов вам, вашим знаниям и умениям решать проблему здесь и сейчас. Для победы нужно придумывать новые подходы, экспериментировать, но это не касается инструментов, которые вы будете использовать. У вас не будет времени на освоение новых библиотек и фреймворков. Используйте только те инструменты, которыми вам уже хорошо знакомы.

Павел Смирнов, Data Science, EPAM: Распределите роли в команде. Кто занимается внешним видом и UX? Кто занимается архитектурой и масштабирование? Кто отвечает за МЛ часть? Кто готовит презентацию? Кто питчит финальное решение перед жюри? Перечитайте постановку задачи несколько раз. Очень важно не забыть в конце, какую задачу вы решаете. Поставьте библиотеки для работы с данными (numpy, pandas и т.д. ). Познакомьтесь с целевой метрикой - https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html)/. Посмотрите на описание и документацию к классическим алгоритмам, которые можно применить для решения задачи - https://scikit-learn.org/stable/supervised_learning.html.

Михаил Терпелец, Data Science, EPAM: Всем участникам я бы посоветовал избегать процедурного спагетти и не забывать следовать DRY, KISS, YAGNI. Ну и, конечно, дважды проверять код перед запуском, чтобы в ограниченное время не допускать ошибок по невнимательности. Обученных вам моделей и оптимальных гиперпараметров!

Всеволод Мицкевич, Data Science, EPAM: Так как и задача, и состав команды известны заранее, стоит побеспокоиться о том, чтобы правильным образом делегировать задачи. Каждый из инженеров обладает сильными и слабыми сторонами в разработке. Следует поближе познакомиться между собой и выяснить, какой опыт каждого из участников команды релевантен по отношению к задаче хакатона. Кому-то стоит заняться подготовкой данных, кто-то лучше пишет код, а у кого-то обширнее теоретические знания. Правильное распределение ролей в проекте половина успеха!

Подробнее..

Жадный алгоритм, ветви и границы для расписания мерчендайзеров (кейс Хакатона на оптимизацию)

11.05.2021 14:17:08 | Автор: admin

Это пилотная статья. Будем благодарны за обратную связь. Если тема вызовет интерес, мы возможно примем решение выложить на GitHub наши исходники (python) и входные data-setы.

В марте 2021 г. случилось мне поучаствовать в хакатоне с задачей на комбинаторику и оптимизацию. Команду решил собрать свежую, из одиночек, дрейфующих в пуле самого хака. Довольно быстро нашлись front и back, и втроем мы принялись старательно думать, как потратим деньги, когда выиграемJ Так как сам кейс показался нам по началу не сложным. Надо сказать, что в хаках я не так давно, но уже успел поучаствовать и в ЛЦТ(Лидеры Цифровой Трансформации), и в Цифровом Прорыве. В последнем даже удалось занять бронзу в финале. Роль всегда у меня была project+product+ppt (хотя опыт в программировании у меня также имеется). Не редко в хакатонских кейсах проблемы немного надуманы, решения этих проблем немного фееричны и не несут практического смысла, а побеждает профессиональная преза и поставленный питч. Так вот этот мартовский хакатон меня заинтересовал живостью и насущностью бизнес проблем, которые там решались. Опытные хакатонщики, читающие эти строки, поймут. Но полно про хакатоны и про то, какие они бывают, а то собьемся с курса.

В этам хаке преза и даже front мало интересовали кейсодержателей. Это был натуральный бизнес хакатон с абсолютно живыми дата сетами и с натуральной бизнес болью. Кстати на хакатоне ни одна из команд не предоставила решение. Вроде одни ребята "нарисовали" в своей презе оптимизацию в минус 1 агент, но демонстрацию на защите они не представили. Наша команда не стала исключением и заняла скромное третье место (всего до защиты дошло 5 команд). Теперь наконец к условию:

Есть 204 ТТ (торговые точки). Каждую из них нужно посетить минимум раз в неделю, а некоторые больше одного раза. Длительности посещения каждой ТТ известны и не изменяются внутри недели.

Также предоставлена матрица 204х204 с расстояниями между точками (см. Табл.1 ниже ). Матрица не симметричная, т.к. при составлении учитывались знаки ПДД (одностороннее движение и пр.). Видимо она была получена через API Яндекс.Карт по адресам ТТ. Требовалось найти оптимальное расписание для торговых агентов (мерчендайзеров), улучшив показатели текущего AS IS (оно тоже предоставлено). Важные ограничения: каждая ТТ должна быть закреплена за определенным мерчендайзером (торговым агентом). Другими словами, если торговый агент (далее агент) посещает Магнит на улице Ленина в понедельник, то этот же Магнит в другие дни недели должен посещать именно он. Время работы каждого агента не должно превышать 9,5 часов в день с учетом работы в ТТ и перемещению между ними.

0

1

2

...

203

0

0

4031

4152

....

8853

1

4021

0

817

....

10196

2

4239

926

0

....

10306

....

....

....

....

0

10345

203

10071

10610

10289

10886

0

Таблица 1. Матрица расстояний между точками

Предоставленное расписании AS IS распределено на 14 агентов. И как вы уже догадались, решение должно было предложить альтернативное расписание, сократив по возможности количество агентов и их время в пути.

Спустя какое-то время после хакатона наш back(python) призвал на помощь коллегу с курсов по deep learning. Парни погуглили, поискали готовый алгоритм, почитали про метод отжига, муравьев, генетику и пришли еще раз к выводу, что подходящего метода и примеров кода именно для этой задачи, куда можно было бы взять и вставить матрицу расстояний, как входной параметр на просторах интернета - нет. Если кто знает где есть поделитесь, будем благодарны.

Позднее, и даже в параллель я сам начал изучать тему Задачи коммивояжера и эвристические методы, зарекомендовавшие себя для ее решения. Но ни хабр, ни youtube, ни Википедия не давали готового ответа именно для этого частного случая. Останавливаться все равно не хотелось. Наоборот, по мере продвижения вперед интерес подогревался. Мотивации добавило то, что классическая задача коммивояжера относится к NP полным задачам. Если решать задачу полным перебором (brutal force), то уже при 66 торговых точках нужно несколько миллиардов лет и компьютер размером с Землю. Согласитесь, мощь трансвычислительных задач завораживает! И действительно, для решения классической задачи TSP (Travelling salesman problem ) существуют различные эвристические методы, такие как Метод Имитации Отжига, Муравьиный алгоритм, Генетический метод и др. Оставалось решить один вопрос: как применить что-то из этой эвристики к сквозному недельному расписанию нескольких торговых агентов с ограничением по времени. Возможно толковый математик, который кожей чувствует физический смысл дифференцирования, логарифмов, пределов, силу числа e и т.д., справился бы с этой задачей. Но я не такой математик. Формулы счастья по-прежнему в интернете не находилось. Я даже изучил основы нейросетей, но когда я начинал проектировать свою нейросеть для решения - вырастала непреодолимая стена.

И все-таки решение родилось! Ну во-первых я обратился за помощью к своему коллеге, Черкасову Евгению @eny01. Он как раз недавно прошел курсы по data science и python, и рвался в бой, чтобы применить все приобретённые навыки. К слову сказать, бОльшую часть алгоритма именно он и разработал. Себе я взял часть, отвечающую за рекурсивный метод ветвей и границ. Но об этом позже. Вдвоем мы разработали следующий план.

  1. Мы декомпозировали задачу до каждого агента. Набираем ТТ сначала для одного агента до предела по очереди для всех дней недели, затем для второго и т.д.;

  2. Процесс набора ТТ происходит с помощью жадного алгоритма (метод ближайшего соседа);

  3. В случае, когда набор подходит к пределу (9,5 часов) - применяем оптимизацию и считаем, что для данного агента в этот день недели оптимальное расписание составлено. Переходим к следующему дню;

Алгоритм набора расписания для каждого агента более подробно можно увидеть на блок-схеме ниже:

Теперь чуть подробнее про основные моменты:

  1. Ближайшие сосед:

Первой точкой расписания дня недели мы берем точку, наиболее объемную по времени посещения и наиболее частую в неделе. Второй и последующими точками становятся ближайшие к уже отобранным точкам. Каждый раз при добавлении новой точки в расписание дня производится оптимизация по подбору наилучшей первой точки для получаемого кратчайшего пути в расписании. Мы попросту перебираем точки, подставляя каждую в качестве первой и перенабираем к ней при помощи того же жадного алгоритма отдельный массив. В итоге выбираем самый лучший вариант по минимальному пути для прохождения точек.

Важно следить за переполнением не только в том дне, в котором идет набор, но и параллельно приглядывать за остальными днями торгового представителя- последующими и предыдущими. Так как выбирая точку, скажем для четверга, мы можем переполнить ею пятницу или понедельник.

Когда в одном из дней достигается предел рабочего времени (>=9,5 ч.), система сбрасывает точку приведшую к переполнению и пробует добрать следующую ближайшую. Кстати, мы пробовали вставлять сюда вместо оптимизации "первой точки" и ближайшего соседа полный перебор с ветвями и границами. И результат, !внимание!, получался в итоге тот же. Но времени на перебор с ветвями и границами потребовалось гораздо больше. Около 3,5 часов против 5 минут для всех 204 точек. Таким образом полный перебор был абсолютно избыточен и неэффективен при частом применении. Вследствие чего в этом месте было решено от перебора с ветвями и границами отказаться, но добавить его в финальную оптимизацию составленного расписания.

2. Метод ветвей и границ:

Ну тут все относительно просто. Утвержденное недельное расписание мы прогоняем через полный перебор, используя метод ветвей и границ. Реализация этой функции потребовала применения рекурсии. Причем если сравнивать работу полного перебора через библиотеку itertools (python), то время на перебор 8 точек составило 21 сек, в то время как наша рекурсия с ветвями и границами отрабатывала за 0.4 с. Что не может не радовать! Цель применения ветвей и границ - оптимизация уже готовых расписаний. Привязка ТТ и агентов уже не меняется, но оптимизируется время в пути (решаем классическую задачу коммивояжера).

Результаты:

Описанным выше образом мы производим набор точек для второго агента, затем для третьего и т.д. В результате работы алгоритма нам удалось не только снизить количество агентов с 14 до 13, но и сократить суммарную траекторию перемещения между ТТ вдвое. Ниже представлены результаты, которых нам удалось добиться:

Параметр

До оптимизации

После оптимизации (с брутфорсом в наборе расписания)

Дельта

Относительное изменение, %

Число Мерчендайзеров

14

13

1

7,14%

Суммарная средняя траектория всех ТП, км

25,06

13,54

11,52

45,96%

Суммарная траектория всех маршрутов всех ТП, км

1729,342

839,69

889,65

51,44%

Средняя длительность рабочего дня для ТП

469,43

508,03

-38,6

-8,22%

Общая продолжительность работы всех ТП, час

539,85

524,97

14,88

2,76%

Время работы алгоритма для всех агентов на всех днях недели составило 8 минут на домашнем ПК.

И в качестве финального аккорда мы позволили себе выкрутить лимит с 9 часов 30 минут до 9 часов 38 минут. И получили сокращение до 12 агентов с небольшой погрешностью. Из 60 дневных расписаний 14 уходят в переработки от 1 до 8 минут (51 минута в сумме).

Ждем ваших комментариев, замечаний и предложений! Ответим на все вопросы. Пишите, как бы вы решали эту задачу. Особенно ценны для нас будут мнения практиков. Как математиков, так и data science'ов. Возможно кто-то предложит существующие библиотеки python для решения задачи. Мы, как я уже сказал, подходящих библиотек не нашли. Всем спасибо, что дочитали до конца!

Подробнее..

Digital-мероприятия в Москве c 26 апреля по 2 мая

26.04.2021 10:24:01 | Автор: admin

Подборка мероприятий на неделю


image


DIGITAL MARKETING MOSCOW 2021 Conference + Expo


  • 26 апреля (понедельник) 29 апреля (четверг)
  • онлайн
  • от 4 000 р.
  • Digital Marketing Moscow 2021 Conference + EXPO, незабываемый 4-дневный митап с тысячами других маркетологов, инфлюенсеров, интересные и полезные доклады и обсуждения, практические мастер-классы на весь день, возможности для нетворкинга, ЭКСПО зона и многое другое!

Маркетплейс Яндекс.Маркета: встреча с партнёрами


  • 27 апреля (вторник)
  • ЛТолстого 16
  • бесплатно
  • 27 апреля пройдёт первая встреча для магазинов в новом формате. Эксперты маркетплейса расскажут о том, как меняется сервис, и ответят на вопросы партнёров причём их можно будет задать не только в зале, но и по видеосвязи.

CI/CD и DDD: Или как достичь технологической гибкости и познать true Agile


  • 27 апреля (вторник)
  • онлайн
  • бесплатно
  • Three Amigos Talk митап, на котором представители разных IT-специальностей делятся экспертизой работы в Agile-командах. Присоединяйтесь к нам в Telegram-чате ThreeAmigosTalk, если хотите разобраться в том, что делают ваши коллеги по команде, и понять, какие практики апгрейднут совместную работу на новый уровень.

VC8 Pitch Corner


  • 27 апреля (вторник)
  • Берсеневская Наб 6с3
  • бесплатно
  • 27 апреля в 20.00 приглашаем на VC8 Pitch Corner от Венчурной студии Around.Capital.
    VC8 Pitch Corner это возможность узнать о крутых стартапах, познакомиться с их основателями, венчурными инвесторами и просто классными людьми.

Третий митап разработчиков SmartMarket о создании навыков для виртуальных ассистентов Салют


  • 28 апреля (среда)
  • онлайн
  • бесплатно
  • Для разработчиков, которые уже размещают свои приложения в SmartMarket, а также для тех, кто только знакомится с платформой

QA EVENING (online): работа с логами и функциональные возможности инструментов на базе CDP


  • 28 апреля (среда)
  • онлайн
  • бесплатно
  • Раиса Липатова из DINS расскажет о том, почему тестировщику важно уметь работать с логами и как это делать эффективно. Александр Абрамов из Semrush поделится опытом выбора решения для тестирования производительности frontend.

TeamLead Conf 2021


  • 29 апреля (четверг) 30 апреля (пятница)
  • Площадь Европы 2
  • от 21 000 р.
  • Единственная профессиональная конференция только для тимлидов:
    -Для тимлидов из небольших компаний и корпораций
    -Максимальная концентрация тимлидского опыта на чел/час и кв.м
    -Карьерное консультирование по самоопределению тимлида
    -Конференция по управлению людьми не только в IT-сфере
Подробнее..

IT-решения для самозанятых результаты хакатона от Wallet One, Союза Самозанятых России и Russian Hackers

28.04.2021 14:06:12 | Автор: admin
image

Привет, Хабр! На днях закончился хакатон SMZ Hack 2.0, целью которого был поиск лучших IT-решений для самозанятых. И теперь самое время подвести его итоги, тем более, что интересных идей было предложено достаточно много.

Кстати, нужно было не просто предложить идею, а создать рабочий прототип проекта, который упростит ведение бизнеса для новой категории предпринимателей.

Какие задачи должны были решать участники?


Всего было 5 направлений работы, треков:
  • Мир семьи сервисы из категории телемедицины для онлайн-работы с психологами.
  • Красивые деревни IT-решения, пропагандирующие преимущества жизни и работы в небольших населенных пунктах России.
  • Деревня 2.0 (Smart village) платформы по работе с производителями и поставщиками товаров и услуг из деревень.
  • Мобильный заказчик умное приложение- помощник для руководителей компаний (юридических лиц), работающих с самозанятыми.
  • УУмаркет платформа продажи товаров, созданных самозанятыми (hand-made).

Хакатон обещал быть интересным еще на старте ведь участники из 55 городов подали более 270 заявок. Команды, которые были отобраны организаторами, прошли через 64 часа кодинга, 1200+ минут общения с менторами. Общее количество слайдов презентаций превысило 1000.

Участники хакатона смогут запустить свой стартап для самозанятых и уже на стадии разработки подключиться к платежным технологиям Wallet One, чтобы проверить свой проект на практике и провести первые реальные транзакции, говорит организатор, управляющий партнер Wallet One Денис Сержкин. Один из главных акцентов в этих соревнованиях мы сделали на разработку сервисов не только для самозанятых из больших городов, но и из сельской местности.

Растущий рынок самозанятости ждет новых решений. Это удачное время для разработчиков, которые могут завоевать своей идей внимание сотен тысяч пользователей. Наш хакатон призван стать трамплином для успешного старта новых сервисов. Он будет способствовать развитию режима самозанятости по всей стране рассказывает управляющий партнер Wallet One и сопредседатель Союза самозанятых России Дмитрий Панов.

Кстати, в прошлом году SMZ Hack собрал несколько сотен заявок, в финале приняли участие 20 команд из 11 городов России. Они работали над решениями по разным направлениям, связанным с ведением собственного дела от создания CRM-систем до чат-ботов.

А победители кто?


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

Победитель трека Мир семьи команда The One.

Суть проекта: Всё сам сервис работы с самозанятыми, упрощающий работу компаний с самозанятыми, а последним работу с клиентами и другими партнёрами. Вид монетизации: для B2B с подписочной моделью, сегмент SME/SMB Стек: Kotlin, Nuxt.js + Vuetify, Docker, PostgreSQL.

Состав команды:
  • Шпаковская Анна, Москва
  • Талалуев Артемий, Москва
  • Стеблова Татьяна, Москва
  • Колтович Дмитрий, Москва
  • Колтович Максим, Москва

Гонорар 200 тысяч рублей.

Победитель трека Красивые деревни команда DomID.

Суть проекта: Сервис DomID, который автоматизирует деятельность самозанятых по налогам, бухгалтерии и юридическому оформлению договоров. DomID дополнительно способен стимулировать поток туристов в деревни и посёлки, попутно развивая сопутствующие региональные сферы развлечений.

Состав команды:
  • Вышинский Александр, Кострома
  • Ситников Антон, Санкт-Петербург
  • Сулимова Кира, Москва
  • Мироваев Александр, Москва
  • Бушуев Михаил, Москва

Гонорар 200 тысяч рублей.

В этом же треке команда Not So Serious получила поощрительный приз.

Суть проекта: Платформа-агрегатор, позволяющая самозанятым организовывать увеселительные и туристические мероприятия за городом, в частности в деревнях. Платформа позволяет собирать вступительные взносы, привлекать аудиторию и управлять списком участников.

Состав команды:
  • Онласын Саяжан, Тараз (Казахстан)
  • Кажимухан Азат, Тараз (Казахстан)

Гонорар 100 тысяч рублей.

В треке Деревни 2.0 команда Домашнее получила поощрительный приз.

Суть проекта: Домашнее маркетплейс фермерских продуктов. Для покупателя предоставляется площадка с удобным сервисом и с отобранными продавцами по очевидным критериям. Для фермы канал сбыта продукции, логистику доставок и все плюшки самозанятости. Фермер будет иметь легальный и подтвержденный доход, благодаря чему сможет брать кредит или учавствовать в грантах.

Состав команды:
  • Грицай Анастасия, Сочи.
  • Евгений Шумейко, Екатеринбург.
  • Виталий Дмитриев, Екатеринбург.

Гонорар 100 тысяч рублей.

Победитель трека Мобильный заказчик команда P.Resolved.

Суть проекта: Кросс-платформенное приложение для заказчиков платформы Наймикс с акцентом на исключительный пользовательский опыт. Пользователь имеет весь необходимый функционал для работы с самозанятыми в своем смартфоне.

Состав команды:
  • Артем Ящук, пос. Варшава.
  • Виталий Ящук, Москва.
  • Захаров Кристиан, Волгоград.
  • Сивицкий Евгений, Тверь.

Гонорар 200 тысяч рублей.

Победитель трека Уумаркет команда Android Heroes.

Суть проекта: УМНЙ МАРКЕТ личный помощник для самозанятых, помогающий продавать и размещать handmade-товары в 2 клика, получать чеки и общаться с клиентами. А для покупателей, которые хотят купить товар здесь и сейчас это умный каталог товаров. Сервис позволяет выбирать любой товар, представленный самозанятыми, и вести учет продаж\ покупок. Кроме того, функционал сервиса позволяет отправить чек, подтверждает операцию покупки, в пару кликов, благодаря интегрированному сервису оплаты Wallet One. Сервис представлен в виде удобного мобильного приложения. Это еще и понятный в использовании личный кабинет для самозанятых, а для покупателей удобство совершения покупки в пару кликов. Приложение дает возможность встраивания личного кабинета в качестве SDK для магазинов партнеров.

Состав команды:
  • Валуйский Михаил, Москва
  • Валуйская Анастасия, Москва

Гонорар 200 тысяч рублей.

Победители приглашены в Москву на презентацию своих доработанных проектов перед топами Wallet One и ФНС России, на которой определится обладатель гонорара супер-финала. Состоится суперфинал в конце мая 2021 года. Результаты оценят специалисты ФНС. Команда-победитель получит еще 250 тысяч рублей и возможность подписать инвестиционный контракт с одним из партнеров конкурса.

Кроме того, победители получают еще и приглашения на конференцию EMERGE.
Подробнее..

Digital-мероприятия в Москве c 10 по 16 мая

10.05.2021 10:05:19 | Автор: admin

Подборка мероприятий на неделю


image


DevOps Pro Moscow 2021


  • 11 мая (вторник) 13 мая (четверг)
  • онлайн
  • от 24 000 р.
  • Темы конференции охватывают основные принципы и концепции DevOps методологии и демонстрируют способы использования основных приемов разработки, внедрения и технической поддержки приложений как локально, так и в облаке.

EMERGE


  • 12 мая (среда) 14 мая (пятница)
  • онлайн
  • EMERGE одна из крупнейших международных технологических конференций, объединяющих самые перспективные стартапы, профессионалов из области технологий, инвесторов и экосистемных игроков из СНГ, Восточной Европы, Центральной Азии и Прибалтики.

Хакатон VTBхMGNT


  • 14 мая (пятница) 21 мая (пятница)
  • онлайн
    • Мы приглашаем разработчиков, UI/UX-дизайнеров, маркетологов и аналитиков присоединиться ко второму этапу хакатона VTBxMGNT, на котором вместе с идеологами проектов и при поддержке профессиональных трекеров вы пройдете путь от бизнес-проекта до рабочего прототипа. Общий призовой фонд: 1 000 000 рублей

DevOps Hackathon


  • 15 мая (суббота) 16 мая (воскресенье)
  • онлайн
  • Хакатон подойдет как уверенным джуниорам, так и DevOps- специалистам, считающим себя мидлами. Призовой фонд: 60.000 рублей

Yet Another Level


  • 15 мая (суббота)
  • ЛТолстого 16
  • бесплатно
  • На встрече выступят опытные разработчики, тимлиды и технические менеджеры из Яндекса, Google и Booking.com. Они расскажут об алгоритмах смены работы, видах дохода разработчика, вечном выборе между корпорацией и стартапом, способах саморазвития и других темах.
Подробнее..

Digital-мероприятия в Санкт-Петербурге c 25 по 30 мая

25.05.2021 10:11:06 | Автор: admin

Подборка мероприятий на неделю


image


Санкт-Петербургская интернет-конференция СПИК 2021


  • 27 мая (четверг) 28 мая (пятница)
  • Кораблестроителей 14
  • от 3 000 р.
  • Кто хоть раз был на СПИКе, знает это событие нельзя пропустить. Ведь это самая масштабная и яркая конференция в сфере интернет-маркетинга и смежных отраслей в Северо-Западе.

В 2021 году СПИК возвращается! И будет еще круче!

Подробнее..

Digital-мероприятия в Москве c 25 по 30 мая

25.05.2021 10:11:06 | Автор: admin

Подборка мероприятий на неделю


image


BA & Product Management Z-Day Global online conference


  • 25 мая (вторник) 28 мая (пятница)
  • онлайн
  • бесплатно
  • BA & Product Management Z-Day 2021 это конференция, объединяющая такие компетенции, как бизнес-анализ и продуктовый менеджмент: анализ процессов, управление требованиями и владение продуктом, а также объединение анализа со стратегией, архитектурой, agile-методологией и т. д.

GDPR Day 2021


  • 25 мая (вторник) 26 мая (среда)
  • онлайн
  • бесплатно
  • Конференция GDPR Day 2021 это возможность для бизнеса:
    -узнать мировые и национальные privacy-тренды и перспективы
    -познакомиться с лидерами мнений и услышать их прогнозы
    -понять, как дальше будет развиваться приватность, чтобы принимать верные бизнес-решения
    -увидеть, как внедряют GDPR успешные компании, и взять с них пример
    -выбрать экспертов для сотрудничества по GDPR-compliance

Open Day


  • 25 мая (вторник)
  • онлайн
  • бесплатно
  • Подключайтесь трансляции, где мы расскажем:
    -чем занимается компания EPAM;
    -на каких production-проектах работают наши сотрудники;
    -чему мы обучаем начинающих IT-специалистов в тренинг-центре;
    -с каким опытом нужно приходить на обучение для успешного старта карьеры;
    -в какие сроки можно получить заветный оффер в EPAM, пройдя обучение;
    -успешные истории эпамеров

Change Management: хочешь жить умей меняться


  • 25 мая (вторник)
  • онлайн
  • бесплатно
  • 25 мая Lean-эксперт, лидер по управлению изменениями и HR-эксперт расскажут о том, что значит управлять изменениями в компании, разберут основные понятия и поделятся актуальными кейсами.

Pytup


  • 26 мая (среда)
  • онлайн
  • бесплатно
  • Гостей ждут три доклада. Из Австралии к нам подключится Валерия Блинова руководитель разработки NLP-проектов в Тинькофф и PhD-кандидат в Мельбурнском королевском технологическом университете. Лера расскажет, как нейросети пишут на Python.

Программирование для админа


  • 26 мая (среда)
  • онлайн
  • бесплатно
  • Собирайся с нами на онлайн-митап, будем обсуждать с Денисом Наумовым, спикером курса Python для инженеров, и приглашенными экспертами за bash, python, go и вообще программирование админами.

Online Golang meetup


  • 27 мая (четверг)
  • онлайн
  • бесплатно
  • Павел Грязнов, Go developer в Evrone выступит с докладом В Go завезли дженерики (почти) Много раз при обсуждении преимуществ и прелестей Go как языка разработки мне приходилось слышать что-то типа у вас ДАЖЕ нет дженериков или вот завезут дженерики, тогда и поговорим. Валентин Хомутенко, бэкенд-инженер в Avito, расскажет, что не так с ORM в Go
Подробнее..

Digital-мероприятия в Москве c 31 мая по 6 июня

31.05.2021 10:13:24 | Автор: admin

Подборка мероприятий на неделю


image


Tech Week 2021


  • 01 июня (вторник) 03 июня (четверг)
  • Технопарк Сколково
  • от 27 000 р.
  • Как малому, среднему и крупному бизнесу развиваться в беспрецедентных условиях обсудят лидеры из технологичных компаний на ежегодной конференции по внедрению цифровых технологий в бизнес Tech Week 2021

MeetUP место JAVA в мире современной разработки


  • 02 июня (среда)
  • онлайн
  • бесплатно
  • Мы поговорим с Java-разработчиком Ростелеком и преподавателем курса Разработка на Java в Nordic IT School Романом Болобаном, который поделится личным опытом, расскажет о своем пути Java-разработчика, как он пришел в профессию и что необходимо сейчас, с его точки зрения, начинающим. Поговорим о языке JAVA, современных тенденциях и сферах применения.

Конференция для руководителей Формула Бизнеса: руководство к действию


  • 02 июня (среда)
  • онлайн
  • бесплатно
  • Вопросы, которые задает каждый руководитель. Как контролировать свой отдел продаж? Как сделать выполнение задач прозрачным и мотивировать команду на удаленке? Как быть примером результативного руководителя?
    Найдите ответы на вопросы в кругу других руководителей Москвы 2 июня. Регистрируйтесь на бесплатную онлайн-конференцию Формула бизнеса: руководство к действию https://bit.ly/3ycJOka
    Что вас ждет на конференции:
    -Руководство, как сегодня быстро выявлять потребности клиентов;
    -Алгоритм по внедрению новых подходов к мотивации сотрудников;
    -Чек-лист по формированию сильного бренда предпринимателя в онлайне;
    -План по поиску и подбору эффективных сотрудников для работы на удаленке.
    Вы встретитесь с такими экспертами как:
    • Владимир Маринович, бизнес-ангел;
    • Александра Седова, руководитель партнерского отдела 1С-Битрикс;
    • Евгений Жигилий, бизнес-тренер и другие.
      От каждого спикера вы получите 0 теории. Вместо этого практический опыт, конкретные чек-листы и инструкции.
      Переходите по ссылке и регистрируйтесь сейчас
      https://bit.ly/3ycJOka

Хакатон Tech monsters night


  • 04 июня (пятница) 05 июня (суббота)
  • онлайн
  • бесплатно
  • Участвуйте в битве Tech monsters night от М.ВидеоЭльдорадо, решите задачи конкурса лучше и быстрее других и получите шанс обладать одним из тридцати крутых призов, оригинальным мерчем и должностью в компании.
Подробнее..

Digital-мероприятия в Москве c 7 по 13 июня

07.06.2021 10:04:02 | Автор: admin

Подборка мероприятий на неделю
image


ML Party


  • 08 июня (вторник)
  • онлайн
  • бесплатно
  • ML Party регулярные встречи о самых разных применениях машинного обучения в IT. Подборка тем ближайшей встречи ещё раз подчёркивает это разнообразие.

DevDays Moscow 2021 HYBRID EDITION


  • 08 июня (вторник) 10 июня (четверг)
  • онлайн
  • от 24 000 р.
  • DevDays Moscow конференция по разработке программного обеспечения, на которой соберутся всемирно признанные докладчики и разработчики для того, чтобы побудить в вас стремление к совершенству и инновациям, для освещения передовых технологий и новых практик в комьюнити разработчиков ПО.

Demo Day Перезагрузка


  • 08 июня (вторник)
  • онлайн
  • бесплатно
  • 8 июня на Demo Day Перезагрузка выпускники CROC Product Partner представят 15 инновационных продуктов и сервисов для ритейла, банков, страховых, маркетинга, бэк-офиса и других сегментов. Это молодые ИТ-компании, которые прошли подготовку с экспертами и трекерами КРОК, и теперь готовы перевернуть рынок своими решениями

DIGITAL ENTERPRISE: Цифровые процессы


  • 09 июня (среда) 10 июня (четверг)
  • онлайн
  • бесплатно
  • Конференция DIGITAL ENTERPRISE: Цифровые процессы ориентирована на руководителей крупнейших предприятий и корпораций, имеющих опыт или стремящихся повысить эффективность производственных и бизнес-процессов с помощью цифры.

EcomExpo`21


  • 09 июня (среда) 10 июня (четверг)
  • Краснопресненская наб 14
  • бесплатно
  • Крупнейшая выставка технологий для интернет торговли и retail

Онлайн-конференция Новинки рекламных технологий


  • 09 июня (среда)
  • онлайн
  • бесплатно
  • Хотите узнать о новинках facebook-рекламы?
    Татьяна Субботина, менеджер по развитию бизнеса Aitarget One, выступит на онлайн-конференции Новинки рекламных технологий. Татьяна расскажет какое будущее ждет рекламодателей и как повысить эффективность интернет-рекламы. Участников также ждут доклады от представителей Google, Яндекс, Mail.ru Group, ВКонтакте и Alytics. Участие будет полезно директорам по маркетингу, маркетологам и специалистам по рекламе.
    Регистрируйтесь и подключайтесь, чтобы быть в курсе новинок рекламных технологий!

Demo Day MUIV.LAB презентации стартапов и нетворкинг


  • 10 июня (четверг)
  • Новорогожская 19с1
  • бесплатно
  • 10 июня проидет Demo Day бизнес-акселератора МУ им. С.Ю.Витте MUIV.LAB для технологических стартапов в офлаин-формате.
    В финале выступят самые сильные проекты из 96 стартапов, подавших заявку на участие. В течение 3 месяцев 19 резидентов Акселератора, прошедших отбор, осваивали образовательную и трекерскую программы, получали серьезную и глубокую экспертизу от успешных предпринимателеи и экспертов технологических компании.
    На Demo Day MUIV.LAB финалисты презентуют свои проекты в направлениях: робототехника, логистика транспортных потоков на основе Big Data и инфраструктуры умного города, EdTech, MedTech, BioTech и Entertainment.
    О результатах работы за период прохождения программы акселератора MUIV.LAB стартапы расскажут в ходе питч-сессии, а инвесторы и заказчики смогут обсудить с ними дальнеишее сотрудничество. Moscow seed fund выберет победителя, который получит грант в 300 тысяч рублей.
    Приглашаются эксперты, инвесторы, представители корпорации, игроки венчурного рынка, проекты, которые планируют проити отбор в следующии сезон акселератора и все, кому интересны инновационные стартапы.

Я.Железо: поднимаем Wi-Fi и Bluetooth


  • 10 июня (четверг)
  • онлайн
  • бесплатно
  • Юрий Тимофеев, разработчик из команды прикладного софта, и Андрей Заостровных, специалист по беспроводным технологиям из hardware-команды, расскажут всё самое необходимое о технологиях беспроводной передачи данных и о том, как настроить и применить их для решения реальных задач.

MIXR Конференция для AR\VR профессионалов


  • 10 июня (четверг)
  • Берсеневская наб 6с3
  • от 990 р.
  • Конференция создана профессионалами для профессионалов как площадка обмена знаниями и опытом выхода на глобальные рынки и создания конкурентных XR-продуктов

Хакатон Moscow City Hack


  • 11 июня (пятница) 14 июня (понедельник)
  • онлайн
  • бесплатно
  • Moscow City Hack это 125 команд, 5 крутых задач и 3 миллиона в призовом фонде: 2 миллиона рублей денежного приза и 1 миллион рублей в качестве грантов на образовательные продукты. А также отличный шанс прокачать свои hard & soft skills, найти единомышленников, обменяться опытом, получить приглашение на работу и стать частью уникального комьюнити со всей страны.
Подробнее..

Digital-мероприятия в Москве c 14 по 20 июня

14.06.2021 10:08:37 | Автор: admin

Подборка мероприятий на неделю


image


Blockchain Z-Days 2021


  • 14 июня (понедельник) 17 июня (четверг)
  • онлайн
  • бесплатно
  • Blockchain Z-Days 2021 это глобальная онлайн-конференция, которую организовывает сообщество IT-профессионалов. Участники смогут присоединиться к более чем 20 докладам о прогрессивных технологиях, которые базируются на знаниях и реальным опыте спикеров.

Hydra 2021


  • 15 июня (вторник) 18 июня (пятница)
  • онлайн
  • от 10 000 р.
  • Конференция по разработке параллельных и распределенных систем Hydra 2021 15-18 июня.
    Вас будет ждать 4 дня докладов обо всем, что касается работы в этой сфере.

.Net Кухня


  • 15 июня (вторник) 17 июня (четверг)
  • онлайн
  • бесплатно
  • Приглашаем тех, кто работает в .NET или интересуется этой сферой, в гости на .NET-кухню. вместе с эксперами из ижевского EPAM будем разбираться в ингредиентах, миксовать компоненты, узнавать лайфхаки, чтобы было вкусно!

Как освоить методологию создания новых продуктов и поиска точек роста


  • 15 июня (вторник)
  • Мясницкая 13с18
  • бесплатно
  • Мероприятие будет полезно лидерам бизнес-подразделений, продакт-менеджерам, project-менеджерам, agile-коучам, скрам-мастерам, консультантам.

Online LoGeek Night: QA Automation


  • 17 июня (четверг)
  • онлайн
  • бесплатно
  • На митапе специалисты компании Luxoft в области QA Automation поделятся своим опытом и расскажут о минусах и плюсах двух способов хранения тестовых данных с примерами на Java. А также раскроют тему автоматизации высокоуровневого тестирования ПО максимального уровня безопасности для авионики.

DevOps MeetUp


  • 17 июня (четверг)
  • Университетская 7
  • бесплатно
  • В четверг 17 июня собираемся в Иннополисе, чтобы вместе со спикерами из Provectus и Skyeng узнать все про GitOps и Deploy. Также будет организована онлайн-трансляция.
    Спикеры:
    Рустам Гимадиев, Senior DevOps Engineer из Provectus, расскажет, как построить инфраструктуру так, чтобы любой с доступом в Git мог внести изменения и получить актуальное состояние, поговорим про kubernetes, terraform и argocd/flux/tektoncd.

Online Frontend meetup


  • 17 июня (четверг)
  • онлайн
  • бесплатно
  • Спикеры
    -Иван Соловьев, Teamlead Evrone Как полюбить Snowpack
    Расскажу почему стоит использовать Snowpack, как я дошёл до этого и на какие грабли напоролся.
    -Борзунов Игорь, Frontend-разработчик, Росбанк В жизни вашего проекта не хватает WebGL
    В данном выступлении я хочу показать то, как на наших с вами глазах видоизменяется веб, а именно в сторону WebGL.

Хакатон INNOHACK 2.0


  • 18 июня (пятница) 20 июня (воскресенье)
  • онлайн
  • бесплатно
  • ГК Иннотех объявляет о старте регистрации на второй онлайн хакатон INNOHACK 2.0 с общим призовым фондом 1 200 000 рублей.
Подробнее..

Как я предсказал LGD на хакатоне и устроился на работу

11.06.2021 14:22:51 | Автор: admin

Всем привет! Меня зовут Андрей, недавно яприсоединился ккоманде VSRobotics изанимаюсь проектом автопостроителя сценариев диалогов робота-оператора. Вэтом посте хочу поделиться историей своего трудоустройства ирешением задачи LGD prediction, которое мне вэтом очень помогло. Несекрет, что начинающим DS-специалистам приходится преодолевать серьезные трудности, чтобы получить начальную позицию. Мнеже повезло получить офер, поучаствовав всоревновании иминовав изнурительные интервью имуки сомнений всобственной компетенции. Надеюсь, мой рассказ будет полезен иобратит внимание новичков нахакатоны иконференции как наотличные инструменты для активного поиска работы.

Вступление прошлая жизнь ипервые шаги вData Science

Попрошлой профессии яфинансист, точнее, инвестиционный аналитик. Ноклассические алгоритмы машинного обучения широко применять вотборе акций мне неприходилось, хотя периодически строил модели линейной регрессии. Совсем неумея программировать, яотносительно спокойно жил иработал, ногде-то глубоко сидела мысль отом, что упускаю что-то интересное иважное. Явсегда трепетно относился клюбым большим массивам данным, слышал, что data scientist это профессия будущего. Вобщем, всячески пытался посматривать всторону мира продвинутого анализа данных, ноприверженность инвестиционному делу, занимавшая рабочее исущественную часть свободного времени, недавали основательно развиться вэтом направлении.

Впериод начала пандемии уменя освободилось время засчет отсутствия поездок доофиса, которое удалось использовать для изучения основ языка Python. Постигать азы начал спрочтения первого тома Лутца Изучаем Python. Летом 2020я попрощался сработой, чтобы перезарядить батарейки иуйти вперестройку. Выбрал онлайн курс поData Science иначал учиться.

Для себя ясформулировал, что хочу работать вкрупной компании, чтобы быть частью большого сообщества после учебы поставил себе цель найти подходящую позицию вСбере. Яотслеживал информацию оконференциях имероприятиях, вкоторых компания участвует. Благодаря странице https://ict2go.ru/companies/19/, яузнал, что Сбер участвует вконференции ScoringDay Весна 2021 икэтой конференции приурочен хакатон наплощадке dsbattle.com под названием LGD Prediction. Призеры соревнования (топ-3) получают бесплатный билет наконференцию ивозможность присоединиться ккоманде блока Риски. Нучтож, вызов принят!

Тяжело вучении, легко вбою!

0. Дрожащими руками, терзаемый сомнениями смогули я?, открыл ссылку сbaseline-решением наколабе. Посмотрел. Смогу. Визуальное знакомство сданными показало, что вцелом такие задачки решать яумею. Обычные табличные данные, задача регрессии, призовем CatBoost. Отмечу, что натот момент опыта участия всоревнованиях, кроме как вТитанике наKaggle, уменя небыло.

Ниже разберу основные шаги решения, которые позволили занять заветную вторую строчку иотправиться вМоскву наконференцию. Также прикладываю ссылку наgithub иcolab.

Целью задания было построить модель машинного обучения, предсказывающую LGD (Loss Given Default), другими словами, тудолю отвыданного кредита, которую банк потеряет вслучае дефолта заемщика. Для оценки качества модели использовалась метрика MAE mean absolute error, средний модуль отклонений.

Враспоряжении участников была обучающая выборка с1400 объектами итестовая с691, где каждый объект это характеристики предприятия, которому был выдан кредит, ивпоследствии это предприятие объявило одефолте. Организаторы предупредили, что данные синтетические, поскольку реальные цифры представляют коммерческую тайну. Втестовой выборке небыло столбца сцелевым признаком.

1. После знакомства сдатасетом яразбил 35признаков для обучения на2группы: первая группа 24признака это финансовые показатели (выручка, чистая прибыль, совокупные активы ит.п.), вторая группа 11признаков различные прочие характеристики предприятия (срок ведения бизнеса, величина уставного капитала, объект взалоге).

Далее важно было взглянуть нараспределение целевого признака LGD чтобы понять, счем мывообще имеем дело.

Распределение целевого признака имеет U-образную форму, тоесть, наиболее вероятные сценарии развития событий для банка что онлибо вернет всю сумму, либо неполучит ничего.

Наэтапе предобработки данных важно проверить данные напропуски. Вданном случае это был ключевой момент, так как вобучающей выборке только38% объектов имели значения всех признаков, ау60% вообще отсутствовали данные изгруппы признаков финансовых показателей, только прочие характеристики. Для тестовой выборки картина была схожей.

Кроме того, япроверял данные надубликаты построкам (ихнебыло) ипостолбцам (были).

2. Изначально, решая данный кейс, япошел подлинному пути. Видя, что есть очень много признаков, ясразу понял, что какие-то изних лишние. Сгенерировав новые иглядя накоэффициенты корреляции изначимость, япостарался отбросить ненужные. Это принесло свои плоды ипозволило мне держаться сприличным отрывом напервой строчке публичного лидерборда почти неделю.

Однако затем участник сником art совершил мощный рывок иопередил меня наодну десятитысячную! Сначала янемного расстроился, поскольку яуже видел себя победителем соревнования идумал, что дело сделано. Нособравшись смыслями исилами, ярешил переработать проект ипойти подругому пути неотбрасывать ненужное, абрать изпризнаков только самое необходимое. Поэтому все дальнейшие шаги относятся уже кконечному варианту решения.

Помог опыт участия вТитанике наKaggle создание хороших категориальных признаков помогло мне улучшить результат, поэтому ярешил, что этот трюк пройдет издесь.

Как уже можно было догадаться, наиболее очевидным вариантом разделения на2категории стало наличие/отсутствие финансовой отчетности. Разбив объекты, ясоставил сводную таблицу, чтобы убедиться всущественном различии целевого признака погруппам.

Заметно, что средний имедианный LGD укомпаний сфинансовыми данными существенно ниже, чем уоставшихся компаний.

Далее ярешил перейти кеще одному потенциально плодовитому наулучшение результата столбцу это объект взалоге. Данный признак содержал относительно неоднородные данные, там можно было увидеть квартира, Дом жилой, жилой дом, Скотомогильник..., автомобиль легковой иЛегковой автомобиль. Здесь напомощь пришел учебный опыт впервом моем проекте было задание выделить группы залога. Визуальный анализ значений позволял выделить три категории жилое здание, нежилое здание, автомобиль или поручительство. Поиском подстроки встроке эти категории яивыделил. Автомобиль ипоручительство пришлось объединить водну категорию, поскольку статистика вэтих группах отличалась несильно. Сводная таблица показала следующее:

Все пропуски вфинансовых данных язаполнил нулями.

Затем обратился кисследованию признаков выручка ивеличина уставного капитала. Пообоим столбцам япопытался выделить крупные компании вотдельную категорию. Исследовав медиану исредние при различных вариантах, остановился награнице в50млн руб. для выручки (больше категория corporation) и100тыс. руб. для уставного капитала (больше категория big).

Изсводных таблиц выше видно, что увыделенных категорий LGD существенно различаются.

Далее ярешил построить pairplot для признаков, которые есть увсех объектов это срок ведения бизнеса, срок смомента регистрации ОГРН, сгруппировав объекты покатегории залога.

Этот график позволил сделать следующие выводы:

  • срок ведения бизнеса достаточно тесно коррелирует с целевым признаком;

  • срок ведения бизнеса исрок смомента регистрации ОГРН доопределенного момента имеют тесную связь, нозначение второго ограничено сверху (поскольку пофизическому смыслу они выражают примерно одно итоже то, сколько компания существует, было принято решение остановиться наменее зашумленном признаке срок ведения бизнеса);

  • также любопытным инсайтом было то, что заемщики с залогом жилое здание по истечении определенного срока почти всегда переходили в категорию безопасных для банка их LGD падал до 0 (второй график в первом ряду). Продемонстрируем его отдельно.

Здесь видно, что примерно после значения науровне 70срока ведения бизнеса LGD укредиторов, отдавших взалог жилое здание, падал донуля. Было только 4исключения. Ярешил ими пренебречь ивыделить такую группу вотдельную категорию безопасный заемщик.

Получилось 100 таких компаний вобучающей выборке.

3. Потом ярешил посоздавать количественные признаки наоснове данных финансовой отчетности. Нопоскольку таких объектов было меньшинство исами финансовые данные были зашумлены (совокупные активы небыли равны совокупным обязательствам икапиталу, например), результативность таких действий была низкой. Однако мне удалось выделить два признака, повысивших качество модели.

Вэтом мне помог опыт финансового анализа предприятий, ярешил, что нужно рассчитать метрики, характеризующие уровень долговой нагрузки. Это было отношение общего долга ксобственному капиталу (debt_equity) иотношение операционной прибыли кобщему долгу (debt_op_profit).

Так моя обучающая выборка содержала всего 9признаков: 4количественных и5категориальных. Ярешил использовать признак выручка (ar_revenue), так как онвзначительной степени характеризует величину компании иявляется определяющим для получения денежных потоков.

4. Затем яначал обучать модели. Перед градиентными алгоритмами япробовал ислучайный лес, ноего качество было ощутимо хуже. CatBoost показал себя лучше других, поэтому тюнил дальше его. Изначально обучал его изкоробки состратегией кросс-валидации на9разбиениях.

Среднее качество модели, рассчитанное таким образом, составило 0.086. Затем яобучил модель навсей обучающей выборке иполучил качество 0.066.

Ниже график ошибок фактический LGD предсказание для обучающей выборки.

Заметно, что самые серьезные ошибки возникали тогда, когда модель выдавала LGD = 1, когда это небыло нужно, инепредсказывала0, когда это было нужно.

Затем ясделал предсказания для тестовой выборки, исистема показала, что ихкачество около 0.087: налицо было переобучение, нопоиграв сколичеством итераций вCatBoost ирегуляризацией, ядобился лишь небольшого улучшения 0.086. Так или иначе, оценка качества модели, сделанной пометоду берем только необходимое, оказалась выше, чем модель отбрасываем ненужное.

Далее посмотрим назначимость признаков итоговой обученной модели.

Наиболее значимым является срок ведения бизнеса, который, как мыпомним, тесно коррелировал сlgd. Второе итретье места заняли созданные категории наличия отчетности ивида залога. Также сам параметр выручки (ar_revenue) оказался важен. Прочие созданные мной признаки были существенно менее важны, нобез них качество наоткрытой части тестовой выборки было ниже.

Тут надо отметить, что, являясь новичком всоревнованиях, ятолько впроцессе решения понял, что имеют ввиду организаторы, когда говорят, что итоговый результат будет оцениваться поприватной части выборки, аразмер еенеизвестен. Поэтому напишу важное наблюдение для такихже новичков: вомногих соревнованиях конечный результат определяется позакрытой части выборки! Участник делает предсказания для всей тестовой выборки, новоткрытом лидерборде его оценка рассчитывается только покакой-то доле отнее. Очевидно, делается это для того, чтобы человек несделал миллион вариантов предсказаний инеполучил простым перебором идеальный результат.

Качество0.086на тесте снова позволило выйти напромежуточное первое место. Ребята стретьего места иниже существенно неулучшали свои результаты. Номой основной соперник выдал очередной мощный рывок иобогнал меня уже надве тысячных. Уже исчерпав идеи улучшения модели ивцелом чувствуя небольшую усталость отрешения кейса (всумме потратил около семи полноценных рабочих дней), ярешил ждать завершения соревнования. Подумал, что победителем станет тот, кто меньше переобучился.

После открытия итогового лидерборда оценки ожидаемо снизились, астатус-кво сохранился яостался навторой строчке. Отлично, серебро тоже замечательный результат!

Большой итог

Будучи наслышанным осиле нетворкинга иважности общения слюдьми вотносительно неформальной обстановке, перед самим соревнованием ясформулировал цель обязательно поучаствовать вконференции. Очень хотелось окунуться ватмосферу DS-сообщества ипрочувствоватьто, чем живут профессионалы данной отрасли, атакже, если повезет, пообщаться спредставителями компаний напредмет карьерных возможностей.

После всех докладов наконференции инаграждения (где мне также вручили приз засоответствие модели регуляторным требованиям), мне удалось приятно пообщаться спобедителем Артемом ируководителем направления вVSRobotics Александром. Выяснилось, что вкомпанию, посчастливому для меня стечению обстоятельств, нужны люди! После вопросов отом, знакомыли мне основные понятия изобласти обработки естественного языка ивообще интересноли мне это, мыобменялись контактами, ияотправил свое резюме ипортфолио нарассмотрение. Спустя некоторое время мне перезвонили, сделали предложение, ияприсоединился ккоманде VSRobotics!

Вкачестве итога хотелбы поделиться некоторыми мыслями ивыводами, которые ядля себя сделал.

  1. Считаю, что мне вомногом повезло ссоревнованием вчастности, там было мало участников только у45человек результат оказался выше baseline. Правда, наверное, главное все-таки неколичество, акачество.

  2. Повезло также ивтом, что соревнование соприкасалось сдоменной областью, которая была мне знакома. Знание небольших тонкостей финансового анализа позволило улучшить качество модели. Поэтому всем начинающим свой путь data scientistам, которые меняют профессию, рекомендовалбы смело проявлять свои сильные стороны, заключающиеся вхорошем знании какой-либо области, иискать близкие имподуху соревнования ипроекты.

  3. Вцелом хочется всем порекомендовать участвовать всоревнованиях! Основной плюс хакатонов ориентация нарезультат, который легко измерить. Иэто заставляет тебя мобилизовать все знания иопыт иискать возможности улучшения модели сразных сторон предобработки данных, инжиниринга признаков, тюнинга параметров моделей.

  4. Лучше мало хороших признаков, чем много плохих.

  5. Если датасет маленький кросс-валидация важна, нужно обращать внимание накачество модели, оцененное таким образом, анестремится подогнать решение под открытую часть тестовой выборки.

  6. Вовремя ипосле участия уменя сохранилось чувство сопричастности кчему-то объединяющему, ивсех участников ярассматривал некак конкурентов, акак товарищей, укоторых можно чему-то научиться ичем-то интересным поделиться сними.

Спасибо, что дочитали доконца! Буду рад выслушать конструктивную критику решения иответить навопросы!

Подробнее..

Как провести первый онлайн-хакатон и не наломать дров ожидание и реальность

12.05.2021 12:08:48 | Автор: admin

Минувшей зимой мы впервые опробовали формат хакатона. Из-за ограничений на массовые мероприятия он проходил в формате онлайн, но это никак не сказалось на наших ожиданиях. Нам давно хотелось повысить узнаваемость бренда работодателя за пределами ИБ-рынка среди разработчиков и других айтишников, которые зачастую не имеют о нас никакого представления. Кроме того, мы хотели понять, можно ли на хакатоне познакомиться с перспективными специалистами, а еще нам было очень интересно узнать внутреннюю кухню профессиональных организаторов таких мероприятий, чтобы научиться проводить их самим.

Если вам давно не дает покоя идея провести хакатон, но трясутся поджилки, и вы не знаете, с чего начать, добро пожаловать под кат. Мы расскажем, как это происходило у нас, как миновать наши грабли, и как ожидания могут разойтись с реальностью, а также можно ли воссоздать атмосферу офлайнового хакатона в режиме онлайн.

Как нам пришла в голову идея провести первый онлайн-хакатон?

Помимо всего, что мы перечислили выше, перед нами стояла основная задача решить практическую проблему, к которой одна из наших команд долго не могла подступиться. У нас был корпус текстов, и на его основе нужно было создать алгоритм, который бы выбирал из этого корпуса именованные сущности, относящиеся к предметной области threat intelligence: злоумышленников (threat actors), вредоносное ПО (malwares), индикаторы компрометации (indicators of compromise) и прочие. Нюанс заключался в том, что корпус текстов был на английском языке. Задача была нетривиальная, интересная, но у нас до нее очень долго не доходили руки.

Почему именно хакатон, когда есть много других инструментов?

В целом для решения основной задачи можно было нанять аутсорсеров, а для поиска кандидатов активнее задействовать HR и сконцентрироваться на подборе персонала. Но внезапно с нами на связь вышел представитель компании Pystech.Genesis, специализирующейся на проведении хакатонов для айтишников. Мы начали обсуждать организационный процесс и в итоге решили протестировать проведение совместного онлайн-хакатона с поддержкой профессионального организатора таких мероприятий. Поскольку у нас самих были планы проводить хакатоны в будущем, нам хотелось посмотреть вживую, как это делают специалисты с богатым опытом за плечами.

Мы отобрали большое количество экспертов от нашей компании, чтобы иметь возможность на каждом этапе наблюдать, что и как делают наши организаторы. Так нам удалось собрать информацию о том, как правильно организовывать этот процесс. Оказалось, что в этом нет ничего сложного, но нужно достаточное количество времени и, самое главное, человеческий ресурс люди, готовые максимально погрузиться в организацию подобной движухи. Мы обсудили с организаторами условия и начали готовиться к проведению первого совместного онлайн-хакатона.

Как выбирали задание?

Процесс выбора задания сам по себе был увлекательным. В нем участвовали сотрудники сразу двух подразделений: Центра экспертизы и Департамента разработки. Первый помогает клиентам и партнерам выстраивать ИБ-процессы на базе наших решений, а второй разбит на команды по создаваемым продуктам. По сути департаменты и отдельные команды конкурировали друг с другом, и все они были заинтересованы в том, чтобы выбрали именно их задачу.

Мы проводили отдельную встречу, на которой желающие питчили каждый свою задачу и объясняли присутствующим, почему именно их задача должна быть выполнена на хакатоне. Например, Центр экспертизы предлагал в качестве задачи разработку нового генератора лицензий для компании. Было много интересных задач, но победила в итоге задача от команды продукта R-Vision Threat Intelligence Platform (TIP), представляющего собой платформу для управления данными киберразведки.

Суть задачи

Изначально задача в постановке команды TIP была конкретная и слишком специфичная для ИБ-сферы. Это было не очень удачно, поскольку на хакатоне предполагается определенная свобода действий для команды. Поэтому мы решили разбить задачу на две части.

  1. Основная задача была достаточно широка: построить интерфейс сбора, описания и аналитики угроз, индикаторов компрометации по реальным документам.

  2. Далее командам давалась полная свобода по созданию продукта. Результатом могла стать программа, ML-модель, иная реализация, которая позволила бы решать прикладные задачи сбора и анализа неструктурированных данных об ИБ-угрозах. Предпочтение планировали отдавать наиболее законченным решениям, которые закрывали бы целостную (end-to-end) задачу.

Задача, опубликованная на сайте хакатонаЗадача, опубликованная на сайте хакатона

Неожиданности, с которыми мы столкнулись

Когда мы окончательно утвердили задание, организаторы начали привлекать аудиторию. Неожиданно для нас заявки подали много сработанных команд, которые специализируются на участии в хакатонах и заинтересованы в финансовом вознаграждении. Нам же хотелось, чтобы к нам пришло больше любителей-хакатонщиков, потому что именно среди них мы надеялись встретить потенциальных соискателей.

Изначально мы рассчитывали примерно на 60 участников, то есть не более чем на 10 команд. Но из-за того, что это был первый в этом году онлайн-хакатон в России, количество претендентов превысило 200 человек. В итоге мы вынуждены были проводить отсев, потому что с точки зрения организации просто не выдержали бы такое количество команд. В конце концов мы отобрали 13 команд, из которых до фактической реализации прототипа решения дошли 9, остальные выбыли на промежуточных этапах.

С чего начали подготовку к хакатону

У нашего задания была определенная ИБ-специфика, мы поняли, что нужно доступно объяснить задачу участникам, которые вообще не знают, что такое ИБ и индикаторы компрометации. Для этого Антон Соловей aka @likeafreedom, менеджер продукта R-Vision TIP и по совместительству тамада нашего хакатона, отвечал за взаимодействие с участниками: готовил задания, презентацию, проводил питчинги с командами вместе с другими экспертами нашей компании, делал все необходимое, чтобы хакатон состоялся. Чтобы ввести в курс дела далеких от области ИБ разработчиков и дизайнеров, мы решили отойти от позиционирования наших продуктов и не объяснять, что такое IRP, SGRC, TIP, SENSE и Deception, поэтому в презентации о компании визуализировали наши решения в виде маскотов.

В подготовке презентации было задействовано много людей вычитывали синтаксические ошибки, предлагали, как улучшить презентацию, какие слайды вставить для того, чтобы правильно преподнести нашу компанию.

В итоге мы пришли к тому, что к проведению хакатона нужно подключить экспертов с нашей стороны, которые участвовали бы в питчах команд, принимали задания и оценивали их, отвечали на технические вопросы участников. Мы собрали большую команду экспертов: в нее вошли эксперты по продукту, датасайнтист, фронтендер и бэкендер, тестировщики, менеджер проектов и даже руководитель департамента разработки.

Хакатон в цифрах

  • Длительность 45 часов.

  • Более 220 заявок на участие, конкурс 4,5 человека на место.

  • 13 команд, 9 из них дошли до готового решения, 6 прошли в финал, из них осталось 3 победителя.

Этапы хакатона

  1. Пятница, вечер. Знакомство. Рассказ о задании, презентация компании R-Vision.

  2. Пятница, ночь. Разработка прототипа.

  3. Суббота, утро. Питч решения: то, что успели сделать за ночь. 5 минут на питч.

  4. Суббота, весь день и ночь. Второй питч: относительно готовый вариант.

  5. Воскресенье, утро. Готовое решение на оценку экспертам.

Решения, которые выполнили команды

Команды-участники прорабатывали презентации своих решений и дизайн инструмента. Из интересных можно выделить решение команды Digital Rover, которая придумала что-то вроде Алисы для инфобеза виртуальный помощник на основе искусственного интеллекта для описания угроз по реальным документам. Решение на основе языковой модели ruGPT3 представляет собой бот для Telegram, который позволяет написать что-то на нативном языке текстом либо отправить голосовой запрос. У инструмента есть весь наш корпус текстов, который он переводит на английский язык. Затем он переводит на английский полученное текстовое или аудиосообщение, анализирует соответствие запроса содержимому корпуса документа и выдает пользователю релевантную информацию. Например, можно написать или сказать: Расскажи мне про такую-то уязвимость или Напиши больше информации про такой-то индикатор компрометации, и бот будет отвечать выжимками из корпуса текстов.

У нас была опросная форма, где каждый эксперт ставил оценки по своему блоку по 10-балльной шкале, на каждом этапе эксперты выставляли промежуточные оценки. Изначально задумывался один победитель, но после финального суммирования весов (баллов) по каждой экспертизе оказалось, что у трех команд была настолько минимальная разница в баллах, что мы приняли решение определить трех победителей, которые разделили между собой призовое место. У всех были очень интересные решения, было просто невозможно выделить кого-то одного. В итоге победителями стали команды:

  1. ARES. Разработка продукта для аналитиков в сфере ИБ базы знаний, агрегирующей источники данных с анализом угроз компьютерной безопасности, справочники с терминами, взаимосвязи между сущностями предметной области. Задачи, которые воплотили в продукте:

    • Создание системы фильтрации источников аналитики по ключевым словам

    • Аннотация новых отчетов для выделения терминов, имеющих отношение к ИБ-аналитике, и добавления документа в базу знаний

    • Подключение справочных систем (MITRE и MISP)

    • Визуализация взаимосвязей между сущностями предметной области ИБ

  2. Stellar. Проект R-Vision Assistant cервис для сбора, визуализации и аналитики данных по угрозам кибербезопасности. Особенности сервиса удобный и понятный UX/UI-интерфейс, возможность работы с различными источниками данных о киберугрозах и добавления новых. Решение содержит много вариантов визуализации, аналитики.

  3. DEV Labs. Интерфейс для полуавтоматизированного парсинга основных сущностей из неструктурированных источников данных, в рамках которых ИБ-специалист анализирует уязвимости. Программа нацелена на повышение качества данных, сохраняемых в базу знаний.

Находчивость приветствуется

Организаторы создавали общий канал в Telegram для общения с экспертами. Но некоторые участники, то ли чтобы не раскрывать свою задумку, то ли чтобы получить конкурентное преимущество, начинали писать нашим экспертам в личку, например, уточняли, насколько будет интересна та или иная идея в качестве решения. В этом мы не увидели ничего плохого, поскольку это также входит в работу над продуктом и это не было запрещено правилами хакатона. Чтобы не создавать слишком большого конкурентного преимущества в итоге мы, конечно же, старались все коммуникации переводить в общий канал, но этот заход все равно оценили положительно, потому что это вполне естественная история для взаимодействия с заказчиком.

Выводы

Что нам в итоге удалось

Мы смогли использовать хакатон как возможность рассказать о нас как о компании и в результате отобрали 15 человек для дальнейшего общения по поводу трудоустройства. Однако специалисты, показавшиеся нам интересными, не были заинтересованы в смене работодателя, а были готовы только к работе на отдельных проектах.

Что можно было бы сделать лучше

Мы выделили слишком много экспертов от нашей компании, это отнимало много рабочего времени наших сотрудников. В следующий раз сократим количество экспертов как минимум вдвое.

Также очень много времени у нас уходило на развертывание продуктов на наших стендах: на каждую команду тратили по 1015 минут. На будущее решили давать командам заранее сформированный стенд, чтобы у них была возможность разворачивать готовое решение самим.

Планы на будущее

Мы получили полезный практический опыт и обязательно будем его использовать в дальнейшем. Теперь планируем раз в квартал проводить свои внутренние хакатоны и периодически организовывать внешние с привлечением подрядчиков. Это реально сделать и своими силами, но поддержка со стороны профессионального организатора хакатонов позволяет сократить количество экспертов от компании до 2-3 человек, а значит, сэкономить рабочее время сотрудников.

Материалы
Подробнее..

Как победить букмекеров с помощью ИИ опыт студентов магистратуры Наука о данных

06.05.2021 14:05:14 | Автор: admin

Привет, Хабр! Сегодня хотим представить вам проект студентов магистратуры Наука о данных НИТУ МИСиС и Zavtra.Online (подразделении SkillFactory по работе с университетами) созданный на внутреннем хакатоне, который прошел в марте. Команда поделится решением выбранной задачи предсказание победителя-бойца турнира UFC. Задача отличалась от прочих тем, что после написания модели из неё можно сделать целый продукт, оформив модель в приложение, готовое к использованию конечными пользователями, например теми, кто захочет обыграть букмекеров.


Гипотеза и её проверка

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

  • физические параметры бойца (его рост, вес, размах рук и ног);

  • возраст бойца (всё-таки со временем физически мы слабеем);

  • разница в опыте соперников (вряд ли какой-то новичок без опыта одолеет Хабиба);

  • характер поведения бойца на ринге (чаще обороняется или чаще нападает);

  • географические параметры (вдруг наш боец не успел адаптироваться к другому часовому поясу).

Основа всех методов проверки модели машинного обучения разделение данных при обучении модели на тренировочную и валидационную выборки. Валидационная выборка потребуется, чтобы понять, что произойдёт, если наша модель столкнётся с данными, которых она раньше не видела.

Принцип разделения прост: мы случайным образом разбиваем свои данные примерно на 70 %, используемых для обучения модели, и 30 % для тестирования модели. Однако есть нюанс... Для предсказания результата боя UFC важно, чтобы тренировочная выборка была раньше тестовой во временном периоде.

Иначе модель будет смотреть в будущее, и на реальных данных модель будет работать некорректно. Этот нюанс мы учли и разбили выборку не случайным образом, а в зависимости от временных периодов.

Разработка проекта

В ходе работы над проектом мы просидели в зуме, а затем в дискорде более 10 часов. Углубились во все тонкости предобработки данных, сделали немного занимательной визуализации и обучили нашу модель.

Примерно 90 % времени мы потратили на обработку данных и остальные 10 % на обучение модели. Пайплайн подготовки данных верхнеуровнево выглядел следующим образом: мы очистили датасет от пропусков и выбросов и обогатили его новыми признаками.

Например, на основе физических характеристик рассчитали другие, а также посчитали кумулятивную статистику для каждого боя и каждого бойца. А ещё для увеличения качества модели вычислили разницу между физическими характеристиками бойцов.

Сбор данных и статистика

Ментор предоставил нам спарсенные данные по истории Боёв UFC и статистику по бойцам. Данные и Jupyter Notebook с бейзлайном модели можно найти по этой ссылке на Kaggle. В связи с тем что сроки у нас были ограничены, мы решили не заниматься дополнительным парсингом фичей, а уделить большое внимание обработке имеющихся данных и генерации новых признаков.

Также в процессе обработки мы собрали немного занимательной статистики по боям: например, на этом бублике можно увидеть распределение боев по категориям, из которой можно увидеть, что мужских боёв гораздо больше, чем женских (увы).

А на этом бублике видим, что бои заканчиваются с равной вероятностью либо нокаутом, либо признанием своего поражения, либо решением судьи.

Предобработка данных

Основная идея обработки данных заключалась в создании единого датасета, содержащего накопительную статистику по каждому из бойцов за все его предыдущие бои и его физические характеристики на момент начала боя. Необходимо было избежать лика в данных, при котором модель могла переобучиться на данных из ещё не состоявшегося боя.

После очистки датасета от пропусков и выбросов в первую очередь мы сгенерировали фичи по каждому из бойцов, связанные с его физическими характеристиками. Поскольку мы имеем информацию по физическим характеристикам бойца на настоящий момент, для корректного обучения модели на данных по боям из прошлого мы использовали фичи, которые не заглядывают в будущее.

Вторым шагом был сбор фичей с кумулятивной статистикой по всем предыдущим боям для каждого из соперников и генерации из получившейся накопленной суммы новых важных признаков, таких как серия побед, сумма побед нокаутами, сумма чистых побед, точность ударов, среднее время боя, KO/TKO и т. д. Это перечень важных показателей по уже проведённым боям, которые обычно публикуются на сайте UFC до начала боя. Затем мы посчитали разницу по физическим характеристикам бойцов, удалили коррелированные между собой величины и законсервировали данные в pkl-файл.

Случайный лес, стекинг, бэггинг и итоговая модель

В качестве первой модели мы решили взять случайный лес, так как эта модель неплохо справляется с ненормализованными данными. Результат ошеломил по сравнению с букмекерскими конторами, процент точности был очень высок, однако не всё так просто

Изначально мы не учли наличие временного ряда, и наша модель тренировалась на данных из будущего перемешанного с прошлым, то есть мы взяли временной ряд и случайным образом поделили данные на тренировочные и тестовые (80/20). Тренировочные для тренировки модели, тестовые для проверки правильности уже тренированной модели.

Процент точности прогноза победы варьировался от 75 до 82%! Но какая разница, если обучение было неправильным?.. Модель не должна смотреть в будущее, как это было у нас. Решить эту проблему удалось достаточно просто: мы вернули даты для нашего датасета и поделили на тренировочные и тестовые по датам: данные до 2018 года взяли за тренировочные, данные после 2018 года за тестовые, и вуаля, точность упала в среднем на 5 %, однако теперь мы в ней хотя бы уверены.

Потюнить модели в достаточной мере не получилось, так как было мало времени. Но получилось попробовать стекинг, бэггинг и другие разновидности моделей с параметрами по умолчанию. Они, к сожалению, не дали результатов лучше, чем стандартный случайный лес, поэтому в качестве итоговой модели мы оставили именно этот алгоритм. Возможно, в будущем после подбора параметров для всех моделей найдётся та, которая окажется лучше.

Посмотреть на модель можно на GitHub.

Для того чтобы модель предсказала победителя на новых данных, нужно эти данные обработать таким же образом, как мы это делали в нашем ноутбуке (Jupyter Notebook) DeepOverfitting-DataPreparing, после этого просто подать эти строчки данных для двух бойцов в predict функцию нашей модели и получить предсказание, либо 0, либо 1, 0 победил 2 боец, 1 победил первый боец.

Итоги

Самое главное мы все выявили свои слабые и сильные стороны, поняли, какие пробелы в понимании работы с временными рядами нам нужно заполнить, и научились распределять нагрузку в команде. После всего проделанного нами пути мы решили, что не остановимся на достигнутом и продолжим развивать наш продукт.

Поэтому мы наметили следующий план:

  1. Улучшим точность предсказаний путем более кропотливой настройки модели.

  2. Проверим нашу текущую модель на предстоящих боях.

  3. Попробуем применить нейронные сети и глубокое обучение.

  4. Разработаем приложение, которое будет в удобном виде показывать, сколько и куда ставить.

  5. Станем кем-то кроме букмекера, кто заработает на ставках. И, конечно, будем писать на Хабре про дальнейшее развитие проекта. Букмекеры, берегитесь, мы идём за вами.

Состав команды работавшей над проектов:

  • Евгения Шикина (г. Видное)

  • Оксана Евсеева (г. Барселона)

  • Максим Щиколодков (г. Москва)

  • Михаил Стриженов (г. Москва)

  • Лев Неганов (г. Москва)

  • Кирилл Плотников (г. Екатеринбург)

Узнать больше про магистратуру можно на сайтеdata.misis.ruи вTelegram канале.

Ну и конечно не магистратурой единой! Если вы хотите узнать больше про data science, машинное и глубокое обучение заглядывайте к нам на соответствующий курсы, будет непросто, но увлекательно.

Узнайте, как прокачаться и в других специальностях и навыках или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Возможность для FinTech-стартапов открыт приём заявок на питч-сессию в рамках DIGITAL SUPERHERO 2021

11.05.2021 20:09:12 | Автор: admin

С мая по сентябрь 2021 годв пройдет DIGITAL SUPERHERO ежегодный марафон для IT-специалистов России, который организует группа компаний Innostage при поддержке правительства Республики Татарстан. Цель марафона создать среду для развития и пилотирования цифровых разработок в бизнес-сегменте и госсекторе.

Первое мероприятие в рамках марафона питч-сессия Fintech-проектов, которая пройдёт 27 мая. Приглашаются стартапы по трём направлениям: устойчивое развитие (ESG), Research Tools и RiskTech.

Заявки принимаются до 23 мая на сайте мероприятия.

Что получат победители:

- Компенсацию расходов на проведение пилотного внедрения (до500000 рублей)

- Экспертную и менторскую поддержку

- Возможность масштабирования решения после успешного пилотного внедрения

- Возможность пройти отбор дляучастия вDemo Day наKazan Digital Week ивыиграть 300000 рублей

- Фирменный мерч Ак Барс Банка

- Дополнительные возможности (обсуждаются индивидуально): доступ к инфраструктуре банка и его каналам продаж.

_______

Впервые марафон хакатонов DIGITAL SUPERHERO проходил с мая по сентябрь 2020 года, вот главные цифры о нём:

1 120 человек подали заявку на участие в проекте

177 команд приняли участие в проекте

42 команды стали финалистами

2,4 млн. рублей общий призовой фонд онлайн-хакатона

70 городов масштаб хакатона

Подробнее..

При поддержке Группы М.Видео-Эльдорадо в МАИ определили победителей Авиахакатона

07.05.2021 20:05:41 | Автор: admin


В Московском авиационном институте в режиме онлайн прошел 4-й самый масштабный хакатон в российской авиаиндустрии. В этом году для участия в IT-соревнованиях было подано свыше 700 заявок от представителей более чем 50 университетов, школ, лицеев и колледжей.

Среди участников оказались студенты МАИ, ИТМО, МИРЭА, КНИТУ-КАИ им. А.Н. Туполева, Национального политехнического университета Армении, СПбГУА, СГТУ и др. В финал вышли 52 команды более 200 человек из 23 городов и 4 стран.

Для участников было подготовлено 10 кейсов. Победителей определяли в два этапа: на первом были выбраны лучшие команды по каждому кейсу, которые затем боролись за звание сильнейших в суперфинале. Эксперты оценивали решения участников с точки зрения технологичности и практичности, новизны идеи, креативности и др.

По итогам Авиахакатона первое место заняла команда Realitygang (МИРЭА Российский технологический университет). Победу ей принёс решённый кейс по анализу трековых данных воздушных судов. Второе место досталось команде The One, объединившей разработчиков из Москвы, за вариант навигатора для инфраструктуры аэропортов. На третьем месте команда магистров IT-Центра и института 8 Информационные технологии и прикладная математика МАИ. Маёвцы подготовили лучшее решение кейса на тему Дефектоскопия на основе компьютерного зрения.

Группа М.Видео Эльдорадо поощрила команду SFI (Национальный политехнический университет Армении, Ереванский государственный колледж информатики), решившую кейс по обработке заказов в инфраструктуре аэропортов Сервис для снабжения физических и юридических лиц аэропортов товарами и услугами в один клик.



Не то, что бы хакатоны стали частью моей жизни, но авиахакатон от МАИ по праву занял в ней достойное место. Уже не первый раз вписываюсь в эту историю и остаюсь довольным и процессом, и результатом. У института получается собирать приличное количество участников способных мыслить нестандартно. Отправляясь на данное мероприятие не ожидаешь чего-то сверхъестественного в решении своего кейса, но идеи, которые ведут к этому решению порой поражают своей необычностью с хорошей точки зрения, отметил Андрей Ревяшко, руководитель департамента развития информационных систем бренда Эльдорадо.

В МАИ сегодня рождаются технологии и реализуются образовательные программы по различным актуальным направлениям, в том числе по информационным технологиям. Направления по математическому моделированию, цифровому производству, интернету вещей, виртуальной и дополненной реальности, кибербезопасности, искусственному интеллекту и по другим IT-технологиям сегодня активно развиваются в МАИ, сказал Александр Шемяков, проректор по стратегическому развитию МАИ.


Напоминаем, что мы ждем в своих рядах талантливых программистов. Вакансий и интересных проектов предостаточно. Приходите, будет жарко!
Подробнее..

Подведены итоги Tech Monsters Night

08.06.2021 20:05:53 | Автор: admin


4 июня 2021 года состоялась битва Java-разработчиков Tech Monsters Night от М.Видео-Эльдорадо.
Почти три сотни разработчиков не спали в ночь с 4 на 5 июня. Участникам хакатона представился шанс обнулить цены на топовую технику.

Уникальных посетителей лендинга 3873 человек (5035 визитов);
Регистраций 540;
Пришли на ночь монстров 286 человек;
Решали задачи 203 человека;
Просмотров стрим-конференции на YouTube 554;
Обнулили и забрали подарки 30 участников;
Охваты свыше 30 млн (включая Хабр и др. медиа гиганты).

Что значит обнулить? Изначально на лендинге события техника продавалась (либо была выставлена) за полную стоимость, но с каждым отправленным решением участников цены падали. Это происходило пропорционально отправленным задачами. Пока в один момент ребята полностью не превратили цены в нули, что как раз совпадало с отправкой последних решений, и забрали технику в подарок.





Время соревнования было определено по Москве, но география участников растянулась от Московской области до Улан-Удэ и Южно-Сахалинска. Из 540 регистраций на сам чемпионат пришло 286 человек, это больше половины, учитывая, что хакатон был нетипичный.



Организаторы намеренно отказались от денежного приза, исключив тем самым участие спортивных программистов, для которых подобные соревнования способ заработка.



В итоге получилось не 3 победителя, как обычно, а целых 30 призеров и 30 подарков. Лучшим из лучших монстров досталась топовая техника: мощный ПК, широкоформатный монитор, игровые клавиатуры, компьютерные мыши и iPhone 12 mini, а также стильный мерч и другие призы.



За сменой участников лидерборда было также интересно наблюдать, как и за любым другим спортивным матчем. Те, кто сначала вырвался вперед и был в тройке лидеров, в итоге не смогли закрепиться на длительной дистанции.

Финал вообще был непредсказуем: буквально за несколько минут до окончания чемпионата лидер сменился. Это нужно видеть! Полный лидерборд с именами призеров находится на лендинге.



Все 5 часов хакатон сопровождала стрим-конференция на YouTube, где ведущий Алексей Обровец рассказал про новый вектор в компании цифровизацию и собственный интранет. Он также следил за стремительными изменениями в турнирной таблице.

Еще одной фишкой стрима стали собеседования в прямом эфире. Любой желающий мог показать свои скиллы и online доказать компетенции. Принимали ответы представители HR-бренда работодателя М.Видео-Эльдорадо Фролова Екатерина и Рамиль Акберов. В итоге два смельчака из числа добровольцев прошли online-собеседование. Один из них даже получил One night offer.



Пока на YouTube зрители смотрели конференцию, в телеграм- чате проекта проходил конкурс на лучшее фото. Участники делились атмосферой в которой они решают поставленные задачи. В результате организаторы выбрали самое атмосферное фото, получившее специальный приз.

Для того, чтобы силы окончательно не покинули монстров кода посреди битвы, всем выслали energy break энергетики и пиццу.



Чемпионат только закончился, а в чате уже появились вопросы когда следующая Tech monsters night. Что же, отвечаем coming soon.



Кто монстр, тот знает!
Подробнее..

Recovery mode Как поднять боевой дух команды на удаленке?

16.06.2021 10:13:29 | Автор: admin

Если коротко, то дать сотрудникам возможность отвлечься и поиграть. Мы как команда это то, что мы делаем. Поэтому нужно делать что-то интересное вместе. Удаленка не приговор и не помеха.

Эта статья от том, как я организовал Хакатон для IT компании в Малайзии в самые первые месяцы пандемии. Игра была целиком посвещена Linux администрированию, траблшутингу и хакингу. При этом она позволяла поучаствовать всем сотрудникам, от junior инженера технической поддержки до senior архитектора.

Если вам не интересен формат сторителлинга, и вы хотите сразу добраться до основных мыслей, то смело листайте до раздела с ключевыми принципами организации хакатонов.

Дано:

  • Компания системный интегратор в Куала Лумпуре;

  • Интернациональная команда IT-специалистов;

  • 99.99% персонала внезапно ушло на удаленку.

Задачи:

  • Позволить сотрудникам отвлечься от работы и снизить уровень стресса;

  • Развить навыки, используя геймификацию;

  • Развить внутренний бренд для будущих IT игр.

В чем заключалась сложность?

  • Неравномерный уровень подготовки и квалификации.

Среди сотрудников можно найти как прожженых линуксоидов, так и совсем новичков, которых пугает командная строка. Мы хотим, чтобы поучаствовали и те, и другие. Значит, задания должны предлагаться в порядке от элементарных, до действительно сложных.

  • Сменный график работы сотрудников.

График работы у коллег из разных команд и департаментов значительно отличается. Значит, хакатон не может быть привязан к конкретному времени или дню.

  • Локальный менталитет.

К особенностям местного населения необходимо привыкнуть. Работают в компании в основном малайцы, индийцы и китайцы. Преимущественно они не задают вопросов, опасаются участвовать в чем-то новом и непонятном. Раз в неделю 80% сотрудников покидает офис на 2,5 часа по религиозным соображениям. На корпоратив добрая половина придет только если пообещать им лотерею и призы (очень популярная практика у местных компаний). Заинтересовать таких людей участием в игре было нелегко.

[Спойлер]

Мне удалось =)

А где Гарри? Шалит с новым хакатоном.А где Гарри? Шалит с новым хакатоном.
  • Неразбериха из-за пандемии.

Я называю это удаленка через force. С началом пандемии нам пришлось работать из дома не по своей воле. Не все к этому были готовы. Отдельные сотрудники и даже целые департаменты долго приводили свои рабочие процессы в порядок. Многие не представляли, как можно втиснуть в график еще больше работы.

Отдельный нюанс в том, что упомянутая выше неравномерность скиллов в команде создала огромный спрос на живое общение с коллегами. Возможность подойти к более квалифицированному коллеге на этаже с вопросом была очень ценна для новичков. Казалось бы, написать свой вопрос можно и в чате, но это стало еще одним барьером удаленки.

  • Демотивированный персонал.

Мы затеяли игру, чтобы мотивировать инженеров на новые свершения, но как это сделать если они уже демотивированны резкой сменой обстановки, отсутствием живого общения и неожиданными препятствиями в работе? Был шанс, что сотрудники не станут участвовать потому, что воспримут наши Linux задачки как лишнюю работу, на которую просто нет времени. Если я и так каждый день ковыряюсь в серверах, то это не может быть весело, правильно?

[Спойлер]

Еще как может! Риск не собрать аудиторию не оправдался.

Типичный сотрудник в самом начале пандемии.Типичный сотрудник в самом начале пандемии.

План подготовки и проведения хакатона

В моем случае выполнение всех этих действий позволило мне успешно провести мероприятие.

  • Разработка концепта игры.

Я решил, что темой хакатона будет Linux администрирование. Соответственно, задания должны были строиться вокруг базовых административных задач: проверялось умение использовать command line, браузерные тулзы, знание SQL, DNS, самые основы шифрования.

Хакатон должен был длиться несколько дней. Поэтому я придумал систему уровней и кодов. Каждый уровень представлял собой одну виртуальную машину, в которую участникам нужно было зайти по SHH и найти спрятанный код. На каждой из машин был запущен Apache c простым сайтом, где размещались подсказки. Ну или нет =)

Например, на одном из перых уровней сайт содержал имя юзера и пароль в base64. Имея такую информацию на руках, проникнуть внутрь совсем не трудно, - скажете вы. И будете правы, но внутри участников ожидали дополнительные приключения, а более поздние уровни требовали довольно изощренных и не всегда очевидных действий.

Код, полученный на каждом уровне, необходимо было ввести в специальной форме. Ее задачей было провалидировать ввеленное значение, и если оно верно, то выдать адрес сайта, запущенного на машине со следующим уровнем.

На этом же этапе была продумана система поощрений.

  1. Top-3 самые ценные индивидуальные призы;

  2. Top-10 дополнительный специальный пак призов;

  3. Первые 50 участников гарантированные призы из дешевого ценового диапазона.

Участники, занявшие первые 3 места должны были забрать призы из всех трех категорий.

  • Технический дизайн.

Сразу оговорюсь, я не ставлю задачей глубоко залезть в технические глубины реализации. Если данная статья вызовет интерес, то про это выйдет отдельная заметка от моего коллеги. Здесь же мы затронем только основные моменты.

В качестве хостинг площадки был выбран AWS. Игровые серверы и хост с веб формой были подняты на t2.medium EC2 инстансах. К каждому инстансу был привязан 1 бесплатный домен. В качестве базы данных использовалась Amazon DynamoDB. Форма была написана на Python и фреймворке Flask. Бэкенд формы был выполнен на основе FaaS (Function as a Service) подхода с помощью связки API Gateway + Lambda + DynamoDB.

Выбор такой технологической базы был обусловлен субъективными пожеланиеми организаторов, наличием необходимой корпоративной облачной подписки, и знаменитым правилом start where you are. Последний принцип подсказал, что можно взять подходящую web форму, используемую в продакшене, и переписать ее под нужды игры. Пользуясь случаем, Алекс и Саша, огромное спасибо за помощь с AWS деплойментом и девелопментом формы. Без вас мне бы было значительно сложнее.

  • Презентация концепта руководству и получение бюджета.

К моменту запуска игры руководство догадывалось, что ежегодный корпоратив и некоторые другие привычные активности в этом году не произойдут. Поэтому бюджет на необычный способ тимбилдинга и незнакомый формат были одобрены довольно быстро. Менеджмент из трех предложенных вариантов призового бюджета выбрал самый дорогой.

[Спойлер]
Как ощущаешь себя когда получаешь максимальный бюжет на проект.Как ощущаешь себя когда получаешь максимальный бюжет на проект.
  • Разработка дизайна и внешнего вида.

Сначала я определился с названием бренда для внутренних игр и выбрал цвета на свой вкус. На мое счастье в компании был дизайнер, который помог подготовить несколько вариантов логотипа. Я написал и согласовал ТЗ. Итоговый логотип в белом, черном и цветном вариантах был использован для рассылок и печати на призах. Абсолютно все материалы были выдержаны в одном стиле, распространялись под одним брендом и сопровождались одним и тем же логотипом. Недавно, когда я рассылал тизеры о новом хакатоне мне уже не задавали вопросов о том, что происходит. Инженеры точно знали, чего ожидать.

  • Выбор и заказ призов.

Про бизнес по-малазийски я мог бы написать отдельный пост. В рамках этой статьи позвольте мне упомянуть только, что на получение призов пришлось потратить 2 месяца и кучу нервов. Рассылка призов была выполнена много позднее окончания игры, а некоторым призам даже пришлось лететь в Россию и на Филиппины вслед за некоторыми победителями.

  • Рассылка тизеров до начала игры.

До начала ивента я несколько раз отправлял сообщения-тизеры на глобальный мейл-лист азиатского отделения компании. Письма выглядели как спам со множеством спецсимволов, нарочно сломанной версткой и намеками вместо прямых объяснений или инструкций. Такая подача только подогревала интерес к игре. Коллеги довольно часто интересовались не сломан ли мой рабочий аккаунт и можно ли доверять такой корреспонденции. Виртуальный офис жужжал, а это и было именно то, чего я добивался.

  • Сюжетное обрамление.

Игра сопровождалась ненавязчивым сюжетом, добавляющим всему действу контекста. На механику игры и действия игроков история особенно не влияла. В нашем случае игрок получал неожиданное письмо от своего коллеги. Коллега пропал при странных обстоятельствах и игроку предлагалось его найти. Для этой цели предоставлялись две ссылки: на первый уровень и на Facebook страницу несуществующего человека. Страница в соц. сети содержала часть загадки и строку, которую следовало добавлять к любому найденному или рашифрованному паролю на протяжении всех уровней. Таким образом, попасть в виртуальную машину случайному визитеру сайта без этой строки не представлялось возможным.

  • Релиз.

Первое письмо было отправлено на весь офис и содержало начало истории, ссылки и правила игры. Тут же посыпались вопросы: коллеги просили подсказки, пытались уточнить правильно ли они понимают задание, а также старались выудить полезную информацию любой ценой. Не то чтобы получалось. Я был кремень.

Один из финальных тизеровОдин из финальных тизеров
  • Элемент обучения.

Одной из задач было научить чему-то новому. Поэтому, начиная со второго дня игры, я отправлял подробнейшие инструкции о том, как пройти один из уровней. На второй день я рассказал про первый уровень, на восьмой про финальный седьмой.

В финале виртуальные машины оставались запущены еще на несколько дней и любой желающий мог пройти игру, имея готовые инструкции. Некоторые так и поступили.

  • Организовать постоянный follow up.

Постоянная и своевременная коммуникация тоже была важной составляющей игры. Каждый день я отправлял отчет с результатами участников, хвалил лидеров, подбадривал отстающих. Вплоть до последних дней появлялись новые игроки. И ежедневные письма способствовали этому процессу.

  • Выдать призы.

Из-за пандемии и Малазийских локдаунов мне удалось отправить призы своевременно только ТОП-3 игрокам. Остальным своих посылок пришлось ждать дольше. Несмотря на небольшую стоимость гарантированного призового пака сотрудники были воодушевлены получением заветных пакетов.

Как это ни забавно, но призовые пакеты работали в качестве существенного мотиватора для участников хакатона. Один из Филипинских игроков возвращался с вопросом может ли он получить свой приз даже когда уже покинул компанию. Конечно же, приз ему отправили.

  • Собрать обратную связь.

Действовать следовало итеративно и с фидбеком. Поэтому всем участникам был разослан опросник. 25% заполнили его. Об ответах в описании результатов.

Весь подготовительный процесс занял 2 месяца и 68 человеко-часов главного организатора. Но результат стоил того.

Результаты:

  • Боевой дух команды вырос.

Игра подразумевала индивидуальное участие и решение задач. Однако, мне доподлинно известно, что люди объединялись в команды, устраивали созвоны и брейнштормы. Активным участникам точно было не скучно. Люди, которым в силу неопытности удалось прорваться только через несколько уровней, определенно научились чему-то новому. Цель отвлечь участников и снизить градус напряжения была достигнута.

  • Позитивный фидбек от участников.

Одним из факторов, которые говорят о безоговорочном успехе мероприятия, является факт участия тяжелых на подъем сотрудников. Хакатон имел успех и среди линейных менеджеров, которые по долгу службы не работают с Linux напрямую, и среди инженеров-ветеранов.

Три наиболее частые причины почему участники согласились играть:

  1. Возможность проверить свои скиллы;

  2. Любовь к играм и соревнованиям;

  3. Любопытство.

Абсолютное большинство опрошенных было довольно событием. Все заполнившие форму участники хотели подобных игр в будущем, многие предложили возможные темы для будущих хакатонов.

  • Карт-бланш и бюджет на проведение новых хакатонов.

Руководство осталось в восторге от результатов. Сразу были заложены сроки на следующий ивент, а совсем недавно при планировании нового хакатона бюджет на призы был выделен легко и без давления.

Личное:

Что получил лично я? Опыт, море позитива и желание делать Хакатоны и дальше, в том числе и на коммерческой основе. У меня есть планы на новые игры и, определенно, есть ресурсы, чтобы их воплотить.

А еще я сформулировал и взял на вооружение...

Ключевые принципы организации хакатонов.

  • Знайте свою целевую аудиторию.

Хакатоны - для всех!Хакатоны - для всех!

Хороший хакатон сделан специально для ваших сотрудников и в соответствии с нуждами компании. И да, хакатоны могут быть не только для программистов. Они могут быть вообще для всех.

  • Агитируйте правильно.

[Спойлер]
Землю - крестьянам, игры - айтишникам!Землю - крестьянам, игры - айтишникам!

Коммуникация о предстоящей игре должна выделяться в общем потоке спама полезной и нужно почты по работе. Коммуникация должна создать интерес и немного его подогреть чуть позже. Здесь важно найти баланс. Если перегреете, то коммуникации по предстоящей игре станут восприниматься как настоящий спам и ваши усилия по брендированию пропадут. Если создадите интерес, а сама игра будет сильно позже тоже плохо, про вас успеют забыть.

  • Управляйте сложностью.

Игра не должна быть развлечением всего на пару часов, но и не должна быть чересчур сложной. Постарайтесь правильно оценить скилловость команды, чтобы каждый участник нашел себе место. В этом смысле идея с ростом сложности на каждом уровне работает великолепно.

[Спойлер]
У меня есть пароль, но нет логина. Зарепортить игровой баг или поискать еще?У меня есть пароль, но нет логина. Зарепортить игровой баг или поискать еще?
  • Позвольте играть не так как задумано.

Да, наша игра была задумана и ориентированна строго на индивидуальное участие без коллективного бессознательного. Однако, жизнь показала, что немало игроков объединялись в виртуальные команды. Очень ценно, когда сотрудники учатся строить горизонтальные команды (в иерархическом смысле). Этот навык обязательно пригодиться вашим инженерам, если вы строите нечто большее, чем классическую IT галеру в классическом негативном понимании этого термина аудиторией сами знаете какого сайта.

[Спойлер]
А Барсик один в игре ковыряется, посмотри на него!А Барсик один в игре ковыряется, посмотри на него!
  • Призы хорошо, но не главное.

[Спойлер]
А как же сектор приз?А как же сектор приз?

Не делайте акцент на призах. Я озвучивал их наличие, но не сообщал, что будет подарено победителям до самого последнего дня. Цель игры не в получении очередного красивого рюкзака, нового пауэрбанка или коллекционной готовальни. Цель участника - строить коммуникации, учиться новому и получать море фана от процесса.

Если дарите что-то, имеет смысл оформить призы в стиле игры. В идеале, создать внутренний бренд для таких игр с заделом на будущее. Очередной корпоративный рюкзак через год не будет ассоциировать с прекрасно проведенным временем, а будет просто от компании. Если же каждая деталь соответствует стилистике игры, то она запомнится и чисто на ассоциативном уровне будет работать гораздо лучше на создание связи между вещью и вашим корпоративным брендом.

Спасибо, что прочли. Увидимся в будущих публикациях!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru