Сайт Романа ПарпалакаБлог

Viewport в Edge

29 октября 2017 года, 00:42

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

Для нормального отображения сайтов на узких экранах мобильников верстальщик добавляет в html-код страниц мета-тег viewport:

<meta name="viewport" content="width=device-width, initial-scale=1">

Например, вот скриншот моего сайта:

Если этого не сделать, на странице всё будет слишком мелким, а при увеличении масштаба появляется неудобная горизонтальная прокрутка:

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

Для айфона в Эпле придумали мета-тег viewport, который говорит браузеру: «Я нормально отображаюсь на маленьком экране, выключи свое масштабирование». Сейчас этот мета-тег остается вне рамок стандартов, но поддерживается в большинстве современных браузеров, кроме Edge.

Микрософт избрал свой путь и поддерживает специальное css-правило @-ms-viewport. Это вендорный вариант правила @viewport, стандарт на которое находится в черновиках. Без этого правила сайты отображаются на планшетах с Windows в уменьшенном масштабе (как на втором скриншоте).

Каждый раз, когда вы добавляете мета-тег viewport, добавьте в css соответствующий код:

@viewport {
	width: device-width;
	}

@-ms-viewport {
	width: device-width;
	}

Доля пользователей Edge близка к нулю, но такие люди есть :) Так почему бы парой строк кода не сделать им приятно? И к стандартному способу управления размером видимой области ваш сайт будет готов.

    2 комментария

Бинбанк всё

21 октября 2017 года, 12:08

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

У Бинбанка есть кешбек под названием «Бинбонус». По всем покупкам они возвращают 1%, а за покупки в выбранной категории — 5%. В свое время я выбрал «Отдых и развлечения» и не прогадал. Туда входят рестораны, кино, театры, концерты, музеи, кафе и бары, ночные клубы, боулинг и бильярд, выставки, цирки и зоопарки, билеты на спортивные мероприятия. Сходил в кино, поел в кафе — тебе вернулись 5%.

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

И вот я получаю уведомление об изменениях в кешбеке:

C 1 ноября по 31 декабря 2017 года Вы сможете получить на 50% больше бонусов за покупки в дополнительных категориях:
— при оплате картой в ноябре в категории «Одежда и обувь» Вам будет начислено бонусами 1,5% от суммы покупки;
— при оплате картой в декабре в категории «Электроника» Вам будет начислено бонусами 1,5% от суммы покупки.

Также информируем Вас об изменениях в программе Бинбонус, которые вступят в силу 1 ноября:
• Минимальная сумма для начисления бонусов в месяц — 100 бонусов
• Минимальная сумма для компенсации покупки — 500 рублей
• Установлен максимальный порог начисления бонусов за покупки в выбранной категории — 1500 бонусов (общий порог остается прежним — 3000 бонусов)

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

А дальше — интереснее. То, что обычно написано мелкими буквами рядом со звездочкой. Если вы заработали за месяц меньше 100 бонусов (1 бонус = 1 рубль), то вы ничего не получаете (раньше было 50 бонусов). Бонусы не просто поступают на ваш счет в виде рублей. Нужно подобрать покупки, которые можно компенсировать бонусами. Раньше минимальная сумма компенсации была 100 рублей, а теперь стала 500 рублей. Таким образом, если у вас небольшие расходы, вы либо вообще не получите кешбек, либо получите непонятно когда.

Рассмотрим пример. Чтобы каждый месяц получать хоть какие-то бонусы, я должен тратить минимум 2000 рублей на отдых и развлечения, минимум 10 000 рублей не на отдых и развлечения, или промежуточную сумму при смешанных покупках. Получу при этом минимум 100 бонусов. Потратить я их смогу, только когда накопится X бонусов, причем X > 500 и должна существовать покупка на сумму между 500 и X рублей. При указанных расходах банк будет возвращать на карту 500 с чем-то рублей где-то раз в полгода, если вы что-то покупали на соответствующую сумму.

Читаем дальше и узнаем, что при больших тратах процент бонусов тоже снижается. Теперь за «отдых и развлечения» я смогу получать только 1500 бонусов, хотя раньше мог до 3000. То есть кешбеком покрывается 30 000 рублей. Такая сумма легко набегает, если обедать втроем-вчетвером. Если потратил больше, дополнительных бонусов не получу. У меня сумма бонусов обычно подбирается к этому ограничению, и один раз даже была 1560.

Всего этого и следовало ожидать. Бинбанк постепенно сворачивает плюшки для клиентов и превращается отделение госбанка.

    Оставить комментарий

О режимах редактора vim

18 октября 2017 года, 23:07

На хабре идут обсуждения вима: «Режимы не фатальный недостаток, а киллер-фича» и «Киллер-фича в vim — это режимы? Серьёзно?».

И даже в комментариях никто не вспомнил старика Раскина. Именно он писал в книге «Интерфейс» о проблемах модальности и режимов (конспект нескольких глав книги тоже есть на хабре). Причем и в статьях, и у Раскина совпадает не только используемое понятие, но и его название — «режим».

Чтобы выжить, когда случайно оказываешься в виме, я помню две вещи. Если редактор не печатает, будто сломалась клавиатура, нужно нажать i. Чтобы выйти, нужно нажать эскейп-двоеточие-q. Или wq, если нужно сохранить изменения.

Интерфейсные решения вима устарели чуть менее, чем перфокарты. Сравнивать вим и современные IDE — всё равно что сравнивать интерфейс Нокии 3310 и любого современного смартфона.

В этой заметке я почти удержался от использования фразы «дерьмо мамонта».

    1 комментарий

Парк «Зарядье»

13 сентября 2017 года, 23:06

Медуза пишет, что посетители парка «Зарядье» вытоптали 10 тысяч растений, часть выкопали, засунули в сумки и унесли с собой.

Ясно же, что открывать нужно было почти пустой парк: деревья, дорожки, лавочки, обычный газон. Через месяц-другой, когда поток посетителей уменьшится, начать понемногу высаживать редкие растения.

А тут на первое место поставили помпезность открытия, а не удобство людей. И получили соответствующий результат.

Вот такой вот флекс скоуп.

    Оставить комментарий

Сочинение музыки к стихотворениям

16 августа 2017 года, 17:46

Когда моя знакомая (Олеся, привет) узнала, что я пытаюсь сочинять музыку, попросила сочинить что-нибудь к ее стихотворениям. Из четырех выбрал одно:

Слетают листья, словно конфетти.
Неслышно в доме сумерки вздыхают.
И наши одинокие пути
Созвездия в ночи пересекают.

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

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

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

Роман Парпалак: В чужой Вселенной

Дальше я расскажу, как сочинял эту композицию. К четверостишиям хорошо подходит последовательность аккордов золотой секвенции. Ее я и выбрал.

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

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

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

В основе всех трех строф одна и та же часть с небольшими ритмическими и мелодическими вариациями, продиктованными различным текстом. Я разбавил строфы проигрышем с гармонией i VI VII V.

    1 комментарий

Как определить домен из PHP

14 августа 2017 года, 23:12

Илья Бирман написал про баг в Эгее, когда сайт доступен по разным доменам, и RSS кешируется то с одним доменом, то с другим.

Эгея, чтобы узнать, на каком сервере она работает, смотрит, по какому адресу её открыли — больше ей это узнать неоткуда.

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

HTTP_HOST и SERVER_NAME

Для этих целей обычно проверяют серверную переменную HTTP_HOST. Но в ней всего лишь содержимое заголовка Host из http-запроса. Этот заголовок — часть стандарта HTTP/1.1, и в HTTP/1.0 он не обязателен. Правда, без этого заголовка не заработают виртуальные хосты — разные сайты на общем сервере. Но даже в таком случае среди сайтов есть сайт по умолчанию, открывающийся при заходе напрямую по IP. Так вот, когда устаревшие клиенты (в том числе нормальные браузеры за старыми или специально настроенными прокси) открывают сайт по умолчанию, переменная HTTP_HOST будет пустой.

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

server_name _;

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

Подробности для дальнейшего чтения на стековерфлоу: HTTP_HOST vs. SERVER_NAME.

Параметр конфигурации

Если вы делаете распространяемый движок для работы на разных серверах, у вас нет гарантированного способа определить хост, по которому открыт сайт. В моем движке S2 я скопировал способ из PunBB. В нем установочный скрипт «угадывает» адрес сайта (протокол + домен + порт + подпапка) в том числе на основе HTTP_HOST, дает возможность этот адрес отредактировать и сохраняет результат в конфигурационный файл. Затем именно этот адрес используется для генерации ссылок.

Как альтернативу Илья советует настроить редиректы. Это правильно, но, опять же, не всегда выполнимо. Например, вы настроили на сервере https, но не хотите делать редирект с http на https (вы хотите поддерживать старые браузеры, но у вас нет отдельного IP-адреса на каждый домен).

Когда одна и та же страница открывается по разным адресам, Гугл рекомендует в явном виде указывать canonical-адреса:

<link rel="canonical" href="https://example.com/some/url" />

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

Кстати, давно хотел написать о том, что https — это новый www. Он вынуждает совершать дополнительные бессмысленные действия при настройке сайта вроде редиректов с www. Ради https мне пришлось сделать в S2 поддержку тега link rel="canonical".

    Оставить комментарий

Программирование ≠ информатика

9 августа 2017 года, 00:03

На хабре перевод статьи некоего Коннелла о том, почему нельзя до конца формализовать и алгоритмизировать разработку софта:

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

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

  • Что должна делать эта программа? (требования, юзабилити, безопасность)
  • Как должна выглядеть программа внутри, чтобы её легко было починить и модифицировать? (архитектура, дизайн, масштабируемость, переносимость, расширяемость)
  • Как долго займёт её написание? (оценка)
  • Как мы должны её разрабатывать? (кодирование, тестирование, измерение, конфигурация)
  • Как следует эффективно организовать работу команды? (менеджмент, процесс, документация)

Все эти проблемы вращаются вокруг людей.

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

    Оставить комментарий

Экспонента

3 июля 2017 года, 22:21

Смотрю лекции Алексея Савватеева по математике и получаю удовольствие. Вот лекция, в которой он переделал вузовский курс математики так, что его половина связана с изучением разных свойств экспоненты:

С 1:15:20 он строго доказывает формулу Эйлера о мнимой экспоненте $$e^{iy}=\sin y+i\cos y$$ тем же нестандартным методом, который я использовал в своей заметке про экспоненту и приближенные методы.

    Оставить комментарий

AMP

30 июня 2017 года, 22:22

Статья на хабре про AMP. Вообще, эта «технология» всегда казалась мне странной. Зачем подключать какую-то js-библиотеку для быстро загружаемой версии сайта? Можно же просто убрать мусор из разметки, скриптов и стилей. Сделать резиновую верстку под экраны любого размера.

Оказалось, всё гораздо хуже. Гугл при переходе из поиска показывает кешированные amp-страницы на своем домене, если они есть на вашем сайте. И твиттер неправильно обрабатывает ссылки на нормальные страницы.

    Оставить комментарий

Где учиться: на физтехе или физфаке?

25 июня 2017 года, 21:41

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

Ко мне обратился выпускник Олег и попросил сравнить МФТИ с физфаком МГУ и другими вариантами. В свое время у меня была похожая дилемма: на физфак МГУ меня брали без экзаменов по результатам олимпиад, и на мартовской олимпиаде МФТИ, засчитываемой как вступительные экзамены, у меня было 22 балла из 24.

С разрешения Олега публикую слегка измененную переписку.

Роман, добрый день,

Случайно наткнулся на ваш сайт, пока пытался решить, какой именно выбрать вуз для поступления. Понятно, что время для такого решения уже почти прошло. Но в моей семье (а следственно и у меня) мнение о том, что нельзя делить шкуру не убитого медведя играет весомую роль. Сейчас же я имею на руках олимпиады и подтверждения к ним по результатам ЕГЭ, позволяющие поступить на физфак мгу и в физтех, но помимо этого и на математические направления.

Я достаточно большое количество времени проводил в олимпиадных школах и встречал преподавателей как с физфака, так и из физтеха. Сегодня среди олимпиадников-школьников бытует мнение о том, что физтех гораздо лучше физфака, но все доводы ограничиваются фразами: «с физтеха лучше берут на работу» или «физфак и его программа устарели», при этом фактов никто не приводит. По словам некоторых преподавателей, основное отличие заключается лишь в том, что в физтехе вас заставят пахать, а на физфаке вы сами должны будете себя заставлять. Очень бы хотелось услышать каково ваше мнение относительно обучения на физфаке, ведь вы должны быть знакомы с его выпускниками сильнее чем мог бы я.

И еще один вопрос мне хотелось бы задать. Как я понимаю, программа физтеха рассматривает математику не только как прикладную составляющую физики, но и как вполне самостоятельную науку. Если существует возможность обучаться на одном факультете математике у преподавателей матфака ВШЭ и у пед. состава набранного из физфака и физтеха (Парфенов, Якута, Александров), то целесообразно ли это или же физтех/физфак в этом случае предпочтительней. Возникают опасения о том, что такого пед. состава по физике может просто не хватить для полного и правильного обучения физике. Очень бы хотелось услышать ваше мнение, как человека не заинтересованного в продвижении данного варианта.

Заранее благодарю за ваш ответ.
С уважением, выпускник школы №57, Михайлов Олег.

Добрый день, Олег.

Судя по письму, вы интересуетесь тем, где лучше учиться. Такие же вопросы при поступлении беспокоили и меня. Но обратите внимание и на другие вещи:
— Где вы хотите работать после окончания вуза? Кем? Сколько зарабатывать?
— Хотите ли уехать за границу или остаться в России?

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

Если вы хотите уезжать в Европу или Америку, то лучше выбирать физтех. Это известный вуз. Чтобы уехать, нужно найти научного руководителя за границей. Это могут быть и эмигрировавшие соотечественники.

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

На физтехе с 4 курса начинается специализация: учеба на базовых кафедрах и работа с научным руководителем. У нас в ОИЯИ (Дубна) были общие занятия со студентами других вузов, например, МГУ, МИФИ. С этой точки зрения не так уж и важно, где учиться. Вы просто придете разными путями к одному и тому же. Здесь нет неправильного выбора.

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

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

    1 комментарий

← сюда туда →

Поделиться
Записи