Обновить
256K+

Java *

Объектно-ориентированный язык программирования

184,19
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Прекрасное настоящее и светлое будущее Scala

Время на прочтение5 мин
Охват и читатели27K
image

Совсем недавно на Хабре появилась статья, которая дает не совсем верное представление о текущем положении вещей в Scala-сообществе. У читателя создается ложное впечатление о застое и загнивании в экосистеме Scala. В этой статье я хотел бы исправить это и рассказать о недавно вышедших новинках и будущих изменениях.

В мае 2016 году на конференции Scala Days в Нью-Йорке Мартином Одерски была представлена презентация, описывающая настоящее и будущее языка Scala.
Читать дальше →

Как мы придумали и сделали свою первую игру на Android. Часть 2: Уровни

Время на прочтение7 мин
Охват и читатели16K
Привет, Мир! Мы два новоиспеченных разработчика мобильных игр, бывшие одноклассники, выпускники Казанского федерального университета, Айдар и Эд, продолжаем рассказ о разработке нашей первой игры «Syncomania» на Android.

Для тех, кто только что присоединился, вкратце напомним содержание первой части:

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

В этой статье мы расскажем о работе над уровнями игры и о некоторых принципах, которых мы придерживались. Возможно, они будут полезны и вам.
Читать дальше →

Лучше в райнтайме, чем никогда: расширяем API JIRA «на лету»

Время на прочтение25 мин
Охват и читатели8.1K
Что делать, если имеющегося в приложении API для решения задачи недостаточно, а возможности оперативно провести изменения в код нет?



Последней надеждой в этой ситуации может быть применение средств пакета java.lang.instrument. Всем, кому интересно, что и как в Java можно сделать с кодом в уже запущенной VM, добро пожаловать под кат.
Читать дальше →

Маленький код для больших данных или Apache Spark за 3 дня

Время на прочтение7 мин
Охват и читатели12K
Пусть Жираф был не прав,
Но виновен не Жираф,
А тот, кто крикнул из ветвей:
«Жираф большой — ему видней!» (с)


Потребовалось оперативно разобраться с технологией Apache Spark заточенную для использования Big Data. В процессе выяснения активно использовал habrahabr, так что попробую вернуть информационный должок, поделившись приобретенным опытом.

А именно: установкой системы с нуля, настройкой и собственно программированием кода решающего задачу обработки данных для создания модели, вычисляющей вероятность банкротства клиента банка по набору таких признаков как сумма кредита, ставка и т.д.

Больших данных вроде как должно быть много, но почему-то не просто найти то злачное место, где их все щупают. Сначала попробовал вариант с ambari, но на моей Window7 валились ошибки настроек сетевого моста. В итоге прокатил вариант с преднастроенной виртуальной машиной от Cloudera (CDH). Просто устанавливаем VirtualBox, запускаем скачанный файл, указываем основные параметры (память, место) и через 5 минут достопочтенный джин Apache Hadoop жаждет ваших указаний.

Несколько слов, почему именно Spark. Насколько я понимаю, ключевые отличия от изначальной MapReduce в том, что данные удерживаются в памяти, вместо сброса на диск, что дает ускорение во много раз. Но, пожалуй, более важны реализации целого ряда статистических функций и удобным интерфейсом для загрузки/обработки данных.

Дальше собственно код для решения следующей задачи. Есть реально большие данные (ибо рука очень устает скролить эти 2000 строк) в формате:



Есть предположение, что дефолт как-то связан с остальными параметрами (кроме первого, к уважаемым Ивановым1…N претензий нет) и нужно построить модель линейной регрессии. Прежде чем начать, стоит оговориться, что это мой первый код на Java, сам я работаю аналитиком и вообще это мой первый запуск Eclipse, настройка Maven и т.д. Так что не стоит ждать изысканных чудес, ниже решение задачи в лоб тем способом, который почему-то заработал. Поехали:
Читать дальше →

Поезд, приходящий без опозданий: Анонс Java-конференции JPoint 2017

Время на прочтение4 мин
Охват и читатели6.5K
Садясь за эту статью, не могу избавиться от дежавю: как и прошлом году, анонс JPoint происходит на фоне ожидания релиза Java 9. Только в этот раз JPoint не четвертый, а уже пятый, и релиз был перенесен не в первый раз, а в третий.



Сегодня предлагаю поговорить о том, что нас ждет 7-8 апреля: в конце концов, с этой датой уже ничего не станет, и в ней можно быть уверенным. Сейчас мы делаем все, чтобы на JPoint 2017 участники смогли встретиться с Марком Рейнхольдом или Брайаном Гетцом, хотя и без них у нас уже есть несколько новых лиц, которые приедут на конференцию. Кто это? Смотрите под катом.

Кроме того, в тексте вы найдете ссылки на видео лучших докладов с JPoint 2016.

Анализ доклада Сергея Куксенко с JPoint 2016

Время на прочтение7 мин
Охват и читатели5.9K
Сегодня открываем новую рубрику: разбор технических выступлений. Если взять в целом удачный доклад с IT-конференции и формализовать в нём те моменты, благодаря которым он хорош, то можно многому научиться в плане выступлений. А если в том же докладе формализовать ещё и моменты, которые можно улучшить, то польза будет двойная. Тем, кто собирается выступать на конференциях, это пригодится. Да и тем, кто давно и успешно там выступает, это тоже не повредит.

Сегодня вашему вниманию предлагается доклад Сергея Walrus Куксенко на JPoint 2016: «Quantum Performance Effects II: Beyond the Core».


Слайды тут

Дисклеймер: про Java только сам доклад, если вы его ещё не видели. Статья под катом — про доклад.

JSF мертв?

Время на прочтение2 мин
Охват и читатели30K

JSF Мертв!


Именно это я услышал когда пошел пробоваться разработчиком в одну контору. Чем занимается контора — не тема топика, достаточно знать что используют они grails. На мой вопрос «а почему не JSF?» я услышал то, что услышал. Судя по последним постам о JSF на habr — истину глаголет! Нет?!
Читать дальше →

IntelliJ IDEA 2016.3: Java 8 и ES6, улучшенные отладчик и интерфейс, и многое другое

Время на прочтение5 мин
Охват и читатели28K
Привет, Хабр!

Спешу поделиться хорошей новостью. Сегодня стала доступна IntelliJ IDEA 2016.3 – очередное крупное обновление нашей (и, хочется надеяться, вашей) любимой Java IDE. Читайте ниже об основных изменениях и нововведениях.



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

Реализация гарантированной асинхронной доставки сообщений

Время на прочтение6 мин
Охват и читатели23K
Статья за авторством Александра Романова, разработчика интеграционных решений.

В процессе интеграции систем мы часто сталкиваемся с необходимостью гарантированной доставки сообщений между системами. В таких случаях на помощь нам приходят очереди. Но не все задачи так просты, как доставка сообщений из системы А в систему Б. Бывают случаи, когда нужно обогатить доставляемые сообщения данными из смежных, участвующих в интеграции систем. Которые не всегда могут интегрироваться через очереди, а имеют лишь синхронные сервисы. И вот уже в нашей интеграции возникают такие явления, как недоступность, отказы и другие «приятные» особенности использования «синхронов». Можно было бы переложить обработку промежуточных отказов на систему-источник, но это некультурно, да и невозможно, если мы публикуем события сразу для нескольких систем (в топик).
Читать дальше →

Откуда в Java всплывают проблемы с кодировками и возможная причина падения марсианского зонда

Время на прочтение7 мин
Охват и читатели64K
Планета Марс уже не первый год населена роботами. То тут, то там появляются беспилотные электрокары и летающие дроны, а в программах, написанных на Java, с завидной регулярностью всплывают проблемы с кодировками.

Хочу поделиться своими мыслями о том, почему это происходит.
Читать дальше →

Егор Бугаенко про MVC на jug.msk.ru

Время на прочтение3 мин
Охват и читатели11K
Гостем очередной встречи jug.msk.ru, состоявшейся 14 ноября 2016 года, стал Егор Бугаенко. Темой его выступления стала критика популярного шаблона проектирования MVC (Model-View-Controller).


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

Мониторинг и метрики для Play Framework при помощи Dropwizard Metrics

Время на прочтение5 мин
Охват и читатели6.9K

В какой то момент разработки приложения, каждый из нас приходит к тому, что нам нужно больше информации о том, что происходит внутри приложения или же в возможности мониторить приложение. В случае с Play Framework уже существует готовое решение в виде отличной библиотеки с открытым исходным кодом Kamon в паре с модулем kamon-play.


Но сегодня мы собираемся взглянуть на альтернативное решение, интеграцию и использование Drowizard Metrics ранее известное как Codahale Metrics с Play Framework.


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

Сигнализация для холодильника. Не жизнь, а «малина» c RaspberryPi 3

Время на прочтение11 мин
Охват и читатели21K
Запылилась за месяц у меня на полке Raspberry Pi 3 со встроенным Wi-Fi. Ресурсов процессора и объема памяти уже достаточно для запуска ресурсоемких программ. Как же быстро разработать и запустить на ней свою программу состоящую всего из одного небольшого файла с отправкой фото на почту и веб сервером мониторинга?



Соберем простую систему для охраны холодильника от незаконного проникновения с фото регистрацией и интеграцией в интернет через smtp. Устроим у себя настоящий интернет вещей на кухне!
Читать дальше →

Ближайшие события

Анонс встречи ThinkJava #4 (Харьков)

Время на прочтение2 мин
Охват и читатели3K
Приглашаем вас на очередную встречу Java-разработчиков ThinkJava #4. Спикеры нашего ThinkJava-сообщества переплыли моря и океаны, чтобы побывать на SpringOne Platform в Лас-Вегасе, и теперь готовы поделиться привезёнными знаниями и своим опытом со всеми гостями ThinkJava #4. Мы посвящаем эту встречу вопросам облачных вычислений.
Читать дальше →

Как я добавил 30000 человек в первый круг контактов, а эту соцсеть заблокируют в РФ

Время на прочтение6 мин
Охват и читатели29K
Вспоминая собеседования из своего прошлого решил «не идти в гору», а чтобы гора сама пришла ко мне, точнее кадровые сотрудники с вакансиями. Опять поиск работы и теперь на рынке где реальные доходы стали меньше, а соискателей больше…

Но тратить время на рутинные операции по поиску и добавлению профессионалов в социальной сети не хотелось. После 2000 кликов вручную критерии поиска у меня оказались формализуемые. Поэтому написал скрипт который экономит мое время и зрение. К общению с людьми я не пускаю бездушного «робота». Сам пишу и сам отвечаю.



Мне посчастливилось познакомиться и пообщался с интересными людьми из индустрии, получить сотни сообщений со спамом и ссылки на сотни вакансий. Готового скрипта здесь не будет, но в публикации есть пара фрагментов кода для магии webdriver и ссылки. Также вы узнаете последние новости про поиск работы в России и описание моего опыта по продвижению в соцсети…
Читать дальше →

Правильный полиморфный билдер на Java

Время на прочтение4 мин
Охват и читатели15K

О чем все это?


При реализации chained builder на Java все прекрасно, пока не понадобится добавить наследование. Сразу же возникают две проблемы — как сделать, чтобы методы родительского билдера возвращали объект дочернего билдера и как передавать дочерний билдер в функции, принимающие родительский. Предлагается реализация паттерна, которая позволяет решить обе проблемы. Исходники можно посмотреть здесь на гитхабе.
Читать дальше →

Как разработать приложение для автоматизации почти не умея программировать. Придется выучить IDE…

Время на прочтение5 мин
Охват и читатели19K
Хочешь создать свой проект в «железе», который перевернет мир с ног на голову? Или автоматизировать управление светом в коридоре. При этом ты не специалист в программировании микроконтроллеров, но разобрался с arduino и тем как моргать её светодиодами и только узнал о полевых транзисторах, симисторах, 1-Wire. Теперь хочешь управлять всем этим хозяйством и предоставить доступ через интернет и хранить данные в облаке.



Или ты дружишь с паяльником, гуру программирования ПЛК, снифишь PDU в modbus. Но компьютер с Windows и SCADA слишком дорог для проекта или не подходит почему-то еще… И хочется запускать программу на одноплатном компьютере Raspberry PI с доступом к ее переферии GPIO, I2C.
Читать дальше →

Декомпиляция Java-методов на продуктивном приложении под нагрузкой – миф или реальность?

Время на прочтение3 мин
Охват и читатели5.6K
Тестирование, несомненно, является одним из китов, на которых стоит разработка приложений. Как и любой характерный кит, тестирование может зафонтанировать багами и долго не останавливаться. Но главный вопрос заключается в достаточности тестового покрытия – все ли баги по написанным тест-кейсам удастся отловить? Возможно, некоторые появятся только под пользовательской нагрузкой. Для выявления оных, как правило, детонирует обращение пользователя и далее задействуется следующая цепная реакция: специалист Help Desk, вторая линия поддержки и, если повезет, сообщение о нештатной работе попадет в руки разработчика. Да, инцидент может также прийти от системы APM-мониторинга (если она у вас есть, конечно). Но все эти вещи не позволят однозначно определить, какие значения принимали переменные до возникновения исключения. В посте мы как раз поговорим о решении, призванном в помогать в подобных ситуациях.


Собрать монстров в узелок

Offensive programming: параноидальное, наступательное, атакующее или беззащитное программирование

Время на прочтение6 мин
Охват и читатели18K

Как сделать ваш код лаконичным и послушным одновременно?




Вам когда-нибудь встречалось приложение, которое вело себя очевидно странно? Ну, вы знаете, вы нажимаете на кнопку и ничего не происходит. Или экран вдруг чернеет. Или приложение впадает в «странное состояние» и вам приходится перезагружать его, чтобы все снова заработало.

Если у вас был подобный опыт, то вы вероятно стали жертвой определенной формы защитного программирования (defensive programming), которую я бы хотел назвать «параноидальное программирование». Защитник осторожный и рассудительный. Параноик испытывает страх и действует странно. В этой статье я предложу альтернативный подход: Offensive programming.

Стоит ли бояться DevOps-а современному QA

Время на прочтение8 мин
Охват и читатели19K


Вы слышали про DevOps, но слабо представляете что это такое? Может быть, вы QA-инженер и вас пугает, что спрос на вас может упасть из-за DevOps? Или вы разработчик и хотите прокачать себя и свою команду до внедрения DevOps-а, но не знаете, с чего начать? Ответы под капотом.

На вопросы отвечает Full-stack Engineer в компании ZeroTurnaround, со-ведущий русскоговорящего DevOps подкаста «Two Devs One Ops» Сергей bsideup Егоров (twitter.com/bsideup).

Сергей Егоров:

«… Деплой, изменение инфраструктуры, недостаток знаний о разных частях системы, прозрачность доставки изменений, сложность локальной разработки, “борьба с огнём” после выкатывания на боевые сервера… по каждому из них DevOps даёт ответы и рекомендации»
Читать дальше →