Forwarded from There will be no singularity
Рейтинг частотности правил 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 нет никаких ограничивающих или группирующих условий.
Третье место 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 не смертельно. Возможно, эти колонки используются в фильтрации после применения индекса.
В любом случае обратить внимание на эти колонки не будет лишним. Может быть вы обнаружите действительно проблемные места.
За 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 Tech Cheat Sheet (Oleg Kovalov)
Forwarded from rusta::mann
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST.
С тех пор никаких подвижек в стабилизации доступа к полноценному AST и compiler queries не было, что в целом понятно — утилиты, которые используют внутренние API rustc, периодически ломаются.
Но тем не менее, в ночниках доступен rustc_interface, с помощью которого можно наворачивать кастомные утилиты, которые используют компилятор для анализа кода (как, например, clippy или rustfmt).
И если на время проигнорировать нестабильность и ад поддержки совместимости таких штук с ночником, то
Когда-нибудь я может быть даже напишу прототип :))
#мысливслух #rustlang
С тех пор никаких подвижек в стабилизации доступа к полноценному 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
Между тем, использование 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
www.openpolicyagent.org
Open Policy Agent (OPA) | Open Policy Agent
The Open Policy Agent (OPA, pronounced "oh-pa") is an open source,
Security Wine (бывший - DevSecOps Wine)
Securing Your Terraform Pipelines with Conftest, Regula, and OPA Между тем, использование Open Policy Agent набирает обороты. Сегодня статья про использование OPA в связке с Conftect и Regula для оценки конфигурации Terraform в AWS. https://dev.to/pri…
Про OPA больше я тут писал
https://xn--r1a.website/tech_b0lt_Genona/1208
https://xn--r1a.website/tech_b0lt_Genona/1268
https://xn--r1a.website/tech_b0lt_Genona/1208
https://xn--r1a.website/tech_b0lt_Genona/1268
Telegram
Технологический Болт Генона
Microservices Security Pattern — Implementing a policy based security for microservices with OPA
https://medium.com/microservices-learning/micoservices-security-pattern-implementing-a-policy-based-security-for-microservices-with-opa-f15164a79b0e
https://medium.com/microservices-learning/micoservices-security-pattern-implementing-a-policy-based-security-for-microservices-with-opa-f15164a79b0e
Замечательная @N3M351DA сварганила замечательное устройство -
С помощью него можно делать пассивный перехват трафика в сети (не требует питания для работы).
Видео с рассказом про то что, как и почём
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
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
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/
https://habr.com/ru/company/lingualeo/blog/515530/
Отличная подборка команд для Windows, Linux и MacOS для понимания того, что произошло в системе и какую информацию откуда взять можно.
Digital Forensics and Incident Response
https://www.jaiminton.com/cheatsheet/DFIR/
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
WHAT ALERTS SHOULD YOU HAVE FOR SERVERLESS APPLICATIONS?
https://lumigo.io/blog/what-alerts-should-you-have-for-serverless-applications/
https://lumigo.io/blog/what-alerts-should-you-have-for-serverless-applications/
Ничего не понятно, но очень интересно
Kernel analysis with bpftrace
https://lwn.net/Articles/793749/
+
https://github.com/iovisor/bpftrace
Kernel analysis with bpftrace
https://lwn.net/Articles/793749/
+
https://github.com/iovisor/bpftrace
LWN.net
Kernel analysis with bpftrace
At the 2019 Linux Storage, Filesystem, and Memory-Management Summit (LSFMM) Brendan Gregg gave [...]
Forwarded from DOFH - DevOps from hell
Security Boulevard
CVE-2020-10029: Buffer overflow in GNU libc trigonometry functions?!?
Remember trigonometry, where you were given the length of two sides of a triangle and had to compute the third side? We remembered vaguely SOH CAH TOA, but not much more. One thing we would have bet $50 on: That there wouldn’t be a buffer overflow in basic…
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/
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
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
This media is not supported in your browser
VIEW IN TELEGRAM
How to build a 3D printed Radio Globe to tune into radio stations from around the world
https://www.rs-online.com/designspark/how-to-build-a-3d-printed-radio-globe-to-tune-into-radio-stations-from-around-the-world-1
+
https://github.com/DesignSparkrs/RadioGlobe
https://www.rs-online.com/designspark/how-to-build-a-3d-printed-radio-globe-to-tune-into-radio-stations-from-around-the-world-1
+
https://github.com/DesignSparkrs/RadioGlobe
The Confused Mailman: Sending SPF and DMARC passing mail as any Gmail or G Suite customer
https://ezh.es/blog/2020/08/the-confused-mailman-sending-spf-and-dmarc-passing-mail-as-any-gmail-or-g-suite-customer/
https://ezh.es/blog/2020/08/the-confused-mailman-sending-spf-and-dmarc-passing-mail-as-any-gmail-or-g-suite-customer/