среда, июля 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
Страница с описаниями -  здесь, программы можно взять в магазинах: