Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Позднее Ctrl + ↑

Языки в Эгее

В Эгее ещё с версии 2.2 поддерживаются разные языки интерфейса. С версии 2.3 язык можно выбрать в настройке. В комплекте там есть только русский и английский, потому что мне самому нужны были только они.

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

Тем не менее, количество поддерживаемых языков хочется расширить. По этому поводу у меня есть идея организовать на Гитхабе проект «Языки в Эгее», залить туда мои файлы для русского и английского в 2.4, и дать возможность всем желающим создавать свои языки. Все будут видеть изменения, сделанные другими, в том числе, мои. Соответственно, если появятся новые текстовые строки, нуждающиеся в переводе, все, кого интересует некоторая локализация, смогут её дополнить.

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

Что думаете вообще? Будет ли это работать? Оставляйте комментарии.

Объявление на платформе станции «Кингс-кросс»

Сотрудник лондонского метро объявляет всякие вещи, стоя на платформе Пикадилли-лайн станции «Кингс-кросс». В частности, что поезд идёт до Хитроу, терминалов 1, 2, 3 и 5. Видео из серии «жалко было удалять, но на телефоне оно мне ни к чему»:

Про файл .htaccess в дистрибутиве Эгеи

В дистрибутиве Эгеи есть файл .htaccess, который настраивает Апач на нужный лад. В частности, там прописаны правила для mod_rewrite, которые нужны, чтобы работали красивые урлы.

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

Раньше было так: человек распаковывал дистрибутив Эгеи где-нибудь у себя на диске, а потом выделял все файлы и загружал на сервер по ФТП. Проблема в том, что «выделял все файлы» не касалось невидимого .htaccess, поэтому последний на сервер не попадал, и движок не работал. При первом запуске происходил редирект на /install/, но инсталятор уже не открывался, поскольку необходимая настройка mod_rewrite не была сделана.

В какой-то из версий я придумал такой хак: в дистрибутив помимо файла .htaccess я стал класть ещё и его копию под именем htaccess (без точки). При этом перед редиректом на /install/ я стал пытаться переименовать бесточечный файл в точечный:

if (
  (strpos ($_SERVER['SERVER_SOFTWARE'], 'Apache') === 0)
  and !is_file ('.htaccess')
) {
  if (is_file ('htaccess')) {
    if (@rename ('htaccess', '.htaccess')) {
      e2_go_to ();
    }
  }
}

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

Наверняка есть какой-то бест практис на эту тему, чтобы это всё работало надёжно. Если у вас есть такой опыт, и вы знаете, как сделать правильно, напишите, пожалуйста: ilyabirman@ilyabirman.ru. Спасибо.

Что почитать на выходных — 93

  1. Патриотизм или Мир? Лев Толстой: «Люди серьёзные, старые, умные, добрые и, главное, стоящие как город на верху горы, люди, которые своим примером невольно руководят массами, делают вид, что законность и благодетельность патриотизма до такой степени очевидна и несомненна, что не стоит отвечать на легкомысленные и безумные нападки на это священное чувство, и большинство людей, с детства обманутое и зараженное патриотизмом, принимает это высокомерное молчание за самый убедительный довод и продолжает коснеть в своём невежестве». К понедельничной дискуссии. Правда он там зачем-то противопоставляет патриотизму христианство, хотя все его же доводы в равной, если не в большей степени, применимы и к нему.
  2. Как научить дизайнера работать. Артём Горбунов рассказывает о Школе стажёров.
  3. Рано расслабляться. Максим Ильяхов: «Чтобы удержать скалолаза, на каждой контрольной точке оборудован лагерь со всеми удобствами».
  4. Katie Cotton. Грубер рассказывает историю про встречу с Кейти Коттон, которая руководила пиар-службой Эпла 18 лет, а теперь ушла на пенсию.
  5. Пост спонтанного проявления доброты.

Однажды в Википедии: Волны Мартено · Лентикулярное облако

Хотите стать спонсором рубрики? Пишите: ilyabirman@ilyabirman.ru

Цитата о связи рыночной цены и производственных издержек

В эфире снова Марри Ротбард. На этот раз он объясняет нам, что цена продукта на рынке влияет на то, какими будут издержки на его производство, а вовсе не наоборот, как думают многие. Собственно, этих многих он сразу же и мочит (курсив из оригинала; многоточия — мои пропуски):

Strange as it may seem, a great many writers on economics have deduced... that costs determine price. The price of the good discussed above is 100 ounces per unit, allegedly because the cost (average money cost) is 100 ounces per unit. This is supposed to be the law of price determination «in the long run». It would seem to be crystal clear, however, that the truth is precisely the reverse. The price of the final product is determined by the valuations and demands of the consumers, and this price determines what the cost will be. If the consumers value the product mentioned above so that its price is 50 ounces instead of 100 ounces, as a result, say, of a change in their valuations, then it is precisely in the «long run», when the effects of uncertainty are removed, that «costs of production»... will equal the final price. We have seen above how factor incomes are at the mercy of consumer demand and fluctuate according to that demand. Factor payments are the result of sales to consumers and do not determine the latter in advance. Costs of production, then, are at the mercy of final price, and not the other way around...

In the real world of uncertainty it is more difficult to see this, because factors are paid in advance of the sale of the product, since the capitalist-entrepreneurs speculatively advance money to the factors in the expectation of being able to recoup their money with a surplus for interest and profit after sale to the consumers. Whether they do so or not depends on their foresight regarding the state of consumer demand and the future prices of consumers’ goods... [The error] comes from viewing the economy from the standpoint of an individual entrepreneur rather than from that of an economist. To the individual entrepreneur, the «cost» of factors is largely determined by forces outside himself and his own sales; the economist, however, must see how money costs are determined and, taking account of all the interrelations in the economy, must recognize that they are determined by final prices reflecting consumer demands and valuations.

Предыдущие цитаты из книги:

Бонусы списываем, копим?

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

Бесит, что на кассе всё время спрашивают: «Бонусы списываем, копим?». Владельцев супермаркетов, конечно, можно понять. Кого невозможно понять, так это чудаков, которые предпочитают бонусы копить. Нахера их копить, блин? Если вам нравится раздавать бесплатные кредиты, так чего мелочиться, почему бы вам не основать сразу Банк Щедрости? Будет куча желающих воспользоваться вашими уникальными услугами.

Ясное дело, списываем.

Ссылка по теме: Вам сколько пакетов?

Темы оформления в Эгее 2.4

 5 мин

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

Как в принципе работают темы в Эгее

С точки зрения ядра, всё, что идёт наружу (ХТМЛ, ЦСС и Джаваскрипт) — это «тема оформления». Чтобы отдать любую страницу, ядро готовит данные и отдаёт их в шаблон main.tmpl.php. Шаблон может использовать другие шаблоны, подключать стили и скрипты — это уже его заботы, ядру безразлично, как именно он генерирует страницу.

Есть только момент, связанный с наследованием. Ядро пытается использовать main.tmpl.php из папки вашей темы (/themes/yours/main.tmpl.php). Если файла нет, то берёт из родительской (допустим, из системной: /system/theme/main.tmpl.php). Когда main.tmpl.php вызывает, допустим, footer.tmpl.php, ядро, снова, сначала ищет такой файл в используемой теме, потом в её родительской и так по цепочке вплоть до системной темы.

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

Что изменилось и почему

Ядро как раньше отдавало все данные в main.tmpl.php, так и сейчас отдаёт. Логика наследования тоже осталась прежней.

Но поменялась сама организация комплектных тем, и то, кто из них чего откуда наследует. Раньше в системной папке /system/theme/ лежала «Классическая» тема, то есть стандартная тема оформления Эгеи. Остальные темы лежали в /themes/*/ и наследовали от системной. Получалось, что любая ваша тема неизбежно наследовала от «Классической» и описывалась не в формате «хочу так», а в формате «хочу не так, как в „Классической“, а вот так». У «Классической», хоть она и весьма нейтральна, есть своё мнение по некоторым вопросам. При этом не опираться на неё совсем — невозможно, потому что в ней живёт вся логика фронтенда.

В новой версии «Классическая» тема переехала в /themes/classical/ и больше не претендует на основу всего. Системная же тема, живущая в /system/theme/, теперь выглядит совсем голой, это такая тема «без дизайна», но со всей логикой. Она навязывает вам намного меньше своей воли.

Теперь все комплектные темы (включая «Классическую») содержат по одному шаблону — layout.tmpl.php. В нём определён весь ХТМЛ-каркас темы. Все остальные шаблоны с мелочами определены в системной. При этом по-прежнему ничего не мешает в своей теме переопределить любой шаблон, как и раньше, просто новая конструкция помогает в большинстве случаев отделаться одним файлом.

Соответственно, чтобы создать свою тему, вам теперь не нужно в большинстве случаев вообще ходить в папку /system/theme/ и смотреть, как там что устроено. Вы просто копируете приглянувшуюся папку из /themes/, называете как вам нравится и меняете в ней всё по вкусу.

Как прикрутить свою старую тему к Эгее 2.4

Лучше переделать тему по новым правилам, но есть хак чтобы быстро воткнуть старую.

Темы, написанные для 2.3 оказываются несовместимы с 2.4 только потому, что они рассчитывали на другую иерархию, наследовали от старой системной или другой комплектной темы. Поэтому, если взять родительскую тему (темы?) из старой, то всё заработает. Если у вас не сохранился дистрибутив Эгеи 2.3, скачайте его.

Возьмите системную тему оформления из Эгеи 2.3 (папка /system/theme/) и положите новой в /themes/system_2_3/. Теперь откройте файл вашей темы theme-info.php. Используете ли вы какую-то другую тему из Эгеи 2.3 в качестве основы для своей с помощью поля based_on?

Если нет, то всё просто: значит ваша тема основана на системной теме Эгеи 2.3. Тогда в ваш theme-info.php допишите:

'based_on' => 'system_2_3',

Если да, то из дистрибутива Эгеи 2.3 вам нужно будет взять ещё и ту тему, на которой основана ваша. Предположим, это «Просторная». Тогда надо взять папку /themes/spacious/ из старого дистрибутива и положить в /themes/spacious_2_3/, а в вашей теме прописать так:

'based_on' => 'spacious_2_3',

Но это не всё. Сама-то «Просторная» из 2.3 основана на системной из 2.3, поэтому эту связь тоже придётся прописать. Зайдите в /themes/spacious_2_3/, откройте её theme-info.php и допишите там:

'based_on' => 'system_2_3',

Теперь вы восстановили всю иерархию зависимостей тем оформления, которая у вас была раньше.

Есть ещё одна проблема: в старых Эгеях использовалась фича ПХП под названием short_open_tag. Эта опция позволяет в качестве тега ПХП-кода использовать краткую форму <? ?> вместо длинной <?php ?>. В новой Эгее я от этого отказался, потому что от этого с какого-то перепугу отказался в последних версиях сам ПХП. Но темы, которые вы взяли из старого дистрибутива используют короткую запись. Соответственно, вам надо либо во всех файлах заменить <? (но не <?=) на <?php, либо, если вы используете более старую версию ПХП, которая ещё поддерживает short_open_tag, включить эту фичу в Эгее (для этого откройте .htaccess из корня и исправьте там в обоих местах short_open_tag off на short_open_tag on).

Почему это всё хак и лучше так не делать? Как минимум потому, что в новых темах много чего причёсано и появились радости типа затухания подсветки ссылок. Если вы воткнёте всё старое, то это потеряется. Ну и потеряется смысловая часть фронтенда, появившаяся только в новой версии, например, блок «Популярное», социокнопки, подсветка синтаксиса. Так что рекомендую потратить полчаса и переделать свою тему по новым канонам, чтобы она наследовала от новой «голой» системной.

Правильное время съёмки у фотографий

Я люблю, чтобы у фоток в метаданных было правильно прописано время съёмки. Но я никогда в жизни не полезу разбираться, как настраивать часы на фотике (да и если бы это было легко делать, я бы всё равно забывал). Вместо этого я фотографирую часы в поездках — благо, их полно на транспорте, да и на улицах многих городов — а потом корректирую время фоток по ним.

Правильное время съёмки у фотографий

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

Это секундное движение, а главное — оно не требует никакой дисциплины: время можно прописать в любой момент, когда понадобится. Вот я сегодня искал какую-то фотку из старой своей поездки, 2005 года, а там время неправильное. Быстро нашёл часы (благо, всякие табло я фотографировал всегда), всё подправил.

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

Правильное время съёмки у фотографий

Да, конечно, фотик должен сам знать текущее время безо всякой настройки, как телефон. Но мой пока не знает.

Дискуссии по понедельникам: что хорошего в патриотизме?

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

В предыдущей серии: нумерация выходов из метро.

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

Что такое патриотизм? Как он помогает людям? Что было бы в жизни хуже, если бы патриотов не было? А что стало бы лучше, если бы стало больше патриотов? Вы считаете себя патриотом? Гордитесь своей родиной? В чём это выражается? Пытаетесь ли склонить к патриотизму своих детей, родственников, друзей? Могут ли вообще патриотические чувства возникнуть у человека без патриотического воспитания? Кстати, о родине: что считать родиной? На какую территорию распространяется патриотизм? Если я родился в СССР, то могу ли я считать Киев своей родиной? Или это не патриотично? Как быть патриоту, рождённому в 90-е в Симферополе?

Пишите всё, что думаете по этому вопросу.

Ранее Ctrl + ↓