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

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

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

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

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

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

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

Ключевые слова: по жизни | Оставить комментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

Ключевые слова: музыка | Оставить комментарий

Как определить домен из 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".

Ключевые слова: www, PHP, S2 | Оставить комментарий

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

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

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

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

Ключевые слова: совет, учеба | Оставить комментарий

Как улучшить legacy-код

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

Статья на хабре «Как улучшить legacy-код». Многим пригодится, потому что легаси-код есть в большинстве проектов. Особенно рекомендуется тем, кто сразу хочет переписать такую систему с нуля, едва столкнувшись с ней.

Ключевые слова: программирование | Оставить комментарий

Митинги в День России

12 июня 2017 года, 21:29

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

Результат акции показался мне странным. Протестующие растворились среди отдыхающих. Сколько было тех и других — непонятно. И полиция испортила праздник реконструкторам исторических событий.

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

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

Ключевые слова: политика, праздники | Оставить комментарий

Пишем объектно-ориентированный код в PhpStorm

8 мая 2017 года, 16:13

В прошлом посте я разрушал мифы о среде разработки PhpStorm. В продолжение я записал скринкаст о том, как в ней писать объектно-ориентированный код.

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

Содержание:
00:19 Процедурный стиль vs. объектно-ориентированный стиль
01:11 PHP не для процедурного программирования
02:22 ООП в PHP: много рутины
03:05 Задача: показать не только приемы работы в PhpStorm, но и пользу от ООП
04:08 Выбираем код для рефакторинга
05:10 Создаем класс: пространство имен; методы; константы
10:36 Автозагрузка классов через composer
13:28 Разбираем проблемы кода
15:34 Возвращаем вместо массива объект (DTO)
24:29 Избавляемся от глобальных переменных по принципу инверсии зависимостей (dependency inversion)
29:29 Наполняем DTO логикой: __toString
33:16 Рефакторинг
35:14 Наполняем DTO логикой: валидация в конструкторе
39:40 Получился код по принципам SOLID
40:24 Проблема создания сервисов
41:04 Решение с помощью контейнеров зависимостей; подключение Pimple через composer
46:01 Обзор изменений, привнесенных объектно-ориентированным подходом
48:09 Дополнение: подключаем библиотеку поиска Rose, описывая сервисы в контейнере
01:01:38 Подведение итогов

Ключевые слова: PHP, веб-разработка, видео | Оставить комментарий

туда →

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

Подписка на RSS (?)