Если вдруг нужно, чтобы взлетел VirtualKD с гостевой Windows 10, то после инсталляции оного внутри машины, нужно ещё обязательно выполнить bcdedit /dbgsettings serial, иначе кина не будет. Сэкономит часик времени на рисчёрч “а чо оно не работает”.
Google Crashpad
Для того, чтобы собрать crashpad под Windows с DLL runtime (/MD /MDd), нужно создать в своём домашнем каталоге (c:/users/konst например) подкаталог .gyp и в него положить файл include.gypi со следующим содержимым:
{ 'target_defaults': { 'configurations': { 'Release': { 'target_conditions': [ ['OS=="win"', { 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': '2', }, }, }], ], }, 'Debug': { 'target_conditions': [ ['OS=="win"', { 'msvs_settings': { 'VCCLCompilerTool': { 'RuntimeLibrary': '3', }, }, }], ], }, }, }, }
И пусть это сэкономит те полдня, которые пришлось потратить, чтобы выяснить этот факт.
espresso test failure
Если внезапно вы решили подключить espresso и начать писать тесты, а потом после очередных манипуляций вдруг тесты приложения перестали запускаться и начали бросать исключение NoClassDefFoundError YourActivity, то вполне вероятно, что может спасти совершенно нелогичное действие:
Добавить исключения суппорт либы в gradle для компиляции espresso (в моём случае espresso-contrib)
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2') { exclude group: 'com.android.support' exclude module: 'support-v4' }
Build Succeeded
Наверняка все программисты рано или поздно сталкиваются с тем, что запускают билд, который должен идти пару минут, после чего открывают браузер и читают “форумы/новости/что-то ещё” пока идёт сборка. Через 15 минут вспоминают, что был запущен билд, но 13 минут уже потеряно.
В общем надоело терять из-за таких вещей время и вместо того, чтобы запретить доступ к интернету я покопал гугль и нашёл прикольную программку – Growl for Windows – она умеет делать нотификации по самым разным событиям
Put simply, Growl lets you know when things happen. Files finished downloading, friends came online, new email has arrived – Growl can let you know when any event occurs with a subtle notification. The rest of the time, Growl stays out of your way.
Самое ценное – это то, что к этой программке есть visual studio плагин, который умеет сообщать об окончании сборки проекта/солюшена.
Выглядит это как всплывающее сообщение в системном трее, которое говорит, что билд успешно собрался или зафейлился.
Поставил себе и всем рекомендую – оно вроде и про свн умеет сообщать (правда в моём случае это не очень важно, т.к. у нас почтовая рассылка налажена).
WPF
Появилась наконец-то возможность потрогать шаловливыми ручками WPF, начал вчера делать маленький hello world петпрожект и изучать новую для меня штуку от майкрософта. Пока нравится, получается достаточно быстро сделать лузер-интерфейс и закодировать нужный функционал. Посмотрим, как дальше пойдёт, вдруг сбудется мечта идиота и получится на его базе сделать генерацию интерфейса для игры 🙂
Батчи
Вот есть такая монструозная вещь, как batch files в виндовсе, намного неудобнее любого sh или perl, но! Зато процессор оных стоит на каждой машине с виндовсом, а значит у каждого художника или геймдизайнера (или бухгалтера, клерка и кто там ещё пользуется компьютером в других отраслях).
Так вот, о чём это я – о том, что на самом деле со времён доса и 98 винды многое изменилось – нынешний cmd стал намного полезней того кошмара, что был много лет назад.
Мне даже удалось написать скрипт для сборки всех 30 наших уровней и практически обойтись без GOTO.
OpenMP
Попробовал тут, намедни, OpenMP (Open Multi-Processing – это набор директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с разделяемой памятью на языках C, C++ и Fortran).
И, можно сказать, прозрел. Добавил в существующие исходники всего две строчки кода и время экспорта тестового фрагмента уровня уменьшилось почти в два раза!
Теперь вот, читаю спеки и повышаю многопоточное дао 🙂
Всё новое – хорошо забытое старое
Возникла у меня накануне насущная необходимость обработки игровой логики (триггеры), но при этом скриптинг у нас ещё совсем не готов, а результат нужен вот-вот.
И вот, за 3 неполных дня (из них один почти полностью ушёл на экспорт из дизайнеро-удобного вида в игровой бинарь) у меня на руках получилась система, аналогичная по функционалу. У нас есть триггер, к которому привязывается любое количество условий (переместиться в, прошло время, убит, появился итд итп) и любое количество ассоциированных действий (убить, родить, выиграть, проиграть, отформатировать винт итд итп).
При этом она очень даже шустро работает и избавляет нас от необходимости думать о скриптах (в ближайшее время, так точно).
Распирает меня от радости, чёрт побери!