← All posts tagged programming

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.

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

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 будет параметром шаблона, в другом параметром функции.

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

SannySanoff

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

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

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

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

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

SannySanoff

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

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

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

SannySanoff

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

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

SannySanoff

Вот смотрите лоботрясы и маловеры, что я писал 3 года назад:

#2809899

Так это я, как оказалось, про Flutter писал: тогда его еще не было. И натянули они его не на android.ui а прямо на opengl, чтобы байткода не было даже и близко, типа как codenameone сделали. Остальное совпало вообще совсем.