Разработчик. PHP, JS, TypeScript.
Стеклянный vs каменный — лучше, хуже или равно?

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

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

Сегодня без «жести», как вы просили
Уже есть пост про то, как лазер режет с помощью создания миллионов кавитационных пузырей в слое роговицы глаза, и разбор телеметрии с реальной операции по секундам с комментариями действий хирурга. И ещё история операций. Вы задали очень много вопросов. Теперь FAQ про разные сопутствующие вещи.
— Если я посмотрю в сторону во время работы лазера, что случится?
У вас попросту не выйдет. На самом деле сразу после обезболивания глаз прижимается к специальному пневмозахвату. Моргнуть у вас тоже не выйдет из-за фиксации (это небольно и недолго). Единственный момент, где можно серьёзно нарушить ход операции — это сильно дёрнуть головой, серьёзным волевым усилием вытащив её из подголовника. В этом случае операция мгновенно прекратится. Точнее, она прекратится даже до потери захвата (детали ниже).
— Как должна быть подготовлена операционная?
В целом — как обычная операционная, то есть это помещение с чистой зоной (фильтрация воздуха, избыточное давление для предотвращения загрязнений извне после очистки). Для процедуры важно, чтобы между линзой лазера и глазом не попадали микрочастицы пыли, летающие в воздухе.
История операций по коррекции зрения: сравнение рисков и побочных эффектов

Механическое устройство, выстреливающее или медленно двигающее лезвием для срезания верхней части роговицы глаза
Начнём с истории, чтобы было понятно, как эволюционировали методы, а потом перейдём к рискам и побочным эффектам современных операций.
Итак, доктор Снеллен, который изобрёл таблицу проверки зрения, выдвинул теорию о том, что можно «поцарапать» глаз так, что кривизна роговицы изменится. Случилось это в 1869 году (в этом же году появилась таблица Менделеева и докопали Суэцкий канал), поэтому «царапать» тогда могли только металлическим скальпелем. Офтальмологии как отдельной науки официально не было, и занимались ей обычные хирурги — те же самые, которые бодро отпиливали руки и ноги при возникновении инфекции.
К глазам они приступать поначалу не решались: пациент вроде жив, шевелится и не кричит, значит, трогать его пока нет достаточных оснований. Поэтому первая операция по коррекции зрения была проведена доктором Лансом в Голландии только через 30 лет, в 1898 году.
Следующим отличившимся персонажем стал выдающийся советский хирург академик Святослав Николаевич Фёдоров, который предложил очень своеобразный метод: точечно нагревать роговицу глаза до тех пор, пока она не деформируется. Но вместе с японским офтальмологом Сато они быстро перешли к надрезам. Сато резал изнутри и тем самым создавал много осложнений, а Фёдоров делал насечки алмазным ножом снаружи. Эти самые надрезы фактически и положили начало современным лазерным операциям.
Телеметрия с лазера для коррекции зрения: полная операция с комментариями (не для слабонервных)

Введение шпателя для рассекания оставшихся тканевых мостков в разрез роговицы после лазерной обработки, но до извлечения лентикулы
Поехали. Итак, смотрите видео, а я покажу стопкадры с комментариями. Это реальная операция на пациенте в немецкой клинике, запись сделана на устройство вроде «чёрного ящика» аппарата VisuMAX. В данном случае пациент дал согласие на использование записи для учебных целей, обычно доступ к таким записям строжайше ограничен.
Консоль разработчика Google Chrome: десять неочевидных полезностей

На первый взгляд, перед нами – вполне обычная JavaScript-консоль, которая годится только на то, чтобы выводить в неё логи ответов серверов или значения переменных. Я, кстати, так ей и пользовался, когда только начал программировать. Однако, со временем набрался опыта, подучился, и неожиданно для себя обнаружил, что консоль Chrome умеет много такого, о чём я и не догадывался. Хочу об этом сегодня рассказать. Да, если вы читаете сейчас не на мобильнике, можете тут же всё это и попробовать.
Паттерны React
Прежде всего хотел бы поблагодарить автора оригинального текста. В переводе я использовал понятие «Простой компонент» как обозначение Stateless Component aka Dump Component aka Component vs Container
Конструктивная критика, а так же альтернативные паттерны и фичи React приветствуются в комментах.
Оглавление
- Простые компоненты — Stateless function
- JSX распределение атрибутов — JSX Spread Attributes
- Деструктуризация аргументов — Destructuring Arguments
- Условный рендеринг — Conditional Rendering
- Типы потомков — Children Types
- Массив как потомок — Array as children
- Функция как потомок — Function as children
- Функция в render — Render callback
- Проход по потомкам — Children pass-through
- Перенаправление компонента — Proxy component
- Стилизация компонентов — Style component
- Переключатель событий — Event switch
- Компонент-макет — Layout component
- Компонент-контейнер — Container component
- Компоненты высшего порядка — Higher-order component
Поехали!
10 особенностей Webpack

О фреймворках
В сегодняшней статье поговорим о неотъемлемой составляющей большого числа современных веб-проектов — о фреймворках.
Роман Ивлиев на примере множества проектов портала banki.ru, а также заказной разработки в студии крупных проектов Онтико. Рассмотрим следующие темы и поищем ответы на вопросы:
- Что такое фреймворк, и зачем их пишут.
- Почему для некоторых языков их десятки, а для некоторых — единицы.
- В чём плюсы и минусы применения.
- Наиболее распространённые мифы.
- Использовать или нет — примеры из жизни.
- Как выбрать из множества доступных вариантов, на что стоит обратить внимание.
Всему своё время

Банки.ру — проект с 10-летней историей. В разные времена banki.ru испытывали разные нагрузки. Портал перестраивался под новые требования как логически, так и технологически, что-то мы меняли в авральном режиме, что-то — эволюционным путём. Сейчас средняя посещаемость примерно 2 миллиона просмотра страниц, т.е. проект уже не маленький, но ещё и не совсем большой.
Эта статья — расшифровка доклада Романа Ивлиева (CIO Banki.ru) на обучающей конференции HighLoad++ Junior, которая прошла пару месяцев назад в Москве в рамках фестиваля “Российские интернет-технологии”.
В этой статье мы хотим поговорить об оптимизации, её своевременности, и о субоптимизации, о том, что далеко не всегда лучшие практики разработки нагруженных систем идут на пользу бизнесу.
Посмотрим примеры и поищем ответы на вопросы:
- Настолько ли ваш highload — highload?
- Считать ли хабрэффект поводом для внедрения высоких технологий?
- «Костыль» или «высокотехнологичное решение» — что выбрать? Плюсы и минусы.
- Как выбрать момент для начала новой эры? Есть ли критерии, когда имеет смысл начинать оптимизировать ваше приложение и внедрять крутые штуки «по-взрослому».
- Как можно использовать «список Бунина» для достижения очень неплохих показателей, и все ли пункты реально нужны вам?
- Как работать с техническим долгом, чтобы он не зарастал мхом?
В заключение Роман Ивлиев расскажет про несколько примеров из жизни banki.ru в части замены технологических решений в области высоких нагрузок, и что из этого вышло.
Про магазины и интровертов: ряд неявных вещей

В прошлый раз разгорелась целая дискуссия про интровертов в магазине. Так вот, интроверты в магазине — это счастье. Потому что именно по ним можно определить, насколько хорошо оный магазин работает. Как минимум четверть населения нашей страны интровертична и при этом доходит до магазинов (то есть это не клинические хикки).
Давайте посмотрим на ряд довольно неочевидных вещей, которые особенно важны для таких людей. И, естественно, которые оказывают влияние на всех остальных тоже, но в меньшей степени.
Итак, самый верный способ сорвать покупку, когда всё хорошо — это пройти за спиной человека, рассматривающего полку. Это знает каждый, кто хоть раз занимался трассировкой потоков в магазинах. Если у человека за спиной образовался второй покупатель или консультант — он начинает беспокоиться, как разработчик, у которого за спиной во время отладки кто-то молча стоит. И чаще всего покидает магазин в ближайшие 30 секунд. Причём часто не осознаёт, почему.
У вас нет высыпаний? Будут

Он спросил:
– Женя, привет. (wave) Вопрос к тебе, как мега лайв хакеру. Сколько времени нужно спать, что бы мозг отдохнул и можно было плодотворно работать? Умные будильники сильно помогают?
Я ответил, а потом подумал, ведь и парочке сотен человек с Хабра тоже пригодится хоть один пунктик из вычитанных мною ранее советов, ведь «так как никто не слушает, приходится повторять»:
Обновление UEFI/BIOS в Linux
Не секрет, что производители материнских плат и ноутбуков не всегда дают возможность пользователям Linux обновить UEFI/BIOS
прошивку так же ненавязчиво, как это делают пользователи Windows. Тем не менее для HP EliteBook 840G1, которым я пользуюсь, сделать это немногим сложнее.

Для этого дела понадобятся следующие артефакты:
- FAT32 EFI System Partition (ESP)
- WINE
- Переменный электрический ток
Как продавать: как должен работать продавец

Привет! Не думал, что когда-нибудь буду публиковать тут настолько далёкое от ИТ, но давайте попробуем, благо новые тематики позволяют. Сейчас расскажу, как именно мы учим своих продавцов. Если вы физически что-то продаёте — это гайд, как не сильно накосячить. Механика обтачивалась примерно три года.
Итак, первое и главное в рознице — продавец должен быть уверен в своём товаре. Если товар — отстой, который надо впаривать, то продавец получит такое дикое искривление психики через месяц, что к живым людям его выпускать нельзя будет вообще. Товар должен быть такой, чтобы про него можно было спокойно искренне рассказывать — и чтобы люди после этого брали. Это основа маркетинга. Уверенность в товаре — базис для всех остальных принципов.
Теперь посмотрим на сам процесс продажи. Он делится на пять шагов — приветствие, засада, разработка, презентация, продажа. Самая частая ошибка приветствия в том, что продавец, скорее всего, не доктор. Поэтому «Вам чем-нибудь помочь?» — это где угодно, но только не в стенах нашего магазина. Правильно улыбнуться и поздороваться с человеком, когда он заходит на точку. Задать настроение и обозначить, что вы его увидели. И всё. Не лезть к нему и не подходить даже. Человек зашёл — не надо набрасываться.
Хотя нет, прежде чем переходить к пунктам, обсудим подготовку.
Главный наш принцип в отношении покупателя — относиться к нему как к другу. Это не красивые слова, а одна предельно конкретная вещь — не делай ничего такого, что не сделал бы с другом.
Эффективное использование Github

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.
Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).
Содержание
- Трюки с URL
- Горячие клавиши
- Тикеты и пулл-реквесты
- Github markdown
- Аккаунт
- Работа с репозиториями
- Поиск кода
- Командная строка и Github
- User scripts
- Github-вандализм
- Дополнительные Github-ресурсы
- Полезные ссылки
Многопоточные вычисления в PHP: pthreads
Недавно я попробовал pthreads и был приятно удивлен — это расширение, которое добавляет в PHP возможность работать с несколькими самыми настоящими потоками. Никакой эмуляции, никакой магии, никаких фейков — все по-настоящему.
Я рассматриваю такую задачу. Есть пул заданий, которые надо побыстрее выполнить. В PHP есть и другие инструменты для решения этой задачи, тут они не упоминаются, статья именно про pthreads.
Стоит отметить, что автор расширения, Joe Watkins, в своих статьях предупреждает, что многопоточность — это всегда не просто и надо быть к этому готовым.
Кто не испугался, идем далее.
Путь лапласиана. Часть 2
А не замахнуться ли нам на Эдсгера нашего Дейкстру?

В первой части мы описали способ ранжирования симметрично связанных объектов (узлов неориентированного графа) относительно заданного направления. Для каждого объекта (узла) вычисляется потенциал (лапласиана), который определяет его положение относительно заданных источника и цели. В данной статье мы покажем, как потенциалы упрощают задачу поиска кратчайших путей (оптимальных маршрутов). А также как меняются сами потенциалы при изменении внешних условий.
В общем случае минимизируемая величина — это необязательно расстояние, — весами ребер графа могут быть стоимости, штрафы, убытки, времена, — любые величины, которые можно складывать. Задача является классической, наиболее простой алгоритм поиска кратчайшего пути дал Э. Дейкстра в 1959 году.
Как ведут себя покупатели с Хабра

Привет! Когда хабраэффект в декабре постиг мою книгу, у нас за два дня появилось несколько сотен заказов от людей. Особых людей. Колл-центр осторожно назвал новую для себя категорию «глубоко погружёнными в IT». До этого игры как-то не особо затрагивали самую красноглазую часть сообщества, а книга вот зацепила.
На второй день девушки расслабились и постарались получить удовольствие.
Расскажу, на что это похоже.
Небольшое погружение внутрь взломанного сайта

Паттерны заражения (число, состав и назначение вредоносных скриптов) могут меняться. В данном случае статистика по заражению следующая:
- 41 вставка бэкдора
- 5 WSO веб-шеллов
- 4 скрипта, внедряющих вредоносный код в .php файлы
- 7 mail() спам-рассыльщиков
- 2 спам-рассыльщика, работающих через SMTP
- 1 бэкдор
- 1 скрипт, внедряющий вредоносный код в wordpress/joomla скрипты
Среди “вредоносов” есть всякие интересные экземпляры. Но речь сегодня пойдет не о них. Интереснее анализировать не столько статический вредоносный код в файлах, сколько процесс работы с «вредоносами» в динамике: какие запросы и в каком формате шлют командные центры внедренным бэкдорам, с какой интенсивностью, с какими параметрами и т.п. Кроме того, статический анализ для современных зловредов работает плохо, потому что некоторые скрипты не содержат payload’ов.
Долгая история про локализацию даты без года в PHP
intl
, которое входит в ядро с версии 5.3. И в этом intl
есть класс IntlDateFormatter
, у которого в свою очередь предопределено несколько форматов. Используем его LONG
формат.<?php
foreach (['en_US', 'ru_RU', 'es_ES', 'fa_IR'] as $locale) {
$formatter = new IntlDateFormatter(
$locale,
IntlDateFormatter::LONG,
IntlDateFormatter::NONE,
'Europe/Moscow'
);
echo $formatter->format(1455111783), PHP_EOL;
}
Результат:
February 10, 2016
10 февраля 2016 г.
10 de febrero de 2016
۱۰ ﻑﻭﺭیﻩٔ ۲۰۱۶ ﻡ. // вот тут вообще-то RTL-текст, но я хз как это правильно оформить
Пока неплохо. А теперь давайте слегка изменим условия: «вывести локализованную дату: там должен быть день и полное название месяца на языке локали». То есть, мы не хотим отображать год.
Information
- Rating
- 2,587-th
- Location
- Бишкек, Кыргызстан, Кыргызстан
- Date of birth
- Registered
- Activity