Как стать автором
Обновить
1
0
Бирюков Сергей @xaerom

Пользователь

Отправить сообщение

Новый взгляд на Maven-plugin для IDEA — GMaven

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.3K

Привет, меня зовут Григорий Мясоедов, ранее я имел опыт работы в JetBrains в команде build tools, а конкретно занимался Maven-plugin.  В этой статье я хочу поговорить о том как устроен плагин под капотом, его сильных и слабых местах, и о том что я в итоге со всем этим сделал.

Одна из самых частых проблем, которыми я занимался в JetBrains, звучала так - “через командную строку Maven проект собирает, но в IDEA он не импортируется (импортируется с ошибками)”. Как будет показано ниже большинство этих проблем связаны с архитектурой JB Maven плагина.

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии26

Жизнь в АННЕ. Часть 1. Performance review

Время на прочтение7 мин
Количество просмотров2.2K

Жизнь в АННЕ. Часть 1. Performance review.

Садись поближе, читатель, тут будем о наболевшем говорить. Не всегда о приятном, но всегда об актуальном. Понимаешь, рвется из нутра моего это все! Императивом надрывистым кричит мне: "поделись с людом!", ну а я сопротивляться не буду, выложу как умею.

Что, простите?
Всего голосов 8: ↑7 и ↓1+6
Комментарии5

[в закладки] Инструменты для тестирования JavaScript-проектов

Время на прочтение17 мин
Количество просмотров42K
Автор материала, перевод которого мы публикуем сегодня, сотрудник Welldone Software, говорит, что если в двух словах рассказать об инструментах для тестирования JavaScript-проектов, то для модульного и интеграционного тестирования рекомендуется использовать Jest, а для тестов пользовательского интерфейса — TestCafe. Однако каждый конкретный проект может нуждаться в чём-то особенном. Лучший способ найти именно то, что нужно — взять несколько инструментов, которые, как кажется, подойдут, и испытать их в действии. Эксперименты подскажут — на чём именно стоит остановиться.



Представляем вашему вниманию обзор наиболее широко используемых инструментов тестирования для JS-проектов, на которые стоит обратить внимание в 2018-м году.
Читать дальше →
Всего голосов 53: ↑48 и ↓5+43
Комментарии8

JSR 133 (Java Memory Model) FAQ (перевод)

Время на прочтение25 мин
Количество просмотров146K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

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

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии32

Удивительно полезный инструмент: lsof

Время на прочтение9 мин
Количество просмотров122K
Я привык искать проблемы в коде или в системе, пользуясь логами или показателями мониторинга, которые выводятся на симпатичных панелях управления с простым и понятным интерфейсом. Однако, если по какой-то причине данные на панель управления не поступают, или логи какой-нибудь службы недоступны, отладка усложняется. Теперь подобных проблем немного, встречаются они редко, но они, всё же, случаются. Поэтому и в наше время весьма ценно знание инструментов, которые помогают понять, что не так с неким процессом на каком-нибудь компьютере.

image
Читать дальше →
Всего голосов 73: ↑69 и ↓4+65
Комментарии30

Алгоритм машинного обучения Flappy Bird

Время на прочтение4 мин
Количество просмотров48K
Я познакомлю вас с полным туториалом на HTML5 с демо по алгоритму машинного обучения видеоигре Flappy Bird. Цель этого эксперимента — написать игровой контроллер искусственного интеллекта на основе нейросетей и генетического алгоритма.

То есть мы хотим создать ИИ-робота, который сможет учиться оптимальной игре во Flappy Bird. В результате наша маленькая птица сможет спокойно пролетать через препятствия. В наилучшем сценарии она не умрёт никогда.

Прочитав теорию, лежащую в основе этого проекта, можно скачать исходный код в конце этого туториала. Весь код написан на HTML5 с использованием фреймворка Phaser. Кроме того, мы использовали библиотеку Synaptic Neural Network для реализации нейросети, чтобы не создавать её с нуля.

Демо


Для начала посмотрите демо, чтобы оценить алгоритм в действии:



Запустить в полноэкранном режиме
Всего голосов 60: ↑58 и ↓2+56
Комментарии26

10 бесплатных и крутых шрифтов

Время на прочтение5 мин
Количество просмотров76K
Сегодня рассказываем про шрифты, которые часто используют наши дизайнеры — все они бесплатные, минималистичные и удобные в использовании. Надеемся, наша подборка пригодится вам при выборе шрифтов.

Шрифт – часть фирменного стиля, которой нельзя пренебрегать. Форма и начертание букв – основа читабельности и настроения бренда. Текст окружает нас повсюду: название компании, слоган или реклама в журнале. Встречают по одежке. Притягательность текста зависит от того, зацепится ли взгляд за приятные очертания букв или излишние закорючки вызовут отторжение у читателя. Создание шрифтов – наука, но всемирная сеть предлагает неисчерпаемый источник публичных семейств от гуру типографики.

1. Open Sans


image
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии14

Кейсы: разработка спецификаций и гайдлайнов (web ui kit)

Время на прочтение9 мин
Количество просмотров28K


Сегодня я поделюсь опытом разработки графической документации по гайдлайнам. Это оказалось мое второе задание для Viline. И как Вы не помните из первой части, я делал редизайн страницы видео-курса. В данной статье я опишу процесс разработки стилистики всех элементов и различных состояний. Придумаю и сформулирую некоторые правила, чтобы интерфейс получился сбалансированным и доступным с учётом аудитории…
Читать дальше →
Всего голосов 23: ↑15 и ↓8+7
Комментарии34

Консоль в массы. Переход на светлую сторону. Bash

Время на прочтение6 мин
Количество просмотров55K
keep-calm-and-bin-bash

Вступление


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

Мы добрались до самой интересной и увлекательной темы — это скрипты на bash. Когда вы запускаете терминал, внутри него работает специальная программа-оболочка — shell (англ) — интерпретатор команд. Shell понимает все команды, которые вы вводите с клавиатуры, и обрабатывает их. Также выводит сообщения об ошибках, следит за корректностью команд и их синтаксисом. Примером таких команд могут быть: сменить директорию, создать новую директорию, добавить текстовый файл, отредактировать текстовый файл, сохранить изменения и другие.
Всего голосов 69: ↑57 и ↓12+45
Комментарии108

Очередная статья про Docker для новичка [nginx + php-fpm + postgresql + mongodb]

Время на прочтение5 мин
Количество просмотров68K
image

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

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

Добро пожаловать под кат!
Читать дальше →
Всего голосов 25: ↑18 и ↓7+11
Комментарии19

Masking Bitmaps на Android

Время на прочтение12 мин
Количество просмотров20K


Введение


При разработке под Android довольно часто возникает задача наложить маску на изображение. Чаще всего требуется закруглить углы у фотографий или сделать изображение полностью круглым. Но иногда применяются маски и более сложной формы.

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

Я предполагаю, что читатель имеет опыт в разработке под Android и знаком с классами Canvas, Drawable и Bitmap.

Код, используемый в статье, можно найти на GitHub.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии7

Несколько примеров практического использования RxJava

Время на прочтение11 мин
Количество просмотров32K
RxJava — это реализация ReactiveX для Java — библиотеки для асинхронной обработки потоков данных. Паттерн observable на стероидах, как они сами пишут. В интернете, в том числе на Хабре, есть много «введений в RxJava». Я хочу привести несколько примеров реальных задач. Они не очень сложные, но возможно кто-то увидит какие-то сходства со своими и задумается.

Собственно, задачи:

1. Простое клиентское TCP-соединение. Есть протокол поверх TCP/IP, нужно сформировать сообщение, подключиться к удаленному узлу, если еще не подключился, передать сообщение и прочитать ответ. Плюс обработка ошибок, проверка таймаутов, повтор отправки в случае неудачи. Жестких требований к производительности нет, трафик не большой.

2. Есть двигатель и некоторый датчик. Нужно произвести сканирование — пройтись двигателем по заданной траектории: послать двигатель к точке, дождаться, когда он к ней приедет, снять показания датчика, отобразить точку на графике (в GUI потоке), поехать к следующей точке…

3. Полученные после сканирования данные нужно обработать (условно длительный вычислительный процесс) и засунуть в pdf-отчет (условно длительный процесс ввода-вывода) вместе с изображением графика и данными введенными пользователем (GUI поток).
Решения с комментариями
Всего голосов 28: ↑26 и ↓2+24
Комментарии3

Шесть мифов разработки продукта

Время на прочтение14 мин
Количество просмотров21K
image

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

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

Неспособность видеть эти различия приводит к ошибкам, мешающим планировать, исполнять и оценивать проекты по разработке программ. Авторы этого текста в сумме провели более 50 лет за изучением и консультированием компаний, занимающихся разработкой, и мы часто встречали подобные ошибки в совершенно разных областях — включая полупроводники, автомобили, потребительскую электронику, медицинские устройства, софт и финансы. В этой статье мы опишем эти заблуждения и способы обхода создаваемых ими проблем.
Читать дальше →
Всего голосов 37: ↑26 и ↓11+15
Комментарии4

FlexboxLayout — часть 1

Время на прочтение4 мин
Количество просмотров23K

В мае 2016 года в официальном репозитории Google на Github появился новый проект — flexbox-layout. Это менеджер макетов под Андроид, который предоставляет функциональность, схожую с CSS flexible box. В этой серии статей мы посмотрим на FlexboxLayout и попытаемся понять, как он работает, и как его лучше использовать.


Мы рассмотрим влияние XML-атрибутов на макет и поведение вложенных представлений. Чтобы было проще разбираться, я опубликовал приложение в Google Play, которое позволяет поэкспериментировать с различными вариантами. Со временем я выложу исходный код этого приложения, а пока предлагаю скачать его и поиграться с настройками.


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

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии7

Пример создания простой 2D игры для Android с использованием игрового движка Unity

Время на прочтение6 мин
Количество просмотров161K

Введение




Прежде всего, хочу сразу отметить, что я не являюсь профессиональным разработчиком. В этой статье я постараюсь изложить свой опыт создания игры «Feel Speed Racing». Данный материал, скорее всего не будет интересен тем, кто уже имеет большой опыт в разработке игр, но начинающим разработчикам, которые хоть немного работали с Unity думаю, будет интересно.
Читать дальше →
Всего голосов 19: ↑12 и ↓7+5
Комментарии15

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

Время на прочтение8 мин
Количество просмотров17K
Это статья о том, как организовать требования на крупном проекте с кучей подпроектов, которые постоянно изменяются; организовать требования так, чтобы читателям было счастливо и уютно их читать (насколько это возможно для технической документации), а писателям — писать.

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

То, что написано ниже, — не есть истина в последней инстанции, это лишь описание проблем, с которыми команда разработки сталкивается в работе с требованиями ежедневно, и инструменты, с помощью которых можно их решить.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии12

Drupal 8. Обучающие материалы и не только

Время на прочтение5 мин
Количество просмотров37K
Друзья, вы мне, конечно [1] [2], не поверите, но вышел Drupal 8. В последнее время поступает достаточно много вопросов на тему того, что почитать, посмотреть, послушать для изучения восьмерки. Очень многие чувствуют себя не вполне уверенно и задаются вопросами: переходить на неё или не переходить, жив Drupal или нет, и всем прочим.

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

image

Читать дальше →
Всего голосов 14: ↑10 и ↓4+6
Комментарии2

Какую библиотеку работы с HTTP в Android выбрать?

Время на прочтение6 мин
Количество просмотров68K
Представляю вашему вниманию перевод статьи «Which Android HTTP library to use?».

Для чего это вообще?


Сегодня почти все приложения используют HTTP/HTTPS запросы как своеобразный транспорт для своих данных. Даже если вы напрямую не используете эти протоколы, множество SDK, которые вы, скорее всего, уже включили в свои приложения (например, метрика, статистика падений, реклама), используют HTTP/HTTPS для работы с сетью. На сегодняшний день совсем немного существует библиотек, которые разработчик мог бы свободно использовать в своем проекте. И я постараюсь рассказать об основных из них в этом посте.
У Android-разработчиков есть много причин, чтобы сделать выбор в пользу сторонних библиотек, заместо уже встроенных API, таких как HttpURLConnection или Apache Client. Например:
Узнать зачем
Всего голосов 17: ↑15 и ↓2+13
Комментарии13

Если бы программисты делали блины (по кошерным методологиям)

Время на прочтение3 мин
Количество просмотров73K

Waterfall


Заказчик сообщает, что хочет блинов. Компания выделяет проджект менеджера, который говорит: «Говно вопрос! Наша компания специализируется по производству блинов! Мы сделаем вам офигенских блинов за две тысячи человеко-часов!»

Далее начинается аналитическая фаза. Бизнес-аналитик берет эксперта, и они денно и нощно заседают в офисе заказчика, потребляют халявный кофе и пончики, а также тщательно записывают бизнес-требования вплоть до толщины блинной корочки с точностью до микрона. Документы записываются на фирменных бланках компании, после чего заверяются подписью директора компании-заказчика, директора компании-исполнителя, стороннего консультанта по блинному производству, а также печатью Папы Римского. После окончания аналитической фазы на проект остается 1000 часов.
Читать дальше →
Всего голосов 109: ↑85 и ↓24+61
Комментарии41

Альтернативы сервису parse.com

Время на прочтение6 мин
Количество просмотров37K
Как известно, в следующем январе сервис Parse будет закрыт. Большинство разработчиков ищут альтернативу для этого сервиса. В одном из проектов guthub собралось достаточно много альтернатив, со ссылками и описанием. Перед вами — перевод этой страницы.

Часть 1: универсальные сервисы


Провайдеры, предоставляющие информацию в реальном времени, помечены (*).

AnyPresence MBaaS (Mobile backend as a service). Упрощает процесс создания мобильных приложений предприятия, работающих на разных устройствах, не ущемляя гибкость средств, доступных разработчику. Легок в использовании даже для неопытных пользователей. Опытные разработчики получают доступ к исходникам всех компонентов.

ApiOmat позволяет процессам предприятия работать как мобильным приложениям. Мобилизует сложные бизнес-структуры и процессы путём объединения существующих IT-систем с мобильными приложениями и устройствами. Его можно устанавливать прямо в дата-центре компании, что позволит работникам выполнять свою работу через приложения вне зависимости от их местонахождения.

Appcelerator Arrow (*) Состоит из двух основных компонентов, Builder и Cloud. Arrow Builder позволяет быстро создавать API, модели данных и соединители данных как через мастер настройки, так и через написание кода. Arrow Cloud – это эластичный облачный сервис, где выполняются API и происходит анализ их использования, плюс обеспечивается работа двух десятков смежных сервисов (гео, хранение фотографий и т.п.) с использованием ArrowDB

Appery.io Интегрированные сервисы MBaaS – чтобы разработчики могли сконцентрироваться на приложениях, не отвлекаясь на инфраструктуру.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии19
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Рязанская обл., Россия
Дата рождения
Зарегистрирован
Активность