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

Software Developer

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

React.js: понятное руководство для начинающих

Время на прочтение19 мин
Количество просмотров417K
Автор статьи, перевод которой мы публикуем, считает, что, к несчастью, в большинстве из существующих руководств по React не уделяется должного внимания ценным практическим приёмам разработки. Такие руководства не всегда дают тому, кто по ним занимается, понимание того, что такое «правильный подход» к работе с React.

image

В этом руководстве, которое рассчитано на начинающих разработчиков, имеющих знания в области HTML, JavaScript и CSS, будут рассмотрены основы React и самые распространённые ошибки, с которыми может столкнуться программист, пользующийся данной библиотекой.
Читать дальше →
Всего голосов 30: ↑25 и ↓5+20
Комментарии17

Эволюция вагона железной дороги

Время на прочтение8 мин
Количество просмотров76K
Почему окно в новом вагоне ниже полки? Зачем сделали открывающуюся форточку? Куда дели старые добрые рундуки под нижней полкой? Почему вместо двух замков для ремней на верхней полке — какая-то гнутая железяка?



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

Наш тверской двухэтажный пассажирский вагон 61-4492 отечественной разработки стал призёром международного конкурса промышленного и графического дизайна Good Design Awards (США, Чикаго) в категории «Транспорт». В профессиональной среде это одна из самых престижных наград.

Но начну с ответа, почему рундук на вагонах нового поколения теперь без стенки.
Читать дальше →
Всего голосов 96: ↑89 и ↓7+82
Комментарии137

Google Public DNS тихо включили поддержку DNS over TLS

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


Внезапно, без предварительного анонса, на 8.8.8.8 заработал DNS over TLS. Ранее Google анонсировал только поддержку DNS over HTTPS.

Публичный резолвер от компании CloudFlare с IP-адресом 1.1.1.1 поддерживает DNS over TLS с момента запуска проекта.

Зачем это нужно


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

C DNS over TLS/HTTPS запросы посылаются внутри зашифрованного тоннеля так, что провайдер не может подменить или просмотреть запрос.

А с приходом шифрования имени домена в сертификатах X.509 (ESNI) станут невозможны блокировки через DPI по SNI (Server Name Indication, специальное поле, в котором передается имя домена в первом TLS-пакете), которые сейчас применяются у некоторых крупных провайдеров.

Как это работает


На порт TCP:853 выполняется TLS-подключение, при этом проверка сертификата резолвера происходит с использованием системных корневых сертификатов, точно так же, как HTTPS в браузере. Это избавляет от необходимости добавлять какие-либо ключи вручную. Внутри тоннеля выполняется обычный DNS-запрос. Это создает меньше накладных расходов по сравнению с DNS over HTTPS, который добавляет HTTP-заголовки к запросу и ответу.

К сожалению, на текущий момент только в Android 9 (Pie) поддержка DNS over TLS встроена в системный резолвер. Инструкция по настройке для Android 9.

Для остальных систем предлагается использовать сторонний демон, а системный резолвер направлять на localhost (127.0.0.1).

Настройка на macOS


Разберем настройку DNS over TLS на последней версии macOS, на примере резолвера knot
Читать дальше →
Всего голосов 105: ↑101 и ↓4+97
Комментарии147

Стандарт Encrypted SNI реализован в Firefox Nightly

Время на прочтение3 мин
Количество просмотров41K
Firefox стал первым браузером, который реализовал шифрование TLS Server Name Indication (SNI). Поддержку ESNI внедрили в последнюю версию Firefox Nightly, на которой обкатывают все нововведения перед их добавлением в основную ветку.

О важности этого стандарта месяц назад рассказывал CDN-провайдер Cloudflare. Если вкратце, то благодаря ESNI шифруется информация о том, к какому домену вы отправляете запрос. В стандартном HTTPS заголовки с именами доменов не шифруются и доступны для просмотра провайдеру или другому «человеку посередине». Теперь он видит только IP-адрес. Поскольку в современном интернете на одном IP-адресе могут располагаться сотни доменов, то ESNI эффективно скрывает информацию, на какой домен заходит пользователь.

Таким образом, блокировки по именам перестают работать, а цензура в интернете сильно усложнится. Цензорам придётся блокировать IP-адреса, а это сомнительная практика. Такая блокировка может затронуть непричастные сайты, а блокируемый сервис легко (автоматически) переключается на другой IP-адрес.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии33

Подводные камни HttpClient в .NET

Время на прочтение9 мин
Количество просмотров92K
Продолжая серию статей о «подводных камнях» не могу обойти стороной System.Net.HttpClient, который очень часто используется на практике, но при этом имеет несколько серьезных проблем, которые могут быть сразу не видны.

Достаточно частая проблема в программировании — то, что разработчики сфокусированы только на функциональных возможностях того или иного компонента, при этом совершенно не учитывают очень важную нефункциональную составляющую, которая может влиять на производительность, масштабируемость, легкость восстановления в случае сбоев, безопасность и т.д. Например, тот же HttpClient — вроде бы и элементарный компонент, но есть несколько вопросов: сколько он создает параллельных соединений к серверу, как долго они живут, как он себя поведет, если DNS имя, к которому обращался ранее, будет переключено на другой IP адрес? Попробуем ответить на эти вопросы в статье.
Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии12

Текстовый редактор — это вам не высшая математика, тут думать надо

Время на прочтение17 мин
Количество просмотров96K
Современные текстовые редакторы умеют не только бибикать и не давать выйти из программы. Оказывается, внутри них кипит очень сложный метаболизм. Хотите узнать, какие ухищрения предпринимаются для быстрого пересчета координат, как к тексту приделываются стили, фолдинги и софтврапы и как это всё обновляется, при чем тут функциональные структуры данных и очереди с приоритетами, а также как обманывать пользователя — добро пожаловать под кат!



В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
Читать дальше →
Всего голосов 208: ↑206 и ↓2+204
Комментарии189

Ура! Это была не паранойя

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

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

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

Итак, как я уже рассказывал, что в моём сне можно таргетировать людей по состоянию счёта и покупкам. Например, таргет: «есть дети 6 лет» может выглядеть как «вот по этому списку терминалов сетей делал частые покупки 5 лет назад». Таргет «живёт в этом районе и имеет больше 100 тысяч рублей на счету» — по точкам, где часто покупает, и если таких кластеров два — ближе к окраине.
Читать дальше →
Всего голосов 169: ↑158 и ↓11+147
Комментарии380

Для чего хакерам Микротик и как я спрятал 100 тыс. RouterOS от ботнета

Время на прочтение9 мин
Количество просмотров319K
RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.

Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.

Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.

Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети. В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться).



С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.

Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
Читать дальше →
Всего голосов 81: ↑80 и ↓1+79
Комментарии115

Манименеджмент для гика: откуда брать данные?

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

image


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

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

Моё разочарование в софте

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

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


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Всего голосов 505: ↑474 и ↓31+443
Комментарии2474

Всякие штуки в MetaPost

Время на прочтение8 мин
Количество просмотров15K
В чем рисовать векторные картинки? Для меня, как и для многих других, ответ довольно очевиден: скорее всего, в иллюстраторе. Ну или в инкскейпе. Так же я думал, когда мне заказали отрисовать штук восемьсот картинок для учебника физики. Ничего такого, просто черно-белые технические иллюстрации со всякими блоками, шарами, пружинами, линзами, машинками, тракторами и прочим подобным. Предполагалось, что верстаться книга будет в латехе, а мне были предоставлены вордовские файлы со вставленными картинками — то карандашными набросками, то сканами из других книг — и вроде бы рукопись в каком-то виде. В этом случае первая мысль — рисовать в инкскейпе — уступила фантазиям на тему «как бы это так все автоматизировать». Лучшим вариантом показался в тот момент почему-то MetaPost.



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

Как собирают вагоны для пассажирских поездов

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


Есть такой Тверской вагоностроительный завод. Завтра у него день рождения. Поэтому тут я расскажу кое-что интересное про сам завод.

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

Если вы думаете, что вагон — это очень простая вещь, то рекомендую вернуться к посту про подсистемы пассажирских вагонов. Там есть всё — от локальной сети до электрических дверей. И всё это надо собрать.

Давайте начнём экскурсию.
Читать дальше →
Всего голосов 155: ↑152 и ↓3+149
Комментарии137

Механизм реализации своих законных прав владельцами персональных данных

Время на прочтение6 мин
Количество просмотров7.8K
В предыдущей статье я рассказал о возможностях, которые предоставляет закон № 152 владельцу персональных данных. В этой частью статьи представлен сам механизм и формы запросов для реализации своих прав. В статье не рассматриваем вопрос, когда оператор вообще не имеет права обрабатывать персональные данные. Задача — сделать так, чтобы оператору персональных данных незаконная обработка этих данных стоила серьезных финансовых и временных затрат.

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

Как устроен пассажирский вагон дальнего следования

Время на прочтение9 мин
Количество просмотров112K
Современный вагон при соединении с остальным поездом автоматически включается в локальную сеть и получает параметры с сервера штабного вагона. У одноэтажного вагона Тверского вагоностроительного завода сейчас в мониторинге примерно 280 параметров (начиная от уровня заполнения фекального бака и заканчивая напряжением аккумулятора), а у двухэтажного — около 400.



Начнём с межвагонных связей. Это тормозная пневматическая магистраль (пневматические рукава, которыми вагоны соединяются между собой, железнодорожники называют их «лягушками»), высоковольтная магистраль, аварийная магистраль 110 В, интерком и локальная сеть, плюс радиорелейные мосты между вагонами на случай обрыва локальной сети.
Читать дальше →
Всего голосов 207: ↑207 и ↓0+207
Комментарии174

Решение цветных японских кроссвордов со скоростью света

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

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


Размер кроссвордов может доходить до 150x150. Игрок с помощью специальных логических приемов вычисляет цвет каждой клетки. Решение может занять как пару минут на кроссвордах для начинающих, так и десятки часов на сложных головоломках.


Хороший алгоритм может решить задачу намного быстрее. В тексте описано, как с помощью наиболее подходящих алгоритмов (которые вообще приводят к решению), а также их оптимизаций и использования особенностей C++ (которые уменьшают время работы в несколько десятков раз) написать решение, работающее почти мгновенно.


Читать дальше →
Всего голосов 92: ↑90 и ↓2+88
Комментарии20

27 июля 2018 года — полное лунное затмение и великое противостояние Марса

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

В ночь с 27 на 28 июля 2018 года произойдут два довольно редких астрономических явления. Факт их календарного совпадения не делает эти явления более ценными для науки, но создает вокруг них дополнительный интерес. Некоторые люди рассматривают совпадение двух астрономических явлений как некоторое самостоятельное явление, что не вполне корректно, но заслуживает отдельного рассмотрения с точки зрения понимания того, насколько часто подобное происходит, и влияет ли одно на другое хоть как-то.

27 июля 2018 года - полное лунное затмение и великое противостояние Марса

Что же произойдет?

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

Поиск узлов дисперсии управления (как перестать делать тупую работу и передать её другому)

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


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

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

Чаще случается, что не хватает каких-то кусков власти или ответственности. И мы тут на десятом году развития компании внезапно нашли работающую модель для того, чтобы понимать сразу, чего не хватает. То есть так же лажать, но чуть реже.
Читать дальше →
Всего голосов 108: ↑104 и ↓4+100
Комментарии72

Принцип цикады и почему он важен для веб-дизайнеров

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

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Всего голосов 696: ↑682 и ↓14+668
Комментарии119

Антисобеседования

Время на прочтение11 мин
Количество просмотров142K
Я побывал на многих плохих собеседованиях, и в качестве кандидата и в качестве ведущего, и в качестве наблюдателя. В результате сформулировался крайне субъективный набор заметок о том, как стоит и как не стоит проводить собеседование разработчиков.


Собеседование — это экзамен


Ведущий — строгий учитель, а кандидат — студент. Классический сеттинг. Обычно проходит так. Спросили откуда ты, что ты, и потом пошло техническое собеседование.

Начинается с простых вопросов на раскачку, примерно таких:
Читать дальше →
Всего голосов 221: ↑206 и ↓15+191
Комментарии677

Хак для поддержки кнопок Android-гарнитуры под Windows

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

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

Меня это не испугало — и я решил принять проблему как интересный вызов: можно ли создать какую-то программу для активации кнопок управления, если аппаратной поддержки для них вообще нет? Ответ — да, можно. И вот как сделать это за полчаса.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии20

Информация

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

Специализация

Десктоп разработчик, Бэкенд разработчик
Ведущий