Как стать автором
Обновить
-1
0
Mike Kosulin @MikeKosulin

CTO

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

Анализ v_2.0 статьи «Начальник, хочу работать из дома»

Время на прочтение8 мин
Количество просмотров8.9K
Недавно я предпринял попытку провести анализ статьи «Начальник, хочу работать из дома», опубликованной на Хабрахабр. Ключевые аспекты выбора статьи – это высокая востребованность самой темы и высокий рейтинг статьи, в частности.

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

В итоге, рейтинг мой статьи разделился почти пополам 37 «против» и 39 «за», собрав больше 200 комментариев, что само по себе подтвердило, что тема в тренде.

Прежде всего хочу выразить благодарность всем принявшим участие в обсуждении.
Читать дальше →
Всего голосов 17: ↑9 и ↓8+1
Комментарии20

Создание библиотеки компонентов с использованием Storybook

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

Введение


image

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

Компании все чаще прибегают к написанию интерфейса состоящего из множества независимых компонентов, которые могут быть использованы повторно. Многие дизайнеры создают дизайн проект который описывает каждую деталь дизайна. Они используют ряд инструментов для документирования интерфейсов, первые которые приходят на ум это axshare.com и zeplin.com. Тот же фотошоп, в котором у них все разложено строго по папочкам. Это позволяет им с легкостью работать над дизайном проекта, обновлять и добавлять новые страницы, просто копируя уже имеющиеся наработки.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

SMS в Telegram или интеграция мессенджеров и IP-телефонии

Время на прочтение2 мин
Количество просмотров21K
Замечая, что уже каждый второй использует мессенджеры для работы, мы решили интегрировать облачную АТС с мессенджерами. Теперь, можно мгновенно узнать о пропущенном звонке важного клиента в Telegram или чате Slack. Либо получить SMS уведомление туда же. Если вам это может быть полезно, приглашаем под кат.


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

React, встроенные функции и производительность

Время на прочтение13 мин
Количество просмотров29K
Когда мне приходится рассказывать о React, или когда я даю первую лекцию учебного курса, показывая всякие интересные вещи, кто-нибудь непременно спросит: «Встроенные функции? Слышал, они медленные».



Этот вопрос появлялся далеко не всегда, но в последние несколько месяцев мне, в роли автора библиотеки и преподавателя, приходится отвечать на него чуть ли не каждый день, иногда — на лекциях, иногда — в твиттере. Честно говоря, я от этого уже устал. К сожалению, я не сразу сообразил, что лучше изложить всё в виде статьи, которая, надеюсь, окажется полезной для тех, кто задаётся вопросами производительности. Собственно говоря — перед вами плод моих трудов.
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии23

Существует ли идеальный планировщик личных задач? Разработка модульного планировщика

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

Некоторое время назад, я, как активный пользователь планировщиков личных задач, открыл для себя один значительный недостаток – несмотря на их несчётное количество, невозможно найти «тот самый», который удовлетворял бы тебя по всем пунктам.


Нет, само по себе это абсолютно нормально, так как программу разрабатывал один или несколько разработчиков, которые в итоге пришли к своему пониманию того, “как пользователю будет лучше”. Да и к тому же, невозможно в одной программе уместить всё, что теоретически может захотеть сферический пользователь в вакууме. Или возможно?




Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии54

Промисы в ES6: паттерны и анти-паттерны

Время на прочтение10 мин
Количество просмотров51K
Несколько лет назад, когда я начал работать в Node.js, меня приводило в ужас то, что сейчас известно как «ад коллбэков». Но тогда из этого ада выбраться было не так уж и просто. Однако, в наши дни Node.js включает в себя самые свежие, самые интересные возможности JavaScript. В частности, Node, начиная с 4-й версии, поддерживает промисы. Они позволяют уйти от сложных конструкций, состоящих из коллбэков.

image

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

Обратите внимание на то, что здесь я буду использовать стрелочные функции. Если вы с ними не знакомы, стоит сказать, что устроены они несложно, но в этом случае советую прочесть материал об их особенностях.
Читать дальше →
Всего голосов 33: ↑28 и ↓5+23
Комментарии63

44 урока управления технарями

Время на прочтение7 мин
Количество просмотров45K
Предлагаю читателям Хабра мой перевод статьи «44 урока управления технарями» Славы Ахмечета, сооснователя RethinkDB. В оригинальной статье используется термин «инженеры», но в контексте статьи я буду использовать также термин «технари» – более емкое, как мне кажется, с точки зрения русского языка слово, охватывающее профессии в сфере ИТ, частью которой я тоже являюсь.

Немного об оригинальном тексте. Статья была написана в 2014 году в личном блоге автора, в октябре 2016 компания RethinkDB не смогла выйти в прибыль и закрылась, о чем на Хабре писали тут и тут, а Слава поразмышлял об этом здесь.

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

Источник
Читать дальше →
Всего голосов 62: ↑49 и ↓13+36
Комментарии90

Относительно надежные способы получения дохода на биржах криптовалют

Время на прочтение12 мин
Количество просмотров67K
В интернете, реклама, поисковые системы или в публичных чатах, постоянно появляются люди, которые с готовностью вам расскажут, как можно заработать много денег без труда и риска. При ближайшем рассмотрении видно что это скорее всего либо мошенник, либо продвигает проекты других мошенников, получая за это некоторую прибыль как рекламодатель. Либо вам будут предлагаться не самые честные способы отъема денег у населения, типа накруток, спама или перепродажи тех же 'кредитов' под 100500% недалеким людям.

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

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

Будьте готовы потратить только те средства, которые готовы потерять.
Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Комментарии51

Что должен знать о поиске каждый разработчик

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

Хотите внедрить или доработать функцию поиска? Вам сюда.



Спросите разработчика: «Как бы вы реализовали функцию поиска в своем продукте?» или «Как создать поисковую систему?». Вероятно, в ответ вы услышите что-нибудь такое: «Ну, мы просто запустим кластер Elasticsearch: с поиском сегодня всё просто».

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

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

Цель статьи


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

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

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

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

Как за полтора дня собрать фейсбучного чат-бота из подручных материалов

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


Начинаем рассказывать про некоторые проекты нашего хакатона. Сегодня – бот, выдающий нашему ученику в ФБ несколько популярных твитов с только что взятым на изучение словом. Получился эдакий микро-тьюториал по Chatfuel, удобному и простому инструменту сборки таких ботов из «кубиков».
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

О выборе структур данных для начинающих

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

Часть 1. Линейные структуры


Массив


Когда вам нужен один объект, вы создаёте один объект. Когда нужно несколько объектов, тогда есть несколько вариантов на выбор. Я видел, как многие новички в коде пишут что-то типа такого:

// Таблица рекордов
int score1 = 0;
int score2 = 0;
int score3 = 0;
int score4 = 0;
int score5 = 0;

Это даёт нам значение пяти рекордов. Этот способ неплохо работает, пока вам не потребуется пятьдесят или сто объектов. Вместо создания отдельных объектов можно использовать массив.

// Таблица рекордов
const int NUM_HIGH_SCORES = 5;
int highScore[NUM_HIGH_SCORES] = {0};

Будет создан буфер из 5 элементов, вот такой:



Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии32

Создание Tinkoff Design System. UI Kit, версионирование и витрина компонентов

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

В предыдущей публикации я рассказал о том, как мы пришли к пониманию необходимости создания дизайн-системы, и какой профит мы можем получить от ее внедрения. И, конечно, процессы создания и внедрения не такие простые, как кажутся на первый взгляд. Мы столкнулись с рядом серьезных проблем, которые нам предстояло решить. Именно о процессе создания и трудностях пойдет речь в этой статье.
Читать дальше →
Всего голосов 60: ↑44 и ↓16+28
Комментарии39

Как принимать платежи в мобильном приложении: токенизация, NFC, оптическое сканирование и другие плюшки в одном SDK

Время на прочтение8 мин
Количество просмотров23K
Я уже рассказывал ранее на примере Android SDK, как не ограничиваясь фреймом и WebView, встроить нативную форму приема платежей по банковской карте в мобильное приложение, и при этом не попасть под аудит PCI DSS. С тех пор наше SDK довольно существенно расширилось и к обычной форме ввода карты в Android и iOS добавился такой функционал:
— React Native библиотека для Android и iOS
— кастомизация верстки layout формы с реквизитами карты
— функция оптического сканирования карты
— прием бесконтактных платежей в Android по технологии NFC
В этой публикации я расскажу что вообще можно делать с платежами в мобильных приложениях, какие есть лайфхаки и подводные камни, и напоследок приведу пример кода демо-приложения и расскажу, как списать карточный долг с друга при помощи NFC ридера своего смартфона.

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

Cоздаём компонент карт Google Maps API с помощью VueJs2

Время на прочтение5 мин
Количество просмотров23K
Google Maps API — это сервис геолокации. С помощью этого сервиса мы можем отобразить карту и места на карте.

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

Чтобы создать компонент на основе статьи, нужно самостоятельно подготовить «hello word» приложение на VueJs2 с использованием es6. Итак по порядку:
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии24

Звоним бесплатно, используя блокчейн-сервис ENUMER

Время на прочтение14 мин
Количество просмотров26K
В статье рассказывается о децентрализованной реализации протокола IP-телефонии ENUM на базе блокчейна криптовалюты Emercoin. Дано описание системы ENUMER, её отличие от других реализаций ENUM. Также приведены инструкции по разворачиванию узла ENUMER и дан пример конфигурации VOIP АТС FreeSWITCH для работы с ENUMER.



Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии23

Ожидание длиной в 15 лет. Nginx Application Server

Время на прочтение5 мин
Количество просмотров58K
Начиная с момента появления Nginx в 2004 году, мы все задавались вопросом: когда же на nginx можно будет запускать приложения? Мы запускали PHP в php-fpm и на апаче, запускали Python через uWSGI, иногда жили с Apache, а если нам нужны были разные версии PHP — жили с зоопарком из FPM-ов.

image

Только что на конференции NginxConf в Портленде Nginx, Inc. объявил о запуске Nginx Application Platform. ITSumma тестировала один из его компонентов, собственно сам Application Server под названием Nginx Unit с закрытой версии. В этом посте мы расскажем о том, как выглядит Nginx Unit, и как на нем запускать приложения.
Читать дальше →
Всего голосов 131: ↑125 и ↓6+119
Комментарии119

Как определить мобильного оператора и домашний регион по номеру телефона

Время на прочтение5 мин
Количество просмотров54K
Когда мы пытаемся определить какому оператору принадлежит номер телефона, то обычно смотрим на его DEF код. Например, если номер начинается на 916, то это МТС, на 968 – Билайн, 926 – Мегафон (все зависит от вашего региона). Но этот метод очень условный и совершенно не подходит когда нужны точные данные. В реальности все сложнее: DEF коды часто делят между собой несколько операторов, и совсем необязательно, что искомый номер относится к операторам большой четверки. Ну и наконец, номер можно просто портировать.

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

Сразу оговорюсь, что домашний регион абонента, по большому счету, никак не связан с текущим месторасположением пользователя, т.е. определяемый регион отвечает на вопрос «Откуда номер?», а не «Где пользователь?».
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии21

Основы Docker за Х часов и Y дней

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

0. Вступление


Цель данной статьи собрать в небольшую кучку основную информацию, минимально достаточную для того, чтобы начать работать с докер на ежедневной основе и удалить с рабочей машины локально установленные apache, mysql, virtualenv, python3, mongodb, memchaced, redis, php5, php7 и весь остальной зоопарк, который мы используем при разработке, и который зачастую еще и конфликтует между собой от версии к версии.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии16

Небезопасный cross-origin resource sharing

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

 
Cross-origin resource sharing — технология современных браузеров, которая позволяет предоставить веб-странице доступ к ресурсам другого домена. В этой статье я расскажу об этой технологии, призванной обеспечить безопасность, или наоборот, поставить веб-приложение под удар.

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

Практика формирования требований в ИТ проектах от А до Я. Часть 3. Функции системы и Границы проекта

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

Об авторских тренингах на тему: «Обучение проектированию ПО. Функции системы» подробнее можно узнать на моем YouTube канале

VI Определяем функции системы и границы проекта


Каждая модель ограничена в своих ответах, но нет ограничения на то, как и что моделирует модель, как нет ограничения на человеческую мысль
Дуглас Т. Росс


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

Цель данной группы работ: максимально полно определить набор функций, который должен выполнять целевой продукт, для удовлетворения выявленных потребностей заказчика. Отобрать те из них, которые, могут быть реализованы в рамках текущего проекта.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии7

Информация

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