Как стать автором
Обновить
47
0
Никита Галкин @galk_in

Backend developer

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

Волшебная сборка проекта на WordPress при помощи пакетных менеджеров и напильника

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


Сегодня я хочу поделиться с достопочтенной аудиторией Хабра своим подходом к организации автоматической сборки проекта на WordPress, который значительно экономит время при создании новых сайтов.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии14

Microservices. Как правильно делать и когда применять?

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



Автор: Вячеслав Михайлов



Монолитные приложения и их проблемы



Все прекрасно знают, что такое монолитное приложение: все мы делали такие двух- или трехслойные приложения с классической архитектурой:





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





Так или иначе, по мере роста и развития приложения, вы сталкиваетесь с проблемами монолитных архитектур:



  • сложность системы постоянно растет;
  • поддерживать ее все сложнее и сложнее;
  • разобраться в ней трудно — особенно если система переходила из поколения в поколение, логика забывалась, люди уходили и приходили, а комментариев и тестов нет);
  • много ошибок;
  • мало тестов — монолит не разобрать и не протестировать, поэтому обычно есть только UI-тесты, поддержка которых обычно занимает много времени;
  • дорого вносить изменения;
  • застревание на технологиях (например, я работал в компании, где с 2003 г. технологии до сих пор не изменились).


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


Читать дальше →
Рейтинг0
Комментарии6

Открытка-лабиринт. Подарок, который невозможно открыть, не разгадав головоломку

Время на прочтение4 мин
Количество просмотров61K
Однажды я принёс другу на день рождения подарок, завёрнутый в бумагу с узором лабиринта. Друг пошутил, что было бы здорово, если бы надо было по-настоящему найти путь, чтобы открыть подарок. Мы принялись обсуждать, как можно построить механический лабиринт, причём без использования какой-либо электроники.
Так родилась идея к следующему празднику создать открытку-головоломку. В этой статье я расскажу, как её изготовить и какие тонкости нужно учесть.


Лабиринт в процессе прохождения.
Читать дальше →
Всего голосов 151: ↑151 и ↓0+151
Комментарии51

Хосейн Рахман: Как в Jawbone проектируют hardware-продукты

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


Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:


Первая часть курса
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии0

Теги в социальных сетях и синтетические (флективные) языки

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

I. В чём проблема


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

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

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

Мы с #муж в ресторане.

С завтрашнего дня в #Москва.

Вернулись с #море.

Возникает очень странное чувство, некоторое языковое головокружение и раздвоение.
Читать дальше →
Всего голосов 19: ↑13 и ↓6+7
Комментарии32

Правила высокой эффективности

Время на прочтение2 мин
Количество просмотров12K
На днях собрал и переработал из двух разных статей единый список правил высокой эффективности. Чтобы формировать недостающие привычки работы — распечатал и повесил на стену рядом с рабочим местом.
Некоторые очень простые но очень эффективные приемы хочется помнить всегда.

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

Правила про автоматизацию и подобные вещи пропускаю. Здесь все любители автоматизировать, разве нет? :)
Читать дальше →
Всего голосов 18: ↑13 и ↓5+8
Комментарии8

10 лет «на коленке» и вынужденная эволюция — на заметку молодым

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

Здравствуйте, присаживайтесь


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

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

Делай так, чтобы не краснеть завтра


Однажды, лежащая на полке поделка становится полезной в работе, но когда мы ее делали, не уделили внимание аккуратности, поделка представляет функциональную ценность, но внешний вид не позволяет вынести на публику — вырезая буратино, держите руки чистыми, чтобы не заляпать.
Читать дальше →
Всего голосов 29: ↑19 и ↓10+9
Комментарии14

Беруши будущего с «выключателем» окружающего мира

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


Мы постоянно пишем о самых разных музыкальных гаджетах. Например, мы говорили об истории цилиндрического фонографа Томаса Эдисона, способах реанимации погнутой виниловой пластинки, "флейте забытых снов" и технологиях 3D-звука. Сегодня мы решили все-таки посмотреть на что-то более современное и рассказать о проекте команды Doppler – комплекте берушей под названием «Here», которые по вашему желанию регулируют звуки окружающего мира.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии13

Пулы потоков: ускоряем NGINX в 9 и более раз

Время на прочтение15 мин
Количество просмотров87K
Как известно, для обработки соединений NGINX использует асинхронный событийный подход. Вместо того, чтобы выделять на каждый запрос отдельный поток или процесс (как это делают серверы с традиционной архитектурой), NGINX мультиплексирует обработку множества соединений и запросов в одном рабочем процессе. Для этого применяются сокеты в неблокирующем режиме и такие эффективные методы работы с событиями, как epoll и kqueue.

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

Каждый процесс расходует память и каждое переключение между ними требует дополнительных циклов процессора, а также приводит к вымыванию L-кэшей

У медали есть и обратная сторона. Главной проблемой асинхронного подхода, а лучше даже сказать «врагом» — являются блокирующие операции. И, к сожалению, многие авторы сторонних модулей, не понимая принципов функционирования NGINX, пытаются выполнять блокирующие операции в своих модулях. Такие операции способны полностью убить производительность NGINX и их следует избегать любой ценой.

Но даже в текущей реализации NGINX не всегда возможно избежать блокировок. И для решения данной проблемы в NGINX версии 1.7.11 был представлен новый механизм «пулов потоков». Что это такое и как его применять разберем далее, а для начала познакомимся с нашим врагом в лицо.
Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии58

Отправка Nginx-логов в Google Analytics

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

С наших Download-серверов каждый день скачивается несколько миллионов драйверов (статичных .exe и .zip файлов). Для анализа поведения пользователей перед нами встала задача посчитать следующие параметры: когда, сколько, как часто и даже кто именно скачивает драйверы.

Самым очевидным решением было бы использовать инструменты типа AWstat, GoAccess, ELK stack или Splunk, а в крайнем случае собирать логи Nginx.

Но у каждого варианта есть свои минусы: неудобный интерфейс, скудность данных, сложность настройки и, самое главное, отсутствие возможности строить сегменты в пользовательских отчётах.

И тогда мы решили заставить Nginx самостоятельно отправлять события в Google Analytics сразу же после скачивания файла. Мы также смогли передать в GA уникальный идентификатор пользователя ClientID.
В результате мы получили аналитику по статичным файлам, к которым раньше невозможно было привязать счетчик GA.

Под катом готовый конфиг и примеры работы нашей системы.
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии14

PHP-Дайджест № 64 – интересные новости, материалы и инструменты (1 – 14 июня 2015)

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


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии5

Бен Хоровитц: Увольнения, повышения и переводы по службе

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


Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:


Первая часть курса
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии2

Несколько интересностей и полезностей для веб-разработчика #44

Время на прочтение6 мин
Количество просмотров40K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

ExpandJS



Огромный проект, где спецификация веб-компонентов используется на полную катушку. ExpandJS это набор из более чем 80 компонентов и более 350 различных функций для работы с ними. И все это доступно как каркас, но так же и в трендовом Material Design стиле.

<!-- Import elements -->
<link rel="import" href="../mat-content.html">
<link rel="import" href="../mat-drawer.html">
<link rel="import" href="../mat-header-panel.html">
<link rel="import" href="../mat-shell.html">

<!-- Application scaffold -->
<mat-shell theme="...">

    <mat-drawer>...</mat-drawer>

    <mat-header-panel>
        <mat-header>...</mat-header>
        <mat-content>...</mat-content>
    </mat-header-panel>

    <mat-drawer right>...</mat-drawer>

</mat-shell>

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

WordPress для параноиков, часть 1

Время на прочтение9 мин
Количество просмотров62K
Итак, если вы счастливый владелец nginx, знатный параноик и за каким-то чертом решили поставить wordpress, то… Первое, что пришло в голову — это «надо ограничить сему творению свободу!».

Настройки учетной записи, как и настройки php5-fpm, я опущу, так как у каждого свои тараканы, а кто-то вообще на apache запускает. Но вот общие для Wordpress я опишу в этой части. Напишу о том, что сделал, что получилось и почему.
Читать далее
Всего голосов 55: ↑49 и ↓6+43
Комментарии10

Оптимизация стоимости при работе с Amazon S3

Время на прочтение3 мин
Количество просмотров23K
Amazon S3 удобно использовать для хранения файлов любых форматов. Кроме удобного API получаем практически безразмерное хранилище. Отличная доступность и невысокая стоимость делают S3 мегапривлекательной для молодых и небольших проектов.

Однако со временем файлов становится все больше. А платить придется не только за новые данные, но за всю историю. Кроме этого, Amazon дерет деньги за GET и POST запросы, а также за трафик.

Несмотря на низкую стоимость на старте, с ростом это решение будет обходиться все дороже.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии10

Почему существуют секс и разделение на мужчин и женщин?

Время на прочтение5 мин
Количество просмотров61K
Казалось бы, было бы так просто и логично, если бы не было в природе деления на мужской и женский пол. Зачем вообще нужно половое размножение, если можно прекрасно делиться одному организму до скончания веков? Ведь, на поиски полового партнера нужны время и силы. А, если ты никому не понравишься, или, вообще, никого не найдешь, то ты не размножишься вообще.


Читать дальше →
Всего голосов 85: ↑66 и ↓19+47
Комментарии97

10 советов фрилансерам, как расставлять приоритеты задачам

Время на прочтение9 мин
Количество просмотров27K
Вы когда-нибудь задумывались: «А сколько стоит пароход построить?”, “А сколько — дизайн-макет сделать?”, “А из чего складывается такая цена?»

Пароход — штука архисложная; его стоимость — это цена на материалы (металл, пластик и что там ещё нужно), оплата труда рабочих верфи, амортизация на износ оборудования, оплата инженерных изысканий и так далее и тому подобное…

А что с дизайн-макетом? Из чего складывается его цена? Ну, допустим, вложим в стоимость “амортизацию оборудования” — деньги на ПК и ПО, которые регулярно нужно обновлять. А что ещё? Остается, собственно, только оплата труда дизайнера-верстальщика. А как её рассчитать? Тут способов два: либо оплата за человеко-часы (сколько времени потратил — столько и оплатили); либо другой более распространенный подход — сдельная оплата (т.е. оценил бриф-ТЗ на макет, прикинул его сложность, назвал стоимость).

Что в первом случае (прямо), что во втором (косвенно), стоимость будет зависеть от времени, которое вы тратите на свою работу. А из чего складывается это время? Есть факторы внутренние: мотивация, навыки работы, муза, в конце концов… Они подвластны лишь вашей силе воли, тут дза-дзен и прочее самосовершенствование вам в помощь. Но остаются ещё и факторы внешние: от обстановки в рабочем кабинете до методологии, по которой вы работаете, — и с ними всё интереснее…


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

Google BodyBrowser

Время на прочтение1 мин
Количество просмотров2.6K
Гугл продолжает нас радовать технологическими демками будущих веб технологий.
На сей раз в публичный доступ выложен BodyBrowser, проверять в chrome 9/canary и firefox 4.
Всего голосов 70: ↑42 и ↓28+14
Комментарии22

Отслеживание событий с помощью _trackEvent в Google Analytics

Время на прочтение2 мин
Количество просмотров3.3K
Для отслеживания событий на сайте в Google Analytics служит метод метод _trackEvent.

Сигнатура метода: _trackEvent(category, action, opt_label, opt_value)

category (обязательно) — имя категории для группы объектов, которые вы хотите отслеживать (например «Видео»).
action (обязательно) — действие, которое определяет событие (например «Воспроизведение»).
opt_label (по желанию) — описание события (например название видеоролика).
opt_value (по желанию) — целое число, которое представляет числовые данные о событии (например рейтинг в случае голосования за видеоролик).

Примеры использования:

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

«Свежий Взгляд онлайн» — сервис для проверки текстов на предмет паронимии

Время на прочтение1 мин
Количество просмотров10K
Одна из самых распространенных стилистических погрешностей — расположение близко по тексту фонетически и морфологически сходных слов, чей параллелизм никак не мотивирован (так называемая паронимия, или «нечаянная тавтология»). Механический характер этой погрешности подвиг Д. Кирсанова (да, того самого) на написания отличной утилиты, которую он назвал «Свежий взгляд». Однако эта программа давно не обновлялась, да и сам такой функционал логично реализовать в качестве сервиса. И он появился — Sergey Kurakin перевел не новую программу на веб-рельсы в рамках своего проекта quittance.ru тут.
Конечно, слепое применение такого сервиса не сделает ваши тексты блестящими. Однако кое-какие грубые ошибки можно легко заметить)
Всего голосов 31: ↑28 и ↓3+25
Комментарии12

Информация

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