Обновить
128K+

Java *

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

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

Google leanback — забота большого брата

Время на прочтение11 мин
Охват и читатели11K
Добрый день, читатели Хабра. Хотел бы поделиться своим опытом разработки приложения для Android TV на примере DetailsFragment.


Есть официальные примеры тут и официальная документация тут. Что сподвигло меня выразить свое мнение? Это то, что официальные примеры не отвечают современным требованиям к разработке, например, модульности и расширяемости. Иногда создается некая двойственность при использовании того или иного механизма. Рассмотрим более подробно DetailsFragment.

Для того чтобы начать разрабатывать ваше приложение для платформы android, на мой взгляд, вам следует принять 2 основные истины:

  • Плохая идея отходить от официальных рекомендаций и разрабатывать кастомизированное приложение. Гугл позаботился о том, чтобы сделать это было крайне сложно.
  • Single Activity Architecture также не совсем подходит, это чревато утечками памяти, связанной с внутренними реализации библиотеки leanback.
Читать дальше →

Что делает сова в ZeroNights 2017 Crackme №3?

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


ZeroNights 2017 Crackme №3 — довольно простое задание, но, тем не менее, и в нём есть несколько интересных моментов и сова.


Под катом — дизассемблирование, декомпиляция, pull request в IntelliJ IDEA и ни единого запуска отладчика.

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

Учебник Thymeleaf: Глава 5 Установка значений атрибутов

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

5 Установка значений атрибутов


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

Производительность и рантаймы на конференции JPoint 2018

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

Все мы имеем какие-то ожидания от конференций. Обычно мы идём на вполне конкретную группу докладов, вполне конкретной тематики. Набор тем отличается от платформы к платформе. Вот что сейчас интересует джавистов:


  • Производительность
  • Виртуальные машины и особенности рантаймов
  • JDK 9/10/...
  • Фреймворки
  • Архитектура
  • Enterprise
  • Большие данные и машинное обучение
  • Базы данных
  • JVM-языки (включая Kotlin)
  • DevOps
  • Разные мелкие темы

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


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


Масштабирование, кластеры и всё такое рассматривать тут не будем, достаточно сказать, что оно есть (Christopher Batey из Lightbend расскажет про Akka, Виктор Гамов из Confluent расскажет про Kafka, и так далее).


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

Java и Project Reactor

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


Всем привет! Меня зовут Лёха, и я работаю бэкенд-разработчиком в FunCorp. Сегодня мы поговорим про реактивное программирование, библиотеку Reactor и немного про веб.


Реактивное программирование часто «подвергается упоминанию», но если вы (как и автор статьи) всё ещё не знаете, что это такое — устраивайтесь поудобнее, попробуем разобраться вместе.

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

Учебник Thymeleaf: Глава 4. Standard Expression Syntax

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

4 Стандарт синтаксиса Выражений/Standard Expression Syntax


Мы сделаем небольшой перерыв в развитии нашего виртуального магазина бакалейных товаров, чтобы узнать об одной из наиболее важных частей Стандартного диалекта Thymeleaf: Стандарт синтаксиса выражений Thymeleaf.

Мы уже видели два типа допустимых значений атрибутов, выраженные в этом синтаксисе: сообщения и переменные:

<p th:utext="#{home.welcome}">Welcome to our grocery store!</p>

<p>Today is: <span th:text="${today}">13 february 2011</span></p>
Читать дальше →

Учебник Thymeleaf: Глава 3. Использование Text

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

3 Использование Text


3.1 Мультиязычное «Добро пожаловать»


Первая задача — создать домашнюю страницу для нашего продуктового сайта.

Первая версия страницы будет предельно проста: просто заголовок и приветственное сообщение. Это наш /WEB-INF/templates/home.html файл:
Читать дальше →

«Придётся писать самим. Сели и написали»: жизнь разработчиков лабораторного кластера супермассивов в Сбертехе

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

Существует миф, что банки — это очень закостенелые структуры, в которых нет места эксперименту. Чтобы опровергнуть этот миф, мы провели небольшое интервью с Валерием Выборновым — начальником отдела разработки лабораторного кластера супермассивов в Сбербанк-Технологиях. У себя в команде они не боятся пользоваться всей мощью Scala, Akka, Hadoop, Spark, и даже пишут прототипы на Rust.



Основные вопросы:


  • Обсуждение примера экспериментального проекта (работа с социальным графом) с техническими подробностями;
  • Используемые языки и технологии (Scala, Akka, Hadoop, Spark, Rust, и т.п.);
  • Можно ли прийти в Сбертех сразу на руководящую должность? Как там внутри всё организовано, какие есть грейды?
  • Как живётся простому разработчику? Подробности внедрения Сберджайла;


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

Учебник Thymeleaf: Глава 2. Хорошая виртуальная бакалейная лавка Thymes

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

2 Хорошая виртуальная бакалейная лавка Thymes


Исходный код примеров, показанных в этом и будущих главах руководства, можно найти в репозитории Good Thymes Virtual Grocery GitHub https://github.com/thymeleaf/thymeleafexamples-gtvg.

2.1 Вебсайт для бакалейной лавки


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

Это приложение является веб-сайтом воображаемого виртуального бакалейного магазина и предоставит нам множество сценариев, чтобы продемонстрировать многие функции Thymeleaf.
Читать дальше →

Учебник Thymeleaf: Глава 1. Знакомство

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

1 Знакомство с Thymeleaf


1.1 Что такое Thymeleaf?


Thymeleaf — современный серверный механизм Java-шаблонов для веб- и автономных сред, способный обрабатывать HTML, XML, JavaScript, CSS и даже простой текст.

Основной целью Thymeleaf является создание элегантного и удобного способа шаблонизации. Чтобы достичь этого, Thymeleaf основывается на концепции Natural Templates, чтобы внедрить свою логику в файлы шаблонов таким образом, чтобы этот шаблон не влиял на отображение прототипа дизайна. Это улучшает коммуникацию в команде и уменьшает разрыв между дизайнерско-программистскими группами.
Читать дальше →

Двоично-троичная битовая магия

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

Существует классическая задача для собеседований, часто формулируемая следующим образом:


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

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


Предлагаю поразмыслить над другой вариацией данной задачи. Что, если все элементы, кроме искомого, будут присутствовать в массиве не парами, а тройками? Насколько при этом усложнится решение и останется ли оно линейным?

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

(Не)оригинальное поздравление на 8 марта

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

Я думаю, многие в детстве рисовали самодельные открытки для мам, сестер, бабушек. В школе так уж точно. Однако, после определенного возраста увлечение подобными вещами остается уделом очень маленького числа людей. Вряд ли вы хоть раз дарили что-то подобное своей девушке/жене. А ведь им наверняка понравится, психология и всё такое.


Фрейд был бы доволен
Читать дальше →

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

Задача про forEach(ps::println) от СКБ Контур

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

На конференции JBreak я не читал задачки спонсоров специально. Ну, конечно, кроме ада от Excelsior: уж эти ребята всем задали жару. А тут принесли мне листок от СКБ Контур, смотри, мол, посмейся. Я посмеялся: первая задача действительно выглядела настолько наивно сформированной и недоопределённой, что даже не хотелось идти к стенду и убеждать в этом сотрудников компании. Я про это почти забыл, однако тут на Хабре появился авторский разбор этой задачи, не лишённый некоторой глубины. Даже про modCount написали. Выходит, зря я смеялся?

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

Разбор перформансных задач с JBreak (часть 1)

Время на прочтение35 мин
Охват и читатели12K
Первая часть — разбор самой холиварной задачи из четырёх:

    void forEach(List<Integer> values, PrintStream ps) {
        values.forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.stream().forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.parallelStream().forEach(ps::println);
    }

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

Другие публикации серии: Часть 2, Часть 3, Часть 4.
Читать дальше →

Java 9 — Вы уже перешли? Нет? И не надо ...!?

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

Недели две назад InfoQ напомнил, что официальная поддержка Java 9 заканчивается… в Марте 2018г. (т.е. через 20 дней :)


Вот cсылка на официальный EOL от Oracle, в которой в разделе "Java SE Public Updates" черным по английскому говорится, что Java 9 будет поддерживаться до Марта 2018, а Java 8до Января 2019 (или позже) и Декабря 2020 (или позже).

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

Контейнеры внедрения зависимостей и выгоды от их использования

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

От переводчика


Всем привет! Я продолжаю серию переводов, в которой мы по косточкам разбираем, что такое Dependency Injection.

В предыдущих статьях серии речь шла о «внедрении зависимостей» как подходе к проектированию приложений и возможных способах реализации такого подхода. Были разобраны типы зависимостей, варианты их внедрения, давались советы по снижению связанности компонентов кода.

В сегодняшнем переводе речь пойдет о том, что собой представляет DI-контейнер, его функциях, преимуществах использования и отличии от фабрик.

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

Spring: вопросы к собеседованию

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

image
Этот небольшой список вопросов даст вам понимание самых важных концепций Spring, а так же поможет подготовится к собеседованию

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

Платформа CUBA в 2017: новые фичи, новые услуги, новые планы

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

На заре 2018 хочется подвести итоги, и рассказать об изменениях в платформе CUBA за прошлый год. Если 2016 стал для нас революционным благодаря переходу в опенсорс, то 2017 стал годом планомерного развития: мы сфокусировались на предложении новых фич и услуг нашему сообществу.



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

Анонс встреч Apache Ignite в Москве и Санкт-Петербурге в марте

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

Москва, 20 марта


Видеозаписи выступлений на “Moscow Apache Ignite #1”

Внимание! Дата перенесена с 13 марта на 20 марта, время, место и программа без изменений

При организации второго митапа мы учли ваши пожелания: места будет БОЛЬШЕ, и Алексей Гончарук выступит с докладом для архитекторов.

Программа:
19:00 — 19:30 — приветственный кофе, сбор гостей

1. «Что нового в Apache Ignite 2.4» — Артем Шитов, инженер GridGain.
2. «Масштабирование Apache Ignite кластера для архитекторов» — Алексей Гончарук, главный архитектор GridGain.
3. «Операционный кэш данных на базе Apache Ignite. Практика построения и использования решения для страховой компании» — Дмитрий Косицын, технический директор Unitarius.

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