Telegram Web Link
Классика вам в ленту.

— Ты функциональщик! - прокричал Сергей на весь оупен-спейс-рум номер 14.
Комната притихла в ожидании развязки.
— Я видел, как ты вчера вечером каррировал и декаррировал прямо за рабочим компьютером!
Неодобрительный ропот и возгласы удивления прокатились по комнате. Кто-то громким шепотом сказал “какой ужас, а я с ним за руку здоровался”.
— Знаешь что, Сергей, — сказал Денис, вставая из-за рабочего стола, — любой нормальный мужчина, если у него всё в порядке, может позволить себе позаниматься функциональным программированием. Это естественно. Каждый хотя бы раз, да пробовал. Зачем только об этом кричать на всю комнату? Я же не кричу, что ты объектно-ориентированный!
Девушки захихикали, кто-то снова громко пробормотал “ну надо же, а по нему и не скажешь”.
Присутствовавший при этом Игорь Матвеевич сильнее вжался в кресло. Только бы никто не узнал про его процедурные наклонности!
На моём плеере, в котором я плаваю в воде, отсутствует функция ускоренного воспроизведения. То есть плеер достаточно тупой, функционально очень беден, а в последнее время я привык уже слушать аудиотреки в ускоренном режиме.
Некоторые книги кажется начитываются размеренным степенным дикторским голосом, и различные подкасты тоже часто ведутся не спеша.
Эмпирически я выяснил, что 1.8x — это оптимальное ускорение для меня, искажения речи не такие сильные, как при 2.0x. Накидал на коленке конвертер, если вдруг кому надо:
#!/usr/bin/env python3

import os
import subprocess


def convert_audio(dirname, speed_up=1.8, keep_orig=True):
mp3s = list(sorted(filter(
lambda f: not os.path.isdir(f) and os.path.splitext(f)[1] == '.mp3', os.listdir(dirname)
)))
for f in mp3s:
name, ext = os.path.splitext(f)
f_new = f'{name}_{ext}'
# e.g. ffmpeg -y -i 101.mp3 -filter:a "atempo=1.8" -vn 101_.mp3
p = subprocess.Popen([
'ffmpeg', '-y', '-i', f, '-filter:a', f'atempo={speed_up}', '-vn', f_new
], cwd=dirname)
p.wait()
if not keep_orig:
os.replace(os.path.join(dirname, f_new), os.path.join(dirname, f))


convert_audio('.', keep_orig=False)

Преобразование в list выполняется потому, что os.listdir ленивый и будет загребать уже преобразованные аудиофайлы, если параметр keep_orig == False.
На случай, если нужно будет кому-то рассказать, как состоят дела у C++ с неопределённым поведением. Ребята провели большую работу по собиранию и классификации разных случаев, но не гарантируется, что этот список полный.

www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1705r0.html
Внезапно.
Внезапно x2
Forwarded from suhr
Linker Unsafe
В закладки. A curated selection of artisanal consensus algorithms and hand-crafted distributed lock services. https://github.com/graydon/awesome-consensus
В дополнение анимированный интерактивный туториал по Raft консенсусу. Известная ссылка, но вдруг кто не видел.
http://thesecretlivesofdata.com/raft/
Сожалею, броз, что вам это читать второй раз, но не могу не репостнуть 😏
Товарищ Jaume Sanchez Elias из Deepmind сделал красивый js-рендерер заузленных торов, стилизованный под грубую ручную штриховку. Интерактив тут, а код здесь. Выглядит очень лампово, особенно в динамике, и я всё думал, что это мне напоминает.

В итоге вспомнил — в студенчестве мой товарищ Вольдемар притащил отличную книжку Франсиса Джорджа К. под названием "Книжка с картинками по топологии: Как рисовать математические картинки", пример картинки из неё справа внизу. На Озоне она давно кончилась, но если поискать, в сети можно найти pdf. Кстати, следы прочтения этой книжки можно наблюдать на аватарке этого канала.
Forwarded from 💮
В питоне удобно сделали, совместили параллелизм зелёных потоков и накладные расходы нативных тредов.
Снова питон.

ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.

We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.


Сколько же костылей в этой змее... 🤕
Провожу мысленный эксперимент, когда в Rust разделителями между неймспейсами являются -, а не ::

fn main() {
let s = "Hello, World!";
let string = Into-<String>-into(s);
}

Хех. Но в лиспах кебаб кейс очень хорош.
Channel name was changed to «Chan<Nick, Recv<T, S>>»
This media is not supported in your browser
VIEW IN TELEGRAM
В левом углу ринга — единственный и неповторимый обыыыыычный жуууук! В правом углу ринга — дитя нанотехнологий роооообожууууук!
Спойлер: природа пока побеждает.
Forwarded from Arsen
Скала это как хаскель, только джава.
2025/09/17 11:08:11
Back to Top
HTML Embed Code: