среда, июля 01, 2015

Приключения с Windows 10

Смотрел, смотрел на всяких пробных установках (Pro x86 в виртуалке, Enterpri на железе), да и решил поставить на рабочую систему (Win 8.1 Pro с кучей всякого софта, с виртуалками и т.д.) обновлением сборку 10158 из ISO-файла. Пока поставил - всё удовольствие продолжалось около 3-х часов (с перерывом на поспать, система в это время тоже спала) – пока посмотрел, всё ли на месте (всё сохранилось на первый взгляд, кроме гаджетов, которые сносят с упорством, достойным…) – запустил виртуалку и увидел, что раздают новую сборку, 10159. В виртуалке она быстренько поставилась, а на обновлённой системе висит без движения вот эта картинка:

image

Оно бы и ладно, когда-то скачается, но она, собака, не активируется – ни тем ключом, который откуда-то взялся при установке, ни другими, которые присутствуют в разных публикациях (ключ с сайта Insider-программы даже не принимается). Теперь и непонятно, как с этой фигнёй быть – на сайте лежит ещё сборка 10130, и двигаться через неё и обновления очень уж не хочется. Поставлю сейчас 10159 из образа, будет опять себя неправильно вести – восстановлю системный диск обратно, подождём до 29 июля…

среда, мая 27, 2015

Приехали?

Впервые за 10 лет сегодня не получилось запостить сюда заметку при помощи Live Writer, которым тоже пользуюсь немеренное количество времени - не может он зайти сюда, и всё тут... Мало того, даже вручную, во встроенном редакторе на Chrome пристойно пост сверстать не получилось - см. этот пост.
Это что, начало истребления сервиса, не приносящего денег? Жалко...

Тотальный диктантор

Нравится мне эта затея – Тотальный диктант. Посмотрел материалы сайта, даже онлайновый тест потыкал (не разочаровался - с правописанием справился, только насчёт запятых у нас с Д. Быковым понимание оказалось разным). Писать в реальном режиме, когда акция проводится, не пробовал – опоздал, да и не сильно интересно, чтобы какая-то неизвестная мне училка оценку ставила…
А вот офлайновых возможностей организаторы предусмотрели маловато, особенно для первых акций. Пошарил на Youtube, там нашлись ролики с диктовками (это когда не просто зачитывается текст, а произносится чётко, по предложениям – как в школе), правда, не для всех диктантов. Тексты диктантов вывешены на сайте акции, там же есть комментарии по правописанию и пунктуации для некоторых диктантов. Пришёл к мысли, что можно это всё собрать в одном месте и дать возможность желающим поупражняться в по-настоящему сложных диктантах.
В итоге манипуляций с роликами, текстами, файлами комментариев, хостингом и т.п. получилась вот такая программка для Windows 8.1:


Доступные диктанты:



Процесс написания диктанта:

На десктопе с обычной клавиатуройНа планшете с сенсорным экраном

Результат проверяем самостоятельно!





Самым непростым оказалось размещение файлов с материалами – их набралось даже после урезания роликов с диктовкой до минимального пристойного разрешения (здесь сильно большого, вроде, и не требуется) ок. 400 Мб. Сложить их все в пакет для Магазина вполне можно, даже можно загрузить пакет в магазин на тестирование (загружался около 30 мин.), но вряд ли много пользователей спокойно вынесут такую долгую установку приложения… Решил, что в пакете оставлю набор только для одного диктанта – типа, ознакомительный – а остальные загружу после установки программы, когда юзер будет видеть, что происходит, с какого-нибудь бесплатного хостинга (не использовать же платный для бесплатной программы). Попутно выяснилось, что большинство бесплатных облачных хранилищ файлов (Яндекс.Диск, Облако Mail.ru, Google.Disk и др.) с таким подходом не согласны – формируют ссылки не файлы, а не страницы, с которых файлы можно скачать. “Вручную” файл загрузить можно, а вот программно – большой вопрос (можно, конечно, парсить эту страничку и пытаться выудить оттуда настоящую ссылку на файл, но тут придётся сражаться с фантазмами тамошних программеров/дезигнеров, которые выскочат неизвестно когда и в каком направлении – плавали, знаем). В итоге пришлось, всё же, воспользоваться платным сервисом – пока не найдётся подходящий бесплатный…
По требованиям Магазина пришлось соорудить “сайт программы” – спасибо Google, что пока не закрыл сервис страниц. По моде зачем-то открыл “страницу программы на Фейсбуке” – может, пригодится для чего-нибудь…

Ну, и добро пожаловать потестировать, поставить 5 звёзд и написать отзыв.

Версию для телефона делать не стал – не смог представить, как исхитриться писать диктант на телефоне…
Версию для десктопа возьмусь делать, только если она кому-то понадобится – всё же, на дворе 2015-й год и через пару месяцев обещают выпустить практически бесплатную для тех, у кого “семёрка”, Windows 10, на которой программка тоже работает.

понедельник, апреля 20, 2015

Кино, OneNote и пределы.

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

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

Методика работы с информацией довольно простая: перед просмотром фильма открываем книгу “Мои фильмы”, в ней раздел “Смотрел”. Запускаем программу просмотра (ivi.ru, “Фильмы онлайн” и т.п.), в ней запускаем фильм и через механизм шаринга (“Поделиться”) собираем на страницу фильма описания, рецензию, скриншоты. Можно дополнительно открыть “Кинопоиск” и набрать информации оттуда.

Что получается в итоге, видно здесь - http://1drv.ms/1aIOd27 (нужен MS account).

Полгода всё шло хорошо, но пришёл белый и пушистый предел – вот этот фильм был последним (71-м, всего семьдесят первым Sad smile), страницу которого удалось добавить на планшете. Дальнейшее добавление на планшете страниц просмотренных фильмов приводит к тому, что синхронизация с облаком повисает и все изменения остаются на планшете. Всё это безобразие происходит на планшете с 2 Гб ОЗУ в программке с метро-интерфейсом. Такая же история в виртуалке с такой же памятью под Windows 10 в бете программы под эту ОС. На десктопе с 24 Гб памяти таких приколов нет, как на метрошной программке, так и на десктопной. Похоже, на 2-3 года ещё хватит…

Обошёл ограничение по рабоче-крестьянски – начал добавлять с планшета страницы в специальный пустой раздел, потом на десктопе переносить эти страницы в раздел «смотрел».

Похоже, команда, которая OneNote мастерит, не сильно придерживается рекомендаций от MS по работе с данными – пейджинг всякий и т.п. заумь. А компьютеры у них хорошие и никаких пределов они не встречают… Любопытно в связи с этим, как скоро запищат пользователи всяких iOS-Андроидов и малых Win-планшетов, куда программка, как и прочий Офис, усиленно внедряется.

суббота, апреля 18, 2015

TFS или горе от ума…

Использую при разработках TFS на http://visualstudio.com - халявный, достаточно удобный, хоть иногда помаленьку и глючит.

На днях получаю вот такой сюрприз:

image

Через браузер тоже не войти:

image

Выяснилось, что нельзя зайти и на некоторые другие сайты, тоже для разработчиков – напр., на https://dev.windowsphone.com:

image

Никакие телодвижения не помогают - смена браузера, юзера, отключение антивируса (360), брандмауэра, смена ИП путём перезапуска роутера и т.п.

При этом с виртуалок и др. компьютеров (с планшета, напр.) можно зайти и через браузер, и из Студии…

Гугль рассказывает, что такие истории периодически всплывают у разных юзеров, универсального лекарства нет - часто проходит само или в результате действий, которые другим пользователям не помогают. Периодически и у меня “проходило само” – Студия подключалась к сервису, можно было делать checkin, но через несколько минут история повторялась.

Помогло отключение в брандмауэре правило для блокировки файла \node.js\node.exe (спрашивается, кто его заблокировал и при чём он тут вообще?). Через пару часов выяснилось (ничего, собственно, на компьютере не делалось, кино смотрели…), что этот файл и его блокировка вправду ни при чём – всё “восстановилось” в своей гадости…

При помощи F12 в Хроме и ИЕ выясняется, что ошибка VS400664 (на картинке выше) случается при запросе на УРЛ https://tfsprodch1acs01.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederation&realm=https%3a%2f%2fapp.vssps.visualstudio.com%2f&version=1.0&reply_to=https%3a%2f%2fapp.vssps.visualstudio.com%2f_signedin%3frealm%3dapp.vssps.visualstudio.com%26protocol%3dwsfederation%26cache_key%3dSBW5SEIQ63GOLBA5XNOKYZUUQ2JE2OJBLU6EGP4DDWDGHE6TQ4BQ%253D%253D%253D%253D%26mkt%3dru-RU&callback=jQuery18301627928065136075_1429313613313&_=1429313614103
Такая диковинка сформирована библиотекой jquery - очень, наверное, умная, раз такое чудо соорудила... Убрал всю заумь, оставил https://tfsprodch1acs01.accesscontrol.windows.net и браузер сразу спросил пароль. После этого открылась нужная страница (https://app.vssps.visualstudio.com/profile/view?mkt=ru-ru), и всё прочее заработало - и страницы разработчиков, и связь с TFS из Студии…
Ура, да не очень – через 15 часов всё “восстановилось” и рецепт больше не помогает…

Очередной рецепт, от благодетелей - https://support.microsoft.com/ru-ru/kb/299357?wa=wsignin1.0, сброс настроек TCP/IP.

Заработало – ура! Правда, после перезагрузки выяснилось, что полетели все настройки входов на сайты, в т.ч., в самой Студии. Спасибо lastpass – всё быстро восстановилось.

Но тут новый вопрос – а с какой периодичностью сию процедуру очистки от протокольно-сетевого мусора надо производить? И почему это нельзя автоматизировать? А что делать, если и это не поможет – систему переустанавливать? Ещё свежи воспоминания о “чистой” установке Windows 8 в 2012 г. (upgrade с Windows 7 не пошёл тогда) и установке и настройке всего нужного софта (в апплете панели управления «Программы и компоненты» примерно 7 страниц)…

Всё время говорю – ещё наплачемся с этим jscript, очень уж рьяно его везде взялись внедрять… Black Sheep

понедельник, марта 09, 2015

И снова про ЭТО - 2

Про вирусы-антивирусы, конечно…

Последние дня 3-4 сидел в Windows 10 TP, решал кое-какие технические проблемы, которыми портить рабочую установку Windows 8.1 жалко. Сегодня обнаружил, что в этой “десятке” браузеры запускаются в какую-то левую поисковую страницу http://www.mystartsearch.com, а ИЕ и вовсе падает после запуска (в промежутке между падениями удалось разглядеть какую-то неизвестную “надстройку” IETabPage, которая не удаляется и не отключается. При внимательном рассмотрении выяснилось, что никакого антивируса в системе и нет (ну, кроме встроенного “Защитника Windows”), а в процессе экспериментов я устанавливал парочку безобидных программ. Ну, и этого хватило…

Поставил китайский антивирус 360 Total Security (который наряду с защитой при помощи трёх антивирусных движков заодно и неплохо чистит систему от разного мусора), запустил проверку и вот он, троянец, которого успешно и удалил (правда, без перезагрузки не обошлось – стойким оказался этот оловянный солдатик троянец)... В общем, спасибо китайским братьям.

P.S. Неспроста, похоже, Microsoft 7 марта выпустила внеочередную программку для удаления вредоносов, которую распространили через Windows Update, но почему-то с меткой “рекомендуемое” (такие обновления автоматически не устанавливаются, смысл акции становится непонятным). Обычно такие программки распространяются в составе месячных пакетов обновлений с меткой “важное”, которая вызывает автоматический запуск (что логично, собственно).

В общем, на благодетеля с его “бесплатным” антивирусом надейся, но сам не плошай – используй какой-нибудь настоящий антивирус. Хоть бы и Касперского…

пятница, декабря 26, 2014

Игрушечка-9 или Sharing-2

В последнее время основным способом эксплуатации программки LastFM Writer стало распознавание треков при прослушивании радио. Интернетное радио слушаю на планшете/десктопе при помощи турецкой программы RADYO, данные из которой через Sharing подаются в LastFM Writer и отправляются на сервис Last.fm. При прослушивании эфирного радио (в основном, “Радио джаз”) для распознавания треков использую программу Shazam на телефоне или планшете, результаты работы которой тем же путём отправляются на сервис Last.fm. Музыка с YouTube слушается примерно так же.

И всё бы шло своим чередом, но на ребят из Shazam напал зуд рационализаторства. Программка, может, и лучше стала работать (как они сами говорят), но формат данных для обмена они поменяли. Раньше обычным текстом писали типа “Я только что прослушал «С чего начинается родина» от Кобзона” на разных языках, теперь же выдают нечто вроде вот этого, без всякой локализации. Как из этого получить данные трека, неясно. Не парсить же страницу… Обращение в суппорт Shazam сделать как было принесло радостный ответ с уверениями, что как только разгребут завалы писем, так сразу моё и прочитают. Неделя прошла – пока не прочитали.

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

Но основной-то подвох заключался в другом – изменили не только состав информации на обмене, но и тип объектов, которые программка отдаёт по шарингу.  И никому, как водится, об этом не сказали. И самому об этом узнать непонятно как.

Сделать обмен в эмуляторе телефона под отладчиком не получается – на эмулятор нельзя поставить программу из магазина. Сделать обмен на настоящем телефоне тоже не получается – программка использует SQLite, вследствие чего компилится под платформу x86, а Студия не представляет, как такую конструкцию в телефон засунуть. Так и пришлось писать специальное «универсальное приложение» для изучения шаринга. Попутно выяснилось, что на телефоне отладчик студии бесполезен – после запуска обмена с приложением отладчик от него отцепляется. На десктопе, правда, ничего не отцепляется, но и Shazam здесь ещё не обновили…

В итоге пригодились старые верные способы “отладка методом пристального взгляда” и “исследования протоколов работы”. Получилось достаточно универсально, чтоб и других умников-рационализаторов охватить по возможности.

В общем, слушаем радио дальше…

четверг, октября 16, 2014

Игрушечка-8 или Windows 10

Как всё прогрессивное человечество, скачал и установил на виртуалку то, что все давно ждали – очень универсальную ОС Windows 10. Поудивлялся, что не “9”, но не долго (хозяин – барин, мой рояль, куда хочу, туда и ставлю). Установил из магазина свою программку и решил посмотреть, как использующиеся в ней разные технологии работать будут.

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

После запуска программки на windows 10  под отладчиком на проблемной страничке прямо в конструкторе получаю ошибку с сообщением "XAML parsing failed.". Вот и здрасьте...

Бля!!! Дело оказалось в задании значений для комбобокса:
<x:Int32>50</x:Int32>
<x:Int32>100</x:Int32>

Заменил целые на строки, и всё стало работать:

 <x:String>50</x:String>
<x:String>100</x:String>

Пришёл к выводу, что в дальнейшем такие вещи надёжней делать в коде, хоть в конструкторе XAML и удобней иногда. Мало ли, какие ещё глюки в XAML-парсер добавят. И как оно там будет, когда эту “универсальную” ОСь на телефон поставят…

Игрушечка-7 или Локализация-2

Предыдущая “Локализация” была про нехватку стандартных средств XAML для локализации. Нынешняя – про то, что не всегда можно делать так, как кажется логичным.
У элементов интерфейса есть два атрибута – x:Name="MyControl" и x:Uid="MyControl". Первый используется в коде как имя переменной, обозначающей этот элемент, второй – в ресурсах со строками для локализации как префикс имени нужной строки (напр., MyControl.Text и т.д.). Нигде значения этих атрибутов не пересекаются и, по логике, вполне могут иметь одинаковые значения – удобно же, особенно, когда контролов много, оперировать с одинаковыми именами.
Но у изобретателей XAML-парсеров своя логика… До некоторого уровня сложности (количества нагромождений элементов разметки, методов и свойств объектов в программе) она совпадает с моей – всё компилировалось, загружалось на телефон и десктоп, запускалось, локализовалось и работало. С какого-то момента, запустив программку на эмуляторе телефона, получил сообщение о необработанном исключении при парсинге XAML в методе InitializeComponent(). При этом, естественно (метод-то не мой, хоть и можно Студией залезть) внутри него толком ничего узнать не получается. Сообщается, что ошибка в такой-то позиции такой-то строки. И поди догадайся, что строку надо искать в файле, который генерит препроцессор XAML… Вот тут-то, при разглядывании этого файла, и рождаются подозрения, что атрибутам x:Name и x:Uid нужно обязательно задавать разные значения… И действительно, после изменения одного из них XAML начал успешно парситься.
Где это говорилось про одну ОС на всех устройствах? Пускай бы парcер XAML одинаковый был, это, вроде, попроще…

среда, июля 30, 2014

Как у всех…

Давно с прискорбием констатирую, что качество программного обеспечения (ПО) постоянно снижается (говоря “толерантно” - не улучшается). Добавят в программу (операционную систему, инструмент управления и т.д.) новое средство, свойство и т.п. – и с ними новые ошибки. А старые исправлять – недосуг, надо вперёд мчаться, как маркетинг и экономическая модель велят.

В итоге может случиться всё, что угодно. Например, самая супер-распупер ОС Windows 8.1 на моём десктопе временами может вывести из себя и не пустить обратно… Загрузка из выключенного состояния до рабочей обстановки (запустить ФАР, Студию, браузеры с 15-20 окнами, OneNote и некоторые мелочи) занимает минуты полторы или две. Та же обстановка из состояния “сна” получается через 5 минут или больше. Ну, не переносят многие программы этого сна, трудно просыпаются, как с похмелья или после тяжёлых наркотиков. И ладно бы это были подозрительные примочки типа Punto Switcher, но это и MS-мышка, VS 2013, и ИЕ 11, и Ёксель 2013, и Хром. Их всех приходится, как правило, перезапускать. И такое не только после “сна”, но и после 30-40 минут простоя. Эти ребята, похоже, думают, что кроме планшетов и телефонов других компьютеров не осталось. Остались ещё десктопы, и не надо на них экономить без моей просьбы, засовывая “нормальные” программы в состояние Suspending, как метрошные игрушки.
Большой Брат, фиг ли…Палец вниз

Равняются на него, Большого, и братья поменьше. Например, есть такая программка μTorrent – всегда считал её в некотором роде образцом: маленькая, ресурсы почти не жрёт, сколько заданий ей ни подкинь, как бы плохо ни работала сеть – программка методично исполняет свою работу и рано или поздно – иногда и через месяц-два - файлы у тебя будут. Постепенно, с добавлением новых фич, типа рекламы всякой дряни, “встроенного” проигрывателя и много чего ещё не менее полезного, ресурсы стали пожираться весьма заметно. “Усовершенствовали” также алгоритмы работы с полученными данными – запись на диск, кеширование (может, ещё чего-то, но эти видны невооружённым глазом).

В итоге все эти “доработки” – сейчас версия 3.4.2 (может, также во взаимодействии с “восьмёркой”) - приводят к зависанию на заданиях сложнее, чем скачивание одиночного файла размером 50 Мб. Начало это проявляться на планшете (там можно ещё списывать на общую слабосильность и медленные “диски”), но вот вчера программка сумела подвесить мне десктоп с 4-ядерным i7, 15 Гб памяти и SATA-диском.  А всего-то попросил скачать сериал Клиника (около 200 файлов общим объёмом 49 Гб). И не то, чтобы висит ОС насовсем, но и не качается ничего, только программа место под файлы занимает (100% загрузки диска, за 1.5 часа разместила 10 Гб), и выгрузить программку цивилизованно нельзя, только кувалдой. [На планшете в таком состоянии и кувалдой не получается, приходится hard reset применять…].

То ли это такая “борьба с пиратством”, то ли полная деквалификация разработчиков… Надеюсь, что, всё же, второе – косорукие они, но не самоубийцы же… Может, садисты, правда. Схожу с ума от злости

А выручает в торрент-делах, как ни забавно, метрошная программка Torrex. На планшете работает совсем без сбоев (там простые задания), на десктопе же несколько раз останавливалась с сообщением о недостатке памяти (!?) и пару раз завалилась с сообщениями о конфликтах блокировок. С кем она там конфликтует, понять не удалось, но программка сразу возобновляла работу после перезапуска. Палец вверх

суббота, июля 26, 2014

Игрушечка-6 или Списки значений

В программку добавил поддержку работы с базой данных. SQLite, конечно, других-то для “универсальных программ” и нет (что, конечно, весьма удивительно – всегда же был SQL Server compact edition). Цель, собственно, была простая – при отсутствии связи с сервисом Last.fm сохранить на время информацию о треке, чтоб потом её отправить повторно. Так, собственно, известные мне клиенты сервисов и делают. Рефлексы не позволили делать ненормализованную таблицу треков, в результате появились таблицы-справочники названий треков и альбомов, а также имён исполнителей. Ну, и чтобы добро не пропадало, сделал пополнение этих справочников при каждой отправке данных на сервис.

Хорошо, но мало: справочники растут, а пользы от  этого никакой. Первая мысль – сделать на их основе автодополнение для ввода в форме программы. Ура! Одна малость – подходящих под эту задачу контролов как-то не наблюдается ни среди стандартных, ни среди розданных на халяву фирмой Terlerik. Пришлось сооружать такой контрол самостоятельно. Контрол получил гордое имя “TextBoxWithList”:

image

После ввода с клавиатуры нескольких символов список заполняется подходящими значениями из справочника и выводится на дисплей:

Windows 8.1. WinPhone 8.1
more-artists more-albums

В основной форме пришлось помещать элементы в Canvas, без чего получалась мешанина:

image

Собственно, всего этого достаточно, если бы не одна малость – на телефонах работает как задумано только на 6” устройствах. На меньших экранах с третьим полем формы случается неувязка: выпадающий список практически полностью перекрывается находящейся в этот момент на экране клавиатурой. Для других полей список перекрывается частично и это не мешает им воспользоваться:

more-tracks

Сразу же возникает мысль использовать suggestions клавиатуры, однако обращение к собратьям эту мысль на время похоронило. Не придумал ничего лучшего, как при появлении списка сдвигать все элементы вверх, для чего пришлось прикрутить к контролу событие VisibilityListChanged, в обработчике которого и двигаются элементы формы:

more-artists
Вариант с рисованием списка выше поля ввода мне не нравится – и сам контрол надо переделывать, и основная форма ещё больше станет станет различаться в вариантах Windows/WinPhone, от чего Студия свихнётся окончательно...

Игрушечка-5 или Локализация

Представляется естественным каждое приложение делать двуязычным – на русском и английском языках. Собственно, это и, в некотором смысле, хорошо как для собственного развития, так и полезно для дела – представляю обалдевшие физиономии тестеров из “Магазина приложений” при виде программы, поддерживающей только русский (казахский, украинский, санскрит и т.д.).

XAML, который используется для разработки нашей программки, имеет собственные средства для локализации элементов интерфейса. Но не всех, для которых приходится выдумывать собственные средства. Например, вот такой класс пришлось сочинить:

image

Второй интересный вопрос – где брать локализованные строки. В смысле, чем переводить…Если с русско-английским переводом сильно больших проблем не возникает – программка Babylon Translator (переводчики Google и Bing переводят гораздо смешнее) помогает вполне пристойно, то с переводом на украинский хуже. Babylon делает очень смешно – переводит русские строки на английский, результат уже переводит на украинский. В итоге получаем смесь украинских и английских слов. Хорошо, что существует специальный ресурс pereklad.online.ua, который умеет переводить напрямую, без английского.

На результаты, поставленные рядом (по жизни их рядом нигде не видно, даже в магазине)  смотреть довольно забавно:

3-2.testTrack 3-2.testTrack form-2-green-2

Страница с описаниями -  здесь, программы можно взять в магазинах:

   

воскресенье, июня 01, 2014

Игрушечка-4 или Sharing

В программке для отправки данных на сервис Last.fm использовал приём и обработку информации от других программ. Использовал тексты, которые парсятся при помощи регулярных выражений.
Достаточно случайно заметил, что некоторые программы могут делиться не только текстами и скриншотами, но и выделенными в них файлами:
image
Пришлось сделать обработку этих файлов – извлекать из них, если есть, медиа-информацию, и отправлять её на сервис. Благо, такая функция в программе уже была, только применялась для файлов, выбранных File Picker’ом.
При более внимательном рассмотрении выяснилось, что подобный фокус можно проделать также и с использованием “традиционных” файловых менеджеров – Explorer, Far – лишь бы они умели выполнять операцию копирования в clipboard. Для взаимодействия с моей программкой используется переходник – программа Clipboard (“Буфер обмена”):
image
В обоих случаях запускается обработка группы файлов:
image

среда, мая 28, 2014

Ничего нового…

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

Всё шло хорошо до момента сборки пакета для телефонного магазина (пакет для магазина Windows собрался без приключений). Телефонная сборка не удалась с сообщением "Ошибка 20: манифест приложения ссылается на изображение …, которое не имеет кандидата в главном пакете приложения." или  "APPX3210: App manifest references the image … which does not have a candidate in main app package.". Выяснилось, что к такому приводит использование “визуального редактора” манифеста, который “помогает” выбрать файл для графического ресурса. При этом файл переименовывается и иногда может записываться в папку телефонного приложения. Если же путь к файлу написать руками, никаких переименований-перемещений не будет, а работать программка будет и так.

image

 В проекте для Windows такого прикола нет, в итоге общая папка картинок для тайлов выглядит так (файлы с суффиксом .wp телефонные, остальные для windows):

image

Собственно, ничего необычного: здесь переименовали, там об этом позабыли, а тут - рыбу заворачивали (©).

 Если всё же удалось в передрягу с телефонными файлами попасть, надо переименовать файлы взад (убрать .scale-100), удалить папки \bin и \obj, переименованные файлы включить в разделяемый проект. Не болтай

воскресенье, мая 25, 2014

Игрушечка-3 или Универсальные приложения.

Модное направление - как бы из одного кода получать приложения как для Windows 8.1 - десктоп, планшет – так и для смартфонов под Winphone 8.1.

clip_image001

Что называется, уговорили, черти красноречивые… Пришлось запустить вторую версию программки, теперь в технике “универсального” приложения. 

Microsoft для изготовления таких приложений выпустила специальное обновление для Студии 2013, которое, в общем-то, нормально в работе помогает - шаблоны проектов, ссылки на общие файлы, конвертация предыдущих проектов и т.п.

Самое большое, что пришлось переделывать – это вызов страниц типа “About program”, “Settings” и т.п. В предыдущей версии (для Windows) программы для этого использовались страницы типа SettingsFlyout с вызовом через системные средства:

2.settings

В телефонном API таких средств не находится, поэтому пришлось делать отдельные страницы типа Page и запускать их через системное меню:

form-2-green-2

Самое крупное, до чего не додумались почему-то в Microsoft – это условная компиляция XAML, наподобие #if … #endif в C#. Очень скоро выяснилось, что без этого жить сильно сложно - внешний вид в win- и wp-приложениях может (иногда и должен) сильно различаться: расположение и оформление контролов, даже разный их набор… Можно, конечно, разрулить кодом, но тогда зачем XAML?

Хорошие ребята, всё же, до нужного решения додумались - XAML Conditional Compilation. C этим решением возможны конструкции наподобие такой:

clip_image001

Студия, правда, не сильно это понимает, талдычит об ошибках там и сям и неправильно рисует внешний вид страниц в конструкторе. Иногда приходится по-разному называть контролы - по мнению Студии, имена используются дважды… Увеличивается количество строк в ресурсах для локализации… При сборке приходится дополнительно запускать очистку решения - но эти неудобства перекрываются тем, что не нужно писать массу "художественного" - для отрисовки - кода (которого и без этого хватает).
Выяснились некоторые другие проблемы отрисовки на телефоне некоторых элементов – AppBarButton, ComboBox.

Ещё выяснилось, что “просто так” шрифт для разных телефонов не масштабируется. Иногда на большом –  шестидюймовом - телефоне можно некоторые надписи и не рассмотреть.

В случае надписей “при полях ввода” достаточно установить стандартный стиль:

 

clip_image001

 

Для “заголовков”, которые хочется видеть “пожирнее”, стили нужны разные:

 

clip_image002

 

В итоге получается достаточно пристойно на разных устройствах. Становится хуже, если начать крутить в настройках телефона размер шрифта - можно на максимуме получить наползающие друг на друга строки и т.п. Как с этим бороться - ХЗ. Скорей всего, и не стоит: которые крутят на максимум - ССЗБ.

 

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

 

Гораздо смешнее оказалась ситуация с получением данных о проигрываемой музыке от других программ. Этот режим стал для меня лично основным режимом использования программы: слушаю на планшете, например, калифорнийское джазовое радио через турецкую программу RADYO,  периодически нажимаю кнопку шаринга и отправляю данные на Last.fm. Буквально 4 движения-нажатия. Набралось несколько и других программ, через которые иногда слушаю музыку.

Во второй, универсальной, версии, расширил перечень принимаемых при обмене форматов в попытке получить дополнительную информацию. Получилось извлечь нужную информацию из данных от программ  jamendo и 22tracks, в которых тоже есть неплохая музыка. Но всё это в Windows-окружении.

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

Те программы, аналоги которых на Windows работают как требуется, для телефонов либо отсутствуют, либо обмениваются только “текстом” с адресом страницы. Обмен в "нормальном" виде, с информацией о треке - только с Твиттером и Фейсбуком, чистый хардкод.

В принципе, для телефонов есть пара клиентов Last.fm, передающих информацию о проигрываемых треках, однако не все проигрыватели пользуются стандартными средствами и скробблеры их не понимают. Так что, для статистики на last.fm они потеряны.

 

Из функций программки, в итоге, телефону достаются только ручная набивка данных в форме и скробблинг по файлам на диске. До появления программ, разработанных под WinPhone 8.1, вовсе не обязательно “универсальных”.

 

Страница с описаниями -  https://sites.google.com/site/dyakovkm/lastfmuniwrite

 

Программы можно взять в магазинах:

 

  

пятница, апреля 18, 2014

Игрушечка-2 или LastFM Writer

Некоторое время назад начал делать программку для ручного скробблинга под Windows 8.1.

За прошедшие 3-4 месяца ничего, по большому счёту, в этой области не изменилось (если не считать появления плеера Duet with Last.Fm, который сам играет, сам и скробблит), то программка получила несколько дополнительных функций, надобность в которых возникла у меня самого.

Во-первых, добавил возможность извлекать информацию непосредственно из аудиофайлов. Использую в сценарии, когда запускаю проигрыватель на папке с аудиофайлами, а скробблинга по какой-либо причине не происходит. Обрабатываются, правда, только mp3- и wma-файлы – других WinRT не знает (или хорошо знания скрывает).

Во-вторых, добавил возможность принимать от других программ (по стандартному механизму “шаринга”) текстовые строки и выделять из них информацию по аудио-треку при помощи регулярных выражений. Использую в сценарии, когда какая-то мелодия, например, в радиоприёмнике, распознаётся программой Shazam, а результат передаётся в мою программку:

shazShar

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

Как для любой порядочной программы, пришлось завести сайт с описанием, на который понаставил ссылок в самой программе Winking smile.

Чуть ли не самое смешное в процессе разработки и публикации программы – тестирование перед отправкой и в магазине. При запуске тестов после сборки (Студия 2013 имеет соответствующую примочку) на рабочем десктопе регулярно получал отрицательный результат при тестировании перехода в suspend. Все остальные проходят, при самостоятельном запуске программки suspend на месте, а вот в тестах – хоть убейся. Водрузил на планшет express-версию Студии, делал сборку и тестирование там – тест проходил успешно. По прошествии некоторого времени, правда, глюк прошёл – и на Windows ставились обновления, и на Студию – что-то исправило ситуацию…

При прохождении тестов в магазине труднопреодолимым местом оказалась любовь тестеров к запуску программы на расхлябанной системе – в частности, с неверно выставленным временем. И даже не сам этот тест труден (нужно, конечно, и в такой ситуации вменяемо работать), а оказалось очень непросто обратить внимание тестеров на то, что программа в сообщении призывает поменять время на правильное. И даже сочинить раздел “Системные требования” на сайте программы.

Второй камень преткновения – любовь тестеров к переносу пароля из описание в поле логина могучим методом copy/paste, который часто делает не то, на что надеялся тестер. В результате программа возвращается на доработку в сопровождении рекомендации проверить, не закончился ли срок действия пароля на сервисе и прочей чепухи. Кончилось тем, что завёл на сервисе специальную тестовую учётку, а в программке подставляю для неё правильный пароль. В итоге тестер может переносить пароль любым самым бессмысленным способом - аутентификация на сервисе проходит нормально.

Собственно, на этом в развитии программки решил остановиться. Появятся потребности – начну версию 2.

WinStor

четверг, апреля 17, 2014

Update-юмор не иссякает…

Только-только порадовались новым супер-пупер изменениям в Windows 8.1 (и в сервере), как сегодня система под угрозой репрессий (сам не поставишь, насильно поставим чуть позже) стала требовать установить патч KB2919355 (в котором, собственно, и были те самые супер-нововведения). Только нынешний, в отличие от того, который ставился меньше двух недель назад, имеет размер всего в 2.5 Мб.

Стал присматриваться в надежде понять, в чём хохма-то – никакой разницы не видно: описание одинаковое, ссылаются на одну и ту же KB2919355. Похоже, накосячили с основным патчем, решили по-быстрому и втихаря выпустить заплатку на патч… Естественно, без перезагрузки дело никак не обходится…Steaming mad

При дальнейшем рассмотрении выяснилось, что патч зачем-то по-разному называется в разных ОС:

На сервере – вот так (не очень понятно, правда, кто там “обновлённая”) : 

image

 

На планшете с x86-версией – не менее гордое название:

 

image

 

На десктопе с x64-версией – длинно и буднично:

 

clip_image002

 

Такое разнообразие, наверное, чтоб админам скучно не было при поисках в списках установленных исправлений…Smile with tongue out

среда, января 29, 2014

Игрушечка.

Была у меня всегда (думаю, лет 8 уже) программка для "ручной" отправки данных на сервис Last.fm – если, например, хочется добавить к своей статистике трек, услышанный по радио, на youtube и т.п. Нашлась где-то библиотека под .NET с открытыми исходниками, и между делом соорудил такую программку (тем более, там и делать-то особо нечего…).

Конечно, основной способ пополнения музыкальной статистики – “скробблеры” для медиаплееров и до появления планшета под Windows 8 их вполне хватало и программкой пользоваться приходилось довольно редко. Но при попытке найти скробблер для metro-приложений был весьма озадачен их полным отсутствием. На WP8 есть, а на Win8 – нету… Даже популярная Shazam для распознавания мелодий функции отправки данных на сервис не предлагает. Смешно…

Пришлось поупражняться немного в сооружении “магазинных” приложений для Win8.1 и с какой-то попытки адаптированную под metro-интерфейс программку приняли в магазин Windows под гордым названием LastFM Writer. Ну, приняли – и хорошо, может, кому пригодится…

Сегодня получаю письмо, что программка-то - практически супер-пупер:

Your app "LastFM Writer" has been tested and rated by the BestWindows8Apps.net. Feel free to use Editor's pick award on your web page to show your visitors how highly we value your app.

Ну вот, так и придётся какие-то усовершенствования вносить…Turtle