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

    • Перевод

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


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


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

    Читать дальше →
  • RxConnect — когда React встречает RxJS

    • Перевод

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


    Введение


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


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


    Читать дальше →
  • Pivotal прекращает разработку Groovy & Grails с 31 марта



      Bad news everyone!

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

      Релизы Groovy 2.4 и Grails 3.0 будут последними релизами под крылом Pivotal.
      Читать дальше →
    • Вы находитесь в стране, на которую распространяется эмбарго. Загрузка Java невозможна



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

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

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

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

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

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

        P.S. Хабр — не для политики, поэтому прошу избежать её обсуждения в комментариях. Спасибо.
        Читать дальше →
      • MacroGroovy — работа с AST на Groovy ещё никогда не была такой простой

          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

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

          • Tutorial


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

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


          Приглашаю всех под кат, даже если чего-либо из списка у Вас нет в наличии.
          Читать дальше →
        • Отчёт по онлайн конференции RuHaxe #1

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

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

            Под катом Вы найдёте видеозаписи каждого из четырёх выступлений, а также информацию о дальнейших планах развития конференции.
            Читать дальше →
            • +19
            • 8,1k
            • 8
          • MXML компилятор. Часть 3. Разбираемся в работе Flex-компилятора

            • Перевод

            Привет, %habra_user%!

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

            Как обычно всех, кто не устал дочитав до этой строчки — прошу под кат!
            Читать дальше →
            • +12
            • 5,8k
            • 7
          • Настраиваем SSH ключи на Node-ах Jenkins без ssh-доступа к ним

            • Tutorial


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

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

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



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

              Я хотел бы предложить Вам мой концепт того, как я это вижу. Пока, к сожалению, в теории, так как я не обладаю достаточным знанием проектирования файловых систем, но я более чем уверен, что на Хабре таких людей предостаточно, и моя цель — призвать их к конструктивной критике и обсуждению предложенной мною идеи.
              Читать дальше →
            • Потоковое онлайн 4K-видео или обратно к видеоплееру на Flash

              • Перевод


              Буквально вчера 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:)

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

              • Tutorial


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

              Если Вы сталкивались с подобной проблемой или просто интересуетесь темой шаринга одного мака с возможностью одновременной работы на нём, то прошу под кат.
              Читать дальше →
            • Observer Pattern со строгой типизацией или зачем нам нужен Objective-C++



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

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

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

                Заинтересовавшихся прошу под кат.
                Читать дальше →
              • Хитрости разработчика под iOS. Splash Screen

                Вступление


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

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

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

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

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

                Читать дальше →
              • Apache Flex выложили исходники Falcon


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

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

                  Читать дальше →
                • Поднимаем собственный Maven репозиторий Nexus на OpenShift

                    image


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

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

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

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

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

                      Читать дальше →
                      • +22
                      • 1,4k
                      • 5
                    • Добавляем в Flex-компилятор MXML параметры конструктора

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

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