Linda-chan

Решила ещё раз попробовать Private Desktops в Windows 7 и узнать, чего она там не работает. Ну, то что Win+1 и прочие цифры забиндены Проводником на прибитые на таскбар программы, при чём скопом со всеми модификаторами (Win+Ctrl+1, Win+Alt+1 etc), я выяснила в прошлый раз. Поставила более конвенционные Win+Q для первого рабочего стола (дефолтного), Win+W для второго, перезапустила программу. Жму Win+W – переключилось. Жму Win+Q – не реагирует. Не работает переключение? Запустила екзешник программы с параметром «/Switch 0» – переключилось. Вернулась на второй рабочий стол, снова жму Win+Q. Там запущена консоль, и я вдруг заметила, что эта самая Q в ней набирается. Тоесть, хоткей не работает в принципе. Короче, если в XP глобальные хоткеи работали на всех рабочих столах в пределах текущей оконной станции (кроме рабочего стола блокировки системы), то, похоже, дальше они стали заизолированы на конкретных рабочих столах. Тоесть если на рабочем столе X программа создала окно и следом зарегистрировала хоткей с его манипулятором, то сообщения WM_HOTKEY будут прилетать только если клавиши были нажаты, пока рабочий стол X был активен. А если система переключится на рабочий стол Y, то сообщения прилетать не будут. Пичалька, придётся думать, как программу обновить. Есть вариант с хуками, но я хуки зависят от разрядности процесса, в который библиотека будет внедряться, а я пока в этом не разбиралась =_=

segfault

Вот почему большинство программистов в качестве аргументации приводят особенности синтаксиса языка полностью игнорируя семантику. Вида "у жх нормальный синтаксис, по этому он лучше хаскеля" (вместо жс подставить лисп, перл, петухон, пхп, что угодно). Создается впечатление, что байки про stackoverflow программистов не совсем байки, и большинство и правда невдупляют что вообще пишут и как оно работает. Код у них красиво выглядит блять.

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 на удаленном компе, и мне вообще идея почти по сараю).

SannySanoff

Топик не совсем про радфем, но про х*емразей, т.е. меня.

Вот на одном тек. проекте индус, с которым мне контачить надо в Слаке. Ну туповатый в той области, где нам требуется пересекаться, но общается вежливо, я пояснял-пояснял, тоже вежливо, потом уже начал думать, глумится он что ли надо мной, такие пробелы в специальности. Бывает и подколю уже, есть грешок, но доставать начало уже, шо я за него делаю его работу ( а индусы бывают такие, им палец в рот не клади!)

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

И что же сделал х*емразь (т.е. я)?

Я сделал ей скидку на ее пол. И стал помогать, и не подкалывать, давать больше инфы, чтобы заранее пробелы заполнять, и все стало на свои места.

По законам радфемов я дискриминирую эту женщину, потому что она женщина, я считаю ее слабой и типа держу перед нею дверь, итп, и так делать не надо, или надо?

Как оно надо?

SannySanoff

А вот в Хаскеле partial application убогий:

f x y z = x + y * z;

а хочешь частично применить только x и z — и болт: изгаляйся. f1 x z y = f x y z; q = f 10 3; q 2

В kdb+ веселуха,

f:{[x;y;z]x+y*z} — определение ф-ии
var1:f[10;;3] — частичное применение, параметры разделяются ";".
(Ну а если последние параметры надо оставить висяком, то и точки с запятыми тоже не нужны).
var1[1] — дает 13
var1[2] — дает 16

короче, пока я не узнал, все ломал голову, где же функция flip.

А вот на тебе, на лопате, не подавись!

janPona

Короче, решил я запилить проксю для телеги.
Долго извращался с dante, запихнул его в контейнер, но потом понял, что это говно, и мне захотелось авторизации юзеров по таблице в mariadb. Ну вот такой вот я извращенец.

Именно socks прокси, не mtproto.

В итоге пишу щас его руками на Go.

SannySanoff

Я ж это, таки ушел с Хрома нафиг. После стольких лет. Для совместимости какой-нибудь он конечно остался, но не запущен основное время. Он овальный, он тормозит, мои глаза с табами, и еще там прыгает строка ввода адреса жеж.

И тут занесло меня на Ars-Technica, а там значит статья как раз об этом. Это оказывается хрому было 10 лет ( arstechnica.com ). Чуваки постят аналогичный дизайн фирефокса столько-то лет назад и говорят, что это был грандиозный факап, что это было золотое время для форков, которые были квадратные и без всей этой розовой фигни, и фирефокс вернул взад, а гугл вот поднял гиблое знамя. Настолько обильно поливают хром гамном в камментах, что мне становится ясно, что с хромом это все неспроста случилось!

Погуглил я, значит, google chrome blog, а там ( blog.google ) вся такая радостная статья ни о чем: мы вам сделали хорошо таким образом и эдаким.

И приписочка: Ellie Powers — Chrome Product Management Desktop Lead.

Тут-то картинка у меня и сложилась. Баба. Наверняка феминистка, и туда по квоте попала.

Как в воду глядел. Посмотрите в эти глаза ( twitter.com ). Пишет сама о себе "жруха", на фотке фигурирует с мороженым. Боди позитив. И еще пишет, что раньше работала с Google Play / Android. Вот оно почему тормозное такое.

Читаем твитер ленту: Проводы самой главной начальницы пепсиколы (широкая темная женщина в годах). Следом: День Ады Lovelace, первой женщины программистки. Следующий пост: equity, diversity, inclusion. Далее: Women in Product breakthrough conference. После этого — ретвит другой хромовской начальницы ( twitter.com ), которая прямо о себе тоже пишет: "люблю пожрать" (клуб у них?), и в ленте которой та же тема собственно: нобелевские лауреаты (большой негр и женщина с искаженными чертами) которые выбороли первое место за их kampf (успешно хоть?) с сексуальным насилием как оружием войны. Еще пост о том, как гугловский инженер (баба?) борется с собственной дочерью, которая ей заявила, что инженеры — это мальчики, пропагандой гендерного равенства. Довольно, идем назад к Элли. У Элли следом Гугл Прайд (радужный логотип), ути пуси. Далее ряд обычных постов. Наверное ремиссия была.

Типичная операция внедрения: включите нас в свою жизнь (inclusion), мы рептилоидши (diversity). Мы любим ваши мороженки. Мы должны научить наших девок программировать, потому что когда вы все умрете в одну ночь, мы должны уметь как-то поддержать инфраструктуру, даром что ли века прогресса, да и просто, вдруг рванет что-то. Давайте мы вами порулим. Мы любим кругленькое, а вы? Нет? Ну потерпите, постепенно привыкните, вам с этим жить. Пока живете.

Они живут! ( смотреть imdb.com )

SannySanoff

Вот у меня есть функция, параметризуемая каким-то n, в ней есть цикл по n, и массив внутре есть.
я хочу наделать шаблонов(templates), для n от единицы до пяти, чтобы во время template instantiation это n становилось compile-time константой, а для остальных n пусть будет generic функция, в которой n будет переменной. А функцию я буду вызывать из switch/case соответственно разные специализации шаблона.

С шаблонами в принципе я уже тут кой-чо накидал, но все примеры нахожу только такие, что для специализаций по конкретному числу (от 1 до 5) тут можно написать везде свою реализацию, а для неспециализированной версии (остальных N) еще одну реализацию. Для меня же главное, чтобы КОД ФУНКЦИИ РЕЮЗАЛСЯ для специализированной и неспециализированной версии, то есть в одном случае n будет параметром шаблона, в другом параметром функции.

Может кто-то решал такую задачу, или есть идеи? Понимаю, что прямых путей нет, и еще, что все можно сделать препроцессором, но все-таки неохота препроцессором.

janPona

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

Ну казалось бы, что может быть проще — возьми и отфильтруй по endTime > now.
Но это был только вход в кроличью нору.

У каждого события есть начало и конец.
У системы есть свой часовой пояс (который можно произвольно менять), отличный от часового пояса юзера.
Ну отлично, где тут проблема? Нормальные люди хранят в таких случаях отдельно часовой пояс, отдельно абстрактное время. В виде строки, не важно.

Но нет же, наши дорогие заказчики изобрели свой формат времени. Я его назвал pseudoUTC, почему псевдо — читайте дальше.
Начало события они хранят так:

startDate = toPseudoUtc(SYS_TZ, beginningOfDay(SYS_TZ, absStartTime))
То есть мы сначала вычисляем начало дня в таймзоне системы, затем (НАБЕРИТЕ ВОЗДУХА!) переводим получившийся таймштамп в такой таймштамп, который будучи сформированным в UTC, давал бы строку абстрактного начала дня. "2018-09-28 00:00:00". Но храним не строку, а именно этот абсолютно фейковый, бесполезный и сбивающий с толка таймштамп!
Но это не всё, часы с минутами же отброшены, поэтому они хранят отдельно минуты с начала дня.
startMinutes = бла бла бла, вычисляем разницу в минутах

C endDate всё ещё интереснее. Они переводят тоже в такой тупорылый таймштамп, но только считают конец дня! То есть, условно таймштамп, который при рендеринге в строку в часовом поясе UTC дал бы "2018-09-28 23:59:59". Но (НАБЕРИТЕ ВОЗДУХА ЕЩЁ БОЛЬШЕ!!!) endMinutes они вычисляют... с НАЧАЛА ДНЯ!

Можно выдыхать.

Это пиздец, блядь.

Ну короче, проебался я полдня с их таймзонами и перевёл на клиенте обе псевдодаты в абсолютные таймштампы, которые можно тупо сравнивать с now(). Но еботни столько, что пиздец просто, нигде ж ни документации, нихуя.

А если бы хранили время в виде строки (или хотя бы хуй уже с ним, не хранили, но просто отдавали бы его клиенту в виде строки, всё равно ж оно абстрактное), то не было бы таких проблем.

SannySanoff

Зашел на github, а мне говорят: пароль твой числится среди сломанных, которые гуляют по сети, ты б поменял его.

На гитхабе у меня древний простой пароль, сто лет ему в обед.

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

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

И тут как-то стало мне не очень уютно. Гитлаб не ломали недавно? Поменял там пароль тоже. Шоделоц?

SannySanoff

Не векторизует гцц мои лупы, штук 5 разных, все не векторизует, пишет страшные логи.
Скачал интеловский конпелятор, ICC, тот тоже не векторизует, но логи пишет уже понятнее чуток, но все равно не могу понять почему нет.

for(int i=0; i *dda=hm[*hs]*lo+((*ls)-slo);
}

вероятно просто не мой ворклоад? (avx512 enabled если шо). Ну и вероятно я просто не понимаю, ну и фиг с ним.

justonemore

Фабула такая: в 2038 году люди делают человекоподобных роботов (андроидов) с очень неплохим ИИ и пользуются ими ну как рабами примерно (или домашней утварью): прислуга, игрушки, секс, солдаты, грязная работа, программисты на JS.tonsky.livejournal.com

SannySanoff

Люблю когда в современном софте проскакивают фразочки типа "email was sent to an address stored on file".

(пояснение: on file хранили, например, во время оно в коболе данные, на файловой системе: субд там на файлах, оттуда термин)

max630

что, тонский написал что всё тормозит и глючит. Это тот же самый тонский который раньше топил за динамическую типизацию и джаваскрипт всем и пусть никто не уйдёт обиженный, или какой-то другой?

janPona

В общем, прошёл собеседование на должность техлида в одну безумно крутую компанию.

Но когда понял, что там придётся ВПАХИВАТЬ, РАБОТАТЬ, а не просиживать штаны, прокрастинировать и заниматься левыми проектами на положении капризного гения-любимчика, то понял кое-что.

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

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