PHP → Автодокументация PHP в NetBeans 7.01 с использованием phpDocumentor, рассказываем, настраиваем, исправляем
В этой статье вы получите новые и старые знания, в частности некоторые из них появились совершенно недавно в рунете, а некоторые вообще введены мной прямо на месте не отходя от кассы.
Итак вы узнаете:
На проекте столкнулся с тем, что потребовалось создать нормальную документацию. Писать отдельно документацию не самый лучший способ, базовое описание библиотеки можно выполнить и в стиле автодокументации. Начал разбираться в вопросе и о чудо, в NetBeans 7.01 оказывается поддерживается PHPDoc, вполне достойно и удобно. Был удивлен бедностью информации по этой тематике в русском сегменте сети. Кроме того, я нашел несколько подводных камней, которые создавали проблемы при настройке под Windows.
Если заинтересовались, то добро пожаловать под кат
Итак вы узнаете:
- Базовую информацию о том, что такое автодокументация и как она делается в PHP
- Настройка генератора документации phpDocumentor в NetBeans 7.01
- Ссылка на исправленную мной библиотеку phpDocumentor со списком внесенных изменений, думаю некоторым может сразу же понадобиться
- Ссылки на почитать
На проекте столкнулся с тем, что потребовалось создать нормальную документацию. Писать отдельно документацию не самый лучший способ, базовое описание библиотеки можно выполнить и в стиле автодокументации. Начал разбираться в вопросе и о чудо, в NetBeans 7.01 оказывается поддерживается PHPDoc, вполне достойно и удобно. Был удивлен бедностью информации по этой тематике в русском сегменте сети. Кроме того, я нашел несколько подводных камней, которые создавали проблемы при настройке под Windows.Если заинтересовались, то добро пожаловать под кат
JavaScript → Настоящие online, offline события
С появлением online, offline событий многие разработчики, особенно мобильных веб-севисов возложили на них большие надежды. Казалось бы online, offline говорят нам когда у пользователя есть доступ к интернету, но на самом деле это далеко не так. Подробности их поведения когда-то давно описал Резиг в своем блоге.

Кратко — online, offline сигнализирует нам, что пользователь вручную переключился в оффлайн либо у него нет ни одного соединения с сетью. Фактически эти 2 события бесполезны в том виде в котором они представлены — я не знаю кто будет вручную переключать таб в режим онлайн/оффлайн, и с сетевыми подключениями тоже все плохо. Ну и, конечно, доисторические бразуеры не знают эти события.
Под катом элегантное и 100% кросбраузерное решение, позволяющее получить настоящие online, offline события.

Кратко — online, offline сигнализирует нам, что пользователь вручную переключился в оффлайн либо у него нет ни одного соединения с сетью. Фактически эти 2 события бесполезны в том виде в котором они представлены — я не знаю кто будет вручную переключать таб в режим онлайн/оффлайн, и с сетевыми подключениями тоже все плохо. Ну и, конечно, доисторические бразуеры не знают эти события.
Под катом элегантное и 100% кросбраузерное решение, позволяющее получить настоящие online, offline события.
PHP → Ловля бага #52001 в PHP 5.3: указатели и неициализированные переменные
По следам недавно найденного tvv'ом бага.
При выполнении следующего кода в PHP версий 5.3.0-5.3.2 результат превосходил все ожидания.
В результате выводилось '2'. Мне удалось найти багу и поправить её: #52001. Коротко: затирался указатель на специльную переменную-затычку для неинициализированных переменных, через которую и создаются все CV переменные в PHP.
При выполнении следующего кода в PHP версий 5.3.0-5.3.2 результат превосходил все ожидания.
<?php
f(0, $$var);
$x = 1;
$y = 2;
echo $x;
function f($a, $b) {};
В результате выводилось '2'. Мне удалось найти багу и поправить её: #52001. Коротко: затирался указатель на специльную переменную-затычку для неинициализированных переменных, через которую и создаются все CV переменные в PHP.
Haskell → Комбинатор неподвижной точки
Когда мне впервые задали вопрос о том может ли существовать функция вида
Как может существовать функция у которой неоткуда взять значения? Об очевидном варианте
Func<Func<T,T>,T> без использования конструкций вида default(T) он поверг меня в глубокий когнитивный диссонанс. Как может существовать функция у которой неоткуда взять значения? Об очевидном варианте
T Fix<T>(Func<T,T> func){
return func(Fix(func));
}я не мог даже подумать. Разве возможно делать такие функции? Она будет вызываться бесконечно и не даст результата. В языках типа C# такая конструкция и правда вызовет зацикливание, но вполне может работать в языках вроде питона или хаскеля. Сейчас будет немного кода на Haskell, надеюсь синтаксис будет более-менее понятен всем.
Убунтариум → Ubuntu 9.10 Flash(x64), ZendStudio7 — решение проблемы
Неприятная проблема с Flash в Firefox, когда не нажимаются кнопки.
Если вам знакомо — решается так:
1. Удаляем установленный флеш плеер (как правило, Адоб)
2. Качаем архив download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.32.18.linux-x86_64.so.tar.gz
3. Закрываем Firefox
4. Распаковываем архив и прикручиваем плагинчик вот так:
5. Запускаем Firefox и облегченно вздыхаем :)
Альтернативный вариант скачивания/установки плагина:
(взято отсюда)
UPD: Решение аналогичной проблемы с кнопками в ZendStudio7:
1. Создаем шелл-скрип с таким содержанием (только указываем свой путь к ZendStudio):
2. Используем его для запуска студии
(взято отсюда)
PS: спасибо 1999 ;)
Если вам знакомо — решается так:
1. Удаляем установленный флеш плеер (как правило, Адоб)
2. Качаем архив download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.32.18.linux-x86_64.so.tar.gz
3. Закрываем Firefox
4. Распаковываем архив и прикручиваем плагинчик вот так:
tar zxvf libflashplayer-10.0.32.18.linux-x86_64.so.tar.gz
sudo cp libflashplayer.so /usr/lib/mozilla/plugins/
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/firefox-addons/plugins/
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/xulrunner-addons/plugins/
5. Запускаем Firefox и облегченно вздыхаем :)
Альтернативный вариант скачивания/установки плагина:
wget queleimporta.com/downloads/flash10_x64_en.sh && sudo chmod +x flash10_x64_en.sh && sudo sh ./flash10_x64_en.sh
(взято отсюда)
UPD: Решение аналогичной проблемы с кнопками в ZendStudio7:
1. Создаем шелл-скрип с таким содержанием (только указываем свой путь к ZendStudio):
#!/bin/bash
export GDK_NATIVE_WINDOWS=1
/usr/local/Zend/ZendStudio-7.0.2/ZendStudio "$@"
2. Используем его для запуска студии
(взято отсюда)
PS: спасибо 1999 ;)
Visual Studio → Ускоряем работу VS 2010 Beta2
В следствии изменений, которые произошли после отправки продукта в производство, для увеличения производительности дизайнера, нужно произвести изменения в настройках. Данное изменение в настройках не обязательны в финальном релизе продукта.
Официальный источник сообщения
- Закройте все копии программы VS
- Откройте RegEdit (с правами администратора)
- Выберите ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0
- Добавьте в нем новый раздел с именем «ClrHost»
- В новом разделе создайте DWORD32 ключ с именем «StartupFlags»
- Установите ключу значение «5»
- Закройте RegEdit
- Запустите Visual Studio, как обычно
Официальный источник сообщения
Персональные блоги → Отключение скроллинга тачпада после просмотра полноэкранного видео в Firefox
Предыдущая запись в моем блоге была о проблеме проблеме колесика прокрутки мышей A4Tech. Теперь же расскажу о решении проблемы самопроизвольного отключения на ноутбуках функции скроллинга тачпада.
На большинстве портативных компьютеров установлены тачпады производства либо Alps, либо Synaptics, и именно последний стоит в моем Toshiba A210. Если ваш Synaptics подвержен багу отключения, то проверить это можно открыв в Firefox полноэкранное видео флеш-плеера, например, YouTube. Когда вы выйдите из полноэкранного режима, скорее всего ваш тачпад потеряет способность прокрутки, причем никакая другая функциональность не нарушится.
Насколько мне известно, единовременного решения этой проблемы пока нет, помогает перезагрузка. Я испробовал все возможные драйверы — не помогает.
Но есть и другой способ. Когда вы заметите, что скроллинг отключился, щелкните на свободном месте на страничке и нажмите несколько раз пробел. Тачпад снова начнет работать правильно.
Если же вы знаете другие решения этой проблемы, поделитесь, пожалуйста, в комментариях.
На большинстве портативных компьютеров установлены тачпады производства либо Alps, либо Synaptics, и именно последний стоит в моем Toshiba A210. Если ваш Synaptics подвержен багу отключения, то проверить это можно открыв в Firefox полноэкранное видео флеш-плеера, например, YouTube. Когда вы выйдите из полноэкранного режима, скорее всего ваш тачпад потеряет способность прокрутки, причем никакая другая функциональность не нарушится.
Насколько мне известно, единовременного решения этой проблемы пока нет, помогает перезагрузка. Я испробовал все возможные драйверы — не помогает.
Но есть и другой способ. Когда вы заметите, что скроллинг отключился, щелкните на свободном месте на страничке и нажмите несколько раз пробел. Тачпад снова начнет работать правильно.
Если же вы знаете другие решения этой проблемы, поделитесь, пожалуйста, в комментариях.
Персональные блоги → Исходный код → NO Crash!
Сегодня история с крушением FF при просмотре исходного кода получила продолжение. Mozilla Foundation выпустили Firefox 3.0.10. Он конечно же сам обновился и вот что я прочитал в примечаниях к релизу:
Название: Крушение в nsTextFrame::ClearTextRun()UPD: Для тех кто не использует HTML Validator обновление не представляет ценности, но для верстальщиков оно крайне удобно. Кроме этого с выходом 3.0.10 появляется вероятность того, что автор HTML Validator обратно включит подсветку ошибок в исходном коде.
Значение: Критическое
Заявлено: 27 апреля, 2009
Сообщил: Marc Gueury, Daniel Veditz
Продукты: Firefox
Починили в: Firefox 3.0.10
Описание
Одно из исправлений в безопасности в Firefox 3.0.9 производило регрессию, которая приводила к частым крушениям у некоторых пользователей. Были сильно затронуты пользователи add-on'а HTML Validator, но и другие пользователи также испытывали это крушение в некоторых ситуациях. Анализируя это крушение мы обнаружили, что оно вызывалось из-за искажения памяти похожего на случаи уязвимости в безопасности отмеченные ранее.
Дополнительные ссылки
Персональные блоги → Исходный код → Crash!
Вчера по нажатии в Firefox 3.0.9 на «Просмотр исходного кода» FF падал с ужасным скрипом. Это меня поразило очень сильно. Первое что я подумал: Mozilla где-то допустила баг.
Но сегодня с утра при запуске FF выскачило окошко обновления Add-on'ов и предложило обновить HTML Validator, что я и сделал.
О, чудо! FF больше не вылетает при просмотре HTML!
Выяснилось, что виноват был именно этот add-on. Вот перевод заявления автора add-on'а с официального сайта (стиль повествования максимально сохранен):
Но сегодня с утра при запуске FF выскачило окошко обновления Add-on'ов и предложило обновить HTML Validator, что я и сделал.
О, чудо! FF больше не вылетает при просмотре HTML!
Выяснилось, что виноват был именно этот add-on. Вот перевод заявления автора add-on'а с официального сайта (стиль повествования максимально сохранен):
— Предыдущие версии вызывали баг в FIREFOX 3.0.9 в DOM API!
Настоящее решение было бы Firefox 3.0.10 но он не будет доступен еще 1 месяц. Практически, при просмотре исходного кода в Firefox 3.0.9 он падает! Некоторые строки кода которые работали начиная с Firefox 1.0 теперь вызывают падение Firefox'а... Из-за этого, я вынужден выпустить очень быстрый 0.856 чтобы решить Firefox 3.0.9 баг Так что, подсветка строк с HTML ошибками теперь отключена! К несчастью, у меня не было лучшего решения.
— Работает в Firefox 3.1 beta 3.
— Работает в Seamonkey 2 alpha 3
Персональные блоги → Подключение планшета Wacom к последовательному (Com, Serial) порту и работа через usb-com адаптер.
При переходе с десктопа на лэптоп встала проблема подключения планшета Wacom Intuos. Моя модель достаточно старая и подключается через COM порт, который в лэптопах уже давно не используются. Покупать новый 6×8 дюймовый планшет только из-за usb смысла нет. Проще купить com-usb адаптер. Wacom гарантирует работу только с Keyspan, но они достаточно дороги. Зато есть множество дешевых адаптеров, большинство из которых собраны на чипе Prolific. В итоге взял TRENDnet TU-S9 . С ним все заработало, думаю с другими «Пролификами» тоже проблем не должно быть.
Теперь о трудностях подключения
Интернет полнится рассказами о черной магии и танцах с бубном при подключенииWacom-ов. «Wacom Tablet Properties» в Control Panel в упор не видит планшет. Промучавшись целый день, все наконец заработало. Драйвера для Wacom брал здесь. Вся серия 6.x должна работать. Я подключал через com-usb адаптер, но, думаю, через com порт будет так же.
Теперь о трудностях подключения
Интернет полнится рассказами о черной магии и танцах с бубном при подключении