fa
Feedback
Code Mining

Code Mining

رفتن به کانال در Telegram

ML4Code во всей красе, анализ кода и артефактов: лицензии, уязвимости, процессы. Комментарии к актуальным и не очень новостям, аналитика, эпизодический авторский контент, мемасики. При поддержке: ods.ai, @codescoring По вопросам — @alsmirn

نمایش بیشتر
838
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+17 روز
+230 روز
آرشیو پست ها
jq - легковесный json-процессор Как быстро поработать с json не прибегая к написанию кода на python (ну например)? https://st
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]

Можно многое, короче. Да, есть онлайн-чекалка. Добавим ещё полезную обучалку. #языкибываютразные

Cue Data Validation Language Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьм
Cue Data Validation Language Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьма себе может пригодиться язык CUE (сокращение от Configure Unify Execute). Может применяться для type-чекинга, задания и проверки схемы данных, кодогенерации (Go, Protobuf), конвертации yaml<->json, поиска по структурам и скриптования всякого. Можно решать всякие частные задачки, например валидация конфигураций этих ваших Кубернетесов. Документация тута. Написан на Go, код можно посмотреть на Github. #языкибываютразные

Наброс про безопасную разработку На нашем курсе по лицензированию свободного программного обеспечения нас спросили: "а что же бывает/делать, если авторы удалили зависимость, которой я пользуюсь в своем проекте?". С одной стороны, многие (но далеко не все) пакетные индексы имеют зеркала и можно попытаться найти зависимость там. С другой стороны, вы можете вести свою систему хранения используемых артефактов разработки. С другой стороны, если авторы удаленного пакета ничего не сказали про использование оставшихся копий, то с точки зрения лицензии ничего страшного не произойдет (главное, чтобы она была). Тем не менее, вспоминаются новости, когда незначимые (11 строк кода, Карл!) npm пакета удалились авторами и у всего мира попадали билды. И весь разработческий мир даже на секундочку задумался о том, что же они потребляют из Open Source и зачем это всё. Мы уже писали про попытки сделать индексы критичности проектов, но в широкие массы практика проверки сторонних пакетов пока не заходит. Кто-то слышал про SCA (Software Composition Analysis), но пока петух не клюнет. Вот и ещё шикарная новость из прошлого месяца: довольно используемый (7 млн. загрузок в неделю) пакетик ua-parser-js был взломан. Тредик на Github и Reddit. Неплохие мысли можно о безопасности фронтовых решений можно почитать тут, но это всё только начало. Короче, Stay safe.

для атмосферки.
для атмосферки.

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

Ну няка же, да? #языкибываютразные

Нейросетевое автодополнение для языка R Видео: https://www.youtube.com/watch?v=agd9FcGbxN0 Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с выступления Артёма Попова из JetBrains на Data Fest 2021 с рассказом про чудеса автокомплита на трансформерах в любимом отдельными сообществами языке R (Аррр! Рыыы!). Тезисы от Артёма:
 - мы сделали систему автодополнения кода для R на основе трансформеров, работающую локально на компьютере пользователя;
 - какие трюки мы применяли для того, чтобы ускорить и улучшить нашу систему автодополнения;
 - с какими трудностями мы столкнулись и как их преодолевали.
Лайки, репосты, все дела 😏.

Итак, сегодня, в 19:00 продолжаем курс. Подключиться можно по ссылке: live.ods.ai. Пароль Odscoursefest1. Или прям жмякать по ссылке: https://spatial.chat/s/ods?sp=Odscoursefest1 ЗЫ: мы понимаем, что вы подписывались про канал про ML4Code, скоро пойдут материалы не только про лицензии ;).

Вторая лекция курса по лицензированию (04.11) Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения! На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования: - разбор лицензионной чистоты на примере пакета requests; - влияние лицензии на популярность проекта; - что делать когда лицензия отсутствует; - какие бывают кастомные нашлепки к лиц. соглашениям; - как учитывать патенты; - как учитывать окружения зависимостей; - какие бывают случаи смены лицензии. На заключительную (но не факт) лекцию мы оставляем: - двойное лицензирование; - тонкости и кейсы совместимости лицензий; - совместимость с российским законодательством; - обзор лицензионного ландшафта DS-проектов. Всех ждем завтра в 19:00 в Spacial Chat ODS: live.ods.ai. Пароль опубликуем завтра.

А вот и слайды приехали.

Scary Code Competition Results Подведем итоги наших коротких соревнований на самый сложный проект. За субботу было отправлено 38 проектов 🔥. Какие проекты только не отправлялись, в том числе и популярные, такие как Tensorflow, Kubernetes, GRPC и даже вспомнили про Quake-III-Arena. Авторских решений было немного, поэтому мы подумываем о продолжении данного конкурса ;). Рекорсменом на файл с самой высокой цикломатической сложностью стал проект GCC и "файлик" с кодом получивший оценку аж в 2229. Самым сложным проектом (по средней цикломатической сложности) стал проект Биморф, с потрясающими исходниками, которые прям хочется вывести в принт. Под занавес стрима ODS Halloween были выбраны победители получившие крутой мерч от ods.ai, с чем мы их и поздравляем! Мы в очередной раз получили наглядное представление о том, что измерение инженерных метрик по коду бывает весьма полезным для ревью и нахождения частей кода требующих рефакторинга (хотя в отношение GCC это может показаться спорным утверждением ;). Будем думать дальше, как улучшить следующие движухи. За цикломатическую сложность!

Scary Code Competition Па-бам! Только сегодня и только до 17 часов (!) вы можете поучаствовать в движе на самый ужасный код,
Scary Code Competition Па-бам! Только сегодня и только до 17 часов (!) вы можете поучаствовать в движе на самый ужасный код, Scary Code Competition. В чем фишка? 1. Мы сделали измерялку цикломатической сложности https://scarycode.codescoring.com/. 2. Вы можете предложить любой репозиторий на анализ, желательно свой ;). Нужно просто указать ссылку. 3. Почту указывать необязательно, но если хотите славы, можете указать. 4. Залить нужно до 17 часов, а в 18 часов, на ODS стриме мы заревьювим этот код, попытаемся сдержать кровавые слезы и выбрать лучших! 5. Победители получают мерч ODS! Всем код!

Data Halloween'21 На эти выходные не #видоснавыходные, а #мегавидоснавыходные и даже больше! Сегодня стартует очередной Data Halloween, на который запланировано много событий, за которыми можно будет как последить в реальном времени на ютуб-стриме, так и понетворкаться в нетворкинг-комнатах в Spacial Chat. От нашей CodeMining команды будет движж ScaryCode, о нем мы напишем сразу после завтрашнего анонса Диктатором ODS ;). Ещё раз, расписание тут: https://ods.ai/events/halloween2021. Старт сегодня в 12:00.

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

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

Анализ исходных кодов, обзор последних статей. Ищем уязвимости в коде Видео: 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-моделях, их порче и лечению.
Под видео можно найти ссылки на полезные статьи. Лайки, репосты, все дела 😏.

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

И мы планируем начинать через 10 минут. Ещё раз креды: Spatial Chat, пароль: odscoursefest1

Курс про лицензирование ПО уже совсем близко! Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения. Встречаемся в Spatial Chat, пароль: odscoursefest1

Страничка курса про лицензирование, реакшены приветствуются ;). Ну и до встречи в четверг.

Реанонс Курса по лицензированию Open Source Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-сов
Реанонс Курса по лицензированию Open Source Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-совсем рядом. Дата: 21.10.21 (четверг). Время: 19:00, вечером. Напомним, что курс планируется из трех еженедельных встреч, по 1,5-2 часа. В ближайшую встречу, 21 октября, Алексей Смирнов, расскажет про особенности лицензирования СПО: - почему умение разбираться в лицензиях относится к безопасной разработке; - какие бывают виды лицензий и что же они ограничивают; - как воспринимать (читать) отдельные пункты лицензионных соглашений; - про транзитивные зависимости и вероятные проблемы; - патентные особенности лицензий; - какую лицензию выбрать для своего DS/ML проекта? - как обеспечить лицензионную совместимость зависимостей: если вы выбрали лицензию X, почему нельзя выбирать компоненты с лицензией Y? Максимально с примерами и живым обсуждением. Встреча пройдет в SpacialChat ODS: live.ods.ai. Креды - ближе к событию. Если есть вопросы, их можно задать в комментариях ;).