Val Petruchek

подписывайтесь, а то хуже будет!  

ПОДПИСЫВАЙТЕСЬ НА RSS

Таблица Премьер-Лиги

Полная турнирная таблица чемпионата России.

В российском чемпионате самый продуманный список критериев для сортировки команд. В случае равенства очков у двух или более команд места команд (кроме первого) в текущей и итоговой таблице чемпионата определяются:

  • по наибольшему числу побед во всех матчах чемпионата;
  • по лучшей разности забитых и пропущенных мячей во всех матчах;
  • по результатам игр между собой (число очков, число побед, разность забитых и пропущенных мячей, число забитых мячей, число забитых мячей на чужом поле);
  • по наибольшему числу забитых мячей во всех матчах;
  • по наибольшему числу мячей, забитых на чужих полях во всех матчах.

Пока парсил данные в базу, нашёл кучу глюков в результатах матчей на разных сайтах. На УЕФА команды неправильно отсортированы, на sports.ru банальная ошибка в счёте.

На данный момент на сайте доступны таблицы чемпионатов Украины, Испании и России.

Таблица примеры

Полная турнирная таблица чемпионата Испании.

Кстати, при равенстве очков сравниваются личные встречи (в украинском чемпионате — количество побед).

Пока парсил данные в базу, нашёл кучу глюков в результатах матчей на разных сайтах.

На данный момент на сайте доступны таблицы чемпионатов Украины и Испании — чемпионатов, которые заканчиваются сегодня вечером.

Детальная турнирная таблица

Детальная турнирная таблица высшей лиги, пока только для Украины.

Но система легко расширяема — движок универсальный, его надо данными накормить и всё.

PHPMyAdmin — загрузить большой файл с дампом

07.06.07 @ 23:24 — Programming, Software, PHP

Совершенно случайно обнаружил в phpmyadmin возможность выполнения sql-кода из файла, расположенного на сервере. Эта фича очень удобна в том случае, когда необходимо зачитать большой sql dump (например при переезде базы с одного сервера на другой).

Я интересовался этой фичей давно, но по умолчанию она отключена, а поискать в настройках/документации я не догадался. Решил, что раз нет интерфейса, то и фичи тоже нет. Оказывается, фича есть. Чтобы её включить, надо в настройках phpmyadminа указать имя директории для загруженных файлов в опции $cfg[’UploadDir’]. Имя директории надо указывать относительно корневой папки phpmyadminа. Пустое имя = отключенная фича.

Если имя не пустое, то при выборе пункта меню Import File to import можно будет не только “Browse location of the text file”, но и выбрать его из “web server upload directory”. Расширение файла должно быть или .sql или .zip/.bz2/.gz в зависимости от поддерживаемых методов компрессии. Расширение файла должно быть нижнерегистровым.

Вот что написано в мануале по поводу этой фичи:

$cfg[’UploadDir’] string
The name of the directory where SQL files have been uploaded by other means than phpMyAdmin (for example, ftp). Those files are available under a drop-down box when you click the database name, then the SQL tab.

If you want different directory for each user, %u will be replaced with username.

Please note that the file names must have the suffix “.sql” (or “.sql.bz2″ or “.sql.gz” if support for compressed formats is enabled).

This feature is useful when your file is too big to be uploaded via HTTP, or when file uploads are disabled in PHP.

Please note that if PHP is running in safe mode, this directory must be owned by the same user as the owner of the phpMyAdmin scripts.

Я не тестил последний phpmyadmin, но в используемой мною версии список файлов появляется не на закладке “SQL”, а на закладке “Import”.

406 Not Acceptable Error и как с ней бороться

25.04.07 @ 05:29 — Programming, PHP

Если ваш php-скрипт начинает выдавать 406-ую ошибку (точнее не сам скрипт, а apache) со словами “An appropriate representation of the requested resource /***.php could not be found on this server”, то скорее всего apacheвскому mod_security что-то не нравится в вашем скрипте.

Например, ваш скрипт может принимать в качестве параметра какие-нибудь URLы, а mod_security будет думать, что злобный хакер пытается выполнить remode code injection. Или ещё что-нибудь.

Если вы уверены в своём скрипте, то можно попробовать отключить mod_security. Проще всего это сделать, добавив две директивы в .htaccess:
SecFilterEngine Off
SecFilterScanPOST Off

Если не получается отрубить mod_security с помощью .htaccess, отключайте его с помощью httpd.conf.

Если это не разрешает сделать админ или ваша религия, то читайте логи (типа такого: [mod_security: Access denied with code 406. Pattern match “\\\\.php(3|4|5)?(\\\\?|&).*=(ht|f)tps?:/.*(\\\\?|&) ” at REQUEST_URI [id “300018″] [rev “1″] [msg “Generic PHP code injection protection”] [severity “CRITICAL”] …]) и модифицируйте скрипт таким образом, чтоб он не вызывал подозрений у mod_security.

Как создать папку с помощью PHP

14.03.07 @ 19:26 — Programming, PHP

Продолжаем тему создания папок в PHP.

Судя по тому, как нас ищут, создание папок даже без SAFE MODE является нетривиальной задачей.

Ответ: mkdir().

Подсказка: php-скрипт должен иметь нужные права записи (chmod 0777 на папку, в которой собираемся создавать папку, решает большинство из возникающих проблем, но так не безопасно).

Я — PHP-программист!

13.02.07 @ 04:55 — Programming, PHP

А вот второй по популярности пост из старого блога. Написано больше трёх лет назад.

Слишком часто я слышу эту фразу последнее время. Очень много PHP-программистов вокруг. Просто эпидемия.

Из моего собственного скромного опытного рекрутинга веб-программистов: в 50% случаев эта фраза подразумевает, что “программист” освоил три тега html и выучил две команды PHP: echo и mysql_query.

При этом из теории баз данных он знает только слово SQL, и путается с выбором средства для реализации задачи: то ли тут можно обойтись JavaScriptом, то ли всё-таки надо писать PHP. На написание скрипта, генерирующего картинку на лету и встраивание этой картинки в другой скрипт у этой особи уходит два дня, первые полтора из них он пытается всунуть всё в один файл. Сдавшись, лезет с бестолковыми вопросами, вместо того, чтобы прочитать fucking manual.

PHP - язык высокого уровня. PHP-программисту не надо обращать особое внимание на элементарные операции: работу с памятью, обработку ошибок и сортировку. Практически для всего есть готовые функции. Если, не дай бог, нет - то можно потратить полдня на поиск нужного класса в интернете, вместо того, чтобы написать свой за 2 часа, немного порисовав на бумаге.

PHP позволяет писать на PHP и не думать. За тебя уже подумали. Взял переменную, засунули в базу, вывел html. Всё.

Программировать на C++ гораздо сложнее. Надо уметь работать с памятью, мучаться со строками и работать с массивами на низком уровне.

Входная планка для PHP гораздо ниже. Три тега, два оператора - и добро пожаловать в мир веб-программинга. Это очень обесценивает профессию. Большинство PHP-программистов - это кодеры, а не девелоперы. Кодеры не умеют мыслить концептуально и творить. Они могут действовать по шаблону. Тут взяли, сюда положили, здесь вывели.

Девелопер - это по сути хакер. Хакер не в опошленном смысле слова (который всё ломает), а в смысле творец.

Будьте скромнее, господа PHP-программисты. Не путайте божий дар с яичницей.

PHP: Создание папок в Safe Mode

08.02.07 @ 03:29 — Programming, PHP

Задача: создавать с помощью PHP скрипта такие директории, в которых можно потом создавать файлы с помощью того же скрипта.

Условие, без которого задача тривиальна: PHP работает в Safe Mode.

Без Safe Mode всё работает прекрасно, главное не забывать делать chmod новым файлам, чтобы иметь возможность удалить их вручную (по ftp/sftp). В Safe Mode директории создаются без проблем, а вот при попытке записать в такую директорию файл PHP выдаёт такой warning:

SAFE MODE Restriction in effect. The script whose uid is 529 is not allowed to access /home/website/autofolder owned by uid 48 in /home/website/script.php on line XX

И никакого файла, естественно, не создаёт.

Решение: создавать нужные папки с помощью ftp-функций: ftp_connect, ftp_login, ftp_mkdir. Законнектились, сделали папку, отвалились.

« Previous Page —   
Реклама::

 
Реклама::