Forwarded from There will be no singularity
Что лично меня больше всего бесит в процессе написания кода - это тулинг и настройки окружения.
Нельзя просто взять и начать нормально работать. Сначала надо прочитать мануалы по настройке. И... обломаться, потому что с момента написания мануала сменилось 2 мажорные версии.
Почитать все релевантные ишью на гитхабе, пролистать stack overflow, откатиться к версиям, которые использовали на момент написания мануала.
Зафиксировать версии, чтоб случайно что-то не обновилось...
Через некоторое время все начнет тормозить. И опять по кругу - ишью на гитхабе, мануалы на medium, stack overflow...
Но если ты решил что-то поменять...
- "Обнови npm! Вышла новая мажорная версия! У тебя 6.14, а вышла 7.5". ЭЭЭ... А где были 7.1-7.4? Ну ок... Слетают все сохраненные токены к приватным репам. Как ты их настраивал - хз. Лезешь в доки, разбираешься.
- "request перестали поддерживать, замени на другое". Ладно, что там у фронтов? axios? Что может пойти не так? Это же просто http клиент... 3 часа ищешь как установить лимит на request timeout. Знаете как? НИКАК! Ну т.е. в интернете есть пяток (!) рецептов, но ни один не работает...
- Пора поменять flow на ts. Да, знаю, это другое, но все-таки... Нужен аналог
- Так, что там с ts в качестве тестранера используют... Ага, убираем ava, берем jest... Хз, что там в джесте происходит, но тесты, которые отрабатывают за 20 секунд при запуске через ava, на jest я выключил через 5 минут, потому что мне надоело. ПЯТЬ МИНУТ!!! Если запускать тесты по одному - работает, но занимает в 3-4 раза больше времени...
Думаете так только в js? Ха! Java, python, haskell, c, c++ - я всякое пробовал. Везде ад. Где-то лучше, где-то хуже, но везде. На go плюс-минус ничего, но только если вы смогли настроить GOPATH и не забили на этом этапе :) Ну и если все нужные вам пакеты доступны на гитхабе и подходят под ту версию рантайма, которую вы используете...
"А давайте изобретем сборщик на java и будем им билдить плюсы!" Ну, бл, давайте... Помогло? Нет конечно! Но теперь у нас есть +1 сборщик, с которым нужно разбираться (bazel).
Я не понимаю, почему до сих пор нет отдельных вакансий на писателей конфигов для линтеров и вебпаков, нет публичных реп от известных компаний с настройками IDE (с зафиксированными версиями пакетов и тестами на это) и вот этого всего. Мало того, что человек, на которого компания тратит в лучшем случае 500k в месяц (да-да, налоги, офис, больничные...), большую часть времени не думает, а работает как наборщица текста (купите tabnine), ему еще приходится и этой хренью заниматься.
Все это убивает время и увеличивает энтропию. От этого выгорают зумеры! (хотя зумеры от всего выгорают...)
Однажды Резерфорд зашел поздно вечером в свою лабораторию и увидел там, несмотря на неурочный час, одного из своих подававших надежды сотрудников.
«Что вы делаете здесь так поздно?» — удивился ученый.
«Работаю», — ответил подававший надежды.
«Что же вы, в таком случае, делали днем?»
«Разумеется, работал».
«А утром? Неужели и утром вы тоже работали?»
«И утром тоже».
«Позвольте, — неподдельно изумился Резерфорд, — а когда же вы думаете?» — и перестал возлагать на этого сотрудника особые надежды.
Нельзя просто взять и начать нормально работать. Сначала надо прочитать мануалы по настройке. И... обломаться, потому что с момента написания мануала сменилось 2 мажорные версии.
Почитать все релевантные ишью на гитхабе, пролистать stack overflow, откатиться к версиям, которые использовали на момент написания мануала.
Зафиксировать версии, чтоб случайно что-то не обновилось...
Через некоторое время все начнет тормозить. И опять по кругу - ишью на гитхабе, мануалы на medium, stack overflow...
Но если ты решил что-то поменять...
- "Обнови npm! Вышла новая мажорная версия! У тебя 6.14, а вышла 7.5". ЭЭЭ... А где были 7.1-7.4? Ну ок... Слетают все сохраненные токены к приватным репам. Как ты их настраивал - хз. Лезешь в доки, разбираешься.
- "request перестали поддерживать, замени на другое". Ладно, что там у фронтов? axios? Что может пойти не так? Это же просто http клиент... 3 часа ищешь как установить лимит на request timeout. Знаете как? НИКАК! Ну т.е. в интернете есть пяток (!) рецептов, но ни один не работает...
- Пора поменять flow на ts. Да, знаю, это другое, но все-таки... Нужен аналог
$PropertyType Type, 'prop'Похоже, что это
Pick Type, 'prop'... Чет не так работает.... А потому что это вам не это! Аналог -
Type['prop']Сцукоооооо....
- Так, что там с ts в качестве тестранера используют... Ага, убираем ava, берем jest... Хз, что там в джесте происходит, но тесты, которые отрабатывают за 20 секунд при запуске через ava, на jest я выключил через 5 минут, потому что мне надоело. ПЯТЬ МИНУТ!!! Если запускать тесты по одному - работает, но занимает в 3-4 раза больше времени...
Думаете так только в js? Ха! Java, python, haskell, c, c++ - я всякое пробовал. Везде ад. Где-то лучше, где-то хуже, но везде. На go плюс-минус ничего, но только если вы смогли настроить GOPATH и не забили на этом этапе :) Ну и если все нужные вам пакеты доступны на гитхабе и подходят под ту версию рантайма, которую вы используете...
"А давайте изобретем сборщик на java и будем им билдить плюсы!" Ну, бл, давайте... Помогло? Нет конечно! Но теперь у нас есть +1 сборщик, с которым нужно разбираться (bazel).
Я не понимаю, почему до сих пор нет отдельных вакансий на писателей конфигов для линтеров и вебпаков, нет публичных реп от известных компаний с настройками IDE (с зафиксированными версиями пакетов и тестами на это) и вот этого всего. Мало того, что человек, на которого компания тратит в лучшем случае 500k в месяц (да-да, налоги, офис, больничные...), большую часть времени не думает, а работает как наборщица текста (купите tabnine), ему еще приходится и этой хренью заниматься.
Все это убивает время и увеличивает энтропию. От этого выгорают зумеры! (хотя зумеры от всего выгорают...)
Однажды Резерфорд зашел поздно вечером в свою лабораторию и увидел там, несмотря на неурочный час, одного из своих подававших надежды сотрудников.
«Что вы делаете здесь так поздно?» — удивился ученый.
«Работаю», — ответил подававший надежды.
«Что же вы, в таком случае, делали днем?»
«Разумеется, работал».
«А утром? Неужели и утром вы тоже работали?»
«И утром тоже».
«Позвольте, — неподдельно изумился Резерфорд, — а когда же вы думаете?» — и перестал возлагать на этого сотрудника особые надежды.
угадайте кто ночью 4 раза просыпался и делал
k delete pods -n kek lol дада, это я. кубернетес чтобы рестартить сервисы руками, как тебе такое, Kelsey?*детские и взрослые слезы радости*
In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).
https://github.com/GTAmodding/re3
In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).
https://github.com/GTAmodding/re3
oleg_log
*детские и взрослые слезы радости* In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch). https://github.com/GTAmodding/re3
- Is it true that NPC cars are not checked for collision? And collision checking only starts when something happens near?
- This is sort of true, they are "on rails" (meaning no physics calculations are performed) until something collides with it, like a bullet, a car or a player. At that point they are handed off to a more expensive process which includes checking physics each frame.
и это красиво.
https://news.ycombinator.com/item?id=26130320
- This is sort of true, they are "on rails" (meaning no physics calculations are performed) until something collides with it, like a bullet, a car or a player. At that point they are handed off to a more expensive process which includes checking physics each frame.
и это красиво.
https://news.ycombinator.com/item?id=26130320
Вы же наверное слышали, что в Python завозят pattern matching. Как всегда не все довольны.
Как по мне, подобная фича нормально заходит в дизайн языка, ведь где-то там станет проще писать и что-то читать.
Да и конструкция довольно популярна в других языках, супер-сомнительного новаторства нет.
У меня как-то даже болело, что все приходится писать через
https://github.com/gvanrossum/patma (спасибо Антону за пинг)
Как по мне, подобная фича нормально заходит в дизайн языка, ведь где-то там станет проще писать и что-то читать.
Да и конструкция довольно популярна в других языках, супер-сомнительного новаторства нет.
У меня как-то даже болело, что все приходится писать через
elif (else+if который), когда и так было понятно, что мог бы быть свитч.https://github.com/gvanrossum/patma (спасибо Антону за пинг)
GitHub
GitHub - gvanrossum/patma: Pattern Matching
Pattern Matching. Contribute to gvanrossum/patma development by creating an account on GitHub.
Готовитесь к собеседованиям? (Перед тем как ругаться на варианты ответа, вспомните про 10 вариантов и то, сколько есть причин и видов собесов, поэтому «имеем что имеем»)
Anonymous Poll
10%
Да, я джун
25%
Да, я мидл
25%
Да, сеньор
4%
Нет, джун
11%
Нет, мидл
17%
Нет, сеньор
2%
Другое (в коменты)
7%
Не применимо
Пока люди хвастаются, как они продали биткоин по 28к (когда он перепрыгнул 50к), я дебажу network policies в Kubernetes. Это веселее.
Как оказалось проблема простукивания пода в другом неймспейсе была не связана с кривым селектором, скорее данными которые мы процессим.
Советую https://github.com/ahmetb/kubernetes-network-policy-recipes (тут как раз это было в ридми, мол сделай
(UPD мем в профанкторе как раз про это)
Как оказалось проблема простукивания пода в другом неймспейсе была не связана с кривым селектором, скорее данными которые мы процессим.
egress:Все смотрится ок, да? Вот только лейблов
- to:
- podSelector:
matchExpressions:
- key: app
operator: In
values:
- kek-api
- namespaceSelector:
matchExpressions:
- key: name
operator: In
values:
- FOO
name=FOO на неймспейсе FOO не было.Советую https://github.com/ahmetb/kubernetes-network-policy-recipes (тут как раз это было в ридми, мол сделай
kubectl label namespace/other team=operations и дерзай, но это сложнее чем кажется)(UPD мем в профанкторе как раз про это)
GitHub
GitHub - ahmetb/kubernetes-network-policy-recipes: Example recipes for Kubernetes Network Policies that you can just copy paste
Example recipes for Kubernetes Network Policies that you can just copy paste - ahmetb/kubernetes-network-policy-recipes
Осмелюсь (хоть и частично) не согласится с данным постом https://xn--r1a.website/manandthemachine/650 (тлдр про систем дизайн/архитектурное интервью)
Я давно в @oleg_log_plus (внезапно реклама) про это говорил и суть проста: если вы будете спрашивать только про лоад-балансеры, всякик NoSQL, CAP (зачем-то) и другие крутые слова, то вы ничего не проверите, ну разве что кто-то пролистывал Медиум по теме.
На джуна эти вопросы скорее вне их компетенции и понимания, для мидла они особо ничего не дадут, а сеньор вам скорее нагонит туфты и будет казаться, что понимает.
Возвращаясь к посту, который я накатал ранее. Спрашивать надо про дизайн системы доставки пиццы, как автоматизировать эскалаторы в ТЦ и как должен работать ЦУП.
Вот тут-то вы и проверите, насколько ваш кандидат умеет мыслить над проблемой, анализировать требования и задавать каверзные вопросы, пытаясь не зафейлить собес.
Джуна таким утюжить смысла нет, мидла не каждого, а вот сеньоров и прочих умников за милую душу.
Пожалуй эта часть собеса (дизайн интервью) единственное, что интересно проходить в FAANG, ведь можно интересно поговорить с умным человеком.
Еще одно: надо не только вам задавать эти вопросы, но и самим ходить на подобные собесы, тупо умнеть будете.
Я давно в @oleg_log_plus (внезапно реклама) про это говорил и суть проста: если вы будете спрашивать только про лоад-балансеры, всякик NoSQL, CAP (зачем-то) и другие крутые слова, то вы ничего не проверите, ну разве что кто-то пролистывал Медиум по теме.
На джуна эти вопросы скорее вне их компетенции и понимания, для мидла они особо ничего не дадут, а сеньор вам скорее нагонит туфты и будет казаться, что понимает.
Возвращаясь к посту, который я накатал ранее. Спрашивать надо про дизайн системы доставки пиццы, как автоматизировать эскалаторы в ТЦ и как должен работать ЦУП.
Вот тут-то вы и проверите, насколько ваш кандидат умеет мыслить над проблемой, анализировать требования и задавать каверзные вопросы, пытаясь не зафейлить собес.
Джуна таким утюжить смысла нет, мидла не каждого, а вот сеньоров и прочих умников за милую душу.
Пожалуй эта часть собеса (дизайн интервью) единственное, что интересно проходить в FAANG, ведь можно интересно поговорить с умным человеком.
Еще одно: надо не только вам задавать эти вопросы, но и самим ходить на подобные собесы, тупо умнеть будете.
Telegram
Человек и машина
#машины_разное #люди
Время от времени я провожу system design интервью, которые в простонародье известны как архитектурные. Многим моим читателям такой вид собеседования должен быть знаком: предлагается спроектировать что-то, и у вас 45 минут чтобы собрать…
Время от времени я провожу system design интервью, которые в простонародье известны как архитектурные. Многим моим читателям такой вид собеседования должен быть знаком: предлагается спроектировать что-то, и у вас 45 минут чтобы собрать…
1 из аргументов, почему бояться N**2 не надо. https://twitter.com/BruceDawson0xB/status/1120381406700429312
Forwarded from Протестировал
Захватывающая история о неработающей синхронизации в rsync, причиной которой был баг 24-летней (!) давности в реализации протокола TCP Linux ядра. Буквально через несколько часов после появления письма с описанием проблемы в рассылке Neal Cardwell подготовил патч с исправлением (фикс из двух строк). Знаю Neal Cardwell как автора packetdrill - утилиты для функционального тестирования TCP, IP протоколов. С её помощью тесткейсы для тестирования можно описывать на DSL в декларативном стиле и они выглядят короче и нагляднее, чем такой же тексткейс, но на Си.
https://engineering.skroutz.gr/blog/uncovering-a-24-year-old-bug-in-the-linux-kernel/
Create a listening TCP socket.
0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0 bind(3, ..., ...) = 0
+0 listen(3, 1) = 0
// Establish a new connection.
+0 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
+0 > S. 0:0(0) ack 1 win 29200 <mss
1460,nop,nop,sackOK,nop,wscale 6>
+.1 < . 1:1(0) ack 1 win 257
+0 accept(3, ..., ...) = 4
// sequence number out of window!
+.010 < R. 29202:29202(0) ack 1 win 257
// verify that the connection is OK
+.010 write(4, ..., 1000) = 1000
+0 > P. 1:1001(1000) ack 1
https://engineering.skroutz.gr/blog/uncovering-a-24-year-old-bug-in-the-linux-kernel/
GitHub
GitHub - google/packetdrill: The official Google release of packetdrill
The official Google release of packetdrill. Contribute to google/packetdrill development by creating an account on GitHub.
Forwarded from Sysadmin Tools 🇺🇦
Хабр
Как мы сэкономили 2000 USD на трафике из Amazon S3 с помощью nginx-кэша
Эта небольшая история — живое свидетельство того, как самые простые решения (иногда) могут оказаться очень эффективными. В одном из проектов руководство взяло курс на оптимизацию бюджета на...
Вы менеджерами паролей пользуетесь? Если да, то какими и почему?
Укажите еще, пожалуйста, это для приватной жизни или на работе "впарили". Все же это имеет значение)
Укажите еще, пожалуйста, это для приватной жизни или на работе "впарили". Все же это имеет значение)
Forwarded from Generative Anton
Google будет спонсировать переписывание всяких тулзов на Rust. Выяснили, что бОльшую часть секьюрных багов можно было бы избежать, используя язык с memory safety механизмами..
Google Online Security Blog
Mitigating Memory Safety Issues in Open Source Software
Posted by Dan Lorenc, Infrastructure Security Team Memory-safety vulnerabilities have dominated the security field for years and often lead ...
Долгожданный (для меня) пост об изменениях в модулях для го 1.16
Не мутируем теперь го.мод на каждый чих, пожалуй самое важное. Ну и по дефолту теперь включены. Уиииииииии
https://blog.golang.org/go116-module-changes
UPD: я сильно ступил, пропустив module retraction, когда ответственный автор либы может пушнуть инфо про плохие версии всем пользователям либы. Это ж отличная вещь чтобы быть из коробки!
Не мутируем теперь го.мод на каждый чих, пожалуй самое важное. Ну и по дефолту теперь включены. Уиииииииии
https://blog.golang.org/go116-module-changes
UPD: я сильно ступил, пропустив module retraction, когда ответственный автор либы может пушнуть инфо про плохие версии всем пользователям либы. Это ж отличная вещь чтобы быть из коробки!
go.dev
New module changes in Go 1.16 - The Go Programming Language
Go 1.16 enables modules by default, provides a new way to install executables, and lets module authors retract published versions.