
Java *
Объектно-ориентированный язык программирования
Курс Algorithms от Coursera (4-6 недели обучения)
Тех кто не знает структуру курса, прошу в первую статью, там я расписал, как проходит работа. Здесь я расскажу о программе заключительных 3 недель обучения и о финальном экзамене.
Транзакции в MongoDB
MongoDB — замечательная база данных, которая становится все популярнее в последнее время. Все больше людей с SQL опытом начинают её использовать, и один и первых вопросов, который у них возникает: MongoDB transactions?. Если поверить ответам со stackoverflow, то все плохо.
MongoDB doesn't support complex multi-document transactions. If that is something you absolutely need it probably isn't a great fit for you.
If transactions are required, perhaps NoSQL is not for you. Time to go back to ACID relational databases.
Но мы не поверим и реализуем транзакции (ACID*) основанные на MVCC. Ниже будет рассказ о том, как эти транзакции работают, а тем, кому не терпится посмотреть код — добро пожаловать на GitHub (осторожно, java).MongoDB does a lot of things well, but transactions is not one of those things.
Пост не о MongoDB, а о том, как использовать compare-and-set для создания транзакций, а durability обеспчивается ровно в той степени, в которой её обеспечивает хранилище.
О том как я на Java из PDF флэш получал

Давным давно, когда трава была зеленее,
Как задачу понял архитектор
Дано: есть
Попытка решения: написали плееры на флэше и на javascript, которым скармливается этот преобразованный каталог, и они разными красочными эффектами по определенному алгоритму крутят нечто рекламное.
Проблема: каталоги постоянно меняются, а конвертация только одного гроссбуха из каталога занимает больше часа(!).
Почему так и как улучшить?
«Java-Оскар» нашел своего нового обладателя

Doppio — JVM, Компилятор и дизассемблер в JavaScript

Разбираем email в Java
В наличии имеются:
Почтовый сервер Postfix со службой доставки Dovecot на CentOS. Ну и JVM.
Структура сообщений
Что такое электронное письмо, его составные части, их примерная структура, заголовки и MIME типы по-человечески описано на википедии.
Более интересной является структура имени
1348142977.M852516P31269.mail.example.com,S=3309,W=3371
Какой Java поток нагружает мой процессор
С целью тестирования мы будем использовать простую программу:
Как запускать DBDeploy в Gradle

В данной заметке я покажу, как запускать DBDeploy из скрипта Gradle.

О чём это вообще?
Возможно, вы уже слышали о версионированной миграции структуры баз данных. Об этом писали на хабре. DBDeploy — один из самых простых и известных инструментов, позволяющий легко установить все последние изменения в базе данных на любом инстансе и любой девелоперской машине. А Gradle — модный ныне инструмент для сборки проекта (как Ant и Maven, только лучше). О нём тоже уже писали.
И в чём вопрос?
Вопрос в том, как запускать DBDeploy из скрипта Gradle? У DBDeploy есть таски для Ant и плагин для Maven, но пока ещё нет плагина для DBdeploy (точнее, он в зачаточном состоянии). Немного потыркавшись, я пришёл к выводу, что самый простой способ — это использовать тот самый Ant таск DBDeploy из скрипта Gradle (здесь описано, как из gradle-скрипта использовать любые Ant-таски). Рассмотрим пример.
Во Львове просят предоставить Java статус регионального языка *

Мов парость виноградної лози,
Плекайте Java пильно й ненастанно!
Несмотря на то, что эта новость лежит в плоскости юмора (и отчасти даже политической сатиры), нельзя обойти её вниманием. Я взялся собрать воедино и перевести часть из этих весёлых материалов которые сегодня гуляют по UAнету.
Собственный Security Realm в GlassFish
Новые источники данных для Teiid, часть 1: используем DDL
Штатно Teiid поддерживает многие источники данных, например, Oracle, DB2, M$ SQL Server, MySQL, PostgreSQL, SalesForce, но, вместе с тем, предоставляет также и удобные инструменты для работы с web-сервисами, XML, JSON. На базе этого инструментария можно легко построить доступ к несложному источнику данных (например, делать запросы в twitter, в поставке Teiid есть готовый пример), и обойтись при этом только DDL-описанием. Но для чего-либо посложнее уже требуется писать код.
«Умный дом» собственными руками v2
Судя по предыдущим постам, многие из вас интересуются hand-made автоматизацей своего жилища. Я долго собирался с мыслями и идеями по итогам построения первого «умного дома» и теперь хочу поделиться своими наработками с вами.
Ближайшие события
Вышел Kotlin M3
Наш язык программирования неуклонно развивается: мы выпустили Kotlin M3 — большой milestone, в который вошло много интересного: от обновления домашней страницы до поддержки режима скриптов. А еще наша команда начала активный «догфудинг»: в ближайшее время все больше кода в проекте Kotlin будет писаться на Kotlin.В этом посте я кратко опишу две наиболее интересные вещи, которые были сделаны в M3: мульти-декларации и «расщепление» интерфейсов коллекций.
Аппаратный блок сигнализации и умного дома с wifi/ethernet и 2 x usb host

С учетом реальной цены в России на Raspberry Pi, выбор сделан в пользу MIPS платформы.
Возможность разрабатывать ПО на java, C/C++, lua, python, perl, php, ruby, shell скриптах — языках поддерживаемых openwrt. Разработка для платы ввода/вывода используя arduino подобную среду разработки maple или eclipse
Похоже есть раздолье, для разработчиков и порог вхождения невысокий — не требуется знание ассемблера и RTOS для быстрого старта.
В ответ на вопрос почему доступ к элементу массива быстрее чем доступ к полям объекта
В комментарии к его посту я упомянул, что если важна производительность, то можно заменить объект-обертку на одно-элементный массив, доступ к элементу массива по определению быстрее чем извлечение значения из instance field.
Этот стереотип мне достался в наследство от Sun после прочтения очередного performance white paper. Там было написано что быстрее всего происходит доступ к локальной переменной, следом идет статический филд, потом элемент массива и замыкает этот список instance field.
К счастью на слово мне не поверили и это послужило поводом для написания этой статьи.
Статья не расчитана на джуниоров, читатель должен знать Java, ASM x86 и байткод.
Scripting Java с помощью JSR 223 — пример написания template engine в 20 строк из личного опыта
Изменяемые числовые объекты
Курс Algorithms от Coursera (1-3 недели обучения)
Поднимаем собственный git сервер GitBlit на хостинге Openshift

Привет, Хабр!
Все программисты делятся на тех, кто использует систему контроля версий, и тех кто ещё ёё не использует. Одной из самых популярных на сегодняшний день, является git. И хотя его структура направлена на децентрализованное хранение данных, все мы пользуемся github, assembla, bitbucket или githost. Главный недостаток этих хостингов, в том, что это чужие проекты, которые в любой момент могут прикрыть ваш аккаунт или слить данные налево. И тут на сцене появляется GitBlit! Git сервер на Java, полностью контролируемый вами, с множеством плюшек и веб-интерфейсом. Сегодня будем запускать его на бесплатном хостинге от Redhat.