← All posts tagged programming

SannySanoff

Программирование дата процессинга на современных плюсах с STL на быстрой тачке подобно программированию на жабе на средней тачке,

минус удобство отладки (аццкие шаблоны не посмотреть нормально значения в окошке, половину функций не вызвать в evaluation окошке)

минус скорость компиляции

минус удобные немутабельные структуры (ибо аллок в жабе != аллок в плюсах) отсюда минус скорость выполнения потому что выходит больше copy by value (маленьких данных, в основном куски parse tree, не больших) чем хотелось бы (sic!)

минус лаконичность

ну а так уже почти привык.

SannySanoff

Чем дальше тем хуже ресетить на мускуле рутовый пароль, которой оно поставило в неизвестно что во время неинтерактивной инсталляции в убунте (ставил на самом деле pop! linux который убунта). Сегодня не помог и стек оверфлоу и все известные и неизвестные методы из методичек, 20 минут уже как процесс идет.

SannySanoff

Все ближе тот день, когда я скажу гуд бай своему гейбуку. Уже около трех лет я на нем педалю, и хочу поделиться, чем он лучше, а чем он хуже линукса, к которому я собираюсь вернуться.

Позитив:

Действительно, макось можно, но не нужно сильно настраивать, потому что, к счастью, практически все, что мне нужно было, оно работало сразу, и не ломалось: всякие видяхи-дисплеи, блютуц работает просто сразу (aptX), всякие выходы из sleep все как положено включается. После линуксов как-то нечего делать.

Удобно, что под нее все, что есть из сорцов, все собирается практически без проблем, или не собирается вообще (требуя новый xcode), потому что у нее свой Platform SDK, который один (а не кучи разных версий gcc/clang/whatever, как в линуксах), и xcode идет, и под ним прямо проект, который прямо запустил и отлаживай, например.

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

С точки зрения юзабилити это нормальный юникс-комп с работающим невырвиглазным UI, единым и стандартным. Застой, но унификация, стало быть.

Негатив:

Шорткаты, которые я не смог принять, многие привычные Alt надо жать на Cmd. Все что мог, перемапил на стандартные, но оно все равно где-то вылазит, на новый софт нужно писать маппинг, утомительно это. Еще: отсутствие menu/dialog accelerators: я как без рук.

Тормозное видео, и не лечится. Элементарно возишь мышой и 50% цпу считаются и перерисовываются onmouseover в хроме или сафари на современных сайтах (монитор 4К). На том же железе линукс летает, а макос — нет. Кроме того, в последних ОС проблема не решена. Кроме того, они депрекейтят opengl! я вот не понимаю.

Ухудшение ОС (дальнейшее ограничение API, например ремапилка клавиш не работает в принципе после Sierra, упомянутое отсутствие дров на nvidia в принципе), ухудшение железа (тачбар вместо функ клав, макс 32Г RAM), убирание портов, security hardware в ненужных местах, и дальнейшая БАО. Требование постоянных обновлений правдами и неправдами (например если у тебя новый гейфон, то под него сдк только под новый xcode, который только под новый макос, или тот же флуттер требует новый xcode, который ... см выше) — это вот все имеет стройные объяснения в их системе ценностей, но у меня просто другая система ценностей.

По ощущениям, их POSIX environment (баш + бинаризы + консоль) работают несколько медленнее чем линукс (к-во exec на единицу времени например). Да и не серверная она поэтому в принцпе, тк не оптимизирована. Отсутствие конкуренции сказывается.

Еще мелкий нюанс личного плана, что я девелоплю для разворачивания на линуксе, и в последнее время все чаще встречается сишечка, всякий опенцлчик, и планируется еще некоторое HPC, которое, увы, на гейбуке все как-то не так. Приходится разные мейкфайлики и дефайнчики, утомительно.

Вердикт считаю практически законченным, но может еще что-то вспомню.

SannySanoff

Давеча случился релиз Flutter 1.0, по этому поводу был Live Event, где адепты и афтары собрались, показывали презентации, видосики, и коллективно радовались.

Я сам адепт Флуттера, но я не упущу случая пнуть. Там был один из главных дизайнеров (которые по визуальному дизайну), из тех, которые с высоким голосом и бородой от уха до уха. Он показывал демо, и она тормозила вплоть до 10FPS визуально в некоторых местах. На главной презентации.

Я вот постоянно интересовался, как так, уберут ли они тормоза к релизу. Не убрали. Написал об этом в реддит, дал ссылку на ютуб с таймкодом, говорю, а чо все молчат шо оно тормозит даже на презентации.

Заминусовали.

"Оно не тормозит"
"Ты никогда не писал на флуттере"
"Это был не релиз билд (а дебуг моде)"

Не понимаю я с этими современными людишками ничего.

SannySanoff

Нулячая VM на Google Cloud, на ней нулячая венда, на ней свежая Visual Studio (C++) Community edition. Через раз на третий запускаешь билд (Ctrl+Shift+B) появляется колесо "ожидайте" и вся студия виснет. В проекте 3 файла.

Есть здесь кто скажет доброе слово про то, во что превратилась венда?

SannySanoff

Воткнул в розетку RockPro64 (RK3399) 4G Mali-T820 M2, в проводах весь стол: блок питания я отнял у жены, мышку отнял у рабочего компа, иксов нету, usb wifi не поднялся, езернет протянул с другого угла, гигабит поднялся норм.

Запустил на нем gzip, ffmpeg, нагрузил значит 6 ядер, написал программку на с++, запустил ее в 6 потоков, вертится, нагрелся немного, притормозил (throttling) процентов на 10-15, больше не тормозит, радиатор греется, вентилятора там нет.

Погуглил про OpenCL, по всяким NN выходит медленнее чем CPU, раза в 3, что для меня странно (сам еще не попробовал)

Или не странно.

По сравнению с моим 13-летним десктопом (core i7-920) работает где-то в 2 раза медленнее (single-core). А упомянутый core i7 920 — это в меру актуальный комп даже щас (умели раньше делать!). В результате умножая на ядра имеем где-то 2.5-3 раза разницу, что и подтвердилось и временем pbzip и времени gzip и количеством fps у ffmpeg.

Ящетаю что весьма не плохо. Что не мерял: скорость памяти. Тут наверняка будет подвох.

Нужно провести 12В и Езернет в отдельный уголок, подключить его и красноглазить красноглазить.

Одна из сфер применения — бабушкокомп. Другая — motion detection итп.

SannySanoff

Продолжаю знакомиться с R.

Короче, R это такой PHP, только для data scientists. Я делаю вывод, что его писал не программист, а дата scientist.

Короче, есть матрица двумерная. Там есть операция выбора строк, в синтаксисе языка (!), не функция какая-то. Передаешь туда массив booleans соотв. длины, в нем указываешь TRUE в тех местах где нужна строка, в других местах FALSE. Возвращает укороченную матрицу, в ней запрашиваемое количеством TRUE количество строк.

А если там стояло среди всех значений только одно TRUE, то оно возвращает не матрицу об одной строке, а вектор, на котором свой набор дальнейших операций.

Муахаха. В kdb такой пурги нет, чтобы от значения параметра менялся тип возвращаемого значения в таких местах. Но вообще я уже столько всего повидал, мне смешно ровно настолько, чтобы написать только псто в жуечку и забыть.

А вот Shiny framework — это прикольно. В чем его смысл. Это реактивный веб фреймворк, пишешь клиента и сервера на R в одном файле, внутре всякие reactive bindings, получается очень коротко все, контролы с входными данными и тут же тебе результат. В туда встроено миллион всяких графиков и прочих дата визуализаций, всякие data tables итд, и простые виджеты для ввода. Идеально для отчотности и визуализации. Идеально, если бы не R :) а нормальный язык. Но ничо, прорвемся. Интерфейс к kdb там работает — и отлично.

Образец: shiny.rstudio.com там сорцы видны вот это всё — смотреть, втыкать.

Удивительно, что бровзерный dev tools не показывает там ни AJAX, ни Websocket, никакого трафика между клиентом и сервером. Мы понимаем, что трафик есть, это просто dev tools глючит, но ковыряться некогда.

SannySanoff

Взялся немножко проходя мимо за язык R, такое ощущение, что взял в руки FoxPro в 199х году — напхано туда все, что было у авторов в башке. И нет, от питонов такого ощущения нет. Наверное потому что в FoxPro язык самой системы был еще тот квазимодо, по сравнению с известным мне на тот момент строгим и красивым паскалем или каким-нибудь турбо-бейсиком (а щас c питоном, что ж, времена щас более тяжелые).

Прямо посмотрим как оно выйдет (хочу на shiny написать чуток визуализации данных из kdb для внутренних нужд)

SannySanoff

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

en.arguman.org

SannySanoff

Чувачок статейку написал вводную про (небольшой аспект — замечание мое) языка Q — работа со списками. Там петонским синтаксисом переводятся некоторые азы языка Q.

Он делает вывод, что (в данном конкретном аспекте — замечание мое) kdb уделывает python по всем параметрам. Неудивительно, так как массивы — это основание всего языка.

Заканчивается статья годным пинком в жирный бок питону: Q makes developers’ productivity and performance the primary goals. В общем, это правда, но она очень жестокая: именно говнокодить на Q на порядок сложнее чем на петоне, проще сразу бросить 8)

SannySanoff

Написал немножечко на плюсцах native функций для kdb+, каких-то жалких 45кб сорцов, уже насобиралось 41килобайт кода:

11 .text 0000a250 0000000000001680 0000000000001680 00001680 2**4

Правда я там злоупотребляю жеж темплейтами для специализации по разным типам 8-)

Заглянул внутрь, а там — мама мия! Как далеко мы(они) ушли от z80 и от x86!

2199: 49 8d b2 c0 00 00 00 lea 0xc0(%r10),%rsi
21a0: 41 83 c0 04 add $0x4,%r8d
21a4: 62 11 7e 48 6f 44 17 vmovdqu32 0x80(%r15,%r10,1),%zmm8
21ab: 02
21ac: 62 f3 7d 48 3b c2 01 vextracti32x8 $0x1,%zmm0,%ymm2
21b3: 62 11 7e 48 6f 64 17 vmovdqu32 0xc0(%r15,%r10,1),%zmm12
21ba: 03
21bb: 62 f3 7d 48 3b e6 01 vextracti32x8 $0x1,%zmm4,%ymm6
21c2: 62 53 7d 48 3b c2 01 vextracti32x8 $0x1,%zmm8,%ymm10
21c9: 62 f2 7d 48 25 c8 vpmovsxdq %ymm0,%zmm1
21cf: 62 53 7d 48 3b e6 01 vextracti32x8 $0x1,%zmm12,%ymm14
21d6: 62 f2 7d 48 25 da vpmovsxdq %ymm2,%zmm3
21dc: 62 f2 7d 48 25 ec vpmovsxdq %ymm4,%zmm5
21e2: 62 f2 7d 48 25 fe vpmovsxdq %ymm6,%zmm7
21e8: 62 b1 fd 48 7f 0c 52 vmovdqa64 %zmm1,(%rdx,%r10,2)
21ef: 62 52 7d 48 25 c8 vpmovsxdq %ymm8,%zmm9
21f5: 62 52 7d 48 25 da vpmovsxdq %ymm10,%zmm11
21fb: 62 b1 fd 48 7f 5c 52 vmovdqa64 %zmm3,0x40(%rdx,%r10,2)
2202: 01
2203: 62 52 7d 48 25 ec vpmovsxdq %ymm12,%zmm13
2209: 62 52 7d 48 25 fe vpmovsxdq %ymm14,%zmm15
220f: 49 81 c2 00 01 00 00 add $0x100,%r10
2216: 45 39 c3 cmp %r8d,%r11d
2219: 62 f1 fd 48 7f 2c 7a vmovdqa64 %zmm5,(%rdx,%rdi,2)
2220: 62 f1 fd 48 7f 7c 7a vmovdqa64 %zmm7,0x40(%rdx,%rdi,2)
2227: 01
2228: 62 71 fd 48 7f 0c 42 vmovdqa64 %zmm9,(%rdx,%rax,2)
222f: 62 71 fd 48 7f 5c 42 vmovdqa64 %zmm11,0x40(%rdx,%rax,2)
2236: 01
2237: 62 71 fd 48 7f 2c 72 vmovdqa64 %zmm13,(%rdx,%rsi,2)
223e: 62 71 fd 48 7f 7c 72 vmovdqa64 %zmm15,0x40(%rdx,%rsi,2)

И еще loop unrolling там есть, типа если на входе от нуля до 8, то прыгается прямо на нужное место, в котором развернут частный случай, а иначе оно кусками по 8 элементов фигачит. Это так потому что AVX512.

Современная сишечка меня пугает и завораживает одновременно.

SannySanoff

У меня IDEA с двумя проектами (один там даже с петоном) стартует 1м30сек пока цпу не утихнет, и это я к ней не прикасаюсь покуда не утихнет. Когда начинаю прикасаться, понятно, снова бурлит покуда не утихнет, потом уже потихоньку.

Время ли обновлять ноут? А сколько грузяццо ваши проекты?

(основной проект у меня нонче в Jupyter на удаленном компе, и мне вообще идея почти по сараю).