Forwarded from HN Best Comments
Re: Bouncing DVD Logo
As a historical note, the bouncing logo wasn't just for fun, but was important to prevent screen burn-in on CRTs. If you had a static image on a CRT for a long time, it could damage the phosphor. Sometimes you could even see the image when the screen was off!
This was the original purpose of screensavers, which saved your screen from damage. Displaying a dynamic image prevented one part of the screen from being overused.
kens, 8 hours ago
As a historical note, the bouncing logo wasn't just for fun, but was important to prevent screen burn-in on CRTs. If you had a static image on a CRT for a long time, it could damage the phosphor. Sometimes you could even see the image when the screen was off!
This was the original purpose of screensavers, which saved your screen from damage. Displaying a dynamic image prevented one part of the screen from being overused.
kens, 8 hours ago
Forwarded from Data is data
Тот самый момент, когда Uber превращается в субъект малого и среднего бизнеса. Обнуление шагает по миру.
Есть такая секта людей, которые считают, что все плохо (речь про айти, железо, разработку и ui). И вот у меня для вас одна история.
Жил был сервис, перекладывал данные из одной БД в другую, сохраняя в json. Все было мило-спокойно. Объемы довольно большие, но цель не в latency, а в throughput. Случилась один раз беда...
Вместо {"key": "value"} сервис начал отдавать {"key": "value", "key": "value"} что все еще считается валидным форматом (из того, что я помню, в спеке нет уточнения, там просто "unordered set of name/value pairs"). Как можно уже догадаться, некоторые сериализаторы от этого падали и было нехорошо.
Так вот вопрос: а какого ж оно стало повторять ключи? А мы не знаем. В логах ничего, 1я БД чистая и данные правильные, а во 2й уже магия с повторениями. Сериализатор не самопальный, а популярное жава решение. Что случилось? - вопрос.
Логично грешить на concurrency, но пёс его знает. И вот как теперь доверять кому-либо? (за отсутствие кривых рук могу ручаться, я про участников инцидента, не авторов либы, либа jackson как помню).
Жил был сервис, перекладывал данные из одной БД в другую, сохраняя в json. Все было мило-спокойно. Объемы довольно большие, но цель не в latency, а в throughput. Случилась один раз беда...
Вместо {"key": "value"} сервис начал отдавать {"key": "value", "key": "value"} что все еще считается валидным форматом (из того, что я помню, в спеке нет уточнения, там просто "unordered set of name/value pairs"). Как можно уже догадаться, некоторые сериализаторы от этого падали и было нехорошо.
Так вот вопрос: а какого ж оно стало повторять ключи? А мы не знаем. В логах ничего, 1я БД чистая и данные правильные, а во 2й уже магия с повторениями. Сериализатор не самопальный, а популярное жава решение. Что случилось? - вопрос.
Логично грешить на concurrency, но пёс его знает. И вот как теперь доверять кому-либо? (за отсутствие кривых рук могу ручаться, я про участников инцидента, не авторов либы, либа jackson как помню).
Forwarded from Технологический Болт Генона
1. Google Chrome removes FTP support
2. Mozilla follows Google's decision, removes FTP support from Firefox
3. Google restores FTP support due to COVID-19. "Oh, FTP is still actively used by government websites, people need that"
https://bugs.chromium.org/p/chromium/issues/detail?id=333943#c43
Ссылка на тред
https://twitter.com/ValdikSS/status/1250368589493870592
2. Mozilla follows Google's decision, removes FTP support from Firefox
3. Google restores FTP support due to COVID-19. "Oh, FTP is still actively used by government websites, people need that"
https://bugs.chromium.org/p/chromium/issues/detail?id=333943#c43
Ссылка на тред
https://twitter.com/ValdikSS/status/1250368589493870592
Forwarded from iggisv9t channel
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл онлайн-редактор графов с экспортом в разные форматы. Я обычно просто писал dot в блокноте, а потом рендерил, если надо было что-то такое соорудить.
http://www.apcjones.com/arrows/
http://www.apcjones.com/arrows/
(меня тут чуть-чуть попросили опубликовать пост, но я неправильно тыкнул таймер, кароч)
Хорошая статья про организацию проекта/репозитория/сервиса в го. Конечно есть вещи, о которых можно поспорить, но не побоюсь назвать этот вариант хороший эталоном.
https://habr.com/ru/company/lamoda/blog/495344/
Хорошая статья про организацию проекта/репозитория/сервиса в го. Конечно есть вещи, о которых можно поспорить, но не побоюсь назвать этот вариант хороший эталоном.
https://habr.com/ru/company/lamoda/blog/495344/
Хабр
Унифицируй это: как Lamoda делает единообразными свои Go сервисы
Мы широко используем микросервисную архитектуру, хоть и не считаем ее панацеей, и чуть больше 2 лет назад начали переходить на язык Go. Он сравнительно прост и, на мой взгляд, очень хорошо подходит...
oleg_log
свой первый стендинг-деск я собрал в 26 (спасибо Маше за помощь :)
Без нее я бы никак не справился, она всячески поддерживала меня и физически, и морально. Как хорошо, когда рядом есть человек, который готов быть с тобой в трудную минуту (когда приходит стол из икеи, например). Спасибо, любимая. Я не знаю, чтобы я делал без тебя. - хотел сказать Олег, но написал просто "спасибо Маше".
Если бедного Салтыкова-Щедрина все же разбудят, то он скажет, что люди до сих пор не могут нормально настроить jwt и получают за это дырки в безопасности. Жесть, если честно.
The Authentication API prevented the use of alg: none with a case sensitive filter. This means that simply capitalising any letter e.g. alg: nonE, allowed tokens to be forged.
https://insomniasec.com/blog/auth0-jwt-validation-bypass
The Authentication API prevented the use of alg: none with a case sensitive filter. This means that simply capitalising any letter e.g. alg: nonE, allowed tokens to be forged.
https://insomniasec.com/blog/auth0-jwt-validation-bypass
Следующие выходные полностью посвящаются Go (а еще выпуск @generictalks по плану)
25го https://www.meetup.com/GolangKazan/events/269888458
26го https://goremotefest.com/
(на последний еще CFP открыт, до конца дня вроде)
25го https://www.meetup.com/GolangKazan/events/269888458
26го https://goremotefest.com/
(на последний еще CFP открыт, до конца дня вроде)
Meetup
Login to Meetup | Meetup
Not a Meetup member yet? Log in and find groups that host online or in person events and meet people in your local community who share your interests.
oleg_log
😒 Sticker
Сильный доклад про выгорание. Очень советую. Особенно пригодится тимлидам и прочим руководящим. Хотя и отчаявшиеся найдут советы.
https://www.youtube.com/watch?v=9aLUe44dSvY
https://www.youtube.com/watch?v=9aLUe44dSvY
YouTube
«Уставшие» сотрудники: есть ли выход? / Илья Агеев (Badoo)
Видео с Badoo Techleads Meetup #4 (15.06.2019)
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, зарабатываешь ты достойно, делаешь важные и нужные вещи каждый день. Илон Маск запускает спутники. Сергей Семенович улучшает и без того лучший…
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, зарабатываешь ты достойно, делаешь важные и нужные вещи каждый день. Илон Маск запускает спутники. Сергей Семенович улучшает и без того лучший…
Если скучно, почитайте историю сооснователя Cloudflare. Талантливый был человек.
the resident genius, the guy who could focus for hours, code pouring from his fingertips while death metal blasted in his headphones. He was the master architect whose vision had guided what began as a literal sketch on a napkin into a tech giant with some 1,200 employees and 83,000 paying customers
https://www.wired.com/story/lee-holloway-devastating-decline-brilliant-young-coder/
И ХН с деталями и мнениями https://news.ycombinator.com/item?id=22878136
the resident genius, the guy who could focus for hours, code pouring from his fingertips while death metal blasted in his headphones. He was the master architect whose vision had guided what began as a literal sketch on a napkin into a tech giant with some 1,200 employees and 83,000 paying customers
https://www.wired.com/story/lee-holloway-devastating-decline-brilliant-young-coder/
И ХН с деталями и мнениями https://news.ycombinator.com/item?id=22878136
WIRED
The Devastating Decline of a Brilliant Young Coder
Lee Holloway programmed internet security firm Cloudflare into being. Then he became apathetic, distant, and unpredictable—for a long time, no one could make sense of it.
Forwarded from Sysadmin Tools 🇺🇦
Какую CI систему вы используете?
Anonymous Poll
40%
GitlabCI
5%
GithubCI
9%
Teamcity
3%
Bamboo
30%
Jenkins
2%
TravisCI
3%
azure/aws/gcp
1%
spinnaker
3%
CIrcleCI
2%
DroneCI
Я на днях стал обладателем ps4 (спасибо друзьям). Решил поиграть в spider man. Случайно оказался выбран русский язык локализации и...
В некоторых сценах, почему-то проскакивает английский язык (гарантирую, что такие диалоги встречались и на русском).
Как по мне - оч забавный баг. Или неправильно размеченные дорожки, или все же чтение диалогов как попало. Еще весело, что редко бывает.
В некоторых сценах, почему-то проскакивает английский язык (гарантирую, что такие диалоги встречались и на русском).
Как по мне - оч забавный баг. Или неправильно размеченные дорожки, или все же чтение диалогов как попало. Еще весело, что редко бывает.
По пути домой задумался о такой вещице, слегка подсмотренной в другом треде: возьмем jwt токен, даже два. Стандарт json (опять о нём) не гарантирует порядка ключей в объекте, это просто set.
Гениальная идея: берём
Дело даже не в cross-language совместимости, а в рамках одного языка и одной либы, ведь гарантий нет! Что звучит дыряво.
Конечно можно всегда сортировать ключи, но зачем? Полагаться на это еще более глупая затея, но и слепо перезаписывать токен и сравнитьва подпись - мдаа....
PS. да, даже пробел между ключами может все поломать.
Гениальная идея: берём
{"a":1,"b":2} и {"b":2,"a":1} и внезапно получаем 2 разные подписи для одинаковых json-ов. Понятно, что подпись считается из обычного куска байтов, поэтому проверить подпись всегда можно со 100% гарантией, но! перезаписать (десериализация а потом сериализация) со 100% гарантией уже нельзя.Дело даже не в cross-language совместимости, а в рамках одного языка и одной либы, ведь гарантий нет! Что звучит дыряво.
Конечно можно всегда сортировать ключи, но зачем? Полагаться на это еще более глупая затея, но и слепо перезаписывать токен и сравнитьва подпись - мдаа....
PS. да, даже пробел между ключами может все поломать.
oleg_log
Если скучно, почитайте историю сооснователя Cloudflare. Талантливый был человек. the resident genius, the guy who could focus for hours, code pouring from his fingertips while death metal blasted in his headphones. He was the master architect whose vision…
jgrahamc (Cloudflare CTO), HN thread:
I posted this hours ago and then stepped away. The story captures so much about the Lee I knew so well. I'll add one piece of praise for Lee's early architecture of Cloudflare.
Everything was controlled by a single Postgres database that made very heavy use of stored procedures, that called other procedures, that called others. It was one giant program inside the database. It took me a while to comprehend what he'd done but it was really great. The database ran everything and all those functions made sure that audit logs were kept, that the calls were allowed for the user ID being passed in, and some of these procedures made external calls to APIs including getting things like SSL certificates.
It was a magnificent monolith inside a database.
I worked on the periphery of the database (it was truly Lee's domain) and he'd tell me what output to expect or API to create and I'd code to his spec. and we'd just hook it up.
If any single artefact represents what he did at Cloudflare, it's that database. And he used to code it on a laptop we called "The Beast" because it was so crazily heavy and overloaded with memory etc. that he'd carry around a mini, test Cloudflare wherever he went.
I posted this hours ago and then stepped away. The story captures so much about the Lee I knew so well. I'll add one piece of praise for Lee's early architecture of Cloudflare.
Everything was controlled by a single Postgres database that made very heavy use of stored procedures, that called other procedures, that called others. It was one giant program inside the database. It took me a while to comprehend what he'd done but it was really great. The database ran everything and all those functions made sure that audit logs were kept, that the calls were allowed for the user ID being passed in, and some of these procedures made external calls to APIs including getting things like SSL certificates.
It was a magnificent monolith inside a database.
I worked on the periphery of the database (it was truly Lee's domain) and he'd tell me what output to expect or API to create and I'd code to his spec. and we'd just hook it up.
If any single artefact represents what he did at Cloudflare, it's that database. And he used to code it on a laptop we called "The Beast" because it was so crazily heavy and overloaded with memory etc. that he'd carry around a mini, test Cloudflare wherever he went.
Forwarded from 🇺🇦 Go for two :)
Note #66: Go плайграунд теперь исполняет код в multi-threaded linux контейнере
Если у вас есть необходимость в демонстрации многопоточного кода на Go, который использует несколько горутин и которые, в свою очередь, используют один поток (thread) операционной системы или несколько потоков (threads), которые используют разные ядра. В общем теперь можно изучать go параллелизм в плайграунде 🙌
P.S. объяснение от Брэда Фицпатрика:
Это стало возможным после того, как удалили поддержку Native Client (GOOS=nacl) в Go 1.14, и теперь go плайграунд запускается с помощью gVisor.
https://github.com/golang/go/issues/25224
https://github.com/golang/playground/commit/4d362417fd14b0b8349150cb28c3e8f2e756932e
Если у вас есть необходимость в демонстрации многопоточного кода на Go, который использует несколько горутин и которые, в свою очередь, используют один поток (thread) операционной системы или несколько потоков (threads), которые используют разные ядра. В общем теперь можно изучать go параллелизм в плайграунде 🙌
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Printf("GOOS[%s] GOARCH[%s] GOMAXPROCS[%d] NumCPU[%d]", runtime.GOOS, runtime.GOARCH, runtime.GOMAXPROCS(0), runtime.NumCPU())
}
// OOS[linux] GOARCH[amd64] GOMAXPROCS[8] NumCPU[8]
P.S. объяснение от Брэда Фицпатрика:
Это стало возможным после того, как удалили поддержку Native Client (GOOS=nacl) в Go 1.14, и теперь go плайграунд запускается с помощью gVisor.
https://github.com/golang/go/issues/25224
https://github.com/golang/playground/commit/4d362417fd14b0b8349150cb28c3e8f2e756932e