spiiin: (Default)
Есть ли такие типы программ, за написание которых разработчик, по вашему мнению, должен отправиться в ад, ну или хотя бы в чистилище? Не конкретные программы, которые вам не нравятся, а именно области, которых "хорошему" разработчику лучше даже не касаться, чтобы не марать руки и карму.

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

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

Наоборот, к областям, однозначно хорошим, отнёс бы разработку игр (хотя, конечно, за качество и модели монетизации иногда хочется отрывать руки), и всё, связанное с наукой.
Tags:
spiiin: (Default)
...объявляется финансово провалившимся. Официально :)

Через недельку заканчивается подписка от Apple, за год приложение "продалось" около 100 раз, бесплатная версия была скачана около 300 раз.
Сделал его полностью бесплатным. Может, когда-нибудь запилю андроид-версию.




Однако, с нефинансовой стороны, всё вполне удовлетворительно.

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

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

- Разработчик игр и так зачастую мультифункциональный комбайн (занимается вообще всем), непонятно, как при этом можно ещё и вести блоги о разработке и писать в социальные сети. Не знаю, как инди-разработчики ухитряются, например, помимо разработки, снимать качественные ролики для кикстартера с рассказами о своих приключениях. Я бы на это явно выделял отдельного человека.
- Собственно, вволю наигрался с пластилином (ролик Cube for Valentine's Day).

- Более чётко представляю себе круг проектов, которыми мне было бы интересно заняться в настоящий момент. Из связанного с играми было бы интересно:

1. Поработать программистом 3d-графики (одна из немногих неосвоенных мной нормально областей в геймдеве, требует хорошего знания математики, железа видеокарт и художественного вкуса одновременно :( ).
2. Заняться плагинами для 3d-редакторов, движков или другим middleware (недавно открыл для себя Python и MEL для Maya).
3. Поучаствовать в каком-нибудь конкурсе или хакатоне по играм (тут желательно с командой и с заявкой на хороший приз).
Tags:
spiiin: (Default)
Интересная глава из книги. Собственно, как блоки являются строительным элементов в 2d-уровнях, так и 3d-блоки (выровненные по сетке) зачастую являются составным элементом 3d-уровней.

http://level-design.ru/pro-ld-book-index/03-modular-level-design/
Tags:
spiiin: (totoro)
Нашёл замечательную библиотеку Selenium по управлению браузерами, как headless (Phantom-JS/HTMLUnit), так и "настоящими" (Firefox/Chrome/IE/Safari и ещё десяток third-party драйверов для браузеров на любой вкус) локально или удалённо.

Позволяет "нажимать" на элементы, ожидать результатов асинхронных запросов по условию, выполнять JavaScript в контексте DOM-страницы и вообще почти любые фишки, которые умеет браузер.

Когда-то юзал для выполнения простых JavaScript на странице Greasemonkey, а для парсинга сайтов mechanize (уже мертва, приходится дописывать нужные фичи самому), теперь с этим проектом можно пойти намного дальше и наавтоматизировать всякого на Python или C# (а также Ruby, Java или JavaScript).
Tags:
spiiin: (totoro)
В Python else можно использовать не только как альтернативную ветку для if, но как альтернативную ветку для циклов for/while (выполнится в случае, если цикл не прерывался с помощью break), и как альтернативную ветку для try/except (выполнится в случае, когда исключений не было).

Пример из документации
Tags:
spiiin: (2D)
Уже не очень новые, но очень смешные (только для программистов) тексты Джеймса Микенса

Переводы на русский язык парочки, больше не нашёл:
Стражи ночи
Это наш мир
spiiin: (2D)
Ни разу не оформлял документацию для своих программ (не считая "документации" к учебным программам в универе). Ну, большая часть мелких программ и скриптов в ней и не нуждалась - запускай и готово. В играх же, которыми я в основном и занимался, документацию чаще всего и не делают совсем. Часто даже для внутренних продуктов, вроде упаковщиков данных или мелких редакторов данных, хорошо ещё, если ключи командной строки все задокументированы, а не по коду надо их назначения угадывать.

Ещё кто-нибудь из знакомых есть такие?
Tags:
spiiin: (2D)
Закончил две главы приключений Робикса – обучалки программированию для детей для iOS.

В первой главе игроки изучают простые команды перемещения, ожидания и покраски клеток в разные цвета, во второй узнают, что такое условные команды и циклы повторения по несколько раз. В следующих будет обучение циклам с условием ("Пока клетка под Робиксом определённого цвета, повторять действие"), функции, модификаторы скорости на поле и команды использования предмета, хранящегося в клетке.

Промо-ролик второй главы:

Бесплатная версия без рекламы и смс.
Tags:
spiiin: (2D)

Друзья, нужна ваша помощь!
Я почти доделал игру для AppStore, и мне необходимо её протестировать.
Если у вас есть iPhone или iPad и вы любите играть в игры, напишите мне.
P.S. Особо приветствуются те, кто может дать протестировать игру детям 11-13 лет.

Промо-ролик игры:


Игра – головоломка с элементами обучения программированию для детей.
Tags:
spiiin: (2D)
Программисты в душе бывают строителями и ломателями.

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

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

Строители улучшаются, оттачивая скорость возведения одинаковых зданий (в десять раз больше домиков за месяц – в десять раз больше денег), ломатели – строя такие здания, для которых ещё нет чётких планов и инструкций (отгрохал не церквушку, а монументальный собор – респект тебе и уважуха в веках).
Tags:
Feb. 17th, 2016 10:49 pm

Milight

spiiin: (2D)
Лампочки для дистанционного управления через интернет через WiFi — неотъемлемый компонент умного дома в моём понимании. Если компьютер в состоянии принести пиво из холодильника, приготовить чай, изменить температуру с минимальными усилиями, то твой достаточно дом умён. Пока что есть хотя бы лампочки. В отличие от от Philips Hue, которые стоят не-Hue-во, комплект из 4-х RGBW Milight-лампочек, пульта управления и Wi-Fi приёмника можно приобрести за 50-60$. Есть белые лампочки, в которых изменяется только яркость освещения, но мне, как фанату цветного освещения, больше понравились лампы с заявленными 24 миллионами цветов, некоторые из которых ещё и флюрные.

На лампочках есть несколько простых программ смены цветов, в стиле новогодних гирлянд, но возможно программировать их и самому.
Минус — закрытый протокол лампочек, в отличие от филипсовских, у которых торчит API для программиста. Но народные умельцы разобрали его, и можно хоть написать свою библиотеку, хоть воспользоваться одной из нескольких уже готовых, например, этой. Код, как обычно на Python, выглядит просто:
import milight
#соединяемся с WiFi-контроллером лампочек
controller = milight.MiLight({'host': '10.10.100.254', 'port': 8899}, wait_duration=0)
#включаем первую лампочку
controller.send(light.on(1))
#меняем цвет 1-й включенной лампочки на красный
controller.send(light.color(milight.color_from_rgb(0xff, 0x00, 0x00), 1))

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

Первые пробы на Мортал Комбате показали, что иногда лампы живут собственной жизнью, но в основном подсвечивают фон и яркие выстрелы бойцов. Но главный их эффект в этой игре — они на порядок усиливают эффект добиваний, теперь при успешном фаталити не только экран, но и вся комната окрашивается в зловещий красный цвет.
spiiin: (2D)
На случай, если разошлись контрольные суммы:
http://techblog.moudrick.net/2012/02/subversion-17-file-folders-manipulation.html
Неочевидное решение, если не знать, что "под капотом".
Tags:
spiiin: (2D)
Приделал поддержку socks-прокси для библиотеки mechanize:
https://github.com/spiiin/mechanize

Ссылки:
http://stackoverflow.com/questions/14449974/using-tor-as-a-socks5-proxy-with-python-urllib2-or-mechanize - как использовать один прокси для всех запросов.
http://stackoverflow.com/questions/12601316/how-to-make-python-requests-work-via-socks-proxy - как использовать socks-прокси для библиотеки requests.
http://stackoverflow.com/questions/2317849/how-can-i-use-a-socks-4-5-proxy-with-urllib2 - способ использовать несколько socks-прокси для библиотеки urllib2.
https://github.com/Anorov/PySocks/blob/master/sockshandler.py - способ использовать socks-прокси для https-запросов (не забыть зашифровать данные с помощью tls-сокетов, иначе большинство сайтов перенаправляет https-запрос на обычный http).

Поправил пару известных багов:
https://bugs.python.org/issue7291 - авторазицинные данные отправляются на прокси, а не на запрашиваемый сайт.
https://bugs.launchpad.net/ubuntu/+source/python-httplib2/+bug/1043326 - ответом может быть не только обычная строка, но и юникодная
Tags:
Oct. 14th, 2015 09:36 pm

Fab

spiiin: (2D)
Года 4 назад начал использовать Synergy (программу для расшаривания клавиатуры, мышки и буфера обмена между компьютерами), но только сейчас понял, что меня в ней раздражает отсутствие возможности копировать файлы напрямую между компьютерами, в связи с чем решил разобраться, как это сделать получше.

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

Если же файлы перебрасываются регулярно и по похожему сценарию, можно автоматизировать их передачу с помощью библиотек для работы с SSH в языках программирования, например, Paramiko в Python.

Следующий шаг для повышения удобства - абстрагирование от работы с протоколом и использование утилиты для упрощённого вызова фич SSH, для чего используется Fab, библиотека и утилита для удалённого вызова команд, надстройка над Paramico.

Основные команды (отсюда):

  1. run (fabric.operations.run)

  2. sudo (fabric.operations.sudo)

  3. local (fabric.operations.local)

  4. get (fabric.operations.get)

  5. put (fabric.operations.put)

  6. prompt (fabric.operations.prompt)

  7. reboot (fabric.operations.reboot)


  1. cd (fabric.context_managers.cd)

  2. lcd (fabric.context_managers.lcd)

  3. path (fabric.context_managers.path)

  4. settings (fabric.context_managers.settings)

  5. prefix (fabric.context_managers.prefix)

spiiin: (2D)
http://www.kegel.com/mangle.html
Помогает разобраться в том, почему предварительно скомпилированная библиотека не линкуется к другому коду.
Tags:
spiiin: (2D)
Как-то попросили помочь с транскрибированием нескольких десятков часов аудио в текст. Бесплатных программ с поддержкой требуемого языка не нашлось, поэтому полез искать, как это сделать быстро и просто. Обнаружил несколько веб-сервисов, предлагающих распознавание звука в текст, каждый из которых использовал Web-Speech API (поддерживается только в браузере Chrome):
Демка использования Web Speech Api от гугла
Демка ограничена 5 минутами распознавания за раз, а найденные сервисы почему-то периодически роняли браузер, из-за чего использовать их несколько часов подряд было невозможно, поэтому я решил модифицировать демку под свои нужды (после окончания распознавания автоматически запускать его снова).
  recognition.onend = function() {
    final_transcript += interim_transcript;
    interim_transcript = "";
    if (isRestart) {
      setTimeout(letStart, 2000);
    }
  };
 
  recognition.onresult = function(event) {
    interim_transcript = "";
    for (var i = event.resultIndex; i < event.results.length; ++i) {
      if (event.results[i].isFinal) {
        final_transcript += event.results[i][0].transcript;
      } else {
        interim_transcript += event.results[i][0].transcript;
      }
    }
    final_span.innerHTML = final_transcript;
    interim_span.innerHTML = interim_transcript;
    window.scrollTo(0,document.body.scrollHeight);
  };


Следующая проблема - распознавание голоса идёт с микрофона, а надо было распознавать звук из файла. Она решилась установкой драйвера Virtual Audio Cable (Инструкция по настройке), который перенаправляет звук с динамиков на виртуальный микрофон.

Последние штрихи в настройке - использование Web Speech Api требует веб-сервера для запуска, так что пришлось установить Apache и настроить на нём доступ через https (это нужно, чтобы браузер не запрашивал разрешение на доступ к микрофону перед каждым запуском распознавания). Бонусом получилось распределить распознавание между двумя домашними компьютерами.

Для управления процессом я поставил на них Team Viewer, чтобы раз в полчаса заходить с телефона на оба компьютера и проверять, всё ли идёт как надо. Вдобавок обнаружил его приятную особенность - аудиодрайвер передачи звука глушит обычный вывод звука на динамики, но Team Viewer позволяет прослушать звук с компьютера, так что возможно на слух проверить качество распознавания. Которое, кстати, оказалось довольно высоким (около 90%), так что для финальной обработки достаточно было только исправить мелкие ошибки распознавания и расставить знаки препинания.

Так за вечер у меня получился маленький уютный домашний сервер для транскрибирования.
Tags:
spiiin: (Default)
Мой товарищ вконтакте устроил опрос:

Результаты опроса довольно интересны для меня, так как автор - представитель активной молодёжи Крыма, постоянно путешествует и активно общается с людьми, соответственно, среди друзей у него много таких же молодых (лет 20-30), активных людей из разных городов, которые, в основном, и участвовали в опросе.

Мне тут понадобилось разобраться с Open API вконтакте, решил в качестве тестовой задачки проанализировать данные этого опроса (с разрешения автора), чтобы оставить в нём мнение только жителей Крыма - разделить тех, кто проголосовал "Я не из Крыма, мне интересны результаты опроса" на 2 группы - выделить среди проголосовавших тех, кто на самом деле не из Крыма ("Воздержался") и сложить с остальными категориями.

Под катом код, ниже результаты.
Read more... )

Результаты (взяты только жители Крыма):

1. Мне стало жить лучше                           - 45 (30,2%) (7 вычеркнуты)
2. Мне стало жить хуже                            - 30 (20,1%)
3. Существенно не изменилась                      - 36 (24,1%) (3 вычеркнуты)
4. Я уехал (-а) на ПМЖ за пределы Крыма           - 33 (22,1%)
5. Я переехал (-а) жить в Крым меньше года назад  - 0  (0,0%)
6. Я из Крыма, мне интересны результаты опроса    - 5  (3,3%)



Меня больше всего огорчает 22,1% (каждый пятый) уехавшей молодёжи. Выборка, конечно, из тех, кто часто путешествует, но среди знакомых it-шников, субъективно, всё ещё хуже.
spiiin: (totoro)
...иногда перестают работать при копировании их с винды на мак, из-за того, что портятся концы строк в текстовых файлах:
-bash: ./PostprocessBuildPlayer_Tapjoy: /usr/bin/perl^M: bad interpreter: No such file or directory

Из самой юнити это никак не диагностируется :(
Tags:
spiiin: (totoro)
Постучался ко мне в аську как-то небезызвестный в ромхакерской тусовке Dr Mefisto, с просьбой объяснить, как устроены некоторые штуки в CadEditor'е. Выяснилось, что он разбирает сеговскую игру Thunder Force 3, и хочет портировать редактор для использования его в своих целях. Я согласился и после нескольких дней общения и его интенсивной работы редактор был готов, кроме последней фичи - запаковки измененных данных об уровнях обратно в ROM.

Игровые данные хранятся в запакованном виде, игра использует 2 алгоритма сжатия - обычный RLE и "алгоритм Иванаги" - смесь версии адаптивного алгоритма Хоффмана с алгоритмом LZ77, похожего на алгоритм Deflate (инфа о сжатии от OOStyx) ).
у Mefisto был исходник сжатия этим алгоритмом на С,  он убедился, что полученный архиватор разжимает игровые данные, но не может сжать их обратно в таком же виде. Тогда он переписал исходник построчно на паскале - архиватор заработал как надо. Для редактора он ещё раз переписал код построчно на C# – и архиватор снова перестал работать.

Тут феноменом заинтересовался и я. Можно было предположить, что C#-версия не работает из-за неверного приоритета операторов, неправильной размерности или же оттого, что где-то не случается задуманный overflow там где он должен быть из-за того, что для арифметических операций короткие типы конвертируются в int.
Также скорее всего сишный код мог не работать оттого, что собирался новым C++ компилятором - от этого, например, int мог стать 4х-байтным там, где задумывался 2х-байтным, а char, наоборот, уменьшиться от размеров целого до 1 байта. Так что я прочитал статью от одного из авторов алгоритма, и нашёл в сети бинарники архиваторов lha под win32, lharc и две версии уже собранной утилиты lzhuff под dos. При этом узнал, что существуют хранилища старых программ, требующие денег за доступ.

Дальше с помощью правильной версии разжималки были получены тестовые данные, чтобы можно было в dosbox'е запустить откопанные программы 20-летней давности.
Результат - в режиме совместимости со старыми версиями (опция архиваторов -o. случайно заметил, что полученные архивы можно открыть winrar'ом, завидная совместимость) получились архивы, которые дают такой же 1-й блок файла, 0x180 байт или около того, а дальше начинаются отличия от эталонных данных из игры.  Однако получить данные, идентичные запакованным, так и не получилось.

В этот момень Mefisto написал, что он переписал модуль компрессии в Delphi на dll и вызвал из программы на C# методы из дельфийской библиотеки, с единственным из всех рабочим кодом запаковки, и я свернул свои эксперименты. Возможно, разработчики игры просто допустили в реализации алгоритма ошибку с переполнением, которая случайно повторилась в коде на паскале.

А мораль истории в том, что работающая программа всегда состоит из набора ошибок, которые компенсируют друг друга.
Tags:
spiiin: (2D)
Потребуется:
Microsoft Visual Studio 2012 Express for Windows 8
Windows SDK for Windows 8                     

1. Собрать приложение под архитектуру ARM.
Ключей для выбора выходной архитектуры нет, нужно использовать компилятор из папки winSdkDir/bin/x86_arm.

*не забыть добавить опцию -D"_DEBUG" компилятору чтобы работала OutputDebugString.
*не забыть отключить в DirectX creationFlags D3D11_CREATE_DEVICE_DEBUG, если не хочется устанавливать на девайс debug версию библиотек DirectX (я её вообще не нашел).


2. Слинковать как приложение магазина.
winSdkDir/bin/x86_arm/link.exe /MACHINE:ARM /APPCONTAINER

*не забыть добавить в пути к либам /x86_arm/

3. Создать манифест приложения
http://msdn.microsoft.com/en-us/library/windows/apps/br211476.aspx
*не забыть добавить в него раздел Capabilities и задекларировать набор возможностей, которые будет использовать приложение. В документации к WinRT API обычно указывается, для каких вызовов необходимо добавлять capability.
*для directx-приложений, использующих xaml-контролы, EntryPoint в манифесте должно быть установлено в YourAppClassName.App, где YourAppClassName - имя вашего класса приложения - наследника Windows::UI::Xaml::Application.

4. Упаковка в приложения в пакет.
Используется утилита MakeAppx из набора Windows 8 SDK.
MakeAppx.exe pack /d . /p YourApp.appx
Выходной формат - обычный zip-архив. Еще при упаковке проверяется правильность некоторых разделов манифеста.

5. Генерация сертификата.
Без подписывания приложения сертификатом оно не запустится.
http://msdn.microsoft.com/en-us/library/windows/desktop/jj835832%28v=vs.85%29.aspx

расписано в статье:
5.1. генерируем корневой самоподписанный сертификат.
makecert.exe -n "CN=name" -r -a sha1 -sv name.pvk name.cer –ss root
5.2. генерируем клиентский сертификат для подписывания, подписываем его корневым сертификатом и устанавливаем в раздел личный сертификатов:
makecert -a sha1 -sk "name" -iv name.pvk -n "CN=name" -ic name.cer -sr currentuser client.name.cer -ss My
5.3. смотрим sha-1 thumbprint клиентского сертификата с помощью PowerShell
PS C:\> dir cert:\CurrentUser\My

*не забыть установить корневой сертификат на устройстве с правами администраторa
certutil.exe -addstore root My.cer
*не забыть убедиться что имя издателя совпадает с полученным в Windows Store.
*убедиться, что имя сертификата ("CN=name") совпадает с тем, которое указано в манифесте приложения ( <Identity Publisher="CN=name">)

6. Подписывание приложения.
signtool.exe sign /fd sha256 /sha1 YOUR_CERT_THUMBPRINT YourApp.appx
YOUR_CERT_THUMBPRINT - отпечаток sha-1 вашего сертификата, подсмотренный в пункте 5.3.

7. Копирование скрипта установки из Visual Studio.
Собрать пакет для магазина Windows из бесплатной Visual Studio нельзя.
В платных версиях в контекстном меню проекта есть пункт "Проект -> Магазин -> Создать пакеты приложения". В выходной директории будет лежать запакованный appx-пакет приложения, и еще несколько файлов, один из которых надо скопировать в папку со своим приложением - Add-AppDevPackage.ps1.
Это командный файл PowerShell, который можно открыть почитать, но нельзя править, потому что он защищён подписью (комментарий в конце файла). Без неё скрипт на устройстве не выполнится, так как он вызывает команды, недоступные простым смертным разработчикам.

8. Вычисление и копирование DLL зависимостей для приложения.
Для отладки на устройство также необходимо вместе с пакетом приложения устанавливать набор библиотек для отладки из visual studio, собранные в package.
Выяснить, от чего зависит бинарник можно с помощью утилиты dumpbin из winSDK:
dumpbin /dependents YourApp.exe

Пакет с зависимостями можно взять из той же папки, что и скрипт установки, сгенерённый Visual Studio - скопировать всю папку Dependencies оттуда в папку со своим приложением (в подпапке arm можно распаковать appx, чтобы убедиться в том, что внутри лежат нужные версии DLL - дебажные или релизные).

*Не забыть добавить в манифест приложения раздел Dependencies и указать имя файла с зависимостями, иначе скрипт установки будет ругаться на несоответствие:
<PackageDependency Name="Microsoft.VCLibs.110.00.Debug" MinVersion="11.0.51106.1" />

9. Настройка Surface.
Устанавливать приложение можно по сети из расшаренной папки (минимально в ней должны быть - подписанное приложение, скрипт установки, папка с зависимосяти и сертификат разработчика).
Для запуска в контекстном меню для установочного скрипта выбрать Run with PowerShell, но так окно powershell будет закрываться до того, как можно будет посмотреть результат работы, чтобы выяснить причины возникающих ошибок (а любой программист электронно-вычислительных машин должен твёрдо усвоить, что ошибки будут).
Поэтому лучше создать командный файл, запускающий powershell и установить разрешение для запуска пользователем удалённых скриптов:
PS C:\> Set-ExecutionPolicy Unrestricted -scope CurrentUser

10. Установка приложения
в powershell указываем имя скрипта для выполнения. На устройствах без клавиатуры команды в командную строку вводить можно либо прямо с экранной клавиатуры (на которой нет стрелочки вверх для использования истории команд),либо втыкнуть в usb порт обычную клаву. выглядит по идиотски^w гиковски. Если установить пакет получилось с первого раза, ура! Иначе проверять сертификаты, манифесты и зависимости.

11. Установка на устройство средства удалённой отладки.
Remote debugging tools
дальше просто запустить и нажать кнопку "Настроиться", чтобы отладчик добавил себя в исключения файрвола.

12. Отладка.
В меню Visual Studio выбрать  "отладка -> отладка установленных пакетов" и вбить имя устройства для отладки, выбрать пакет приложения и нажать "начать".
Если всё было сделано правильно, отладочный вывод  приложения будет перенаправляться на консоль Visual Studio.
Tags:

Profile

spiiin: (Default)
spiiin

July 2017

S M T W T F S
      1
2345 678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2017 06:34 am
Powered by Dreamwidth Studios