Технологический Болт Генона
8.15K subscribers
2.99K photos
359 videos
214 files
3.85K links
До Декарта никогда не существовало рационализма.

Музыкальный Болт Генона: @mus_b0lt_Genona
Мемный Болт Генона: @mem_b0lt_Genona
Кадровый Болт Генона @kadr_b0lt_Genona

Обратная связь: @rusdacent
Download Telegram
Алиса, по какому адресу шеллкод записывать?
Рейтинг частотности правил SQL анализатора holistic.dev

За 10 дней прошедших с момента публичного релиза многие из вас откликнулись на призыв протестировать наш сервис, за что вам большое спасибо!
И чтобы как-то отметить эту знаменательную дату (та-дам!), расскажем что же чаще всего мы находили в ваших запросах:

5. like-dynamic-template
4. select-naked
3. de-morgan-laws
2. limit-offset-without-orderby
1. column-not-in-index

К сожалению, у нас нет подробной документации по каждому из правил, поэтому я коротенько расскажу вам про них.

На пятом месте like-dynamic-template (performance/architect)
Такое правило срабатывает в ситуациях, когда в LIKE или ILIKE встречаются динамические значения. Это плохо влияет и на производительность (индекс, даже если он есть не будет использован) и так себе с точки зрения архитектуры.

На четвертом select-naked (performance/architect/security)
Срабатывает, когда у SELECT нет никаких ограничивающих или группирующих условий.
 SELECT a FROM t 
например. Это плохо тем, что будут возвращены значения из всех строк таблицы, что может быть довольно большим объемом данных и это не будет быстро. А во-вторых, что ты такое хранишь в этой таблице, что тебе понадобилось вытащить все данные?

Третье место de-morgan-laws (architect)
Законы де Моргана - это правила раскрытия отрицания в булевой алгебре:
NOT (A OR B) = NOT A AND NOT B
NOT (A AND B) = NOT A OR NOT B
Правило срабатывает, когда встречается отрицание булевых выражений. Почему это может быть проблемой?
В булевой алгебре все немного проще, чем в SQL. NOT это не всегда отрицание в прямом понимании этого слова.
Например, NOT (a IS TRUE) это не a = FALSE, как могло бы показаться. NOT (a IS TRUE) это a = FALSE OR a IS NULL.
Если вы пишете запросы руками, то при дальнейшем чтении понимание таких конструкций будет затруднено.
Избегайте отрицания булевых выражений!

Второе место limit-offset-without-orderby (architect)
Для многих это будет сюрпризом, но в Postgresql нет сортировки по умолчанию. Т.е. порядок строк в результате не гарантирован. Об этом честно написано в документации - "if sorting is not chosen, the rows will be returned in an unspecified order".
Если вы хотите взять первые N строк, то стоит определить порядок, по которому будет понятно где именно находится это самое начало.
На этом месте скорее всего был бы NOTICE select-without-orderby, но он еще не в проде :)

Если в вашем приложении порядок следования строк может влиять я бизнес процессы, крайне рекомендую проверить ваши запросы хотя бы руками (но лучше через holistic.dev)!

И призовое место - column-not-in-index
(performance)
Это, конечно, предсказуемо. Правило срабатывает при нахождении колонок, которые не упоминаются в индексах.
Это не говорит о том, что индексы в запросе не используются. Чтобы ответить на такой вопрос, требуется еще немало поработать (я обещал рассказать об этом в ближайшее время).
Само по себе появление такого issue не смертельно. Возможно, эти колонки используются в фильтрации после применения индекса.
В любом случае обратить внимание на эти колонки не будет лишним. Может быть вы обнаружите действительно проблемные места.
Forwarded from rusta::mann
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST.

С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.

Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).

И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то rustc_interface в частности, и доступ к приватным API компилятора в целом, дает возможность писать "гибридные" макросы в build.rs.

Когда-нибудь я может быть даже напишу прототип :))

#мысливслух #rustlang
Forwarded from Security Wine (бывший - DevSecOps Wine) (Denis Yakimov)
Securing Your Terraform Pipelines with Conftest, Regula, and OPA

Между тем, использование Open Policy Agent набирает обороты. Сегодня статья про использование OPA в связке с Conftect и Regula для оценки конфигурации Terraform в AWS.

https://dev.to/prince_of_pasta/securing-your-terraform-pipelines-with-conftest-regula-and-opa-4hkh

OPA использует Rego язык для определения политик. К вашему вниманию также бесплатный курс по OPA Policy Authoring.

#tools #terraform #aws
Замечательная @N3M351DA сварганила замечательное устройство - Throwing Star LAN Tap.
С помощью него можно делать пассивный перехват трафика в сети (не требует питания для работы).

Видео с рассказом про то что, как и почём
https://www.youtube.com/watch?v=i-2Xc8JqKBI

Описание
https://notes.n3m3515.space/2020/projects/throwing-star-lan-tap

GitHub проекта
https://github.com/n3m351d4/Throwing-Star-LAN-Tap

Заказать можно в трёх вариантах:
- готовый - https://boosty.to/inside/posts/b1ceaa1c-2b10-4a5f-97a2-0797ca3b94f7
- собрать самому из комплекта - https://boosty.to/inside/posts/515c0353-6f5d-4b13-bb90-84cb06f5d47f
- PCB - https://boosty.to/inside/posts/faa6f87d-8b33-479f-bfa6-ad833eccd00f

Канал @in51d3
Forwarded from oleg_log (Oleg Kovalov)
В коменте у xkcd упоминается ImageMagick и что когда оно сломается, нам придется страдать.
Выложены доклады с Accento Digital 2020.
Online конфа посвящённая Java/JS и Operations.

Ссылка на плейлист Operations
https://www.youtube.com/playlist?list=PLQY-dA-cXJ73mB6EnxtSiIsAU9WGGdTMk

Полная программа тут
https://2020.accento.dev/schedule
«В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров
https://habr.com/ru/company/lingualeo/blog/515530/
Отличная подборка команд для Windows, Linux и MacOS для понимания того, что произошло в системе и какую информацию откуда взять можно.

Digital Forensics and Incident Response
https://www.jaiminton.com/cheatsheet/DFIR/
Forwarded from Inside
Если наса могут его патчить то и мы сможем https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/FSW2015_Benowitz_Maimone_4.pdf
GitLab 13.3 released with coverage-guided fuzz testing and a build matrix for CI/CD
https://about.gitlab.com/releases/2020/08/22/gitlab-13-3-released/
Forwarded from oleg_log (Oleg Kovalov)
2020 конечно прикольный год

One day, while studying old code, I found out that it's possible to encode Windows Portable Executable files as a UNIX Sixth Edition shell script, due to the fact that the Thompson Shell didn't use a shebang line.

Once I realized it's possible to create a synthesis of the binary formats being used by Unix, Windows, and MacOS, I couldn't resist the temptation of making it a reality, since it means that high-performance native code can be almost as pain-free as web apps.

https://justine.storage.googleapis.com/ape.html