Рубрика «Программирование» - 836

Технические аспекты обеспечения невизуальной доступности Android-приложений - 1
Возможно, читателю, далекому от рассматриваемой проблематики, название покажется абсурдным, ведь дизайн интерфейса как самой системы Android, так и разрабатываемых для нее приложений, ориентирован прежде всего именно на визуальную наглядность и привлекательность, что усугубляется использованием сенсорного экрана в качестве главного органа взаимодействия пользователя с устройством. Однако существует категория пользователей, волею природы или случая лишенных возможности в полной мере насладиться всеми этими прелестями. Благодаря тому, что в Android предусмотрены альтернативные, — или, лучше сказать, дополнительные, — способы взаимодействия, интерфейс и основной функционал системы отнюдь не являются принципиально недоступными для данной категории пользователей. Именно обеспечению такой доступности посвящены пункт «Специальные возможности» в меню настроек системы и входящее в ее состав приложение TalkBack. Что же касается невизуальной доступности сторонних приложений, то она варьируется от случая к случаю и порой требует от разработчика не то чтобы каких-то специальных сверхусилий, но хотя бы минимального внимания к проблеме.

Читать полностью »

Где-то я слышал, что в психотерапии существует следующая методика работы с пациентом – пациенту предлагают сесть и написать в свободной, «потоковой» форме все что накипело, волнует, будоражит сознание и, отражаясь на подсознании, не дает спать по ночам. Применительно к этому есть хорошее, нежно ласкающее слух слово – фрирайтинг.

Итак, почему я решил это написать – когда сталкиваешься с полным пренебрежением к проектированию ПО как таковому, пренебрежением к качеству и соблюдению хоть какой-нибудь методологии разработки, всегда удивляешься. Когда сталкиваешься с этим раз за разом, об этом уже хочется написать.
Читать полностью »

В статье хотелось охватить наиболее часто применяемые способы хранения данных в операционной системе Android

  1. SharedPreferences — Хранение парой ключ-значение
  2. File system file
    • CacheDir — Хранение в cache directory на файловой системе
    • ExternalStorage — Хранение файлов на внешнем хранилище
  3. SQLiteDatabase — База данных

Shared Preference
Хранение в виде ключ-значение. Подходит для хранения глобальных данных. Также можно хранить небольшие структуры, предварительно конвертированные в JSON и преобразованные в String. Для более сложных и больших по объему данных предпочтительней использовать SQLiteDatabase
Читать полностью »

Pebble: работа со статической графикой на примере создания 7-segment watchface - 1 Все приложения для часов Pebble делятся на две категории watchapp — просто приложения, и watchface — приложения «часы», которые исходя из названия являются лицом устройства. Отличие «фейсов» — отсутствие реакции на хардварные кнопки, так как «UP» и «DOWN» используются для циклического переключения между установленными watchface.
Но, наверное, в силу низкого разрешения экрана 144x168 px, найти органично вписывающийся в дизайн часов ватчфейс, который при этом выполняет основную свою функцию — отсчет времени, довольно непросто.
Как мне кажется лучше всего на таком экране смотрятся цифры в стиле семисегментных индикаторов.
Ниже, подробнее о том, как добавить в свой watchface элегантного минимализма, индивидуальности и уникальных фишек.
Итак, немного картинок, обрывков кода и в итоге ссылка на готовый проект.

Читать полностью »

В данной статье речь пойдет про получение доступа к GitHub Student Developer Pack для «нестудентов» или о несовершенстве идентификации студентов. Программа Student Developer Pack рассчитана на студентов, которые не могут себе позволить использование дорогостоящих подписок на платные сервисы для разработки. Подробнее на Хабре писали тут.
Читать полностью »

С 4 по 12 декабря 2014 года проходит беспрецедентная акция Час Кода в России. — www.coderussia.ru/

На Хабре даже об этом писали.

Час Кода в России - 1

Но сами организаторы что-то не очень хотят думать, а берут чужое (даже без указания авторства).
Это не история разоблачения, просто наблюдение.
Читать полностью »

Умные часы и фитнес-браслеты из занятных, но исключительно теоретических концептов постепенно переместились в ближайшие салоны розничных продаж портативной электроники вроде «Евросети» или «Связного». Приложив чуть больше усилий, можно стать обладателем умных очков или какого-нибудь другого устройства виртуальной реальности. Носимые гаджеты постепенно становятся достаточно обыденной вещью. Но, в то же время, практически каждый покупатель такого девайса становится своего рода объектом эксперимента: на нём новые технологии проходят обкатку. «Ранние пташки», «early technology adopters» – так зовут на западе первую волну любителей новинок. Им приходится мириться с неидеальными интерфейсами, нехваткой приложений, не вполне ясными сценариями использования. Можно ли заставить рынок как можно быстрее проскочить эту фазу и перейти в зрелое состояние, когда покупка носимого гаджета сравнится с выбором бытовой техники – простым и понятным? В свое время эту стадию довольно долго, лет 10, переживали смартфоны. Но у нас есть все основания полагать, что нынешние «детские болезни» носимых устройств будут преодолены куда быстрее.
Читать полностью »

Lock-free структуры данных. Диссекция очереди - 1
Со времени предыдущего поста из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в libcds новые алгоритмы очередей.
Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями.

Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы какой-то рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?..
Читать полностью »

Несмотря на то, что в Objective-C 2.0 присутствуют замыкания (известные как блоки), ранее эппловский API использовал их неохотно. Возможно, отчасти поэтому многие программисты под iOS с удовольствием эксплуатировали сторонние библиотеки, вроде AFNetworking, где блоки применяются повсеместно. С выходом Swift, а также добавлением новой функциональности в API, работать с замыканиями стало чрезвычайно удобно. Давайте рассмотрим, какими особенностями обладает их синтаксис в Swift, и какие трюки можно с ними «вытворять».

Используем замыкания в Swift по полной - 1

Продвигаться будем от простого к сложному, от скучного к веселому. Заранее приношу извинения за обильное использование мантр «функция», «параметр» и «Double», но из песни слов не выкинешь.
Читать полностью »

Уже достаточно давно заинтересовался темой сериализации, а если конкретно, то сериализацией объектов, хранящихся по указателю на базовый класс. Например, если мы хотим загружать интерфейс приложения из файла, то скорее всего нам придется заполнять полиморфными объектами контейнер по типу “std::vector<iWidget*>”. Возникает вопрос, как подобное реализовать. Этим я недавно решил заняться и вот что получилось.

Для начала я предположил, что нам все-таки придется унаследовать в базовом классе интерфейс iSerializable, такого вида:

class iSerializable
{
public:
    virtual void serialize (Node node) = 0;
};

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js