Как стать автором
Обновить
5
0

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

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

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

Время на прочтение10 мин
Количество просмотров13K
Случалось ли вам, выполняя какую-то задачу, понять, что самый простой путь — нажать Сtrl+C, Сtrl+V: перетащить из соседней папочки пару файлов, поменять пару строчек, и будет ок? Повторялось ли это ощущение? Я хочу рассказать о том, как боролся с этой проблемой и к чему пришёл вместе с командой. Назовём это решение «универсальные компоненты» (если у кого-то будет более удачное название для концепции, жду в коментариях). Примеры буду приводить в основном на React, но концепции будут общие.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+10
Комментарии6

Как получил оффер от Microsoft

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

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне.

Здесь я тоже поделюсь всем процессом: как я попал на собеседование, все этапы, вопросы на интервью, как я готовился, некоторые детали офера, и общее впечатление от интервью. Так же будут всякие сравнения опыта собеседования в Майкрософте и в Амазоне.

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

Читать далее
Всего голосов 67: ↑59 и ↓8+72
Комментарии139

Популярная лингвистика. Книги про языки, которые мне нравятся

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

cover


Наш телеграм канал


14.11.2021 — Upd 7. В японский язык добавил Путь бесхвостой птички Адиля Талышханова (Shinrin), в английский — The Mother Tongue — English And How It Got That Way Билла Брайсона (alexey-m-ukolov) и Приключения английского языка Мелвина Брэгга, Введение в прикладную лингвистику Анатолия Баранова к серьезной лингвистике (darkTux)


Upd 6. Добавил Атомы языка Марка Бейкера (9_pm) и The Language Instinct (Язык как инстинкт) Стивена Пинкера (alex518 и snvtr). Проставил у рекомендаций значок 👉


Upd 5. Добавил раздел 'Лингвистические задачи'. Лингвистические задачи Зализняка, "Три склянки пополудни" Бердичевского и Пиперски (книга только вышла!) (middle), и еще одни "Лингвистические задачи" от коллектива авторов, включая Алпатова и Зализняка (AlexKarpan и DinaPy). Спасибо всем, кто рекомендует!


Upd 4. Добавил раздел 'Полевая лингвистика'. Не спи — кругом змеи! Дэниела Эверетта (9_pm), добавил "Слово о словах" Льва Успенского (Temmokan и saboteur_kiev)


Upd 3. Добавил раздел 'Серьезно о лингвистике'. Человек говорящий. Эволюция и язык Хомского и Бервика (alex518) и Значение и структура языка Чейфа Л. Уоллеса (darkTux)


Upd 2. Добавил "The Unfolding of Language" Гая Дойчера и "Our Magnificent Bastard Tongue" Джона Макуортера (etoropov)


Upd 1. Добавил раздел 'Грамотность и стиль'. "Слово живое и мертвое" Норы Галь (darkTux) и "The Sense of Style" Стивена Пинкера (9_pm)


Количество атомов в наблюдаемой Вселенной — где-то 10^80, число Дэвидов на картинке к статье — 2. Количество книг в этой подборке находится между этими ориентирами и будет пополняться (всегда рад рекомендациям). Что же это за книги?

Читать дальше →
Всего голосов 35: ↑34 и ↓1+51
Комментарии72

Здоровый сон взрослого человека — это засыпать за 15 минут и не вставать ночью попить и пописать

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


Послушала на днях 2х-часовое выступление «Здоровый сон» врача-невролога, сомнолога Елены Царевой. Выдернула самые важные для себя пункты:

  1. Спать регулярно, ложиться и вставать в одно и то же время — самое важное. 
  2. Биоритмы — частично наследуются, частично регулируются стилем жизни. На них можно влиять самому.
  3. Нормальное время отхода ко сну около 22:00. Сова и жаворонок — это отклонение на ±1-2 часа. Больше — это нарушение и сдвиг фазы сна, чаще из-за внешних раздражителей.
  4. Самая частая причина плохого сна и тяжелого засыпания — неправильный свет.
  5. Для сдвига режима на 1 час организму нужен 1 день на адаптацию.
  6. Невозможно «доспать» бессонную ночь. Досыпание устраняет только 30% последствий недосыпа.
  7. Прежде, чем искать причины плохого сна, исключите психологические проблемы (тревожность, депрессию), нарушения щитовидки, дефицит железа, диабеты, сердечно-сосудистые заболевания и патологию почек и мочеполовой системы.
  8. Водителям и пассажирам: 17 часов без сна равны 0,5 промилле, 21 час без сна — 0,8 промилле.
  9. В постели без сна больше 15 минут не находиться — совет при бессоннице. 
  10. Самые физиологичные будильники — те, что светятся. 

Под катом конспект 2х-часового выступления про сон на 15 минут чтения. Еще один поинт в копилку полезных материалов про сон — Sleep Hackers.
Читать дальше →
Всего голосов 140: ↑120 и ↓20+129
Комментарии247

Аномалии голосования по поправкам к Конституции России. Часть 1

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

Общероссийское голосование по вопросу одобрения изменений, вносимых в Конституцию Российской Федерации, проводилось с 25 июня по 1 июля 2020 года (wikipedia).


Основная цель данной заметки — это продемонстрировать как можно быстро начать работать с данными голосования и показать наличие определенного вида аномалий в них.


Все вычисления, визуализации и парсинг данных приведены в Google Colab, который доступен по этой ссылке Google Colab.

Читать дальше →
Всего голосов 145: ↑128 и ↓17+146
Комментарии387

Network tools, или с чего начать пентестеру?

Время на прочтение9 мин
Количество просмотров42K
Toolkit начинающего пентестера: представляем краткий дайджест главных инструментов, которые пригодятся при пентесте внутренней сети. Эти инструменты уже активно используются широким кругом специалистов, поэтому знать об их возможностях и владеть в совершенстве будет полезно каждому.


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

Знакомство с lit-element и веб-компонентами на его основе

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

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

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

Делаем современное веб-приложение с нуля

Время на прочтение31 мин
Количество просмотров147K
Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


Что мы покроем:

  • настройка dev-окружения в docker-compose.
  • создание бэкенда на Flask.
  • создание фронтенда на Express.
  • сборка JS с помощью Webpack.
  • React, Redux и server side rendering.
  • очереди задач с RQ.
Читать дальше →
Всего голосов 64: ↑56 и ↓8+48
Комментарии125

Gatsby.js в деталях

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


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

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

Новый кодек AV1: ускоряем загрузку видео в браузере

Время на прочтение6 мин
Количество просмотров93K
В этом руководстве мы научимся использовать видео в Вебе, как это принято в 2019. Chrome и Firefox начали поддерживать новый кодек AV1 — для них видео можно сделать в два раза меньше.

Отдельно поговорим, как заменить GIF на видео в AV1 и H.264 — тогда его размер упадёт в 20-40 раз.

AV1 в браузере

YouTube уже использует его в TestTube. Netflix заявил, что AV1 будет «их основным кодеком следующего поколения».

Мы в Злых Марсианах уже используем его на нашем сайте и на Ампллифере. В этой статье я поделюсь опытом внедрения AV1 и шаг-за-шагом расскажу, как вставить видео, чтобы оно работало во всех браузерах.
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии85

Собираем бандл мечты с помощью Webpack

Время на прочтение18 мин
Количество просмотров68K
JS-приложения, сайты и другие ресурсы становятся сложнее и инструменты сборки — это реальность веб-разработки. Бандлеры помогают упаковывать, компилировать и организовывать библиотеки. Один из мощных и гибких инструментов с открытым исходным кодом, который можно идеально настроить для сборки клиентского приложения — Webpack.

Максим Соснов (crazymax11) — Frontend Lead в N1.RU внедрил Webpack в несколько больших проектов, на которых до этого была своя кастомная сборка, и контрибьютил с ним несколько проектов. Максим знает, как с Webpack собрать бандл мечты, сделать это быстро и конфигурировать так, чтобы конфиг оставался чистым, поддерживаемым и модульным.


Расшифровка отличается от доклада — это сильно усовершенствованная пруфлинками версия. По всей расшифровке рассыпаны пасхалочки на статьи, плагины, минификаторы, опции, транспайлеры и пруфы слов докладчика, ссылки на которые просто не поставить в выступление. Если собрать все, то откроется бонусный уровень в Webpack :-)
Всего голосов 61: ↑58 и ↓3+55
Комментарии17

Изучаем Docker, часть 1: основы

Время на прочтение6 мин
Количество просмотров532K
Технологии контейнеризации приложений нашли широкое применение в сферах разработки ПО и анализа данных. Эти технологии помогают сделать приложения более безопасными, облегчают их развёртывание и улучшают возможности по их масштабированию. Рост и развитие технологий контейнеризации можно считать одним из важнейших трендов современности.

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

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными

image

Если вы пока не знаете о том, что такое Docker, сейчас у вас есть шанс сделать первый шаг к пониманию этой платформы. А именно, освоив этот материал, вы разберётесь с основами Docker и попутно приготовите пиццу.
Читать дальше →
Всего голосов 62: ↑52 и ↓10+42
Комментарии26

Харэ жрать? Говорим о пищевых привычках современного айтишника

Время на прочтение12 мин
Количество просмотров63K
Читатели Хабра, в основном, люди интеллектуального труда и нередко наша жизнь ограничивается схемой «работа, дом, редкие посиделки с друзьями в кафе или баре». А если ещё есть заботливый работодатель, предоставляющий обеды, печеньки, снеки и напитки без ограничений, то всё, — привет, лишний вес. Конечно, среди нас есть фанаты бега, кроссов, марафонов, спортзалов и Iron Man, но их по-прежнему мало.

На Хабре нередко пишут про физические нагрузки, стоячие столы и прочие приспособления, но мы сегодня поговорим… о еде. Давайте отвлечёмся от работы, подумаем о своём здоровье и о пищевых привычках, а заодно выясним, не сгущаем ли мы краски. Тем, кто ест за компьютером — приятного аппетита!


Беговая дорожка, не поспоришь
Читать дальше →
Всего голосов 86: ↑74 и ↓12+62
Комментарии358

Оптимизация обработки событий в Angular

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

Введение


Angular предоставляет удобный декларативный способ подписки на события в шаблоне, с помощью синтаксиса (eventName)="onEventName($event)". Вместе с политикой проверки изменений ChangeDetectionStrategy.OnPush подобный подход автоматически запускает цикл проверки изменений только по интересующему нас пользовательскому вводу. Иными словами, если мы слушаем (input) событие на <input> элементе, то проверка изменений не будет запускаться, если пользователь просто кликает по полю ввода. Это значительно улучшает
производительность, по сравнению с политикой по умолчанию (ChangeDetectionStrategy.Default). В директивах мы также можем подписаться на события на хост-элементе через декоратор @HostListener('eventName').


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

Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии6

Создание собственной цветовой палитры

Время на прочтение4 мин
Количество просмотров44K
Адаптировано из нашей будущей книги «Рефакторинг UI»

Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
Читать дальше →
Всего голосов 94: ↑92 и ↓2+90
Комментарии12

Prettier, ESLint, Husky, Lint-Staged и EditorConfig: инструменты для написания аккуратного кода

Время на прочтение16 мин
Количество просмотров125K
Вы стремитесь к тому, чтобы писать аккуратный код, но не знаете с чего начать… Вы вчитываетесь в руководства по стилю, вроде этого от Airbnb, стараетесь следовать практическим рекомендациям ведущих специалистов… Вам приходится удалять неиспользуемый код? Приходится искать ненужные переменные? Вы пытаетесь выявлять неудачные паттерны, применённые в ваших программах? Например — хотите понять, читая хитросплетения кода некоей функции, возвратит ли она что-нибудь или нет. Звучит знакомо? Проблема заключается в том, что программисту очень тяжело и многое успевать, и многому учиться.

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



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

А именно, здесь пойдёт речь о таких средствах как Prettier, ESLint, Husky, Lint-Staged, EditorConfig, об автоматизации форматирования и линтинга кода. Этот материал ориентирован, в основном, на React-разработку, но рассмотренные здесь принципы можно применить в любом веб-проекте. Вот репозиторий, где, кроме прочего, собрано то, о чём тут пойдёт речь.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии15

Школа магии TypeScript: дженерики и расширение типов

Время на прочтение7 мин
Количество просмотров46K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что TypeScript — это просто потрясающе. Когда он только начал пользоваться TS, ему страшно нравилась та свобода, которая присуща этому языку. Чем больше сил программист вкладывает в свою работу со специфичными для TS механизмами — тем значительнее получаемые им выгоды. Тогда он использовал аннотации типов лишь периодически. Иногда он пользовался возможностями по автодополнению кода и подсказками компилятора, но, в основном, полагался лишь на собственное видение решаемых им задач.

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



В итоге он пришёл к выводу о том, что лучше так не делать. Он подружился с компилятором, начал обращать внимание на его подсказки. Компилятор находит проблемы в коде и сообщает о них задолго до того, как они могут нанести реальный вред. Автор статьи, глядя на себя как на разработчика, понял, что компилятор — это его лучший друг, так как защищает его от него самого. Как тут не вспомнить слова Альбуса Дамблдора: «Требуется большая храбрость, чтобы выступить против своих врагов, но не меньше ее требуется и чтобы выступить против своих друзей».

Каким бы хорошим другом ни был компилятор, ему не всегда легко угодить. Иногда избежать использования типа any очень непросто. А порой кажется, что any — это единственное разумное решение некоей проблемы.

Этот материал посвящён двум ситуациям. Избежав использования в них типа any можно обеспечить типобезопасность кода, открыть возможности по его повторному использованию и сделать его интуитивно понятным.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии29

Ассортимент — классическая задача оптимизации

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


Ассортимент очень влияет на выручку магазина, но управляется не самим магазином. Судя по последним исследованиям, ассортиментом в России в целом мало кто управляет эффективно. Просто если поддерживать нужные товары в нужном количестве в нужных местах, можно дико поднять эффективность продаж многих магазинов. Дико — это, например, на треть.

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

Первый вопрос в том, почему вообще может не быть какого-то товара. Это очевидная вещь для любого человека из розницы, но крайне нелогичная для человека со стороны. Столетиями работает рынок, так почему, чёрт побери, до сих пор случаются неувязки?
Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии89

Настройка Jira под ваши нужды. Cовершенный флоу и идеальный тикет

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


Если вы работаете в IT-компании, то, скорее всего, ваши процессы построены вокруг известного продукта Atlassian — Jira. На рынке есть множество таск-трекеров для решения тех же задач, в том числе open-source-решения (Trac, Redmine, Bugzilla), но, пожалуй, именно Jira имеет сегодня самое широкое распространение.

Меня зовут Дмитрий Семенихин, я тимлид в компании Badoo. В небольшом цикле статей я расскажу, как именно мы используем Jira, как настраивали её под свои процессы, что хорошего «прикрутили» сверху и как тем самым превратили issue-трекер в единый центр коммуникаций по задаче и упростили себе жизнь. В этой статье вы увидите наш флоу изнутри, узнаете, как можно «докрутить» свою Jira, и прочтёте о дополнительных возможностях инструмента, о которых могли не знать.

Статья ориентирована прежде всего на тех, кто уже использует Jira, но, возможно, испытывает сложности с интеграцией её стандартных возможностей в существующие в компании процессы. Также статья может быть полезна компаниям, которые используют другие таск-трекеры, но столкнулись с некоторыми ограничениями и подумывают о смене решения. Статья построена не по принципу «проблема — решение», в ней я описываю сложившийся инструментарий и фичи, построенные нами вокруг Jira, а также технологии, которые мы использовали для их реализации.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии23

Работаем в консоли быстро и эффективно

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

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

Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии117

Информация

В рейтинге
Не участвует
Откуда
Беларусь
Зарегистрирован
Активность