Pull to refresh
@stas_agarkovread⁠-⁠only

Программист

Send message

Создание шаблонов в IDE от Jetbrains

Reading time4 min
Views25K

Вступление


Сегодня я хочу привести небольшой обзор-туториал темплейтов в ИСР от Jetbrains. Приведенные ниже примеры будут реализованы на Java в Intellij IDEA, но механизм создания одинаков и для других языков и продуктов компании. Думаю все программирующие в данной IDE пользовались встроенными шаблонами. Например когда вы пишете fori, нажимаете TAB или ENTER и у вас появляется цикл for в котором нужно указать имя переменной и условие, а остальной код генерируется за вас.

for (int i = 0; i < ; i++) {   
                               
}    

Или же знакомый всем java-программистам sout -> System.out.println(). Так вот, в Intellij есть поддержка создания своих шаблонов кода. На удивление не нашёл практически никакой инфы на русском и довольно мало на английском(благо есть неплохая документация) когда наткнулся на эту фичу, хотя это сильно ускоряет и помогает в разработке. И сейчас когда дошли руки решил написать небольшую статью об этом. Возможно опытным программистам она мало чем поможет, они и сами смогут разобраться во всём или же уже давно это юзают, но для всех остальных считаю вполне подойдёт. Итак приступим.
Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments13

Пишем, собираем и запускаем HelloWorld для Android в блокноте. Java 8 и Android N

Reading time11 min
Views45K

Два с половиной года назад я опубликовал статью Пишем, собираем и запускаем HelloWorld для Android в блокноте. Она стала пользоваться огромной популярностью и набрала около 80 000 просмотров. С появлением новых инструментов, таких как Jack ToolChain, возникла необходимость переиздания и обновления статьи.

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

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments22

DNS Google больше не поддерживает Round Robin DNS

Reading time3 min
Views39K

Раньше, когда надо было распределить нагрузку на несколько серверов, мы прописывали несколько A-записей с одним именем в DNS-зоне, и все работало. Запросы клиентов распределялись примерно поровну. Особенно актуален такой способ балансировки был для раздачи статитического контента.

Недавно наш клиент обратился к нам с проблемой:
В ЧНН начинались проблемы с загрузкой различных флешек — файлы загружались по несколько минут.
ищем виновного...
Total votes 51: ↑51 and ↓0+51
Comments65

ScribeJava — даже ваша бабушка сможет работать с OAuth

Reading time10 min
Views30K
image

Именно этой фразой нас приветствует библиотека для работы с OAuth — ScribeJava (https://github.com/scribejava/scribejava). Если быть точнее, то фраза звучит так: “Who said OAuth/OAuth2 was difficult? Configuring ScribeJava is so easy your grandma can do it! check it out:”.

И это действительно похоже на правду:
OAuth20Service service = new ServiceBuilder().apiKey(clientId).apiSecret(clientSecret)
    .callback("http://your.site.com/callback").grantType("authorization_code").build(HHApi.instance());
String authorizationUrl = service.getAuthorizationUrl();
OAuth2AccessToken accessToken = service.getAccessToken(code);

Готово! Этих трех строчек достаточно, чтобы начать делать OAuth запросы. А сам OAuth запрос можно будет сделать так:
OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.hh.ru/me", service);
service.signRequest(accessToken, request);
String response = request.send().getBody();

Данные о пользователе у нас в руках (в переменной response). И ни капли понимания, как в деталях работает OAuth. Хотим асинхронные http-запросы? Нам хватит тех же трех строчек. Ниже рассмотрим это на примере.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments2

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time7 min
Views232K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →
Total votes 191: ↑186 and ↓5+181
Comments120

Сборка Tesseract OCR под MinGW

Reading time5 min
Views21K
tesseract ocr

В одном из своих проектов мне потребовалось распознавание символов и мой выбор остановился на tesseract ocr. На Хабре уже была подобная статья, но на данный момент она не актуальна, во время установки не получилось в точности повторить инструкции автора. В данной статье рассказывается о процессе установке Tesseract OCR под MinGW.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments3

Spring без XML. Часть 2

Reading time9 min
Views20K
И снова день добрый. Пост в продолжение публикации «Spring + Java EE + Persistence, без XML. Часть 1».


1. Введение


1.1 Подгружаем проект


Если вы хотите с этой части начать, либо не осталось проекта сделанного в предыдущей части, можете скачать его с github.
Схема простая:
  • Заходите из консоли в папку с проектами IDEA
  • git clone github.com/MaxPovver/ForHabrahabr.git
  • cd ForHabrahabr/
  • git checkout withauth
  • Готово, теперь можете грузить проект в студию так же как описано в первой части.

1.2 Что мы будем делать в этой части?


В этой части мы рассмотрим как хранятся отношения многие-ко-многим на уровне объектов сущностей;
доделаем распределения прав пользователям;
сделаем простейший REST-controller;
сделаем регистрацию новых пользователей (только для админа);
и все это без XML.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments6

Spring без XML. Часть 1

Reading time23 min
Views49K
Привет, хабрахабр!

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

Итак, если вам хочется попробовать Spring MVC с сохранением в базе и 0(нулем) файлов xml-конфигураций, прошу под кат!



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

1. Подготовка к запуску


1.1 IDE


Вся разработка будет вестись на Intellij IDEA, но не думаю что реализация в другой IDE будет сильно сложнее.
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments33

Леонардо да Винчи учит писать резюме

Reading time3 min
Views48K
До того, как стать знаменитым и написать Мону Лизу и Тайную Вечерю, Леонардо да Винчи разрабатывал оружие. В 1482 году в возрасте 30 лет Леонардо написал письмо Людовико Марии Сфорца, герцогу Милана, описав в нём свои возможности. Что мы в XXI веке сможем вынести из этого резюме?

Кликните на картинку и посмотрите оригинал в большом размере.
image
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments21

Делаем скриншоты правильно: практические советы

Reading time8 min
Views188K
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)
Устройство для снимка экрана на первых компьютерах (Command-Shift-3)

Если вы когда-либо делали хелп или мануал для своего приложения, наверняка вы отметили, как неожиданно много времени и сил занимает создание скриншотов.

Ведь кажется, что скриншот — это “секунда работы, Alt+PrintScreen и Ctrl+V!”. Некоторые клиенты удивляются, когда слышат, что скриншот в мануале может стоить и $2 и даже $5.

В этой статье я расскажу, как правильно делать скриншоты, почему это не просто “два клика” и какие подводные камни встречаются на пути неопытного скриншотера. Рассматривайте ее как чеклист или список практических советов для тех, кто документирует ПО. Надеюсь, это поможет вам избежать разочарований и порадовать юзеров красочными понятными картинками.
Читать дальше →
Total votes 81: ↑69 and ↓12+57
Comments76

Расширяем возможности Java-приложения

Reading time11 min
Views19K
Здраствуй, Хабражитель!

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

Итак, сегодня я приведу здесь библиотеки, которые могут Вам помочь решить часто возникающие вопросы вроде «Как сделать это на Java?» по разным узким направлениям разработки.

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

Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments25

Как сохранить здоровье, работая за компьютером?

Reading time8 min
Views105K
Иллюстрация

Вы заботитесь о своем здоровье?


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

Что оказалось непросто. В данной статье я расскажу о моем способе организации «правильного» рабочего дня, о том, что следует для этого делать, и где лежат грабли, на которые нельзя наступать. Тема «компьютер и здоровье» уже несколько раз поднималась на Хабре, поэтому я задумывал этот пост как статью, которую можно добавить в закладки и использовать в качестве «руководства к действию».

Читать дальше →
Total votes 272: ↑259 and ↓13+246
Comments139

6 причин, по которым вам не стоит писать функциональные спецификации

Reading time3 min
Views15K
Небольшое эссе из книги «Getting Real», написанной сотрудниками компании 37signals. Оригинал можно прочитать здесь.

Спецификация — это абстрактный документ, в большинстве случаев не имеющий ничего общего с готовым программным продуктом. Почему? С удовольствием объясним:

1. Спецификация — это фикция

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

Читать дальше →
Total votes 64: ↑48 and ↓16+32
Comments121

Process Explorer. Обзор некоторых возможностей

Reading time5 min
Views96K
Process Explorer – альтернатива стандартному Task Manager-у. Эта утилита, как и многие другие утилиты Sysinternals, здорово расширяет возможности контроля и управления системой. Главное новшество только что вышедшей 14-ой версии — возможность мониторить сетевую активность процессов. Далее небольшой обзор возможностей этой утилиты, которые считаю наиболее полезными для себя.

Для справки. С 2006 года Sysinternals была приобретена Microsoft, а ключевая фигура этой компании – Марк Руссинович с тех пор работает в Microsoft. Марк известен своими утилитами, книгой Windows Internals, блогом и является признанным специалистом по архитектуре Windows.

Содержание:
  • Колонки в главном окне
  • Сервисы внутри svchost
  • Суммарные графики активности, процесс с максимальной активностью
  • Суммарные графики активности в трее, процесс с максимальной активностью
  • Сетевые соединения процесса
  • Потоки процесса, их активность, стек потока с загрузкой символов
  • Информация по использованию памяти в системе
  • Handles и DLL процесса
  • Поиск handles и DLL

Читать дальше →
Total votes 120: ↑101 and ↓19+82
Comments43

OpenCV. Видео с камеры. Пишем в файл

Reading time3 min
Views15K
image
Приветствую!

В прошлых уроках:
OpenCV. Вывод видео
OpenCV (компьютерное зрение). Установка под MSVS 2008. «Hello World»

Мы научились устанавливать OpenCV, написали первую программу и считывали видео из файла.

Сейчас я хочу показать вам, как просто захватывать видео с камеры и научимся сохранять видео в файл.
Поехали!
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments8

Тест для оценки качества бригады разработчиков (Тест Джоэла)

Reading time1 min
Views534
Кросспост из моего блога.

Самое замечательное в этом тесте то, что он не отнимет более трёх минут.

1. Пользуетесь ли вы системой управления версиями исходного кода?
2. Можете ли вы выполнить сборку продукта за один шаг?
3. Выполняете ли вы ежедневную компиляцию?
4. Ведете ли вы базу данных ошибок в программе?
5. Исправляете ли вы ошибки, прежде чем писать новый код?
6. Есть ли у вас актуальный график работы?
7. Есть ли у вас спецификации?
8. Создали ли вы спокойные условия для работы программистов?
9. Стараетесь ли вы использовать для работы лучшие из существующих инструментов?
10. Привлекаете ли вы к работе тестеров?
11. Предлагаете ли вы соискателем рабочих мест написать во время собеседования код?
12. Проводите ли вы проверку «юзабилити» на случайных людях?

Что привлекает в тесте Джоэла, так это возможность быстро ответить «да» или «нет» на каждый вопрос. В идеале вы должны набрать 12 очков. 11 очков — терпимое количество, а 10 или менее указывает на серьёзные проблемы.

Взято из книги Джоэла Спольски «Джоэл о программировании».
Total votes 19: ↑17 and ↓2+15
Comments10

50 цитат о программировании всех времён

Reading time6 min
Views159K
Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

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

49. Lisp — это не язык, а строительный материал.
— Alan Kay

48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
— Edward V Berard
Читать дальше →
Total votes 344: ↑336 and ↓8+328
Comments136

Selenide: удобные тесты на Selenium WebDriver

Reading time3 min
Views84K
Многие слышали про Selenium WebDriver — один из самых популярных инструментов для написания приёмочных/интеграционных тестов.


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

Поэтому мы решили выделить этот повторяющийся код в отдельную библиотеку. Так на свет появился Selenide.

Что такое Selenide
Total votes 17: ↑16 and ↓1+15
Comments33

Привет из свободного от libc мира! (Часть 1)

Reading time5 min
Views28K
В качестве упражнения я хочу написать программу на С. Достаточно простую для того, чтобы дизассемблировать ее и объяснить весь код самой себе.

Звучит несложно, правильно?

У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.
Читать дальше →
Total votes 138: ↑126 and ↓12+114
Comments61

Интеграция Groovy в JEE приложение

Reading time6 min
Views16K
В одну телегу впрячь не можно
Коня и трепетную лань
                        А.С. Пушкин

Всем привет!

В данной заметке я хочу рассказать, как интегрировать язык Groovy в существующее JEE приложение на основе Maven. Выражаю благодарность Антону Щастному schaan за разрешение на использование исходного кода его проекта в качестве отправной точки. Поэтому данный топик можно считать продолжением его статьи Учимся готовить: Spring 3 MVC + Spring Security + Hibernate.

Начнем.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments24

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity