Май 19th, 2010 in неразобранное | 1 Comment »
Чем же отличаются эти два collate для таблиц?
utf8_bin – использует сравнения по двоичным значениям каждого символа
utf8_general_ci – использует сравнения на основе языковых особенностей и игнорирует регистр символов.
Для наглядности приведем небольшой эксперимент.
CREATE TABLE peoples (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
first_name VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
last_name VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
) ENGINE = INNODB CHARACTER SET utf8;
INSERT INTO peoples (first_name, last_name) VALUES ('Петя', 'Иванов'), ('андрей', 'иванов'), ('Иван', 'Петров'), ('Андрей', 'Сидоров');
INSERT INTO peoples (first_name, last_name) VALUES ('Петр', 'Большой'), ('Пётр', 'Большои');
Read more »
Март 23rd, 2010 in неразобранное | 2 Comments »
При использовании цикла for(i in ...) для перебора элементов списка вида
таким вот образом
var obj = document.getElementById("city-list");
for (i in obj.options) {
if (obj.options[i].value == ...) {
...
}
}
в ишаке получаем ошибку. Переваривается только такой вариант
var obj = document.getElementById("city-list");
for (i = 0; i < obj.options.length; i++) {
if (obj.options[i].value == ...) {
...
}
}
Неплохая статья на тему работы со списками: Javascript SELECT – динамические списки
Март 23rd, 2010 in неразобранное | No Comments »

Всякого, кто использует этот апплет, нужно отправлять на психиатрическое обследование.
Март 22nd, 2010 in неразобранное | No Comments »
В YUI 2 метод YAHOO.util.Dom.setAttribute() не работает для элементов созданных посредством DOM во всех версиях Interner Explorer (от 6 до 8), например так будет ошибка:
var button = document.createElement("button");
YAHOO.util.Dom.setAttribute(button, "type", "button");
для задания необходимо пользоваться стандартными методами DOM:
var button = document.createElement("button");
button.setAttribute("type", "button");
Причем остальные методы кроме setAttribute отрабатывают нормально:
var button = document.createElement("button");
YAHOO.util.Dom.addClass(button, "ok-button");
YAHOO.util.Dom.setStyle(button, "margin", "1em");
Март 21st, 2010 in неразобранное | 2 Comments »
Решил попробовать что-то отличное от trac для управления проектами. Выбор остановился на redmine. Поднималась для себя как единственного пользователя и на локальной машине, поэтому пока не стал заморачиваться загонять под nginx (стандартные процедуры установки предлагают поставить модулем apache, а у меня его нет).
Read more »
Март 19th, 2010 in неразобранное | No Comments »
Почтовые сервера категорически не хотят принимать письма с локальной машины, из-за отсутствия обратной зоны и даже не кладут эти письма в спам – мочат на корню. Решил использовать GMail в качестве SMTP а для отправки postfix. Приступим.
Read more »
Февраль 28th, 2010 in неразобранное | No Comments »
Принес мне товарищ ноутбук с вирусом, который при загрузке блокирует все действия и требует отправить SMS для разблокировки. Ну вещь вроде бы довольно распространенная в последнее время, а переустанавливать все заново было жалко времени – решил полечить. Read more »
Февраль 11th, 2010 in неразобранное | No Comments »
В архиве дамп трех табличек:
- страны
- регионы (с привязкой к стране)
- города (с привязкой к региону и стране)
Кодировка файла UTF-8. Размер архива 4,7Мб. Забирать здесь.
После заливки желательно прицепить ключи:
ALTER TABLE region ADD constraint fk_region_ref_country FOREIGN KEY (country_id) REFERENCES country (id) ON DELETE restrict ON UPDATE cascade;
ALTER TABLE city ADD constraint fk_city_ref_region FOREIGN KEY (region_id) REFERENCES region (id) ON DELETE restrict ON UPDATE cascade;
ALTER TABLE city ADD constraint fk_city_ref_country FOREIGN KEY (country_id) REFERENCES country (id) ON DELETE restrict ON UPDATE cascade;
Февраль 6th, 2010 in неразобранное | 1 Comment »
На такой казалось бы элементарный вопрос далеко не тривиальный ответ, и столкнувшись с ним может пострадать не один монитор или клавиатура от нелепости ситуации, мне повезло – я вовремя нагуглил правильный ответ
Теперь собственно к делу. Вот код и ожидаемый результат его выполнения:
$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3.14
У меня же получился другой вариант, от которого я честно говоря подвис:
$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3,14
Выяснилось что результат зависит от установки локали, у меня стояло: setlocale(LC_ALL, "ru_RU.UTF8"); пока остановился на таком варианте:
PHP у меня 5.2.10, а баг сей я так понимаю тащится аж с 2002 года версии 4.3.0 RC2: Bug #17079 setlocale changes the internal representation of floats
Январь 13th, 2010 in неразобранное | No Comments »
Для начала перевести БД из cp1251 в utf8.
Сделать дамп mysqldump -u svd -n --skip-opt --skip-set-charset --triggers --disable-keys svdev > dump.sql – получится чистый дамп без упаминания кодировок, можно получить отдельно данные: mysqldump -u svd -nt --skip-opt --skip-set-charset --disable-keys svdev > data.sql, поменять кодировку полей в схеме, вместо:
name varchar(64) character SET cp1251 NOT NULL
сделать
name varchar(64) character SET utf8 NOT NULL
или же убрать упоминание кодировки из полей вовсе:
name varchar(64) NOT NULL
так как при установке правильной кодировки для БД кодировки для текстовых полей создаваемых таблиц будут устанавливаться верно сами, затем изменить кодировку самой БД:
ALTER DATABASE svdev DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
и залить назад в обратном порядке – сначала структуру, затем данные.
Следующим шагом необходимо изменить кодировку файлов, для этого я набросал простенький скрипт (подключаемые библиотеки которые трогать не надо – типа tiny просто вынес сначала из проекта, а затем вернул обратно: Read more »