Pull to refresh
1
0
Евгений Болдырев @boldyrev_gene

User

Send message

Data Engineer or die: история одного разработчика

Reading time5 min
Views13K
В начале декабря я совершил роковую ошибку принял поворотное решение в своей жизни разработчика и перешёл в команду Data Engineering (DE) внутри компании. В статье я поделюсь некоторыми наблюдениями, которые я сделал за два месяца работы в команде DE.


Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments17

Задачи, микрозадачи, очереди и планы

Reading time8 min
Views71K
Предлагаю вашему вниманию перевод статьи «Tasks, microtasks, queues and schedules» Джейка Арчибальда (Jake Achibald), занимающего должность Developer Advocate for Google Chrome.

Когда я сказал своему коллеге Мэту Ганту, что подумываю о написании статьи об очерёдности микрозадач и порядке их исполнения внутри событийного цикла браузера, он сказал «Джейк, буду честен, я об этом читать не стану». Что ж, я всё же написал, поэтому откиньтесь на спинку кресла и давайте вместе в этом разберёмся, ладно?

На самом деле, если вам будет проще посмотреть видео, есть замечательное выступление Филиппа Робертса на JSConf, которое рассказывает о событийном цикле – оно не покрывает микрозадачи, но в остальном является отличным вступлением в тему. В любом случае, погнали…

Давайте рассмотрим следующий код на JavaScript:
console.log('script start');

setTimeout(function() {
  console.log('setTimeout');
}, 0);

Promise.resolve().then(function() {
  console.log('promise1');
}).then(function() {
  console.log('promise2');
});

console.log('script end');

Как вы думаете, в каком порядке должны вывестись логи?
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments9

10 книг по UI/UX дизайну, которые стоит прочитать

Reading time4 min
Views139K


Стать отличным UI/UX дизайнером не так просто: нужно знать основы, постоянно отслеживать последние тенденции и использовать их на практике. Каждый из нас время от времени обращается за советом к коллегам или друзьям, но когда нужна проверенная информация, лучшие советчики – это специализированные издания.

У многих UI дизайнеров есть своя личная коллекция любимых книг. Сегодня мы приготовили список из 10 крутых книг по дизайну, которые по той или иной причине могли пройти мимо вас.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments6

Главные причины медленной работы Angular-приложений

Reading time9 min
Views18K
Angular — это быстрый фреймворк. Он даёт разработчикам обширные возможности по улучшению производительности за счёт тонких настроек. Правда, программистам практически никогда не требуется делать что-то особенное для того, чтобы создавать чрезвычайно производительный код, работая над обычными приложениями.

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



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

Этот материал посвящён разбору основных причин того, что Angular-приложения становятся медленными по мере роста их масштабов. При этом приведённые здесь советы можно будет применить при разработке крупных проектов на любом фреймворке, а не только на Angular.
Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments39

Как в одиночку запустить продукт, если вы разработчик: советы от создателя Laravel Тейлора Отвела. Часть 1: Аудитория

Reading time5 min
Views13K


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


Лучше брать пример с Тэйлора Отвела, который создавал Laravel в свободное от основной работы время. В ноябре он опубликовал мини-серию подкастов, в которой поразмыслил над успехом своих программных продуктов — за последние 5 лет они принесли ему больше 10 млн долларов. В четырех выпусках подкаста Тейлор поделился советами, которые затрагивают ряд тем от поиска идеи и формирования лояльной аудитории до сохранения мотивации и преданности качеству.


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

Итак, поехали.

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments13

Все, что вам нужно знать об обнаружении изменений в Angular

Reading time8 min
Views84K
Наткнулся на хорошую статью об устройстве Angular'овского механизма обнаружения изменений (change detection). Т.к. тема достаточна важна, но при этом недостаточно глубоко раскрыта даже на англоязычных ресурсах, а найти русскоязычные материалы на эту тему, вообще, не представляется возможным, решил перевести данную статью.
Перевод под катом
Total votes 21: ↑20 and ↓1+19
Comments8

Сколько английских слов надо выучить для свободного общения и чтения статей? (спойлер: 3000)

Reading time4 min
Views78K


Словарный запас – один из основных компонентов, на котором строится программа обучения иностранному языку. Грамматика, аудирование, говорение – все эти аспекты так или иначе его используют. Но слов в языке очень много (в английском – более миллиона). Какие из них необходимо выучить и можно ли оптимизировать их запоминание?
Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments106

Веб-приложение на Node и Vue, часть 1: структура проекта, API, аутентификация

Reading time13 min
Views92K
Перед вами — первый материал из серии, посвящённой разработке полноценного веб-приложения, которое называется Budget Manager. Основные программные средства, которые будут использованы в ходе работы над ним — это Node.js для сервера, Vue.js для фронтенда, и MongoDB в роли базы данных.



Эти материалы рассчитаны на читателей, которые знакомы с JavaScript, имеют общее представление о Node.js, npm и MongoDB, и хотят изучить связку Node-Vue-MongoDB и сопутствующие технологии. Приложение будем писать с нуля, поэтому запаситесь любимым редактором кода. Для того, чтобы не усложнять проект, мы не будем пользоваться Vuex и постараемся сосредоточиться на самом главном, не отвлекаясь на второстепенные вещи.

Автор этого материала, разработчик из Бразилии, говорит, что ему далеко до JavaScript-гуру, но он, находясь в поиске новых знаний, готов поделиться с другими тем, что ему удалось найти.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments3

Разработка web API

Reading time9 min
Views287K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Total votes 235: ↑224 and ↓11+213
Comments128

Node.js, Express и MongoDB: API за полчаса

Reading time11 min
Views241K
Начинающему программисту разработка для Node.js может показаться сущим кошмаром. Виной всему – гибкость этой платформы и отсутствие чётких руководств. Но, на самом деле, всё не так уж и страшно.


Вот, например, типичная задача: разработка REST API, серверной части некоего приложения. Обилие собственных возможностей Node и множество дополнительных модулей, которые способны помочь в решении этой задачи, способны завести новичка в тупик, вызванный богатством выбора. Основные вопросы здесь заключаются в подборе компонентов и в настройке их совместной работы.
Читать дальше →
Total votes 39: ↑30 and ↓9+21
Comments30

Использование RxJs для связывания компонентов приложения

Reading time6 min
Views29K

Способы «общения» компонентов


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

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

image


Это чем-то напоминает WI-FI в кафе, когда все могут обмениваться сообщениями со всеми, но при этом есть роутер (диспетчер), который обеспечивает существование «эфира» и отдает сообщения только тем, кому они адресованы.

Такая организация позволяет, например, «бесплатно» получить слабое связывание компонентов. Недостаток ее в том, что при росте числа компонентов и соответственно числа событий становится сложно уследить за именами событий и за тем, кому какие события нужны для правильной работы. Появляются пространства имен и имена событий из чего-то типа «Событие1» превращаются в «Состояние_приложения1.Компонент2.Событие1». И что совсем невозможно делать при такой организации это компоновать события. Например требование «сделай что-то когда событие Б возникнет после двух событий A» выливается в тонну локальных переменных, хранящих последние данные из событий и счетчики самих событий.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1+123
Comments44

Руководство по собеседованию на вакансию PHP-программиста

Reading time22 min
Views254K
Вездесущий… это определённо то слово, которым можно описать язык PHP по отношению к вебу. Он действительно вездесущ. В настоящее время, среди всех серверных языков программирования, PHP используется наиболее широко. На нём написаны более 80% сайтов, при этом следующий по популярности ASP.NET со своими 17% остаётся далеко позади.



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

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

Как же отличить тех, кто обладает реальной компетентностью в PHP (не говоря уже о тех, кто входит в 1% наиболее опытных кандидатов) от тех, у кого только поверхностные знания?
Читать дальше →
Total votes 96: ↑73 and ↓23+50
Comments107

Просто Angular

Reading time10 min
Views129K

Введение


8-9-го декабря 2016 года была проведена первая конференция по Angular в Бельгии. Игор Минар (ведущий разработчик Angular) выступил в качестве основного докладчика с несколькими интересными объявлениями относительно того, по какому графику будет выпускаться Angular. И представьте себе, в марте 2017 года нас ждет релиз Angular 4. При этом, на данный момент уже опубликована бета-версия.


От переводчиков


Всем привет, с вами Максим Иванов и Дмитрий Сергиенков, и сегодня мы выясним куда делась третья версия, и почему мы по-прежнему можем быть верны Angular. Сейчас начинающему фронтенд-разработчику, изучающему JavaScript, довольно трудно определиться: какой же фреймворк или библиотеку им взять и изучить, оставаясь в тренде? Конечно, без слова React, сейчас не обходится ни один разговор на тему фронтенда, однако, в свое время я начал с первой версии Angular, начитался много руководств по написанию фронтенда на ES6 (с классами и прочим добром) и до сих пор не жалею. Да, вы можете писать корпоративные приложения с использованием только jQuery, но по мере развития и сложности проекта вы начнете закапывать себя в спагетти-коде, смешивая логику и представление, MV*-фреймворки же этого сделать вам не дадут.

Total votes 36: ↑35 and ↓1+34
Comments43

Domain-Driven Design: стратегическое проектирование. Часть 1

Reading time14 min
Views106K


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

Данный подход использовал Вон Вернон в своей книге «Реализация методов предметно-ориентированного проектирования». Цель написания этой книги: дать возможность разработчикам совершить полет на самолете DDD (в детстве автор зачастую путешествовал со своей семьей на небольших самолетах). Вид с высоты дает более широкое представление о проблемах моделирования, не давая застрять в различных технических деталях. Наблюдая ландшафт DDD таким способом, можно осознать преимущества как стратегического, так и технического проектирования. Подробнее – под катом!
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments64

Идеальный программист. Часть 1

Reading time9 min
Views91K
Статья-конспект по книге Роберта Мартина «Идеальный программист». После прочтения книги у меня поменялось отношение к программистической жизни. В книге рассматривается процесс написания кода, сам код, отношение к задачам, TDD и много других полезностей. Читать нужно разработчикам и менеджерам проектов. Частично применимо к дизайнерам.


Читать дальше →
Total votes 77: ↑61 and ↓16+45
Comments201

Идеальный программист. Часть 2

Reading time10 min
Views41K


Это вторая часть статьи по книге Роберта Мартина «Идеальный программист». В первой части статьи мы начали изучать, чем идеальный программист отличается от не идеального. Рассмотрели ответственность, научились говорить «нет» нереальным задачам и говорить «да» так, чтобы заказчик был, уверен, что всё будет готово вовремя. Мы определились, как писать код, принимать помощь и помогать другим. Продолжим.
Читать дальше →
Total votes 50: ↑37 and ↓13+24
Comments19

Без ТЗ: как разработчики в такое ввязываются

Reading time7 min
Views34K


Результаты опроса из прошлой статьи меня шокировали. Ведь когда разработчики берутся за проект без ТЗ, умирает один неоперившийся аналитик и 10 маленьких котят. Зачем вы так? Как же так получается?



Почему так происходит? Что можно сделать? Вот несколько версий:

Версия 1: боюсь потерять клиента


Всем знаком этот первобытный страх! Он достался нам в геноме от пещерных программистов! Если я упущу этого клиента, то мне нечего будет жрать!!! Возьмите себя в руки, председатель!
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments212

Domain-Driven Design: тактическое проектирование. Часть 2

Reading time16 min
Views78K


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

Для реализации конкретного ограниченного контекста используется ряд более низкоуровневых тактических шаблонов, которые имеют технический характер, то есть эти шаблоны используются для решения технических задач. Такими шаблонами являются: сущность, объект-значение, службы предметной области, события, модули, агрегаты, фабрики и хранилища. Именно о них пойдет речь в этой статье.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments27

Эффективное хранение: как мы из 50 Пб сделали 32 Пб

Reading time9 min
Views24K

Видео доклада




Текстовая Версия


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


Индексы и тела писем составляют 15 % объёма, файлы — 85 %. Место для оптимизаций надо искать в файлах (аттачах в письмах). На тот момент у нас не была реализована дедупликация файлов; по нашим оценкам, она может дать экономию в 36 % всего объёма почты: многим пользователям приходят одинаковые письма (рассылки социальных сетей с картинками, магазинов с прайсами и т.д.). В этом посте я расскажу про реализацию такой системы, сделанной под руководством PSIAlt.
Total votes 87: ↑84 and ↓3+81
Comments88
1
23 ...

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity