Size: a a a

2021 February 15
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
источник
oleg_log
- 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
источник
oleg_log
едем
источник
oleg_log
источник
oleg_log
Вы же наверное слышали, что в Python завозят pattern matching. Как всегда не все довольны.

Как по мне, подобная фича нормально заходит в дизайн языка, ведь где-то там станет проще писать и что-то читать.

Да и конструкция довольно популярна в других языках, супер-сомнительного новаторства нет.

У меня как-то даже болело, что все приходится писать через elif (else+if который), когда и так было понятно, что мог бы быть свитч.

https://github.com/gvanrossum/patma (спасибо Антону за пинг)
источник
2021 February 16
oleg_log
Готовитесь к собеседованиям? (Перед тем как ругаться на варианты ответа, вспомните про 10 вариантов и то, сколько есть причин и видов собесов, поэтому «имеем что имеем»)
Анонимный опрос
10%
Да, я джун
25%
Да, я мидл
25%
Да, сеньор
4%
Нет, джун
11%
Нет, мидл
17%
Нет, сеньор
2%
Другое (в коменты)
7%
Не применимо
Проголосовало: 1123
источник
oleg_log
Пока люди хвастаются, как они продали биткоин по 28к (когда он перепрыгнул 50к), я дебажу network policies в Kubernetes. Это веселее.

Как оказалось проблема простукивания пода в другом неймспейсе была не связана с кривым селектором, скорее данными которые мы процессим.

  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 мем в профанкторе как раз про это)
источник
2021 February 17
oleg_log
Осмелюсь (хоть и частично) не согласится с данным постом https://t.me/manandthemachine/650 (тлдр про систем дизайн/архитектурное интервью)

Я давно в @oleg_log_plus (внезапно реклама) про это говорил и суть проста: если вы будете спрашивать только про лоад-балансеры, всякик NoSQL, CAP (зачем-то) и другие крутые слова, то вы ничего не проверите, ну разве что кто-то пролистывал Медиум по теме.

На джуна эти вопросы скорее вне их компетенции и понимания, для мидла они особо ничего не дадут, а сеньор вам скорее нагонит туфты и будет казаться, что понимает.

Возвращаясь к посту, который я накатал ранее. Спрашивать надо про дизайн системы доставки пиццы, как автоматизировать эскалаторы в ТЦ и как должен работать ЦУП.

Вот тут-то вы и проверите, насколько ваш кандидат умеет мыслить над проблемой, анализировать требования и задавать каверзные вопросы, пытаясь не зафейлить собес.

Джуна таким утюжить смысла нет, мидла не каждого, а вот сеньоров и прочих умников за милую душу.

Пожалуй эта часть собеса (дизайн интервью) единственное, что интересно проходить в FAANG, ведь можно интересно поговорить с умным человеком.

Еще одно: надо не только вам задавать эти вопросы, но и самим ходить на подобные собесы, тупо умнеть будете.
Telegram
Человек и машина
#машины_разное #люди

Время от времени я провожу system design интервью, которые в простонародье известны как архитектурные. Многим моим читателям такой вид собеседования должен быть знаком: предлагается спроектировать что-то, и у вас 45 минут чтобы собрать все минимальные требования, набросать высокоуровневый дизайн, в нужных местах опускаясь ниже и адресуя ряд пунктов.

Очевидное отличие этого интервью от других (например от алгоритмов) - отсутствие одного правильного ответа и какого-то логического конца. Напротив, здесь идет игра против времени и нужно “успеть” покрыть максимум тем.

Поэтому к такому интервью нужно относиться как к reverse bullshit bingo: чем больше ключевых слов вы успеете назвать (CDN, LB, Cache, Queue, DB, NoSQL, SQL, Read/Write API, Sharding, Consensus, CAP, и т.д.) - тем лучше. Интервьюер, cпускаясь в нужных местах пониже, проверяет вашу эрудицию.

Дескать, сказал “балансировщик” - накинь базовые алгоритмы балансировки. Кеширование - caching algorithms и eviction policies. Базы данных…
источник
oleg_log
Go 1.16 is released https://blog.golang.org/go1.16
источник
2021 February 18
oleg_log
1 из аргументов, почему бояться N**2 не надо. https://twitter.com/BruceDawson0xB/status/1120381406700429312
источник
oleg_log
Захватывающая история о неработающей синхронизации в rsync, причиной которой был баг 24-летней (!) давности в реализации протокола TCP Linux ядра. Буквально через несколько часов после появления письма с описанием проблемы в рассылке Neal Cardwell подготовил патч с исправлением (фикс из двух строк). Знаю Neal Cardwell как автора packetdrill - утилиты для функционального тестирования TCP, IP протоколов. С её помощью тесткейсы для тестирования можно описывать на DSL в декларативном стиле и они выглядят короче и нагляднее, чем такой же тексткейс, но на Си.

 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/
источник
oleg_log
Ничего супернеобычного, но за конфиг nginx отдельный лайк
источник
oleg_log
источник
oleg_log
Chrome фичу с группами вкладок из альфы достал, правда 1й опыт показал, что особо ничего этого (в моем флоу) не давало
источник
oleg_log
источник
oleg_log
Вы менеджерами паролей пользуетесь? Если да, то какими и почему?

Укажите еще, пожалуйста, это для приватной жизни или на работе "впарили". Все же это имеет значение)
источник
oleg_log
Google будет спонсировать переписывание всяких тулзов на Rust. Выяснили, что бОльшую часть секьюрных багов можно было бы избежать, используя язык с memory safety механизмами..
источник
2021 February 19
oleg_log
Долгожданный (для меня) пост об изменениях в модулях для го 1.16

Не мутируем теперь го.мод на каждый чих, пожалуй самое важное. Ну и по дефолту теперь включены. Уиииииииии

https://blog.golang.org/go116-module-changes

UPD: я сильно ступил, пропустив module retraction, когда ответственный автор либы может пушнуть инфо про плохие версии всем пользователям либы. Это ж отличная вещь чтобы быть из коробки!
источник
oleg_log
Как-то мне это все напоминает это https://t.me/oleg_log/82 Разве что ноликов больше.

Ну ладно, проблемы все же разные, но идея о том, что вы дадим плохое число на входе и будет плохо.
источник
oleg_log
CVE-2021-3177 Python 3.x through 3.9.1 has a buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution in certain Python applications that accept floating-point numbers as untrusted input, as demonstrated by a 1e300 argument to c_double.from_param. This occurs because sprintf is used unsafely

>>> import ctypes
>>> x = ctypes.c_double.from_param(1e300)
>>> repr(x)
Segmentation fault
источник