Pull to refresh

Подсчёт времени выполнения метода через аннотацию

Java *
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →
Total votes 51: ↑49 and ↓2 +47
Views 18K
Comments 30

Первый взгляд на аннотации в Twitter

Lumber room
Translation
Во время вчерашней презентации в Лондоне, на первой в своем роде конференции разработчиков Twitter, Raffi Krikorian, инженер из Twitter, пролил свет на то, как будет выглядеть долгожданная новая функция аннотаций (он назвал ее “Twannotations”).
Читать дальше →
Total votes 28: ↑23 and ↓5 +18
Views 198
Comments 9

Тестирование аннотаций в Twitter через API начинается на следующей неделе

Lumber room
Translation
Аннотации в твиттере — грядущее большое нововведение, которого многие ждут. С их помощью и пользователи, и клиенты смогут добавлять больше контекста в твиты, что даст больше полезной информации. Новый пост в группе Twitter на groups.google.com Twitter API Announcement сообщает о том, что тестирование начнется уже на следующей неделе.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 143
Comments 1

Как улучшить читабельность нашего Android-кода или используем android-annotations

Development for Android *
В крошечном проекте решил попробовать данную библиотеку и посмотреть что из этого получится. Об этом опыте хочу рассказать в данном топике.
Читать дальше →
Total votes 38: ↑33 and ↓5 +28
Views 8K
Comments 40

Кастомные аннотации в Symfony 2

Symfony *
Symfony2 — это веб-фреймворк, который появился совсем недавно. Соответственно, разработчики просто не успели написать к нему стоящую документацию. В одном из текущих проектов используется MongoDB, и ACL прикрутить нему можно, нужно всего лишь написать свой ACL-провайдер. Но я решил пойти своим путём. Итак, вот что примерно у нас получится:
class DefaultController extends Controller
{

    /**
    * Dashboard page.
    * @Permissions(perm="dashboard_view")
    * @Route("/", name="ITEDashboardBundle_index")
    * @Template()
    * @return array
    */
    public function indexAction()
    {.......

Читать дальше →
Total votes 37: ↑28 and ↓9 +19
Views 11K
Comments 34

Аннотации в JAVA: обзор синтаксиса и создание собственных

Java *
Sandbox
Статья ориентирована больше на новичков, или тех, кто еще не работал с данным механизмом в языке. Я постараюсь рассказать, что это такое, зачем они нужны, и как можно самому создавать удобные для себя аннотации.

Аннотации представляют из себя дескрипторы, включаемые в текст программы, и используются для хранения метаданных программного кода, необходимых на разных этапах жизненного цикла программы.
Информация, хранимая в аннотациях, может использоваться соответствующими обработчиками для создания необходимых вспомогательных файлов или для маркировки классов, полей и т.д.
Читать дальше →
Total votes 36: ↑31 and ↓5 +26
Views 236K
Comments 32

AndroidAnnotations — упрощаем и укорачиваем код без вреда для здоровья проекта (I часть)

Development of mobile applications *Development for Android *
Tutorial

Уже несколько лет существует и совершенствуется открытая библиотека для Android — Android Annotations
Она похожа на RoboJuice по возможностям, но если изучить ее тщательнее, то станет ясно — она гораздо обильнее по возможностям и реализована более удобным для использования в проекте способом.
Об этой библиотеке уже писали на Хабре, но кратко, да и она сама обновилась.
Что ж, пройдемся по AndroidAnnotations подробно, тем более она вошла в джентельменский набор разработки под Android.
Читать дальше →
Total votes 50: ↑37 and ↓13 +24
Views 32K
Comments 34

AnnotatedSQL lib — автоматическая генерация базы данных в Android

Development for Android *
При разработке приложения под Android мы часто пишем руками скрипты для создания схемы.
Все бы ничего когда это надо сделать одни раз, но когда приложение развивается, то часто приходится менять базу.
И когда это размазано по нескольким классам — то возникают проблемы, где-то забыл добавить/удалить колонку, изменить тип и прочее. Еще и копипаст «помогает»: добавлял колонку — забыл поставить запятую.

Как раз для решения этих проблем и была придумана эта библиотека.

Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Views 8.4K
Comments 15

MVC для андроид

Development for Android *
Sandbox
Я считаю, что работа программиста заключается не в том, чтобы писать код а в том, чтобы оптимизировать процессы. Мы пишем код, что бы его пользователь мог быстрее и эффективнее достичь мирового господства, например. И было бы немного странно оптимизировать работу других и не оптимизировать свою. Сапожник без сапог — это нерационально.

Итак. Стал я недавно писать вторую версию своей апп для таких же религиозных фанатиков как и я. Апп не важна, важно, что двухстороннее связывание виджетов с данными — довольно рутинная, чреватая копипейстом работа. Особенно весело становится, если есть зависимости: Если изменился этот текст — обнови тот. Уже на втором экране, будучи вдохновлённым Butter Knife проектом я понял, что здесь огромный простор для генерализации (и, как ни странно, ничего подобного не нашёл).

Встречайте, проект Bandera*

В бой!
Total votes 14: ↑6 and ↓8 -2
Views 17K
Comments 7

Phalcon PHP фрейморк. Работа с аннотациями

PHP *Phalcon *
Recovery mode
«vivo, presto, prestissimo...»

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

Читать дальше
Total votes 21: ↑13 and ↓8 +5
Views 13K
Comments 9

Custom Annotation Preprocessor — создание на базе Android-приложения и конфигурация в IntelliJ IDEA

Java *Development of mobile applications *
Tutorial
Всем привет!

Недавно передо мной встала задача написания своих кастомных аннотации и их обработки во время компиляции. Первый вопрос, который я себе задала: с чего начать? После анализа я решила поделиться с вами ответом на этот вопрос.
Думаю, рассказывать, что такое аннотации в java и с чем их едят, не имеет смысла, так как каждому юному программисту это знакомо ( а кому не знакомо, может прочесть самостоятельно). К тому же на хабре есть интересная ознакомительная статья об этом явлении.
Но сегодня я хочу поговорить именно о кастомных аннотациях в Android-приложении, которые обрабатываются в процессе компиляции проекта вашим собственным обработчиком и о автогенерации классов на их основе. А так же, по ходу дела, расскажу вам, как быстро все настроить в IDEA (сама я пользуюсь версией 12.1, возможно в других есть отличия).
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 15K
Comments 5

Хешируем строки на этапе компиляции с помощью annotation

Java *Development for Android *
Sandbox
Tutorial
Недавно я начал разрабатывать приложение под Android и передо мной возникла задача защитить его от реверса. Беглый просмотр гугла позволил предположить, что ProGuard, входящий в состав Android Studio, с задачей справится. Результат меня действительно устроил за исключением одной маленькой детали — строки.
Программа обменивается с сервисом информацией с помощью Intent. Ключевой частью которых является строка действия. И если для взаимодействия с системой или другими приложениями строка должна иметь определённый формат, то для обменов внутри приложения достаточно её уникальности. Для удобства рекомендуется составлять данную строку из имени пакета и названия действия. Например:
public final class HandlerConst {
    public static final String ACTION_LOGIN = "com.example.app.ACTION_LOGIN";
}

Это удобно для отладки, но сильно снижает качество обсфускации кода. Хочется, чтоб в релизе программы вместо данной строки оказался, например, её MD5 хеш.
public final class HandlerConst {
    public static final String ACTION_LOGIN = "7f315954193d1fd99b017081ef8acdc3";
}

Под катом рассказано, как добиться такого поведения с помощью подручного велосипеда.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Views 10K
Comments 8

Аннотации в Java, часть I

GolovachCourses corporate blog Java *
Это первая часть статьи, посвященной такому языковому механизму Java 5+ как аннотации. Она имеет вводный характер и рассчитана на Junior разработчиков или тех, кто только приступает к изучению языка.

Я занимаюсь онлайн обучением Java и опубликую часть учебных материалов в рамках переработки курса Java Core.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Мой метод обучения состоит в том, что я
  1. строю усложняющуюся последовательность примеров
  2. объясняю возможные варианты применения
  3. объясняю логику двигавшую авторами (по мере возможности)
  4. даю большое количество тестов (50-100) всесторонне проверяющее понимание и демонстрирующих различные комбинации
  5. даю лабораторные для самостоятельной работы

Данная статье следует пунктам #1 (последовательность примеров) и #2(варианты применения).
Читать дальше →
Total votes 47: ↑42 and ↓5 +37
Views 78K
Comments 21

Java one в San Francisco

Java *
Думаю, что многие хабра жители знают, что такое Java One. Немало здесь и тех, кто был на локальных Java One — в Москве. Мне же уже достаточно давно хотелось побывать на главном и изначальном Java One — в San Francisco — и это наконец-то удалось. Приглашаю всех интересующихся услышать мои впечатления от эвента и некоторых его сессий.

Дюк, талисман Java и Java one
Дюк, талисман Java и Java one
Подробности и фотографии
Total votes 14: ↑12 and ↓2 +10
Views 6.3K
Comments 3

Разработка веб-приложения

Website development *Java *ExtJS/Sencha *
Tutorial
Привет, Хабр!

При изучении технологий Ext JS и Java, написал web-приложение «Каталог автомобилей». Хочу поделиться с Вами этим опытом.

Вид и функциональность приложения


  • Добавление;
  • Удаление;
  • Редактирование;
  • Поиск;
  • Валидация данных;


Читать дальше →
Total votes 77: ↑34 and ↓43 -9
Views 91K
Comments 19

Автоматическая генерация API doc через Аннотации или как прийти к документированию API

PHP *Symfony *
Sandbox
Перед написанием стать попытался найти что-то подобное, и, возможно, в силу каких-то обстоятельств не нашел. Решил изложить свое видение данного вопроса.

Откуда взялась идея? За последние несколько лет я сменил 3-4 компании, в которых мне доставалась мягко говоря лапша, толстенные контроллеры и минимум аннотаций. С чем именно связать отсутствие аннотаций — сказать сложно, возможно, это банальная лень или не знание того, что аннотации позволяют описывать больше, чем просто входящие параметры для классов/методов. А когда это начинает касаться API-контроллеров, то тут вообще весело, прикрутить FosRestBundle не проблема (я сейчас про более ленивый вариант, чем написание всего и вся самому ручками, хотя, как показывает практика — бандл проще).
Читать дальше →
Total votes 6: ↑4 and ↓2 +2
Views 18K
Comments 18

RetroBase — аналог Retrofit для запросов к базам данных

Java *Development for Android *
Многие разработчики, используют в своих проектах библиотеку Retrofit, которая позволяет превратить HTTP API в java-интерфейс. Это очень удобно, так как позволяет избавиться от лишнего кода и использовать ее очень легко. Нужно лишь создать интерфейс и навесить несколько аннотаций.

Недавно я занимался разработкой приложения для Android, которому необходимо было делать запросы к базе данных через JDBC- драйвер. Тогда мне пришла идея создать нечто подобное Retrofit только для запросов к базе данных. Так появился RetroBase, о котором я Вам сейчас и расскажу.
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 7.7K
Comments 12

Реализация Spring Framework API с нуля. Пошаговое руководство для начинающих. Часть 1

Programming *Java *
Tutorial


Spring Framework является одним из самых сложных фремворков для понимания и изучения. Большинство разработчиков изучают его медленно, через практические задачи и гугл. Этот подход не эффективен, так как не даёт полной картины и при этом требует больших затрат.

Я хотел бы предложить вам принципиально новый подход к изучению Спринга. Он заключается в том, что человек проходит через серию специально подготовленных туториалов и самостоятельно реализует функционал спринга. Особенность этого подхода в том, что он, помимо 100%-го понимания изучаемых аспектов Spring даёт ещё большой прирост в Java Core (Annotations, Reflection, Files, Generics).

Статья подарит вам незабываемые ощущения и позволит почувствовать себя разработчиком Pivotal. Шаг за шагом, вы сделаете ваши классы бинами и организуете их жизненный цикл (такой же, как и в реальном спринге). Классы, которые вы будете реализовывать — BeanFactory, Component, Service, BeanPostProcessor, BeanNameAware, BeanFactoryAware, InitializingBean, PostConstruct, PreDestroy, DisposableBean, ApplicationContext, ApplicationListener, ContextClosedEvent.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 45K
Comments 17

Настройка состава JUnit5 тестов с помощью application.properties

Java *

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


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


И предпочтительней настроить выбор, какие тесты должны выполняться, в… файле application.properties — кажому тесту свой переключатель "вкл/выкл".


Звучит здорово, не правда ли?


Тогда добро пожаловать под кат, где мы все это и реализуем с помощью SpringBoot 2 и JUnit 5.

Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 8.6K
Comments 9

Тестирование аннотаций @NonNull/@Nullable

Java *

Вместо «Посвящается ...»


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

Но эта задача была, а значит ее пришлось решить.

Intro


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

Но на текущем проекте упомянутая библиотека присутствует, и что-то подсказывает мне, что наш проект такой не единственный.
Так вот.
Читать дальше →
Total votes 23: ↑14 and ↓9 +5
Views 12K
Comments 18
1