Pull to refresh
-6
Алексей@java3000

Администратор windows умеющий в программирование

Send message

Разработка циферблатов для Android Wear — это проще, чем кажется

Reading time3 min
Reach and readers32K
Когда возникла идея делать циферблаты для часов на Android Wear, к делу приступили без страха. Опыт разработки под «большой» андроид был, а на часиках крошечный экран и всего одна кнопка — легче лёгкого.


Читать дальше →

Расковыриваем сжатие ресурсов в Might and Magic III

Reading time7 min
Reach and readers27K
Не очень хорошо помню, как я оказался в дебаггере DOSBox, и почему я ковырялся в 16-битном ассемблере, восстанавливая функцию распаковки ресурсных файлов MM3.CC – но это было здорово. Игра у меня появилась на какой-то из последних распродаж humble bundle, а потом в сети я наткнулся на страницу Джеффа Людвига, где описывались проблемы с модификацией игры, связанные с компрессией в MM3.CC. В частности, там было написано следующее:
Оказалось, что этот алгоритм довольно сложно взломать, и пока ещё никто не научился распаковывать эти данные.

Вызов был принят. В его статье расписано, как он пытался бороться с алгоритмом. Я же распишу, как это делал я сам, и в конце дам ссылку на утилиту с открытым кодом, которая умеет не только распаковывать, но и запаковывать файл MM3.CC file.

DOS Packer


Посмотрев на MM3.EXE, я обнаружил, что это сжатый исполняемый файл DOS, с неким несжатым оверлеем, в начале которого стоит FBOV. Я ничего не знал про ДОСовские компрессоры, но я подсмотрел у Джеффа Людвига, что он использует вещь под названием “Universal Program Cracker” v1.11. Я нашёл версию 1.10 (выпущенную 25 июня 1997 года) и распаковал ехе. И мне удалось даже правильно обработать данные оверлея. И всё равно мне хотелось узнать название паковщика. Мне подсказали, что нужно использовать программу Detect It Easy, и действительно – она выдала:

EXECUTRIX-COMPRESSOR(-)[by Knowledge Dynamics Corp]
Borland TLINK(2.0)[-]


Для любителей истории могу рекомендовать старые ветки обсуждений, касающихся этого софта – от 1991 и 1995 годов:

https://groups.google.com/forum/#!topic/comp.os.msdos.programmer/QsjHLY6Kb4s
https://groups.google.com/forum/#!topic/comp.compression/IAj2-VHbtl4
Читать дальше →

Как правильно использовать исключения

Reading time6 min
Reach and readers51K
Использование исключений для контроля хода выполнения программы (flow control) — давняя тема. Я хотел бы суммировать этот топик и привести примеры правильного и неправильного использования исключений.
Читать дальше →

Зачем вообще нужны системы бизнес-аналитики

Reading time9 min
Reach and readers39K

Визуализация в бизнес-аналитике очень важна. Например, концепт этих графиков отрисован совместно с Infographer.

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

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

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

Профилирование Android-приложений на потребление аккумулятора

Reading time6 min
Reach and readers66K


Думаю, что у каждого пользователя Android рано или поздно возникает необходимость понять, какое приложение за ночь съело всю батарею притом, что телефон лежал с погашенным экраном. Участь найденного виновника не завидна: чаще всего его просто удаляют. Итак, что же сделать, чтобы наши приложения использовали аккумулятор минимально? В статье я постараюсь дать ответ на этот вопрос и рассказать о подходах к уменьшению потребления аккумулятора, которые мне доводилось использовать.
Читать дальше →

AI для «Дурака»

Reading time11 min
Reach and readers39K
Знал бы прикуп — жил бы в Сочи.

       Народная мудрость. 

Под игрока — с семака, под вистующего — с тузующего.

       Ещё одна народная мудрость. 


Похоже, в этом посте всё смешалось. "Дурак" в заголовке, преферансные поговорки в эпиграфе и КДПВ, не имеющая отношения ни к тому ни к другому. Впрочем, само понятие "джокера", к предмету сегодняшнего разговора, отношение имеет самое непосредственное.
Читать дальше →

GPS снимает стресс

Reading time4 min
Reach and readers3.7K
Полностью переработан дизайн сайта www.euler2012.com .
Для основного продукта компании — бесплатного GPS сервиса ViaLatM, выбран слоган — «GPS снимает стресс».



Почему мы выбрали такой слоган? Сервис позволяет снять ряд проблем, которые так или иначе приводят к стрессу. Например когда ждешь кого-то к себе, или ждешь известий как близкие добрались до места назначения. В этой статье описывается вариант использования сервиса для решения этой проблемы.

На сайте опубликованы:
  • Спецификация протокола ViaLatM Mobi — для взаимодействия с сервисом мобильных приложений на различных смартфонах
  • API доступа к сервису, которое позволяет разработчикам взаимодействовать с сервисом ViaLatM из других приложений и web сайтов.
Читать дальше →

Структуры данных. Неформальный гайд

Reading time6 min
Reach and readers175K


Конечно, можно быть успешным программистом и без сакрального знания структур данных, однако они совершенно незаменимы в некоторых приложениях. Например, когда нужно вычислить кратчайший путь между двумя точками на карте, или найти имя в телефонной книжке, содержащей, скажем, миллион записей. Не говоря уже о том, что структуры данных постоянно используются в спортивном программировании. Рассмотрим некоторые из них более подробно.
Читать дальше →

Пишем расширения для игры Balanced Annihilation на базе движка Spring Engine

Reading time4 min
Reach and readers7.4K
Статья предназначается для всех любителей старой-доброй Total Annihilation и ее открытой реализации в виде SpringRTS + Balanced Annihilation.

Несмотря на то, что виджет Air Screen Keeper оказался, по большому счету, бесполезной затеей, на его примере ввиду небольшого размера можно отразить основные идеи построения расширений к играм на основе движка Spring.

Итак, суть виджета (т.е. расширения) — сообщить игроку в той или иной форме о том, что т.н. воздушный экран, состоящий из множества самолетов, выполняющих команду «патруль», атакован врагом с земли. Обычно такие атаки в разгаре битвы (8 на 8 игроков) не очень заметны и можно легко прохлопать, как противник таким образом уничтожит до 70% самолетов, если отвлечься на что-то сиюминутное.

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

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


Читать дальше →

Новые критические уязвимости в Android: В чем проблема, и как защититься

Reading time4 min
Reach and readers53K


Исследователи информационной безопасности обнаружили ряд серьезных уязвимостей в одном из компонентов ядра мобильной ОС Android под названием Stagefright (библиотека для работы с файлами мультимедиа, например PDF). Первым о проблемах в компоненте Stagefright заявил исследователь из компании Zimperium Labs Джошуа Дрейк (Joshua J. Drake). Кроме того, об обнаружении серьезной уязвимости в Android заявила компания TrendMicro.
Читать дальше →

Пять способов оптимизации кода для Android 5.0 Lollipop

Reading time11 min
Reach and readers35K
Как сделать программы быстрее? Один из эффективных способов – оптимизация кода. Зная особенности платформы, для которой создаётся приложение, можно найти эффективные способы его ускорения.


Читать дальше →

Лямбда-выражения в Java, как и зачем их сериализировать?

Reading time5 min
Reach and readers24K


Механизм лямбда-выражений, представленный в Java8, стал такой фичей, которая чётко разделила код до нее и после (кажется, такое же может случится с Java9 и модульной системой, но в плохом смысле). В Java8 стало больше функциональных трюков, разнообразная обработка больших массивов данных стала значительно проще и теперь занимает куда меньше места. Однако, касательно рационального использования лямбда-выражений существует много вопросов таких как: насколько рационально часто их использовать? существенна ли потеря производительности теряется при переходе от обычного цикла в `forEach()` с лямбда-выражением и так далее. Большинство курсов (даже курс Oracle) игнорируют эти вопросы. В этом посте будет описан как раз один из, наверное, наименее популярных вопросов, но не менее интересный чем остальные:
Как работать сериализация лямбда-выражений в Java и как её можно использовать?

Читать дальше →

Увеличение времени работы от аккумулятора в Android M

Reading time8 min
Reach and readers39K


По мнению многих разработчиков, в большинстве случаев к слишком быстрому разряду аккумуляторов смартфонов приводит плохая оптимизация приложений. В мае этого года в Google прошла очередная ежегодная конференция Google I/O, на которой было анонсировано много всего интересного для разработчиков. В частности, когда речь зашла об Android M, то одной из центральных тем были именно производительность мобильных устройств и продолжительность работы от аккумулятора. Давайте взглянем на новые функции и инструменты, которые помогут пользователям и разработчикам выжать ещё больше из аккумуляторов мобильных устройств.
Читать дальше →

Назад в будущее – Декапсуляция

Reading time9 min
Reach and readers23K
image

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

Затрагиваемые вопросы:
  • Влияние программной архитектуры на потребление памяти и производительность;
  • Различия при работе в 32 и 64 битных режимах;
  • Различия между указателями и индексами массива;
  • Влияние выравнивания данных внутри классов/структур;
  • Влияние кеша процессора на производительность;
  • Оценка стоимости поддержки ООП в языках высокого уровня;
  • Признание факта необходимости учитывать низкоуровневые особенности платформы даже при разработке на языках высокого уровня.

Читать дальше →

RPC, Messaging, REST: Терминология

Reading time4 min
Reach and readers86K

RPC, Messaging, REST: Терминология



Цель данной статьи — обсудить терминологию. Статья — не о том, как и для чего, а только исключительно об использовании терминологии. Статья отражает мнение автора и не претендует на научность.

RPC, Messaging, REST- Terminology - RPC, Messaging, REST- Терминология

Вступление



Если вы работаете в области программирования распределенных систем или в интеграции систем, то большая часть изложенного здесь вам не в новинку.

Проблема возникает, когда встречаются люди, использующие разные технологии, и когда эти люди начинают технические разговоры. При этом часто возникает взаимное недопонимание, обусловленное терминологией. Я здесь попытаюсь свести воедино терминологии, используемые в разных контекстах.
Читать дальше →

Работа с архивами Zip и 7z

Reading time4 min
Reach and readers25K
В мобильной разработке бывает потребность сделать приложение для работы без интернета. Например, словарь или справочник, который будет использоваться в суровых полевых условиях. Тогда для работы приложения нужно единожды выкачать архив с данными и сохранить его у себя. Сделать это можно посредством запроса в сеть, но так же можно зашить архив с данными внутрь приложения.

Согласно требованиям Google Play, apk-файл приложения должен быть не более 50 МБ, так же можно прикрепить два файла дополнения .obb по 2 гигабайта. Механизм простой, но сложный при эксплуатации, поэтому лучше всего уложиться в 50 МБ и возрадоваться. И в этом нам помогут целых два архивных формата Zip и 7z.
Читать дальше →

Взаимодейтсвие Java и Shell-скриптов в Android

Reading time4 min
Reach and readers20K
Так сложилось, что в моём текущем проекте необходимо было реализовать выполнение shell-скриптов прямиком из кода.

Для того, чтобы войти в курс дела, советую вам прочитать эту статью: Shell-скриптинг в среде Android

В ней очень хорошо описаны возможности языка Shell, однако мне помимо самих скриптов нужно было выполнять методы Java.
Читать дальше →

Статистика способов онлайн-оплаты

Reading time1 min
Reach and readers15K
В этом посте я бы хотел поделиться результатами исследования способов оплаты, которые предпочитают пользователи при совершении покупок онлайн. Данное исследование охватило более сотни способов оплаты и тысячи сайтов, подключенных к агрегатору платежей «Единая касса» Wallet One в России. Сразу можно констатировать, что главной тенденцией 2015 года станет рост популярности онлайн-банкинга. За последний год количество покупателей, предпочитающих этот способ, возросло на 5,55%.

Наиболее востребованным способом все еще является оплата банковской картой, хотя количество транзакций, по сравнению с аналогичным периодом в 2014 году, снизилось на 5,86%. Также процент пользователей, предпочитающих расчеты электронными деньгами, уменьшился на 4,47%.

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

Процентное распределение способов онлайн-платежей за первое полугодие 2015 и 2014 г.г. соответственно представлены на графиках:


Смотреть данные за 2014 год

Поле ввода числовых значений в Android

Reading time5 min
Reach and readers36K
В этой статье я бы хотел осветить вопрос ввода пользователем чисел с заданной точностью.
Давайте посмотрим что имеется в арсенале Android и решим эту задачу.
Читать дальше →

Анализ производительности игры на WebGL при помощи about:tracing

Reading time4 min
Reach and readers8.2K
То, что не поддаётся измерению, не поддаётся и улучшению.
— Лорд Кельвин

Чтобы ускорить игры, написанные при помощи HTML5, для начала нужно определить их узкие места. Подсчёт FPS – это неплохой метод, но чтобы увидеть полную информацию, необходимо разобраться в нюансах поведения Chrome.

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

Он показывает вам всё, что делает Chrome, причём настолько детально, что сперва это даже может ошеломить. Многие функции Chrome изначально предназначены для трассировки, поэтому прямо из коробки для оценки производительности можно использовать about:tracing.

Для этого просто напишите about:tracing в адресной строке.

image

Инструмент трассировки позволяет включить запись, запустить игру на несколько секунд и посмотреть данные трассировки. Пример того, как они могут выглядеть:

image

Да, сначала выглядит запутанно.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Десктоп разработчик, Администратор серверов
Младший
From 110,000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения