Как стать автором
Обновить
22
0
Андрей Щеглов @unix_junkie

Пользователь

Отправить сообщение

CodeQL: SAST своими руками (и головой). Часть 1

Время на прочтение 12 мин
Количество просмотров 8.8K

Привет, Хабр!

Как вы все уже знаете, в области безопасности приложений без статических анализаторов исходного кода (SAST) совсем никуда. SAST-сканеры занимаются тем, что проверяют код приложения на различные типы программных ошибок, которые могут скомпрометировать систему, предоставить злоумышленнику непредвиденные возможности для доступа к данным, либо для нарушения работы приложения. В основном анализ безопасности кода строится на изучении его семантической структуры, путей прохождения данных от момента пользовательского ввода до обработки. Однако есть и обычная для таких инструментов возможность поиска наиболее часто встречающихся небезопасных паттернов.

В этой статье я расскажу о CodeQL от GitHub Security Lab, интересном инструменте и языке для анализа исходного кода, который активно набирает популярность и выглядит весьма перспективным.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Kubernetes: шпаргалка для собеседования

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 32K
Всем привет! Меня зовут Олег, я работаю исполнительным директором по разработке в Газпромбанке. На разных этапах карьеры я участвовал во многих собеседованиях, а в настоящее время сам собеседую кандидатов на должность инженеров DevOps и системных администраторов в Газпромбанке, вследствие чего у меня сформировалось некоторое представление о вопросах, которые могут быть заданы соискателям. И сейчас я хочу остановиться на разделе вопросов про Kubernetes.

image

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

Вопросы по Kubernetes достаточно часты на собеседованиях на инженерные вакансии, связанные с администрированием и эксплуатацией. Они могут варьироваться от базовых, рассчитанных на механическую проверку теоретических знаний («объясните, что такое service») до более сложных и комплексных, требующих глубинного понимания внутренних принципов Kubernetes и работы (каким образом опубликовать приложение, развёрнутое в Kubernetes). Давайте пойдём от базы в направлении возрастания сложности.
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 12

Как в России в XIX веке компьютер изобрели

Время на прочтение 12 мин
Количество просмотров 6K
Компьютер придумал русский учёный Семён Корсаков в первой половине XIX века. Что? Да! И теоретическое обоснование к изобретению искусственного интеллекта впервые подвёл тоже он. «Как микроскоп и телескоп усилили наши чувства, так и интеллектуальные машины могут усиливать наш разум», — писал изобретатель.

image
Кстати, вот он — Семён Корсаков, человек, опередивший своё время

Интеллектуальные машины, которые создал Корсаков, достаточно простые и недорогие. Базы данных и некий прототип языка программирования Корсаков для них тоже придумал. Машины могли проводить поиск среди множества критериев, учитывая их относительную важность, и обрабатывать большие объёмы информации. Они умели проводить все основные операции с множествами, то есть делать всё, что сейчас делает дискретная математика. Их появление могло физически перевернуть всю науку XIX века и лет на пятьдесят ускорить появление современных компьютеров. Но что-то пошло не так.
Читать дальше →
Всего голосов 32: ↑27 и ↓5 +22
Комментарии 10

Как при помощи нейросети восстанавливали обугленные свитки из Помпеи (угадайте, с каким контентом внутри)

Время на прочтение 13 мин
Количество просмотров 6.5K
image
Результат одной из попыток физически развернуть обугленный свиток

С этими свитками из библиотеки в Геркулануме пошло не так абсолютно всё. Они на папирусе, который состоит из нескольких слоёв расплющенных и спрессованных тростниковых стеблей. Высушенный тростник легко воспламеняется. Температура пирокластических потоков, извергнутых Везувием, достигала 700 ᵒС, поэтому вот что вы видите на фото выше. Впрочем, манускриптам из Геркуланума ещё повезло: из-за высокой скорости движения и температуры газово-пепловых туч воздух из помещений, где они хранились, быстро вытеснился, и папирусы не сгорели, а обуглились.

Сверху у них — грязь селя. Дальше — выпавший из эруптивной колонны вулканический пепел. Получилась довольно прочная оболочка — это «запечатало» помещения, не дав воздуху и влаге окончательно добить бесценные рукописи, буквально законсервировав их почти на 2 000 лет.

Сами свитки очень хрупкие, и это затрудняет их изучение. Одно неловкое движение — и вместо папируса получится горстка пепла. Частично прочесть удалось только наиболее сохранившиеся, а это малая часть всей библиотеки.

Но сейчас удаётся восстановить часть контента с этих древних свитков. Кажется, нам достался самый популярный греческий контент — предметные инструкции, как радоваться жизни. Довольно прикладные.
Читать дальше →
Всего голосов 39: ↑38 и ↓1 +37
Комментарии 7

Сканирование кода C++ с помощью GitHub Actions

Время на прочтение 2 мин
Количество просмотров 3K

В прошлом году GitHub выпустил фичу сканирования кода, которая позволяет разработчикам добавлять проверки безопасности в свою среду CI/CD и в целом в рабочую среду. В этом посте демонстрируются основы использования CodeQL, механизма анализа, лежащего в основе сканирования кода, в связке с GitHub Actions.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 1

SAST для самых маленьких. Обзор open-source инструментов поиска уязвимостей для C/C++

Время на прочтение 33 мин
Количество просмотров 13K


Привет, Хабр!


Навыки статического анализа кода в арсенале исследователя безопасности приложений фактически являются must-have скиллом. Искать ручками уязвимости в коде, не прибегая к автоматизации, для небольших проектов вполне быть может и приемлемый сценарий. Но для больших задач с миллионами строк кода — это непозволительная роскошь с точки зрения временных затрат.

Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 8

Почему Trino такой быстрый: архитектура оптимизатора SQL-запросов

Время на прочтение 12 мин
Количество просмотров 18K

Аналитические системы должны эффективно обрабатывать сложные пользовательские запросы к десяткам и сотням терабайт данных (пета-?). Продвинутый оптимизатор запросов является важнейшим компонентом любого big data движка. В данной статье мы рассмотрим, как устроен оптимизатор запросов в массивно-параллельном аналитическом SQL-движке Trino.

И как же он устроен?
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 2

Настраиваем Out-Of-Memory Killer в Linux для PostgreSQL

Время на прочтение 5 мин
Количество просмотров 51K


Когда в Linux сервер базы данных непредвиденно завершает работу, нужно найти причину. Причин может быть несколько. Например, SIGSEGV — сбой из-за бага в бэкенд-сервере. Но это редкость. Чаще всего просто заканчивается пространство на диске или память. Если закончилось пространство на диске, выход один — освободить место и перезапустить базу данных.


Out-Of-Memory Killer


Когда у сервера или процесса заканчивается память, Linux предлагает 2 пути решения: обрушить всю систему или завершить процесс (приложение), который съедает память. Лучше, конечно, завершить процесс и спасти ОС от аварийного завершения. В двух словах, Out-Of-Memory Killer — это процесс, который завершает приложение, чтобы спасти ядро от сбоя. Он жертвует приложением, чтобы сохранить работу ОС. Давайте сначала обсудим, как работает OOM и как его контролировать, а потом посмотрим, как OOM Killer решает, какое приложение завершить.

Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 3

Использование разделяемой памяти в Java и off-heap кеширование

Время на прочтение 6 мин
Количество просмотров 58K
На прошлой неделе состоялся успешный эксперимент по запуску нового решения для download-сервиса. Один достаточно скромный сервер (2 x Intel Xeon E5620, 64 GB RAM) под управлением Java-приложения собственной разработки принял на себя нагрузку восьми Tomcat'ов, обслуживая более 70 тысяч HTTP-запросов в секунду общей пропускной способностью 3000 Mb/s. Таким образом, весь трафик Одноклассников, связанный с пользовательскими смайликами, обрабатывался одним сервером.

Вполне естественно, что высокие нагрузки требовали нестандартных решений. В цикле статей о разработке высоконагруженного сервера на Java я расскажу о проблемах, с которыми нам пришлось столкнуться, и о том, как мы их преодолели. Сегодня речь пойдет о кешировании изображений вне Java Heap и об использовании Shared Memory в Java.
Читать дальше →
Всего голосов 65: ↑64 и ↓1 +63
Комментарии 68

CBOR — новый бинарный формат представления данных

Время на прочтение 9 мин
Количество просмотров 60K
Concise Binary Object Representation (сжатое бинарное представление объекта) — формат данных, который был спроектирован таким образом, чтобы обеспечить максимально простой код реализации, формирования компактных выходных данных и возможность расширения формата без необходимости обмена информацией о версии.

Стандарт формата CBOR был официально анонсирован комитетом IETF в октябре 2013 года в новом документе RFC 7049, авторами которого являются Carsten Bormann и Paul Hoffman. Взглянув на имя первого автора, можно предположить другую причину происхождения аббревиатуры для названия формата, но возможно это просто совпадение. Формат CBOR получил MIME-тип application/cbor.

На данный момент существует, вероятно, сотни всевозможных бинарных форматов для представления структурированных данных, ряд которых стандартизирован, популярен и широко применяется (например, BER и DER для ASN.1, MessagePack и BSON). Все существующие стандарты решают поставленные перед ними задачи, и CBOR здесь не исключение. К формату было предъявлено семь важных требований, и, поскольку ни один из существующих форматов в полной мере не мог им удовлетворить, был создан новый (да, тут напрашивается картинка ).

Читать дальше →
Всего голосов 100: ↑100 и ↓0 +100
Комментарии 39

Сериализация данных или диалектика общения: простая сериализация

Время на прочтение 13 мин
Количество просмотров 13K
image Доброго времени суток, уважаемые. В данной статье мы рассмотрим наиболее популярные форматы сериализации данных и проведем с ними небольшое тестирование. Это первая статья на тему сериализации данных и в ней мы рассмотрим простые сериализаторы, которые не требуют от разработчика больших изменений в коде для их интеграции.

Рано или поздно, но вы, как и наша компания, можете столкнуться с ситуацией, когда количество используемых в вашем продукте сервисов, резко возрастает, да и все они к тому же оказываются очень «говорливыми». Произошло ли это из-за перехода на «хайповую» нынче микросервисную архитектуру или вы просто получили пачку заказов на небольшие доработки и реализовали их кучкой сервисов — неважно. Важно то, что начиная с этого момента, ваш продукт обзавелся двумя новыми проблемами — что делать с увеличившимся количеством данных, гоняемых между отдельными сервисами, и как не допустить хаоса при разработке и поддержке такого количества сервисов. Немного поясню про вторую проблему: когда количество ваших сервисов вырастает до сотни или более, их уже не может разрабатывать и сопровождать одна команда разработчиков, следовательно, вы раздаете пачки сервисов разным командам. И тут главное, чтобы все эти команды использовали один формат для своих RPC, иначе вы столкнетесь с такими классическими проблемами, когда одна команда не может поддерживать сервисы другой или просто два сервиса не стыкуются между собой без обильного уплотнения места стыка костылями. Но об этом мы поговорим в отдельной статье, а сегодня мы обратим внимание на первую проблему возросших данных и подумаем, что мы можем с этим сделать. А делать нам в силу нашей православной лени ничего не хочется, а хочется добавить пару строчек в общий код и получить сразу профит. С этого мы и начнем в данной статье, а именно — рассмотрим сериализаторы, встраивание которых не требует больших изменений в нашем прекрасном RPC.
Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Комментарии 24

Дюк, вынеси мусор! — 6. Shenandoah GC

Время на прочтение 8 мин
Количество просмотров 14K

Несмотря на то, что мы уже успели достаточно подробно рассмотреть целых шесть сборщиков мусора (Serial, Parallel, CMS, G1, ZGC, Epsilon), у OpenJDK еще есть, что нам предложить. Эта статья посвящена Shenandoah, тому самому сборщику, "который смог" (с таким слоганом он обычно подается).

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

Посмотреть, раз есть на что
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 3

Дюк, вынеси мусор! — 5. Epsilon GC

Время на прочтение 4 мин
Количество просмотров 8.4K

Сборщики мусора из OpenJDK, которые мы успели рассмотреть к этому моменту (Serial и Parallel, CMS и G1, ZGC), были нацелены на как можно более быструю и эффективную сборку мусора, для чего использовали техники различной степени сложности и изобретательности. Это вполне ожидаемо, ведь исходя из названия, борьба с мусором — это их основная обязанность.

Но сегодня у нас на рассмотрении сборщик, который выбивается из общей картины. Его разбор будет недолгим, но полезным, так как позволит взглянуть на один не рассматривавшийся до этого аспект работы сборщиков. Давайте немного отдохнем от сложных технических трюков и разберемся с Epsilon GC — самым простым из входящих в состав OpenJDK сборщиков.

Отдохнуть, разобраться
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 6

Дюк, вынеси мусор! — 4. ZGC

Время на прочтение 9 мин
Количество просмотров 21K

С тех пор, как мы рассматривали принципы работы различных сборщиков мусора (раз, два, три), входящих в состав виртуальной машины Java HotSpot, прошел уже не один год. За это время было разработано еще несколько сборщиков, один из которых — ZGC — достаточно давно вышел из разряда экспериментальных и начиная с 15-й версии OpenJDK может похвастаться статусом production ready.

Раз есть такой хороший повод, давайте продолжим цикл, взяв сегодня на рассмотрение этот сборщик.

А давайте
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 3

Дюк, вынеси мусор! — 2. Serial GC и Parallel GC

Время на прочтение 11 мин
Количество просмотров 120K
Heap


В предыдущей статье мы познакомились с терминологией и основными идеями, лежащими в основе сборщиков мусора Java HotSpot VM и многих других виртуальных машин. Теперь мы, наконец, можем взять в руки лопату и приступить к разгребанию нашей кучи. Сегодня у нас на обзоре две лопаты два сборщика мусора, используемые огромным количеством Java-программ, зачастую даже не подозревающих об этом. Это Serial GC и Parallel GC. Их популярность объясняется просто — данные сборщики выбираются виртуальной машиной по умолчанию для большинства аппаратных конфигураций.

Используемые в этих сборщиках подходы к работе с кучей в том или ином виде применяются в более продвинутых реализациях, поэтому на данном этапе нам будет очень важно разобраться с заложенными в них идеями и возможностями.
Интересно, хочу разобраться
Всего голосов 36: ↑36 и ↓0 +36
Комментарии 22

Все же слипнется: Влияние SARS-CoV-2 на нервные ткани

Время на прочтение 5 мин
Количество просмотров 47K

TL;DR: Спайковый белок ковида (S spike) вызывает структурные изменения в нервных тканях - нейрончики слипаются между собой и с глиальными клектами и перестают работать. Да, запахи скорее всего отбивает по этой причине. Да, это тот белок который используют вакцины. Нет, все не так страшно, вакцинированный username - извилины не слиплись от привки (по крайней мере не все).

Prooflink на bioRxiv (Препринт от первого сентября - cutting edge текущих исследований).

Под катом - объяснение содержания статьи на пальцах, и разбор текущих вакцин с учетом новых полученных данных.

Читать далее
Всего голосов 131: ↑125 и ↓6 +119
Комментарии 201

Недопонимание CAP-теоремы

Время на прочтение 3 мин
Количество просмотров 29K
В последнее время я довольно часто натыкаюсь на данную теорему. Она довольно давно доказана и про нее много чего написано. Однако каждый раз когда я натыкаюсь на распределенную систему, претендующую в описании на CA в терминах данной теоремы, т.е. систему в которой жертвуют Partition Tolerance в угоду Consistency и Avalability, я зависаю, так как хоть убейте не могу себе представить такого зверя. После долгих раздумий я все же пришел к выводу, что такая система бессмысленна, о чем и хочу порассуждать в данном топике.

Читать дальше →
Всего голосов 39: ↑31 и ↓8 +23
Комментарии 77

Разработка на Java и OpenCL: Дорога в облака

Время на прочтение 5 мин
Количество просмотров 10K


В статье рассматривается использование платформы Java для разработки совместно с OpenCL, преимущества и недостатки этого подхода. Сочетание этих технологий в разработке ПО в перспективе позволит использовать всю мощь облачных вычислений и OpenCL
Читать дальше →
Всего голосов 16: ↑12 и ↓4 +8
Комментарии 13

OpenCL. Что это такое и зачем он нужен? (если есть CUDA)

Время на прочтение 6 мин
Количество просмотров 136K


Здравствуй, уважаемое хабра-сообщество.

Многие, наверное, слышали или читали на хабре об OpenCL – новом стандарте для разработки приложений для гетерогенных систем. Именно так, это не стандарт для разработки приложений для GPU, как многие считают, OpenCL изначально задумывался как нечто большее: единый стандарт для написания приложений, которые должны исполняться в системе, где установлены различные по архитектуре процессоры, ускорители и платы расширения.
Читать дальше →
Всего голосов 59: ↑54 и ↓5 +49
Комментарии 37

Новая блокировка OpenVPN и Wireguard замедляет интернет в России

Время на прочтение 3 мин
Количество просмотров 124K

Позавчера, 15 января ночью, по всему Рунету пошли сигналы, что протоколы WireGuard/OpenVPN массово «отвалились». Судя по всему, с понедельника Роскомнадзор снова взялся за VPN, экспериментируя с блокировками OpenVPN и Wireguard в новом масштабе.

Мы в Xeovo заметили это по большому наплыву пользователей, которые вообще не знали что протоколы блокируются (где они были все это время). Уже учения были много раз, и мы предупреждали клиентов, но, видимо, OpenVPN и WireGuard до сих пор очень хорошо работали у всех. На настоящий момент блокировка продолжается. Возможно, тестируют, как все работает перед выборами. 

Читать далее
Всего голосов 142: ↑106 и ↓36 +70
Комментарии 378

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность