Раніше в цій серії статей ми розглянули реалізацію VectorDrawable, изпользуя дані під тегом path в SVG. А після застосували кілька простих анімацій до окремих елементів path.

Romain Guy написав додаток, яке малює маршрути. Він використовував SVG path, щоб визначити маршрут, а потім по цьому маршруту «малював» лінію шляхом регулювання параметра dash.

Так як VectorDrawable підтримує дані SVG з тега path, чи можемо ми використовувати ту ж техніку? Звичайно можемо. Але, насправді, нам це не потрібно. Ми можемо досягти того ж ефекту, маніпулюючи деякими атрибутами елемента в нашому VectorDrawable.

Читати далі →

Як я розбирав docx з допомогою XSLT

Завдання обробки документів у форматі docx, а також таблиць xlsx і презентацій pptx є досить нетривіальною. У цій статті розповім як навчитися парсити, створювати і обробляти такі документи використовуючи тільки XSLT і ZIP архіватор.
Читати далі →

Simple XML Framework — пишемо API для роботи з діаграмами DIA

Simple Xml FrameworkDia Diagram Editor  Dia Diagram Editor

Фреймфорк Simple XML — відомий багатьом, при своїй простоті, він здатний потягатися можливостями з великим «интерпрайзным» JAXB, і при цьому сумісний з Android.

Статей щодо його використання не «навалом», але вистачає. Фреймфорк згадувався на Хабре, з прикладами, зрештою, на офіційному сайті є хороші приклади
керівництво.

У загальному і цілому, як використовувати фреймворк ясно. Але буває, зустрічаються структури, для яких вже не вистачає методів, описаних в мануалах і туториалах. Саме таку структуру XML я виявив, коли почав розбиратися в тому, як DIA зберігає свої діаграми.

У даній статті буде розказано про те, як навчити Simple Framework працювати в такій ситуації. Ми створимо власну «стратегію» для Simple Framework; ми отнаследуемся від класу TreeStrategy і опишемо «хитру логіку» того, як треба зіставляти елементи xml-файлу DIA до Java класів.

І так, я припускаю, що читач знайомий з основами використання Simple XML Framework.

Читати далі →

Рецепти. Установка на сервери в VMmanager і DCImanager



Погодьтеся, приємно отримати сервер вже готовий до виконання завдань. Встановлений ISPmanager дозволить відразу приступити до розміщення сайту. Teamspeak – організувати тренування по WoT без витрати часу на інсталяцію.
Провайдери за рахунок цього підвищують дохід. Сьогодні вони пропонують не просто машини з чистою ОС, а бухгалтерські, торгові, ігрові сервери. «Передпродажна підготовка» підвищує лояльність клієнтів і зменшує навантаження на техпідтримку.

Спочатку в наших продуктах це було реалізовано за допомогою установки потрібних пакетів через Шаблон ОС. Проблема в тому, що шаблони вимагають значних витрат на створення, підтримку і актуалізацію. Все ускладнюється, коли клієнт просить зробити попередню непопулярного набору пакетів. Приміром, BigBlueButton, платформи для проведення вебінарів. Користувач замовляє VDS і проводить відеоконференції, але тільки раз в 3 місяці. Він не хоче витрачати по 30 хвилин на інсталяцію ПЗ при кожному замовленні виділеного сервера. Провайдеру ж подібні запити не завжди цікаві. Вузькоспеціалізований шаблон деколи тягне невиправдані витрати.
Під катом ми розповімо про те, як вирішити такі проблеми за допомогою рецептів — скриптів, які виконують автоматичну установку ПО VMmanager і DCImanager.


Читати далі →

Розробка динамічних REST-сервісів на документо-орієнтованої БД Bagri

Не так давно, переглядаючи стрічку CNews, натрапив на анонс конференції "ІТ в охороні здоров'я: в очікуванні прориву". Виявляється, «починаючи з 2011 р. в Росії реалізується масштабний державний проект по впровадженню Єдиної державної інформаційної системи у сфері охорони здоров'я (ЕГИСЗ)». Заглибившись трохи в матеріал виявив, що ЕГИЗС базується на широко використовуються на заході стандарти організації Health Language 7 (далі HL7). А в основі стандартів HL7 лежить XML. З'явилося бажання побудувати прототип системи, обробної документи HL7, на БД документної Bagri, якщо прототип вийде вдалим, підготувати доповідь про нього на конференцію.

image

Читати далі →

Ваша мова програмування — відстій

1 Чому JavaScript відстій
• 1.1 Погана конструкція
• 1.2 Система типів
• 1.3 Погані функції
• 1.4 Відсутні функції
• 1.5 DOM
2 Чому Lua відстій
3 Чому PHP відстій
• 3.1 Виправлено в підтримуваних в даний час версіях
4 Чому Perl 5 відстій
5 Чому Python відстій
• 5.1 Виправлено в Python 3
6 Чому Ruby відстій
7 Чому Flex/ActionScript відстій
8 Чому скриптові мови відстій
9 Чому C відстій
10 Чому C++ відстій
11 Чому .NET відстій
12 Чому C# відстій
13 Чому VB.NET відстій
15 Чому Objective-C відстій
16 Чому Java відстій
• 16.1 Синтаксис
• 16.2 Виправлено в Java 7 (2011)
• 16.3 Бібліотека
• 16.4 Обговорення
17 Чому Backbase відстій
18 Чому XML відстій
19 Чому відстій XSLT/XPath
20 Чому CSS відстій
• 20.1 Виправлено в CSS3
21 Чому Scala відстій
22 Чому Haskell відстій
23 Чому Closure відстій
24 Чому Go відстій
• 24.1 Базові засоби програмування (базовий мова)
• 24.2 Взаємосумісність
• 24.3 Стандартна бібліотека
• 24.4 Набір інструментальних засобів
• 24.5 Співтовариство
25 Чому Rust відстій
• 25.1 Безпека
• 25.2 Синтаксис
• 25.3 Конструкція API і система типів
• 25.4 Співтовариство
• 25.5 Набір інструментальних засобів

Чому JavaScript відстій

Врахуйте, що деякі положення відносяться не до самого JavaScript, а до програмних інтерфейсів веб-додатків (https://developer.mozilla.org/en/docs/Web/API).

Погана конструкція
• Кожен скрипт виконується в єдиному глобальному простір імен, доступ до якого можливий в браузерах з віконним об'єктом.
• Camel-регістр нікуди не годиться:

XMLHttpRequest
 
HTMLHRElement


Читати далі →

Qt / QML REST Client

Побачив сьогодні у стрічці статті і згадав, що хотів адже про свій проект пару рядків на Хабр написати.

Загалом, якийсь час я працював техлидом з програмістами iOS/Android, які багато використовували в своєму коді API на Django/Yii2/проприетарщине. І подивившись збоку на інструменти, наявні для роботи з REST API, я вирішив щось подібне додати і в Qt, т. к. нормальних коштів по роботі з REST з використанням Qt моделей не існувало.

Сказано — зроблено. На картинці нижче отримана в результаті схема, а під нею, власне опис ідеї, архітектури та коротка інструкція по використанню.

image

Читати далі →

Розробка на базі фреймворку COREmanager. Наші партнери створювали рішення для аутсорсингу техпідтримки



Якщо хтось вирішив почати свою справу і хоче надавати віртуальний хостинг, запустити онлайн-сервіс з продажу квітів або каву по франшизі, є безліч готових інструментів для організації роботи. З іншого боку, якщо запустити якийсь бізнес просто, треба бути готовим до великої кількості конкурентів в цій сфері. Ймовірність «прогоріти» підвищується.
Якщо ж заходити в якусь мало освоєну область, де конкуренція менше, готових інструментів для автоматизації завдань може і не бути. Так, перший час можна все робити вручну, проте коли кількість клієнтів зросте, доведеться серйозно замислитися над оптимізацією процесів.

При розробці засоби автоматизації можна використовувати фреймворк COREmanager як основу, кістяк, продукту. Це скоротить витрачений на кодування час, а також дозволить застосувати різні мови програмування для реалізації різних функцій.

Під катом — подробиці розробки системи для аутсорс-техпідтримки компанією ISPlicense.


Читати далі →

React'ивные Panel'і

Що таке панель? Це досить простий компонент, який розбиває видиму область на 2-3 блоку:
  • Шапка. В шапку зазвичай виводиться заголовок і якісь (зазвичай навігаційні елементи правління.
  • Тіло. В тіло панелі виводиться виводиться довільне вміст. Часто цей блок робиться скроллируемым, щоб шапка не йшла з поля зору.
  • Підвал. Опціональний блок. Сюди зазвичай виводять загальну вмісту панелі інформацію та елементи управління.
Не дивлячись на уявну простоту, реалізації зазвичай не такі вже й прості. Пов'язано це з тим, що варіантів його використання безліч.
В шапці може бути, а може не бути:
  • Заголовок. Додатково у нього може бути підзаголовок.
  • Хлібні крихти. Вони можуть бути частиною заголовка, а можуть — підзаголовка.
  • Навігаційні посилання. Такі як "тому", "наступний" і тп.
  • Кнопки. Такі як "відкрити фільтри", "переключити прапор", "закрити вікно" та інші.
Коротше кажучи, в шапці може бути майже що завгодно. У тілі ж, безумовно, повинна бути можливість виводити вміст. У підвалі вміст так само може бути довільним.
Виходить, що у панелі має бути мінімум 3 параметри, які беруть "складне вміст", тобто таке, яке не є плоским текстом, а містить ієрархію вкладених блоків.
Далі йде огляд тих готових рішень, які можна знайти в гуглі. Для кожного вказано розмір реалізації в рядках коду (CLOS). Плюс бонус в кінці, для тих, хто добереться ;-)
Читати далі →