Size: a a a

2019 August 25
oleg_log
В этой статье прекрасно все, но начало доставляет с особым изыском:

Bringing Serverless to a Web Page Near you with Hugo & Kubernetes
Learn how you can migrate your Hugo static sites over to OpenFaaS including custom domains, TLS and CI/CD through OpenFaaS Cloud (or GitLab).

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

k8s вещь прикольная, Hugo вроде бы работает (хотя некоторым бегам я удивлялся), OpenFaaS делают все опенсурс и за это им 👍

Конечно статью стоит рассматривать как подробный туториал, даже близкий к жизненным условиям(жаль), но блин, смешно :D

https://www.openfaas.com/blog/serverless-static-sites/

(сам думал про серию статей "useful overengineering" где берется 3-4 технологии для вязкости, все это жарится до дыма, а потом это шкрябается по гитхабу, аж пот у коммюнити на лоб выступает)
источник
oleg_log
Как вы относитесь к просьбам о донате на каналах, в блогах или подкастах?
Анонимный опрос
26%
Положительно, всем надо есть
18%
Норм, если редко просят (раз в неделю? месяц?)
10%
Если деньги помогут закончить пост/запись/турпоездку/купить новую технику/тд
5%
Только если лично мне даст профит (спец доступ, материалы для патреонов и тд)
34%
Нейтрально, все рано не собираюсь платить
6%
Резко негативно (прям аш трисёт от просьбы доната)
1%
Другое мнение мне в лс @olegkovalov
Проголосовало: 567
источник
oleg_log
Кстати похожий паттерн я видел в Амазоне (хотя там вся "стдлиб" на Си была переписана, либо завернута в свои функции)
источник
oleg_log
+256
вот чат @append_only_log
сидим кушаем, nightcall слушаем
(обычно про работу и технологии, жерк-флуд отдельно)
источник
2019 August 26
oleg_log
Одна вещь, которая часто раздражает глаза - отсутствие документации.

Приходят люди с вопросом: а что, если я сделаю clone в вашем сервисе? Создастся глубокая или поверхностная копия?

Вместо того, чтобы это вынести 1 раз в доку и забыть (а добавить комент в коде на гитхабе не дорого), люди-авторы просто лезут в код и проверяют логику в коде.

Это конечно хороший аргумент против устаревания документации и что она может начать врать, но может в абсолют выводить не надо, а?..
источник
oleg_log
источник
oleg_log
Как бороться с пхп в 2019 ? Правильно - ругать за отсутствие diversity.

The conference has been canceled and won't be continued. Sorry for the inconvenience (и дальше 3 ссылки с наездом).

https://2019.phpce.eu/en/
источник
oleg_log
На той неделе я жмакнул релиз одной либы на го и у меня упал билд. Так как в коде все обмазано unsafe то угадать причину было не сложно.

Вот код, который прост кастит кусок памяти под объектом из стдлиб к моему кастомному https://github.com/cristaloleg/sabotage/blob/master/once.go

Вот упавший билд с одним тестом (хотя на самом деле другие тоже неверны) https://travis-ci.org/cristaloleg/sabotage/jobs/575700353

И конечно же линия, меняющая порядок полей в структуре и соотв. меняющая их порядок в памяти, и соотв. мой spy-объект смотрит не на тот кусок памяти https://github.com/golang/go/commit/ca8354843ef9f30207efd0a40bb6c53e7ba86892#diff-5ec3d154401e5eb1017f8ce94b6b64f0R19

Теперь самое смешное: мне сегодня снилось(да, мне снится код), где я дебажил подобное, там кто-то поменял порядок полей, а структура инициализировалась без указания полей (аля A{10, "kek"} вместо A{a: 10, b: "kek"})

Короч, избегаем unsafe, ведь реально unsafe. Внезапно.
источник
oleg_log
источник
oleg_log
Недавно узнал одного разраба, с лычкой distributed engineer. Думаю: ооо, ща я из него инфу повытягиваю для чтения на выходных.

А нет, оказывается нжуно запустить stateless микросервис в двух дц и внутри намазать RoR дает возможность носить такой бейджик #саксес_сториз :(
источник
oleg_log
Какое-то время назад пару человек подкинули идею собрать айти-акронимы, и вот самые полезные. В коментах приветствуется дополнение)

LGTM — looks good to me
SGTM — sounds good to me (менее уверенное чем ЛГТМ, просьба еще кого-то подтвердить)
ACK — acknowledgement (дада, из TCP протокола)
NACK/NAK — negative acknowledgement

AFAIK / AFAIR / AFAICT — as far as I know / recall / can tell (3й вариант редко встречал)
IIRC — if I recall correctly
RTFM — Read the freaking/fuking/factory manual (да, чтобы вам меньше в коменты писать было)

WIP — work in progress (не мержить и возможно не делать ревью)
PTAL — please take a look (можно просто kindly ping)
RFC — request for comments (когда явно хочется коментов)
IANAL — “I am not a lawyer” (обычно речь про лицензию или копипасту откуда-то)

На эти особенно стоит обратить внимание. Возможно всех опишу отдельно, поэтому сейяас без пояснений-примеров:
DRY — do not repeat yourself
KISS — keep it stupid simple
YAGNI — you ain't gonna need it
YMMV — your mileage may vary
WET — write everything twice
AHA — avoid hasty abstractions

Просто полезное, но порой пугает людей:
s/foo/bar/ — replace foo with bar; this is sed syntax
s/foo/bar/g — replace foo with bar throughout your entire change

UPD:
OTOH — on the other hand
TBH — to be honest
YMMH — you might mean here

Источники, что я это все не выдумал:
https://github.com/golang/go/wiki/CodeReview
https://www.freecodecamp.org/news/what-do-cryptic-github-comments-mean-9c1912bcc0a4/
https://kentcdodds.com/blog/aha-programming
источник
oleg_log
как.все.просто.
(неплохой бложек на все темы. внимание много текста и есть политика)
источник
oleg_log
Chrome: Settings -> Advanced -> Site Settings -> Notifications -> change "Ask Before Sending" to "Blocked".

Все, теперь не будет бесконечных поп-апов "можно ли спамить вас уведомлениями".

You're welcome.
источник
oleg_log
А вот и практическая часть использования phpgrep от Искандера!

Лайк-репост-колокольчик 🙌

https://habr.com/ru/post/464893/
источник
2019 August 27
oleg_log
источник
oleg_log
Одна из лучших шпаргалок для собесов.
источник
oleg_log
Решаю LeetCode и вылетает у меня решение, причем на очень странных данных - дереве из одного элемента 0, возвращается 42. Что же могло пойти не так?

var maxValue = -1 << 31

func maxPathSum(root *TreeNode) int {
   _ = maxPathSumAux(root)
   return maxValue
}

func maxPathSumAux(node *TreeNode) int {
   // ну тут короч решение :)
}


Ответ немного очевиден: leetcode втупую гоняет юнит тесты, и (ВНЕЗАПНО, ага, ща) глобальную переменную я не переинициализирую. Короч -1 в статистику. Эх...

(задачка: https://leetcode.com/problems/binary-tree-maximum-path-sum/)

А еще для инициализации можно юзать math.MinInt32, но рефлексы асм-щика не переучить (дока https://godoc.org/math#pkg-constants)
источник
oleg_log
И каким же браузером вы пользуетесь с пк?
Анонимный опрос
48%
Chrome
7%
Chromium
28%
Firefox
1%
Opera
0%
Edge
1%
Vivaldi
9%
Safari
2%
Brave
0%
IE
3%
Other?
Проголосовало: 917
источник
oleg_log
В скором времени все больше тулзов будет переходить на go/analysis, для более удобной работы с кодом на го. Смотрится неплохо, если раньше go/* пакеты были просто либами, то эта почти фреймворк, в хорошем смысле.
(Автор, пингани меня в лс плес)
источник
oleg_log
источник