Pull to refresh
0
0
Send message

Нанимая, мы создаем команду. Удерживая, мы создаем историю! (часть 1)

Level of difficulty Easy
Reading time 8 min
Views 1.3K

В любой организации возникает необходимость построения процессов найма и удержания сотрудников. На основе моего 13-летнего опыта управления и развития IT проектов в сферах Food Tech и HR Tech, я неоднократно сталкивался с этим вызовом. Однако, создание эффективного коллектива требует соблюдения баланса: вы не только привлекаете и развиваете новичков, но и сохраняете опытных членов команды.

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

Читать далее
Total votes 2: ↑1 and ↓1 0
Comments 0

Лучшие бесплатные коллекции векторных иконок

Reading time 2 min
Views 332K
Привет, Хабр! Сегодня я хочу представить вам огромную коллекцию из 51 набора бесплатных векторных иконок. Да, есть потрясающие ресурсы Flaticon или Iconfinder, но бывают случаи, когда необходима именно группа иконок в едином стилистическом оформлении. Определиться с выбором, вам поможет эта подборка. Я старался собрать не как можно больше, а действительно самое лучшее.

Среди веб-разработчиков существует много споров о том, что лучше: иконочный шрифт или SVG спрайты? Четкого ответа на этот вопрос нет. Каждый выбирает свое. Данные наборы иконок вас неограничиывают в выборе, поскольку представлены в различных форматах: @font-face, SVG, EPS, AI, PSD, Sketch.

В целом данная подборка содержит более 10 000 иконок, охватывающих множество категорий: интерфейсы, технологии, наука, спорт, маркетинг, среда, транспорт и тд. Полые, заполненные, цветные, во Flat, Material, Elegant, Cartoon, Hand drawing стилях.

Responsive Icons (100 иконок, PSD, AI, EPS, SVG)


Responsive Icons

Читать дальше →
Total votes 91: ↑82 and ↓9 +73
Comments 23

У нас проблемы с промисами

Reading time 16 min
Views 234K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

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

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи
Total votes 139: ↑136 and ↓3 +133
Comments 121

Юзабилити форм авторизации

Reading time 3 min
Views 38K
Помните, как обычно выглядят формы для входа на сайт какого-нибудь магазина или сервиса? Вот типичный пример:



У вас всегда получалось войти на сайт с помощью такой формы с первого раза? Не было никаких проблем? Лично для меня эти формы — боль и страдания. Я пользуюсь огромным количеством разных сервисов, поэтому далеко не всегда помню, на каких уже регистрировался и как именно. А еще у меня 5 адресов почты и минимум 6 соц. сетей. Вы знаете, я даже иногда удивляюсь, когда получается авторизоваться с первого раза. Знакомо? Под катом альтернативный подход к интерфейсу входа на сайт, частично облегчающий жизнь.
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Comments 60

Собеседование на должность JavaScript разработчика

Reading time 4 min
Views 287K


Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
Читать дальше →
Total votes 126: ↑115 and ↓11 +104
Comments 313

Выбираем панель управления хостингом

Reading time 14 min
Views 183K
panels

Панелью управления хостингом называется программный инструмент, позволяющий через графический интерфейс управлять веб-сервером и размещенными на нем сайтами. C помощью панели управления можно выполнять такие операции, как управление почтовыми сервисами, FTP-аккаунтами, базами данных, добавление и удаление доменов и поддоменов, загрузка файлов, просмотр статистики по трафику, настройка предустановленных скриптов и другие.

Как отдельный продукт панели управления хостингом стали широко использоваться в конце 1990-х годов. За прошедшее с тех пор время они очень изменились и усовершенствовались. Сегодня на рынке представлено огромное количество решений для управления хостингом — как свободных, так и проприетарных. Как из всего этого многообразия выбрать действительно стоящий продукт?

В Интернете можно найти публикации, в которых сравниваются имеющиеся панели (вот, например, неплохой переводной материал; см. также здесь). Мы решили составить собственный обзор, в котором акценты расставлены несколько по-иному, чем в опубликованных ранее. Одним из основных критериев, положенных в основу нашего обзора, является поддержка панелями веб-серверов и их комбинаций. Кроме того, в нашей статье мы рассматриваем продукты, в публикации по ссылкам выше не вошедшие.
Читать дальше →
Total votes 64: ↑55 and ↓9 +46
Comments 63

Правильное использование promise в angular.js

Reading time 5 min
Views 108K
imageВ процессе использования angular.js трудно обойтись без объекта $q (он же promise/deferred), ведь он лежит в основе всего фреймворка. Deferred механизм является очень простым и мощным инструментом, который позволяет писать лаконичный код. Но чтобы по-настоящему использовать эту мощь, необходимо знать обо всех возможностях данного инструмента.
Вот несколько моментов, о которых вы возможно не знали.
Познать мощь
Total votes 41: ↑39 and ↓2 +37
Comments 15

У вас много денег? Мы все равно к вам не пойдем!

Reading time 2 min
Views 33K
Это ответ на статью У Вас много денег? Тогда мы идем к Вам!

Хотел бы разобрать ситуацию с поиском и наймом персонала более подробно, возможно это для кого то эта информация будет новой.
Для начала попробуем сформулировать основную проблему (см. исходную статью): «Нужно найти грамотных, профессиональных и лояльных разработчиков PHP, с глубоким знанием, ну или хотя бы пониманием работы приложений и СУБД в условиях высоких нагрузок в Днепропетровске. Сумма вознаграждения ограничена 2,5 К $».
Как вам такая задача? По силам?
Читать дальше →
Total votes 96: ↑63 and ↓33 +30
Comments 45

Понимание областей видимости или Scope в AngularJS

Reading time 10 min
Views 78K
В Ангуляре, дочерняя область видимости обычно прототипически наследуется от родительской. Единственным исключением является директива, в которой используется scope: { ... }, создающая «изолированную» область видимости, не наследуемую прототипически. Такая конструкция часто используется при создании директив для компонентов «многоразового использования»
Читать дальше →
Total votes 38: ↑34 and ↓4 +30
Comments 6

URL.js или дружим JavaScript с обработкой ссылок

Reading time 8 min
Views 50K
image

Доброго времени суток, уважаемые хабравчане!

Возникла передо мной сегодня задача генерации GET-параметров и всего URL в целом, на стороне клиента, прям вот щас, без возможности «поговорить» с сервером. Сразу оговорюсь, про этот пост я узнал вот прям перед написанием данной статьи ибо сначала закончил писать, а потом уже прибег к поиску, да и пост тот — не со всем про то же самое, что у меня.

Итак, к делу.

Задача и проблемы


Проблемы — те же что и в посте, который я привел выше:
  • Невозможность использовать window.location для «приготовления» URL;
  • Нельзя работать сразу с несколькими window.location в силу политики безопасности браузеров;
  • Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )

Задачи которые я поставил перед собой:
  • Удобный синтаксис
  • Возможность как читать части URL так и изменять их
  • Работа с GET-параметрами
  • Кроссбраузерность и универсальность


Писал я на чистейшем JavaScript, причем без использования prototype.__defineGetter__ или prototype.__defineSetter__ в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.

Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.

Приступим! Раньше сядем — раньше выйдем.
Читать дальше →
Total votes 60: ↑47 and ↓13 +34
Comments 60

Разработка директив angularjs — это просто

Reading time 7 min
Views 91K

AngularJS директивы – это клево


AngularJS является каркасом (фреймворком) для построения web приложений, который позволяет создавать сложные приложения достаточно просто. Одна из его лучших возможностей, это создание директив, которые являются повторно используемыми web компонентами. Это дает возможность создавать новые HTML теги и атрибуты, которые могут динамично отображать контент в ответ на изменение данных, и обновлять сами данные, в случае необходимости.
Это очень высокопроизводительный подход, поскольку он позволяет вам оборачивать сложное взаимодействие с DOM в повторно используемые пакеты кода.
Читать дальше →
Total votes 49: ↑41 and ↓8 +33
Comments 26

Разбираем интерфейсные детали-ошибки на примере одного банковского клиента

Reading time 8 min
Views 74K
Время изменилось. Теперь в одиночку можно написать приложение для миллионов человек. Не нужно думать ни о хостинге, ни о дистрибуции, ни о масштабируемости — облака сделают всё за вас.

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

Стоит сейчас какому-нибудь «Энгри бёрдз» написать «2-е птицы», и все молодое поколение будет неправильно наращивать окончания у числительных (на самом деле, наращиваются только порядковые числительные: «2-й дом», «1-му победителю», но «2 птицы»).

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

Поговорим сегодня о внимании к деталям на одном практическом примере (будет много картинок).

Читать дальше →
Total votes 210: ↑157 and ↓53 +104
Comments 183

WebHostingHub Glyphs — обновление шрифта до 1446 иконок

Reading time 1 min
Views 8.3K


Недавно выпущенный набор иконок WebHostingHub Glyphs добавилось более 300 новых иконок.

Благодаря пожеланиям пользователей хабрахабр в шрифте появились иконки знака рубля, сети вконтакте и многие другие. Иконки доступны в формате png (белые и черные) и самое главное в виде шрифта в форматах SVG, EOT и TTF. Мы будем рады услышать любые пожелания к дальнейшему развитию сета.
Total votes 94: ↑89 and ↓5 +84
Comments 60

Вертикальная черта, затем ноль

Reading time 3 min
Views 41K
Заголовок, выраженный словами, понадобился только для поисковой находимости. Но речь пойдёт о роли символьной конструкции «|0» в JavaScript.

Впервые на неё я обратил внимание, когда переводил FAQ про asm.js и читал спецификации этого подмножества языка JavaScript. Там «|0» служит, например, для указания типа значения, возвращаемого из функции: увидели «|0» после значения — значит, перед нами знаковое целое.

Вдругорядь я заметил конструкцию «|0» в примере кода на Гитхабе, где происходило преобразование к целому числу результата деления на 1024².

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

( 3|0 ) === 3;       // целые числа не изменяет
( 3.3|0 ) === 3;     // у дробных чисел отбрасывает дробную часть
( 3.8|0 ) === 3;     // не округляет, а именно отбрасывает дробную часть
( -3.3|0 ) === -3;   // в том числе и у отрицательных дробных чисел
( -3.8|0 ) === -3;   // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3;     // строки с числами преобразуются к целым числам
( "3.8"|0 ) === 3;   // при этом опять же отбрасывается дробная часть
( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
( NaN|0 ) === 0;     // NaN приводится к нулю
( Infinity|0 ) === 0;     // приведение к нулю происходит и с бесконечностью,
( -Infinity|0 ) === 0;    // и с минус бесконечностью,
( null|0 ) === 0;         // и с null,
( (void 0)|0 ) === 0;     // и с undefined,
( []|0 ) === 0;           // и с пустым массивом,
( [3]|0 ) === 3;          // но массив с одним числом приводится к числу,
( [-3.8]|0 ) === -3;      // в том числе с отбрасыванием дробной части,
( [" -3.8 "]|0 ) === -3;  // и в том числе с извлечением чисел из строк,
( [-3.8, 22]|0 ) === 0    // но массив с несколькими числами вновь зануляется
( {}|0 ) === 0;                // к нулю также приводится пустой объект
( {'2':'3'}|0 ) === 0;         // или не пустой
( (function(){})|0 ) === 0;    // к нулю также приводится пустая функция
( (function(){ return 3;})|0 ) === 0;    // или не пустая

Итак, во-первых, перед нами удобное средство отбрасывания дробной части.

  • По отношению к отрицательным числам оно полезно тем, что дробное число превращается не в ближайшее меньшее целое число (возрастая по модулю), как это случилось бы после «Math.floor()», а в ближайшее меньшее по модулю целое число (возрастая по значению). Нередко именно это и требуется.
     
  • По отношению к положительным числам оно полезно уж тем одним, что конструкция «|0» более чем на порядок короче по сравнению с «Math.floor()». Поэтому она может и должна вызывать у разработчиков привыкание не меньшее, чем та принятая в jQuery запись «$()», о которой я говорил четыре дня назад, что с неё никто добровольно не перейдёт обратно на «document.getElementsByClassName()», например.

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

Читать дальше →
Total votes 184: ↑159 and ↓25 +134
Comments 93

CSS Font-Size: em vs. px vs. pt vs. percent

Reading time 3 min
Views 274K
Одним из наиболее запутанных аспектов CSS является применение font-size атрибута для масштабирования текста. Используя CSS, вы можете изменить размер текста в браузере с помощью четырех разных единиц измерения. Какая из этих четырех единиц лучше всего подходит для веб? Это вопрос, который породил разнообразные дискуссии и критику. Поиск окончательного ответа затруднен, поскольку вопрос сам по себе сложный.
Читать дальше →
Total votes 87: ↑75 and ↓12 +63
Comments 136

7 советов, как улучшить интерфейс вашего приложения

Reading time 4 min
Views 44K
Будучи дизайнером интерфейсов, до сих пор часто вижу ситуацию, когда проектировать интерфейсы приходится разработчикам или кому-то еще из команды.
Конечно, лучше, когда дизайнер в команде есть, но что делать, если его нет?

Когда-то я собрала набор простых правил, которые помогают избежать 80% самых распространенных ошибок, касающихся построения интерфейсов. Решила расшарить их для хабрасообщества.
Кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 74: ↑55 and ↓19 +36
Comments 42

Lily v1.2 (Yii модуль для управления пользователями с авторизацией через сервисы)

Reading time 1 min
Views 7.7K
После перерыва возобновил работу над модулем Yii, о котором писал чуть меньше года назад (пост).
Последние 2-3 недели в значительной мере были затрачены на написание/переписывание кода, и теперь можно вполне анонсировать версию 1.2.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 10

Кастомизация социальных кнопок

Reading time 3 min
Views 45K
Многие из нас так или иначе сталкивались с проблемой кастомизации кнопок соцсетей, а многие ещё столкнутся. Недавно нам на Sports.ru пришлось решать задачу, как не только настроить внешний вид «лайков», но и разместить на одной странице сразу несколько блоков социальных кнопок, относящихся к разным текстовым блокам.

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

Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 27

Что нам стоит DOM построить

Reading time 6 min
Views 56K
Скажу сразу, всю DOM-модель мы строить не будем, а лишь рассмотрим ее элементы и как с ними работать при помощи jQuery. Статья рассчитана на начинающих или тех кто хочет вспомнить как можно строить элементы «на лету», надеюсь кому-то это будет полезно.
Большинство веб-разработчиков сталкивается с необходимостью вставить какое-либо содержимое из js, возможно это ajax или событие. Но никто не задумывается о том что с вашим кодом возможно кому-то придется работать. И часто даже в очень известных плагинах можно встретить код такого типа:

var content = "<table>"
for(i=0; i<3; i++){
    content += '<tr><td>' + 'result ' +  i + '</td></tr>';
}
content += "</table>"

$('#table').append(content);


Сразу видно, что этот кусочек кода сделан на быструю руку, я и сам так когда-то делал, но ведь можно сделать и лучше.
В статье я вывел самые основные элементы которые используются при разработке, возможно они помогут вам сэкономить время.
Под катом много кода с примерами.
Читать дальше →
Total votes 94: ↑58 and ↓36 +22
Comments 59

Типы адаптивных макетов

Reading time 2 min
Views 62K


С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов.
Читать дальше →
Total votes 82: ↑67 and ↓15 +52
Comments 8
1

Information

Rating
Does not participate
Registered
Activity