Что делать
120 subscribers
209 photos
3 videos
4 files
133 links
Не смешно
Download Telegram
SSL vs. TLS

SSL изначально разработали в Netscape (если помните такой браузер). Аббревиатура расшифровывается, как Secure Sockets Layer. Его первая версия, SSLv1, была чисто внутренним продуктом, зато на продакшн выкатили уже SSLv2 и SSLv3. Но это была конкретно разработка компании, нежели стандарт, хоть де-факто таковым оно и являлось. Потом Netscape разорился, и на рфс выкатили бумаги по SSLv3 в качестве historic document. На его основе появился TLSv1, похожий, но не совместимый. Потом TLSv1.1, 1.2, и, наконец, в 2018 - TLSv1.3. Несмотря на то, что тлс был лучше и безопаснее, SSLv3 все равно считали достаточно надежным и продолжительное время использовали все же его, даже если клиент поддерживал TLS. Но вот, в какой-то момент пришли умники в очках, и указали на критические уязвимости. Вот SSL больше и не используют.

P.S. в TLSv1.0 тоже понаходили. По итогу тоже начали форсировать повсеместную поддержку 1.1
Красивый хак с логарифмом по основанию 2

https://github.com/allegro/bigcache/blob/main/utils.go#L14-L16
👍1
pavlo.gay

А теперь попробуйте перевести страницу на английский
Forwarded from Алексий
чет я тут тыкался и прям разъебало
Forwarded from dontuto (dontu bruh🥟)
1
Да я буду щитпостить в перерывах между техническими постами
На 14 февраля расскажу, что такое ALPN, и с чем его едят

ALPN - Application Layer Protocol Negotiation. Представляет из себя расширение TLS (в мейнстрим имплементациях появился с 14-16 года в среднем). Фактически - позволяет еще на этапе TLS хэндшейка выбрать используемый далее протокол. Тобишь, буквально: указываешь, какие протоколы поддерживаешь (все токены зарегистрированы в IANA) - клиент выбирает - и вы дальше уже это говно используете.

По этому механизму, например, преимущественное большинство браузеров и поддерживают хттп2 - вместо того, чтобы начинать общение с хттп1.1 и дальше уже через заголовок Upgrade обновляться. Хоть и этот способ рудиментарным не объявлен, таковым фактически он и является. Минусы - его поддерживать тоже придется. Но в целом, не критично.

Фанфакт: это расширение в 2014 ввел наш славноизвестный гугл.

Вообще, по моим наблюдениям, с 97 года веб очень сильно тянет гугл. Что хттп2 - стандартизированная спустя 3 года версия гугловского SPDY, что ALPN как основной способ налаживания хттп2 транспорта, что хттп3 (который просто http2-over-quic). В принципе, имея убийственную связку из одного из самых популярных браузеров (который еще и evergreen, но об этом в следующем посте), не менее популярного сайта, а также четвертого по популярности веб-сервера - гораздо проще вводить новые, экспериментальные технологии, и тестировать их в жестоком и кровавом бою
Что делать
который еще и evergreen
evergreen браузерами называют те, которые обновляются самостоятельно в фоне. То есть - без явных просьб пользователя. Звучит хоть и не очень хорошо, но все же считается больше хорошим тоном, нежели наоборот. Например, из-за того, что обновления IE были привязаны к обновлению операционной системы, чисто вечнозелеными их назвать было сложно. Отсюда и пошла головная боль фронтэндеров, когда сайт нужно еще и под IE оптимизировать
Код Хаффмана и почему он такой классный

Жил-был Дэвид Хаффман. И вот подумал он: если у нас одни символы встречаются чаще других, то почему мы используем одинаковое количество бит для каждого?

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

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

Понятие "таблица Хаффмана" же - это просто соотношение символа к его коду Хаффмана, чтобы не нужно было для каждого символа перебирать все дерево в поисках. Обычно - простая хэшмапа, хоть в некоторых ситуациях и можно выдумать что-то поинтереснее (например - LUT, который имеют O(1) доступ, отлично применимы для ascii; где-то даже был пост об этом).

Конечно, отправляя сжатое таким образом сообщение, необходимо другой стороне еще и таблицу отправить, чтобы принимающий понимал, как мы то сообщение кодировали вообще. Иногда, сообщение+таблица могут в сумме нивелировать выигрыш от сжатия, хоть для достаточно больших сообщений (что случается чаще всего) разница не является столь великой.
Но у обычного кода Хаффмана есть и недостаток. Например, необходимо дважды пройтись по тексту, дабы в первый раз все символы посчитать. Поэтому существуют и вариации, в которых бинарное дерево перестраивается во время итерирования по тексту. Но тут уж не вникал, простите.
Хаффман, к слову, используется вообще много где. Начиная от jpeg, заканчивая hpack в http/2. В hpack ситуация вообще интересная: несмотря на то, что логичным было бы использовать как раз таки вариацию с динамической перестройкой дерева, они все же пошли по другому пути. Они взяли некое "большое число типичных запросов", и построили статическую таблицу уже на их основе
😁6
Всех подписчиков поздравляю с 8 марта
Forwarded from Вадик
😁5
фанфакт: чем от 255 отнимать значение, по этому значению можно просто произвести побитовое отрицание
Вот вроде привыкли все. Выглядит логично и удобно. А почему? ЛЕВАЯ ПЯТКА

https://buttondown.email/hillelwayne/archive/why-do-regexes-use-and-as-line-anchors/
Forwarded from Illia
Однажды Никлас Вирт приехал в Италию и спросил
– любите ли вы Паскаль?
– Си, сеньор, си!
ответили итальянцы. Никлас Вирт очень обиделся и больше в Италию не ездил.
Forwarded from mizinov.pro
https://rationalnumbers.ru/?go=all/effekt-danninga-kryugera-avtokorrelyaciya/

Так любимый нами (несомненно, настоящими интеллектуалами 🧐) Эффект Даннинга-Крюгера оказался пустышкой из-за некомпетентности его авторов в вопросах статистического анализа. Что может быть более ироничным, точнее автоироничным?! 😅

#всяправда
В кукисы суют прям полноценную дату в Expiry атрибут. А что по поводу формата этой самой даты? Ну, того самого, с которым всегда и у всех была пизда. Ну, у нас их три. И все три эквивалентно валидны. Пони, блядь
Что делать
В кукисы суют прям полноценную дату в Expiry атрибут. А что по поводу формата этой самой даты? Ну, того самого, с которым всегда и у всех была пизда. Ну, у нас их три. И все три эквивалентно валидны. Пони, блядь
Ладно, деды были молоды, горячи, глупы. Сейчас настойчиво склоняют к использованию только одного формата, остальные два признали устаревшими
https://sqlite.org/draft/whybytecode.html

Недавно у автора SQLite спросили: а почему у вас байткод? Остальные базы данных ведь преимущественно используют деревья для представления запроса. Ну а он не растерялся, и выкатил статью, где расписал, почему он думает, что байткод лучше.

От себя докину: с компиляцией в байткод можно очень много приколях придумать. Самое банальное - jit, который ложится идеально при наличии своей ВМ. Опционально можно в самом фронтэнде "запекать" квери - компилировать раз, и дальше использовать из кэша, подставляя значения