The Diary
Дневникът на Георги
<- Вторник, 29 Май 2007 | Начална страница | Четвъртък, 31 Май 2007 ->
Сряда, 30 Май 2007
Да не чувам думите - mysql, replication и character set. Това MySQL в комбинация с PHP програмисти дето са го ползвали е лоша-лоша-лоша комбинация. На трима човека ни трябваха повече от 12 часа да вдигнем една толкова яко осрана база данни, че ако опиша какви ги бяха свършили, никой няма да повярва на написаното.
Само ще загатна база с cp1251 кодиране, таблици в utf8, пъхано utf8, репликирано в 1251 на друг сървър. След възтановяване от backup, естествено половината неща се четат (писаните на 1251), а тези на utf8 - не. Наложи се да пишем php боскриптове, за да се оправи чудото и сериозни врътки, за да се подкарат сървърите.
Ей го и скрипта за конверсия на текстовете, не ме е много срам, защото свърши работа, само дето И Ш ш станаха на J :)
[ Коментари: 18 ]Коментари
Още да добавя към комбинацията с MySQL'a - SET NAMES, COLLATION ;-)
Az vse pak da pitam. po princip kato pisha prilojenie php + mysql vsichko mi e cp1251. kolko greshno i kolko pravilno e i koi e universalniq podhod?
@Lubimir Yourdanov
За "универсалния подход" - UTF-8 навсякъде - HTML, PHP, DB.
За PHP-то имай предвид,че ще ти трябва mb_string модула поне.
А за по-лесно като ще пишеш на български, всичко на cp1251. Не си струва гъзобола utf8 ако ще е само кирилица.
PHP-то не бива да е UTF8. Вътре не трябва да имаш текстови съобщения, хубаво е да са изнесени в отделен файл. HTML-ите също, за това за измислили template-engine-ите.
Всеки UTF8 файл има в началото BOM (3 байта май беше). Ако имаш:
<?php
header("location: /alabala.php");
exit();
ще ти ревне, че не можеш да направиш редиректа именно заради тези 3 байта.
ООоо недей с тия template engines, това е по-зле и от MySQL-а, честно :(
Че какъв е проблема с templates? При разработката е страшно удобно при положение, че работят различни хора по скриптовете и дизайна. Оправдание да не ползваш разделен код и визуализация трудно се намира...
Проблема е че никога не е толкова розово колкото звучи. Различни хора да правят визуализацията и кода и всеки да си играе в неговата градинка като по средата стои някакъв си template engine (не дай си боже да е написан на PHP) е рецепта за много лош сайт, да не кажа отвратителен от гледна точка на работа и поддържане сайт.
Не мога да разбера къде е проблема според теб - в самият подход при разделянето на код и дизайн или в template engine-ите, които се ползват? Не се заяждам, просто ми е интересно твоето мнение. Голяма част от времето си прекарвам в разработката на уеб-приложения и от както преди няколко години почнахме да ползваме templates продуктивността рязко скочи.
@Георги
За "Всеки UTF8 файл има в началото BOM (3 байта май беше)" - никога не съм имал подобен проблем, а съм изцяло на UTF-8. Може би е до настройка на apache/mod_php.
За template engines - прав си, но всичко опира до това как се ползва (а за какъв проект става въпрос).
"Различни хора да правят визуализацията и кода и всеки да си играе в неговата градинка" - да това беше идеята до преди време, но тя умря в мъки и за добро или лошо вече не е така.
От дизайнери се взема PSD/PNG или в най-добрия случай статичен HTML, но само ако е "нарязян" като хората. Оттам нататък се поема от php developer.
@Огнян
Хм.. не съм много съгласен. Според мен е правилно целият процес да се разпредели на 3 длъжности:
1. Дизайнер, който прави PSD/PNG
2. Web developer, който се занимава с рязането, подреждането в HTML и редактирането на templates
3. PHP developer, който се занимава с ДБ-та, логика и т.н.
А да не се ползват templates си е живо мъчение (особено за девелопера). Когато дизайнера или уеб девелопера решат (или дизайнера ако няма отделен уеб девелопер), че нещо не им харесва и трябва да се смени да тормозят php developera - смени ми този таг така, онзи инъче - мъка.
@Веско
Абсолютно съм съгласен с теб на теория, но практически в тая липса на службогонци е трудно да се постигне такава идилия :-)
2 месеца търсихме дизайнер и зорлем с компромис назначихме една девойка. PHP developer-и (junior & senior) търсим от времето, когато още имаше динозаври...
Сега надеждата ми е, че като се преместим тия дни в разкошния нов офис и назначим нова секретарка (170 90/60/90 руса), с подходяща обявя за работа, все някой ще се подлъже да дойде :-)
@Огнян
Покажи снимка на секретарката :)
@Георги
Разбира се, че ще покажа. Нека я назначим. И календар ще направим :-)
@Георги Чорбаджийски - Ако ни бяхте попитали, щях да ти дам сламка :) на тоя скапан сайт му 'оправях' преди време псевдо-RSS класовете, които местят данни от тази БД в БД на другата машина за да захранва skysports.bg и да се чете кирилицата. Така че решението си го има и си е там на самия сървър. Както и да е. Ако се бяхте погрижили да има backup нямаше да имате тези проблеми, но .... няма да ти давам акъл как да се грижите за сървърите.
@Огнян - не ми пука за секретарката, аз съм женен мъж, дай малко инфо за условията за php разработчик (къде да прочета?). Моля.
Акъл не ща от хора, дето реализират репликация с php скриптове. Както обичам да казвал, ебал съм ви в нещастниците неграмотни.
@Георги Чорбаджийски :) благодаря, не си моя тип.
Не съм го правил аз, само даобавих 2 реда за да се чете кирилицата. Имах същия проблем като теб - след пускане на тази простотия с репликирането единия сайт беше ок (защото през него се пълнеха таблиците с писания), а другия с копирани данни не се четеше. За мен ситуацията с пуснато репликиране беше заварено (работещо) положение. Очевидно не съм достатъчно умен, щом при мен нямаше проблеми с отделни букви и всичко се четеше нормално.
Разбирам защо не искаш акъл - предпочиташ да откриваш сам топлата вода, при това по пътя си открил нова азбука ....
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
:) mysql-а е просто известен с хилядите си проблеми с charset-ове и encoding-и...
Написа Васил Колев (www) на 31-May-2007 11:34