Jarad "TinMan" Hansen создал певого бота для Quake4 - SABot - Stupid Angry Bot.
Ридми доступно здесь.
Скачать бота можно здесь.
Также idSoftware выпустила патч версии 1.0.5beta, скачать который можно с их ftp.
16 декабря 2005
Jarad "TinMan" Hansen создал певого бота для Quake4 - SABot - Stupid Angry Bot.
Ридми доступно здесь.
Скачать бота можно здесь.
Также idSoftware выпустила патч версии 1.0.5beta, скачать который можно с их ftp.
15 декабря 2005
Интересный проект. На движок третьего дума переделан первый.
Очень даже играбельно и занятно.
27 ноября 2005
В последнее время стало модно делать на сайте понятные URL, т.е. не /index.php?mod=news&day=22, а /news/22/. Всё началось с нескольких больших компаний, чьи специалисты поняли, что продвинутые пользователи кроме навигации по ссылкам часто набирают адрес странички вручную. С тех пор программисты и веб-мастеры придумали множество способов достижения такой красоты. Часть их мы для начала и рассмотрим.
Вспомните, как обозначаются папки сайты в адресной строке. Вспомнили? Правильно. Вот так: /адрес_сайта/папка/. А теперь вспомним, что когда мы набираем адрес сайта, то на самом деле отображается файл index.html (или другой индекс), но при этом ведь в строке адреса он не указан!
Вот вам и первый способ: создаём папку и засовываем в неё index.html.
Теперь ваша страничка с обзором любимой книги с адресом /book.html будет доступна по адресу /book.
Нам не пришлось дополнительно ничего писать, но зато придётся создавать кучу папок и не удастся красиво передать параметры. Будет не то, что надо, а что-то вроде /book?name=fight_club.
Можно настроить сервер Apache так, чтобы при наборе имени файла без расширения он искал наиболее похожий файл. Таким образом, можно избежать создания папок. Необходимость в создании кучи папок отпадает, но остаётся нерешенным вопрос с передачей параметров. К тому же сервер может найти совсем не тот документ, который нужен вам.
Ещё один трюк - сделать исполняемыми файлы без расширения:
ForceType application/x-httpd-php
Таким образом, хоть мы и не получим красивой передачи параметров, но зато избавимся от проблемы с поиском файлов. Минусом этого подхода является некое неудобство работы с такими файлами.
Если написать в .htaccess нижеследующие строчки, то все запросы к несуществующим файлам будут отдаваться на обработку скрипту index.php.
ErrorDocument 404 index.php ErrorDocument 403 index.php ErrorDocument 401 index.php
В самом скрипте можно получить введённый адрес из переменной $REQUEST_URI, в зависимости от него выполнить нужный код. В случае получения странички необходимо послать заголовок:
header('HTTP/1.0 200 Ok');
На самом деле подобную обработку адреса можно прицепить ко всем вышеописанным способам, но есть одно большое но - придётся писать довольно много кода для обработки адреса, что само по себе напрягает даже опытного программиста.
Неужели нет способа проще?
Теперь приступим к тому, ради чего собственно и затевалась данная статья.
При написании движка RMCreative я решил, что надо использовать красивые адреса. Как представитель ленивых программистов я не хотел изобретать велосипеда и принялся искать информацию об их создании. К сожалению, все уже описанные методы (а их гораздо больше, чем привёл я в начале статьи) мне не понравились. Или много писать, или мало получишь.
В одной из статей, написанной Дмитрием Лебедевым, рассматривались некоторые возможности модуля Apache mod_rewrite, но применялись его возможности всё по той же схеме, описанной в четвёртом способе. Я же нашел ему более рациональное и простое применение.
mod_rewrite - модуль сервера Apache, который использует 90% всех хостингов, добавляющий возможность предварительной обработки и перенаправления запросов. Для его использования удобно воспользоваться файлом .htaccess.
Для начала включаем модуль: RewriteEngine On
Затем пишем правила: RewriteRule исходныйадрес адресназначения
Когда мы обратимся по адресу http://example.com/исходный_адрес/, то на самом деле сервер обратится к http://example.com/адрес_назначения/.
RewriteEngine On RewriteRule news/ news.php RewriteRule files/book/ files.php?id=book
Самая главная возможность mod_rewrite - использование регулярных выражений!
Если вы ещё не знакомы с регулярными выражениями, рекомендую с ними познакомиться до дальнейшего изучения данной статьи. На первый взгляд они представляют собой жуткий бред, но при детальном рассмотрении оказываются самым мощным инструментом для работы со строками.
Статьи про регулярные выражения:
[Синтаксис](http://ru2.php.net/manual/ru/reference.pcre.pattern.syntax.php) [Общее описание, список функций и полезные комментарии](http://ru2.php.net/manual/ru/ref.pcre.php) [Статья Дмитрия Бородина](http://php.spb.ru/regular_expression.html)
Допустим, мы написали скрипт, который выводит из указанного файла некую статью и вызывается из адресной строки так:
[showarticle.php?article=programming/php/goodurl](#)
Мы же хотим получить что-то вроде:
[article/programming/php/goodurl](#)
Нет проблем! Пишем в наш .htaccess:
RewriteEngine On RewriteRule ^article/([^.]*)[/]?$ showarticle.php?article=$1
Ещё одной замечательной возможностью регулярных выражений является возможность проверки данных на соответствие нашему шаблону.
Допустим, нам нужно вывести список новостей за 2004 год. Скрипт вызывается с параметром news.php?year=2004, но ведь можно вызвать и так news.php?year=-23. Можно обработать это в коде программы, а можно и при помощи mod_rewrite:
RewriteEngine On RewriteRule ^news/([0-9]{4})[/]?$ news.php?year=$1
В этом случае можно будет ввести только адрес вида news/2004/ или news/2004, т.е. параметром может быть только четырёхзначное число.
Если мы введём что-нибудь другое, к примеру news/-23/ сервер выдаст нам ошибку 404 (не найден документ), что вполне соответствует тому, чего мы добивались.
Итак, мы изучили не требующий дополнительного кода метод создания понятных адресов, который можно применить к уже написанному на любом языке скрипту почти его не меняя. В дополнение мы узнали ещё один метод защиты скрипта от нежелательных данных.
Пожалуй, единственным минусом данного подхода является необходимость изучения синтаксиса регулярных выражений, но уверяю Вас, что проведённое за его изучением время не пройдёт даром и очень поможет Вам при обработке текстовых данных.
На этом всё.
Успехов в создании удобных сайтов.
27 ноября 2005
Last years it is become a tradition to have beautiful URLs on your site, like /news/22/ and not /index.php?mod=news&day=22. The beginning of beautiful URLs is deep into major corporation portals history. Their usability specialists decided to make URLs cleaner because of people are frequently typing an URL instead of using hyperlinks. That was a good decision.
Many URL beatifying techniques were developed by web-specialists since that. So, let's do a little overview.
Remember how directories are represented in URL. Got it? /site_address/dir/. Now remember that when we are typing an URL server gives us index.html (or another index) in that directory. But we weren't typed it!
That's the first solution: create some directories to represent URLs and an index.html for each directory.
So now we can have our page previously available at /book.html at a new URL: /book.
No additional coding required! But… those directories… What's more we can't specify script GET parameters in a beautiful way. It will be like /book?name=fight_club.
It is possible to tune up Apache so it will search some likewise files when it can't find the one specified. So the directories aren't necessary anymore… but parameters problem is still here plus we have a new problem: Apache can do some mistakes and give user a wrong file.
The following .htaccess trick can make files without any extension executable:
ForceType application/x-httpd-php
So Apache mistakes problem is solved. But we still need to pass some parameters and editing files without extension is not so handy.
One more trick with .htaccess file. All user queries to the files that aren't exists are redirected to index.php.
[apache] ErrorDocument 404 index.php ErrorDocument 403 index.php ErrorDocument 401 index.php
Now we can use $REQUEST_URI variable in our script, parse it and do something based on it.
Tip: to get normal server reply (by default it will be 404: Not found) you must send following header in the beginning of each page:
header('HTTP/1.0 200 Ok');
It's a great solution in comparison with previous ones but you must write plenty of code that's not so good at all.
Are there any solutions left?! Yes!
When I was writing first version of RMCreative engine I decided to use beautiful URLs. As a lazy programmer I used Google first to find ready to use cure-all solutions. But no solutions were really cure-all :(. With one you can do only simple things, with another you must write a lot of code…
Then I found an article by Dmitry Lebedev, who wrote about Apache mod_rewrite module and how to do beautiful URLs with it. It is a great article but it was so much like my ways 4 with code writing…
So, I found how to use mod_rewrite better.
What is mod_rewrite?
mod_rewrite is an Apache server module that is already enabled in 90% of all servers. It is adding URL preprocessing features to Apache. It's handy to use .htaccess file to specify some rewrite rules.
First you need to turn on rewrite module: RewriteEngine On
Then we can specify a rule: RewriteRule source (user) URL final (script) URL
When user types http://example.com/source_URL/ server gives http://example.com/final_URL/ as a result.
Example:
[apache] RewriteEngine On RewriteRule news/ news.php RewriteRule files/book/ files.php?id=book
But it's only a little part of mod_rewrite features!
The main feature is that we can use regular expressions!
If you aren't so familiar with regular expressions I recommend you to read about them first. As first sight they have no meaning at all but later you will certainly say "it's the best tool to do something with a string".
You can find some kind of description in php manual but it's better to find some other sources.
Ok, let's go forward.
Let's suppose we wrote a script that displays an article specified. This script can be accessed with URL like this:
[showarticle.php?article=programming/php/goodurl](#)
This is totally bad for us. We want something like:
[article/programming/php/goodurl](#)
No problem! Open your .htaccess and write:
[apache] RewriteEngine On RewriteRule ^article/([^.]*)[/]?$ showarticle.php?article=$1
That's it.
Another great mod_rewrite regular expressions feature is that we can accept only certain type of data.
Let's assume we need to display news for year 2004. URL for this script is news.php?year=2004, but some bad guys can write something like this: news.php?year=-23. We can write some code to handle this but also we can use mod_rewrite instead:
[apache] RewriteEngine On RewriteRule ^news/([0-9]{4})[/]?$ news.php?year=$1
In this case we can enter only 4 digits number: news/2004/.
Now if we try to enter news/-23/ server gives us 404 error(document not found). That's exactly what we need.
Finally we got an URL replacing method that doesn't require a single line of code. This method can be easily applied to already written application. Additionally we got one more solution to guard our script from those "bad guys" ;)
Perhaps, the only disadvantage of this method is that we need to learn regular expressions. But it won't be waste of time because they could be used almost everywhere to do wonderful things on strings.
25 ноября 2005
Сравнительно недавно Naruvi запустил замечательный проект - Библиотеку веб-программиста WEBZ. На сайте собраны отборные статьи на тему web-программирования. Каждый желающий может с лёгкостью добавить ссылку на свои статьи.
25 ноября 2005
Сегодня я выкладываю на суд общественности все свои пресеты для Winamp AVS.
Слушайте музыку, наслаждайтесь жизнью и смотрите.
25 ноября 2005
Ищется спонсорский хостинг для размещения материала с http://ruskiy.com.ru/.
Писать на почту, которую можно найти на вышеприведённом сайте.
Всем откликнувшимся спасибо.
15 ноября 2005
Номер один:
Готовится к выходу новая версия Ruskiy Web Wint 1.2 beta. Если кто не видел что это такое, то вот ОТСЮДА можете скачать предыдущую версию. Новая версия также не будет требовать MySQL.
Номер два:
Закончена работа над новой 1.3 (пока что Beta) версией Гостевой Книги. Для работы скрипта требуется PHP + MySQL, установщик находится в папке install гостевой. Дополнительная Справочная информация будет доступна, после выхода Официальной 1.3 версии, после исправления всех найденых БАГов.
В общем заходим к Ruskiy и знакомимся с его замечательными скриптами.
6 ноября 2005
Всё ещё под впечатлением от этой великолепной игры. Пару раз даже не на шутку испугался. Последний раз такое было когда в первый Half-Life играл.
Пожалуй, самая стоящая за последний год.
Играть всем поголовно.
6 ноября 2005
Порт Quake2 под Doom3 портируется под Quake4 :) Ну, в общем, думаю, понятно.