Code Mining
896 subscribers
80 photos
4 videos
8 files
156 links
ML4Code во всей красе, анализ кода и артефактов: лицензии, уязвимости, процессы. Комментарии к актуальным и не очень новостям, аналитика, эпизодический авторский контент, мемасики.

При поддержке: ods.ai, @codescoring
По вопросам — @alsmirn
Download Telegram
Code Mining pinned «Курс про лицензирование ПО уже совсем близко! Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения. Встречаемся в Spatial Chat, пароль: odscoursefest1»
И мы планируем начинать через 10 минут.

Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Code Mining
И мы планируем начинать через 10 минут. Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Всем спасибо за участие! Для начала вышло неплохо, будем продолжать!

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

Видео:
https://www.youtube.com/watch?v=t1VWaM6oS5k

Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с прошлогоднего выступления Константина Тяпочкина из profiscope.io на Data Fest 2020 с обзором актуальных инструментов и направлений исследований.

Тезисы от автора:
В докладе приводится обзор последних разработок и новинок в области Code Mining в направлениях: суммаризации и классификации кода (Code2vec, code2seq и  PathPair2Vec подходы), нахождение уязвимостей в коде (Commit2vec, CC2vec, AST-based, Token-embeddings-CNN-based подходы), обзор свеженького CodeBERT, а также порассуждаем об уязвимостях в ML-моделях, их порче и лечению.


Под видео можно найти ссылки на полезные статьи.

Лайки, репосты, все дела 😏.
Supply Chain Attack

Продолжаем пополнять #словарькодмайнера.

Атака на цепочку поставок, или в оригинале Supply Chain Attack — один из самых актуальных и популярных в последнее время у взломщиков и других «русских хакеров» способов получения доступа на сервера своих жертв.

Нашумевший взлом SolarWinds, затронувший сотни тысяч клиентов по всему миру, включая крупные корпорации и правительственные агентства США — тоже был реализован через Supply Chain Attack. Очень громкими были случаи внедрения в цепочку поставок хардварных криптовалютных кошельков несколько лет назад. По факту попытки взломов таким путём происходят каждый день и, судя по всему, их будет только больше.

Уточним, Supply Chain Attack — это и внедрения в цепи поставки софта, и вполне себе физические внедрения, когда при транспортировке железки с конвейера до потребителя с ней могут сделать что-то нехорошее.

Попробуем на пальцах объяснить, как это работает.

Supply Chain Attack — это когда доступ к целевой системе атакующий получает не напрямую, а через внедрение в какой-либо используемый организацией продукт или компонент, которому она доверяет. При этом поставщик продукта может и не знать о проблеме, распространяя зловредный софт своим клиентам.

Допустим, ваша компания очень заботится о безопасности своей сети и серверов. Но с огромной вероятностью она использует какой-нибудь существующий внешний программный продукт, для простоты возьмём CRM. Такие продукты требуют регулярных обновлений, но что интереснее — они зависят от других компонентов. Например, какой-нибудь open source библиотеки, либо ещё какого-то коммерческого продукта. В этом случае злоумышленнику может быть проще внедриться в ту самую библиотеку или менее защищенный коммерческий продукт и подождать, когда цепочка поставок сама сделает своё дело.

Частным случаем таких атак являются Dependency Confusion Breach и Typosquatting Attack. Когда атакующий публикует в популярные индексы зараженные библиотеки, рассчитывая, что программист опечатается при установке компонента, либо система сборки возьмёт библиотеку из индекса вместо локального пакета.

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

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

Для искушенных советуем изучить относительно свежие рекомендации от Cybersecurity and Infrastructure Security Agency при поддержке NIST: https://www.cisa.gov/sites/default/files/publications/defending_against_software_supply_chain_attacks_508_1.pdf
ВАЖНО! Лекция по лицензированию #2 переносится на 04.11

К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/.

ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого занятия. Всё будет.
Code Mining pinned «ВАЖНО! Лекция по лицензированию #2 переносится на 04.11 К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/. ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого…»
Data Halloween'21

Н
а эти выходные не #видоснавыходные, а #мегавидоснавыходные и даже больше!

Сегодня стартует очередной Data Halloween, на который запланировано много событий, за которыми можно будет как последить в реальном времени на ютуб-стриме, так и понетворкаться в нетворкинг-комнатах в Spacial Chat.

От нашей CodeMining команды будет движж ScaryCode, о нем мы напишем сразу после завтрашнего анонса Диктатором ODS ;).

Ещё раз, расписание тут: https://ods.ai/events/halloween2021.

Старт сегодня в 12:00.
Scary Code Competition

Па-бам! Только сегодня и только до 17 часов (!) вы можете поучаствовать в движе на самый ужасный код, Scary Code Competition.

В чем фишка?

1. Мы сделали измерялку цикломатической сложности https://scarycode.codescoring.com/.

2. Вы можете предложить любой репозиторий на анализ, желательно свой ;). Нужно просто указать ссылку.

3. Почту указывать необязательно, но если хотите славы, можете указать.

4. Залить нужно до 17 часов, а в 18 часов, на ODS стриме мы заревьювим этот код, попытаемся сдержать кровавые слезы и выбрать лучших!

5. Победители получают мерч ODS!

Всем код!
Scary Code Competition Results

Подведем итоги наших коротких соревнований на самый сложный проект.

За субботу было отправлено 38 проектов 🔥.

Какие проекты только не отправлялись, в том числе и популярные, такие как Tensorflow, Kubernetes, GRPC и даже вспомнили про Quake-III-Arena. Авторских решений было немного, поэтому мы подумываем о продолжении данного конкурса ;).

Рекорсменом на файл с самой высокой цикломатической сложностью стал проект GCC и "файлик" с кодом получивший оценку аж в 2229.

Самым сложным проектом (по средней цикломатической сложности) стал проект Биморф, с потрясающими исходниками, которые прям хочется вывести в принт.

Под занавес стрима ODS Halloween были выбраны победители получившие крутой мерч от ods.ai, с чем мы их и поздравляем!

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

Будем думать дальше, как улучшить следующие движухи. За цикломатическую сложность!
Code Mining
ВАЖНО! Лекция по лицензированию #2 переносится на 04.11 К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/. ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого…
Вторая лекция курса по лицензированию (04.11)

Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения!

На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:

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

На заключительную (но не факт) лекцию мы оставляем:
- двойное лицензирование;
- тонкости и кейсы совместимости лицензий;
- совместимость с российским законодательством;
- обзор лицензионного ландшафта DS-проектов.

Всех ждем завтра в 19:00 в Spacial Chat ODS: live.ods.ai.
Пароль опубликуем завтра.
Code Mining pinned «Вторая лекция курса по лицензированию (04.11) Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения! На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:…»
Code Mining
Вторая лекция курса по лицензированию (04.11) Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения! На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:…
Итак, сегодня, в 19:00 продолжаем курс.

Подключиться можно по ссылке: live.ods.ai.
Пароль Odscoursefest1.

Или прям жмякать по ссылке: https://spatial.chat/s/ods?sp=Odscoursefest1

ЗЫ: мы понимаем, что вы подписывались про канал про ML4Code, скоро пойдут материалы не только про лицензии ;).
Нейросетевое автодополнение для языка R

Видео:
https://www.youtube.com/watch?v=agd9FcGbxN0

Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с выступления Артёма Попова из JetBrains на Data Fest 2021 с рассказом про чудеса автокомплита на трансформерах в любимом отдельными сообществами языке R (Аррр! Рыыы!).

Тезисы от Артёма:
 - мы сделали систему автодополнения кода для R на основе трансформеров, работающую локально на компьютере пользователя;
- какие трюки мы применяли для того, чтобы ускорить и улучшить нашу систему автодополнения;
- с какими трудностями мы столкнулись и как их преодолевали.


Лайки, репосты, все дела 😏.
Эзотерика в программировании и лайвкодинг

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

Возможно вы сталкивались с такими как Brainfuck или LOLCODE.

Мы вот тут наткнулись на язычок Orca, с крутой командой разработки и годной философией :).

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

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

Синтаксис кайфовенький, прям. Одна команда - одна буква:
A add(a b): Outputs sum of inputs.
B subtract(a b): Outputs difference of inputs.
C clock(rate mod): Outputs modulo of frame.
D delay(rate mod): Bangs on modulo of frame.

Ну няка же, да?

#языкибываютразные
для атмосферки.
Наброс про безопасную разработку

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

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

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

Тем не менее, вспоминаются новости, когда незначимые (11 строк кода, Карл!) npm пакета удалились авторами и у всего мира попадали билды. И весь разработческий мир даже на секундочку задумался о том, что же они потребляют из Open Source и зачем это всё.

Мы уже писали про попытки сделать индексы критичности проектов, но в широкие массы практика проверки сторонних пакетов пока не заходит. Кто-то слышал про SCA (Software Composition Analysis), но пока петух не клюнет.

Вот и ещё шикарная новость из прошлого месяца: довольно используемый (7 млн. загрузок в неделю) пакетик ua-parser-js был взломан. Тредик на Github и Reddit.

Неплохие мысли можно о безопасности фронтовых решений можно почитать тут, но это всё только начало.

Короче, Stay safe.
Cue Data Validation Language

Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьма себе может пригодиться язык CUE (сокращение от Configure Unify Execute).

Может применяться для type-чекинга, задания и проверки схемы данных, кодогенерации (Go, Protobuf), конвертации yaml<->json, поиска по структурам и скриптования всякого.

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

Документация тута. Написан на Go, код можно посмотреть на Github.

#языкибываютразные
jq - легковесный json-процессор

Как быстро поработать с json не прибегая к написанию кода на python (ну например)?

https://stedolan.github.io/jq/

Обалденная тула, которая экономит кучу времени людям работающим со слабоструктурированными машиночитаемыми данными.

Простейший язык запросов в командной строке (хоть к нему нужно и привыкнуть), с хорошей документаицей.

Те, кто работал с sed или awk должны особенно проникнуться ;).

Пара примеров, и вперед, упрощать себе жизнь!

Выбор по ключу
jq '.foo'

Input {"foo": 42, "bar": "less interesting data"}
Output 42

Объединение списков
jq '.a + .b'

Input {"a": [1,2], "b": [3,4]}
Output [1,2,3,4]

Можно многое, короче.

Да, есть онлайн-чекалка.
Добавим ещё полезную обучалку.

#языкибываютразные
Неопределённое поведение: зачем создатели языков заставляют программистов страдать

Сomputer Science Center проводит открытую лекцию Макса Казанцева, Senior Compiler Engineer в Azul Systems.

Лекция пройдёт 20 ноября в смешанном формате: онлайн и очно в НГУ — Новосибирск, ул. Пирогова д. 1, ауд. 2128. Начало в 16:20 НСК (12:20 МСК).

Регистрация: https://compscicenter.timepad.ru/event/1838918/

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

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