Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

Ну кто так строит?

17.07.07 @ 02:22 — Programming, WebSites

На сайте sports.ru очередное изменение скриптов, на которых работают их блоги.

Как и предыдущее, это изменение связано с новой URL scheme — новой схемой адресации блогопостингов. Прошлый раз спортсрумельцы вместо урла вида blog/?author=utkin&postid=123456 внедрили УРЛы вида blog/utkin/?postid=123456

Подождали пару месяцев — и решили полностью избавиться от Dynamic URLs: вместо blog/utkin/?postid=123456 у них теперь blog/utkin/123456.html

Всё верно; непонятно только, отчего спортсрумельцы так долго шли к этой очевидной схеме. Молодцы, что таки дошли. Только совершенно не молодцы из-за того, что после перехода на новую схему старые адреса перестают работать. Понятное дело, что не хотят нарушать ссылочную целостность — у каждого материала должен быть только один адрес, иначе бардак и плохие позиции в поисковиках. Это похвально. Только, блин, почему не повесить редиректы на старые адреса? Это же три строчки кода с комментариями.

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

Качество кода

16.07.07 @ 02:06 — Programming, Creative

Мне тут в голову пришла неожиданная идея оптимизации кода: убрать на компьютера разработчика функцию copy-paste.
Вопрос: повысится ли качество кода?

Источник: bash.org.ru, удалённая цитата

Ответом на вопрос из эпиграфа будет, по-моему, скорее “да”, чем “нет”. Та или иная ограниченность ресурса (машинного времени), приводит к более эффективному его использованию.

Когда мой учитель информатики работал программистом на большом советском заводе с большими компьютерами, программы для которых писались на перфокартах, скармливаемых компьютерам специально-обученными девочками, у него не было возможности дебаггить программу в реальном времени. Он готовил перфокарты с программой, дожидался своей очереди, отдавал перфокарты с исходниками девочкам и через время получал от них другие перфокарты с результатом работы его программы. Результатами были или искомые данные, или ошибки в том или ином виде. В случае неудачи (представьте, что вы первый раз компилируете программу после того, как она полностью написана — и прикиньте вероятность удачной компиляции) он готовил новые перфокарты и снова ждал своей очереди, чтобы отдать перфокарты девочкам. Чем больше раундов он затрачивал на решение задачи, тем сильнее был нагоняй от начальства. Эти ограничения выработали некоторые навыки компилирования и исполнения программ без компьютера (”в уме” и “на бумажке”).

Когда я учился в школе, у меня не было личного компьютера, машинное время было ограничено уроками информатики в лицее и ИГЗ там же. Компьютерного времени очень не хватало, а программировать хотелось много. Из-за этого очень многие программки писались заранее “на бумажке” (целиком или полностью), а компьютер использовался лишь для ввода, отладки и доводки программы. Иначе (если программировать только тогда, когда оказывался у компьютера) успевалось очень немного — из-за того, что неэффективно расходовалось время. Нехватка машинного времени научила писать программы без компьютера.

Вынужденное программирование без компьютера заставляло больше думать, изменяя стиль программирования: тщательное продумывание алгоритма вместо методичного перебора возможных вариантов решения. При решении алгоритмической задачи всё время есть несколько конкурирующих путей решения задачи. Если у тебя есть компьютер под рукой, то самый простой способ выбрать лучшее решение — это перебровать все способы, которые пришли в голову, и выбрать тот, который лучше всего работает. Это самое простое решение, но оно требует довольно больших затрат компьютерного времени - на ввод и отладку каждого решения с его последующей проверкой. Когда доступа к компьютеру нет, и будет его всего ничего, ты не можешь позволить себе перебирать варианты. Приходится анализировать их в голове (на бумажке) и искать решение “теоретически”.

Самый простой пример: задача — сделать в программе хитрую операцию с большим массивом за наименьшее время. Есть 3-4 способа запрограммировать эту операцию, на первый взгляд все одинаково эффективные. Как будет решать эту задачу глупый программист? Сядет и закодит все решения, посмотрит на скорость работы и выберет правильный. Умный программист прежде чем кодить, оценит каждое из решений в уме, т.е. без компьютера.

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

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

Возвращаясь к эпиграфу: если запретить разработчику делать copy-paste, то это вынудит его писать правильные (в меру универсальные) подпрограммы, а не плодить код а-ля индус.

Комментаторы украинского футбола

15.07.07 @ 21:19 — Sport, Football

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

Как правило, просто смотреть украинские матчи довольно скучно, вот и пытаются таким нестандартным образом добавить зрелищности. Ну какую зрелищность матчу добавляет комментарий Димы Джулая? Вообще никакой, всё спокойно и понятно. Денис Босянок получше: нет-нет, да и отмочит что-нибудь, но редко.

Жаль, что Диму и Дениса нельзя клонировать и трудостроить на все украинские телеканалы.

Кроссворды онлайн

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

Программинг (PHP/JavaScript) пришлось переделать полностью, зато теперь кроссворды работают в IE, FF и Opera. Пока что на сайте выложено всего два кроссворда (1, 2), но уже можно подписаться на обновления (или добавить во френды).

Если найдёте ошибку — смело пишите в комментарии. Спасибо!

P.S. Ещё придумал уникальный и оригинальный домен для проекта, ага.

Растеризация текста

11.07.07 @ 13:59 — Programming, Software

Статья о разных аспектах растеризации текста.

Букф многа, картинок тоже немало, ещё и на английском. Но читать интересно.

Подписка на комментарии в WordPress

Помог человеку настроить подписку на комментарии в WordPressе.

Для этого нужен специальный плагин.

Чем дальше работаю с WordPressом, тем противней.

clid=9582

С некоторого времени у меня в логах появились рефереры вроде такого: http://www.yandex.ru/yandsearch?clid=9582&text=keyword

Стало интересно, что за clid=9582 такой. Из просмотра логов апача стало понятно, что это опера. Opera 9.02 никакого clid при поиске по яндексе не шлёт. А вот 9.20 и 9.21 шлёт именно это значение, т.к. Yandex представлен в настройках поисковиков следующим образом: http://www.yandex.ru/yandsearch?clid=9582&text=%s

Opera 9.20 иногда шлёт другое значение: clid=9403.

Похоже, недавно в список дефолтных поисковиков Оперы добавили Yandex.

Определение посещённых вами страниц

Было интересно попробовать, можно ли программно определять, какие страницы посетил пользователь. Оказалось — можно.

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

Update: это не просто вывод посещённых страниц одним цветом, а непосещенных — другим. Скрипт действительно по URLу может определить посещённая страница или нет; и может отправить эту информацию на сервер (например ajaxом).

  
Реклама::

 
Реклама::