Я так люблю, когда программисты оптимизируют количество нажатий клавиш. Подозреваю, что сэкономленное время они тратят на саморазвитие
Forwarded from addmeto (Grigory Bakunov)
Brave стал первым из популярных браузеров, поддержавших протокол IPFS, и это большое дело, потому что это система децентрализации, по которой невозможно заблокировать контент.
Думайте об этом, как о торренте для каждой страницы, можно сделать целые сайты, которые никак невозможно заблокировать, потому что все это забирается не с единого сервера, а из совершенно разных частей интернета. Очень хочется надеяться, что IPFS или любой другой протокол децентрализации подержат и другие браузеры. https://www.zdnet.com/article/brave-becomes-first-browser-to-add-native-support-for-the-ipfs-protocol/
Думайте об этом, как о торренте для каждой страницы, можно сделать целые сайты, которые никак невозможно заблокировать, потому что все это забирается не с единого сервера, а из совершенно разных частей интернета. Очень хочется надеяться, что IPFS или любой другой протокол децентрализации подержат и другие браузеры. https://www.zdnet.com/article/brave-becomes-first-browser-to-add-native-support-for-the-ipfs-protocol/
ZDNet
Brave becomes first browser to add native support for the IPFS protocol
Brave users will now be able to seamlessly access ipfs:// links.
Golang — он как утконос. Фиговая утка и фиговый бобёр, уродский чёрт, но работает хорошо
☕️ Мерлин заваривает τσάι 🐌
Я так люблю, когда программисты оптимизируют количество нажатий клавиш. Подозреваю, что сэкономленное время они тратят на саморазвитие
Разверну свою мысль: при использовании любого редактора с автодополнением ты печатаешь не
Что у меня, что у моих знакомых непосредственно *набор* исходного кода занимает максимум четверть рабочего времени -- большую часть времени ты думаешь что и как написать или читаешь исходники.
Да, может быть я сэкономлю 2% времени от 25% общей работы, используя краткие и непонятные конструкции, но лучше я сэкономлю 1% от 75% времени -- и кучу мыслетоплива в придачу.
Так что предпочту написать
encodext.Binary.Marshal, а скорее что-то типа enco↧↲.B↲.M↧↲. А если у вас стоит какой-нибудь TabNine, то автодополняться у вас будут часто целые блоки кода.Что у меня, что у моих знакомых непосредственно *набор* исходного кода занимает максимум четверть рабочего времени -- большую часть времени ты думаешь что и как написать или читаешь исходники.
Да, может быть я сэкономлю 2% времени от 25% общей работы, используя краткие и непонятные конструкции, но лучше я сэкономлю 1% от 75% времени -- и кучу мыслетоплива в придачу.
Так что предпочту написать
customerNameTitled вместо nt -- будущий я поблагодарит меня сегодняшнего.Когда делаешь ещё один HTTP роутер и не можешь придумать как отличиться от остальных
https://www.artstation.com/artwork/lxKNdG
https://www.artstation.com/artwork/lxKNdG
Ожидания оптимистов: Ордусь или Меганезия
Ожидание пессимистов: «1984», «Мы»
Реальность: «День опричника»
Ожидание пессимистов: «1984», «Мы»
Реальность: «День опричника»
Дежурное напоминание: пожалуйста, не используйте JWT вместо сессионных ключей, особенно если пользователь ходит буквально только до одного сервиса. Это не несёт вообще никаких плюшек и лишь усложняет логику аутенфикации. Проверка подписи на токене абсолютно бессмысленна, а хранить толстое состояние клиента в токене просто неразумно.
Самый нормальный случай использования токена -- это oauth с третьесторонними сервисами авторизации типа google.
Самый нормальный случай использования токена -- это oauth с третьесторонними сервисами авторизации типа google.
👎1
Forwarded from Daily Geek News (Grigory Bakunov)
У Кайла Митчела есть крутая тема с разбором опенсорс лицензий человеческим языком. Почитайте в первую очередь про MIT и AGPL https://writing.kemitchell.com/series/line-by-line.html
Kemitchell
/dev/lawyer
law, technology, and the space between
☕️ Мерлин заваривает τσάι 🐌 pinned «Релизнулся go 1.15.8 с фиксами для компилятора https://github.com/golang/go/issues?q=milestone%3AGo1.15.8+label%3ACherryPickApproved»
Для меня ближайший релиз Go 1.16 -- один из интереснейших, помимо конечно возможного будущего релиза с дженериками.
Основной момент -- go:embed директива. Это ведь не просто способ встраивать HTML админки в бинарники сервисов или ASCII арт для CLI утилит. Для него можно найти массу интересных применений:
+ Встраивание SQL запросов и миграций из отдельных
+ Метаинформация для бинарника: лицензия, help, версия и заметки к релизу, тот же README файл;
+ Предрасчитанные таблицы значений;
+ Артефакты обучения различных классификаторов -- например фитим k-means на питоне, сохраняем параметры в файл и встраиваем в go бинарник;
Однм из самых любопытных на мой взгляд вещей -- использование DSL в отдельных файлах для своей программы. Например, из YAML спеки не сложно построить CLI
В коде будет что-то типа
Да, можно сказать, что возможность делать всё вышеперечисленное была и раньше -- да я сам встраивал статический SQL и даже небольшую вики. Однако это требовало использования сторонних инструментов с go generate, настройки проверки пропущенных вызовов go:generate в CI, да и выглядело довольно громоздко -- здоровенные файлы с байтовыми блобами в git.
Новый же механизм немного более изящен, да и наверняка будет поддержан сотней других инструментов -- а экосистема вокруг фичи мне кажется частенько важнее самой фичи.
Основной момент -- go:embed директива. Это ведь не просто способ встраивать HTML админки в бинарники сервисов или ASCII арт для CLI утилит. Для него можно найти массу интересных применений:
+ Встраивание SQL запросов и миграций из отдельных
.sql файлов;+ Метаинформация для бинарника: лицензия, help, версия и заметки к релизу, тот же README файл;
+ Предрасчитанные таблицы значений;
+ Артефакты обучения различных классификаторов -- например фитим k-means на питоне, сохраняем параметры в файл и встраиваем в go бинарник;
Однм из самых любопытных на мой взгляд вещей -- использование DSL в отдельных файлах для своей программы. Например, из YAML спеки не сложно построить CLI
flags:
- short: g
long: [group-by, gb]
required: false
type: string
desc: select field as record grouping attribute
В коде будет что-то типа
//go:embed cli.yaml
var cliSpec []byte
...
var cli = clitool.MustParse(clispec)
var errCall = cli.Call(os.Args[1:])
var field, ok = cli.Get("g").String()
Да, можно сказать, что возможность делать всё вышеперечисленное была и раньше -- да я сам встраивал статический SQL и даже небольшую вики. Однако это требовало использования сторонних инструментов с go generate, настройки проверки пропущенных вызовов go:generate в CI, да и выглядело довольно громоздко -- здоровенные файлы с байтовыми блобами в git.
Новый же механизм немного более изящен, да и наверняка будет поддержан сотней других инструментов -- а экосистема вокруг фичи мне кажется частенько важнее самой фичи.
Еееее
В gitlab пайплайны посыпались из-за того, что вместо master в новых репозиториях создаётся main ветка. Обожаю вот когда чьи-то тараканы в IT создают проблемы совершенно посторонним людям
В gitlab пайплайны посыпались из-за того, что вместо master в новых репозиториях создаётся main ветка. Обожаю вот когда чьи-то тараканы в IT создают проблемы совершенно посторонним людям