← All posts tagged programming

SannySanoff

beta.juick.com. Всегда использую свободное место справа и слева от контента чтобы уехать туда мышой и скроллить, чтобы не закрывать мышой контент случайно. Или ткнуть туда мышой чтобы скроллить стрелками (особенности работы с клавой некоторых бровзеров — требуют клика).

Not anymore.

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

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

SannySanoff

Гребаные активизмусы уже тянут руки к моей тихой пристани, gitlab, который просто работает.

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

NB активизмус (негативн.) = личность, производящая activism разнообразной природы.

via reddit.com

SannySanoff

Самая привередливая из всех dependencies для текущего проекта — это плюсовая либа GRPC, с ней постоянно что-то не так, она резко выделяется из остального зоопарка. Из гита скрипт ее сборки идет с "treat warnings как errors", и это означает, что изначально есть настрой на победу — она наверняка не будет работать с твоим компилятором или дистром. Приходится патчить отключать эту опцию, варнинги потом норм, совершенно безобидные, все собирается, работает.

Из последнего: текущий релиз (1.23.0) не собирается на убунте 19.10, потому что переопределяет функцию из системных инклудов, в ранних убунтах, арчах итд этого не было.

Поэтому фиксировать в билд скриптах версию в GRPC и подобных СТРАННО написанных пакетов — бессмысленно, потому что через год все равно не соберется.

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

SannySanoff

В CLion мейк и gdb отладчик делают программу компиляться-запускаться 23 секунд до выполнения кода (1 c++ файл поменялся). Хочется открыть reddit и читать туда, покуда оно чухается.

в Qt Creator ninja и gdb отладчик делают это за 11 секунд. Можно только почесать бок и поковыряться в носу, и снова работа.

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

SannySanoff

Я вот думал раньше, что Java — она toolable, потому что у ей type-aware автокомплит можно легко сделать, ну типа

string.| // <- autocomplete here

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

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

data Point = Point Int Int deriving Show

let distance (Point x y ) (Point x1 y1) = sqrt $ fromIntegral $ abs(x-x1)+abs(y-y1)

let move (Point x y ) dx dy = Point (x+dx) (y + dy)

let somePoint = Point 10 20

Нажимаешь автокомплит, а оно тебе комплитит не после, а до:

move (Point 3 3) 4 5 | <-- this is cursor

autocomplete:

distance _ $ move (Point 3 3) 4 5 причем выражение твое покоцано, но ясно что оно.

show $ move (Point 3 3) 4 5

— ...... и посортировано значит с умом, по статистике, и позволяет стало быть

нажимаешь distance, и тебе тут же:

distance | $ move (Point 3 3) 4 5 и $ добавлен, и курсор поставлен.

нажимаешь потом еще раз автокомплит, а оно тебе:

somePoint

(Point )

Сложно форматировать псто, но чото легче стало, ибо будущее отчотливо (мне). Вон некий известный хаскельный крендель устроился в jetbrains, не иначе как они задумали что-то.

SannySanoff

Внезапно сообщаю, что грустная тема из псто #2944954 (как писать на плюсах под вендой если ты основательно сидишь на jetbrains IDE) имеет продолжение.

Clion + MS Compiler — нету отладчика
Во-первых в последней бете отладчик завезли, отлаживается через lldb, да вроде основные функции работают, всякие ушлые условные брекпойнты итп еще не допилили.

Во-вторых, нашел параллельный билд для CL (ms c++ compiler) (раньше не было), называется он jom, и притворяется nmake, и написан отчего-то на qt core, да пусть хоть на питоне.

Короче, проделал бенчмарки как конпелится мой проект, активный кусок который я пилю (36 compilation units, сильно не без templates), thirdparty и холодные куски не перекомпиляются, debug build:

28 sec = msvc 2019, jom instead of cmake, win
19.3 sec = cl /mp, visual studio 2019 (msbuild?), win
11.5 sec = zapcc(implements clang-7), linux
18.904 = clang8, linux
23.785 = gcc9, linux

такие дела. Говорят, clang умеет притворяться CL, осталось собрать zapcc под вендой и проверить его в этой роли.

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

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

SannySanoff

А вот готовлюсь к ICFPC. А вот в этом году будем на плюсах. Готовлю заготовку CMake проекта, чтобы он запускался на трех платформах, тк участники будут разные. Qt у меня внутре, в Qt есть QOpenGLWidget, в нем рисую через QPainter (2d graphics). Взял с 2018 года модельку, налабал рендерер (на 2d canvas, сам делаю перспективные проекцыи и сортирую по z-index ерунда короче)

MSVC/Windows: Отрисовка 140мсек, математика 4 сек
Clang/Linux: Отрисовка 115мсек, математика 2.5 сек.

Оба — релиз билды на одном железе, время — на 1 frame в анимации. Знаю, шо отрисовка медленно, не в этом суть.

Главное беспокоящее, что что-то чахнет колосс.

SannySanoff

Постепенно я начинаю догонять, отчего люди не уважают клавишу Ctrl и ремапят ее куда попало. Я в последнее время слишком часто нажимаю, например, Ctrl+F2 (Stop debugged process), и мой большой палец (Ctrl) начинает прямо таки болеть от слишком большой подвернутости.

Гейбук с его шорткатами меня не подвиг, я его прогнул под себя, а один этот момент — и я уже задумываюсь поменять шорткат на Alt+F2. А на подходе Ctrl+C.

Так приходит старость.

SannySanoff

Тот случай, когда приходит новый чувак и спрашивает "а фигли тут сервис [производительный — примечание мое] начали писать на питоне?" И ты такой отвечаешь: "да, я тоже так считаю, шо можо было бы что-то и получше взять", и радуешься что нормальный чел. А он такой: "вот я, например, писал бы на ноде.жс".

Тьху!

SannySanoff

У меня такое случается, что я меняю шрифты в IDE.

Находка сезона iosevka ss07 просто глаз радуется, лигатуры там опять-таки норм (стрелочки клеви).

Нули — нулями, а не бублик с дыркой и не О, всякие амперсанды, буквы g и a, приятно смотреть. github.com

SannySanoff

По поводу #2932127 2 месяца спустя:

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

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

минус удобные немутабельные структуры
написал себе протобуф кодеген в Ц++ в функциональные структуры для немутабельного использоварния с шаред пойнтерами.

минус лаконичность
Дефайны инлайны темплейты auto c++17 — уже норм.

Человек привыкает ко всему.

(Зато теперь у меня запуск в отладке qt тестового клиента занимает 12 секунд — в отладчик грузятся 100 шлиб, в 1 поток, можно отдохнуть перед тем как прога начнет работать)

SannySanoff

закончилось тем, что я переписал под себя cf (composable futures), точнее, я их выкинул и написал свое future/promise/when_all и все такое. Почему? Потому что те что были, как мне показалось, глючили в одном случае. Пока переписывал, оказалось мой баг был в моем коде, но дописал все равно.

Работает в несколько раз быстрее: копирует меньше, аллокаций делает меньше, и, стало быть, занимает меньшую долю общей нагрузки на мультицпу, кучу итп, я доволен. То шо было раньше, для моих нужд overengineered.