> did you know? It takes $420k per year to run Lichess. We publish the detailed costs at http://lichess.org/costs
Какие делаем выводы из таблицы?
https://twitter.com/ornicar/status/1482671675489632257
Какие делаем выводы из таблицы?
https://twitter.com/ornicar/status/1482671675489632257
Twitter
Thibault D
did you know? It takes $420k per year to run Lichess. We publish the detailed costs at lichess.org/costs
Мне даже как-то это нравится. Люди допускают одни и те же типы ошибок. Это прям радует, возможно мы живём в детерминированном мире и через 5 лет все возможные ошибки (не смейтесь) будут иметь свой тег в CVE DB и все можно будет покрыть линтером или какой-то более умной верификацией. Хотя кого я обманываю...
https://blog.rust-lang.org/2022/01/20/cve-2022-21658.html
https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use
https://blog.rust-lang.org/2022/01/20/cve-2022-21658.html
https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use
oleg_log
Не переношу скрипты в Баше, но приходится с этим жить. Не раз уже вплывали шаблоны для ЧЕЛОВЕЧЕСКИХ скриптов, но постоянно приходится вспоминать. Вот этот вполне норм смотрится. Скорее всего самое главное там в начале, а конкретно set -Eeuo pipefail. h…
DEV Community
The Only Bash Scripting Cheat Sheet That You Will Ever Need
Introduction No matter if you are a DevOps/SysOps engineer, developer, or just a Linux...
Искандер опять про оптимизацию на Хабре. Забыл раньше запостить, эх.
https://habr.com/ru/post/645727/
https://habr.com/ru/post/645727/
Хабр
Ускоряем hugo на 20% простым изменением в пакете reflect
Найти значительное узкое место в производительности стандартной библиотеки или зрелого приложения — это редкость. Я был удивлён, когда в top10 списке CPU-профиля hugo при сборке digitalgov.gov на...
This media is not supported in your browser
VIEW IN TELEGRAM
Оказывается достаточно нажать Cmd и тягать иконки как надо. Джва года ленился найти как менять порядок.
Нашел красивую тулзу у одного из подписчиков.
> Run mock server based on API contract with one command. Written in Go
Полезное, жаль приходилось такое летом ручками делать, сам хз чего я не додумался загуглить генератор.
Лайк, репост, колокольчик https://github.com/go-dummy/dummy
> Run mock server based on API contract with one command. Written in Go
Полезное, жаль приходилось такое летом ручками делать, сам хз чего я не додумался загуглить генератор.
Лайк, репост, колокольчик https://github.com/go-dummy/dummy
GitHub
GitHub - neotoolkit/dummy: Run mock server based off an API contract with one command
Run mock server based off an API contract with one command - GitHub - neotoolkit/dummy: Run mock server based off an API contract with one command
Attribute Macro
The macro looks for references created in the code by use of the & or &mut operators or the ref and ref mut bindings, and wraps them with ::unbounded::reference() to unbind their lifetimes, causing the borrow checker to effectively ignore them.
https://docs.rs/you-can/latest/you_can/attr.turn_off_the_borrow_checker.html
А ведь прикольно.
you_can::turn_off_the_borrow_checkerThe macro looks for references created in the code by use of the & or &mut operators or the ref and ref mut bindings, and wraps them with ::unbounded::reference() to unbind their lifetimes, causing the borrow checker to effectively ignore them.
https://docs.rs/you-can/latest/you_can/attr.turn_off_the_borrow_checker.html
А ведь прикольно.
docs.rs
turn_off_the_borrow_checker in you_can - Rust
You can’t “turn off the borrow checker” in Rust, and you shouldn’t want to. Rust’s references aren’t pointers, and the compiler is free to decimate code that tries to use references as though they are. If you need raw pointer behaviour in Rust, don’t use…
Сидел в шаббат прокрастинировал и решил чутьчуть поправить Github Actions, в итоге дошел до такого:
1 Checkout code
2 Install Go
3 Go Format
4 Go Tidy
5 Go Mod
6 Go Generate
7 Go Build
8 Go Test
9 Upload Coverage
https://github.com/cristalhq/.github/blob/main/.github/workflows/build.yml
Кроме как релиза (соседний файл) и линтера (соседний файл через пару коммитов) я даже хз, что можно добавить или убрать. Есть ли варианты у вас? Речь о Go, конечно же.
1 Checkout code
2 Install Go
3 Go Format
4 Go Tidy
5 Go Mod
6 Go Generate
7 Go Build
8 Go Test
9 Upload Coverage
https://github.com/cristalhq/.github/blob/main/.github/workflows/build.yml
Кроме как релиза (соседний файл) и линтера (соседний файл через пару коммитов) я даже хз, что можно добавить или убрать. Есть ли варианты у вас? Речь о Go, конечно же.
Еще одна красивая история багов, от Pagerduty о Zookeeper. Статья за 2015, но это мало что меняет, разве что пофикшено уже.
https://www.pagerduty.com/blog/the-discovery-of-apache-zookeepers-poison-packet/
https://www.pagerduty.com/blog/the-discovery-of-apache-zookeepers-poison-packet/
Хах, сейчас словил забавную вещь.
Я недавно пересел с iPhone 7 на 11, но любимый 2FA не перерегал и фиг с ним, залогинился в важное и забил.
Но вот, пришел ноут и как можно догадаться пришлось логиниться в Github и что-то там еще ненужное, достал старый телефон и давай 6 цифр переписывать.
Но вот, блин, незадача, НИ ОДИН ИЗ КОДОВ 2FA НЕ ПОДХОДИТ. ВАЩЕ.
После 2х мин вбивания кодов по разным сервисам стало понятно, что проблема глобальная и что-то тут не так.
И все оказалось просто - время на телефоне съехало на пару десятков дней и на пару часов почему-то. В итоге локально коды генерировались не те, что надо. Изи.
Только написав это я заметил опцию в Google Authenticator, которая генерит QR который ты считываешь другим телефоном и все сразу переносишь. Афигенно скажу я вам.
Я недавно пересел с iPhone 7 на 11, но любимый 2FA не перерегал и фиг с ним, залогинился в важное и забил.
Но вот, пришел ноут и как можно догадаться пришлось логиниться в Github и что-то там еще ненужное, достал старый телефон и давай 6 цифр переписывать.
Но вот, блин, незадача, НИ ОДИН ИЗ КОДОВ 2FA НЕ ПОДХОДИТ. ВАЩЕ.
После 2х мин вбивания кодов по разным сервисам стало понятно, что проблема глобальная и что-то тут не так.
И все оказалось просто - время на телефоне съехало на пару десятков дней и на пару часов почему-то. В итоге локально коды генерировались не те, что надо. Изи.
Только написав это я заметил опцию в Google Authenticator, которая генерит QR который ты считываешь другим телефоном и все сразу переносишь. Афигенно скажу я вам.
oleg_log
Сидел в шаббат прокрастинировал и решил чутьчуть поправить Github Actions, в итоге дошел до такого: 1 Checkout code 2 Install Go 3 Go Format 4 Go Tidy 5 Go Mod 6 Go Generate 7 Go Build 8 Go Test 9 Upload Coverage https://github.com/cristalhq/.github/blo…
The workflow is not valid. .github/workflows/build.yml (Line: 20, Col: 3): Error calling workflow 'cristalhq/.github/.github/workflows/release.yml@96edb7a4323a57e1971a3fbb778417aed97d92da'. The workflow 'cristalhq/.github/.github/workflows/release.yml@96edb7a4323a57e1971a3fbb778417aed97d92da' is requesting 'actions: read, checks: read, deployments: read, discussions: read, issues: read, packages: read, pages: read, pull_requests: read, repository_projects: read, statuses: read, security_events: read, id_token: read', but [...]
but [...] 👍Вообще Github немного страдает с полноценностью, то у них не было scopes (может и до сих пор нет) для oauth2 и приложение требовало больше, чем надо (что не супер важно, но хочется быть более дружественным к пользователю), так теперь нет пермишонов для релизов.
Ну вот какая проблема сделать
permissions: releases: write ? хз, тож самое с permissions: read-all|write-all красиво, но как дать всему рид и тольком одному врайт? хз.https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
И кстати https://t.me/oleg_log/4704
GitHub Docs
Workflow syntax for GitHub Actions - GitHub Docs
A workflow is a configurable automated process made up of one or more jobs. You must create a YAML file to define your workflow configuration.
Очень крутой постмортем Roblox после 3х суток афк.
https://blog.roblox.com/2022/01/roblox-return-to-service-10-28-10-31-2021/
Объясните только одно - почему не ревертнули деплой, когда все стало плохо и латенси скакнуло за 2 секунды? Ресайз машин в такой момент кажется оч дурным решением, даже если бы это помогло, то как-то не особо бы объяснило почему перформанс фича требует в 2 раза больше ресурсов.
Шото смотрится неоч как по мне, ошибки все допускают, но можно было лучше к такому переезду подойти + стриминг можно накатить постепенно, этож не leader election фича (или хотя бы не каждая нода должна её сразу использовать).
> We have reviewed how our services use Consul’s KV store and health checks, and have split some critical services into their own dedicated clusters, reducing load on our central Consul cluster to a safer level.
Люблю такое, жаль делается это после инцидентов. Привет, Google (отсылка к падению всего год назад из-за диска и общих аккаунтов между ютюбом и гцп, мечта просто жить в 1й корзине со всем миром).
UPD: спасибо Евгению, фича у них была врублена раньше, но не для сервисов с трафиком.
https://blog.roblox.com/2022/01/roblox-return-to-service-10-28-10-31-2021/
Объясните только одно - почему не ревертнули деплой, когда все стало плохо и латенси скакнуло за 2 секунды? Ресайз машин в такой момент кажется оч дурным решением, даже если бы это помогло, то как-то не особо бы объяснило почему перформанс фича требует в 2 раза больше ресурсов.
Шото смотрится неоч как по мне, ошибки все допускают, но можно было лучше к такому переезду подойти + стриминг можно накатить постепенно, этож не leader election фича (или хотя бы не каждая нода должна её сразу использовать).
> We have reviewed how our services use Consul’s KV store and health checks, and have split some critical services into their own dedicated clusters, reducing load on our central Consul cluster to a safer level.
Люблю такое, жаль делается это после инцидентов. Привет, Google (отсылка к падению всего год назад из-за диска и общих аккаунтов между ютюбом и гцп, мечта просто жить в 1й корзине со всем миром).
UPD: спасибо Евгению, фича у них была врублена раньше, но не для сервисов с трафиком.
Roblox
Roblox Return to Service | Roblox
Roblox is a global platform where millions of people gather together every day to imagine, create, and share experiences with each other in immersive, user-generated 3D worlds.
oleg_log
Photo
Считайте апдейт за +- полгода. Не уверен, что это именно рост, а не просто про/доиндексированные репы, но даже без этого виден объем коммюнетей.
Такое ощущение, что чего-то не хватает, к примеру PHP и Ruby.
Такое ощущение, что чего-то не хватает, к примеру PHP и Ruby.
Inside the pyramid there is a hierarchy where things using software are build on top of others, in layers. The higher up you go, the more you stand on the shoulders of open source components below you.
https://daniel.haxx.se/blog/2022/01/17/enforcing-the-pyramid-of-open-source/
Эта пирамида, хотя скорее модель, отлично описывает и виды разработчиков и то, как должны формироваться команды.
Если человеку интересны байты, то зачем ему работать с жсоном на уровне "отдай в видет ответа", и наоборот. Вот только жаль, мало кто из руководителей это понимает, но так же часто не имеет ресурсов формировать тимы таким образом.
https://daniel.haxx.se/blog/2022/01/17/enforcing-the-pyramid-of-open-source/
Эта пирамида, хотя скорее модель, отлично описывает и виды разработчиков и то, как должны формироваться команды.
Если человеку интересны байты, то зачем ему работать с жсоном на уровне "отдай в видет ответа", и наоборот. Вот только жаль, мало кто из руководителей это понимает, но так же часто не имеет ресурсов формировать тимы таким образом.
Forwarded from Linkstream
Gentle reminder: A cloud is a someone else's computer.
Google Drive flags file only containing “1” for copyright infringement
https://wz.ax/hn/30060405/gdrive-copyright
> Turns out Google also hates 500, 174, 833, 285 and 302 (from generating files from -1000 to 1000).
Google Drive flags file only containing “1” for copyright infringement
https://wz.ax/hn/30060405/gdrive-copyright
> Turns out Google also hates 500, 174, 833, 285 and 302 (from generating files from -1000 to 1000).
Критика C++ FAQ: https://yosefk.com/c++fqa/ (fqa = frequently questioned answers)
> [6.1] Is C++ a practical language?
> FAQ: Sure - not perfect, but mature and well-supported, which is good for business.
> FQA: C++ is not "mature" in the sense that different compilers will interpret it differently, and C++ modules built by different vendors will not work with each other. C++ is not "well-supported" in the sense that development tools for C++ lack features and are unreliable compared to other languages. These things make one ask "Am I the first one trying to do this?" all the time.
> This situation is not likely to change, because it follows from the C++ definition. C++ is very complicated for programs (or people) to understand. C++ specification leaves out most aspects crucial for interoperability, such as modules and calling conventions. C++ has a huge installed base, and since solving these problems backward-compatibly is impossible, they won't be solved.
> [6.1] Is C++ a practical language?
> FAQ: Sure - not perfect, but mature and well-supported, which is good for business.
> FQA: C++ is not "mature" in the sense that different compilers will interpret it differently, and C++ modules built by different vendors will not work with each other. C++ is not "well-supported" in the sense that development tools for C++ lack features and are unreliable compared to other languages. These things make one ask "Am I the first one trying to do this?" all the time.
> This situation is not likely to change, because it follows from the C++ definition. C++ is very complicated for programs (or people) to understand. C++ specification leaves out most aspects crucial for interoperability, such as modules and calling conventions. C++ has a huge installed base, and since solving these problems backward-compatibly is impossible, they won't be solved.