Category Archives: Web

Web

Как да премахнем Microsoft Smart Quotes в MySQL или PHP

Случвало ли ви се е да ъплоаднете текстов файл преди това писан и експортнат от Microsoft Office. Е в това няма нищо лошо, но сигурно забелязвате, че кавичките не са като стандартните(на вид и като изпълнение). Тези кавички са част от Smart Quotes. Smart quotes е част от Microsoft office които трансформира стандартните кавички. Ето Ви как може да премахнете Smart Quotes в MySQL и PHP(препоръчвам PHP):

MySQL:

#UTF-8 text
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28098, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28099, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809C, '"');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809D, '"');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28093, '-');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28094, '--');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE280A6, '…');
#Windows-1252 text
UPDATE `t` SET `c` = REPLACE(`c`, char(145), "'");
UPDATE `t` SET `c` = REPLACE(`c`, char(146), "'");
UPDATE `t` SET `c` = REPLACE(`c`, char(147), '"');
UPDATE `t` SET `c` = REPLACE(`c`, char(148), '"');
UPDATE `t` SET `c` = REPLACE(`c`, char(150), '-');
UPDATE `t` SET `c` = REPLACE(`c`, char(151), '--');
UPDATE `t` SET `c` = REPLACE(`c`, char(133), '…');

PHP:

// UTF-8 texxt
$text = str_replace(
array("\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"),
array("'", "'", '"', '"', '-', '--', '…'),
$text);
// Windows-1252 text
$text = str_replace(
array(chr(145), chr(146), chr(147), chr(148), chr(150), chr(151), chr(133)),
array("'", "'", '"', '"', '-', '--', '…'),
$text);

Ето и подробна таблица:

Character HTML Code Windows UTF-8 name
‘ 145 E28098 left single curly quote
’ 146 E28099 right single curly quote
“ 147 E2809C left double curly quote
” 148 E2809D right double curly quote
– 150 E28093 en dash
— 151 E28094 em dash
… 133 E280A6 ellipsis
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Хубав мед от пчелите

Пчелите са група насекоми от разред Ципокрили. Съществуват много различни видове. Някои живеят на групи от по десет, други – сами. В едно гнездо могат да съжителстват до 80 000 пчели.

Най-съществената особеност на гнездото са клетките, по-голямата част от които са свързани и образуват пита. Всяка клетка е с шестоъгълна форма. Тази форма е особено устойчива и за изграждането ѝ са необходими по-малко восък и енергия, отколкото за която и да е друга . В някои от клетките се съхранява храна-прашец и нектар от цветята. Тук нектарът се превръща в пчелен мед. Всички яйца се снасят от пчелата майка (царица). Тя снася по едно яйце във всяка клетка, а пчелите работнички се грижат за него.
Източник: bg.wikipedia.org

Смятам, че пчелите също заслужават присъствие в Интернет и затова реших да им пусна едно малко сайтче- www.пчелите.инфо .

PS: Споделям свободна блог платформа- www.свободенблог7.ком

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

MySQL проблем с много отворени таблици- Errcode: 24

Тук проблемът не е в MySQL да поясня отначало, а в това, че базата има много таблици и респективно отваря много файлове,а броя на файловете по подразбиране в MySQL които могат да се отварят не са особено много :).
"Проблемът" е следния: Когато се експортва база с повече таблици от колкото разрешени отворени файлове в my.cnf може да се получи следната грешка:

#mysqldump -uroot -p wordpress_multi > wordpress_multi.sql
mysqldump: Got error: 29: File './wordpress_multi/wp_61_terms.MYD' not found (Errcode: 24) when using LOCK TABLES

Понеже "error code: 24" нищо не ми говори затова използвам perror (За повече информация относно perror, натиснете ТУК) за да разбера какво означава това:

# perror 24
OS error code  24:  Too many open files

Става ясно, че трябва да увеличим максималния брой отворени файлове в mysql. Добавяте следния ред в конф файла на MySQL (/etc/my.cnf), секция [mysqld]:

open-files=2048

Рестартирате mysqld ( /etc/init.d/mysqld restart)

След като може да се отварят повече файлове от MySQL, проблем вече няма в това отношение.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

По- добра оптимизация на вашият WordPress, чрез постоянни връзки

Постоянните връзки са част от повечето блог платформи. Те са постоянни URL адреси към всяка индивидуална публикация, категория или списък от всички публикации. За пример ще приложа постоянна връзка, чрез която ще изведа всички публикации от категория “Web”:

http://www.mpetrov.net/category/Web

В WordPress може да се контролират постоянните връзки и от това да контролирате потенциалния ефект върху вашият сайт спрямо оптимизирането му за интернет търсачките. Ако не използвате постоянни връзки, подразбиращите се изглеждате по следния начин:

http://www.mpetrov.net/index.php?p=49

където стойността на аргумент “p” е 49 която е номера на публикацията.

За да използваме постоянните връзки първо трябва да влезе в секция „Постоянни връзки” или „Permalinks” в WordPress: Натискате на бутон “Настройки” -> Постоянни връзки” или „Settings” -> “Permalinks” .

От там ще видите малка информация за постоянните връзки и общите настройки

Кратка информация за постоянните връзки:

По подразбиране WordPress използва адреси, които съдържат въпросителни знаци и много цифри в себе си. Затова може да създавате собствени формати на адресите на постоянните връзки към публикациите и архивите.Това може да подобри външния вид и използваемостта на връзките в блога. Имате на разположение няколко променливи (на английски език), а тук можете да получите малко обяснения и примери с които да започнете.

Ето ги и основните настройки:

По подразбиране: http://mpetrov.net/?p=123

Дата и име”: http://mpetrov.net/2009/10/26/sample-post/
Месец и име”: http://mpetrov.net/2009/10/sample-post/
По номер на публикацията”: http://mpetrov.net/archives/123

И най- отдолу в под секция „Основни настройки”, но не на последно място „Различна структура”. Тук може да добавят собствени настройки. Ще предложа едни от най- разпространените примери:
Извежда за адрес заглавието на публикация: /%postname%
Пример: http://mpetrov.net/upgrade-ot-debian-etch-do-debian-lenny

Тук извежда името на категорията + заглавието на публикацията: /%category%/%postname%
Пример: http://mpetrov.net/sadmin/upgrade-ot-debian-etch-do-debian-lenny

Най- долу в секция „Настройка на постоянните връзки” имате възможност да редактирате и префиксите на категориите и етикетите.

Ето я и предоставената информация включена в WordPress която е напълно достатъчна за разбиране и използване:

Можете да въведете собствен префикс за адресите на категориите и етикетите. Например: topics ще промени връзките към категориите така: http://example.org/topics/име-на-категорията/. Ако оставите полето празно ще се ползват стойностите по подразбиране.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да си обновя WordPress плъгините google-sitemap-generator и all-in-one-seo-pack от shell

Тук отново няма да описвам кое какво прави понеже е прекалено елементарно всичко. Просто ще напиша как се обновяват WordPress плъгините-  Google Sitemap Generator и All-in-one-seo-pack на сравнително рационално ниво:

Тук очевидно се вижда че става въпрос за update на WordPress Google Sitemap Generator:

cd /example.com/wp-content/plugins/;
wget http://downloads.wordpress.org/plugin/google-sitemap-generator.3.1.7.zip;
unzip -o google-sitemap-generator.3.1.7.zip;
rm -fr google-sitemap-generator.3.1.7.zip;

Тук отново очевидно се вижда, че се прави обновяване на WordPress all-in-one-seo-pack:

cd /example.com/wp-content/plugins/;
wget http://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip;
unzip -o all-in-one-seo-pack.zip;
rm -fr all-in-one-seo-pack.zip;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Upgrade на WordPress от shell.

Вместо да обяснявам ред по ред предоставям простo  sh скриптче което прави всичко:

#!/bin/sh
mysqldb="vashata_baza";
mysqluser="vashiqt_user";
mysqlpass="vashata_parola";
wp_dir="/var/yourblog.com/public_html/";
cd /tmp/
echo "Backup your WordPress DB: $mysqldb";
mysqldump -u$mysqluser -p$mysqlpass $mysqldb > /tmp/wordpress_blog.sql
echo "Backup your Old WordPress";
#cp -Rp $wp_dir /tmp/wordpress_blog_backup/
echo "Download new WordPress";
wget -q http://wordpress.org/latest.zip
unzip /tmp/latest.zip
echo "Replace old WordPress files";
cp -avr /tmp/wordpress/* $wp_dir
echo "Delete temp files";
rm -fr /tmp/latest.zip /tmp/wordpress/
echo "Visit http://yourblog.com/wp-admin/upgrade.php"
echo "Click: Upgrade WordPress Database";
echo "Your WordPress is updated successfully"

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да си счупим WordPress блога с php таг

Днес докато си пишех публикация за таговете <?php и <? ми се случи нещо интересно. Случайно добавих таговете <?php и <? в заглавието на публикацията и заради това се счупи цялата публикация. Ето пример на нормална публикация без "<?php" и със "<?php"
broken_wordpress_with_php_tags_before1
Публикували сме най- нормална публикация
broken_wordpress_with_php_tags_error1
Добавяме тага <?php" в заглавието на публикацията.
broken_wordpress_with_php_tags_after1
Виждаме, че нашата публикация е повредена от преди това добавения таг "

Същото може да се каже и за html тагове които не са затворени правилно. Ето пример:

<div style="display:none"

По- горния таг не е затворен правилно и ще повреди вашият пост.

Изводът е винаги да затваряме всеки един таг.

PS: ако в заглавието добавите <?php echo "martin"; ?> или какъвто и да е код НО СЪС ЗАТОВРЕН таг всичко ще бъде наред(няма да го изведе ) и няма да се счупи поста. Всъщност проблема е само когато добавите само таг за отваряне на php

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Създаване на WordPress plugin

В тази публикация ще опишем с няколко стъпки как може да напишиете WordPress plugin и Вие. Времето което е необходимо за прочитаме и усвояване на информацията е 15 минути.

Разширенията във WordPress позволяват лесно редактиране и персонализиране на вашият WordPress блог.  С разширенията на WordPress може да добавите нови функции без да е необходимо препрограмирането из основи на WordPress ядрото.

Преди да започнем с писането на WordPress plugin "HelloWorld" е необходимо да имате основни познания по WordPress Plugins :

1. Наименование на разширението

Първата задача преди да започнете да правите WordPress разширение или plugin е да му дадете име и да проверите в хранилището ви (/wp-content/plugins/) с разширения дали има наличен WordPress разширение с името което сте си избрали. Ако името на вашето разширение е уникално то тогава ви остава единствено да продължите напред :) .

2. Директория на разширенията в WordPress
wordpress_plugin_directory1

В по- горния случай на изображението съответния плъгин се съхранява в директория, но това не е задължително. Ако конкретния плъгин се състои от единствен файл(както е нашият плъгин "HelloWorld") то е възможно да бъде поместен директно във /wp-content/plugins/helloworld.php

3. Основна информация за разширението

/*
Plugin Name: HelloWorld
Plugin URI: http://www.mpetrov.net/write_wordpress_plugin_from_scratch
Description: Your First WordPress Plugin- Hello World
Author: Martin Petrov
Version: 0.75
Author URI: http://www.mpetrov.net/
*/

Сигурно забелязвате, че информацията се съхранява като коментар т.е. това не е php код за изпълнение, а просто за информация.

4. Лиценз  на разширението.

Повечето разширения са под лиценза GPL използван и от WordPress или от лиценз съвместим с GPL. За да посочите GPL лиценза като такъв трябва да добавите следните редове по- долу:

<?php

/*  Copyright YEAR  PLUGIN_AUTHOR_NAME  (email : PLUGIN AUTHOR EMAIL)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?>

Преди версия 2.0 на WordPress, тези допълнителни визуални плъгини трябваше на ръка да бъдат кодирани в темата и по този начин владееното на PHP беше задължително. Във версия 2.0 и всяка следваща версия е въведена опцията „Widgets" или "Джаджи" от където може да добавяте и премахвате разширения (plugins) като всяка операция може да се извърши с Drag and Drop.

Разширението кеото ще създадем ще можем да менажираме от "Widgets" или „Джаджи" и когато го активираме ще излиза в sidebar на нашата тема.

Хайде да започнем с писането на нашият първи plugin за WordPress:

Първо трябва да създадем php файл които ще се казва: helloworld.php и ще го запишем в директория: /wp-content/plugins/ . В крайна сметка файла ще бъде ето тук: /wp-content/plugins/helloworld.php .  Може да използвате „vim","mcedit","nano","pico","vi" и какъвто редактор решите.

След като създадохме празния файл-plugin е необходимо да добавим общата информация за него. Ето каква ще бъде информацията:

<?php
/*
Plugin Name: HelloWorld
Plugin URI: http://www.mpetrov.net/write_wordpress_plugin_from_scratch
Description: Your First WordPress Plugin- Hello World
Author: Martin Petrov
Version: 0.75
Author URI: http://www.mpetrov.net/
*/

?>

След това добавете основната функция HelloWorld() която ще извежда съобщението „Hello World. I'm your first WordPress plugin":

<?php

function HelloWorld()
{
echo "<b><font color='white'>He</font><font color='green'>llo</font> <font color='red'>World</font>. I'm your first WordPress plugin</b>";
}

?>

Тук очевидно става ясно, че тази функция единствено извежда текст.

Сега добавете по- интересните функции:

<?php

function widget_HelloWorld($args)
{
extract($args);
echo $before_widget;
echo "$before_title <font color='white'>Title</font> <font color='green'>of</font> <font color='red'>Widget</font> $after_title";
HelloWorld();
echo $after_widget;
}
function HelloWorld_init()
{
register_sidebar_widget("Hello World","widget_HelloWorld");
}
add_action("plugins_loaded", "HelloWorld_init");

Сега ще разгледаме функциите по отделно за да се изяснят действията които извършват. Първата функция widget_HelloWorld($args) е за това какво ще се показва в съответния sidebar (когато  плъгина е активиран в Widgets). Може би е добре да забележите , че първо извеждаме съобщение за заглавие и след това викаме функцията която по- рано написахме отново за извеждане на текст HelloWorld() .

Втората функция HelloWorld_init() се извиква когато WordPress плъгина е активиран. Той извиква WordPress функцията която ще регистрира новия Widget plugin които ще нарече „Hello World"

Последния ред от плъгина добавя екшън, чрез които се казва на WordPress да извика HelloWorld_init() когато плъгина е зареден.

Това е кратко ръководоство което не може да покрие цялата информация относто създаването на Wordpress плъгини, но може да ви предостави основна информация. Надявам се, че информацията Ви е била полезна.

Приложение -- файл: helloworld.php:

<?php
/*
Plugin Name: HelloWorld
Plugin URI: http://www.mpetrov.net/write_wordpress_plugin_from_scratch
Description: Your First WordPress Plugin- Hello World
Author: Martin Petrov
Version: 0.75
Author URI: http://www.mpetrov.net/
*/

function HelloWorld()
{
echo "<b><font color='white'>He</font><font color='green'>llo</font> <font color='red'>World</font>. I'm your first WordPress plugin</b>";
}

function widget_HelloWorld($args)
{
extract($args);
echo $before_widget;
echo "$before_title <font color='white'>Title</font> <font color='green'>of</font> <font color='red'>Widget</font> $after_title";
HelloWorld();
echo $after_widget;
}

function HelloWorld_init()
{
register_sidebar_widget("Hello World","widget_HelloWorld");
}

add_action("plugins_loaded", "HelloWorld_init");
?>

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Плъгин за WordPress- Поправя проблема с двойното тире и кавичките

Wordpress LogoЗабелязали ли сте, че когато публикувате публикация във WordPress със съдържание от двойно тире "--" или кавични ", то те се презаписват от други подобни символи което не позволява правилното копиране на публикацията. Този проект се решава с този малък плъгин които написах за 2 мин. Ето го и него: Разширение за WordPress .Изтеглете този плъгин и го запишете във /wp-content/plugins/ . След това го активирайте от [Plugins] или ["Разширения"] като натиснете бутона "Включване".

PS:  WordPress plugin for coders. Fix problems with double dashes and quotes. Click here for DOWNLOAD .

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да сетнем wait_timeout na постоянна връзка към mysql- pconnect

По поздразбиране времето за затваряне на persistent connection в MySQL е доста секунди, но аз искам да променя това време на по- малко, примерно 15 секунди. Това може да се направи от my.cnf,  но ще бъде сетване на всички Persistent connections (постоянни връзки), а аз искам само на текущата. Все пак за инфо как се сетва wait_timout в my.cnf

Файл: /etc/mysq/my.cnf
wait_timeout = 1800
/etc/init.d/mysqd restart
Има и друг вариант да сетнете от Mysql, wait_timeout за глобално ползване или чрез: mysql> set global wait_timeout=60 . Но този вариант няма да е така дълготраен колкото по- горния

Тук идеята обаче не е тази. Решението разбира се е както обикновенно доста простично. След като се напарави постоянна връзка се изпълнява сетването на wait_timeout. Ето пример за това:

mysql> set @@session.wait_timeout=360;

След като сетнахме секундите които трябва да изтекат преди да се затвори постоянната връзка сега можем да проверим дали всичко е наред:

mysql> select @@session.wait_timeout,@@global.wait_timeout;
+---------------------------------------+------------------------------+
| @@session.wait_timeout             | @@global.wait_timeout |
+---------------------------------------+-------------------------------+
|                                                    28800 |                                 360 |
+-----------------------------9--------+-------------------------------+
1 row in set (0.00 sec)

Очевидно всеки си е задал въпроса: Защо му е да ограничава persistent connection на 15 секунди след като може да използва обикновенна връзка mysql_connect с възможност за затваряне веднага след изпълнение на скрипта (mysql_close)? Отговорът е защото заявките които се изпълняват са в рамките на 15 секунди т.е. за 15 секунди могат да се изпълнят 20 заявки в случаен интервал т.е. не е ясно кога трябва да се затвори връзката и кога не. За целта използвам pconnect с времеви прозорец 15 секунди и абсолютно всичко работи прекрасно.

PS: Това може да бъде решение на въпроса "mysql_connect има възможност за затваряне след изпълнение mysql_close, но mysql_pconnect няма mysql_pclose" Като се окаже малко време на практика това ще бъде неформално mysql_pclose.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)