9 Окт
Эхх, да, пришлось мне не легко.. Поставить всё это дело на винду, причем так, чтобы еще и работало. Даже не спрашивайте зачем на винду, просто нужно и всё. Работать будем с сборкой XAMPP Web Servers 2.5 (apachefriends.org). Надеюсь вы его уже установили, и проблем у вас не возникло.
Итак, качаем и устанавливаем Python 2.5. Я поставил в C:/Python25. Далее, нужно скачать следующие питоновские программы:
Дополнительные пакеты:
Надеюсь всё получилось. Так, дальше, качаем CollabNet Subversion Server+Client (Win32) и устанавливаем. При установке я указал D:\SVN.
Теперь, чтобы у вас из командной строки работали команды svn, svnadmin, trac-admin и т.д., вам нужно добавить директории этих исполняемых файлов в переменную среды %PATH%. Надеюсь вам не секрет как это делается:
> echo %PATH% // посмотреть текущие директории > path = %PATH%;C:\Python25 // добавить к переменной директорию C:\Python25
В общем CollabNet Subversion, вроде как, сам добавляет свои директории в эту переменную, ну а с trac’ом придется в ручную.
Ну вроде бы всё.. Создаём репозиторий:
D:/SVN> svnadmin create repo
В директории появится привычный репозиторий repo со своим конфигом, всё как положено.
Далее, конфигурация Apache - (C:/xampp/apache/conf/httpd.conf), нужно добавить следующие строчки:
LoadModule dav_svn_module modules/mod_dav_svn.so
<Location /svn>
DAV svn
SVNParentPath "D:\SVN"
AuthType Basic
AuthName "repo"
AuthUserFile "D:\SVN\repo\conf\htpasswd"
Require valid-user
ErrorDocument 404 default
</Location>В D:\SVN\repo\conf\ я создал файл htpasswd с паролями доступа. Надеюсь вы умеете такие создавать и ими пользоваться. Кстати, в /xampp/apache/bin/ есть htpasswd.exe, который тоже кстати неплохо было бы добавить в переменную %PATH%, или скопировать в system32.
Дальше, настраиваем trac. Надеюсь команда trac-admin у вас уже работает, и в D:\SVN\repo вы уже создали среду с названием trac. В его директории /conf/ есть конфигурационный ini файл. Там доступно расписаны все настройки. Главное не ошибиться с директорией к репозиторию. Она указвается относительно. У меня стоит: ../
Ну и наконец, через командную строку запускаем:
tracd -s -p 8000 D:\SVN\repo\trac
Открываем браузер и заходим на http://localhost:8000/… Вуала! Работает? Причем с удалённых компьютеров тоже работать будет, так что советую завести логины и расставить права. Это достаточно легко. Ну во-первых в trac.ini припишите:
[components] webadmin.* = enabled
В командной строке напишите:
python trac-digest.py -u username -p password >> c:\digest.txt
Файл trac-digest.py находится в C:\Python25\Scripts, а python.exe (для особых..) в C:\Python25. username и password естественно заменить своими какими-нибудь значениями. Файл digest.txt затем помещаем в D:\SVN\repo\trac\auth.txt и в следующий раз вызываем tracd.exe следующим образом. Затем через командную строку зайдите в свою trac среду утилитой trac-admin и добавьте пользователя с правами TRAC_ADMIN (permission add username TRAC_ADMIN):
tracd -s -p 8000 --auth=trac,D:\SVN\repo\trac\auth.txt,trac D:\SVN\repo\trac
Жмите на Login. Кнопка Admin должна быть доступна после авторизации. Ну а по адресу http://localhost/svn (когда включен апач, естественно..) доступен ваш репозиторий, еще и защищен. Можно так же настроить это на виртуальном хосте, например svn.localhost :) даже модно, я бы сказал…
Конец ;)
8 Окт
По просьбам читателей приведу самый примитивный пример авторизации с помощью AJAX. Почему примитивный? Потому что, если у вас нет навыков написания хорошего, защищенного скрипта авторизации на php+mysql, то этот пример не для вас. Зацикливаться на самой авторизации я не буду, ведь все мы знаем, что пользователей нужно хранить в базе данных с их зашифрованными паролями и IP адресами последнего входа…? У меня всё гораздо проще - users.txt файл в корне с синтаксисом: “пользователь = пароль” в несколько строк.
А шифрование и прочие навороты оставляю за вами :)
Читать полностью »
6 Окт
Ну начнем с самого популярного…
Подсветка синтаксиса для языков PHP, HTML, XML, C, C++ и многих других. Лично мне этот редактор не очень нравится… Точнее совсем не нравится. Уж слишком он простой и более 15-ти минут за ним посидеть не удалось. Скачать Notepad++ можно с официального сайта: Notepad++.
Построен на платформе Mozilla. Поддерживает большой ряд языков и много утилит для работы с веб документами (просмотр DOM, построение регулярных выражений и т.д.). Достаточно удобен в обращении. Скачать Komodo Edit можно с официального сайта: ActiveState.
Очель маленький (1,5 мб) редакор. Поддерживает подсветку синтаксиса для PHP и нескольких других языков. Слишком прост. Официальный сайт: Context Editor.
Мощный редактор. Работает на платформе Eclipse, дистрибутив около 60 мб. Неплохой вариант, особенно если пишете не только на PHP. Официальный сайт: Eclipse PDT.
Отличный вариант, но к сожалению не работает с кодировкой UTF-8. В 2008 версии данного редактора всё налажено, но он уже не бесплатный, даже для личного использования. Официальный сайт: MP Software.
Ну и наконец мой любимый:
А конкретнее Early Access for PHP. Понравился больше всех остальных. Работает на платформе Java. Дистрибутив 20 мб. Подсветка синтаксиса. Мощные утилиты для отладки. Хорошая работа с Subversion и CVS. Официальный сайт: Netbeans IDE.
Есть ряд других хороших бесплатных редакторов, но ими по-пользоваться не успел, уж слишком их много. Вот небольшой список:
2 Окт
Углубляться в алгоритмы архивирования и сжатия я не буду, просто скачайте готовый класс createZip. Первоначальный источник данного класса к сожалению не помню, так что если вдруг найдется - прошу сообщить.
Класс createZip обеспечивает полноценную работу с формированием нового ZIP архива, с возможностью его выдачи на лету или сохранения на диск. Покажу несколько простых приёмов.
Ну, во-первый нужно объявить объект данного класса:
$createZip = new createZip;
Добавим в корень архива текстовый файл:
$fileContents = "Hello world!"; $createZip->addFile($fileContents, "textfile.txt");
Создадим новую директорию:
$createZip->addDirectory("images/");
Ну а теперь допустим у нас есть картинка image.png в директории где выполняется данный скрипт. Загрузим эту картинку в директорию images нашего архива:
$fileContents = file_get_contents("image.png"); $createZip->addFile($fileContents, "images/image.png");
Сохраняем архив на диск и выдаём посетителю ссылку:
$filename = "archive.zip"; $fd = fopen($filename, "wb"); $out = fwrite($fd, $createZip->getZippedfile()); fclose($fd); echo "Скачать архив: <a href=\"$filename\">$filename</a>";
Всё достаточно легко и просто. При желании, можно выдать архив на лету, после чего его сразу удалить. В классе для этого есть вспомогательная функция forceDownload.
1 Окт
Недавно пришлось написать небольшую админ панель для простого редактирования статических HTML файлов. Долго листал так называемые WYSIWYG (what you see is what you get) javascript редакторы. Из платных не понравилось ничего, а вот из бесплатных остановился на одном хорошем варианте - YUI Rich Text Editor от компании Yahoo!
Посмотреть это чудо в действии можно на официальном сайте: YUI Rich Text Editor
Для того, чтобы установить данный редактор у себя на сайте, требуется всего лишь включить несколько скриптов и каскадных стилей от Yahoo:
16 Сен
14 Сен
В ответ себе же на предыдущий пост о метках в WordPress (Wordpress и метки на русском) нашел неплохое решение. Плагины:
Пользуюсь данными плагинами на другом блоге, вроде всё гладко. Но всё же, я уже привык к меткам на английском, и думаю это в какой-то мере лучше (может и не совсем для SEO), т.к. бесит метка Яндекс ссылающаяся на yandeks вместо yandex.
13 Сен
10 Сен
Многе популярные веб-сайты, сегодня являются не просто набором веб-страниц, а так называемыми веб-приложениями, где люди общаются, выкладывают видео, играют в игры он-лайн и т.д.. Таких возможностей небыло при появлении первых браузеров, потому и функционал в них заложен в “старом стиле”.
Концепция браузера нового поколения, Google Chrome включает следующие пункты:
Специалисты Google разработали новую технологию самого быстрого исполнения кода Javascript, который исполняется в фоновом режиме (т.е. работа самого браузера при этом, не приостанавливается). Так же, каждая вкладка в Google Chrome работает отдельно, в собственной среде. То есть, если у вас одно веб-приложение вдруг вызвало критическую ошибку, то вы можете закрыть его вкладку, не теряя свою работу в других вкладках.
Дизайнеры Google Chrome так же постарались сделать своё приложение максимально удобным, при этом минимальным. То есть весь функционал Google Chrome скрыт до тех пор, пока у пользователя не появится в нем необходимость.
Загрузить Google Chrome
Видео-материалы Google Chrome под катом.
5 Сен
Ужастная новость - 1 сентября прикрыли проект Skypecasting. А это значит что таким крупным проектам как Free-lance.ru придется искать другие методы проведения конференций, например TeamSpeak или PalTalk.
До конца не известно почему прикрыли скайп касты, но слухи ходят, что это из-за войны в Северной Осетии, т.к. в конце августа каждый день создавались сотни конференций на эту тему, где люди видимо обсуждали то, что не пренадлежало обсуждению. Другие считают, что проект небыл выгодным, т.к. кастов стало слишком много и серверы Skype помирали от нагрузки (если заметили то в последние несколько дней, особенно вечером, разговаривать одновременно в касте могло не больше 2-3 участников).
У меня было несколько хороших планов проведения Skype конференций различных тематик, но теперь всё рухнуло.. Ну что ж, будем искать альтернативы.