Анализ исходных кодов, обзор последних статей. Ищем уязвимости в коде
Видео:
https://www.youtube.com/watch?v=t1VWaM6oS5k
Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с прошлогоднего выступления Константина Тяпочкина из profiscope.io на Data Fest 2020 с обзором актуальных инструментов и направлений исследований.
Тезисы от автора:
Под видео можно найти ссылки на полезные статьи.
Лайки, репосты, все дела 😏.
Видео:
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-моделях, их порче и лечению.
Под видео можно найти ссылки на полезные статьи.
Лайки, репосты, все дела 😏.
YouTube
Константин Тяпочкин: Анализ исходных кодов, обзор последних статей. Ищем уязвимости в коде
Data Fest Online 2020
Code Mining track https://ods.ai/tracks/code-mining-df2020
Спикер: Константин Тяпочкин, Senior researcher @profiscope.io.
В докладе приводится обзор последних разработок и новинок в области Code Mining в направлениях: суммаризации…
Code Mining track https://ods.ai/tracks/code-mining-df2020
Спикер: Константин Тяпочкин, Senior researcher @profiscope.io.
В докладе приводится обзор последних разработок и новинок в области Code Mining в направлениях: суммаризации…
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
Продолжаем пополнять #словарькодмайнера.
Атака на цепочку поставок, или в оригинале 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.
На эти выходные не #видоснавыходные, а #мегавидоснавыходные и даже больше!
Сегодня стартует очередной 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!
Всем код!
Па-бам! Только сегодня и только до 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 это может показаться спорным утверждением ;).
Будем думать дальше, как улучшить следующие движухи. За цикломатическую сложность!
Подведем итоги наших коротких соревнований на самый сложный проект.
За субботу было отправлено 38 проектов 🔥.
Какие проекты только не отправлялись, в том числе и популярные, такие как Tensorflow, Kubernetes, GRPC и даже вспомнили про Quake-III-Arena. Авторских решений было немного, поэтому мы подумываем о продолжении данного конкурса ;).
Рекорсменом на файл с самой высокой цикломатической сложностью стал проект GCC и "файлик" с кодом получивший оценку аж в 2229.
Самым сложным проектом (по средней цикломатической сложности) стал проект Биморф, с потрясающими исходниками, которые прям хочется вывести в принт.
Под занавес стрима ODS Halloween были выбраны победители получившие крутой мерч от ods.ai, с чем мы их и поздравляем!
Мы в очередной раз получили наглядное представление о том, что измерение инженерных метрик по коду бывает весьма полезным для ревью и нахождения частей кода требующих рефакторинга (хотя в отношение GCC это может показаться спорным утверждением ;).
Будем думать дальше, как улучшить следующие движухи. За цикломатическую сложность!
Code Mining
Курс про лицензирование ПО уже совсем близко! Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения. Встречаемся в Spatial Chat, пароль: odscoursefest1
01. Open Source Licensing Course. Lecture.pdf
2.6 MB
А вот и слайды приехали.
Code Mining
ВАЖНО! Лекция по лицензированию #2 переносится на 04.11 К сожалению, вторая лекция по лицензированию свободного ПО переносится на следующую неделю в связи с болезнью докладчика :/. ЗЫ: в связи с этим, несколько задерживается и выкладка слайдов с первого…
Вторая лекция курса по лицензированию (04.11)
Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения!
На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:
- разбор лицензионной чистоты на примере пакета requests;
- влияние лицензии на популярность проекта;
- что делать когда лицензия отсутствует;
- какие бывают кастомные нашлепки к лиц. соглашениям;
- как учитывать патенты;
- как учитывать окружения зависимостей;
- какие бывают случаи смены лицензии.
На заключительную (но не факт) лекцию мы оставляем:
- двойное лицензирование;
- тонкости и кейсы совместимости лицензий;
- совместимость с российским законодательством;
- обзор лицензионного ландшафта DS-проектов.
Всех ждем завтра в 19:00 в Spacial Chat ODS: live.ods.ai.
Пароль опубликуем завтра.
Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения!
На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:
- разбор лицензионной чистоты на примере пакета requests;
- влияние лицензии на популярность проекта;
- что делать когда лицензия отсутствует;
- какие бывают кастомные нашлепки к лиц. соглашениям;
- как учитывать патенты;
- как учитывать окружения зависимостей;
- какие бывают случаи смены лицензии.
На заключительную (но не факт) лекцию мы оставляем:
- двойное лицензирование;
- тонкости и кейсы совместимости лицензий;
- совместимость с российским законодательством;
- обзор лицензионного ландшафта DS-проектов.
Всех ждем завтра в 19:00 в Spacial Chat ODS: live.ods.ai.
Пароль опубликуем завтра.
Code Mining pinned «Вторая лекция курса по лицензированию (04.11) Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения! На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:…»
Code Mining
Вторая лекция курса по лицензированию (04.11) Ура, наконец мы возвращаемся к продолжению курса по лицензированию свободного программного обеспечения! На второй лекции мы разберем практику лицензионной совместимости (чистоты) и особенности лицензирования:…
Итак, сегодня, в 19:00 продолжаем курс.
Подключиться можно по ссылке: live.ods.ai.
Пароль
Или прям жмякать по ссылке: https://spatial.chat/s/ods?sp=Odscoursefest1
ЗЫ: мы понимаем, что вы подписывались про канал про ML4Code, скоро пойдут материалы не только про лицензии ;).
Подключиться можно по ссылке: 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 (Аррр! Рыыы!).
Тезисы от Артёма:
Лайки, репосты, все дела 😏.
Видео:
https://www.youtube.com/watch?v=agd9FcGbxN0
Продолжая традицию #видоснавыходные, предлагаем посмотреть видео с выступления Артёма Попова из JetBrains на Data Fest 2021 с рассказом про чудеса автокомплита на трансформерах в любимом отдельными сообществами языке R (Аррр! Рыыы!).
Тезисы от Артёма:
- мы сделали систему автодополнения кода для R на основе трансформеров, работающую локально на компьютере пользователя;
- какие трюки мы применяли для того, чтобы ускорить и улучшить нашу систему автодополнения;
- с какими трудностями мы столкнулись и как их преодолевали.
Лайки, репосты, все дела 😏.
YouTube
Артём Попов | Нейросетевое автодополнение для языка R
Data Fest Online 2021
Code Mining track https://ods.ai/tracks/code-mining-df2021
Спикер: Артём Попов, Data Scientist @JetBrains
Я расскажу про то, как:
- мы сделали систему автодополнения кода для R на основе трансформеров, работающую локально на компьютере…
Code Mining track https://ods.ai/tracks/code-mining-df2021
Спикер: Артём Попов, Data Scientist @JetBrains
Я расскажу про то, как:
- мы сделали систему автодополнения кода для R на основе трансформеров, работающую локально на компьютере…
Эзотерика в программировании и лайвкодинг
Помимо всяких объектно-ориентированных, процедурных, функциональных и т.п. языков программирования, существуют эзотерические языки программирования призванные исследовать границы возможностей разработки языков программирования, доказать концепцию или в качестве произведения программного искусства (или шуточки всякие).
Возможно вы сталкивались с такими как Brainfuck или LOLCODE.
Мы вот тут наткнулись на язычок Orca, с крутой командой разработки и годной философией :).
Orca написана на языке Uxntal, тоже интересный сорт человеко-читаемого ассемблера, который также заслуживает отдельного поста.
Зачем? Для лайвкодинга, например для музыкописателей, примерчик можно посмотреть на видео тут или тут.
Синтаксис кайфовенький, прям. Одна команда - одна буква:
#языкибываютразные
Помимо всяких объектно-ориентированных, процедурных, функциональных и т.п. языков программирования, существуют эзотерические языки программирования призванные исследовать границы возможностей разработки языков программирования, доказать концепцию или в качестве произведения программного искусства (или шуточки всякие).
Возможно вы сталкивались с такими как 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 млн. загрузок в неделю) пакетик
Неплохие мысли можно о безопасности фронтовых решений можно почитать тут, но это всё только начало.
Короче, Stay safe.
На нашем курсе по лицензированию свободного программного обеспечения нас спросили: "а что же бывает/делать, если авторы удалили зависимость, которой я пользуюсь в своем проекте?".
С одной стороны, многие (но далеко не все) пакетные индексы имеют зеркала и можно попытаться найти зависимость там. С другой стороны, вы можете вести свою систему хранения используемых артефактов разработки.
С другой стороны, если авторы удаленного пакета ничего не сказали про использование оставшихся копий, то с точки зрения лицензии ничего страшного не произойдет (главное, чтобы она была).
Тем не менее, вспоминаются новости, когда незначимые (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.
#языкибываютразные
Для тех, кто много работает с конфигами и иными мета-данными в форматах json, yaml и т. п. весьма себе может пригодиться язык CUE (сокращение от Configure Unify Execute).
Может применяться для type-чекинга, задания и проверки схемы данных, кодогенерации (Go, Protobuf), конвертации yaml<->json, поиска по структурам и скриптования всякого.
Можно решать всякие частные задачки, например валидация конфигураций этих ваших Кубернетесов.
Документация тута. Написан на Go, код можно посмотреть на Github.
#языкибываютразные
jq - легковесный json-процессор
Как быстро поработать с json не прибегая к написанию кода на python (ну например)?
https://stedolan.github.io/jq/
Обалденная тула, которая экономит кучу времени людям работающим со слабоструктурированными машиночитаемыми данными.
Простейший язык запросов в командной строке (хоть к нему нужно и привыкнуть), с хорошей документаицей.
Те, кто работал с
Пара примеров, и вперед, упрощать себе жизнь!
Выбор по ключу
Да, есть онлайн-чекалка.
Добавим ещё полезную обучалку.
#языкибываютразные
Как быстро поработать с 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/
Программные ошибки, вызванные неопределённым поведением, стоили человечеству миллиарды долларов и миллионы человеко-часов, потраченных на их поиск и исправление. Так зачем же создатели языков программирования так упорно оставляют место для неопределённостей? В этой лекции мы поговорим о тех выгодах, которые языкам даёт возможность «отстрелить себе ногу».
Слушателям достаточно иметь базовые представления о программировании на С++.
С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, есть и поменьше, но не менее интересные.
Короче, если вы не студент, теперь можно.
Пруф.
Из интересной статистики, за всё время существования программы (а она идет с 2005 года), участники написали более 38 млн. строк кода для 715 open source организаций. Т. е. уже больше чем строк в Линукс-ядре. Короче, есть что проанализировать ;).
Каждый год поддерживается более тысячи проектов, вот например проекты 2021 года. Тут и проекты Python Software Foundation и Apache Foundation, есть и поменьше, но не менее интересные.
Короче, если вы не студент, теперь можно.
AWK
Мы уже упоминали
Многие относятся к AWK как к тулзе, но немногие знают, что на нем можно прям полноценно писать программы. Весь синтаксис описан в man pages, с огромным количеством примеров и пояснений. Открываешь и пишешь.
Первая версия была разработана ещё в далеком 1977 году небезызвестными создателями: Aho, Weinberger и Kernighan. Да, есть ещё GNU версия, которая называется GAWK, но по сути различия в реализации минимальные.
Что важно знать. Если вам нужно обработать текстовый файл, то далеко не всегда нужно хвататься на
Намного быстрее написать one-liner на awk. Умение в синтаксис тренируется за пару вечеров, а потом экономит вам килограммы времени!
Кто не готов читать маны :/, то неплохие статьи есть на хабре, opennet и особенно здесь, по-английски.
#языкибываютразные
Мы уже упоминали
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 может помочь в анализе текстов лицензий? Обсудим в комментариях?
И завершая неделю рубрики #языкибываютразные, хотим познакомить вас с предметно-ориентированным языком (DSL), который может заинтересовать тех, кто наводит мосты между юридической формалистикой и миром программирования.
https://catala-lang.org/
Несмотря на относительно смешное, особенно в контексте применения, название, язык назван в честь профессора Пьера Катала, пионера легалтеха в конце 60х годов.
Возможности:
- унифицировать определения;
- проводить формализацию и проверку законов;
- производить соответствующие расчеты и проверку логики.
Язык фундаментален, разрабатывается группой специалистов из French National Research Institute for Computer Science (Inria) и Microsoft Research. Французские корни повсюду, в примерах, в документации, в текстах коммитов, но не сильно мешает восприятию.
Реализация: OCaml & Python.
Github | Syntax | Paper
ЗЫ: вот мы тут задумались, а насколько Catala может помочь в анализе текстов лицензий? Обсудим в комментариях?