oleg_log
1.78K subscribers
1.86K photos
129 videos
9 files
2.77K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks

about: https://xn--r1a.website/oleg_log/3200
Download Telegram
Решил доопенсурсить одну вещичку, как хороший гражданин Гитхаба, дописываю тесты. Необходимо было проверить, что поля структур от пользователя правильные.

Вариант1: вытащить часть логики, а остальное запихнуть в лямбды, чтобы красиво и без копипасты.

Вариант2: https://go2goplay.golang.org/p/CZrCcqpIanG

Не знаю, что тут можно сказать. Ну можно и так, и так.
oleg_log
Решил доопенсурсить одну вещичку, как хороший гражданин Гитхаба, дописываю тесты. Необходимо было проверить, что поля структур от пользователя правильные. Вариант1: вытащить часть логики, а остальное запихнуть в лямбды, чтобы красиво и без копипасты. Вариант2:…
Код, кому не хочется идти по ссылке

type Checker struct{}

func (Checker) Check(dst interface{}) error { return nil }

func TestBadStruct(t *testing.T) {
verify(t, func(checker *Checker) error {
return checker.Check(&struct {
Bool bool
}{})
})

verify(t, func(checker *Checker) error {
return checker.Check(&struct {
Int int
}{})
})
}

func TestBadStruct_Generic(t *testing.T) {
verify_gen(t, &struct {
Bool bool
}{})

verify_gen(t, &struct {
Int int
}{})
}

func verify(t *testing.T, testCase func(*Checker) error) {
t.Helper()

if err := testCase(&Checker{}); err == nil {
t.Fatal(err)
}
}

func verify_gen[type T](t *testing.T, s T) {
t.Helper()

cheсker := &Checker{}
if err := cheсker.Check(s); err == nil {
t.Fatal(err)
}
}
oleg_log
?
Лан, я перемудрил) Погрешил на рефлексию, а дебажить не хотелось. Просто нужно было передавать указатель на структуру и с interface{} все стало на свои места.

Штош, пойду выпиливать лямбды и удалять Бартоша из подписок.

Спасибо Егору, что заставил меня еще раз в код посмореть. А ваще, дженерики ничего бы нового не дали, упс)
It's been by far the most requested feature for a while, and it's finally here: Svelte officially supports TypeScript.

https://svelte.dev/blog/svelte-and-typescript
oleg_log
Лан, я перемудрил) Погрешил на рефлексию, а дебажить не хотелось. Просто нужно было передавать указатель на структуру и с interface{} все стало на свои места. Штош, пойду выпиливать лямбды и удалять Бартоша из подписок. Спасибо Егору, что заставил меня…
Меня отпустило и я закончил.

Делаю я 1 селфхост проектик, и хотелось простого - читать конфиг из разных теплых мест. Брать какие-то там вайперы-шмайперы спасибо, но не хотел.

В итоге родился aconfig. Проще некуда. Читает с дефолтов структуры, с файлов, с енв и конечно флагов.

С АПИ вроде все понятно и меняться особо не должно, но фидбек послушаю, мой случай покрывает и я пока доволен.

Тут можете жмакнуть звездочку https://github.com/cristalhq/aconfig буду оч признателен. #hq

Отдельное и огромное спасибо Искандеру, за выслушивание моих попыток и крутой совет с flag.FlagSet, чуть позже расскажу, что там такое было прикольное.
Магия это плохо, если не вротмненоги. Столкнулся с такой фишечкой Rust, когда он выводит тип сам, заглядывая в будущее (а именно на следующие строки кода).

Это приятно, что компилятор знает о предстоящих действиях, но это так же напрягает из-за неявных допущений.

Хоть и пример о константах и явные вызовы фций такое бы не пропустили(ведь да?), некое ощущение тревоги остаётся.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d653649834e63684a51c83896212ffbd (пойду за ведром)
Если бы Телеграм стал платным (допустим 5-10 баксов в месяц), вы бы продолжили им пользоваться?

(допустим платные фичи не добавили, просто весь сервис стал по подписке)
Anonymous Poll
28%
Да
57%
Не
15%
Результаты
А, и еще, хороший стикер благодаря Александру появился:
хотя пикчу сделал Михаил, что немаловажно
А почему еще никто не сказал, что Cassandra 4.0 Beta выпустили? Судя по описанию не зря они затягивали. Надо будет на свежую голову почитать подробнее. Apple (да если бы только ни) постарались хорошо.

https://cassandra.apache.org/blog/2020/07/20/apache-cassandra-4-0-beta1.html
Мы тут о системах сборок ругаемся, можете подключаться (не, не подкаст, прост чат) https://xn--r1a.website/generictalkschat
Как пользуются айфоном слабовидящие. Заставляет удивиться и задуматься о UI/UX

https://twitter.com/Kristy_Viers/status/1287189581926981634
oleg_log
Интересный вопрос на самом деле. Для тех, кто не хочет ответить в твитор, может ответить мне 👀 @olegkovalov https://twitter.com/davidcrawshaw/status/1277111328155398145
Зря я пошел смотреть ответы.

CRDT, TLA+, SMT вот прям те вещи, без которых сейчас сложно начать проект. Про ML можно даже не говорить.

А вот про примитивы для многопоточного программирования я не заметил. Хотя если подумать, решение в стдлиб очень бы упростило жизнь в новом языке.

Еще порадовало, что многие упомянули телеметрию(трейсинг, метрики) и жсон/ямл, полезно ведь.

Вопрос встроенной ORM такой же полезные, как и: "а нужен ли нам 1 единый интерфейс под все БД(хотя бы NoSQL) ?".
oleg_log
Cloudflare - угроза интернету?

(в контексте недавнего падения и того, что больше и больше ресурсов зависят от одной фирмы)
Таки большинство за то, что Cloudflare это угроза. Спешу не согласиться.

Если какой-то сервис решает спрятаться за CF, то...падение CF это все так же отвественность сервиса, разве нет? Да, есть SLA, да, CF получают за это деньги и должны поддерживать стабильность, но ведь никто не застрахован :)

Слишком много сервисов живут за CF и как-то вот особо нарекание нет, пока не упадёт. Совпадение? Как минимум 10% мирового трафика идёт через них и вроде бы все ок. Возможно если бы они все поделили на независимые регионы, то было бы всем спокойнее, но на диване все виднее.

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

А здесь прикольная история, как выставить 13.7гб файл в интернет и узнать кошельком, что Cloudflare кеширует только дл 512мб. Поучительно. Ток в чем проблема Cloudflare? https://chrisshort.net/the-aws-bill-heard-around-the-world/ (спасибо Вадиму за ссылку).

Около итог: все может упасть, и AWS, и CF, и даже контейнер, хотя в тут же AWS ослуживает неисчисляемое кол-во трафика и клиентов, через CF идёт тоже сотни Пб и контейнеры могут ходить годами без рестартов. Так в чем проблема пользоваться этими вещами? :)