вторник, 16 март 2010 г.

Проблеми с кирилицата.

Това е един често срещан проблем. Натъквал съм се на него преди около две години. Възниква, както винаги от малоумието на задклавиатурното устройство, известно още като спретвач. ;) Описание на проблема: "Информацията от mysql-ла на сайта си излиза перфектно на кирилица. Ако обаче се опитате през phpMyAdmin да browse-нете данните или да ги експортнете шльокавицата е пълна." Сега решението. Решението, което съм ползвал аз изисква наличието на *NIX, шел достъп до сървъра и известна доза търпение. Проблема се състой в това, че по-начало default-ния енкодинг на
базата е бил latin1. При създаването и не е било обърнато внимание на
това и просто е била продължена работата. Сайта е работел нормално
защото mysql-a си е конвертирал енкодингите вътрешно. Това, обаче
води до невъзможност за нормален бакъп, защото за разлика от
клиентската страна mysql-dump-a и каквито и да е приложения за
бакъп не могат да се оправят "вътрешно". Решението на проблема е
простичко. Първо се "dump"-ва в latin1. Налага се защото по дефолт
ще ти бъде дъмпнато в utf8.
mysqldump --default-character-set=latin1 -u databasename -p -t databasename > databasename.sql
След това с помоща на iconv се конвертира от latin1 в utf8.
iconv -c -f cp1251 -t utf8 databasename.sql > databasename2.sql
В последствие се налагат малко обработки с Perl. Разбира се
може да се направят и с текстов редактор:
perl -pi -e 's/SET NAMES latin1/SET NAMES utf8/g' databasename2.sql
и
perl -pi -e 's/latin1/cp1251/g' databasename2.sql
Това е. След това можете просто да импортнете резултантния дъмп.

петък, 5 февруари 2010 г.

stored routines за MySQL без пари

I write stored routines for MySQL (procedures and functions), PCRE regular expressions and jQuery plugins for no price. You can contact me at email:
gonaumov@gmail.com
Пиша stored routines за MySQL (procedures и functions), регулярни изрази и jQuery плъгини без пари. За контакти ми пишете на имейла:
gonaumov@gmail.com
Example:

CREATE FUNCTION is_valid_email(email varchar(255))
RETURNS INTEGER
NOT DETERMINISTIC
BEGIN
RETURN email REGEXP '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$';
END $$

After this you can directly check for valid email inside query.
SELECT IF(is_valid_email('test@test.bg')=1, some code , other code ) ..

четвъртък, 4 февруари 2010 г.

Calling server side script without XMLHttpRequest .

Before few months I was participate in one discussion in one development forum here about calling server side script for "ancient browsers". I mean IE5.5 and others. I isolate getScript function from jQuery and made this outside function. Hope help someone.
/********************************************************************
* This function assumes url of server side
* script as a agrument and execute it asynchronous
* @author: Georgi Naumov
* @param: string scriptUrl url of server side script.
********************************************************************/
function _executeScript(scriptUrl)
{
var done = false;
var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
var d= new Date();
var re = /\.[a-z]{2,4}\/?$/;
// prevent cashing ..
var last = re.test(scriptUrl) ? "?" : "&";
scriptUrl = scriptUrl + last + "d=" + d.getTime();
script.src = scriptUrl;
script.onload = script.onreadystatechange = function()
{
if ( !done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete"))
{
done = true;
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
if ( head && script.parentNode )
{
head.removeChild( script );
}
// here you can do something ..
alert('executed: '+scriptUrl);
}
};
head.insertBefore( script, head.firstChild );
script = null;
}