Pull to refresh
18
0
Сергей Фесюра @peinguin

User

Send message

Критерии качества вёрстки 2021

Reading time 32 min
Views 50K

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

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

Сейчас пришло время обсудить с сообществом обновлённые критерии.

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

Читать далее
Total votes 35: ↑33 and ↓2 +31
Comments 22

«Филиалы ада»: облачный контроль нелегальных свалок и опасных полигонов

Reading time 5 min
Views 8.2K
image
Дракарис! (Полигон ТБО «Лесная»)

«Мусорный коллапс», «свалочный бунт», «филиалы ада»… Яркие эпитеты сопровождают самую большую проблему экологической безопасности Европейской части России.

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

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

В марте 2018 года выброс газа с полигона «Ядрово» накрыл Волоколамск: за медицинской помощью из-за ухудшения самочувствия обратились десятки человек, в том числе 76 детей.

Власти закрыли несколько полигонов бытовых отходов, и мусоровозы с московскими номерами поехали дальше – в Ярославскую, Нижегородскую и Архангельскую области. Стоит ли говорить, что по этому поводу думают жители регионов?
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 37

Разработка редактора для создания веб сайтов/лендингов (опыт)

Reading time 23 min
Views 24K


(Art by http://www.simonstalenhag.se/)


Предыстория / Дисклеймер


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


На данный момент я Front-end разработчик в Conductor/WeWork. Мы не занимаемся разработкой редакторов, как собственно и я, по вечерам не разрабатываю такие вещи. Это больше об опыте который я получил на прошлом проекте в компании УТИ(сокращенно), утипути, ути-…. Это было достаточно давно, но как оказывается, тема актуальна и по сей день, как и косяки связанные с ней.


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


UTIEditor special for you <3

Зачем нам нужны такие редакторы?


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


УТИ по сути своей — компания ширпотреб. Уверен в свое время в таких поработал каждый, десяток сайт визиток на человека, десяток интернет магазинов и фирменная вишенка — своя CMS.


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


Тут пожалуй стоит перейти к обсуждению этого функционала, ведь он очень разный.
Хотелось бы добавить, что я не буду включать в этот разговор такие CMS как WrodPress, Drupal, мы сконцентрируемся на рынке редакторов.

Total votes 28: ↑22 and ↓6 +16
Comments 21

Как следует писать комментарии к коммитам

Reading time 11 min
Views 134K


Предисловие от переводчика


На протяжении многих лет разработки ПО, будучи участником многих команд, работая с разными хорошими и опытными людьми, я часто наблюдал (да и чего греха таить, до определенного момента — создавал) одну и ту же проблему — тотальный бардак в репозитории. Каждый писал комментарии к коммитам в своем стиле (и хорошо, если постоянно в одном); половина комментариев была бесполезна (из разряда "это мост"), половина оставшейся половины — едва понятна.

И вот в один прекрасный момент я увидел данную статью, до перевода которой у меня наконец дошли руки. Всего 7 простых и коротких правил, и — о чудо — смотреть на историю коммитов стало не только полезно, но и приятно. Ничего революционного, все довольно очевидно, но сформулировано и резюмировано просто отлично.
Читать дальше →
Total votes 55: ↑51 and ↓4 +47
Comments 115

История игр с открытым миром

Reading time 28 min
Views 46K
image

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

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

Кстати, эти странности — не просто следствия ограничений современных технологий. Особенности современных игр с открытым миром уходят корнями в игры прошлого. И мы говорим сейчас не о ранних Grand Theft Auto, и даже не о первой GTA, построенной на фундаменте, заложенном до неё десятилетием игр в открытом мире.
Читать дальше →
Total votes 34: ↑34 and ↓0 +34
Comments 39

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

Reading time 10 min
Views 91K


Это первая часть, вот вторая.
За всеми архитектурами нейронных сетей, которые то и дело возникают последнее время, уследить непросто. Даже понимание всех аббревиатур, которыми бросаются профессионалы, поначалу может показаться невыполнимой задачей.

Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Comments 14

Жаргон функционального программирования

Reading time 10 min
Views 91K


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


В примерах используется JavaScript ES2015). (Почему JavaScript?)


Работа над материалом продолжается; присылайте свои пулл-реквесты в оригинальный репозиторий на английском языке.


В документе используются термины из спецификации Fantasy Land spec по мере необходимости.


Arity (арность)


Количество аргументов функции. От слов унарный, бинарный, тернарный (unary, binary, ternary) и так далее. Это необычное слово, потому что состоит из двух суффиксов: "-ary" и "-ity.". Сложение, к примеру, принимает два аргумента, поэтому это бинарная функция, или функция, у которой арность равна двум. Иногда используют термин "диадный" (dyadic), если предпочитают греческие корни вместо латинских. Функция, которая принимает произвольное количество аргументов называется, соответственно, вариативной (variadic). Но бинарная функция может принимать два и только два аргумента, без учета каррирования или частичного применения.

Читать дальше →
Total votes 91: ↑87 and ↓4 +83
Comments 113

Webpack + React. Как уменьшить бандл в 15 раз

Reading time 3 min
Views 55K
image

Ясной инструкции по сборке webpack для продакшена я не нашел. Поэтому решил написать эту статью. Надеюсь, пригодится.
Существует множество сборщиков скриптов. Я выбрал для себя Webpack по таким критериям:

  • Гибкость настройки
  • Большое количество плагинов и лоадеров
  • Lazy loading
  • Использование es6 и es7 синтаксиса с помощью babel-loader

Читать дальше →
Total votes 47: ↑39 and ↓8 +31
Comments 31

Эффективное использование Github

Reading time 13 min
Views 123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Total votes 149: ↑148 and ↓1 +147
Comments 38

Опыт перехода с Sublime на Vim

Reading time 22 min
Views 76K


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

Я достаточно долгое время использовал sublime (около 4 лет) в качестве основной среды разработки, но в последнее время кое-что изменилось: я освоил слепой 9-ти пальцевый метод печати. В тот момент я начал понимать людей, которым неудобно тянуться к мышке или стрелочкам. Убирать пальцы с «домашних» позиций стало неестественно и непродуктивно. Тогда я включил vintage. Проблема, вроде бы, стала неактуальна, но чего-то не хватало. Не помню, что заставило меня пересесть за vim, но мне всегда нравилось, как в нем выделяются фигурные скобки (MatchParen) и как выглядит курсор :). Vim я пробовал и до этого, когда правил конфиги на сервере, правда, вся «магия» ограничивалась переходом в режим вставки и успешным сохранением/выходом из редактора.
Читать дальше →
Total votes 62: ↑55 and ↓7 +48
Comments 123

Отпуск по-программистски, или как я не поучаствовал в конкурсе по программированию на JS. Часть первая

Reading time 12 min
Views 24K

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


image


Задача состояла в том, чтобы написать программу на JS, которая будет определять, есть слово с словаре английских слов или нет. Вроде бы просто, но есть пара ограничений, делающих задачу заведомо невыполнимой:
– Словом считается не просто любое правильное слово английского языка, а именно слово, которое есть в предоставленном словаре из 600K+ слов.
– Словаря в момент исполнения программы нет, скачать его нельзя, а размер программы, включая данные, не должен превышать 64К. Внешние библиотеки подключать также нельзя, но файл данных может быть заархивирован.
Благодаря этим условиям вместо однозначного ответа результатом может быть только определение наибольшей вероятности присутствия слова в словаре.


Сразу скажу, что решение я так и не отправил из-за неудовлетворённостью результатом (решение, которое давало хотя бы 80%, я смог поместить только в 120-130К, а без превышения размера в 64К выжал максимум 70%).
Тем не менее опыт считаю достаточно интересным и достойным статьи. Под катом много SQL,JS,Python, нейронные сети, а также печальная правда о производительности CPU на хостинге.

Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 86

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 27. «Web War One»

Reading time 9 min
Views 11K
Самая долгожданная глава. И вопрос: «Так мы будем издавать книгу на русском или нет?»

Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

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

Квест по переводу книги начался летом в ИТишном лагере для старшеклассников — «Шкворень: школьники переводят книгу про хакеров», затем к переводу подключились и Хабраюзеры и даже немного редакция.

Второе дыхание «квест по переводу книги» получил благодаря компании Edison.
Как арестовывали Макса читайте в Главе 33: «Стратегия выхода», как накрыли всю сеть Глава 34: «DarkMarket».

Глава 27. «Первая сетевая война»

(за перевод спасибо Lorian_Grace)

Кейт Муларски стоял у подиума, презентация заполняла собой весь ЖК экран позади. Перед ним сидели, собравшись вокруг стола в конференц-зале, пятнадцать высокопоставленных представителей ФБР и специалистов министерства юстиции. Все они были сосредоточены. Муларски предлагал им нечто новое, и такого им раньше никогда не доводилось делать.
Total votes 12: ↑10 and ↓2 +8
Comments 11

Выбираем библиотеку для работы с WebGL

Reading time 2 min
Views 20K
Как-то утром, пробегая мимо славного урока, я подумал: «Это круто, только всё же кой-чего тут не хватает». Если надо много кода написать легко и быстро, то нужна нам, без сомнений, для сего библиотека. Только как её нам выбрать, если каждый, кто умеет на гитхабе заводить репозиторий, запилил велосипед свой? И об этом для тебя, друг, напишу сегодня пост вдруг.
Дальше проза
Total votes 30: ↑21 and ↓9 +12
Comments 13

Тестирование JS. Кармический Webpack

Reading time 5 min
Views 36K
image

Привет!

Пару месяцев назад я писал пост, о том как научить webpack для spa
С того момента инструмент шагнул вперед и оброс дополнительным количеством плагинов, а так же примерами конфигураций.

В этой статье хочу поделиться опытом смешивания гремучей смеси webpack + jasmine + chai + karma.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 15

Использование веб-шрифтов, самый лучший способ (на 2015 год)

Reading time 6 min
Views 30K
Недавно я снова исследовал вопрос загрузки шрифтов, так как я хотел использовать локальную копию шрифта и сделать ее загрузку максимально быстрой и эффективной. Данный подход существенно отличается от того, когда вы используете TypeKit или шрифты Google и простые сниппеты «копировать/вставить».

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

1, 2, 3

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

Цели:

  1. Асинхронно загружать веб-шрифты
  2. Избежать сильного пересчета положения в макете
  3. Как можно быстрее загружать веб-шрифты
  4. Избежать загрузки шрифтов для возвращающихся посетителей


А теперь давайте попробуем добиться наших целей поэтапно:
Читать дальше →
Total votes 21: ↑15 and ↓6 +9
Comments 6

Как работает реляционная БД

Reading time 51 min
Views 534K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3 +226
Comments 134

Как работают замыкания (под капотом) в JavaScript

Reading time 11 min
Views 76K
Привет, Хабр!

Мы в Хекслете используем JavaScript не только для очевидных задач во фронтэнде, но и, например, для реализации браузерной среды разработки (наш опен-сорсный hexlet-ide) на React'е. У нас есть практический курс по JavaScript, и один из уроков там посвящен замыканиям. Это важная тема не столько в рамках JS, сколько в программировании вообще. Мы освещаем ее и в других курсах.

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


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

"use strict";
 
var myClosure = (function outerFunction() {
 
  var hidden = 1;
 
  return {
    inc: function innerFunction() {
      return hidden++;
    }
  };
 
}());
 
myClosure.inc();  // возвращает 1
myClosure.inc();  // возвращает 2
myClosure.inc();  // возвращает 3
 
// Ага, круто. А как это реализовано?
// И что происходит под капотом?
Читать дальше →
Total votes 54: ↑47 and ↓7 +40
Comments 11

Использование ES6 в AngularJs 1.x со сборкой Browserify+Babel

Reading time 5 min
Views 29K
В статье рассмотрим как написать на ES6 составляющие части AngularJs приложения, затем собрать с помощью Browserify и Babel на основе небольшого приложения, которое вы можете скачать с github и поиграться.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Comments 4

Разработка браузерной онлайн игры на meteor

Reading time 10 min
Views 58K
Здравствуйте, меня зовут Александр Зеленин и я веб-разработчик. Последние полгода занимался разработкой многопользовательской космической браузерной стратегии. На текущий момент мы уже находимся на стадии закрытого бета тестирования (доступного для вложившихся) и запустили компанию на бумстартере.



В этом посте хочу рассказать про процесс разработки игры с нуля силами двух человек.
Читать дальше →
Total votes 36: ↑31 and ↓5 +26
Comments 84

Information

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