Июль 13 2008

Битва с насекомыми

Категория: Lifehackgugglegum @ 04:28

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

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

P.S. Для лучшего вхождения в роль рекомендую засасывать насекомых в “ловушку” под музыку из фильма “Охотники за приведениями” (”Ghostbusters”).


Июль 10 2008

Куки не работают с локальными доменами

Категория: PHPgugglegum @ 04:24

Вот такое вот открытие сделал я для себя сегодня. Я потратил кучу времени, пытаясь понять почему при открытии страницы на локальном сайте с коротким доменным именем, прописанным в локальных хостах, например, “mysite” (или “localhost” — неважно) куки просто отказывались устанавливаться, если я явным образом указывал в параметрах setcookie домен. То есть вот так работает:

setcookie('Session', '123456', 0, '/');

А вот так уже не работает:

setcookie('Session', '123456', 0, '/', 'localhost');

Решение было найдено, хотя и не сразу. А все дело в спецификации Cookie:

Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: “.com”, “.edu”, and “va.us”. Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: “COM”, “EDU”, “NET”, “ORG”, “GOV”, “MIL”, and “INT”.

Здесь сказано, что куку могут устанавливать только хосты внутри указанного в куке домена, причем домен должен содержать по меньшей мере 2 или 3 точки для предотвращения установки кук, соответствующих доменам верхнего уровня таким как .com, .edu и т.п. И далее утверждается, что для семи специально перечисленных доменов верхнего уровня допустимо 2 точки в адресе, для всех остальных — 3.

На сколько я понимаю, одна из этих точек подразумевается в начале каждого домена, т.е. вместо “mydomain.com” имеем в виду “.mydomain.com”. Однако, совершенно не понятно как быть с национальными доменами типа нашего .ru, которые совсем не обязаны иметь 2 поддомена над верхним. На практике это правило естественно не выполняется ни в одном браузере и браузеры просто требуют, чтобы в домене была хотя бы одна точка не в начале.

Есть еще один момент. Браузер Mozilla Firefox 3.0 почему-то не любит домены на базе .local, т.е. сохранять куки для домена anything.local он почему-то отказывается, хотя для .loc, .loca, localh, localhost и других — сохраняет прекрасно. Другие браузеры и даже сам Firefox, но второй версии такой особенностью не обладают.

Кстати, Opera (9.5) прекрасно сохраняет куки для всех доменов в том числе и без точки, например, localhost. Баг это или фича? На мой взгляд фича, т.к. реальных сайтов с именем “com”, “ru” и т.п. быть не может. Правда, если Вы в локальных хостах создадите домен с таким именем, то конфликт может быть. Не проверял…


Март 05 2008

Перехват обращения к несуществующим свойствам объектов в PHP5

Категория: PHPgugglegum @ 18:52

В строгих языках программирования типа C++ и Java программист обязан явно определять какими свойствами обладает тот или иной класс, причем явно указывая их области видимости (public, protected или private). В PHP4 такой строгости не было и в некоторых случаях это приводило к ошибкам, которые достаточно трудно отловить.

В PHP5 у свойств классов появились области видимости и все стало более-менее строго. Обращение к несуществующему статическому свойству класса

<?php

class A { }

A::$myVar = 'test';

?>

приводит к фатальной ошибке: “Fatal error: Access to undeclared static property: A::$myVar in C:\test.php on line 7″. Однако, для совместимости с PHP4 при обращении к свойству объекта никаких ошибок не генерируется. Продолжить чтение “Перехват обращения к несуществующим свойствам объектов в PHP5″


Март 05 2008

Нюансы автоматической загрузки классов в PHP с использованием __autoload()

Категория: PHPgugglegum @ 18:25

(данный пост был в последствии изменен, см. примечание в конце)

Как известно, в PHP, начиная с 5-ой версии, появилась замечательная возможность загружать классы автоматически по мере возникновения в них необходимости. Теперь, вместо того, чтобы писать в файле каждого класса список используемых файлов классов, достаточно где-нибудь в файле инициализации объявить функцию с именем __autoload(), которая получает в качестве параметра имя требуемого класса и пытается его загрузить. Эта функция — своего рода последний рубеж перед возникновением ошибки “Fatal Error”.

У данного метода есть два преимущества:

  1. Не нужно отслеживать где и какие классы мы используем. Ведь ошибиться здесь очень легко. Например, в одном классе мы используем другой класс, который уже был использован и загружен ранее, и который мы забыли явно объявить через require_once. Скрипт работает нормально, т.к. класс загружен. Но вот мы начали вызывать этот класс из другого места и там требуемый класс еще не был загружен — возникнет фатальная ошибка. Если необходимость в этом классе возникает не постоянно, а лишь в некоторых редких ситуациях (например, при обработке исключений), то отловить это будет крайне сложно.
  2. Нет избыточных вызовов require_once. Ведь если файл с классом загружен, то нет смысла вызывать каждый раз в каждом классе require_once одних и тех же файлов классов.

Однако, есть у данного метода и недостатки. Продолжить чтение “Нюансы автоматической загрузки классов в PHP с использованием __autoload()”


Март 04 2008

Goodbye, privacy!

Категория: Безопасностьgugglegum @ 20:24

Не болтай!Не успели отгреметь выборы, как широкой общественности стал доступен приказ №6 от минсвязи РФ, который обязывает всех операторов связи предоставлять ФСБ-шникам техническую возможность без всякого ведома и согласия оператора получать доступ к любой пересылаемой информации пользователей (телефонные звонки, SMS, электронная почта, ICQ, вобщем все, что не имеет встроенного механизма шифрования на концах), к данным об оказанных услугах (детализация звонков, выставленные счета), и к информации о местоположении абонента при совершении звонков с сотового.

Собственно, все это было и раньше, но не было официального закона. ФСБ-шники могли придти к оператору (провайдеру) и потребовать какие-нибудь логи. Оператор им эти логи обычно давал. Но в этом случае оператор хотя бы знал, что ФСБ-шникам понадобилась информация и какая именно. Кроме этого, провайдер теоретически мог отказать или сослаться на отсутствие технической возможности… А теперь не только не может, но и не знает когда и какую информацию получают ФСБ-шники. При этом ФСБ-шникам для этого не нужно даже отрывать свой зад от кресла.

Какие выводы из этого можно сделать? Продолжить чтение “Goodbye, privacy!”


Март 04 2008

Выборы, выборы — кандидаты пи-пи-пи…

Категория: Uncategorizedgugglegum @ 20:07

Впервые за всю свою жизнь столкнулся со случаем, когда выборы в нашей стране просто безальтернативные. Избирателей лишили двух важнейших рычагов управления выборами: убрали пункт “против всех” и отменили процент явки, при которой выборы считаются действительными. Теперь кого людям предложили — того и будем мы иметь (а если быть честнее, то “тот и будет иметь нас”) последующие 4 года.

Мне реально ни один кандидат не нравился. Медведев не нравился по тому, как проводилась его рекламная кампания — еще за несколько месяцев до выборов о нем повсеместно говорилось как о будущем президенте. В интернете на многих новостных сайтах часто можно было встретить заголовки вида “Будущий президент России Медведев Д.А. …”. Мне любопытно, новостным сайтам кто-то доплачивал за такие оговорки или это повсеместная неполиткорректность СМИ? Продолжить чтение “Выборы, выборы — кандидаты пи-пи-пи…”


Ноя 10 2007

Тест для PHP-программистов от mamba

Категория: PHPgugglegum @ 02:14

Зашел только что на сайт знакомств mamba.ru после длительного перерыва, а у меня там, как водится, очередной спам от администрации сервиса. На сей раз они сообщают, что ищут PHP-программиста и даже готовы заплатить мне 500 баксов, если среди моих знакомых таковой найдется и он перейдет к ним работать.

– Хе-хе, — думаю я про себя, — да я и сам, знаете ли… :)
Продолжить чтение “Тест для PHP-программистов от mamba”


Сен 07 2007

Постраничная листалка

Категория: Юзабилитиgugglegum @ 21:26

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

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

Продолжить чтение “Постраничная листалка”


Сен 07 2007

Возрождение блога

Категория: Uncategorizedgugglegum @ 17:57

Больше года в моем блоге не было постов. Основные причины: нехватка времени и лень. У меня уходило слишком много времени на поддержание блога, сделанного на собственном “движке”, что в итоге отбивало всякое желание заниматься постописательством.

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

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

Кроме того у меня было и есть много разных идей, которые мне хотелось поскорее воплотить. В данном аспекте я как ребенок — приходит в голову какая-то навязчивая идея, и я бросаю все, чем занимался до этого, уделяя все внимание ей. Через какое-то время навязчивость идеи проходит и она переходит в более зрелую фазу, либо отметается как нежизнеспособная. Все идеи крутятся в голове и периодически то одна, то другая частями находят выход в реальный мир. Про свои идеи я расскажу в следующих своих постах.


Июль 28 2006

Ajax против юзабилити

Категория: Юзабилитиgugglegum @ 03:08

Хотя технологии, на которых базируется ajax, появились достаточно давно, свою популярность они получили полтора года назад в связи запуском компанией Google целой серии своих стартапов, таких как GMail, Google Maps и других. Успех ajax оказался настолько головокружительным, что скружил голову большинству веб-разработчиков по всей планете.

В данный момент, на мой взгляд, популярность ajax достигла своего апогея, потому что ajax пытаются впихнуть всюду: где надо и где не надо. Менеджеры веб-девелоперских компаний используют ajax как продажную девку, зарабатывая деньги на его популярности и ажиотаже вокруг него. Каждый владелец сайта желает, чтобы на его сайте хотя бы где-нибудь использовался ajax, чтобы можно было понтануться перед знакомыми или конкурентами.

Мы уже наблюдали подобное в самом начале 21-го века в связи с ростом популярности технологии Macromedia Flash. Тогда и даже сейчас заказчики веб-сайтов все еще желают видеть на своих сайтах Flash, тогда как многие пользователи интернета — нет, именно по этой причине появились расширения для браузеров, блокирующие Flash или откладывающие их загрузку: AdBlock, FlashBlock. Якоб Нильсен, считающийся, пожалуй, самым большим авторитетом в области юзабилити, еще в октябре 2000 года написал статью под заголовком «Flash 99% Bad». Продолжить чтение “Ajax против юзабилити”


« Предыдущая страницаСледующая страница »