oleg_log
1.72K subscribers
1.88K photos
131 videos
9 files
2.82K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Функции раньше
- полиморфные
- оптимизация хвостовой рекурсии
- модификаторы доступа для инкапсуляции

Функции сейчас
- разрыв сердца от не собаки

by @zioff
Так-с. Готовь срывать покровы, но они и так сорваны. Программисты не работают по 8ч в день. Большинство. Хорошо это или нет - не знаю (мне точно хорошо %)

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

Вывод: в своей фирме я буду форсить парное программирование с 1го дня.

И не для того, чтобы все пахали, а чтобы задачи закрывались быстро, с двойным вниманием, а в свободное время люди делали, что хотят. К примеру сабмитили мемы в бота Профанктора (ха как красиво рекламу впихнул @libmustdie)

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

Взял с борды (не имедж-борды) таск, на пару накидали код, кинули на ревью, пошли еще 1 взяли или сели ревьювить код других. Ну или свалили домой, ведь на сегодня хватит. А еще нет времени на прокрастинацию.

Готов слушать как вы сильно не согласны @olegkovalov
Yak shaving
[MIT AI Lab, after 2000: orig. probably from a Ren & Stimpy episode.] Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you're working on.

https://en.wiktionary.org/wiki/yak_shaving

Собственно так я и начал писать свою либу jwt, клиент redis, клиент zookeper, движок каф...

Возможно 1 из рекордов, лвл 64 http://boston.conman.org/2018/03/03.1
Тут роадмап Envoy на 2019 огласили, все круто, и тебе HTTP/3, и WASM, и даже поддержка Kafka(Redis, ZK, MySQL уже есть)...даже конкуренты Nginx & HAProxy фичи копируют, вот только судя по гитхабу и стонам соседней тимы не все так вылизано.

А еще Lyft пихает 40М рпс в Редис, однако.

https://blog.getambassador.io/envoy-proxy-in-2019-security-caching-wasm-http-3-and-more-e5ba82da0197
Прост потому что красиво сделано
Узнал, что у одних людей была авария на проде из-за пустых строк.

В Puppet было чууть-чуть криво написан шаблон конфига (пустые строки после иф-ов), что породило неправильные параметры для Varnish...

В итоге кеши не наполнялись правильно и в общем это перегрузило->убило сервисы.

Бойтесь пустых строк
Такой пришел версию подбить от скуки, а тебе говорят заполняй пдф и шли на мыло. Удачи братаны.

Блин, да есть же боты, сложно блин прикрутить было one-click CLA ? аргх

https://github.com/cloudfoundry/go-diodes/pull/23#issuecomment-519414655
В слаке Kong есть канал YELLING где все ходят покричать капсом, если что-то не работает. Прикольно.

(Kong занимается клауд платформаме, в https://konghq.com/)(туда один из наших уходит, после пары месяцев полу-ремоутом, котлинист стал гофером, помянем)
Занесло на хабре почитать перевод статьи про генерики в го, ну то есть комент, чтож еще. И нарвался на шикарную ветку коментов.

Есть такой юзер TheShock, который поливает го со всех возможных шлангов, но тут миленький фейл получился: https://habr.com/ru/company/mailru/blog/462811/#comment_20481883

ТЛДР: почему нет конструкций <T> или [T] ?
Потому что усложнит гошный парсер. Пример из Раста if a as u32 < 5 { ... }
error: < is interpreted as a start of generic arguments for u32, not a comparison

Пример из С#
bool b = f as F < a; // fail
bool b = (f as F) < a; // ok

*злорадно хмыкаю нефурфажным гоферным носиком*
oleg_log
Занесло на хабре почитать перевод статьи про генерики в го, ну то есть комент, чтож еще. И нарвался на шикарную ветку коментов. Есть такой юзер TheShock, который поливает го со всех возможных шлангов, но тут миленький фейл получился: https://habr.com/ru/…
Собственно вопрос про: усложнять ли парсер или усложнять жизнь разрабам?

Пойдешь по первому пути - потеряешь в скорости компиляции (а ведь это хорошая фича).
Пойдешь по второму пути - заставишь лишний раз не юзать генерики где не надо (звучит го-вэй со всеми последствиями)

Я за 1е, доп скобки (type T contr) не так и ужасны, зато смотрится прозрачно.
oleg_log
Поедем с круглыми скобками или двинем в спец символы?
Круглые скобки это то, что предлагается в пропозале
аля func (type T contr)(s []T)

Ну а "спец символы" это всякие <T>, [T], #$!#$ и что угодно можно придумать-стащить с других языков.
How is git commit sha1 formed

Сколько жил, столько думал, что в хеше комита есть привязка ко времени. А вот нифига.

(printf "commit %s\0" $(git cat-file commit HEAD | wc -c); git cat-file commit HEAD) | sha1sum
(на макоси у меня прост shasum заработало)

gist с разбором https://gist.github.com/masak/2415865

Сурс https://t.me/rxd_txd/1634

UPD: я ошибся, см след пост https://t.me/oleg_log/1631
oleg_log
How is git commit sha1 formed Сколько жил, столько думал, что в хеше комита есть привязка ко времени. А вот нифига. (printf "commit %s\0" $(git cat-file commit HEAD | wc -c); git cat-file commit HEAD) | sha1sum (на макоси у меня прост shasum заработало)…
Ой я дурнооооой.
Время же указано в git cat-file commit HEAD

Конечно же при git reset HEAD~1 и повторном комите будет другой хеш.

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

И потом в пятницу вместе это разбирать, находить ответы, возможно делать таски на будущее. Звучит как улучшения рабочего процесса.

Кстати легальный способ не работать. Тимлиду впарить не сложно будет, ведь "мы лучшем поймем наши проблемы и дыры в знаниях". Пользуйтесь 😈