Как стать автором
Обновить
2
0
Максим @jmaks13

Пользователь

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

Как мы приготовили Feature-Sliced Design в VK

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K

Всем привет! Меня зовут Дмитрий, я Frontend-разработчик в VK. В этой статье расскажу немного о том, как мы знакомились с замечательной архитектурой FSD (Feature-Sliced Design), как мы рефакторили свои проекты под неё. И, самое главное, что  из этого вышло. Постараюсь заинтересовать  вас, чтобы и вы смело её внедряли в свои проекты. FSD — это, пожалуй, то, чего так не хватало в Frontend-мире.

Читать далее
Всего голосов 32: ↑28 и ↓4+31
Комментарии44

Безопасность в Docker: от правильной настройки хоста до демона

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Помогаю клиентам обеспечивать защиту инфраструктуры и участвую в разработке новых решений компании в сфере ИБ. И сейчас я начала больше погружаться в тему разработки и изучать лучшие практики по обеспечению безопасности приложений.

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

Сегодня сложно представить современное приложение без технологий контейнеризации. Поэтому я решила подробно изучить вопросы безопасности в этом направлении и собрала рекомендации, как лучше подойти к работе с Docker-платформой. Подробности под катом!
Читать дальше →
Всего голосов 63: ↑63 и ↓0+68
Комментарии3

Ностальгия: роемся у «Танчиков» под капотом

Время на прочтение12 мин
Количество просмотров105K
Многие из нас выросли на «Танчиках», «Марио» и прочих нетленных шедеврах времён рассвета игровой индустрии. Приятно порой вспомнить, как днями напролёт резались с друзьями у экранов телевизоров, меняя джойстики как перчатки. Но время не стоит на месте, и одни интересы сменяются другими. Однако, порой любовь к старым-добрым игрушкам не угасает.
Я отношу себя к людям именно таким, и мой интерес к старым играм пошёл в сторону реверс-инжиниринга, что и привело меня в IT-сферу, где я и осел с концами.

Я хочу рассказать вам о том, что же под капотом у железных монстров из знаменитой игры Battle City (в простонародье «Танчики») с не менее знаменитой приставки Nintendo Entertainment System (сокращённо NES, в России более известен её китайский клон «Dendy»). Мне в своё время эта информация показалась довольно любопытной — надеюсь, такой же она покажется и вам.
Читать дальше →
Всего голосов 233: ↑232 и ↓1+231
Комментарии72

Утренний режим: как преуспевающие люди начинают свой день

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

Независимо от того, жаворонок вы или сова, в какой-то момент приходится начинать свой день. И, кажется, у всех это происходит по-разному. Хотя идеального утреннего расписания, подходящего для всех, похоже, не существует, сделать начало дня правильным можно, многому научившись у успешных людей, а также воспользовавшись данными исследований и вдохновляющими идеями.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии6

Как подружиться клиенту, дизайнеру и разработчику

Время на прочтение4 мин
Количество просмотров4.3K
1. Говорите спасибо за работу, оплату и критику. Хвалите. К такому подходу быстро привыкаешь, работая с людьми из Европы и Штатов, и это здорово мотивирует. Прежде всего постарайтесь найти и подметить что-то положительное в работе, которую вам показали, а потом уже переходить к критике.

2. Заключайте договор, пусть даже без подписей, просто в письме и человеческим языком. Что должно быть сделано, как это будет работать, к какому сроку, что будет, если кому-то не понравится (обе стороны должны иметь возможность легко отказаться от проекта). Бейте работу на этапы и объясните, что вы работаете по предоплате 100% за каждый этап.

3. Дизайнер, не ограничивайтесь фотошопом. Разберитесь немного, как работает браузер и интернет, обязательно пользуйтесь веб-инспектором — вы научитесь менять размер шрифта и цвет плашек самостоятельно. Веб-инспектор окрыляет.

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

Дизайнер, графика в 90% случаев должна быть в векторе, лучше если это сразу отдельный SVG-файл для каждой иконки (ну или векторный макет, с отдельными слоями и объектами, чтобы было легко достать любой элемент).

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

5. Дизайнер, разделите мысленно интерфейс на компоненты и блоки. Выделите три вида кнопок, подпишите, чем они отличаются, можно ли сделать их в коде одной кнопкой .button по всем параметрам, кроме размера .button--xl и цвета .button--yellow? Всегда ли кнопка будет желтой, или на самом деле она должна называться .button--warning, а цвет может поменяться в процессе работы?

Адаптивную версию не всегда обязательно отрисовывать отдельно, хороший фроентендер поймет, где брейкпоинт, и какой блок за каким должен стать в столбик на смартфоне, если на десктопе была сетка. Но основные моменты, ширину колонок и сетку, поведение меню, стоит примерно обговорить заранее. И быть готовым к тому, что большая часть задач и сложностей всплывает в процессе работы.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии2

Конкурс по программированию на JS: Классификатор слов

Время на прочтение5 мин
Количество просмотров73K
Компания Hola объявляет начало весеннего конкурса по программированию! Призовой фонд увеличен:

  1. Первое место: 3000 USD.
  2. Второе место: 2000 USD.
  3. Третье место: 1000 USD.
  4. Возможно, мы решим отметить чьи-то чрезвычайно оригинальные решения двумя специальными призами в 400 USD.
  5. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.

Мы ищем талантливых программистов, поэтому авторы интересных решений будут приглашены на собеседования.

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


Правила


На этот раз мы решили попробовать что-то новенькое: для разнообразия, этот конкурс — не на производительность кода.

Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.

Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии620

Houdini: один из самых впечатляющих проектов в CSS, о котором вы никогда не слышали

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


Бывало ли у вас так, что хотелось использовать какую-нибудь фичу из стандарта CSS, но вы этого не делали, потому что она поддерживается не всеми браузерами? Или ещё хуже: её поддерживают все браузеры, но поддержка глючная, противоречивая или вообще несовместимая? Наверняка вы с таким сталкивались, и поэтому рекомендую вам присмотреться к Houdini.

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

Но что конкретно кроется за этими обещаниями? Это хотя бы хорошая затея? И как всё вышесказанное поможет нам, разработчикам, создавать сайты сегодня и завтра?

На все эти вопросы я постараюсь дать ответы. Но сначала внесу ясность относительно актуальных сегодняшних проблем и необходимости их решения. А затем уже мы поговорим о том, как Houdini может нам с ними помочь, и рассмотрим ряд его наиболее впечатляющих возможностей, находящихся в процессе разработки. И в завершение я внесу ряд предложений, как сообщество разработчиков может помочь реализоваться проекту Houdini.
Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии26

Советы, библиотеки и дополнительные материалы по CSS-анимации

Время на прочтение25 мин
Количество просмотров67K
Советы, библиотеки и дополнительные материалы по CSS-анимации

Введение


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

На компьютере был открыт текстовой файл со списком статей и библиотек про веб-разработку. Он постоянно пополнялся новыми данными.

Свернув его, я пошел на улицу в поисках кинотеатра с Deadpool'ом запустил браузер и стал блуждать по окрестностям интернета. Во время прогулки я наткнулся на интересную js-библиотеку по созданию css-анимации, которую добавил в открытый до этого текстовой документ… Как оказалось, по этой теме у меня уже набралось больше 40 ссылок на материалы и библиотеки.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии12

Почему мы не достигаем целей, которые ставим

Время на прочтение5 мин
Количество просмотров30K
Часто бывает, что мы ставим себе цели, которых по различным причинам не можем достигнуть. То ничего не хочется делать, то постоянно отвлекаешься, то считаешь, что нужно еще получше подготовиться и откладываешь дело в долгий ящик.

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

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

Как в стихотворении И. Губермана:
Бывает – проснешься, как птица,
крылатой пружиной на взводе,
и хочется жить и трудиться;
но к завтраку это проходит.


А бывает по-другому, когда вы были по утрам полны энергии и вскакивали с постели, горя желанием взяться за работу. Например, когда завершали увлекательный проект или готовились к свадьбе.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии21

Разбираемся с Flux, реактивной архитектурой от facebook

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


Введение


Добро пожаловать в третью часть серии статей «Изучаем React». Сегодня мы будем изучать, как устроена архитектура Facebook Flux, и как использовать ее в своих проектах.
Ррреактивно!
Всего голосов 25: ↑25 и ↓0+25
Комментарии16

Лучшие инструменты для JavaScript-разработчика

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


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

Но прежде чем перейти к делу, хотим уточнить:

  • Не нужно ломать копий, если в этот список не попали какие-то из ваших любимых фреймворков или библиотек.
  • Следите за обновлениями используемых вами инструментов. В последнее время начала активно внедряться кроссбраузерная и кроссаппаратная (cross-device) поддержка. Например, можно воспользоваться сканером, который подскажет, совместимы ли более старые версии с большинством устройств.

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

Танчики на node.js — оптимизация

Время на прочтение10 мин
Количество просмотров11K
Спасибо всем, кто пытался поиграть в первый раз. Очень жаль, что я разочаровал столько людей жуткими тормозами игры. Но я мог бы и не догадаться до их причины, если бы не вы. Сейчас сервер порядком оптимизирован, но количество одновременных игр увеличено всего до пяти. Это незначительно, но дело уже не в производительности сервера, а в том, что в худшие вечерние часы скорость моего интернета не позволит больше. Заманухи ради появилась возможность выбрать уровень перед стартом игры. А также в ответ на «обидный» комментарий, появилась возможность поиграть 2 на 2. Итак — демка, альтернативный сервер, еще сервер. Сейчас остается надеяться, что я не сильно поспешил, и сервер не подведет. Под катом я расскажу, каких глупостей наделал в первой версии.
Читать дальше →
Всего голосов 87: ↑80 и ↓7+73
Комментарии56

Разработка WEB-проекта на Node.JS: Часть 1

Время на прочтение12 мин
Количество просмотров80K
Прошла неделя с момента пиара на хабре моего проекта «Что делать?». Я напомню, что этот проект начинался, как эксперимент по разработке среднестатистического WEB-проекта целиком на JavaScript (Node.JS). Сейчас я хочу поделиться с сообществом результатами этого эксперимента, полученным полезным опытом, а также подробной картой с отмеченными на ней граблями.

Эпизод 1: начало пути


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

Разработка WEB-проекта на Node.JS: Часть 2

Время на прочтение12 мин
Количество просмотров56K
В прошлой статье я начал рассказывать о своём опыте разработки экспериментального WEB-проекта «Что делать?» на Node.JS. Первая часть была обзорной, в ней я постарался раскрыть плюсы и минусы технологии, а также предупредить о проблемах, с которыми, возможно, придётся столкнуться в ходе разработки. В этой статье я подробнее остановлюсь на технических деталях.

Несколько слов о «хабраэффекте»


Читать дальше →
Всего голосов 67: ↑63 и ↓4+59
Комментарии103

25 инструментов повышения производительности (и какие из них вам использовать не следует)

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

Итак, вот, что будет происходить дальше. Вы посмотрите на все эти инструменты и немедленно захотите прочесть о каждом из них, чтобы выбрать лучшие для себя. В результате вы потратите сегодня больше времени на клики, прокрутки и загрузки, чем вам бы того хотелось. Как этого избежать и использовать материал по максимуму?
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии9

Создаём своё первое десктопное приложение при помощи HTML, JS и Node-WebKit

Время на прочтение4 мин
Количество просмотров116K
В наше время при помощи JavaScript и HTML можно сделать практически всё. А благодаря Node-WebKit (недавно переименован в NW.js) можно делать даже десктопные приложения, которые выглядят, как нативные и имеют доступ ко всем частям ОС. Сегодня мы покажем, как создать простое десктопное приложение при помощи Node-WebKit, используя jQuery и несколько модулей для Node.js.

Node-WebKit — комбинация Node.js и встроенного браузера WebKit. Код JavaScript выполняется в особом окружении, из которого есть доступ и к стандартному API браузеров, и к Node.js.
Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии39

Миллион одновременных соединений на Node.js

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


TL;DR:


  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

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

Как нейронные сети рисуют картины

Время на прочтение3 мин
Количество просмотров168K
Умные алгоритмы уже умеют находить и распознавать лица, определять главную часть картинки, узнавать различные предметы. А нейронные сети пошли дальше и даже могут самостоятельно создавать произведения искусства.

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

image
Читать дальше →
Всего голосов 79: ↑75 и ↓4+71
Комментарии38

Нейросеть в 11 строчек на Python

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

О чём статья


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

Дайте код!


X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
    l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
    l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
    l2_delta = (y - l2)*(l2*(1-l2))
    l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
    syn1 += l1.T.dot(l2_delta)
    syn0 += X.T.dot(l1_delta)


Слишком сжато? Давайте разобьём его на более простые части.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии17

Рекурентная нейронная сеть в 10 строчек кода оценила отзывы зрителей нового эпизода “Звездных войн”

Время на прочтение11 мин
Количество просмотров160K
Hello, Habr! Недавно мы получили от “Известий” заказ на проведение исследования общественного мнения по поводу фильма «Звёздные войны: Пробуждение Силы», премьера которого состоялась 17 декабря. Для этого мы решили провести анализ тональности российского сегмента Twitter по нескольким релевантным хэштегам. Результата от нас ждали всего через 3 дня (и это в самом конце года!), поэтому нам нужен был очень быстрый способ. В интернете мы нашли несколько подобных онлайн-сервисов (среди которых sentiment140 и tweet_viz), но оказалось, что они не работают с русским языком и по каким-то причинам анализируют только маленький процент твитов. Нам помог бы сервис AlchemyAPI, но ограничение в 1000 запросов в сутки нас также не устраивало. Тогда мы решили сделать свой анализатор тональности с блэк-джеком и всем остальным, создав простенькую рекурентную нейронную сеть с памятью. Результаты нашего исследования были использованы в статье “Известий”, опубликованной 3 января.



В этой статье я немного расскажу о такого рода сетях и познакомлю с парой классных инструментов для домашних экспериментов, которые позволят строить нейронные сети любой сложности в несколько строк кода даже школьникам. Добро пожаловать под кат.
Читать дальше →
Всего голосов 82: ↑75 и ↓7+68
Комментарии48

Информация

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