Статья называется Modern C# Techniques, Part 2: Value Records, если что
(#prog #csharp #suckassstory)
(#prog #csharp #suckassstory)
🤨6🤡4😁1
Чуть-чуть старая (октябрьская) #successstory
Patent troll Sable pays up, dedicates all its patents to the public!
Это — заключение судебного процесса, в ходе которого патентный тролль Sable пыталась стрясти денег с Cloudflare.
(thanks @itpgchannel)
Patent troll Sable pays up, dedicates all its patents to the public!
Это — заключение судебного процесса, в ходе которого патентный тролль Sable пыталась стрясти денег с Cloudflare.
(thanks @itpgchannel)
The Cloudflare Blog
Patent troll Sable pays up, dedicates all its patents to the public!
We’re pleased to announce that the litigation against Sable has finally concluded on terms that we believe send a strong message to patent trolls everywhere — if you bring meritless patent claims against Cloudflare, we will fight back and we will win.
❤3🔥2
#prog #db #menacingopensource
github.com/frectonz/pglite-fusion
Embed an SQLite database in your PostgreSQL table. AKA multitenancy has been solved.
(thanks @nosingularity)
github.com/frectonz/pglite-fusion
Embed an SQLite database in your PostgreSQL table. AKA multitenancy has been solved.
(thanks @nosingularity)
🥴12👌2👍1
Forwarded from Технологический Болт Генона
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешников" и "айтишников" заменят "роботы" 🌝
Как мы нашли уязвимость в SQLite при помощи LLM
https://habr.com/ru/articles/855882/
Оригинальный пост
https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html
Но я сейчас хотел бы не про это.
SQLite знаменит тем, что они очень трепетно относятся к тестированию своего кода.
В частности, тестового кода в 590 (пятьсот девяносто) раз больше, чем кода самого проекта
Думаю говорить о том, что там 100% покрытие ветвлений не надо.
SQLite активно использует fuzzing. Использовать они его начали после того исследователь Михал Залевски (Michał Zalewski) нашёл 22 бага с помощью фаззера
Фаззинг нашёл 22 бага в SQLite за полчаса
https://xakep.ru/2015/04/16/fazzing-sqlite/
Оригинальный пост
Finding bugs in SQLite, the easy way
https://lcamtuf.blogspot.com/2015/04/finding-bugs-in-sqlite-easy-way.html
Или, например, у них есть Valgrind, который позволяет отлаживать работу с оперативой, делать профилировку и обнаруживать утечки
SQLite делает ещё кучу всего, что бы сделать свой продукт лучше. Подробней можно почитать на отдельной странице - https://www.sqlite.org/testing.html
И в таких условиях всё равно находятся регулярно баги, что-то нужно править и т.д.
А теперь посмотрите на весь остальной код, который используется вами, пишется вами и в целом существует вокруг вас. Много ли проектов так же щепетильно подходят к его качеству? 🌝
Сегодня мы с радостью готовы поделиться первой уязвимостью из реального мира, обнаруженной агентом Big Sleep: отрицательным переполнением (underflow) буфера стека с возможностью реализации эксплойтов в SQLite, — широко используемом опенсорсном движке баз данных. Мы обнаружили уязвимость и сообщили о ней разработчикам в начале октября, и они устранили её в тот же день. К счастью, мы обнаружили эту проблему до её появления в официальном релизе, так что она не затронула пользователей SQLite.
Как мы нашли уязвимость в SQLite при помощи LLM
https://habr.com/ru/articles/855882/
Оригинальный пост
https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html
Но я сейчас хотел бы не про это.
SQLite знаменит тем, что они очень трепетно относятся к тестированию своего кода.
В частности, тестового кода в 590 (пятьсот девяносто) раз больше, чем кода самого проекта
As of version 3.42.0 (2023-05-16), the SQLite library consists of approximately 155.8 KSLOC of C code. (KSLOC means thousands of "Source Lines Of Code" or, in other words, lines of code excluding blank lines and comments.) By comparison, the project has 590 times as much test code and test scripts - 92053.1 KSLOC.
Думаю говорить о том, что там 100% покрытие ветвлений не надо.
SQLite активно использует fuzzing. Использовать они его начали после того исследователь Михал Залевски (Michał Zalewski) нашёл 22 бага с помощью фаззера
Фаззинг нашёл 22 бага в SQLite за полчаса
https://xakep.ru/2015/04/16/fazzing-sqlite/
Оригинальный пост
Finding bugs in SQLite, the easy way
https://lcamtuf.blogspot.com/2015/04/finding-bugs-in-sqlite-easy-way.html
Или, например, у них есть Valgrind, который позволяет отлаживать работу с оперативой, делать профилировку и обнаруживать утечки
SQLite делает ещё кучу всего, что бы сделать свой продукт лучше. Подробней можно почитать на отдельной странице - https://www.sqlite.org/testing.html
И в таких условиях всё равно находятся регулярно баги, что-то нужно править и т.д.
А теперь посмотрите на весь остальной код, который используется вами, пишется вами и в целом существует вокруг вас. Много ли проектов так же щепетильно подходят к его качеству? 🌝
🌚21🔥7👍3🤡1
#prog #amazingopensource
Automatically inferring file syntax with afl-analyze
Инструмент для фаззинга AFL использует покрытие потока исполнения для того, чтобы генерировать новые кандидаты тестовых данных. Это позволяет эффективно фаззить софт. Однако оснастка для анализа покрытия может быть использована и для других целей.
Один из инструментов, который использует эту оснастку — afl-analyze. Мутируя входные данные и наблюдая за поведением программы, обрабатывающей вход, он может автомагически до некоторой степени разобрать структуру входа на уровне до байтов.
На скриншоте представлен результат запуска этого инструмента на файле PNG и программе для его чтения.
Automatically inferring file syntax with afl-analyze
Инструмент для фаззинга AFL использует покрытие потока исполнения для того, чтобы генерировать новые кандидаты тестовых данных. Это позволяет эффективно фаззить софт. Однако оснастка для анализа покрытия может быть использована и для других целей.
Один из инструментов, который использует эту оснастку — afl-analyze. Мутируя входные данные и наблюдая за поведением программы, обрабатывающей вход, он может автомагически до некоторой степени разобрать структуру входа на уровне до байтов.
На скриншоте представлен результат запуска этого инструмента на файле PNG и программе для его чтения.
👍5❤3
#life #video
Люди очень нерационально моют посуду по сравнению с посудомоечными машинами.
youtube.com/watch?v=SDfeLICMfNc
Люди очень нерационально моют посуду по сравнению с посудомоечными машинами.
youtube.com/watch?v=SDfeLICMfNc
YouTube
Why humans are bad at washing dishes
MinuteFood merch is NOW AVAILABLE at https://DFTBA.com/minutefood! As if that weren’t awesome enough, right now you can get 20% off anything in our store with promo code MINUTEFOOD.
You’ve got a pile of dirty dishes…should you hand-wash them or use the dishwasher?…
You’ve got a pile of dirty dishes…should you hand-wash them or use the dishwasher?…
❤5🔥1🤯1
Forwarded from Neural Machine
После того, как следующие времена наступят, вы увидите, что все было не так плохо.
😭18💯3😱1🌚1
#math #article
Breaking CityHash64, MurmurHash2/3, wyhash, and more...
<...>
As a teaser, this article explains how you can generate strings such as these, thousands per second:
I also show how you can create some really funky pairs of strings that can be concatenated arbitrarily such that when concatenating k strings together any of the 2^k combinations all have the same hash output, regardless of the seed used for the hash function:
(thanks @daily_ponv)
Breaking CityHash64, MurmurHash2/3, wyhash, and more...
<...>
As a teaser, this article explains how you can generate strings such as these, thousands per second:
cityhash64("orlp-cityhash64-D-:K5yx*zkgaaaaa") == 1337
murmurhash2("orlp-murmurhash64-bkiaaa&JInaNcZ") == 1337
murmurhash3("orlp-murmurhash3_x86_32-haaaPa*+") == 1337
farmhash64("orlp-farmhash64-/v^CqdPvziuheaaa") == 1337
I also show how you can create some really funky pairs of strings that can be concatenated arbitrarily such that when concatenating k strings together any of the 2^k combinations all have the same hash output, regardless of the seed used for the hash function:
a = "xx0rlpx!xxsXъВ"
b = "xxsXъВxx0rlpx!"
murmurhash2(a + a, seed) == murmurhash2(a + b, seed)
murmurhash2(a + a, seed) == murmurhash2(b + a, seed)
murmurhash2(a + a, seed) == murmurhash2(b + b, seed)
a = "!&orlpՓ"
b = "yǏglp$X"
murmurhash3(a + a, seed) == murmurhash3(a + b, seed)
murmurhash3(a + a, seed) == murmurhash3(b + a, seed)
murmurhash3(a + a, seed) == murmurhash3(b + b, seed)
(thanks @daily_ponv)
🤔7🔥4👎1