Search
Write a publication
Pull to refresh
12
0
Дмитрий Масленников @DAiMor

InterSystems Senior Developer

Send message

Как запилить свой дешборд на все случаи жизни?

Reading time9 min
Views82K
В работе почти каждого человека непременно есть цифры, от которых зависит всё. Посещаемость сайта, время отклика или количество коммитов — что угодно! И если поместить эти цифры на самое видное место, они сразу становятся либо отличным способом оперативно принимать решения, либо просто наглядным инструментом мотивации. А самый лучший способ сделать это — это собственный дешборд, информационное табло, которое можно повесить на самом видном месте в офисе.


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

Ненормальное программирование в InterSystems Caché

Reading time13 min
Views6.3K
Возможно не все, кто знаком с InterSystems Caché, знают о расширениях Студии по работе с исходным кодом. На самом деле в ней можно создать свой тип исходного кода, компилировать его в интерпретируемый (INT) и объектный код, и даже в некоторых случаях обеспечить и code completion. Т.е. теоретически можно реализовать поддержку в Студии любого языка программирования, который будет исполняться СУБД не хуже Caché ObjectScript. В этой статье я опишу простой пример, как реализовать возможность писать программы на некотором подобии JavaScript в Caché Студии. Если интересно, добро пожаловать под кат.
Читать дальше →

Интересные приемы программирования на Bash

Reading time6 min
Views133K
Эти приемы были описаны во внутреннем проекте компании Google «Testing on the Toilet» (Тестируем в туалете — распространение листовок в туалетах, что бы напоминать разработчикам о тестах).
В данной статье они были пересмотрены и дополнены.
Читать дальше →

Разработка в InterSystems Caché под Linux

Reading time6 min
Views5.1K
В продолжение статьи про установку Caché на Linux опишу, какие IDE есть в арсенале разработчика на технологиях InterSystems, выбравшего Linux в качестве домашней системы. На текущий момент большого разнообразия возможностей не наблюдается, возможно потому, что официальная среда разработки Caché Studio поставляется только для семейства операционных систем Windows. Но варианты все же есть. Под катом о том, что уже доступно сейчас, и о том, чего возможно стоит ждать в будущем.
Читать дальше →

Установка InterSystems Caché и GlobalsDB на Linux

Reading time9 min
Views7.8K
Так как у тех, кто впервые устанавливает продукты InterSystems на Linux, часто возникают проблемы в процессе установки, я решил описать этот процесс. На данный момент из бесплатных версий Linux начиная с версии 2014.1 поддерживается CentOS 6.4, поэтому процесс установки буду описывать именно на этой ОС но установка, например, на Ubuntu ничем не отличается (хотя она и не является сейчас официально поддерживаемой InterSystems).

Что потребуется


Для установки InterSystems Caché, нам понадобится дистрибутив, если у вас его нет, то вы можете его скачать здесь. Однопользовательская версия, для RedHat, установщик в формате tar.gz. Для установки на Ubuntu нужно брать версию для SuSE Linux. На момент написания статьи доступна версия 2014.1.
Для установки InterSystems GlobalsDB здесь качаем версию Для RedHat, на выбор предлагается Node.js или Java, но это не важно — на скачиваемый файл это не влияет.
Читать дальше →

Овсянка, сэр! Собираем проект на InterSystems Caché с помощью Jenkins

Reading time3 min
Views4.5K
С одной стороны M-программисты настолько суровы, что любой прикладной софт пишут сами. И задача сборки проекта не должна вызвать особых затруднений. Действительно, что сложного в том, чтобы: сделать запрос к серверу контроля версий, разобрать ответ и вытащить номер ревизии, сравнить с номером ревизии загруженного кода, вызвать исполняемый файл и скачать исходники, загрузить их в базу, скомпилировать, сохранить результаты, сформировать отчет, прикрутить к этому всему web-интерфейс, добавить возможность изменения настроек, расписания, и так далее. С другой стороны – сколько времени вы на это собираетесь потратить?
Больше 5 минут?

HTML по стандартам

Reading time10 min
Views125K
Привет Хабр!

image Изначально хотел назвать статью «HTML по ГОСТ`у», но потом выяснилось что у большинства программистов не было предмета «Метрология и стандартизация» и о «стандартизации», «сертификации», «унификации» не все слышали.

В i-Free я много занимаюсь разработкой веб-приложений. А поскольку их много, они разные и работают в разных условиях, то само собой приходится задумываться о стандартизации. Есть такой проект «Пуленепробиваемый HTML5» (http://html5boilerplate.com/), в котором разработчики решили создать идеальный шаблон странички. Он мне очень нравился, и все свои проекты я начинал именно с него. Но, исправляя баг за багом, делая все новые и новые приложения, я пришел к выводу, что многого в нем не хватает. В этой статье я хотел бы рассказать о том, что обычно пропускают при написание страничек и веб-приложений и показать, чем и зачем я прокачал свой шаблон пустой странички.
Читать дальше →

Как считают звёзды? Использование InterSystems Caché eXtreme в Gaia

Reading time7 min
Views8.6K
Хочется поблагодарить 0leo, morisson и adaptun за помощь в подготовке статьи.

Инструменты звездочётов



Как вы знаете, завтра, 19 декабря 2013 года, будет запущен телескоп Gaia. Многие уже читали статью о миссии, однако мало кто знает, какую технологию разработчики Европейского Космического Агентства выбрали для обработки и хранения данных Gaia. В 2011 году в качестве кандидатов рассматривались IBM DB2, PostgreSQL, Hadoop, Cassandra и Caché (точнее – технология Caché eXtreme Event Persistence; см., напр., "Astrostatistics and Data Mining" п/ред. Луиса Мануэля Сарро (Luis Manuel Sarro), Лорана Эйе (Laurent Eyer) и Уильяма О'Маллейна (William O'Mullane), c. 111-112).
Читать дальше →

Построение RESTful web API в Caché

Reading time9 min
Views14K
В InterSystems Caché появилась поддержка REST. О том, что такое REST на Хабре уже писали и не раз. Если кратко — это паттерн построения RESTful web API, и ему присущи следующие свойства:
  • разделение клиента и сервера,
  • независимость от состояния (stateless),
  • кэшируемая и многоуровневая архитектура,
  • единый интерфейс,
  • все запросы к RESTful web API состоят из корневого URL приложения плюс частные подзапросы,
  • CRUD через HTTP — HTTP методы GET, PUT, POST, DELETE (RESTful web API).
Читать дальше →

Wireshark — приручение акулы

Reading time10 min
Views1.1M


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

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

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика (выпуск 9)

Reading time3 min
Views38K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Docpad



«Нашумевший» проект в Twitter и GitHub. По заявлению разработчиков «Docpad снимает ограничения и убирает разрыв между профессионалами и новичками. Теперь дизайнеры и разработчики могут создавать веб-сайты быстрее, чем когда-либо прежде». Docpad — это статический генератор сайтов написанный на Node.js. Он позволяет с легкостью создавать шаблоны и блоки. Работает c PHP, Ruby, CoffeeScript и др. В нем есть file wathing, live reload и самое главное «amazing plugin system». Большим плюсом является обучающее видео (хоть и на английском).
Видео: Rapid Web Development with DocPad


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

Еще один способ расширения функциональности студии Caché

Reading time37 min
Views1.9K
Приходилось встречаться с мнением, что студия Caché не вполне совершенна, в частности тем, что ее невозможно расширить. Тем не менее, это не совсем так. Существует штатный механизм шаблонов и расширений, позволяющий достраивать студию интерактивными дополнениями.
В этой статье мы коснемся еще одного способа расширения, который может помочь более эффективно управлять создаваемым кодом. В этом поможет класс интеграции студии с системой контроля версий.
Что можно сделать с помощью класса контроля версий? Во-первых, отслеживать некоторые события, происходящие в студии, такие как подключение, создание, удаление, открытие документов, а во-вторых, возможность добавлять пункты в меню, в том числе в контекстное. Через эти пункты меню можно не только выполнять код на сервере, но и создавать некоторые простые диалоги.
Попробуем сделать расширение меню студии...

DSL на JavaScript для C++ или кодгенератор — это просто!

Reading time8 min
Views8.2K
С добрым понедельником, хабровчане!

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

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

Делаем свой персональный Skype, пошаговая инструкция создания WebRTC приложения

Reading time4 min
Views139K
WebRTC

WebRTC позволяет реализовать real-time аудио/видео связь через браузер (firefox и chrome).

В этом топике я расскажу как реализовать простейшее WebRTC приложение.
Читать дальше →

Готовим web-приложение под зоопарк версий Android

Reading time9 min
Views27K
Совсем недавно и достаточно неожиданно для самого себя я оказался ответственным за разработку программки для Android. Но ни под Android, ни вообще на Java мне ранее писать не приходилось. Нужно было сделать web-приложение, вроде phonegap и прочих, которое почти полностью работает в компоненте браузера. И все это под версии 2.2 — 4.3 (SDK 8 — 18).

О некоторых выкрутасах Android и костылях под них с точки зрения человека, впервые это все увидевшего, я и хотел бы рассказать. Надеюсь, вышло без HelloWorld, «OMG! Java», и т.п.

Поворот экрана/смена ориентации
Network unreachable
Грузим локальные ресурсы
Мост между Java и JavaScript

Самое интересное с последним пунктом

Zen Reports и %XML.Writer для генерации отчётов Excel в Caché

Reading time25 min
Views6.4K
Как известно MS Excel последних версий поддерживает описание структуры документа в формате xml. Это обстоятельство позволяет создавать отчеты в Excel с помощью генерации xml-файлов. В СУБД Caché существует несколько способов создания xml. В этой статье будут рассмотрены два, возможно наиболее удобных, способа эффективной программной генерации отчетов в MS Excel: с помощью Zen Reports и с использованием класса %XML.Writer.
Читать дальше →

Делимся опытом по интеграции SSO средствами SAML 2.0

Reading time34 min
Views49K
1. Предыстория

Не смотря на то, что функция централизованного входа (Single Sign On, SSO) существует, обсуждается и применяется уже давно, на практике ее внедрение зачастую сопровождается преодолением самых различных проблем. Целью данной статьи будет показать, как реализовать простейший собственный Service Provider 1 (SP) для SAML 2.0 identity provider (idP) и с его помощью осуществить интеграции SSO в Java Web приложение.

Одним из наших последних проектов была подготовка и кластеризация портального решения для крупного университета. В рамках проекта мы столкнулись с задачей реализации (а также кластеризации) функции единой аутентификации для следующих систем:

  1. Liferay version 6.1.20-ee-ga2.
  2. Простое java web-приложение.
  3. Google apps.

Со стороны заказчика были выдвинуты основные требования построения SSO:
  1. Для построения SSO должен использоваться протокол SAML 2.0.
  2. Требуется интеграция с Jasig CAS для поддержания работы уже существующих систем.
  3. LDAP используется для проверки аутентификации пользователей.

В качестве idP решили использовать Shibboleth (http://shibboleth.net/about/index.html) как open source-систему, реализующую в полном объеме протоколы SAML 1.0 && SAML 2.0.

Сложные моменты, с которыми мы столкнулись при решении данной задачи:

  1. Отсутствие экспертизы по работе с протоколом SAML 2.0 и продуктом Shibboleth.
  2. Сырая и еще не достаточно хорошо структурированная документация по Shibboleth от производителя.
  3. Отсутствие качественных примеров по реализации Service Provider’а для интеграции SSO в свое Java Web-приложение.

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

2. Для кого предназначена статья?

Данная статья ориентирована на следующую аудиторию:
  1. Разработчики, интегрирующие функцию SSO в своих проектах средствами SAML 2.0.
  2. Java-Разработчики, которым нужен практический пример интеграции в свое приложение функции SSO средствами SAML 2.0.
  3. Java-Разработчики, которые хотят опробовать в качестве SSO Identity Provider’а (idP) компонент Shibboleth.

Для понимания статьи рекомендуется иметь минимальные знания по протоколу SAML 2.0.

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

Сниппеты для Chrome DevTools

Reading time5 min
Views32K
Возможности встроенного в браузер инструмента Chrome Developer Tools можно расширить с помощью сниппетов. Это ускоряет разработку и упрощает рабочий процесс. Хорошая коллекция сниппетов есть на GitHub'е.

Сниппеты в Google Chrome


Подробно о функциях сниппетов можно почитать в официальной документации Chrome. А вот краткая инструкция:

  1. Зайти в «chrome://flags» — Отметить «Enable Developer Tools experiments».
  2. Открыть DevTools: «Settings» — «Developer Tools Experiments» — Отметить «Snippets support».
  3. После перезагрузки во вкладке DevTools «Sources» появится «Snippets», где можно управлять сниппетами:

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

HTML 5 Notifications API

Reading time3 min
Views118K

Привет, Хабр. В этой статье я расскажу о HTML Notification API.

Какие возможности предоставляет Notification API


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

Поддержка в браузерах


  • Safari 6
  • Chrome 27
  • Firefox 22

Opera 15 beta не работает с Notifications API, несмотря на наличие конструктора Notification.
На мобильных платформах технология не работает.
В движке webkit есть старая нотация в виде webkitNotifications.

Как это работает


Цикл работы следующий:
  1. Получить разрешение на отправку;
  2. Правило фиксируется для сайта;
  3. Отправить уведомление.

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

DoS эксплоит для движка WebKit

Reading time1 min
Views146K
Определенная последовательность арабских символов позволяет вызвать критическую ошибку, приводящую к аварийному завершению любого приложения использующего движок WebKit в iOS и Mac OS.

Уязвимость воспроизводится на Mac OS 10.8 (Mountain Lion) и iOS 6. Версии iOS <6 и 7 beta, Mac OS <10.8 и 10.9 beta не подвержены проблеме.

Ссылка на эксплоит: https://zhovner.com/tmp/killwebkit.html

Уязвимость можно воспроизвести:
  • Отправив sms на iPhone — при этом происходит респринг и больше нельзя зайти в приложение «Сообщения». Исправить можно так habrahabr.ru/post/191654/#comment_6658802
  • Отправив сообщение через iMessage на iOS или десктопный Messages в Mac OS — приложение завершится и более в него нельзя будет зайти.
  • Открыв страницу содержащую строку — мобильный Safari в iOS просто закроется. При этом, если не удалить историю посещений, зайти повторно в него не получится. Десктопный Safari ведет себя так же. Десктопный Chrome завершит процесс вкладки показав сообщение об ошибке, сам браузер продолжит работать. Новая Opera и Яндекс.Браузер ведут себя аналогично Хрому.
  • Поместив строку в название WiFi-сети (ESSID) — во время сканирования сетей это должно вызвать ошибку. Метод описан на news.ycombinator.com и мною не проверялся: news.ycombinator.com/item?id=6293824


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

Information

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