четверг, 31 января 2019 г.

Visual Studio 2017 - забавный глюк

наткнулся на такой баг/особенность Visual Studio 2017:
в Pre-build event command line ввел текст вида:

"$(ProjectDir)build\TsJsRemover\TsJsRemover.exe" "$(ProjectDir)"
т.е., должна запускаться утилита TsJsRemover, в которую параметром должен приходить путь к папке проекта.

так вот, путь приходил с ведущей кавычкой. например:
c:\project"
выяснилось, что это - известный баг, и обходное решение - в параметре перед закрывающей кавычкой поставить пробел:
"$(ProjectDir)build\TsJsRemover\TsJsRemover.exe" "$(ProjectDir) "
(ссылку на решение, к сожалению, потерял )

P.S. утилита "TsJsRemover" была написана чтобы нейтрализовать последствия другого достаточно опасного каприза Студии, касающегося TypeScript. 

среда, 23 января 2019 г.

MEmu - эмулятор Android

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

MEmu

прям, андроид на ПК, кайф, рекомендую!

столкнулся с проблемой - изображение лагало (перевернутое, мерцает) - в настройках видео конкретной виртуальной машины изменил OpenGL на DirectX - все заработало

у меня Windows 8.1 64, Core i7, 8Gb оперативы

а, и еще, в процессе установки другого жмулятора я в биосе включил Hardware Virtualization

https://ru.bignox.com/nox-app-player/archives/149

https://forums.lenovo.com/t5/Lenovo-P-Y-and-Z-series/How-to-Enable-Hardware-virtualization-on-IdeaPad-Y510p/ta-p/1394215

не знаю, повлияло ли это на работоспособность MEmu

вторник, 8 января 2019 г.

Ситуация с кодировкой в проектах Visual Studio

UTF8 - кодировка, в которой (грубо говоря) латинские буквы и символы кодируются одним байтом, а символы других алфавитов - несколькими (русского и казахского - двумя)
BOM - Byte Ordering Mark - грубо говоря, 3 байта в начале текстового файла, которые сообщают о том, что текст - в кодировке UTF-8
  
в идеале было бы хорошо иметь такую ситуацию: все файлы трактуются как UTF-8 без BOM.
Потому что от BOM бывают проблемы. в частности, при формировании HTML через файлы razor в итоговом HTML в середине (не в начале) файла может быть BOM. причина - мы инклудим (например, RenderPartial) cshtml-файл, а этот файл начинается с BOM-метки.

но такой настройки я в Студии не нашел. так что, остается прийти к соглашению о том, что все файлы проекта у нас будут в формате UTF-8 с BOM. кстати, обработчик TypeScript тупит иногда, если у TS-файла нет BOM.

если файл создается в Студии - он будет создан как UTF-8 с BOM.
проблема может быть при добавлении существующего файла к проекту:
если существующий файл без BOM и без кириллицы добавить в проект  - он трактуется как ANSI, и если в дальнейшем будет добавлена кириллица - она будет сохранена в кодировке 1251. И у нас появляются проблемы. например, если речь идет о JS/TS-файле - т.к. сайты у нас на UTF-8 - при работе со строкой в кодировке 1251 пользователь увидит квадратики или каракули.
Вывод: разработчик должен следить, чтобы добавляемые в проект файлы были в кодировке UTF-8 с BOM.
посмотреть кодировку можно, например, в Notepad++
 
P.S. экспериментальным путем я установил, что при формировании бандлов BOM если и вставляется, то только в самое начало (как положено)

понедельник, 7 января 2019 г.

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

как программист осторожный, я следую правилу: прежде, чем что-то закоммитить, я просматриваю все сделанные изменения. обычно я делаю это средствами Tortoice Git. но однажды столкнулся с ситуацией, когда это оказалось невозможно. Вот моя история:

я столкнулся с ситуацией:  изменил пространство имен для повсеместно используемого класса
в результате , помимо пары прочих изменений, в около 150 файлах строка  "namespace kaspihelp.Interfaces.DependencyInjection" была заменена на "using kaspi.CommonUtilities.DependencyInjection;"
вручную просмотреть изменения в каждом файле перед коммитом с помощью tortoice git - нереально, да и недостойное программиста занятие.
нашел такой выход:
1)  выполняем в консоли команду
git diff --text --minimal >c:\tmp\_gitoutput.txt

в аутпуте-файле - информация обо всех изменениях. собственно, строки с изменениями начинаются с единичных символов "+" или "-"

грохаем такие строки, много раз повторяющиеся (реплейсим чем-нибудь)
смотрим через поиск по регуляркам в notepad++ "^\-[^-]" и "^\+[^+]" оставшиеся изменения - таким образом проходимся по всем прочим изменениям

UPD: написал код, формирующий список файлов, заслуживающих внимания. не судите строго. мож кому пригодится