oleg_log
1.76K subscribers
1.86K photos
130 videos
9 files
2.79K 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
Такс, хотел в пятницу, но #задачка будет сегодня. Сколько различных флоат32 помещается в промежутке [0; 1] ? (для подсказки: а сколько в [-1; 1] ? Ответ можно дать наугад с большой шансом угадать :) Для тех кому скучно и хочется поиграться с битиками: посчитайте…
Так получилось, что ответили только 3/3 человека. Штош.

Начнем с подсказки, ответ....половина. Да, в [-1; 1] содержится половина всех флоат32.

Если кратко, то для х и 1/х у нас одинаковое кол-во битов. Поэтому внутри [-1; 1] должно быть столько, сколько в (-inf; -1) U (1; +inf), приблизительно, ведь там еще +- 0 и NaN, а я не помню что и как с ними %)

Соотв в [0; 1] попадет четверть всех флоатов.

Если совсем точно, то 126 * 2**23 + 1 == 1,056,964,609. Позитивные экспоненты * мантисса + само число 1 = миллиард с кусочком, или 2**30 как приближение, то есть 1/4 от 2**32.

А код для [x;y] я сам не написал, поэтому можете не спрашивать, задание было для хардкорщиков, но видно таких не нашлось.

Так устроена природа, как говорил мощный физик из ДонНУ.

Ссылочки:
любимец многих Daniel Lemire (советую его блог, особого хардкора жаль нет, но порой интересно)
https://lemire.me/blog/2017/02/28/how-many-floating-point-numbers-are-in-the-interval-01/

"Дизассемблер флоатов" https://float.exposed/0x42304000

И хорошее описание внутренностей флоатов http://fabiensanglard.net/floating_point_visually_explained/
Вот очень-очень крутое замечание https://xn--r1a.website/numstation/1550

При смене операций над данными можно решить разные задачи. Мне это еще напомнило BFS/DFS (те что обходу графов в ширину и глубину).

При смене очереди на стек, в простейшей реализации, 1й становится 2м и можно наоборот.

Весь мир состоит из паттернов.
черт...годовщину пропустил 😭
В го 1.13 очевидно завезут новые таймеры, вот с таким красивым комитом: const oldTimers = false

И таким (частичным) описанием:
runtime: switch to using new timer code

No big changes in the runtime package benchmarks.

Changes in the time package benchmarks:

name old time/op new time/op delta
AfterFunc-12 1.57ms ± 1% 0.07ms ± 1% -95.42%
After-12 1.63ms ± 3% 0.11ms ± 1% -93.54%
Reset-12 6.78µs ± 1% 4.24µs ± 7% -37.45%
Sleep-12 183µs ± 1% 125µs ± 1% -31.67%
Ticker-12 5.40ms ± 2% 0.03ms ± 1% -99.43%


Насколько я знаю от людей из гугла, это вещи давно у них ходят в проде и все ок, вероятность фатальных дыр минимальна.

Справа там куча патчей с изменениями:
https://go-review.googlesource.com/c/go/+/171883/
В телегу завезли анимированные стикеры, если вы в поисках, то есть канал с ними.

https://xn--r1a.website/AnimatedStickers
и еще https://xn--r1a.website/topanimated

(кстати какие-то клиенты телегу могут падать с ошибкой, обновитесь до последней)
Forwarded from Animated Stickers
This media is not supported in your browser
VIEW IN TELEGRAM
ДА БЛИН, ДА! (хотя спасают, но редко)
oleg_log
Как много вы овертаймите?
(возьмем 8ч как нормальный рабочий день)
ежедневно == только рабочие дни, аргх
Уже 15 лет висит.
https://jira.atlassian.com/browse/JRASERVER-3406
(кстати комент потерли)
Не знаю почему, но (самодельные) шутки про Collatz conjecture меня особенно смешат.

Да, это та самая задачка про 3n+1 и вопросу, сведется ли число к 1.
До 10**18 все ок, а дальше хз.

https://en.wikipedia.org/wiki/Collatz_conjecture
Forwarded from distraction
Forwarded from Sysadmin Tools 🇺🇦
​​Многие в курсе что такое Zabbix, и тоже многие говорят, что он днище. Согласен, в некоторых моментах да, в некоторых нет. Для провайдеров очень полезная штука. Так вот - есть форк https://glaber.io , при этом с допилом/перепилом/кластеризацией из коробки.

https://gitlab.com/mikler/glaber

Уже собраны пакеты, можно тестировать.

https://gitlab.com/mikler/glaber/tree/master/releases

Issues - приветствуються.

Чат в Telegram: https://xn--r1a.website/glaber_group
Уже почти 3 года с этого куска кода прошло, но до сих пор болит. Не надо так делать. Краткость была проиграна в пользу комментария, улучшение перф все равно не появилось.
класс, половина фции это проверка, что никто не ошибся в типах

UPD да, это путон2, живешь с тем, с чем живешь
Отлично, теперь можно смотреть нетфликс в хенгаутсе.

https://netflixhangouts.com/
Понадобилось сделат "дифф" 2х списков питона, из разных кластеров Zookeeper, что-то типа:
xs = [1, 2, 5, 6]
ys = [2, 3, 4, 5]
print list(pairs(xs, ys))
# [(1, None), (2, 2), (None, 3), (None, 4), (5, 5), (6, None)]

И нагуглил красивое (как по мне) решение:

from collections import deque

def pairs(xs, ys, cmp):
xs = deque(sorted(xs))
ys = deque(sorted(ys))

while xs and ys:
c = cmp(xs[0], ys[0])
if c == 0:
yield xs.popleft(), ys.popleft()
elif c < 0:
yield xs.popleft(), None
else: # c > 0:
yield None, ys.popleft()

for x in xs: yield x, None
for y in ys: yield None, y

3й параметр cmp конечно можно выкинуть и подправить if-elif на обычное сравнение.

Сурс: https://stackoverflow.com/a/11426702/433041