Dervish

добавить *пустой* макрос в проект

вот например такой классический код, который я не хочу/не могу менять:


#if defined WIN32
#ifdef SUPER_API_EXPORTS
#define SUPER_API __declspec(dllexport)
#else
#define SUPER_API __declspec(dllimport)
#endif
#elif defined __linux
#define SUPER_API __attribute__ ((visibility ("default")))
#endif

class SUPER_API AwesomeApi {
...
}


если я хочу использовать код AwesomeApi напрямую, не собирая библиотеку, а просто добавив файлы в свой проект, мне будет мешать токен «SUPER_API», а просто так добавить в дефайны SUPER_API не прокатит!

[10.09.2019 15:52:44] я всегда думал что пустой дефайн ни во что не разворачивается в коде и таким образом никак не должен мешать. но это неверно.
[10.09.2019 15:52:50] By default, the value associated with a symbol is 1. For example, /Dname is equivalent to /Dname=1.
https://docs.microsoft.com/en-us/cpp/build/reference/d-preprocessor-definitions?redirectedfrom=MSDN&view=vs-2019

таким образом, нужно специально определить макрос SUPER_API как пробел:
для Microsoft Visual Studio (свойства проекта .vcxproj, C++ -> Препроцессор -> свойство Определения препроцессора):
SUPER_API= ; (пробел, затем точка с запятой!)
для QMake (синтаксис .pro-файла):
DEFINES += SUPER_API=" "
для MSVS, голая команданая строка компилятора cl.exe:
-DSUPER_API= (NB: обязательно дополнительный пробел после знака равенства!)
Dervish

Black Diamond, Dawn Patrol Shell



BD известны своим качественным скалолазным снаряжением, но так же они выпускают и отличную одежду. Я их очень люблю за красоту, функциональность и хорошо подходящую для меня посадку со стабильным размерным рядом. То есть "интересные цвета, не проклятый минимализм, и мне всегда подходит L".
Я очень давно пытаюсь найти себе нормальный осенний софтшелл. Dawn Patrol - не совсем то, что мне нужно (у него нет флисовой подкладки), но и отказаться я не смог. В ранних версиях заявлялся Schoeller, теперь же это безымянный stretch woven. Ветер держит отлично. Дышит очень хорошо (лучше Marmot M2, на уровне PowerShield). DWR очень хороший (но я пока не стирал). Ткань относительно тонкая, 235 г/м2, хотя и ощутимо толще эквилибриума; имеет микро-рельеф и микрофлисовую изнанку. Наружная поверхность имеет хорошую, плотную вязку, но не идеально ровную поверхность - неровности создают иллюзию рыхлой, матовой поверхности. Температурный диапазон на мой вкус - скорее тёплый (+20, до +15 со слоями)

Брал на трекине по "типа распродаже", а отправляли они мне его два месяца, Карл! неплохо так баблишко провернули!

Из неприятных моментов: традиционные паты на липучке цепляются буквально за всё, в том числе и за саму куртку. Думаю, что с этим говном делать, потому что затяжки явно вопрос времени.

Four-way stretch woven with brushed back and DWR finish (235 gsm, 63% nylon, 26% polyester, 11% elastane)
Dervish

приложухи для заметок

до сих пор мучаюсь.

× Evernote. При всём его удобстве, жирный крест из-за несерьёзного отношения к твоим заметкам как к кешу. Открыть посреди нигде нужный тебе «как добраться» и увидеть «упс, сервер недоступен» неприемлемо

2-/4 Google Keep. Для тех, кто относится к заметкам как к цветным post-it бумажкам на холодильник, всё честно. Для длинных и многочисленных заметок непригодно.

3+/4 Joplin. Прямой импорт из Evernote (.enex). Похож по дизайну и функционалу (есть вложенные блокноты и теги). Синхронизация на твой выбор (можно даже через WebDAV!). Десктопное приложение на Electron. Мобильное хз на чём (React Native?), но не очень удобное: нет отмены, зато есть автосохранение любых твоих ошибок копипасты... Пожалуй, самый интересный для меня кандидат

3-/4 Neutrinote. Малюсенький мобильный апп с гигантским скрытым функционалом для power user-ов. Нет блокнотов. Не «вложенных», а вообще никаких. Строку метаданных можно использовать в роли тегов, а теги в роли фильтра вместо блокнотов, но это сделано неудобно. Нет десктопного приложения, но на десктопе ты можешь класть текстовые файлы прямо в sync target приложения, например, кладёшь текстовый файл в dropbox - после синхронизации он прозрачно появится в аппе. Это очень круто что приложение позволяет тебе выставить своё хранилище заметок наружу в виде коллекции файлов для синхронизации и модификации, но это делает настройку синхронизации лишним гемором при смене телефона (сам апп не умеет). Я потратил много сил и времени чтобы разобраться в этом, всё не так просто и не из коробки, и жаль будет оставить это, но вероятно придётся.

2+/4 crypt.ee Функционально полная замена эверноту, очень модный дезигн, прям как медиум но только ещё плавнее, ещё больше круглых углов, пустого места, душевных фоточек, вот это всё. Только progressive app, только сервера приложухи, только ультрахардкор юнити мытищи. Разумеется, медленно, ведь ВсЁ ШиФруеТсЯ ПряМо в БРауЗере (хотя это первое нормальное «progressive app» которое я вижу, не считая телеги). Даже вход по ключу шифрования, а не «паролю». Рекомендуется для мамкиных анархистов.

2+/4 Standard notes. Как Google Keep, только чуть менее прибитый. Есть теги, они же выполняют роль блокнотов. Достаточно удобно.

3/4 обнаружил Notable. это брат-близнец Joplin/Evernote, но с локальным файловым бекэндом вместо базы данных!
К сожалению, метаданные хранятся в самих же файлах, что мягко говоря не очень удобно.
Dervish

карма и экология в Rain World - наблюдения (спойлер)

сюжет имеет гораздо больше смысла, если считать что между открывающей сценой и началой игры прошло много времени. тогда понятен acceptance dream и понятно, почему survivor будет искать для себя именно окончательное решение сансары, а вовсе не «свою семью». идея «подтверждена автором»,

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

как часть этой интерператции, неожиданно обретает очень сильный смысл странная идея «NPC дают котику карму», если воспримнимать «повышение уровня кармы» как освобождение от собственных мирских привязанностей, страданий, желаний. ведь он давно уже смирился с тем, что никогда не увидит не только свою семью, но и, вероятно, хотя бы просто другого котика.
Сюжетные встречи не «дают ему карму», но каждое взаимодействие добив.. освобождает его.

про кармические блок-посты (и особенно Охрану на выходе)
@Blue Stars, Endless Cosmos #8433
I think the story has penultimate mystery in void, void sea, ascension, and void worms. this is RW story's intellectual black hole, a spiritual, evocative part (opposed to rationalistic "ecosystem" part)
Guardians strike me as quite weakly connected to ANYTHING else, not adding to the mystery aspect, and distracting from the rationalistic aspect, while also being a very specific gameplay gate

Гипотеза: Цветок кармы описывается как галлюциноген. Цикла, в котором котик съел цветок и затем умер, в буквальном смысле не было. Он приснился.

Гипотеза: Учитывая, что у них любили ГМО, то стервятники - это изначальный pest control. Причём более ранние (king vultures в сюжете Охотника) ещё и вооружены.

P.S. Karma gates suck.
Dervish

exceptions vs error codes

simultaneously throwing AND returning error codes is a really shitty policy.
if a function routinely throws operational exceptions (which are expected and handled immediately on the upper level), it should never return error codes to indicate success/failure. Completion of normal execution path is assumed as successful.

if it returns error codes, it should never throw for operational flow control.

in general, exceptions + result return is preferable but ONLY IN THE PRESENCE OF ERROR HANDLING POLICY
most universal and applicable for service code is "catch only if absolutely necessary, the rest is caught and logged in main before abort"
Dervish

Unsong by Alexander Scott

https://www.goodreads.com/book/show/28589297-unsong

увидел эту книжку в треде в твиттере который был в стиле «вот щаз бы средневековую Матрицу с Алхимиками, пытающимися выбраться из божественного сна, преследуемыми разъярёнными ангелами». разумеется, сам тред я уже никогда не найду.

what I expected: Kabbalah-punk
what I got: Jew-wank

увлекательная вычислительная теодицея для самых маленьких.
то есть мы пытаемся оправдать не просто существование Бога, а его добродетельность (почему Он допускает зло) - в формате вошебного искромётного эпического приключения. С искромётностью проблемы (если не считать плохих каламбуров), а вот получившаяся теодицея, к слову, даже норм.

вроде и цитаты можно постить бесконечно (чего стоит Уриил, пытающийся починить континентальный дрейф и восстановить континенты из бекапа потому что кто-то ОПЯТЬ СВАРИЛ КОЗЛЁНКА В МОЛОКЕ, СКОЛЬКО РАЗ ГОВОРИТЬ), местами очень забавно и фантасмагорично, но в конечном итоге понимаешь, что вся эта фантастическая история относится к себе предельно серьёзно, и становится как-то не смешно. особенно буквальный ад с буквальными демонами и буквальными мучениями грешников сильно сбивает очарование. И ведь по сути на теодицею никак не работает, а служит исключительно формальным антагонистом.

очень странное аниме.
Dervish

Qt + MSBuild не видит инсталл

когда студия отказывается находить файлы Qt, это означает что плагин Qt VS Tools не создал правильно файл .vcxproj.user где он должен выставить переменную QTDIR в соответствии с настройками в Qt VS Tools → Qt Options / Qt Project Settings.

почему он этого не делает ,я не знаю
помогает сконвертировать проект в custom build steps а затем обратно, но если такой возможности нет, то спасёт добавление руками вот такую строчку в .vcxproj.user в каждую конфигурацию

<QTDIR>C:\Qt\Qt5.8.0\5.8\msvc2015</QTDIR>


при этом на билд сервере это не нужно, на дженкинсе эту роль выполняет переменная среды окружения
environment { 
 QTDIR = "C:\\Qt\\Qt5.8.0\\5.8\\msvc2015"
}
plot

Ruiner - игра про ВСЁ КРАСНОЕ

Очень атмосферный классический киберпанк. безумно крутой world-building и стиль. очень зло и кинематографично.
К сожалению сам игровой процесс состоит исключительно из боёвки. уровни очень пустые и примитивные.


история: 1/4. плохо. история на одну серию GitS SAC, и то мутновато и с натяжкой.
механика: 3/4. хорошо но мало. ебошь, стреляй, стрейфься, get up puppy. жирный + за вариант прокачки для медленных людей.
UX: 3/4. хорошо. драйвово, стильно.
самое лучшее: ебошить людей железной трубой всмятку