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
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
Ахахахха, я не один такой (не палимся)

С одной стороны такой способ скидывания работы отлично даёт возможность не чахнуть, с другой стороны дает больше тасок на релакс. Главное не перебрать с собранным количеством. Советую еще с грустью говорить: эх, жаль не успеваю сейчас, придётся таску делать..

https://xn--r1a.website/your_soft_skillzz/91

(Кстати рекомендую канал, хорошие вещи порой обсуждаются)
today i learned that Python rounds `float` values by converting them to a string with snprintf and then back via strtod, and now i'm sad.

Твит: https://twitter.com/whitequark/status/1164395585056604160?s=21
Раз уж я заваливаю вас сообщениями, скажу еще одно #неайтишное

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

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

А вот выключать кондиционер на ночь, не летать толпами на самолетах, НЕ КАТАТЬ РАЗДУТЫЕ ЖВМ-СЕРВИСЫ В ПРОДЕ НА ВИРТУАЛКАХ почему-то никому в голову не пришла.

Все таки это айтишный пост, ведь все по словам дедушки Кнута, эх..
oleg_log
Раз уж я заваливаю вас сообщениями, скажу еще одно #неайтишное У нас несколько офисов в Польше и между офисами передаются разные бумажные документы (справки, отчеты, тд, бюрократия в общем). И вот кто-то на волне "поборимся за планету" решил, что передавать…
UPD: слова Вадима(спасибо ему):
никто ничего не "решил" конечно, просто Еврокомиссия дает гранты за "гринстайл" офисы, куда входят минимизация бумажной волокиты, раздельный сбор мусора и прочая борьба за природу без ущерба комфорту начальственных задниц

UPD: @sysadmin_tools PrivatBank PAPERLESS
(возможно у некоторых без впн не откроется, я хз)
https://privatbank.ua/business/paperless
Вчера я про неявные ретурны упоминал, сегодня речь чуть про другое.

Early return or goto hell

все же надо расчехлить бложек на своем сайте и постить туда, приношу извинения, но сейчас в телеграфе:
https://telegra.ph/Multiple-return-or-goto-hell-08-22

(внезапно название в ссылке не соответствует посту, но телеграф слишком гибок в редактировании поста)
oleg_log
И вот что с этим кодом не так? Он компилируется, если что. Утром(?) скину ответ, хотите рискнуть - напишите вашу идею @olegkovalov (вариант: "лол это жава" не считается) (за скрин спасибо Павлу из чата)
Ответ для жаждущих:
класс public, а все методы-слушатели — package-private.

Есть вариант, что там был интерфейс, но порефакторили в абстрактный класс. А жава не новая и default-ов в интерфейсе добавить нельзя.

Самое веселое: есть дока, есть тасочка на фикс, есть фикс, а релиза версии нет))))))
https://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/input/ObservableInputStream.Observer.html

https://issues.apache.org/jira/browse/IO-582?jql=project%20%3D%20IO%20AND%20text%20~%20%22Observable%22%20ORDER%20BY%20key%20DESC

https://commons.apache.org/proper/commons-io/download_io.cgi
Уязвимость старая, но идея еще жива. Просто оптимизирующий компилятор может сделать больше, чем от него просят. Хотя и справедливо...

https://www.redhat.com/en/blog/security-flaws-caused-compiler-optimizations
В блоге #go вышел новый пост про миграцию на модули:

ч1 и ч2 (март и август соотв)
https://blog.golang.org/using-go-modules
https://blog.golang.org/migrating-to-go-modules
A colleague had setup some machines to align configurations among each other, via a script (of course). This script has grown over and over, and now has parameters, options and configurations. For short: it's a big mess. Quite logic and readable actually (the guy was smart), assuming you have time and patience to go trough it.

This guy starts the configuration of some new servers then leaves in the middle. "Leaves" as in "leaves the company entirely". So the script does not work, and erases configurations instead. Luckly, the erasing happens after a daily backup.

So I had to fix this... But i was in the middle of 1400 other things, and the quickest way was to add another script to fix the mess created with a scrtipt with another script. So there came to be another script that restores the backups and aligns it.

So there's a big customer, an important company on a national scale, whose machines erase each other's configurations every day, and then the same machines restore each other every day. All within a daily maintenance window.

That thing has been working for a suprising number of months now.

I really don't want to touch it ever again