Сиси
В окне магазина:

В окне магазина:
В общем, вчерашняя моя задачка во многом потеряла смысл, когда Дима Смирнов указал мне на наличие функции checkdate (). Просто когда проблема возникла я не пошёл читать мануал в поисках готовой функции, так как был уверен, что после того, как я намучился с проблемой часовых поясов и летнего времени (и стал мировым экспертом в этой области), я уже по-любому знаю все функции, связанные с датой временем. Оказалось, что я ошибся.
Впрочем, придумывать сложной математики мне не пришлось. Моё решение было однострочным и работало так:
return (
gmdate ('Y/n/d', gmmktime (0, 0, 0, $m, $d, $y))
== $y .'/'. $m .'/'. $d
);
Функция mktime умеет делать нормальный «тайм-штамп» из любых входных параметров. Например, если дать ей 25 часов 99 минут 32 декабря 2008 когда, то она вернёт штамп для 2 часов 39 минут 2 января 2009 не поперхнувшись.
Это свойство функции mktime () страшно удобно, потому, что если нужно посчитать, какими будут дата и время через 55 часов, то можно тупо прибавить 55 к часам и забыть про суточные, месячные и годовые переходы, забыть про учёт високосности — функция всё сделает сама.
Короче, критерий правильности даты — то, что функции не пришлось ничего «исправлять». (На самом деле, я уверен, что функция ничего и не исправляет, просто формулы в ней написаны так, чтобы всё работало независимо от корректности входных параметров.) А GMT-версии функций я использую «для надёжности», чтобы нигде часовые пояса не могли что-нибудь испортить.
Сергей Коваленко в комментариях к прошлой заметке предложил это же решение, причём совершенно справедливо не стал проверять день.
Если зайти по вот такому адресу — http://ilyabirman.ru/meanwhile/2008/02/77/ — то вместо ожидаемой страницы 404 мы увидим страницу, говорящую о том, что 77 февраля заметок нет. Это, конечно, не беда, но если это можно решить по-простому, то хочется взять, да и решить, правда?
Я это уже исправил в v1793, но на сайте пока крутится v1792 (последняя доступная всем остальным версия — v1746). Сначала я в функции, отвечающей за выдачу страницы архива, написал:
if (!e2_date_possible ($year, $month, $day)) return e2_error404_mode ();
А потом написал функцию e2_date_possible (), которая получилась не намного длиннее.
Задача: придумайте функцию e2_date_possible () лучше моей (не видя мою).
Update:
Дмитрий Смирнов: Ты изобрел функцию checkdate, поздравляю!
Принимаю поздравления. Это, кстати, подтверждает правоту Болка. Тем не менее, задачка остаётся, просто к ней добавляется (в реальной жизни ненужное) условие неиспользования функциии checkdate ().
Болк решил называть язык Питон «Пайтоном»:
Ruby никто не называет «Рубином», язык «Си» языком «Вэ», а SmallTalk «Непринуждённой Беседой». Python — это «Пайтон».
Ждём, что браузер Хром Болк будет называть «Кроумом», автомобиль Форд Фокус — «Фордом Фоукэсом», самолёт Аэробус «Эйрбасом», телевизор Пионер — «Пайонииром», холодильник Электролюкс — «Илэктролаксом», а язык Си-плюс-плюс, приходящийся родственником приведённому им же в пример Си, — «Си-плас-пласом».
Названия иногда переводятся, а иногда нет (Bolshoi Theater, но Red Square; Солт-Лейк-Сити, но Новый Южный Уэльс), но их всегда нужно так или иначе адаптировать к другому языку, и выбор способа такой адаптации (перевод по словарю, транслитерация, транскрипция или их комбинация) нельзя делать механически, раз и навсегда приняв решение на все случаи жизни.
Любимым примером человеческого, а не роботизированного отношения к адаптации названия для меня является лебедевское Mosfinagency («Мосфинагентство» на английском сайте Студии). А любимым примером кретинского, безмозглого «перевода», безо всякой нужды убивающего смысл, — название Mosfil’movskaya, которое значится на двуязычных указателях к Мосфильмовской улице: слово film порвано апострофом, как если бы это было какое-то неведомое сокращение.
Знать, как правильно произносятся слова на «родном» для них языке, безусловно, полезно. Но по-русски, тем не менее, нужно говорить: «Хром», «Микрософт», «Форд Фокус», «Аэробус», «Пионер», «Электролюкс», «Си-плюс-плюс» и — «Питон».
Вот это — настоящий праздник древовидного общения в же-же:
Комментарии удобнее писем. Невозможно совершенно ничего поделать с людьми, которые пишут комментарии типа «Илья, извини за офтоп, просто хотел спросить...» Поэтому правильно просто сделать на блоге специальное нечто, в которое можно писать автору в точно таком же интерфейсе, как интерфейс комментариев. Пока что мне это делать лень, поэтому если у вас есть что-то, о чём вы хотели меня спросить, или что вы хотели мне сообщить, можете сделать это в комментариях к этому посту. Можно даже не стесняться и писать комментарии открытыми, а не спрятаными.
Почему бы в супермаркетах не закидывать сдачу или мелкую её часть на скидочную карточку? Естественно, по желанию покупателя. Например, если я накупил на 1737 р. 65 к. и даю 2 тысячи, то могу получить сдачу 250 р., а остальное положить на карту, чтобы не возиться.
Во-первых, это позволит ускорить обслуживание, что добавит радости посетителям или, если посмотреть на это с другой стороны, позволит сэкономить на кассирах.
Во-вторых, это позволит магазину быть всё время в несколько большем плюсе, чем без такой штуки, что иногда может снять проблему кассового разрыва.
В-третьих, это существенно увеличит степень зависимости покупателя от магазина: он пойдёт туда, чтобы «не пропадали» деньги, которые остались на карточке.
В одном из комментариев к великой заметке было замечено, что Undo на закрытие табов не работает в Фаерфоксе, но если установить «навороченный плагин управления закладками», то такая возможность появится. Что я ответил на это?
Вот в этом весь Фаерфокс. Закладки «есть», но чтобы ими пользоваться нужен плагин. Функции Оперы не только в ней есть, но ими ещё и можно сразу начинать пользоваться.
Действительно, путь Оперы состоит не в том, чтобы зафиксировать факт наличия фичи, добавив её на страницу Features на сайте. Путь Оперы состоит в добавлении функциональности, в создании новых инструментов и подходов к использованию веба.
Ни один нормальный человек не знает разрешение своего телевизора и уж тем более версию стандарта инфракрасной связи в его пульте. Людей волнует другое: могут ли они лёжа на диване переключать каналы, или нужно встать и подойти к ящику. А от двухтюнерного телевизора нет проку, пока в нём не появляется функция «картинка в картинке» или возможность записывать то, что идёт по одному каналу, глядя другой.
Такие фичи, которые вроде бы и есть, но при этом пользоваться ими не очень ясно как, я называю «фичами для галочки». Но что-то мне уже слабо вспомнить, к чему я это всё.
На Озоне.ру есть партнёрская программа, на которой я чего-то вот зарегистрировался. При регистрации нужно поставить галочку в наиболее идиотическом чекбоксе среди всех, когда-либо виданных мной:
Естественно, дам сразу ссылки на самые дорогие и крутые (но и, одновременно, гиперполезные) книги, чтобы немедленно разбогатеть, как только кто-то их купит.
Эдвард Тафти (Edward Tufte):
Фишка ещё в том, что нужно обязательно покупать по прямой ссылке, а иначе они будут думать, что вы сами нашли книжку, и я тут ни при чём. Я листал и читал фрагментарно их все, а вот внимательно и по порядку читаю пока что только первую.
А ещё офигенные «Краткие сведения по типографскому делу» Петра Коломнина, вышедшие в виде репринта в августе в Издательстве Студии Лебедева, на Озоне можно купить настоящие, антикварные, 1899 года, аж в двух вариантах: за 21 тысячу и за 40 тысяч рублей.
Всё это хорошо, но к сожалению там нет «Справочника издателя и автора» Аркадия Мильчина, который, в отличие от всего выше названного, я бы действительно настоятельно рекомендовал купить всем.
В свежем бизнес-линче человек для компании, занимающейся натяжными потолками нарисовал логотип с мокрым полом, в то время, как можно было нарисовать логотип как раз с натяжным потолком.