oleg_log
1.77K subscribers
1.86K photos
130 videos
9 files
2.78K links
Shelter for antisocial programmers "Oleg"

halp: @olegkovalov
web: https://olegk.dev
fov: @oleg_fov
chat: @oleg_log_blabla
podcast: @generictalks
Download Telegram
Why the absolute value of the max negative integer -2147483648 is still -2147483648?

printf("abs(-2147483648): %d\n", abs(-2147483648));

Outputs:
abs(-2147483648): -2147483648


Answer:
The standard says about abs():
The abs, labs, and llabs functions compute the absolute value of an integer j. If the result cannot be represented, the behavior is undefined.

SO: https://stackoverflow.com/a/11245784/433041
oleg_log
Внезапно у нас хакатон на 2 дня (прост я забыл). Тема: боты для слака. Если есть вариант, что можно собрать, подскажите @olegkovalov (или в коменты :)
И какого хрена я полез в апи ФБ ? Ах да, я ж просто хотел открывать страницы кафешек возле офиса и закидывать саммари на канал слака.

В итоге я полдня убил на разгребание доки, чтобы понять, как получить токен, ЧТОБЫ ПРОСТО ПРОЧИТАТЬ ЖСОН СТАВЛЮ КЛАСС ЦУКЕРБЕРГ.

"(#10) To use 'Page Public Content Access', your use of this endpoint must be reviewed and approved by Facebook. To submit this 'Page Public Content Access' feature for review please read our documentation on reviewable features: https://developers.facebook.com/docs/apps/review."

да и сайт УГ, у меня на народ.яндекс.ру лучше было
oleg_log
И какого хрена я полез в апи ФБ ? Ах да, я ж просто хотел открывать страницы кафешек возле офиса и закидывать саммари на канал слака. В итоге я полдня убил на разгребание доки, чтобы понять, как получить токен, ЧТОБЫ ПРОСТО ПРОЧИТАТЬ ЖСОН СТАВЛЮ КЛАСС ЦУКЕРБЕРГ.…
Короч, берешь хтмл и селектором вытягиваешь что надо, цукерберег лично звонит и просит породниться /тред

(этот веселый if i == 3 из-за того, что я не написал нормальный селектор, хотя теперь не знаю, нужен ли он мне, работает же)

Отдельно спасибо: Elegant Scraper and Crawler Framework for Golang http://go-colly.org созданном на основе https://github.com/PuerkitoBio/goquery
И тут же Дейв запилил новую статью: #go compiler intrinsics.

https://dave.cheney.net/2019/08/20/go-compiler-intrinsics
ахахахахах
Кек, в одном офисе гугла кто-то заказал себе комп с 256гб рама.

Compile-time шаблоны сами себя не вычислят.

upd: а не, все таки жаба, простите с++-шники
oleg_log
Внезапно у нас хакатон на 2 дня (прост я забыл). Тема: боты для слака. Если есть вариант, что можно собрать, подскажите @olegkovalov (или в коменты :)
Если вам повезет делать бота для Слака, то запомните, что есть официальный редактор шаблонов сообщений. Просто и круто (правда смапить жсон на гошный код надо ручками)(кстати хорошая идея для петпрожекта :)

(оч надеюсь Телега до такого тоже дорастет 🤞)

https://api.slack.com/tools/block-kit-builder
Круто, гитхаб заботится о правильных ПРах с форков.

Ссыль как не делать (очень советую глянуть) https://blog.jasonmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/
Ахахахха, как красиво
Вспомнил, что у нас люди сделали Akubra: Simple solution to keep a independent S3 storages in sync

Вдруг кому пригодится. Честно, сам не юзал и не создавал, но и нареканий от других не слышал.

https://github.com/allegro/akubra
Стреляем по ногам часть хз какая.

Кстати эта одна из причин, почему я нелюблю неявные return (да, раст, я про тебя)

Тред(там коменты про UB и когда это работает и нет): https://twitter.com/zeuxcg/status/1163629796879790080?s=21
oleg_log
Стреляем по ногам часть хз какая. Кстати эта одна из причин, почему я нелюблю неявные return (да, раст, я про тебя) Тред(там коменты про UB и когда это работает и нет): https://twitter.com/zeuxcg/status/1163629796879790080?s=21
Пожалуй уточню.

В расте нет UB (undefined behaviour) по такой же причине. Я говорил про отсутствие явного return:

fn omg_is_that_ub_no_its_not() -> bool {
for i in 0..10 {
assert!(i < 10);
}
true // <- disgusting
}


Считаю это такой же бесполезной(?) фичей как и bare return в го (именновать результаты это круто, но лучше явно сказать что возвращаешь)

func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return // <- disgusting
}
Хорошая статья к слову (правда читал ориг). Стоит заглянуть.
Наткнулся на 1 задачку на LeetCode (я странно отдыхаю после работы, но не об этом).

Решение в лоб - изи. Даже спойлерить нет смысла.

Решение оптимальнее чууть сложнее. Нужно решить общую задачу для медианы на потоке данных. А потом допилить окошко.

Но есть и другое оптимальное, причем будет даже проще, ведь вся сложность уйдет в одну непопулярную структуру данных. Хитрость заключается в том, что её не надо писать с 0.

И вот от этого мне обидно, хотя все честно. Достаточно на собесе сказать: ну тут мы пихаем данные в дс-нейм и..все. Эх..

https://leetcode.com/problems/sliding-window-median/
И вот что с этим кодом не так? Он компилируется, если что.

Утром(?) скину ответ, хотите рискнуть - напишите вашу идею @olegkovalov (вариант: "лол это жава" не считается)

(за скрин спасибо Павлу из чата)
Вышел Go 1.13 RC1 https://tip.golang.org/doc/go1.13