oleg_log
1.77K subscribers
1.86K photos
129 videos
9 files
2.77K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Посмотрел и приуныл. 13 лет прошло с доклада, а мы все про это говорим и говорим. В голове всплыло стойкое ощущения, что мы стоим на месте. Да, новые фреймворки, языки, новые хттп-роутеры и логгеры, но почему все появляются и появляются решения с кривыми, нелогичными, непродуманными апи? ведь многое пишется умниками, которые не 1 и не 3 года в индустирии. Вопрос скорее риторический, но осознание, что мы набиваем шишки на старых проблемах заставляет смотреть на труженников по клавиатуре определенно косо.
Оп, Bittorrent v2

SHA-1 -> SHA-256
Merkel tree
per-file hash
и да, ломается совместимость.

Не знаю как вы, а я рад, что новая версия появилась, вещь-то нужная.

https://blog.libtorrent.org/2020/09/bittorrent-v2/
oleg_log
Оп, Bittorrent v2 SHA-1 -> SHA-256 Merkel tree per-file hash и да, ломается совместимость. Не знаю как вы, а я рад, что новая версия появилась, вещь-то нужная. https://blog.libtorrent.org/2020/09/bittorrent-v2/
Ооо, расскажите, а вы где-то торренты юзаете? я не про пиратство, а использование на проде. Бекапчики и/или свои велосипеды, тот же S3.
Встал чтобы запостить :\
Небольшое ревью успехов 1 человека по ускорению компилятора Rust. Хардкора не найдете, скорее просто история и некоторые моменты.

https://blog.mozilla.org/nnethercote/2020/09/08/how-to-speed-up-the-rust-compiler-one-last-time/

+ график между версиями, но YMMV https://perf.rust-lang.org/dashboard.html
Дожил до сегодня и не знал (так сильно забыл с универа?), что в C++ есть нетрадиционные операторы:

&&  and
&= and_eq
& bitand
| bitor
~ compl
! not
!= not_eq
etc...


https://en.cppreference.com/w/cpp/language/operator_alternative

Как уважаемый @experimentalchill объяснил и пруфнул:
For example (and this is stretching my memory), the baseline EBCDIC character set on the IBM mainframes did not have the square bracket characters [ and ]. http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf — страница 197

Тут слова самого БАТИ https://www.youtube.com/watch?v=JYG5LFHkUuE&t=4582

В итоге Бьярне сам это добавил первым, в С95 при интернациолизации стандарта пришла IBM и сказала, что они это используют. Добавили из-за обратной совместимости.
(с)

Вот в итоге и вылилось это в Python внутри C++. Не зря Бьярне говорил: в С++ скрывается лаконичный язык, но скрывается.

А еще вспоминаются слова Линуса: Your hardware limitations shouldn't be a pain for the rest of us. (https://xn--r1a.website/oleg_log/3218 и смотрите ориг пост, там дальше еще 2 упоминания моих мыслей). Хотя про pain тут спорно, но смысла в этом мало, а не все пишут LLVM по вечерам.
oleg_log
Ооо, расскажите, а вы где-то торренты юзаете? я не про пиратство, а использование на проде. Бекапчики и/или свои велосипеды, тот же S3.
Как можно догадаться - распространение новых патчей для игр и бекапы. Ничего интересного я вам не расскажу больше.

Как ФБ в далёком 2010 юзал для апдейтов https://torrentfreak.com/facebook-uses-bittorrent-and-they-love-it-100625/

Кстати, некоторые билд фермы подобное делают: кто-то собрал, а остальные подтянули.
1.15.2 и 1.14.9 вышел, мелочь, но там фиксы в рантайме. Значит не мелочь.

https://twitter.com/golang/status/1303798415529254918?s=21
Оказывается есть проект на Go: Continuous profiling in for pprof compatible profiles.

Проекту почти 2 года, я 1й(?) раз о нём услышал (причем случайно от fgprof https://xn--r1a.website/oleg_log/3326)

Ну и дёготь: Note this repository is very much a proof of concept, it only works on a very basic level. Everything is prone to change, nothing is supported.

https://github.com/conprof/conprof

Стоит так же вспомнить profefe https://github.com/profefe/profefe Который больше похож на полноценное решение, хотя я так и не обкатал на практике.
Forwarded from Good reviewer - Bad reviewer (Oleg Kovalov)
Не поверите кто live. Смотрим на GhostDB (не зря голосовалку выше делали)

https://www.youtube.com/watch?v=RsZREiCRcrU

Ну и репа https://github.com/jakekgrog/GhostDB
Good reviewer - Bad reviewer
Не поверите кто live. Смотрим на GhostDB (не зря голосовалку выше делали) https://www.youtube.com/watch?v=RsZREiCRcrU Ну и репа https://github.com/jakekgrog/GhostDB
Хорошая статья всплыла по ходу обсуждения. Жаль раньше не встречал. Как для начала копания по пейперам вполне ок.

https://en.wikipedia.org/wiki/Cache_replacement_policies
Почему никто еще не постил генератор ямла для кубов????

Даже темная тема есть.

https://k8syaml.com/
В Go 1.15 должны завести хороший фикс на документацию, а именно выкидывание //go:* из документации.

Ведь это не совсем документация, а скорее прагма и/или аннотация (где-то после этих слов температура в комнате увеличилась)

https://github.com/golang/go/issues/37974
Я вообще в map[uint32]uint16 верю :D
Forwarded from Bortlog
Вчера с Олегом разбирали GhostDB https://www.youtube.com/watch?v=RsZREiCRcrU

И там был момент где трекается кол-во соединений с одного и того-же IP
для этого используется map[string]int64.

Так вот я забыл сказать что IPv4 можно хранить как uint32 или кастомный стракт 4х байтовый.
Ну и кол-во соединений одновременных измерять 64 битным интом это как-то расточительно, ни одна машина столько соединений физически не потянет, можно спокойто uint32 для этого использовать.

В общем 'map[uint32]uint32' будет намного компактнее и производительнее.
Ох как мне этот if глаз натёр своим существованием:

func (b *Bus) Add(p Passenger) {
if b.passengers == nil {
b.passengers = make(map[string]Passenger)
}
b.passengers[p.SSN] = p
}


сурс https://xn--r1a.website/count0_digest/4705

Никогда не понимал, зачем все эти поздние инициализации. Да, конечно, это пример, как же еще, но вопрос, что в голове у автора в продакшен коде - остается загадкой.

Ты знаешь, что у тебя есть некая вещь и прикидываешь её поведение. В данном случае это не (супер)оптимизация (кэп), но так же и не (супер)важное телодвижение. Тогда зачем этап инициализации оттягивать к моменту использования? Наверное если бы это было не 1 и не 2 поля, а какой-то компонент (не включили флаг в рантайм - не начали телодвижение), то было бы чуть приятнее.

Писать такое можно, читать и жить тоже, но как говорится: я (пока) не Гослинг, да и ты не RTX 3090.