oleg_log
1.73K subscribers
1.88K photos
131 videos
9 files
2.82K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Сейчас я пишу одну из самых отвратительных вещей в жизни.

Если кратко, то я играюсь с ооп фабриками, спринг контекстами и перекидыванием классов между публичным и приватным проектами.

Все бы ничего, но приходится писать костыли во имя блага (иначе придется еще больше вещей переделывать)(один из основных авторов одобрил, я чист).

Офкорс можно ругать архитектуру и вообще мой дед написал бы лучше™, но так уж вышло.

Често говоря меня выбешивает другое: циклические зависимости. Не явные, но все же циклические. Когда оказывается, что пакеты между собой связаны в кольцо длиной 5 (foo -> bar -> baz -> quz -> foo, wtf?)

Выстраданная мысль: спагетти начинается не с кода, а с модулей/пакетом/неймспейсов.

"he will not divide us" - звучит как лозунг херовенько организованных модулей, в которые я несу демократию и фичи👌
Дед Боб сцепился с Джеффом со стековерфлоу и испортили всем ленту в твиторе каждый раз одно и тоже...

Рандом чел - Types + tests > tests
Дед Боб - Not necessarily. Types come with significant costs.

Но ведь: Tests aren't free either

Дедуле пора на пенсию.

https://mobile.twitter.com/codinghorror/status/1141848007404425221
В копилочку к: между теоретическим и практическим программированием все же есть разница
1й билд дня начинатеся с этого:
Could not GET 'https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.9.4/jackson-annotations-2.9.4.pom'. Received status code 403 from server: Forbidden

Ок, допустим я превысил квоту на скачивание, теперь хороший вопрос, а почему оно не лежит в CDN?
А если и лежит, то какой же это надо иметь объем запросов, чтобы мне кидало 403 ? для CDN думаю смешной.

Космонавты архитектуры, чесслово

UPD: мавен репо живет за плечами Fastly, спасибо за уточнение (тут упоминается https://www.fastly.com/customers/sonatype)
Хорошая задачка на самом деле, да и ответ не замудренный.

Кстати, еще одна близкая и хорошая: напишите генератор строк с одинаковым хешем (жавовским к примеру)

https://t.me/numstation/1514
ExponentiallyDecayingReservoir это такой крутой контейнер для метрик, который выжирает под 1.5гб рама и висит там очень долго (почти забирая треть рама сервиса).

А потому что внутри ConcurrentSkipListMap. А она далеко не легко весная, а метрик хочется больше. Но не такой же ценой, блин.

(резервуар из пакета com/codahale/metrics если что)
Узнал сегодня о макросе include в Rust, который парсит заданный файл как выражение на расте. В доке сразу советуют им не пользоваться лишний раз. Действительно, странно-опасная штука, контект выражения смешивается с округающим кодом. Но круто, да.

/// File 'monkeys.in':
['🙈', '🙊', '🙉']
.iter()
.cycle()
.take(6)
.collect::<String>()

/// File 'main.rs':
fn main() {
let my_string = include!("monkeys.in");
assert_eq!("🙈🙊🙉🙈🙊🙉", my_string);
println!("{}", my_string);
}

https://doc.rust-lang.org/std/macro.include.html

И более адекватные братья include_bytes & include_str. Работаю так же, ток типы байт аррей и строка соотв.

Казалось бы, причем тут префикс include, а как подсказал друг, это смахивает на include из си. Как помню в ранних версиях это просто означало: вставь этот файл сюда и компиль (хотя си далеко от этой мысли не ушел)
Штош, в го завозят try к 1.14, разрешают накладывание интерфейсов, ругаются на strings(int), улучшают криптографию. Аве

https://blog.golang.org/go2-next-steps
oleg_log
Штош, в го завозят try к 1.14, разрешают накладывание интерфейсов, ругаются на strings(int), улучшают криптографию. Аве https://blog.golang.org/go2-next-steps
Если кратко, то try работает так. Там есть одна тонкость, когда он используется с go и defer. Пользоваться можно, но смысл сомнительный.
Далеко не редкий диалог:
- (предположительно глупый вопрос)
- (долгий и подробный ответ, хотя и обычны подойдет)
- (подслушавший человек: вау, оказывается даже так???)

К чему я это, к тому, что стоит себя пересилить и лишний раз спросить, в большинстве случаев это закончится лучшими знаниями для всех сторон. Хороший профи не будет рофлить и обсирать.

Если же все наоборот, то...лучше спросить себя, что я делаю с этими муделями тут /шраг

Собственно разговор из сесурити тимы гугла. Далеко не глупый человек уточнил у напарника какую-то вещь, а через 15 мин диалога тимлид офигел, от реальных вещей.
Forwarded from _| ̄|○
Штош, я опять на конфе, в этот раз GopherCon Poland в Гданьске.

Доклад тот же (Packages & Modules), что и на GoGoConf, ток оформление другое. 2й раз читать необязательно.

Слайды https://speakerdeck.com/olegkovalov/packages-and-modules-gophercon-poland-2019

GoGoConf: https://t.me/oleg_log/1161

(между конфами я успел постареть на год ):
Наканецта
AirPods гениальны, спасибо, Тим (да, туалетный юмор, буквально)
Что-то у меня такое предчувствие, что лог билда на 2.5мб это больше, чем надо. Конечно есть ripgrep и все это парсится, но...зачем?
~19к строк лога это щедро