«Почему тошнит от юзабилити бесплатного ПО» 2
Перевод статьи выполнен энтузиастами на площадке для коллективных переводов translated.by.
27.10.2008
Установка Bugzilla на Денвер-3
Перед чтением заметки проверьте дату её написания — может она давно устарела, представленная информация не соответствует действительности, а вы просто теряете время.
Решил заценить систему отслеживания ошибок Bugzilla (статья википедии).
Естественно, ставил я её на имеющийся Денвер третьей версии. В процессе установки столкнулся с рядом трудностей, а по результату написал вот этот небольшой мануал.
Берем багзиллу версии 3.1.3. Она написана на Perl, поэтому сначала на Денвер нужно установить пакет Perl (это ActiveState Perl версии 5.8.8).
Багзилла распаковываем в каталог сайта
<denwer>\home\<site>\www\
Свежеустановленный Perl не содержит кучу нужных багзилле модулей, поэтому выполняем в её каталоге в командной строке:
perl checksetup.pl --check-modules
(perl здесь и далее это <denwer>\usr\local\perl\bin\perl.exe)
и запоминаем (или записываем) отсутствующие модули из обязательных, если правильно помню, это TimeDate, PathTools, Template-Toolkit, Email-Send, Email-MIME-Modifier. Кроме них нужен DBD-mysql — я рассматриваю установку на MySQL. Bugzilla может также работать с PostgreSQL и для перла тогда нужен модуль DBD-Pg, а сам сервер для Денвера ставится отдельным пакетом (вот этим). Опциональные модули на ваше усмотрение.
Приступаем к установке. Запускаем менеджер пакетов:
<denver>\usr\local\perl\bin\ppm
идем в настройки (Ctrl+P), на вкладке «Areas» проверяем место, куда будут помещены скаченные пакеты. Если ppm запущен как я написал выше, т.е. не из каталога виртуально диска, то это должен быть <denver>/usr/local/perl/lib (колонка @INC), а не /usr/local/perl/lib.
На вкладке «Repositories» добавляем репозиторий с адресом: http://ppm.tcool.org/archives/package.xml — именно там лежат нужные нам пакеты.
После синхронизации с хранилищем нужно отыскать нужные пакеты в списке (есть фильтр), отметить их для загрузки, и загрузить. Также обновите модуль Encode — поставляемый с Perl, какой-то неполный/неработающий.
В Денвере в MySQL по умолчанию отключен механизм InnoDB — нужно его включить. Открываем файл <denwer>\usr\local\mysql5\my.cnf, строка 80 (если раньше ничего не правилось):
skip-innodb
закомментируем её:
#skip-innodb
если сервер запущен, перезагрузим его.
Вернемся в каталог багзиллы и создадим файл .htaccess такого содержания:
Options +Indexes +ExecCGI
DirectoryIndex index.cgi
т.е. разрешаем серверу выполнять скрипты из www каталога (по умолчанию запрещено) и указываем дефолтный файл.
Даем команду
perl checksetup.pl
ага, уже без параметров. Всё должно пройти гладко. В каталоге будет создан файл localconfig. Нас интересуют переменные $db_host (localhost), $db_name, $db_user, $db_pass (для PostgreSQL базы ещё и $db_driver). Остальные — не очень.
В базе данных нужно создать базу (схему) с именем из $db_name, т.е. «bugs»; создать пользоватлеля $db_user, т.е. «bugs», дать ему все возможные права на базу $db_name. Пароль этого пользователя указать в $db_pass в localconfig (как для базы, так и для пользователя можно задать другие имена и указать их в соответствующих переменных).
Для манипуляций с MySQL я использовал PhpMyAdmin.
Еще раз выполняем
perl checksetup.pl
на этот раз задаётся ряд вопросов, в частности e-mail и пароль админа (там вход по и-мейлу), их надо запомнить (или записать). Всё, установка завершена. Можно, заходить, логиниться, пользоваться.
Вот и всё. А о самой багзилле мне как-то нечего сказать. Не понравилась.
5.04.2008
WinHex Script
Неплохой в целом шестнадцатеричный редактор WinHex, начиная с версии 13.1 (а текущая — 14.7) не позволяет вводить кириллический текст, т.е. при вводе в русской раскладке получается что-то типа «-B> >A<KA;5==K9 B5:AB.» Нехитрыми вычислениями выясняется что к введённому мусору нужно добавить 176, чтобы исправить положение. Сделать это можно с помощью инструмента «Modify Data» (Ctrl+T): Add 176 dec (B0 hex), тип данных Integer 8 bit. «Ё» и «ё» — выбиваются из общего ряда — они в кодовой таблице отдельно стоят.
С целью автоматизировать коррекцию, а также, чтобы ознакомиться со встроенным языком сценариев WinHex, написал скрипт:
// Скрипт исправляет коряво вводимые в WinHex'е кириллические символы.
// Работает от текущей позиции курсора до первого нулевого символа.
// В свою очередь скрипт ошибочно переводит в кириллические символы
// знаки препинания и часть латинских символов.
ExitIfNoFilesOpen
{
Label ContinueHere
Read badchar 1
Move -1
IfEqual badchar 0
ExitLoop
EndIf
IfEqual badchar 0x51
Write "ё"
JumpTo ContinueHere
EndIf
IfEqual badchar 0x01
Write "Ё"
JumpTo ContinueHere
EndIf
IfGreater badchar 0x4F
Move 1
JumpTo ContinueHere
EndIf
IfGreater badchar 0x0F
Write (badchar+176)
EndIf
}[unlimited]
Release badchar
Скрипт нужно сохранить в папке программы с именем *.whs, вызывается он из «Start Center» (Enter). Скрипт работает от текущей позиции до первого встреченного нулевого символа. Что обычно и требуется. При работе скрипта теряются знаки препинания и, частично, некириллические символы в тексте. Что неприятно, но никакой возможности это обойти нет.
WinHex Script разочаровал, его возможности сильно ограничены, в частности не поддерживаются вложенные условия, корявый механизм циклов, непонятные ограничения для выражений: они должны быть заключены в скобки и не содержать пробелов.
И, не смотря на все эти [вышеописанные и многие другие] косяки, это по-моему лучший Hex-редактор, в том смысле, что лучше него я ничего не видел.
27.01.2008
Обновлён мега-калькулятор
Мега-калькулятор достиг версии 4.8. Конкретно в ней интерфейс был сделан вебдванольным: были убраны рамки у полей ввода. Чуть раньше в истории мега-калькулятора были некоторые метания с добавлением новых настроек, но они были преодолены, опций стало меньше, чем было до того. Добавлены функции перевода между системами счисления (новые dec и bin, см. справку) и форматирования результата fX():
f4(bin("&hFFA4"))=1111 1111 1010 0100
f3(bin(&o77654))=111 111 110 101 100
f2(hex(dec("1111000011001111")))=F0 CF
fmt(12345,1)=1 2 3 4 5
fmt() — низкоуровневая :) функция, ей передаётся форматируемое выражение и число, показывающее по сколько знаков её выводить.
За обновлениями калькулятора можно следить оперативно: у сайта есть RSS.
Случайно заметил, что можно считать такие выражения:
date + time + 1/24/60*10
где 1 — значит одни сутки, соответственно 1/24 — один час, 1/24/60 — одна минута. Результатом в примере будет текущее ДатаВремя + 10 секунд.
Разработка продолжается. Пожелания принимаются.
15.01.2008
TechNet Magazine
Наконец-то вышел январский TechNet Magazine. С опозданием недели в две. А русский MSDN Magazine стал доступен вовремя, ещё в том году.
К слову, в ноябрьском TechNet в статье Написание регулярных выражений Дон Джонс (Don Jones) допускает серьёзную ошибку, называя «?» подстановочным знаком. По его терминологии, это знак повторения (то же что и {0,1}).
Прикольно, что приводимый пример действительно верен:
"Don" –match "D?n" (True)
Но "D?n" находит только "n". Можно убедиться, проверив содержимое переменной $matches.
10.01.2008
Updates
10.09.2007
Мифы
Миф: «время создания файла на томе FAT содержит только чётные секунды».
В FAT для хранения дат/времён используется четырёхбайтная структура MS-DOS Date & Time. В этой структуре для хранения секунд отводится только 5 бит (возможные значения 0-31). Поэтому в ней сохраняется значение секунд делённое на два.
Но, в структуре файловой записи FAT есть дополнительное однобайтное поле (реально содержит значения 0-199), за счёт которого время создания файла хранится с точностью до сотых долей секунд. Для уточнения времени изменения файла тагого же поля не предусмотрено, так что формулировка «время модификации файла на томе FAT содержит только чётные секунды» не будет мифом.
К слову, для последнего доступа на FAT сохраняется только дата.
Сегодня продолжу развенчивать мифы.
Миф: «в Windows нельзя создать файл или папку под названием CON».
А также PRN, NUL и другие. Про прозвища — это не миф, это глупость.
Создать и удалить каталог с зарезервированным именем можно используя следующую запись:
mkdir con.\Или используя UNC путь:
rmdir con.\
mkdir \\server\c:\prnДля локального компьютера:
mkdir \\?\c:\nulВот, примерно, так.
mkdir \\.\c:\nul
20.08.2007
Мега-новость
20.08.2007
Книги
Иван Скляров «Головоломки для хакера» в магазине «Литера».
Книга автора и ведущего рубрики «X-Puzzle» журнала «][акер» по её же материалам.
Александр Дюков «За что сражались советские люди» в OZ.by.
Книга историка Александра Дюкова рассказывающая о геноциде, которому подверглись народы Советского Союза в годы Великой Отечественной войны. «Книга, которую должен прочитать каждый!» Рекомендую.
Кстати, указанный магазин в книги вкладывает фирменную закладку с местом для заметок. Порадовало.
Кроме того, третьего дня шёл мимо книжного, что на Толбухина 4. Думаю, а вдруг там есть «Отладка приложений для Microsoft .NET и Microsoft Windows» Джона Роббинса которую давно хочу заполучить. Зашёл. Не было. Зато была «Искусство программирования для UNIX» Эрика Реймонда. Со скидкой. Да и Джоэл Спольски о ней хорошо отозвался. Не смог пройти мимо.
18.08.2007
Что такое PowerShell
Хорошая статья на тему «что такое Windows PowerShell»:
Цитаты:
Windows PowerShell™ представляет собой новую технологию написания сценариев и работы с командами, разработанную корпорацией Майкрософт.
Поскольку обратная совместимость очень важна, то Windows PowerShell не могла бы считаться новой технологией, если бы не обладала также возможностями языка VBScript.
Если все, что нужно, это управление процессами и службами, то нет никакой необходимости изучать Windows PowerShell. Как говорится, не нужно чинить то, что работает. (У нас эта поговорка звучит так: "Люди, не вздумайте это чинить, а то оно обязательно сломается.") Преимущество среды Windows PowerShell проявляется в ситуациях, когда вы можете с ее помощью делать то, что не позволяет сделать язык VBScript.
15.08.2007
«Почему тошнит от юзабилити бесплатного ПО»
В книге Джоэла Спольски «Джоэл о программировании» упоминается статья Томаса Мэттью «Почему тошнит от юзабилити бесплатного ПО». Что в оригинале: Matthew, Thomas «Why Free Software Usability Tends to Suck». Все ссылки на эту статью ведут на указанный адрес, по которому давно ничего нет.
Как быть в таком случае? Нужно незамедлительно проследовать в ВебАрхив.
И, действительно, там есть и искомая статья, и её продолжение:
Why Free Software usability tends to suck
Why Free Software usability tends to suck even more
Статьи написаны в 2002 году (то есть пять лет назад), а как-будто вчера.
29.07.2007
Про Linux в викепедии
Статьи Википедии о дистрибутивах Linux:
Ubuntu
Debian
SuSE
Red Hat
Fedora
Slackware
Gentoo
Mandriva Linux
Knoppix
9.06.2007

