Обновить
128K+

Java *

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

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

Создание приложения под Android или проект без названия

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

Предыстория


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

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

Именно с этого момента зародился проект, которому я не придумал название.
Читать дальше →

Выбор и настройка Garbage Collector для Highload системы в Hotspot JVM

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


Введение


При работе в сфере RTB (Real Time Bidding) одной из ключевых характеристик является время, затраченное на показ рекламы пользователю, зашедшему на сайт. Оно складывается из нескольких этапов, один из которых – аукцион за рекламное место, проводимый SSP (Supply Side Platform) между несколькими DSP (Demand Side Platform) системами. В этом случае критической величиной является время, за которое DSP успеет ответить своим инвентарем и денежной ставкой за данный показ. Как правило, верхняя граница этого времени составляет примерно 100 миллисекунд. С учетом того, что для оптимальной производительности рекламных кампаний требуется десятки тысяч запросов в секунду, выполнение данного требования может стать весьма нетривиальной задачей.
Читать дальше →

Внедрение зависимостей в CDI. Часть 3

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

Если вы следите за этим блогом, то помните, что в последнее время я пишу (и говорю) о CDI (Contexts and Dependency Injection). У CDI много аспектов, но до сих пор я акцентировал внимание на том, как начать работу с CDI в вашем окружении и как интегрировать CDI в существующее Java EE 6 приложение, а затем сфокусировался на внедрении зависимостей в CDI. Это уже третий пост про внедрение в CDI: в первом я рассказывал о внедрении по умолчанию и спецификаторах, во второй о всех возможных точках внедрения (поле, конструктор, сеттер). В этом посте я расскажу о продюсерах или "как вы можете типобезопасным способом внедрять что угодно и куда угодно".


COFFEE_BEANS

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

Внедрение зависимостей в CDI. Часть 2

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

Это второй пост о внедрении зависимостей в CDI (Часть 1) после нашего разговора о том, как начать работу с CDI в вашем окружении и как интегрировать CDI в существующее Java EE 6 приложение. В этом посте я хочу рассказать о различных точках внедрения в CDI: поле, конструктор и сеттер. Для этого я буду использовать часть предыдущего примера: внедрение POJO генератора ISBN в сервлет.


COFFEE_BEANS

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

Внедрение зависимостей в CDI. Часть 1

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

После статьи о том, как начать работу с CDI в вашем окружении и нескольких советов о том, как интегрировать CDI в существующее Java EE 6 приложение, я хочу поговорить о внедрении зависимостей. Да, о простом внедрении или о том, как провести внедрение одного бина в другой. Из этой серии трех статей (Часть 2, Часть 3) вы увидите, что есть множество различных способов: давайте начнем с самого простого — обыкновенного внедрения.


COFFEE_BEANS

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

Опыт использования Liferay Portal в eСommerce

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


Многие из нас уже не раз писали разного рода магазины. Но большие e-commerce проекты в быстро растущей и развивающейся компании разрабатывать приходится нечасто. К таким решениям предъявляются дополнительные требования, такие как конфигурируемость, адаптивность к изменениям, возможности встраивания в другие системы и прочее. Для написания такого решения компания Netcracker использовала Liferay Portal фреймворк. В итоге получили достаточно преимуществ, но и без проблем не обошлось.
Подробнее под катом

Немного о Stream API(Java 8)

Время на прочтение6 мин
Охват и читатели116K
Небольшая статья с примерами использования Stream API в Java8, которая, надеюсь, поможет начинающим пользователям освоить и использовать функционал.


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

Как я разрабатывал транслятор языков разметки

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

Эта история началась в далеком 2008 году. В одном из моих проектов для противодействия XSS-атакам я решил использовать BB-коды и начал искать подходящие библиотеки на Java. Хорошенько погуглив, я так ничего ничего и не нашел. Конечно, тогда было и сейчас есть много библиотек для трансляции BB-кодов в HTML, но все они меня не устраивали по одному критерию — невозможность добавлять или удалять тэги. Вспомнив курс "Языки программирования и методы трансляции" (польза от классического образования!) я принялся за реализацию своей собственной библиотеки для парсинга BB-кодов. В результате появился мой самый долгоживущий проект KefirBB.

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

Опыт автоматизации тестирования стабильности работы сервера RTLS под внутренней нагрузкой

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

Введение.


В данной статье я расскажу о том, как в отделе контроля качества компании RTL-Service происходит автоматизированное тестирование стабильности сервера RealTrac при одновременном обслуживании большого количества мобильных локационных устройств. Для дальнейшего понимания, предлагаю ознакомиться с полезной терминологией:
RTLS-cервер RealTrac (сервер) — серверное программное обеспечение системы RealTrac, осуществляющее взаимодействие с аппаратными средствами системы и расчет местоположения устройств.

Сервер приложений RealTrac (сервер приложений) — серверное программное обеспечение, необходимое для работы web-приложения, предоставляющее программный интерфейс доступа к основным функциям системы.

Точка доступа RealTrac (далее ТД) — устройство, предназначенное для передачи данных между мобильными устройствами сети и сервером системы. Точки доступа стационарно устанавливаются на объекте, их координаты заносятся на карту клиентского программного обеспечения и фиксируются в базе данных на сервере системы. ТД может работать в режиме шлюза или ретранслятора. Режим определяется наличием проводного Ethernet подключения к сети (шлюз точка доступа, ШТД) и отсутствием такового (ретранслятор точка доступа, РТД). Обмен данными с сервером осуществляют только шлюз.
Читать дальше →

Как нам помог Docker в написании тестов

Время на прочтение4 мин
Охват и читатели14K
Чтобы показывать вам рекламу — мы в GetIntent должны быть уверены в устойчивой и безотказной работе нашей рекламной платформы. Надежность системы складывается из многих компонентов: тип используемого железа, системная/сетевая конфигурация и архитектура приложения. Внесение изменений в достаточно сложные, распределенные приложения всегда несет в себе риск.
Разработчики со своей стороны пытаются минимизировать эти риски и пишут тесты: unit и интеграционные. Написание unit тестов обычно не составляет каких-либо трудностей. С интеграционными тестами, в зависимости от их изощренности, ситуация сложнее.


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

Реверсинг Android клиента музыкального сервиса Zaycev.net и имплементация api на go

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

Строго говоря, к реверсингу данную статью можно отнести только с натяжкой.


Всем вам знаком такой сервис как zaycev.net. Не ошибусь, предположив, что каждый хоть раз качал с него музыку, либо через web-интерфейс, либо через мобильное приложение.


По просьбе со стороны представителей сервиса заменил в публикации константы, при желании вы можете их запросить.


Если вам все же интересно, добро пожаловать под кат.

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

JPoint Student Day: зачем конференции «студенческий день»?

Время на прочтение6 мин
Охват и читатели4.4K
Решение дополнить JPoint 2016 «молодёжным» днём (с возрастным ограничением в 25 лет) могло вызывать вопрос «зачем вообще это нужно». То, что основная «взрослая» часть прошла с размахом, неудивительно: на ней специалисты рассказывают о нюансах, которые не нагуглишь за три минуты. Но начинающих разработчиков, до этих нюансов ещё не дошедших, интересуют куда более базовые вещи, многие из которых были уже тысячу раз описаны. Зачем вообще тогда мероприятие, если можно дома пользоваться Stack Overflow? Что оно откроет людям, которые и так получают профильное образование? И что может дать один день тем, кому требуются ещё многие месяцы практики? Под катом — подробный рассказ о том, как прошёл Student Day, отвечающий на эти вопросы.



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

Статический анализатор HuntBugs: проверяем IntelliJ IDEA

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

Как многие помнят, некоторое время я развивал статический анализатор Java-байткода FindBugs. Однако проблем в FindBugs накопилось столько, что я решил, что будет проще написать новый анализатор байткода. Я не очень творчески назвал его HuntBugs. Разработка ведётся на GitHub. Он пока в ранней стадии разработки, иногда глючит и покрывает примерно 35% диагностик из FindBugs, но при этом добавляет свои интересные штуки. Попробовать можно на вашем Maven-проекте с помощью команды mvn one.util:huntbugs-maven-plugin:huntbugs (отчёт пишется в target/huntbugs/report.html). Альтернативно можно собрать вручную из гита и запустить приложение командной строки one.util.huntbugs.HuntBugs, которому можно подавать на вход JAR-файлы или каталоги с .class-файлами.


Как-нибудь потом, когда проект несколько повзрослеет, я расскажу о нём более подробно. А в этой статье я покажу, чего интересного нашёл HuntBugs в IntelliJ IDEA Community Edition. Я скачал с официального сайта и поставил последнюю версию этой IDE, а затем натравил HuntBugs на файл lib/idea.jar, в котором почти всё и лежит. Я люблю тестировать статический анализ на IDEA, потому что это IDE, в которой самой есть очень неплохой статический анализатор и разработчики им явно пользуются. Интересно посмотреть, что остаётся после него.

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

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

VectorDrawable — часть вторая

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

В предыдущей статье мы рассмотрели, как преобразовать существующий svg-файл в VectorDrawable, который позволяет заменить много растровых изображений на одно, меньшее по размеру и более простое в обслуживании. Однако, это не все полезности, которые можно извлечь из VectorDrawable. Его можно анимировать. Это мы и рассмотрим в данной статье, заставив логотип андроид пожимать плечами.

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

VectorDrawable — часть первая

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

Предлагаю вашему вниманию перевод статьи "VectorDrawables – Part 1" с сайта blog.stylingandroid.com.


По долгу службы потребовалось мне как-то разобраться с векторной графикой. Во время поиска наткнулся я на серию статей под названием “VectorDrawable” в блоге https://blog.stylingandroid.com/. Ответов на все интересующие меня вопросы я, конечно, не нашел, но статьи очень понравились своей последовательностью и четко выверенным объемом необходимого материала. Решил поделиться переводом этих статей с обитателями хабра.


Я не переводил названия, activity, bitmap и тому подобное, потому что считаю, что так легче воспринимать информацию, ведь разработчики, в силу профессии, эти слова в русском варианте практически никогда не у потребляют. Далее следует перевод:

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

Использование Java массивов для вставки, получения и изменения PostgreSQL массивов

Время на прочтение4 мин
Охват и читатели19K
Массивы являются мощным средством программирования, часто используемом разработчиками, как в Java так и PL / PgSQL. Интерфейсы потенциально могут стать сложнее, например, когда два из них пытаются и общаются друг другом. В этом разделе рассматривается, как можно написать простой код, который использует java.sql.Array интерфейс для вставки, извлечения, и обновления массивов в PostgreSQL.

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

CREATE TABLE city_example (
country TEXT, 
cities TEXT[]
);

Теперь мы будем использовать JDBC интерфейс для добавления, получения и изменения данных в этой таблице.
Читать дальше →

Документация разработчика Hibernate – Глава I. Доступ к базе данных

Время на прочтение13 мин
Охват и читатели66K
Представляю вашему вниманию перевод первой главы официальной документации Hibernate.

Перевод статьи актуален для версии Hibernate 4.2.19.Final

Cледующая глава — Документация разработчика Hibernate – Глава II. Транзакции и контроль многопоточности

Содержание
 Предисловие
 1. Доступ к базе данных
  1.1. Подключение
   1.1.1. Конфигурация
   1.1.2. Получение JDBC-соединения
  1.2. Пулинг соединений (Connection pooling)
   1.2.1. Пулинг с помощью с3p0
   1.2.2. Пулинг с помощью Proxool
   1.2.3. Получение соединений от сервера приложений, через JNDI
   1.2.4. Прочее по конфигурации соединений
   1.2.5. Необязательные свойства конфигурации
  1.3. Диалекты
   1.3.1. Указание диалекта для использования
   1.3.2. Разрешение диалекта
  1.4. Автоматическая генерация схемы при помощи Schema Export
   1.4.1. Кастомизация файлов маппинга (Customizing the mapping files)
   1.4.2. Запуск инструмента SchemaExport
Читать далее

Вызываем Java код из Love2D

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

Всем доброго времени суток!


Возникла потребность встроить рекламу в свою игру на Love2D. Решил показывать баннер после выигрыша игрока и тут появились сложности: банер вызывается Java кодом приложения, а выигрыш определяется в Lua коде. Связывает их код на Си, туториалов, как добавлять свои методы в движок не было, и пришлось копаться в коде самостоятельно. Репозиторий Love2D для Android лежит вот тут.

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

Симфония асинхронии: задачи JavaFX и сокеты Netty

Время на прочтение10 мин
Охват и читатели17K
Всем доброй пятницы!

У нас наконец-то дошли руки до книги о Netty, которую нам рекомендовали в том числе благодарные читатели нашего хаброблога.



Признаться, у нас давно не выходило ничего узкотематического по Java. Но тема Netty вызывает на Хабре самый живой интерес, поэтому мы решили разместить обзорный материал по ней (автор почерпнул идею поста из этой книги) и устроить самый ориентировочный опрос. Заходите, высказывайтесь!
Читать дальше →

Автотесты в функциональном стиле

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

Элементы функционального программирования появились в Java сравнительно недавно, но приобретает все большую популярность. Особенно в части stream API – наверное нет Java разработчика, который бы не слышал/читал/применял этот API для работы с коллекциями. К сожалению, большинство и не идет дальше использования Stream API, тогда как функциональный подход позволяет значительно упростить жизнь разработчикам автотестов. Ниже я расскажу про два примера такого упрощения – словари проверок и специализированные матчеры

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