Forwarded from Artem Navoiev
Всем привет мы запустили свой блог и написали о 2021 в разрезе компании, фич и комьюнити
- https://victoriametrics.com/blog/momentum-2021/
- https://victoriametrics.com/blog/features-roundup-2021/
- https://victoriametrics.com/blog/user-community-2021/ (@patsevanton ты там есть :) )
- https://victoriametrics.com/blog/momentum-2021/
- https://victoriametrics.com/blog/features-roundup-2021/
- https://victoriametrics.com/blog/user-community-2021/ (@patsevanton ты там есть :) )
А хотите совет прожонного гофера? (в плохом смысле)
(на самом деле там было 4 запроса с временной таблицей, инсерт-селект из таблицы и еще
Да, линтер бы включить..
func doInTx(tx ...) error {
const querySelect = `SELECT ...`
if err := tx.Exec(querySelect); err !=nil {
}
const queryInsert = `INSERT INTO ...`
if err := tx.Exec(querySelect); err !=nil {
}
}
Вот угадайте, кто не замечал этой очепятки/копипасты 30 минут и грешил на драйвер, ведь в psql все работает блин! Неиспользованные константы еще большее зло, чем ругательство компилятора на неиспользуемые переменные. Не, ну надо ж так было...(на самом деле там было 4 запроса с временной таблицей, инсерт-селект из таблицы и еще
COPY. Конечно же думаешь не об потенциальной опечатке, а о чем-то hi-lvl.Да, линтер бы включить..
#ненормальное Implementing a quantum computer emulator in SQL
https://explainextended.com/2021/12/31/happy-new-year-13/
В конце статьи ссылки на предыдущие годы, там тоже забористый SQL.
https://explainextended.com/2021/12/31/happy-new-year-13/
В конце статьи ссылки на предыдущие годы, там тоже забористый SQL.
EXPLAIN EXTENDED
Happy New Year: quantum computer emulator in SQL - EXPLAIN EXTENDED
This is the 2021 New Year's SQL post on Explain Extended. It shows how to emulate a quantum computer using PostgreSQL.
Ой, Билл, а сколько бессонных ночей было из-за этих Жав потом...та даже меньше месяца назад, хех.
https://twitter.com/TechEmails/status/1478785899009875968
https://twitter.com/TechEmails/status/1478785899009875968
Красота. Docker compose for tests considered useless.
https://github.com/mvdan/dockexec
go test -exec='dockexec postgres:12.1'https://github.com/mvdan/dockexec
GitHub
GitHub - mvdan/dockexec: Run Go tests inside a Docker image
Run Go tests inside a Docker image. Contribute to mvdan/dockexec development by creating an account on GitHub.
Вот ты, <гофер-нейм>, мокаешь время?
Не совсем этого понимаю этого. Ну как, цели понятны и очевидны, даже правильные, но...почему не сделать как-то проще? к примеру вместо
Просто меня напрягает многословность всех этих интерфейсов для времени, и по сути только в 1 несчастном месте нужно его изменять - там где делаешь
Можно вспомнить всякие
Не совсем этого понимаю этого. Ну как, цели понятны и очевидны, даже правильные, но...почему не сделать как-то проще? к примеру вместо
time.Now() использовать timeNow() ? где var timeNow = time.Now // const unless in tests.Просто меня напрягает многословность всех этих интерфейсов для времени, и по сути только в 1 несчастном месте нужно его изменять - там где делаешь
time.Now(), только оно ведь меняется, кэп.Можно вспомнить всякие
time.After(...) и прочие таймауты, но опять же, в чем ужас поменять настройки в тестах? я хз. Поясните мне, мокеры времени, зачем так?Говорят по ToS Github они так могут, кек. Вообще, мейнтейнер снежинка это сложно. Вообще, зависимости это плохо, во как можно мысль в абсолют увести.
Forwarded from How to Go wrong (Alexey Palazhchenko)
LIBERTY LIBERTY LIBERTY, или о пользе Minimal Version Selection и Go Module Proxy
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
BleepingComputer
Dev corrupts NPM libs 'colors' and 'faker' breaking thousands of apps
Users of popular open-source libraries 'colors' and 'faker' were left stunned after they saw their applications, using these libraries, printing gibberish data and breaking. Some surmised if the NPM libraries had been compromised, but it turns out there's…
How to Go wrong
LIBERTY LIBERTY LIBERTY, или о пользе Minimal Version Selection и Go Module Proxy https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
В коментах выше скинули Reuters и у автора обострение прост, расходимся и желаем здоровья. Ну и пиним зависимости, и выключаем депендабот.
How to Go wrong
LIBERTY LIBERTY LIBERTY, или о пользе Minimal Version Selection и Go Module Proxy https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
The right path forward for NPM and package managers like it is to stop preferring the latest possible version of all dependencies when installing a new package. Instead, they should prefer to use the dependency versions that the package was actually tested with, or versions as close as possible to those. I call that a high-fidelity build.
https://research.swtch.com/npm-colors
https://research.swtch.com/npm-colors
oleg_log
Писал об этом в твитор, а тут забыл. Короч, если взять yaml и ВНЕЗАПНО вставить в него еоф где-то посередине, то с большой долей вероятности у вас останется валидный ямл. И это блин круто.
Оно не только круто, оно блин и круто-страшно.
Вот делаешь простую операцию копирования конфига и у тебя моргает вафля/впн/контекст свитч в ядре/залипание шифта и копируется не весь файл, но при этом остаётся валидным.
А потом думай, почему все сломалось, ведь конфиг валидный же был скопирован. Хотя если смотреть на подход Clickhouse то хешировать надо каждый кусочек информации, единственная защита от изобретений человечества.
Возможно поэтому json, hcl, xml более правильные форматы для конфигов, есть
Вот делаешь простую операцию копирования конфига и у тебя моргает вафля/впн/контекст свитч в ядре/залипание шифта и копируется не весь файл, но при этом остаётся валидным.
А потом думай, почему все сломалось, ведь конфиг валидный же был скопирован. Хотя если смотреть на подход Clickhouse то хешировать надо каждый кусочек информации, единственная защита от изобретений человечества.
Возможно поэтому json, hcl, xml более правильные форматы для конфигов, есть
{ и }. Жаль только в JSON5 есть коменты.Нет с большой буквы нет.
https://www.heltweg.org/posts/who-wrote-this-shit/
Зачем оправдывать методы длиной в 1к строк, отсутствие миграций БД, 0 комментов в магическим числам, полный бардак в иерархии папочек и файликов, 3+ способов сделать одно и тоже в контексте бизнес логики?
Да, нет времени, его никогда нет и этот плохой бизнес только требует фич, да, нет опыта, но...почему отсутствие опыта должно сказать "ах, ну ладно, бывает)))))" ?
Я еще согласен с кодом 10+ лет давности, многое было в новинку и мало кто понимал, что кода будет больше и с этим надо будет жить, но все что 5 лет и моложе...ох нет, если кто-то wrote так, то это shit и .
https://www.heltweg.org/posts/who-wrote-this-shit/
Зачем оправдывать методы длиной в 1к строк, отсутствие миграций БД, 0 комментов в магическим числам, полный бардак в иерархии папочек и файликов, 3+ способов сделать одно и тоже в контексте бизнес логики?
Да, нет времени, его никогда нет и этот плохой бизнес только требует фич, да, нет опыта, но...почему отсутствие опыта должно сказать "ах, ну ладно, бывает)))))" ?
Я еще согласен с кодом 10+ лет давности, многое было в новинку и мало кто понимал, что кода будет больше и с этим надо будет жить, но все что 5 лет и моложе...ох нет, если кто-то wrote так, то это shit и .
oleg_log
Нет с большой буквы нет. https://www.heltweg.org/posts/who-wrote-this-shit/ Зачем оправдывать методы длиной в 1к строк, отсутствие миграций БД, 0 комментов в магическим числам, полный бардак в иерархии папочек и файликов, 3+ способов сделать одно и тоже…
Хороший вопрос в продолжение темы: насколько вы довольно своим старым кодом? (думаю вы понимаете, что важно выбрать по варианту за каждый период, если он есть)
Anonymous Poll
32%
6 месячной давности - все ок
43%
6 месячной давности - я уже могу лучше
19%
2 годичный - все ок
48%
2 годичный - ужас, как я так мог/ла??
7%
5 годичный - все ок
50%
5 годичный - я был/а молод/а и мне нужно было в айти
2%
Другое (выберите этот вариант, но никакие другие тогда + комент с объяснением, либо в лс)
14%
Результаты
oleg_log
Хороший вопрос в продолжение темы: насколько вы довольно своим старым кодом? (думаю вы понимаете, что важно выбрать по варианту за каждый период, если он есть)
Мульти-ответы, не бойтесь выбрать, а потом сабмитнуть
Отличный совет с сегодняшнего и наболевшего, чтобы вы в опросе выше голосовали "ок" через 5 лет.
Минимизируйте контекст для читателя, блин.
Даже пофиг на коменты, на тесты,даже пофиг на форматирование, но допустим есть функция на 200 строк, даже с хорошим большим экраном это 40-80 строк, зачем больше? (оптимизаторы L1i - молчите).
И ладно там эти 200 строк, но еще оказывается, что есть переменная в начале фции, которая используется 2 раза, но её использование видно только на другой "странице". Ну вот почему её не объявить ближе к месту использования? Чаще я встречаю ответ "ну, да, можно было". Однако мысленный контекст, который надо держать в голове - больше чем надо.
Другое мое любимое - объявлять сперва фции хелперы, а потом уже переходить к чему-то важному. Чувствуется Си, что сперва надо объявить, а потом юзать, но уже перед 2022 с этим стало проще во многих языках.
Мне не надо читать
Больше чем уверен, что для многих это кеповые вещи, но...а почему оно так часто на практике встречается, а?
Хотелось бы сюда приплести separation of concerns, но уже лень, просто из 200 строчной фции чаще всего выплывает 3-4 разных вещи, жили бы они в 3-4 фциях НИЖЕ того места где используются и это было бы счастье для читателя, о котором забывают, и писателя, который даже о себе не думает.
Минимизируйте контекст для читателя, блин.
Даже пофиг на коменты, на тесты,
И ладно там эти 200 строк, но еще оказывается, что есть переменная в начале фции, которая используется 2 раза, но её использование видно только на другой "странице". Ну вот почему её не объявить ближе к месту использования? Чаще я встречаю ответ "ну, да, можно было". Однако мысленный контекст, который надо держать в голове - больше чем надо.
Другое мое любимое - объявлять сперва фции хелперы, а потом уже переходить к чему-то важному. Чувствуется Си, что сперва надо объявить, а потом юзать, но уже перед 2022 с этим стало проще во многих языках.
Мне не надо читать
writeTempFile фцию, если я еще не понял, где она вызывается. Мне слабо поможет тело isHelpRequired(args []string) bool если я хз кто это будет дергать. Согласитесь, в этой мысли что-то есть. Заметьте, я о приватных вещах пакета говорю (хотя и паблик вещи ок).Больше чем уверен, что для многих это кеповые вещи, но...а почему оно так часто на практике встречается, а?
Хотелось бы сюда приплести separation of concerns, но уже лень, просто из 200 строчной фции чаще всего выплывает 3-4 разных вещи, жили бы они в 3-4 фциях НИЖЕ того места где используются и это было бы счастье для читателя, о котором забывают, и писателя, который даже о себе не думает.
Forwarded from пивной негодяй (truhán de la cerveza) ඞ
This media is not supported in your browser
VIEW IN TELEGRAM
зачем нужны типы, если string уже придумали
Ничто так не даёт большего буста ЧСВ, чем работа в 12 терминалах одновременное, когда ты рестартишь systemd сервисы и смотришь на красивый возврат метрик в норму.
Каеф.
Каеф.