ООП расширение класса php::Exception

В связи в повсеместным использованием ООП в PHP потребовалось запилить класс исключения с удобными плюшками. Их две: из экземпляра OOPException можно получить имя класса и метода, пробросившего исключение. Это удобно использовать в дополнение к Exception::getFile(), Exception::getLine().

Без ложки дегтя не обойдется: придется переписывать все свои вызовы исключений, и наплодить наследников от продвинутого класса для замены стандартных LogicException, RuntimeException и т.д.

Метки: PHP, кодинг

Полировка металла трением

полированнное дно турки

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

Уточняю, речь пойдет о применении наждачной бумаги, войлока и полировочной пасты. Есть и другие способы навести полировку на металле.

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

Метки: hand-made, ликбез

Кручение обруча

Предположим, у вас опыта, как и у меня. Т.е. вообще никакого :) Более того, я не припоминаю даже из детства, чтоб я подходил к этому снаряду. Всегда считал его девчачьей забавой. Однако, когда обруч весит 3.8кг - это совсем другой разговор. Для примера, попробуйте крутить такой бублик на руке и почувствуйте, как его тянет. Не женская нагрузка, я вам скажу.

Чего я вообще за обруч ухватился? Это, как говорится, слово за слово и.. Мы поспорили. Я заявил, что за пару недель освою это баловство и удержу вращение обруча минуту. Ну, ну.. Уже 1.5 месяца минуло, а я и 15 секунд не кручу. Такие дела :) И поэтому, давайте учиться. Идите за мной, я расскажу как.

Нерабочая заставка Windows

Это не техническая статья, просто заметка о неожиданном решении проблемы.

Windows 7, по показаниям юзера заставка (она же хранитель экрана, она же screensaver) внезапно перестала работать года эдак два назад. Такой срок без переустановки Винды - для меня показатель. Однако, я не нашел ни вирусов, ни подозрительных объектов. Вообще ничего проблемного. Настройки хранителя разумеется выставлены, и в тесте она запускается. Но по расписанию не работает.

Сегодня поменял мышу на компе. Вуаля! Появились мыльные пузыри на экране и пузыри восторга у юзера. Теперь сидит перед монитором, медитирует.. :) Мое предположение: мышь подавала сигналы об активности, даже когда курсор не двигался. Поэтому не срабатывал таймер простоя и хранитель не запускался. Мыша, кстати, все еще рабочая, уже пятый год. Наверное просто "шумит" от старости. Кашляет, или чего там.. :)

[1oo%, EoF]

Сделай сам: микроскоп

Идея: сделать микроскоп из веб-камеры. Не я придумал, реализовать просто. Нужна камера с ручным фокусом. Выкручиваем объектив, переворачиваем его и приклеиваем обратно. Все, микроскоп готов. А вот что я придумал - как закрепить это дело и как интереснее использовать.

Надежное хранение пароля юзера

Тестовая задача одного из нанимателей: создать функционал регистрации/аутентификации юзера. Ну я и создал. При этом пароли храню в БД по схеме md5-хеш + соль. Я уже видел такое решение и посчитал его надежным. Позже, на собеседовании возникли вопросы, почему и зачем. Начали разбирать теоретические ситуации и я оказался в тупике :) Под катом - размышления на тему надежного хранения паролей юзеров.

Сделай сам: прокладка под ГБЦ

Плохая карма вновь меня настигла. Второй байк и опять просекло прокладку под головкой блока цилиндра (ГБЦ). На Вулкане два цилиндра в раздельном исполнении, т.к. это V-Twin, но в каком именно пробой, вычислить не удалось. Поменял обе. Собсственно статья о том, как сделать свою прокладку. Для автомобилистов возможно это не проблема, но найти готовую на японбайк по нормальной цене - та еще задача.

Метки: hand-made, мото

KUbuntu: запись разговора в Skype

Ученье - свет. А неученье - чуть свет, так на работу (с) Аноним

Коротенький пост о том, как полезно гуглить и шариться в исходниках open-source программ :)

Метки: Linux, личное

Эффективное правило для mod_rewite

Пишу .htaccess для своего движка. В очередной раз скопипастил классическое:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
И только тут задумался над тем, что же реально происходит при таком правиле...

Настройка тестирования в Yii 1.x

Окружение: KUbuntu 14.04.1 LTS, PHP 5.5.9, Yii 1.1.16. К этому делу нужно прикрутить последний PHPUnit и Selenium. Я вообще не был знаком с unit-тестами и функциональными тоже, поэтому для начала прочитал мануал в Yii, часть мана PHPUnit, кучу всего на хабре + форумы. И получилась каша :( К тому же в последствии оказалось, что Yii-ные инструкции устарели. Рассказываю, как настраивается окружение сейчас..

Nodejs. Побеждая ад

Черновик. В будущем планирую найти таки красивое решение и не катить бочку на nodejs =)

Применительно к ноде есть такое понятие, как "callback hell" (глубоко вложенные колбэки). На хабре есть об этом. В попытках избежать этой засады я стал разбирать код на части и попал в другой кошмарик, с ассинхронной работой. Конечно есть решения и в мануалах все просто. Но стоит написать в ноде что-то чуть сложнее "Hello, world!", как начинаются проблемы. Код с катастрофической скоростью обрастает парными скобками "})", анонимными функциями и вложенными callback-вызовами. На данном этапе работы с ним я искрене не понимаю, как можно тащиться от nodejs и компании.

Переборка вилки. Kawasaki Vulcan

Байк 2004 года (US версия), спереди стоит прямая телескопическая Showa, без подкачки. Потекли сальники (манжеты), нужно поменять. По ходу дела проверил разные советы, выловленные в инете. В очередной раз оказался крайне полезным мануал, созданный в издательстве Clymer. Полагаю, суть переборки такая же, как на любом японском байке, но дьявол кроется в деталях..

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

Видеорегистратор MiVue M300

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

MiVue™ M300 позиционируется на оф.сайте, как видеорегистратор на любое двух- или четырехколесное транспортное средство. Про шлем речи нет, и тут меня похоже опять ожидают проблемы. Об этом чуть ниже. Кроме описания на оф.сайте нашел в инете еще одну неплохую статью. Постараюсь не копипастить, а добавить то, о чем там не сказано.

Метки: гаджет, мото

PHP: засада с strlen()

Вот и я наступил на эти грабли.. :( Во-первых, я невнимательно читал мануал. Разница между strlen() и ее мультибайтным аналогом, mb_strlen(), в том, что первая считает байты в строке, а вторая - символы. В однобайтных кодировках разницы нет, но для мультибайтных (например utf-8), значения функций будут разные, если в строке есть буквы национального алфавита. Это меня не парило, пока не столкнулся с багом. На локалке код работает, на сервере падает с кракозяброй в сообщении об ошибке.

Метки: PHP

Смена кодировки сайта

Переходим с windows-1251 на utf-8. Перекодирование затронет все: php-скрипты, статику (css, js, html), мета-теги, БД, настройки веб-сервера и PHP. Во-первых, подумайте дважды, прежде чем затевать смену кодировки. Так ли это вам нужно? У меня сайт маленький, самописный, опыта уже достаточно, и то я потратил несколько часов на эту процедуру. Во-вторых, создайте копию вашего сайта перед тем, как что-то менять. Получите дамп базы. Не удаляйте копию, даже если есть 100% уверенность, что все сделано правильно.

Акриловая ванна. Экстрим в домашних условиях

Думаю, не стоит рассказывать, что такое наливная акриловая ванна. Это не для кого уже не новость. А расскажу я лучше о своем первом опыте заливки, о тех вещах, которых нет в обучающих видео и инструкциях. Все очень хорошо совпало: ванна, требующая обновления, возможность купить акрил и залить его самостоятельно. Почему не обратился к мастерам? Просто потому, что я хотел попробовать сам :)

Перенос сайтов, созданных на разных CMS

За полгода работы на web-студию накопилось разного, полезного и не очень. Большим спецом в конкретной CMS я не стал, но видел многое. Работая с очередным сайтом, я разворачиваю его копию на локалке. Мне так удобно. В некоторых случаях все просто, достаточно переписать ключи доступа к БД, иногда заморочки затягиваются. В то время я работал еще на Windows, что добавляло ньюансов. Вообщем, статья является попыткой организовать мои заметки по вопросу переноса сайтов с CMS. Описываю все, от очевидного до сложного. Выгода этих записей в экономии времени при разворачивании очередного сайта на своей площадке.

Силиконовый колпачок на кнопку. История в картинках

В наличии мультиметр на байк с переключателем. Без кнопки никак, у него автономное питание. Нужна герметизация. Идеи в порядке возникновения в голове: кусок резиновой перчатки > силикон для форм > герметик! Под катом - реализация.

Метки: hand-made

Flash, Firefox и Linux: "Ваш плагин устарел!"



С переходом на Линуху мне пришлось отказаться от Оперы. Теперь на очереди Огнелис.. Причиной тому флеш-плагин, безнадежно устаревший в данном браузере. Adobe Flash доживает свои дни. Однако, как и в случае с IE, этот плеер остается весьма популярным среди web-разработчиков и следовательно, он по-прежнему востребован пользователями. Получаются "вилы": плеер нужен, но Adobe и разработчики браузеров не хотят его поддерживать. Далее перевод статьи, дающей некоторые разъяснения по ситуации.

Всплывающее окно. Чужой плагин для jQuery

 пример popup

По работе потребовалось прикрутить к сайту несколько popup-окошек. Чтоб красиво всплывали и корректно работали. Сначала накатал свой код, без эффектов. Однако ж не по "феншую" было. Нашел подходящий jQ-плагин, разобрался, как использовать и теперь пишу, чтоб в следующий раз время не терять впустую. Имя плагина - custombox. Страница на оф.сайте jQuery, форк на Гитхабе.

Продвижение
Время
Метки
Щелкни мышей, чтобы закрыть