All posts by amri

tyxo- малък проблем. Не дели на нула :)

Днес случайно видях статистиката от tyxo на един сайт ТУК и като натиснах на "По дни" или ТУК и познайте изплю грешцица: "Warning: Division by zero in /www/tyxo.bg/www/root/stat/byday.module.do on line 28" ..
По принцип това съобщение се появява когато се дели на 0 или на нищо,  а в случая явно защото за всички изведени дни посещенията и всички резултати са нули.  Според мен tyxo трябва да си оправят грешката понеже не всеки има по нула посещения на ден.
Шеговит извод: Ако използвате tyxo като броят, старайте се да имате повече от едно посещение на ден за да не виждате това:
Warning: Division by zero in /www/tyxo.bg/www/root/stat/byday.module.do on line 28
Warning: Division by zero in /www/tyxo.bg/www/root/stat/byday.module.do on line 29
Warning: Division by zero in /www/tyxo.bg/www/root/stat/byday.module.do on line 28
Warning: Division by zero in /www/tyxo.bg/www/root/stat/byday.module.do on line 29

PS: Нямам никакви лоши намерения към tyxo, а просто се шегувам. На всеки може да се случи да пропусне да го фиксне това. Човешко е. Имайте търпение предполагам, ще го оправят скоро.

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

Изпълнение на команда при затваряне на PuTTY 0.60

Днес ми се случи една интересна случка с PuTTY 0.60 която за първи път видях преди няколко години.

На една от машините ми се наложи да спра единия интерфейс т.е. може би щеше да ми се наложи и затова се бях приготвил като на най- близката машина на windows отворих putty и просто си приготвих "ifconfig ethX down", но него изпълних. Не го изпълних защото идеята беше бързо да го сваля ако се наложи… Не се наложи и затворих putty, след което веднага получих съобщение че интерфейса е паднал. Проблема беше че, когато напишете някаква команда в PuTTY без да я изпълните и след това затворите PuTTY тази команда се изпълнява.

Пример: Отворете PuTTY и напишете 'echo "dzak" > /tmp/puttydzak.txt' и сега затворете PuTTY от Close. След това влезте отново в машината и ще видите, че /tmp/puttydzak.txt е там 🙂

Извод: Преди да затворите PuTTY (говоря за Close) изтрийте командата ако има такава и след това го затворете другия вариант е "exit" :).

За да изтеглите PuTTY, моля натиснете ТУК за да бъдете пренасочени към официалния сайт на PuTTY за 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)

Интересен проблем с USB флашка

Днес на моя началник в компанията в която работя му се наложи да копира файл 6 GB на флашка 8 GB обаче не успя :). Като ми каза се сетих, че файловете системи най- вероятни са различни т.е.  на флашките по подразбиране е FAT32, а на неговата система- Windows XP най- често хората слагат NTFS. Разцъках и видях, че на флашката може да се променя файловата система. Промених я и всичко се оправи. Единственото неудобствно е, че сега когато се извършва някакво действие с флашката трябва да бъде премахната ръчно чрез "safely remove hardware", а не както преди да става напълно автоматично (слагаш, вадиш и това е ) :).
Забелязах, че на български не видях добро обяснение на проблема и неговото решение и реших да напиша една малка публикация с доста снимки (снимките са от google.bg). Публикацията може да бъде намерена в kakvo.org: http://www.kakvo.org/statia/4/flashka-s-fajlova-sistema-ntfs

Надявам се статията да бъде полезна 🙂

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 таблицата на kakvo.org

Вчера посещенията на kakvo.org  надхвърлиха 11 000 и машината клекна. Клекна до толкова, че mysqld и apache2 заеха 100% и дори не можеш да се логнеш в машината нормално, а след известно време(20 сек.). За целта първата и най- основна част от решаването на този проблем е оптимизирането на mysql и apache2. След няколко огледа и мъки в натоварената машина забелязах, че полетата за "превод от" и "превод на" са тип "text" и не са индекси. В този случай когато се търси конкретен превод със заявка "… where превод от='търсен превод' " отнема 1.2 сек. и сериозно натоварва машината. Мислех 100 часа 😛 и реших да добавя едно поле "превод_md5" char(32) в което да пиша md5 на "превод от" и което ще бъде index. По този начин когато се търси превод не се изпълнява старата заявка където се търси самият превод, а новата в която се търси md5 на превода. Благодарение на уникалните и индексирани md5 хешове на таблицата, заявките се оптимизираха до заветните 00.00 сек. за изпълнение, а употребата на MySQL падна до 10%. Сега машината е във война с племето на Apache, но пък за сметка на това е в съюз със ордена на MySQL. Започвам да мисля още 100 часа как да подобря дипломатическите отношения на машината с племето на Apache.

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

Кратък стих :) за оптимизиране на apache2

Наложи ми се днес да оптимизирам една машинка, че доста се понатовари. Ето примерни стойности:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
StartServers 10
MinSpareServers 10
MaxSpareServers 15
MaxClients 200
MaxRequestsPerChild 1000

С новите стойности от 20% cpu падна на 3%.

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 таблица от MyISAM към InnoDB

Днес реших да прехвърля една база от MyISAM в InnoDB и при прехвърляното получих следната грешка:
mysql> alter table pcdict_words ENGINE = InnoDB;
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

Това се получава защото в таблицата имам няколко индекса "Fulltext". Преди да прехвърлим
към InnoDB трябва да видим които са Fulltext индексите и да ги премахнем. За да видим индексите се изпълнява
следната команда:
mysql> SHOW CREATE TABLE pcdict_words\G
*************************** 1. row ***************************
Table: pcdict_words
Create Table: CREATE TABLE `pcdict_words` (

FULLTEXT KEY `worde` (`a`),
FULLTEXT KEY `description` (`d`),

) ENGINE=MyISAM AUTO_INCREMENT=3217 DEFAULT CHARSET=cp1251
1 row in set (0.00 sec)

Сега ще премахнем двата индекса Fulltext със следните команди:
alter table pcdict_words drop index `word`;
alter table pcdict_words drop index `description`;

Сега отново конвертираме от MyIsam към InnoDB :
mysql> alter table pcdict_words ENGINE = InnoDB;
Query OK, 3203 rows affected (0.54 sec)
Records: 3203  Duplicates: 0  Warnings: 0

Voila 🙂

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

Създаване на PDF с кирилица от php като входа е html

Идеята е даден текст и таблица да бъдат съхранени в pdf . За целта използвам fpdf (http://fpdf.org/) и всичко е наред, но една част от задачата е информацията която ще се вкарва да бъде HTML т.е. пример "<table><tr><td>test</td><td>test1</td></tr></table>" Така вместо да се създава pdf файла на по- ниско ниво се използва едно допълнито апи html2pdf -> http://html2pdf.spipu.net/ . Всичко супер, но реших да ползвам cyrillic text на cp1251 енкодинг и имаше проблем. Поиграх с html2pdf,  но нищо не се получи тогава реших ръчно да си добавя кирилизирани фотнове.  Преди да се добавят трябва да бъдат създадени като се ползва една тулка: ttf2pt1 пример "ttf2pt1 -a times.ttf times" и след това да вкарвате генерирания файл "times.afm" в DIR "makefont" и вътре в makefont.php изпълнявате създаването на фонта за html2pdf или пример "MakeFont('times.ttf','times.afm','cp1251');". След това се създават "times.php и times.z" като тези фонтове ги добавяте в DIR ../font/ .  След това трябва да ги добавите ръчно и да ги използвате за поставената цел 🙂

Редактирам по- долния файл. Ръчно поставям:

Файл: html2pdf/html2pdf.class.php

Преди:

function AddFont($family, $style=", $file=")
{
$this->pdf->AddFont($family, $style, $file);
}
След:

function AddFont($family, $style=", $file=")
{
$this->pdf->AddFont($family, $style, $file);
$this->pdf->AddFont('times',",'times.php');
$this->pdf->AddFont('times','B','timesb.php');
$this->pdf->AddFont('times','I','timesi.php');
$this->pdf->AddFont('times','BI','timesbi.php');
}

Сега един html файл мога с един ред да го направя pdf и по- конкретно на енкодинг cp1251. Идеята е лесно и бързо създаване на отчети, генериране на фактури, договори и други документи.

Пример за html файл -> pdf:
<?php

echo "<table style='width:100%;'><tr><td style='width:50%'><img src='images/test/logo_tuv.png' align='left'></td><td style='width:50%'><img src='images/test/logo_nikosltd.png' align='right'></td></tr></table><div style='font-family:comic;'>Тест -1251 :)</div>";

$content = ob_get_clean();
require_once(dirname(__FILE__).'/include/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->AddFont('times',",'times.php');
$html2pdf->WriteHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output();
?>

Пример: Имаше голяма заинтересованост за пример на тази публикация и затова ето го и него: Пример

PS: Междо другото докато цъках с това fpdf забелязах, че и Joomla го ползват (просто информативно).

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

Купони за намаление в Godaddy.com

Днес получих един email от Godaddy с промоционален код или купон за намаление 10% в Godaddy. Купона е: " gdbb994" . Аз лично ползвам и един друг които ми изпратиха когато се записах в maillist-а им. Кода е "welcome10" и отново предоставя намаление от 10%.

Ето снимка :

Купони за намаление в Godaddy.com
Купони за намаление в Godaddy.com
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Очевидно Wisdom.bg са коректни

Преди време или по- точно през юли 2008 година започнах да ползвам услугите на Wisdom.bg.  Главната идея беше да се тества възможността за внедряване на системата за смс разплащан в kakvo.org. От месец Юли до месец Септември направих необходимата сумата за изплащане- 50,52 лв. и на 01.11.2008 година реших да извършва изплащане на сумата. През месец Октомври не беше възможно за изплащане понеже плащането е с един месец назад заради "предварителна сума, предстои начисляване на фрауд" и още един месец забавяне заради самото изплащане на сумата, т.е. ако започнете кампания от 1 юли до 31 август ще можете да си получите сумата в най- добрия случай през месец октомври защото докато тече месец септември се начислява фрауд за месец август и реалното плащане е през октомври. Друг важен факт е, че ако имате сума за изплащане: 50.52 лв. и сте физическо лице ще ви бъде спрян процент(~10%) т.е. реално ще получите: 42,94 лв. без данък.

Крайното мнение е, че Wisdom.bg са коректни с отчитането на броя смс-и и извършени разплащания, но за да си получите паричките трябва да имате търпение.

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

Firefox забива когато затворите вече отворен pdf файл

Случвало ли ви се е да ви забие Firfox когато отворите един pdf и после решите да го затворите.  Днес реших да опиша с няколко изречения как се решава този "проблем". Укажете pdf да се изтегли и после отвори с Acrobat вместо да ползва Acrobat in Firefox :

Меню: Tools-> Options->Applications
Навсякъде в секция "Content type" където е "Adobe Acrobat *" трябва за action да укажете "Use Adobe Acrobat 6.0/7.0.."

Ето снимка:

Настройки за отваряне на pdf
Настройки за отваряне на pdf

И Firefox вече не забива.

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