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

При поддержке: ods.ai, @codescoring
По вопросам — @alsmirn
Download Telegram
ВАЖНО! Лекция по лицензированию #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/

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

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

Пруф.

Из интересной статистики, за всё время существования программы (а она идет с 2005 года), участники написали более 38 млн. строк кода для 715 open source организаций. Т. е. уже больше чем строк в Линукс-ядре. Короче, есть что проанализировать ;).

Каждый год поддерживается более тысячи проектов, вот например проекты 2021 года. Тут и проекты Python Software Foundation и Apache Foundation, есть и поменьше, но не менее интересные.

Короче, если вы не студент, теперь можно.
AWK

Мы уже упоминали awk и sed, так вот, сегодня про первый ;).

Многие относятся к AWK как к тулзе, но немногие знают, что на нем можно прям полноценно писать программы. Весь синтаксис описан в man pages, с огромным количеством примеров и пояснений. Открываешь и пишешь.

Первая версия была разработана ещё в далеком 1977 году небезызвестными создателями: Aho, Weinberger и Kernighan. Да, есть ещё GNU версия, которая называется GAWK, но по сути различия в реализации минимальные.

Что важно знать. Если вам нужно обработать текстовый файл, то далеко не всегда нужно хвататься на python или другие языки, кажущиеся весьма подходящими и для простых задач. Также удобно использовать awk, как и sed в командной строке при соединении в pipe.

Намного быстрее написать one-liner на awk. Умение в синтаксис тренируется за пару вечеров, а потом экономит вам килограммы времени!

Кто не готов читать маны :/, то неплохие статьи есть на хабре, opennet и особенно здесь, по-английски.

#языкибываютразные
Catala - A Programming Language for the Law

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

https://catala-lang.org/

Несмотря на относительно смешное, особенно в контексте применения, название, язык назван в честь профессора Пьера Катала, пионера легалтеха в конце 60х годов.

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

Язык фундаментален, разрабатывается группой специалистов из French National Research Institute for Computer Science (Inria) и Microsoft Research. Французские корни повсюду, в примерах, в документации, в текстах коммитов, но не сильно мешает восприятию.

Реализация: OCaml & Python.

Github | Syntax | Paper

ЗЫ: вот мы тут задумались, а насколько Catala может помочь в анализе текстов лицензий? Обсудим в комментариях?
T[HR]eads: извлекаем инсайды из переписок технарей и рекрутеров

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

Видео: https://www.youtube.com/watch?v=69aXIR1g-LM

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

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


Лайки, репосты, все дела 😏.
Code Mining
Итак, сегодня, в 19:00 продолжаем курс. Подключиться можно по ссылке: live.ods.ai. Пароль Odscoursefest1. Или прям жмякать по ссылке: https://spatial.chat/s/ods?sp=Odscoursefest1 ЗЫ: мы понимаем, что вы подписывались про канал про ML4Code, скоро пойдут…
02. Open Source Licensing Course. Lecture.pdf
1.8 MB
Делимся слайдами со второй лекции по лицензированию.

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

Предварительно-заключительная лекция будет 18 ноября. До встречи!