Стаття про реалізацію патерну Builder з перевіркою на рівні компіляції, реалізованого за допомогою параметричного поліморфізму. У ній ми поговоримо про те, що таке поліморфізм, яким він буває. Як влаштована магія «оператора» = = у scala, можна повторити її в java і, використовуючи ці знання реалізувати Builder, не допускає неповної ініціалізації створюваного об'єкта.

Читати далі →

Програмне створення NinePatchDrawable

У новому Android Lollipop з'явився такий цікавий компонент як VectorDrawable. Якщо використовувати його з розумом, можна значно знизити обсяг програми, заощадивши на графічних ресурсах, плюс, використання векторної графіки звільняє нас від клопітного процесу створення зображень під різні щільності екрану. Перша думка, яка мене відвідала, коли я побачив VectorDrawable, була: “Ух ти! А його можна тягнути NinePatch?". Виявилося неможливо. Тут можна було б трохи засмутитися і задовольнятися тим, що хоча б іконки можна у векторі тримати. Однак, я на цьому вирішив не зупинятися. В результаті вийшла універсальна утиліта, яка з будь-якого Drawable здатна зробити NinePatchDrawable.



Зображення, яке ви бачите, використовується вектор, але він розтягнутий по центру. І це дивно! Можливість розтягувати вектор лише в певних областях надає воістину колосальні можливості. А якщо врахувати, що є проекти дозволяє використовувати вектор на більш ранніх версіях андроїда, векторні зображення починають показувати себе у всій своїй красі.

Читати далі →

Елегантний Builder на Java

Напевно більшість скільки-небудь досвідчених програмістів знайомі з паттерном Builder. Він дозволяє зробити ініціалізацію структур даних більш наочною, гнучкою при цьому зберігаючи таке корисне їх властивість як незмінюваність (immutability). Ось класичний приклад з першої сторінки видачі гугла на запит «java builder pattern example». При всіх своїх перевагах, самий головний недолік даної реалізації патерну — в два рази більше коду, в порівнянні із звичайним плоским біном. Якщо генерація цього додаткового коду не проблема для будь-якої популярної IDE, то редагувати такий клас стає досить утомливо і читабельність страждає в будь-якому випадку.

Читати далі →

Бібліотека Android Data Processor для легкого побудови REST запитів і їх обробки

    У повсякденній роботі постійно стикаюся з розробкою додатків використовують REST сервіси. Існуючі бібліотеки допомагають у побудові запитів і їх обробку не надто мене влаштовували по ряду причин. Виникла думка про створення простого інструменту на зразок Universal Image Loader дозволяє швидко будувати запити і парсити отримані дані. В результаті з'явився Android Data Processor
 
Процесор даних призначений для виконання REST запитів до сервісів або локально до файлів.
Запити можуть виполнятьс синхронно або асинхронно. Процесор не містить парсерів. Для обробки результатів ви використовуєте свої улюблені парсери даних і передаєте їм отримані дані у вигляді InputStream, String, JSONObject.
 
Читати далі →

Новий drag-and-drop конструктор сайтів для Bootstrap 3.1.1

    Близько 4 років я займаюся розробкою html — шаблонів як фрі-лансер і для продажу на Маркетплейс. Bootstrap став використовувати відразу ж, як він з'явився. Перепробував всі можливі drag-and-drop конструктори і платні і безкоштовні, зробив висновок, що писати код руками швидше. Щоб змінити небудь клас потрібно зайти в якісь меню, суб-меню, багато речей інтуїтивно незрозумілі (имхо), drag-and-drop не скрізь зручно реалізований.
Найбільше сподобався безкоштовний конструктор layoutIt!, Але в ньому було недостатньо функціоналу. Тому було вирішено створити власний конструктор, взявши кращі концепції і додавши функції, які необхідні мені як розробнику html-шаблонів.
Розробка зайняла близько 6 місяців. Зараз відкрито безкоштовне бета тестування за адресою www.frontenda.com / snipped
Поки тільки англомовна локалізація. У найближчий місяць планується переклад на російську мову.
 
Читати далі →