В прошлой части мы познакомились с Abstract Syntax Tree
(AST
).
В этой займёмся его сборкой в полезных объёмах и генерации конечного кода.
Маркетолог
Большой код. Учимся генерировать F#-исходники с помощью Fantomas. Часть 1. Знакомимся с содержимым синтаксического древа
В этом многословном, но сравнительно простом цикле я дам введение в генерацию F#-кода.
Как правило, для этих целей в сообществе рекомендуют использовать Myriad
, что, по-моему, не совсем правильно, но на его примере можно увидеть, что тема кодогенерации очень объёмна.
Однако я хочу сосредоточиться лишь на очень маленькой области кустарной кодогенерации по месту требования. Её гораздо легче освоить, в отличие от энтерпрайз-монстров, и уж тем более починить или захакать при поддержке. Так что данный цикл будет полезен в первую очередь для работы малой организованной группой. Обеспечение кодогенерации в крупных долгоживущих проектах я оставлю за скобками.
Использование табличных тестов в go для тестирования запросов к БД + testify
При написании бэкенда работа с базой данных зачастую составляет большую часть кода в проекте. Но несмотря на то, что в го стандартная библиотека для тестирования довольно удобная, она требует написания большого количества кода. Поэтому иногда вместо того, чтобы писать тесты разработчики могут ограничить тестирование при помощи какого-либо клиента (например, при помощи tableplus или другого sql-клиента), либо тестируют уже конечные точки API используя postman. С одной стороны, это, конечно может быть быстрее для первого тестирования, но с другой — такие методы не обеспечивают должного покрытия тестами приложения.
Решить проблему с написанием большого количества кода может помочь библиотека testify, которая позволяет писать тесты более выразительно и с меньшим количеством кода. В testify есть пакеты require и assert, в первом случае выполнение теста будет прервано, а во втором — продолжено. В статье будет использоваться пакет assert. Для облегчения понимания кода можно использовать табличное тестирование, которое поможет определить, какие случаи проверяются даже при беглом взгляде на код.
Машинное обучение помогает классическому моделированию квантовых систем
Используя «классические тени», обычные компьютеры могут превзойти квантовые компьютеры в сложной задаче понимания квантового поведения.
Понять квантовую вселенную — задача непростая. Интуитивные представления о пространстве и времени терпят крах в крошечной сфере субатомной физики, допуская поведение, которое нашему макрочувству кажется совершенно странным.
Квантовые компьютеры должны позволить нам использовать эту странность. Такие машины теоретически могли бы исследовать молекулярные взаимодействия для создания новых лекарств и материалов. Но, возможно, самое важное то, что сам мир построен на этой квантовой вселенной — если мы хотим понять, как она работает, нам, вероятно, понадобятся квантовые инструменты.
Адаптивный дизайн приложений на Gtk
Основные рабочие среды из мира GNU/Linux — это GNOME и KDE Plasma. До недавнего времени их можно было видеть только на десктопах, но сейчас эти окружения можно заметить и на мобильных девайсах. Эти девайсы не слишком распространены. Десктопный Linux встречается гораздо чаще.
Для того чтобы внедриться в мир адаптивных интерфейсов, в сообществе KDE был создан целый фреймворк под названием Kirigami. О нем можно прочитать в этой статье.
Разработчики из сообщества GNOME Foundation пошли похожим путем, создав библиотеку виджетов libadwaita в дополнение к Gtk4. До нее там тоже были некоторые способы создания адаптивных интерфейсов. Например, при помощи библиотеки libhandy. Но речь пойдет не о них.
В этой статье я хочу рассказать о том, что привнесла в создание адаптивных интерфейсов libadwaita. Для примера я приведу код из нескольких приложений, среди которых есть приложения собственной разработки.
Кастомизация инфраструктуры облачных вычислений с помощью Kubernetes
В современном мире облачные вычисления стали неотъемлемой частью IT-инфраструктуры многих компаний и играют решающую роль в разработке, развертывании и масштабировании приложений. Однако чтобы добиться максимальной эффективности и гибкости, необходимо настроить инфраструктуру под свои цели. В этой статье мы рассмотрим, как с использованием Kubernetes можно полностью автоматизировать стандартные решения и добиться высокой степени адаптации своих бизнес-задач в облачной среде.
Шифровальщик Робин Гуда или как HardBit объявил войну страховым компаниям
Приветствую! Сегодня поговорим о вымогателе HardBit, который уже достаточно долгое время кошмарит всё мировое сообщество. Появившись в октябре прошлого года, вредонос уже успел нанести огромный ущерб мировому сообществу. Преступники, стоящие за этим вирусом, отличаются своим нетипичным подходом к делу. Они лично связываются с каждой жертвой и определяют сумму выкупа. Примечательно и то, что если у жертвы имеется страховка, то злоумышленники требуют исключительно ту сумму, на которую рассчитана страховка.
Ранее вредонос не проявлял активности на территории стран СНГ, однако сейчас начал своё форсированное распространение. Так, недавно компания Solar JSCON зафиксировала несколько обращений российских заказчиков, пострадавших от HardBit. Информация о пострадавших остается конфиденциальной. Но Солар сообщает, что требуемый выкуп составляет около 25,000$.
Возвращение ботнета Mirai: насколько серьезна эта угроза?
Приветствую! Сегодня речь пойдет об одной очень интересной угрозе, которая способна действовать максимально скрытно при своей чудовищной эффективности. И имя этой угрозы — Mirai. С японского это слово переводится как «будущее» и создатели отнюдь не ошиблись, назвав этот ботнет именно так. Ведь для крупных мировых компаний, порталов и серверов Мираи — это полноценный специалист по лишению будущего.
Основной инструментарий для разработки приложений на Gtk
Фреймворк Gtk пользуется достаточно большой популярностью среди разработчиков приложений. И вполне очевидно, что для популярного фреймворка должны существовать удобные и надежные инструменты разработки. Так и есть.
В этой статье хотелось бы рассказать о некоторых инструментах, которые я использую для создания приложений на Gtk. Рассматривать мы их будем на примере приложения Zodiac.
Древний вредонос снова набирает обороты — инжектор Smoke Loader и Wifi-Recon. Часть 1
Приветствую вас, читатели. Сегодня речь пойдет об очень древнем вирусе, который не только остается активным по сегодняшний день, но и постоянно совершенствуется, используя всё новые и новые методы компрометации как обычных пользователей, так и крупных компаний. И имя этому вредоносу — Smoke Loader.
Smoke Loader — это старинный дроппер, основной функцией которого является исключительно загрузка и запуск полезной нагрузки на устройстве жертвы. Более новые версии этого вредоноса способны выполнять некоторые функции стиллера и воровать конфиденциальные данные пользователей.
И совсем недавно специалистами из SecurityWorks (крупная компания, занимающаяся исследованиями в области кибербезопасности) был обнаружен новый тип полезной нагрузки Smoke Loader’a, который позволяет злоумышленникам получить детальную информацию о геолокации зараженного устройства.
История систем распознавания лиц: от Вуди Бледсо до нейронной сети Косински
К сожалению, как показывает мировая история, война — самый эффективный двигатель прогресса. Направляя неограниченное количество ресурсов на разработку новых технических устройств, она выводит технологические и исследовательские изыскания воюющих стран на предел их возможностей.
Война заканчивается, а разработки остаются. Как и многие пытливые умы, некогда служившие своей родине. Все они оказываются окутаны скучной суетой мирного времени.
Их стремление, словно пар закипающего чайника, отчаянно стремится выбраться наружу. Голова, некогда создававшая изощрённые орудия убийства, ищет новую точку приложения своих гениальных способностей.
Технология распознавания лиц была одной из таких точек. Она была продуктом своего времени. Продуктом, который не оформился в законченную технологию тогда, но задал направление для всех тех, кто был после.
Приложение для просмотра текущей погоды на Vala
За последнее время было создано огромное количество самых разных библиотек на все случаи жизни. Хочешь воспроизводить музыку с YouTube? Не вопрос! Желаешь отправить запрос и получить ответ от нейронной сети? Да пожалуйста!
Всё это — колоссальное подспорье для любого программиста. Ведь не нужно с нуля писать огромную портянку кода, а можно взять уже готовое решение и подключить его к своему проекту.
Особенно внушительным числом библиотек может похвастаться Python. Но речь пойдет не о нем. В этой статье мы поговорим о создании простого приложения для просмотра текущей погоды. Приложение показывает название населенного пункта, текущую температуру, состояние неба, направление и скорость ветра, видимость и давление.
Для доступа к данным о погоде в приложении используется библиотека gweather. Для определения геолокации была задействована библиотека geoclue.
В качестве языка программирования был выбран Vala. Большинство моих проектов написаны именно на этом языке, и в этом случае я не стал делать исключения.
Чтобы двигаться быстро, решатели квантовых лабиринтов должны забыть о прошлом
Квантовые алгоритмы могут находить выход из лабиринтов экспоненциально быстрее, чем классические, за счет забывания путей, по которым они шли. Новый результат предполагает, что компромисс может быть неизбежен.
Представьте, что вы посещаете лабиринт с друзьями. Вы вышли из выхода вскоре после входа и ждёте несколько часов, прежде чем появятся ваши друзья. Естественно, они спрашивают о пути, по которому вы шли — вы ведь можете проследить свои шаги и показать им путь, верно?
Неверно в мире, где правят странные законы квантовой физики. Двадцать лет назад исследователи квантовых вычислений разработали алгоритм, который использовал эти законы для прохождения опредёленного вида математического лабиринта намного быстрее, чем любой алгоритм, работающий на обычном классическом компьютере. Но за это ускорение приходится платить: быстрый квантовый алгоритм находит выход, но понятия не имеет, как он туда попал.
Исследователи давно задавались вопросом, неизбежен ли этот компромисс. Неужели невозможно быстро найти выход, не забыв дорогу?
Очередная уязвимость или как опасный дроппер Batloader распространяется через поисковые системы и рекламу
Приветствую, читатели. Сегодня поговорим об очень актуальной на данный момент проблеме — отравление поисковой выдачи и распространение вредоносов через Google Ads. Разберемся на конкретном примере, почему, когда вы ищете какую-то популярную утилиту, часто первым результатом в поисковике является не её официальный сайт, а подделка, содержащая вредоносы.
SEO poisoning — это техника злоупотребления поисковой оптимизацией (SEO) с целью манипулирования поисковыми результатами и привлечения пользователей к вредоносным или мошенническим веб-сайтам.
Злоумышленники создают и оптимизируют веб-страницы таким образом, чтобы они получали высокие позиции в поисковых системах для определённых запросов.
SEO-отравление может включать в себя такие методы, как внедрение скрытого текста или ссылок на веб-страницы, создание большого количества низкокачественных ссылок на вредоносные сайты, использование перенаправлений или взломанных сайтов для зманивания пользователей на вредоносные страницы, а также другие методы манипуляции поисковыми алгоритмами.
Базы данных и начало работы с SQL
Эта статья имеет широкий спектр применения и будет актуальна для тех, кто хочет больше узнать о том, как управляются и обрабатываются данные в современном информационном мире, и особенно для людей, которые интересуются программированием и планируют строить карьеру в IT.
Статья предоставит читателю обзор основ баз данных и систем управления базами данных, а также поможет начать начать работу с языком структурированных запросов SQL.
FormBook: мультифункциональный инфостиллер и как его распространяют через офисные документы
Приветствую, дорогие друзья. Так уж вышло, что практически все популярные вредоносы, имеющие какую-либо связь с инжектором DotRunPex, были проанализированы. Кроме одного — FormBook. Вдобавок к этому количество сэмплов этого зловреда начало резко расти начиная с мая 2023.
Поэтому предлагаю рассмотреть его в этой статье более подробно.
Странные, но недооцененные IT-разработки за последние 5 лет
Изобретения, где применяются высокие технологии, есть почти в каждом доме. Но, как правило, это довольно стандартные и утилитарные устройства, решающие бытовые задачи — компьютеры, телефоны, микроволновки и чайники.
Но иногда, в погоне за эффективностью и универсальностью, разработчики создают нечто, что сочетает в себе на первый взгляд несочетаемое.
Эта статья — небольшая подборка необычных разработок, появившихся на свет совсем недавно. Многие из них не просто концепты, а давно существующие повседневные решения, о которых мы просто не знаем.
LockBit Green — новая версия опасного шифровальщика атакует компании по всему миру
Приветствую, дорогие читатели. Сегодня разговор пойдет о том, что уже давным-давно должно было исчезнуть из нашего мира, — шифровальщики. Думаю, что здесь есть люди, которые помнят целые эпидемии всяких BadRabbit, WannaCry и прочих.
Но наш сегодняшний гость немного отличается от серой массы. LockBit Green не распространяется в «дикой природе», он является исключительно инструментом для совершения целевых атак по системе RaaS (вымогатель как услуга) и принадлежит группировке LockBit. И следуя логике этой RaaS, никто не защищен.
В данной статье я проанализирую этот шифровальщик.
Сжатие данных управляет Интернетом. Вот как это работает
Желание одного студента не сдавать выпускной экзамен привело к появлению вездесущего алгоритма, который сжимает данные, не жертвуя при этом информацией.
Шифровальщик Loki Locker: реальная опасность для малого и среднего бизнеса по всему миру
Эксперты Лаборатории цифровой криминалистики из FACCT сообщают о росте активности новых программ-вымогателей семейства Loki Locker. Больше половины жертв этих шифровальщиков находятся в России и близлежащих странах. Злоумышленники требуют выкуп за расшифровку пользовательских файлов в размере от нескольких долларов до сотен тысяч.
Из нашей статьи вы узнаете, как распознать этот вирус и что делать, если вы все-таки стали его жертвой.