Как стать автором
Обновить
46
0
Сергей Егоров @bsideup

Пользователь

Отправить сообщение

Строители против синтаксиса Java

Время на прочтение5 мин
Количество просмотров25K

Шаблон проектирования «строитель»один из самых популярных в Java.


Он простой, он помогает делать объекты неизменяемыми, и его можно генерировать инструментами вроде @Builder в Project Lombok или Immutables.


Но так ли удобен этот паттерн в Java?

Читать дальше →
Всего голосов 57: ↑52 и ↓5+47
Комментарии156

RxConnect — когда React встречает RxJS

Время на прочтение8 мин
Количество просмотров25K

Данный перевод является русскоязычной интерпретацией документации, которую я сам и написал, поэтому не стесняйтесь задавать вопросы.


Введение


Обрабатывать пользовательский ввод может быть не так просто, как кажется. Мы же не хотим отправлять запросы на сервер пока пользователь всё ещё набирает свой запрос? И, конечно же, пользователь должен всегда видеть результат на последний запрос, который он отослал.


Существуют разные способы реагирования на интерактивные события в React приложениях, и, по моему мнению, реактивный подход (благодаря таким библиотекам, как RxJS или Bacon) — один из самых лучших. Вот только для того, чтобы использовать RxJS и React одновременно, Вам придётся иметь дело с жизненным циклом React компонента, вручную управлять подписками на потоки и так далее. Хорошая новость — всё это можно делать автоматически с помощью RxConnect — библиотеки, разработанной в процессе миграции с Angular на React в ZeroTurnaround.


Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии26

Pivotal прекращает разработку Groovy & Grails с 31 марта

Время на прочтение1 мин
Количество просмотров26K


Bad news everyone!

Компания Pivotal, спонсировавшая разработку Groovy & Grails последние годы, объявила о прекращении спонсирования проектов начиная с 31 марта.

Релизы Groovy 2.4 и Grails 3.0 будут последними релизами под крылом Pivotal.
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии37

Вы находитесь в стране, на которую распространяется эмбарго. Загрузка Java невозможна

Время на прочтение1 мин
Количество просмотров153K


Привет, Хабр!

Чуть-чуть пост не дотянул до пятничного, а ведь тема достойная.

Невозможно загрузить Java(TM) на данный компьютер. Вы находитесь в стране, на которую распространяется эмбарго.

Именно такую надпись вы получите при попытке скачать JVM с java.com, находясь на территории России.

Не верите? Убедитесь сами: www.java.com/ru/download

На случай, если вам не повезло и вы не находитесь в России, то не стоит расстраиваться. Смотрите EDIT5.

P.S. Хабр — не для политики, поэтому прошу избежать её обсуждения в комментариях. Спасибо.
Читать дальше →
Всего голосов 216: ↑142 и ↓74+68
Комментарии161

MacroGroovy — работа с AST на Groovy ещё никогда не была такой простой

Время на прочтение5 мин
Количество просмотров6K
image
Последнее время часто приходится работать с такой мощной возможностью Groovy как Compile-time AST Transformations.

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

def someVariable = new ConstantExpression("someValue");
def returnStatement = new ReturnStatement(
    new ConstructorCallExpression(
        ClassHelper.make(SomeCoolClass),
        new ArgumentListExpression(someVariable)
    )
);


До боли знакомые конструкции, не правда ли? Хотите, чтобы было вот так?
def someVariable = macro { "someValue" }
def returnStatement = macro { return new SomeCoolClass($v{ someVariable }) }


Или даже так?
def constructorCall = macro { new SomeCoolClass($v{ macro { "someValue" } }) }


В данной статье речь пойдёт о моём решении этой проблемы, максимально близком к родному решению Groovy — github.com/bsideup/MacroGroovy

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии11

Haxe + OpenFL: даже моя бабушка сможет сделать игру под iOS

Время на прочтение3 мин
Количество просмотров54K


Привет, %USERNAME%! решил рассказать тебе, как, приложив минимальные усилия, начать разрабатывать на Haxe игры под iOS (на самом деле и не только, но я решил ограничить данную статью именно этой платформой).

Для этого нам понадобятся:
  1. бабушка Руки. Желательно прямые. Ещё желательней из плеч;
  2. Mac OS X;
  3. XCode;
  4. Идея для игры.


Приглашаю всех под кат, даже если чего-либо из списка у Вас нет в наличии.
Читать дальше →
Всего голосов 39: ↑33 и ↓6+27
Комментарии15

Отчёт по онлайн конференции RuHaxe #1

Время на прочтение3 мин
Количество просмотров8.4K
8 июня 2013 года прошла онлайн-конференция RuHaxe — первое событие в рунете, посвященное Haxe-платформе.

В рунете пока мало Haxe-разработчиков, но среди них есть уже достаточно заметные в мировом Haxe-комьюнити, и есть потребность в общении на родном языке, которая и стала мотивацией для организации RuHaxe. Несмотря на фактическое отсутствие рекламы, первую конференцию посмотрели 50 человек. С этого момента можно считать, что в рунете появилось пока небольшое, но активное сообщество Haxe-разработчиков.

Под катом Вы найдёте видеозаписи каждого из четырёх выступлений, а также информацию о дальнейших планах развития конференции.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии8

MXML компилятор. Часть 3. Разбираемся в работе Flex-компилятора

Время на прочтение5 мин
Количество просмотров6.1K

Привет, %habra_user%!

Решил в продолжение цикла статей о Flex-компиляторе перевести хорошую статью автора сего творения о том, какие же процессы происходят внутри компилятора при сборке приложения. Датируется она 2008м годом, но при этом в русскоязычном сообществе (да и в других особо тоже) замечена не была. А так как ближайшее время именно этот компилятор остаётся актуальным для сборки подавляющего большинства Flash-проектов, то я решил продолжить цикл статей о его расширении.

Как обычно всех, кто не устал дочитав до этой строчки — прошу под кат!
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии7

Настраиваем SSH ключи на Node-ах Jenkins без ssh-доступа к ним

Время на прочтение2 мин
Количество просмотров8K


Всем привет! Думаю у каждого, кто когда-либо настраивал Jenkins для работы с Git-ом возникала проблема генерации ключей на Node-ах.

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

Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии4

Cascade File System или размышления о файловой системы моей мечты

Время на прочтение3 мин
Количество просмотров17K


Все мы привыкли к уже давно ставшему стандартному видению файловых систем: есть точка монтирования, и дерево node-ов ростёт от неё. Это удобно, привычно всем и проверенно десятилетиями. Но что если этих точек станет несколько?

Я хотел бы предложить Вам мой концепт того, как я это вижу. Пока, к сожалению, в теории, так как я не обладаю достаточным знанием проектирования файловых систем, но я более чем уверен, что на Хабре таких людей предостаточно, и моя цель — призвать их к конструктивной критике и обсуждению предложенной мною идеи.
Читать дальше →
Всего голосов 30: ↑17 и ↓13+4
Комментарии38

Потоковое онлайн 4K-видео или обратно к видеоплееру на Flash

Время на прочтение1 мин
Количество просмотров47K


Буквально вчера Gerd Hilgemann опубликовал результат своей работы над потоковым вещанием 4K-видео. Как говорится в его оригинальной заметке (это топик-перевод, ссылка на demo внутри):
Завершил работу над живой демострацией потокового вещания видео в формате 4K (3840x2160), которая стала возможна благодаря технологии Flash, а точнее многопоточности, Stage3D и StageVideo. Повторить такое на HTML5 не удалось.
Я использовал HTTP Live Streaming (так же известный как HLS) как контейнер для потокового вещания и mpegTS для декодирования видео, который так же был реализован на Flash.

Для вещания Вам не потребуется специальный сервер, а загрузка процессора на 40% ниже, чем на YouTube!

Для обратной совместимости на мобильных устройствах видео передаётся в формате 720p и потребляет всего 1.5Мбит/c. Верьте или нет, но видео в формате 4K использует всего 3.5Мбит\с.

Пока удалось протестировать на видеокартах фирм ATI и Nvidia, а так же жду недождусь, когда мне в руки попадётся Red 4K Player (я так понимаю речь идёт об этом — прим. переводчика) и его SDK:)

Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии82

Как мы iOS приложение тестировали из-под Ubuntu

Время на прочтение4 мин
Количество просмотров26K


В компании где я работаю наступила пора корпоративов тестирования нашего iOS приложения, и т.к. мако тут только у меня, а все остальные разработчики и, что самое главное, QA работают под Ubuntu, <irony>а значит айфонов у них нет</irony>, то пришлось придумать решение проблемы и избавить себя от мук передачи личного айфона в руки тестеров.

Если Вы сталкивались с подобной проблемой или просто интересуетесь темой шаринга одного мака с возможностью одновременной работы на нём, то прошу под кат.
Читать дальше →
Всего голосов 64: ↑47 и ↓17+30
Комментарии10

Observer Pattern со строгой типизацией или зачем нам нужен Objective-C++

Время на прочтение4 мин
Количество просмотров9.2K


Уже много копий было сломанно о тему «обработка событий в Objective-C», о делегировании событий (к примеру, viewWillAppear:(BOOL)animated ), о том как это не удобно, когда надо слушать их одновременно в разных местах программы.

Я хочу предложить Вам свою реализацию шаблона Observer, который использует мощь C++0x и позволяет объявлять сигналы с жёстко типизированным списком параметров, например, вот так:
	new TLSignal<NSString *, BOOL>(self);

Т.к. мои знания С++ довольно таки скудны, то буду признателен любым советам по улучшению данного кода.

Заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 11: ↑7 и ↓4+3
Комментарии18

Хитрости разработчика под iOS. Splash Screen

Время на прочтение3 мин
Количество просмотров41K

Вступление


Приветствую, хабравчане!

В ходе разработки приложений под iOS у меня накопились некоторые хитрости, которыми я хотел бы поделиться с Вами.

Сразу предупрежу, что я стараюсь шагать в ногу со временем, поэтому примеры будут под iOS >=5.0 и использовать Storyboard и ARC, но ничего не мешает их портировать на 4.*.

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

Заинтересовавшимся — прошу под кат (Пост содержит скриншоты областей Interface Builder-а, поэтому предупреждаю о траффике).

Читать дальше →
Всего голосов 33: ↑27 и ↓6+21
Комментарии13

Apache Flex выложили исходники Falcon

Время на прочтение1 мин
Количество просмотров5K

Настал день, которого лично я ждал очень долго — в репозиториях Apache появились исходники Falcon — новым этапом эволюции flex-компилятора, разработку которого активно вели в Adobe до передачи Flex в руки краснокожих.

Что нам известно относительно Falcon:
  • Меньшее потребление памяти
  • Constant propagation — подстановка констант, избавление от dead code
  • Новый концепт проверки кода «на лету» в IDE с помощью предоставляемых (надеюсь, легковесных) механизмов, являющихся частью Falcon
  • Ускорение компиляции кода, как в инкрементальном, так и в обычном режимах
  • Мультимодульные проекты должны компилироваться заметно быстрее (если не врут, то модули теперь компилируются многопоточно, используя java.util.concurrent.IFuture<V>, что даст прирост при росте количества ядер процессора)
  • И, наконец, генерируемый Falcon код является более оптимизированным, что даёт выигрыш не только от процесса разработки, но и в финальном продукте!

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии12

Поднимаем собственный Maven репозиторий Nexus на OpenShift

Время на прочтение5 мин
Количество просмотров15K
image


Последнее время на Хабре стали появляться статьи про OpenShift, что привлекло моё внимание, ведь платформа действительно интересна и грех в ней не поковыряться, да и так совпало, что я начал задумываться найти альтернативу моему уютному Dropbox-репозиторию Maven в связи с отменой возможности иметь прямые ссылки и папки Public в целом ( пруф: habrahabr.ru/post/145864 ).

Итак, сегодня мы с Вами будем устанавливать Maven-репозиторий под управлением Nexus под собственные нужды, а Ваш покорный слуга поделится костылями знаниями, приобретёнными будучи первопроходцем в этом деле.

Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии11

MXML компилятор. Часть 2. Не строковые инициализаторы параметров

Время на прочтение4 мин
Количество просмотров1.6K
Привет, Хабр!

В предыдущей статье я провёл некий ликбез по внутренностям Flex-компилятора (по части MXML) и рассказывал, как избавить себя от проблем работы с классами в MXML, требующими параметры конструктора. Сейчас мы разберём другую сторону вопроса — установка параметров в custom-значения (к примеру, константы) без использования механизма Binding (хотя, очень похоже на него).

Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии5

Добавляем в Flex-компилятор MXML параметры конструктора

Время на прочтение6 мин
Количество просмотров3.3K
26 Апреля 2007 года. Adobe делает заявление, что Flex Framework переводят на open source. Данная новость вызвала бурю оваций среди флешеров всего мира, что появятся принципиально новые фреймворки на его основе, но дальше пары-тройки проектов это не пошло.

В то время я делал проекты с использованием Flex-а, и чем больше проекты становились, тем сильнее мне не нравилось некоторые нюансы его внутреннего устройства.
Думаю, каждому, кто работал с Flex-ом, известны его проблемы, а так же низкое качество кода как уже написанного, так и генерируемого из MXML, поэтому я решил вмешаться в этот процесс с целью навести порядок и разобраться в устройстве Flex компилятора, и начал с добавления «сахара» в MXML, стараясь сделать это как можно сильнее в духе остальных фич детища Adobe-а. Спустя два года, я принял решение поделиться своими знаниями с Вами.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии8

Информация

В рейтинге
Не участвует
Откуда
Berlin, Berlin, Германия
Дата рождения
Зарегистрирован
Активность