oleg_log
1.72K 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
(Jens Axboe это крутой чел из ФБ который работает над io_uring для ядра Линукса)
твит https://twitter.com/dvyukov/status/1184013909046497280
I think the surprising thing is that people are surprised.
It took basically until now for the bloom to come off the rose. Think about that. For 20 years Google has been supposedly hiring the smartest guys in the room and all it took was free food, some ball pits and slides, contributing some tech to open source, and working on a handful of "moonshots" that haven't gone anywhere to keep the sheen of innovation going. And it worked. For 20 years.

People have been saying Google is the new Microsoft for a few years but it basically took until now for that to become consensus. Microsoft, who's been on the back foot until recently, has recast themselves as the new Open Source Champion, basically using the Google playbook from 20 years ago. And it's working!

If you think about it Apple is the only company that hasn't changed. There's never been a bait and switch. It's always been proprietary. It's always been confident, others would say arrogant about its products. They've never tried to cloak themselves with the mantle of open source. The only reason the tech industry uses their products is because of its inherent qualities. No one had to be tricked into liking them. And they've always been honest about this.

<абзац про прайваси а потом и коменты>

https://news.ycombinator.com/item?id=21049743
oleg_log
Оказывается постгрес не улавливает ручное изменение sequence/serial/etc CREATE TABLE foo ( id SERIAL PRIMARY KEY, content TEXT ); INSERT INTO foo (id, content) VALUES (1, 'bar'); INSERT INTO foo (id, content) VALUES (2, 'baz'); INSERT INTO foo (content)…
Я тут последние вечера допиливал pgstats, эт простенькая либка, котора вытаскивает системные таблицы Постгреса, и конечно же на го.

Мысль родилась еще во времена прикрепленного поста, но покрытие всех таблиц заглохло. Но вот, таки закончил. Стоит еще warmup сделать и докинуть тестов для вменяемости (оказывается тима Постгреса поддерживает каждую версию 5 лет, не знал, думал там LTS есть).

Репка https://github.com/cristalhq/pgstats #hq
А тут конфиг для Github Actions с подниманием Постгреса, пришлось немного подебажить все это, в итоге подключаюсь к 127.0.0.1, хост postgres почему-то не подхватило.

https://github.com/cristalhq/pgstats/blob/master/.github/workflows/build.yml

UPD: уже смотрю доки mysql и clickhouse, почему бы и нет?
В короткой беседе с @itgram_channel я сморозил неплохую фразу: "чтение конфига линтера это чтение кода между строк" (речь шла про golangci-lint).

Чтож я имел в виду? Почитав какие есть проверки, как они настраиваются и какой код они ищут, можно неплохо углубится в язык. Какие бывают конструкции, какие вещи опасны, какие могут трактоваться в разный способ.

Поэтому советую почитать ваш _линтер-нейм_ на наличие конфига, и в неочевидных частях языка покопаетесь, и выключите то, что не надо (к примеру вам).
Segment опять втирает свои супер истории с прода, в этот раз про оптимизации и деньги. Пойдем-с читать....

https://segment.com/blog/the-10m-engineering-problem/
Ехал на работу и так прикинул. Последние месяцы было с десяток IPO в 1B club. Всякие Лифты, Слаки, Уберы и прочее. И как оказыается, большинство этих компаний прост перегреты инвесторами и маркетологами.

Да, конечно у них есть пользователи, у них ХАЙЛОАД, и они даже работают, но вам это не напоминает Dot-com bubble 2000 года? Это мало известно в снг, ведь тогда интернет был по талонам, но на самом деле очень похоже.

Конечно сейчас все чуть поумнели, но история повторяется 2.0. Обвала NASDAQ не будет, твёрдо и четко, но все же странно это. Ставлю 5 злотых, что в 2040 будет еще 1 всплеск. Советую быть на волне.
Ох, какую я красоту ща прочитал. Ребята пилят сервис меш на Envoy. Местами у них происходит #go . У них появились тесты с переменными окружение (env vars которые). И во время ревью возник вопрос: а кто-то знает либу, чтобы чистить переменные между тестами?

Вопрос смешной, но отлично видна разница в том, как люди мыслят (и как влияет язык на мышление)(мыж помним фразу "если язык не меняет мышление, то он ничему не учит" ? речь про язык прогр).

Да, (мой) ответ довольно простой и даже рабочий:
func cleanupEnv(t *testing.T, vars ...string) {
t.Helper() // чтобы в стектрейсе не было (хотя полезно ток когда в фукнции есть t.Error/Fatal и тд)
for _, v := range vars {
os.Unsetenv(v) // не знал о такой функции
}
}

func TestFoo(t *testing.T) {
defer cleanupEnv(t, "lol", "kek")
....
}

А пока я это писал, полез в доку провеить как работает Unsetenv, а там функция Clearenv (https://godoc.org/os#Clearenv)

Вывод: проще читать доку.
*смеющийся Гарольд* хаха мы с этим работаем
compile 'org.springframework.boot:spring-boot-starter-data-cassandra:' + versions.springBoot

говорю человеку, перепиши по человесески на:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-cassandra', version: versions.springBoot

Говорит не привык. Ну я так-то тоже. Но конкатинировать названия-версии в зависимостях это прям новый лвл для меня. #саксес_сториз никак иначе.

(да, там другие версии в 1м формате тоже, один я кровью рыдаю от этого)
Forwarded from Linkstream
This media is not supported in your browser
VIEW IN TELEGRAM
an optical metamaterial, finally! now they just need to add a gradient to fully transparent plastic on the edges and it would be great #gits #camo
Ща буду рыдать, но на самом деле так и выглядит обычный собес в гугл. У меня тож была одна задача с квадратной сложность, эх...

Удивился тому, что кто-то принёс игру го. Прям ух какой фанат, таких бояться надо.

https://leetcode.com/discuss/interview-experience/407944/google-l4-warsaw-sep-2019-offer
Некоторые из Вас слышали, что я бугурчу на роль архитектора. Я вижу в этом чаще проблему, чем спасение (исключения будут суперлегаси, где нужен старец, который все это видит десятки лет).

Но вот в обычной фирме вся тима должна участвовать в проектировании и знать, куда торчит апи (к примеру микросервис).

Ну и вот, в большой фирме он тоже пригодится. Когда одна тима, у которой нужные данные, говорит: не, мы не будем делать еще один ендпоинт, вы лучше делайте запрос на то, что есть, выкидывайте ненужное, и отправляйте обратно.

Мелочь, однако сервисы становятся более связанными, растёт пустой код, да и желанием связываться отпадает. Как бы не за это боролись. А был бы рил-архитектор, пришёл бы и положил бы вето. По крайней мере хочется верить.
опаньки, а это интересно уже
oleg_log
такстоп. почему TimeUnit в пакете для многопоточности, но Timer в java.util?
Я снова вижу TimeUnit, теперь с нового ракурса. Ну кто мог такое апи придумать-то?

import static java.util.concurrent.TimeUnit.SECONDS;

private long connectTimeout = SECONDS.toMillis(5);


В голове прост изумительно читается: секунды в милли(секунды) пять 👍
Вот не зря я пошел листать канал от начала. Нашел-вспомнил серию статей об устройстве БД. Настоятельно советую почитать (их вроде 6 всего). Кстати подписаться тоже стоит :)

https://t.me/UkropsDigest