1 мая 2010 г.

preg_replace и utf-8

Обнаружил на странице тегов баг такого рода: русская буква "К" заменялась на квадрат и пробел. Оказалось, что глючит preg_replace после перевода на кодировку utf-8.

Помогло добавление модификатора "u" в паттерн регулярного выражения:

preg_replace("/\s+/u", $space, $text);

P.S.: По той же причине глючило и отображение "Обсуждений" на главной странице сайта. Причем тут уже глючила функция PHP по выделению подстроки substr. Почитал про ее мультибайтовый аналог mb_substr, но почему-то нормально и он не заработал. В итоге забил на это обрезание вообще, пока выводятся названия постов с форума полностью.

18 апр. 2010 г.

Cp1251 -> UTF8

Да, я наконец-то сделал это. Перекодировал всю БД и сайт с кодировки Cp1251 на UTF8!

Пока только не перекодировал файлы форума, но он почему-то и так работает нормально. О_о
Но его все равно нужно перевести на кодировку UTF8, но это не критично.

Для формирования скрипта конвертации БД я использовал следующую команду:

select
CONCAT("Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "`
CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "`
DEFAULT CHARACTER SET utf8;")
as MySQLCMD from TABLES where TABLE_SCHEMA = "dbName";

Где "dbName" - название БД.

Файлики скриптов пока что перекодировал вручную с помощью Notepad++, а вот для форума нужно будет искать автоматизированное решение, потому что файлов там реально дофига.

Возникла небольшая проблема с длинными тире —. Решил ее следующим запросом:

UPDATE table SET text = REPLACE(text, '—', '—')

31 янв. 2010 г.

Напоминалка

Изучить Javascript-скрипт Slider. Прикрутить его к сайту для акцентирования внимания посетителей к определенным разделам сайта.

23 янв. 2010 г.

Рецепты - what I've done!

Сделал еще кое-что:

1. Вывод требований по профессиям и их уровням для производства предмета из базовых реагентов (как правило, в таких случаях требуется участие нескольких профессий).
2. Исключил из фильтра трансмутов (которые до этого в схемах производства полностью исключались) некоторые из них, которые не вызывают зацикливания и являются единственными способами получить тот или иной предмет:

Transmute: Mithril to Truesilver
Transmute: Arcanite

Transmute: Earthstorm Diamond
Transmute: Skyfire Diamond
Transmute: Earthsiege Diamond
Transmute: Skyflare Diamond

Transmute: Primal Might

Transmute: Ametrine
Transmute: Dreadstone
Transmute: Eye of Zul
Transmute: King's Amber
Transmute: Majestic Zircon
Transmute: Cardinal Ruby

Изменения можно увидеть на этой картинке (Королевское одеяние из лунного тюля):


Сверху выводится информация о требованиях к профессии для данного рецепта, а также уровни прокачки для этого рецепта. На примере Transmute: King's Amber показано, что некоторые трансмуты теперь работают. А внизу выводится список профессий и их уровни, требуемые для производства предмета из базовых реагентов.

Подведу итоги того, что планирую сделать дальше.

Ближайшие планы:

1. В стоимости производства сделать ссылки на вещи, включаемые в стоимость (пример). done
2. Переключение основного языка рус/англ. По сути, сейчас это основная задача, потому что в нее многое упирается. И заключается она по сути в том, что весь сайт нужно перевести на UTF-8!

Дальнейшние планы

3. Доделать анализатор циклов (.Net) (далее - работа с циклами и вариациями крафта).
4. Вывод списка текущих материалов по рецепту (Javascript).
5. Стоимости регов / текущего крафта в дереве (Javascript).

Мечты:

6. Данные о ценах в зависимости от сервера.

Мелочи на потом:

- Если результатом поиска является только один рецепт, нужно делать редирект (хз как его делать) на страницу этого рецепта сразу.
- Редизайн разворачивания дерева (заменить чекбокс на что-то более интуитивно понятное и симпатичное).

Рецепты - прощайте, "трансмуты" кожи

Я пошел на мужественный шаг и удалил из схем производства все рецепты преобразования кожи одной в другую. Впоследствии можно включить это как опцию, а пока лучше пусть их не будет, чем будут уродовать списки базовых реагентов.

Под нож попали:

Heavy Borean Leather
Borean Leather

Heavy Knothide Leather
Knothide Leather

Rugged Leather
Thick Leather
Heavy Leather
Medium Leather
Light Leather

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

To do:

1. Перенести в рабочую версию. done
2. Очистить кэш рецептов. done

Варлок vs. Чернокнижник

Переименовал на сайте "варлока" в "чернокнижника" везде, где нашел. Заодно кое-где переименовал "кровавых эльфов" в "эльфов крови", но это уже более трудоемкий процесс О_о Да и смысла в нем меньше.

Самое забавное, что когда-то у меня на сайте варлоки и были чернокнижниками. Так повелось еще со времен ashenvale.ru. Но потом я переименовал всех чернокнижников в варлоков, потому что никто их чернокнижниками не называл.

Когда вышел RuWoW, меня очень улыбнула ирония судьбы - чернокнижники вернулись (именно "чернокнижником" перевели класс "warlock" в русском WoW). Переименовывать я обратно этот класс на сайте не спешил, потому что в сознании игроков не сразу произошла замена варлоков на чернокнижников. Но, теперь, я думаю, время пришло.

18 янв. 2010 г.

Рецепты - обновлена база до 3.3

Обновил БД рецептов, теперь она соответствует текущему патчу - 3.3.

УРА!

P.S.: Добавил на сайт две фишки:

1. При парсинге спелла ([spell]) в коде страниц теперь делается проверка, является спелл рецептом или нет. Если является, то ссылка ведет на страницу рецепта на Warcry.ru.
2. При парсинге предмета ([item]) в коде страниц теперь делается проверка, есть ли рецепт-источник этого предмета в базе данных рецептов. Если такой рецепт есть, справа от ссылки на предмет (которая ведет на wowhead) рисуется иконка со ссылкой на рецепт на Warcry.ru:


13 янв. 2010 г.

Рецепты - разбивка на базовые реагенты и прочее

Сделал:

1. Добавил поиск на страницу рецепта (раньше он был только в списке рецептов).
2. Вычисление стоимости производства непосредственно по рецепту без углубления.
3. Разбивку на базовые реагенты.
4. Стоимость базовых реагентов.

Пример с картинки: Алхимический камень убийцы.

Доделать:

1. В стоимости производства сделать ссылки на вещи, включаемые в стоимость.
2. Исправить баг: при поиске если результатов больше одной страницы, при переходе по страницам пропадает фильтр поиска. done
3. Если результатом поиска является только один рецепт, нужно делать редирект (хз как его делать) на страницу этого рецепта сразу.

P.S.: Жэсть

P.P.S.: To do:

1. Обновить БД рецептов *blush*. DONE
2. Редизайн разворачивания дерева (заменить чекбокс на что-то более интуитивно понятное и симпатичное).

P.P.S.: Что-нибудь сделать с вот этой ботвой. Думаю, никого не интересует возможность использовать в качестве базовых реагентов 720 Ruined Leather Scraps O_o исключил из схемы производства "трансмуты" кожи

4 янв. 2010 г.

Рецепты - поиск

Реализовал поиск в дереве рецептов: пример.

Фичи:

1. Форма поиска работает через GET, поэтому можно сохранять и передавать ссылки на результаты поиска.
2. Если на странице есть поле ввода поиска по рецептам, оно по умолчанию фокусируется и выделяется текст.
3. Поиск производится как по английскому, так и по русскому названию рецепта.
4. Поиск производится по нескольким словам. Причем не важно, какие из них введены на английском, а какие - на русском :) Например:

silver rod
серебр rod
серебра rod

Пока что в тесте, сейчас буду переносить в рабочую версию. Done

Дальнейшие планы:

1. Вывод списка базовых материалов по рецепту. done
2. Вывод список профессий и требований по ним в данном дереве. done
3. Переключение основного языка рус/англ.

17 дек. 2009 г.

Напоминалки и заметки

Напоминалка самому себе:

1. Перевести галерею фан-арта на Lightbox. done
2. Вынести javascript из кэша рецепта в заголовок страницы. done
3. Добавить в галерею новые работы. done

Забавно, кстати, следить за тем, как заполняется кэш рецептов. На данный момент уже заполнено 471/3232 рецептов. Т.е. загружались страницы уже 471 рецептов из 3232.