Fatal error: Call to undefined function xmlrpc_encode_request()

Лошава грешка. Очевидно които е ползва xmlrpc знае за какво иде реч, но все пак за тези които не са просветлени. Повече информация за функцията може да намерите тук: php.net .
Проблемът с xmlrpc_encode_request се решава като се инсталира модула за xmlrpc, а именно при Debian:

apt-get install php5-xmlrpc

Това е всичко сега вече функцията xmlrpc_encode_request работи страхотно.

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

Често срещани проблеми с encoding при php

Случвало ли ви се е да имате стринг които е написан с cp1251 и които да искате да конвертирате в utf-8. Най- вероятно да, но случвало ли ви се е да имате стринг които е написан или на cp1251 или на utf-8 предполагам, че на доста няма да им се е налагало затова реших да напиша тази публикация за лесното на следващите след мен.
Имаме стринг "Това е текст" но незнаем на какъв енкодинг е. Преди да го конвертираме в utf-8 или cp-1251 първо трябва да знаем какъв е и след това е ясно. Ето разиграно решение:

<?php

$s_utf8=iconv("CP1251","UTF-8","Това е текст- ЮТФ-8");
$s_cp1251="Това е текст- ЦП1251";

$check1=mb_detect_encoding($s_utf8,'UTF-8,CP1251');
$check2=mb_detect_encoding($s_cp1251,'UTF-8,CP1251');

echo "[$s_utf8 <-><b>$check1</b>] -- [$s_cp1251 <-> <b>$check2</b>]";

?>

Ето примерен проблем при конвертиране с iconv:

<?php
iconv("UTF-8","CP1251",$s_cp1251);
iconv("CP-1251","UTF-8",$s_utf8);
?>

В горното казваме, че искаме да конвертираме UTF-8 към cp-1251, но това няма как да се реализира понеже стринга е CP1251. Същата тази грешка се получава и при следващото . Именно поради тази причина преди да се конвертира даден стринг към друг енкодинг трябва да се знае какъв е бил преди и какъв да бъде след.

Ето ви две функции за конвертиране от UTF8 към CP1251 и втората отново за конвертиране на CP1251 към UTF8, но с проверка за текущия входящ стринг. При тези две функции може да конвертирате без наличие на iconv.

function cp1251_to_utf8($s)
{
function detect_encoding($string)
{
static $list = array('utf-8', 'windows-1251');
foreach ($list as $item)
{
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string))
return $item;
}
return null;
}

if ( (detect_encoding($s)) == "windows-1251")
{
$c209 = chr(209); $c208 = chr(208); $c129 = chr(129);
for($i=0; $i<strlen($s); $i++)
{
$c=ord($s[$i]);
if ($c>=192 and $c<=239) $t.=$c208.chr($c-48);
elseif ($c>239) $t.=$c209.chr($c-112);
elseif ($c==184) $t.=$c209.$c209;
elseif ($c==168)    $t.=$c208.$c129;
else $t.=$s[$i];
}
return $t;
}
else
{
return $s;
}
}//End of function cp1251_to_utf8($s)

function utf8_to_cp1251($s)
{
if ((mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8")
{
for ($c=0;$c<strlen($s);$c++)
{
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2)
{
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025)
{
$out_i=168;
} else {
if ($new_i==1105)
{
$out_i=184;
} else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6)
{
$c1=$i;
$byte2=true;
}
}
return $out;
}
else
{
return $s;
}
}

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

Конструкции на SQL за поддръжка на таблици в MySQL

MySQL притежава няколко конструкции на SQL за поддръжка на таблици: CHECK TABLE за проверка на целостта им, REPAIR TABLE за извършване на поправка, ANALYZE TABLE за анализ и OPTIMIZE TABLE за оптимизиране.  Следва малко информация за всяка от конструкциите за поддръжка на таблици в MySQL:

CHECK TABLE

Конструкцията CHECK TABLE извършва проверка за целостта на структурата и съдържанието на съответната таблица. Тя е приложима и за MyISAM, и за InnoDB. За таблиците от тип MyISAM се осъществява също и актуализиране на статистиката на индексите. Ако дадената таблица с изглед, с CHECK TABLE се проверява дефиницията му. Ако данните, изведени от CHECK TABLE показват наличие на проблем с таблицата, тя трябва да бъде поправена.

REPAIR TABLE

Конструкцията REPAIR TABLE служи за коригиране на проблеми в таблица, която е повредена. Тя е приложима само за таблици от тип MyISAM. Можете да конфигурирате автоматична поправка на таблиците на MyISAM.

Пример: repair table dhstudio

ANALYZE TABLE

Конструкцията ANALYZE TABLE служи за актуализиране на таблица с информация за разпределението на ключовите стойности в нея. Тя се използва от оптимизатора за избор на по- подходящи планове за изпълнението на заявки. Тази конструкция работи с таблици на MyISAM и InnoDB.

Пример: analyze table dhstudio

OPTIMIZE TABLE

Конструкцията OPTIMIZE TABLE служи за "изчистване" на таблици от тип MyISAM чрез дефрагментирането им. Резултатът е повторното разпределяне на неизползваното пространство, получено в резултат от изтриване и актуализации, както и обединяване на записите, които са били разделени и съхранени разпокъсано. OPTIMIZE TABLE се използва също така за сортиране на индексните страници, ако не са подредени, както и за актуализиране на статистиката за индексите.
OPTIMIZE TABLE работи и с таблици на InnoDB, но ги пренасочва към конструкцията ALTER TABLE, която ги изгражда наново. По този начин се актуализира статистиката за индексите и се освобождава място в клъстерния индекс.

Пример:  optimize table dhstudio

Ако искате да разберете кои таблици трябва да оптимизирате изпълнете следното:

show table status where Data_free!=0;

По този начин ще фрагментирате таблиците които се нуждаят от това, а не тези които са фрагментирани.

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

Спиране на SYN Flood чрез sysctl и iptables

На една машина нямаше правила за спиране на syn flood и трябваше да добавя такива. Понеже се сетих, че преди много години това беше сериозен проблем реших да напиша тази кратка публикация която обяснява как се спира съответния syn flood. Ако искате да тествате дали вашата машина е подвластна на syn flood може да тествате със hping3 или по- конкретно:

hping3 --faster -S  example.com
#Ако искате да конкретизирате порт, ето така:
hping3 --faster -S  example.com -p 80

Ако машината ви замръзне или се случи натоварване то определено имате проблем :).

Ето решение на проблема чрез използване на sysctl + iptables :

Файл: Sysctl.conf

net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 2048

Записване и презареждане на sysctl:

sysctl -p

Промени в iptables(създаване на верига syn-flood) :

iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURN
iptables -A syn-flood -j DROP

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

Проблем с phpmyadmin

Днес ми репортнаха за един от моите инсталирани phpmyadmin, че извеждал грешка :
PHPMYADMIN The configuration file now needs a secret passphrase (blowfish_secret).

Решението е:

Отваряте файл /var/lib/phpmyadmin/blowfish_secret.inc.php
и се копира този ред където е въведен вашият blowfish. Пример:
$cfg['blowfish_secret'] = 'Примерен hesh81927398akjhasdklfj';

Копираната променлива и хеш записвате в най- долния ред на файла /etc/phpmyadmin/blowfish_secret.inc.php

След това презареждате phpmyadmin от браузъра и всичко е наред. :)

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

Сетване на Charset UTF8 при mount на cd

Случвало ли ви се е под GNU/Linux да се опитате да монтирате диск в които всичкото съдържание е на кирилица. Предполагам да. В моя случай имах проблем с това, а именно енкодинга по подразбиране с които монтира диска не отговаряше на реалния. За целта статично казвам, че енкодинга трябва да бъде UTF8.

Ето пример как става монтиране на CD с charset UTF8:

mount -t iso9660 /dev/cdrom /media/cdrom -o iocharset=utf8

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

Телефон на услуги за България

Преди телефона на услуги беше 144 или 145, но от както промениха толкова пъти телефона така и не стана ясно какъв е телефона на услуги.

Телефон за услуги (телефонен номер): 11 800

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

Система за непрекъснато подаване на мастило

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

Може ли мастиленоструйният принтер да печата евтино?

Отговорът на този въпрос можем да открием в СНПМ (системи за непрекъснато подаване на мастило). Задачата на тези системи е да обезпечи непрекъснатото подаване на мастило към печатащата глава на принтера, в зависимост от разхода му. Системите се състоят от:

резервоари за мастило, които са многократно по-големи от оригиналните касети;

многоканални силиконови тръби, свързващи резервоарите със специални касети;

касети, снабдени със само-нулиращи се чипове.

Описаните системи позволяват да се увеличи значително обема на печат, в сравнение с оригиналните касети, както и да се използват алтернативни мастила в разфасовки от 100 до 1000 мл, които са в пъти по-евтини.

Положителните страни на СНПМ са:

висока стабилност на качеството на печат. То се постига благодарение на постоянното налягане на мастилото в печатащата глава и не зависи от нивото на мастилото в резервоарите;

повишена безопасност при печат -- няма риск от попадане на въздух в главите при смяна на касетите;

повишаване обема на печат без риск от внезапно свършване на мастилото в касетата;

намаляване себестойността на печат от 10 до 30 пъти;

запазване на гаранцията на принтера -- поставянето на СНПМ не води до механични повреждания на принтера;

системата ще увеличи живота на вашия принтер.

За отрицателните страни на системите:

Няма такива!!!

При поставянето трябва да се обърне внимание на мястото и начина на монтиране на силиконовите тръби -- те не трябва да се оплитат и да пречат на движението на главите. Единственото негативно нещо за вашия принтер е използването на некачествени мастила, те могат да запушат печатащата глава.

Поевтиняването на печата може да се изчисли за определен принтер -- например за Epson Photo R300:

Оригиналната касета съдържа 13ml = 430 страници А4 при 5% запълване (посочения брой страници е даден от Epson). При 100% запълване една касета отпечатва 21,5 страници. При така направения разчет една страница се покрива на 100% с 13/21,5=0,605 ml. При цена около 25 лв. за оригинална касета -- цената на мастилото за една отпечатана страница А4 100% е 0,605*25/13=1,16 лв.

При използване на съвместими касети за този принтер (на цена около 12 лв. за касета) цената пада на 0,605*12/13=0,56 лв.

Когато печатаме със СНПМ и цена на мастило за Epson R300 около 24 лв. за 200 ml, стойността на една отпечатана страница А4 със 100% запълване вече е 0,605*24/200=0,073 лв. (няма грешка)!!!

Цената на СНПМ за този принтер е 150 лв., което е съизмеримо с цената на един комплект оригинални касети.

Системите за непрекъснато подаване на мастило се използват предимно в принтери с дълъг живот на главите. Такива са почти всички модели на Epson и Canon.

Източник: Варна Бит

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

Забиване на статичен енкодинг

Случвало ли ви се е да искате да забиете енкодинг за цял уеб сайт от Apache, а не от самите страници. Има много варианти за това, но аз ще предложа htaccess.
Във .htaccess добавяме следния ред:

AddCharset cp1251 .html

С този ред казваме, че всички .html файлове ще бъдат изпълнени със Charset Windows-1251 или cp-1251.

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

Бърза статия за инсталиране на apache + ssl + htaccess оторизация под Debian

Днес на бързо написах една статия за Инсталиране на Apache 2 + SSL + htaccess auth под Дебиан. Идеята на статията е да спести време на всеки. Статията може да бъде открита ето тук:
Инсталиране на Apache2 под Debian- Lenny. Активиране на SSL и основна оторизация.

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

Личен Блог на Мартин Петров