<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Вовата, s. Hamaelleon ™ &#187; функционалност</title>
	<atom:link href="http://www.vlkomarov.info/blog/tag/%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%be%d0%bd%d0%b0%d0%bb%d0%bd%d0%be%d1%81%d1%82/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vlkomarov.info/blog</link>
	<description>Почти сериозен блог на една гола цица</description>
	<pubDate>Wed, 17 Sep 2008 18:07:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>It&#8217;s Show &#124;&#124; Race &#124;&#124; MicroTime</title>
		<link>http://www.vlkomarov.info/blog/2008/08/26/its-show-race-microtime/</link>
		<comments>http://www.vlkomarov.info/blog/2008/08/26/its-show-race-microtime/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 12:19:37 +0000</pubDate>
		<dc:creator>Hamaelleon</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web development]]></category>

		<category><![CDATA[Excel]]></category>

		<category><![CDATA[export]]></category>

		<category><![CDATA[import]]></category>

		<category><![CDATA[microtime]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[race]]></category>

		<category><![CDATA[showtime]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[бъзик]]></category>

		<category><![CDATA[експорт]]></category>

		<category><![CDATA[импорт]]></category>

		<category><![CDATA[почивка]]></category>

		<category><![CDATA[състезание]]></category>

		<category><![CDATA[улеснение]]></category>

		<category><![CDATA[функционалност]]></category>

		<guid isPermaLink="false">http://www.vlkomarov.info/blog/?p=111</guid>
		<description><![CDATA[
Точно приключих с един експорт/импорт скрипт (export XLS - XML via PHP from MySQL Database / import Excel Spreadsheet as XLS - XML to MySQL DB) и съм почти доволен.. даже и работи  Остава и клиентите да го оценят. Ама като се замисли човек, ако имаме база данни с няколкостотин или хиляди продукта и [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vlkomarov.info/blog/wp-content/uploads/2008/08/php-race.jpg" alt="Газ до ламарината :)" /></p>
<p>Точно приключих с един <strong>експорт/импорт скрипт</strong> (export XLS - XML via PHP from MySQL Database / import Excel Spreadsheet as XLS - XML to MySQL DB) и съм <em>почти</em> доволен.. даже и работи <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Остава и клиентите да го оценят. Ама като се замисли човек, ако имаме база данни с няколкостотин или хиляди продукта и се наложи да обновим ценовата листа, например, сещате ли се колко време ще е нужно за да се свърши това през админ панела, продукт по продукт, за всеки по няколко различни цени. Тегаво, a? Жестока досада! А така, експортваш шаблона (настоящата ценова листа), редактираш в Excel, каквото там е нужно, записваш като XML Spreadsheet, оп, качваш през админ панела файла и след <strong>няколко секунди</strong> цялата работа е свършена! Мммм, благинка. Та сега след като помогнахме на някой си някъде там да има повече време да се задява с колежките, да се позанимаем и ние с малко глупости. It&#8217;s showtime <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Оп, microtime(), обърках се <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-111"></span></p>
<p>Да ви преставя концепцията на състезанието:</p>
<p>Имаме две кучки бегачки, и двете са резачки (split). Задачата им ще е да отрежат главата на <em>мистър Файл</em> един милион пъти и да я върнат. Борим се за всяка милипунта, щот не можем да си позволим излишен разход на ценни милисекунди <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Първият състезател:</p>
<pre class="syntax-highlight:php">
function getExtByArrayMethod ($file, $allowableExtensions) {
$split = array_reverse(explode(&#039;.&#039;, $file));
if (in_array(strtolower($split[0]), $allowableExtensions)) {
return $ext = $split[0];
}
}
</pre>
<p>Той се състезава така: първо му го нацепва на <em>мистър Файл</em> по всяка негова чувствителна точка с explode(&#8217;.', $file), после го обръща у лево с array_reverse (виждате ли какви неща има в PHP-то!!!).  След това взема първото отсечено след обръщането, смалява го (strtolower) и проверява дали пасва на това, което търси (масив $allowableExtensions с разрешени файлови съкращения). Ако пасне го изплюва сдъвкано - и така един милион пъти <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Другата кучка:</p>
<pre class="syntax-highlight:php">
function getExtByStringMethod ($file, $allowableExtensions) {
$ext = strtolower(substr($file, strrpos($file, &#039;.&#039;) + 1));
if (in_array($ext, $allowableExtensions)) {
return $ext;
}
}
</pre>
<p>Туй говедо не ползва масиви, а третира <em>мистър Файл</em> като простоват низ (string). Първо нанюхва важната последна точка в низа чрез strrpos, и с 1 идея напред, с един удар реже остатъка. Смалява го, проверява дали пасва и ако да, го изплюва - и така един милион пъти.</p>
<p>Ето го семплото циклене:</p>
<pre class="syntax-highlight:php">
for ($i = 1; $i &lt; = ITR; $i++) {
getExtByArrayMethod(FILENAME, $allowableExtensions);
}
</pre>
<p>Тук имаме константи и един масив, които ще ползваме за състезанието:</p>
<pre class="syntax-highlight:php">
$allowableExtensions = array(&#039;avi&#039;, &#039;mpg&#039;, &#039;mp4&#039;,
&#039;mov&#039;, &#039;wmv&#039;, &#039;flv&#039;, &#039;mpeg&#039;, &#039;gp3&#039;,
&#039;vob&#039;, &#039;rm&#039;, &#039;txt&#039;, &#039;psd&#039;, &#039;exe&#039;);

define(&#039;FILENAME&#039;, &#039;video4560289703.public.gp3&#039;;);
define(&#039;ITR&#039;, 1000000);
</pre>
<p>Ползваме microtime() заедно с една полезна функцийка от php.net за превръщане на резултата в нещо лесно разбираемо и.. Старт! <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Begin getExtByArrayMethod: 1219751738.47<br />
End getExtByArrayMethod: 1219751748.79<br />
Result: <span style="color: #ff0000;">10.3256812096</p>
<p>Begin getExtByStringMethod: 1219751748.79<br />
End getExtByStringMethod: 1219751755.35<br />
Result: <span style="color: #ff0000;">6.55777096748</span></p>
<p>Както виждате при един милион итерации моята кучка бие тази на колегата с близо 4 секунди или цели 4000 милипунти, представяте ли си?! <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Колегата явно хич не го е*е за разхищаване на ценно процесорно време <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Извън кръга на майтапа и чуденката, работа с масиви или със стрингове за конкретното приложение.. нещо сериозно: никога не проверявайте при upload формуляр само за MIME Type на качваните файлове. Това е лесно заобиколимо препятствие и освен, ако не сте фенове да ви го хакват изотзаде, проверявайте винаги комбинирано и за MIME Type, и <em>за разширението на файла</em>, и за големината, и т.н., и т.н. Ама пак мое ви го хакнат, спасение няма <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>&#8212;</p>
<p>Ето го <a href="http://www.vlkomarov.info/blog/wp-content/uploads/2008/08/race.php.txt" target="_blank">тестовият файл</a>, можете да пробвате..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlkomarov.info/blog/2008/08/26/its-show-race-microtime/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Бавно, но славно..</title>
		<link>http://www.vlkomarov.info/blog/2008/05/17/homeopathy_zone_with_new_face/</link>
		<comments>http://www.vlkomarov.info/blog/2008/05/17/homeopathy_zone_with_new_face/#comments</comments>
		<pubDate>Sat, 17 May 2008 07:36:48 +0000</pubDate>
		<dc:creator>Hamaelleon</dc:creator>
		
		<category><![CDATA[Web development]]></category>

		<category><![CDATA[Хомеопатия]]></category>

		<category><![CDATA[визия]]></category>

		<category><![CDATA[дизайн]]></category>

		<category><![CDATA[забележки]]></category>

		<category><![CDATA[нова]]></category>

		<category><![CDATA[новини]]></category>

		<category><![CDATA[сайт]]></category>

		<category><![CDATA[функционалност]]></category>

		<guid isPermaLink="false">http://www.vlkomarov.info/blog/?p=57</guid>
		<description><![CDATA[
Писах вече в две предишни публикации за идеята, сайтът за класическа хомеопатия и Бах есенции да се сдобие в най-скоро време с обогатена функционалност (вж., например, Бг хомеопатични форуми, края на публикацията и коментарите). Днес споделям първите стъпки.

Дизайнът е леко променен, добавени са два нови раздела - Новини и Инструменти, на които, особено на Новини, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vlkomarov.info/blog/wp-content/uploads/2008/05/homeopathy-scrsh-170508.gif" target="_blank"><img src="http://www.vlkomarov.info/blog/wp-content/uploads/2008/05/homeopathy-scrsh-170508-th.gif" alt="Скрийншот на новия облик на хомеопатичния сайт към 17.05.2008" border="0" style="border: 0px; border-color: #FFFFFF;" /></a></p>
<p>Писах вече в две предишни публикации за идеята, <a href="http://homeopathy.vlkomarov.info/" target="_blank">сайтът за класическа хомеопатия и Бах есенции</a> да се сдобие в най-скоро време с обогатена функционалност (вж., например, <a href="http://www.vlkomarov.info/blog/2008/05/10/bg-homeopathic-forums/" target="_blank">Бг хомеопатични форуми</a>, края на публикацията и коментарите). Днес споделям първите стъпки.</p>
<p><span id="more-57"></span></p>
<p>Дизайнът е леко променен, добавени са два нови раздела - Новини и Инструменти, на които, особено на Новини, ще наблегна доста в началото. Другите раздели са същите. Дизайнът за момента е едва на трето място, след съдържанието за момента на второ и функционалноста - на първо (после ще си менкат местата). Избрал съм същата опростена схема, хедър, хоризонтално меню, навигация, основно съдържание вляво, представено като отделни блокове и помощно-рекламен сайдбар вдясно - място на първо време за тематична картинка, RSS абонамент, връзки, Google AdSense рекламно каре и - ако се появят в някой хубав ден рекламодатели - защо не и за други реклами: преводните материали струват пари..</p>
<p>Стана дума, че за да работи системата с sms плащанията на различните услуги, които сайтът ще предлага ще трябва да се реализира система за регистрация на нови потребители и система за контрол на достъпа за вече регистрираните. По тази причина макар и на външен вид новият сайт да не се различава значимо от предишния (т.е актуалната 3 версия), той е пренаписан от нулата наново.</p>
<p>Идеята е за сайт, който е със семпъл и лек дизайн, с добра функционалност и качествено, богато съдържание в бъдеще - един мини бг хомеопатичен портал (пу, пу, пу, да ми се не види и амбициозността), с добра посещаемост и винаги актуален <img src='http://www.vlkomarov.info/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Контролът на достъпа вече е реализиран на базово ниво, както виждате от скрийншота по-горе, по обичайния начин - потребител и парола. При браузване из сайта логнатият потребител има на разположение - между менюто и навигацията (всичко това е дублирано във футъра на сайта) - един &#8220;юзърбар&#8221;: оттам ще има достъп до редакция на профила си, до своята персонална <em>my</em>Homeopathy страничка (това е ново и много си се кефя на идеята - надявам се и на вас да ви хареса, когато е готово) - там ще са, например, събрани заедно всички статии и услуги, за които сте платили, за да не се налага всеки път да ги ровите отново.. линкове към приятелски профили, изпращане и получаване на съобщения и т.н. Следват - към момента - Екип: анкети, предложения, критика, bugs report и т.н., Помощ - за технически проблеми със сайта и, разбира се - Изход.</p>
<p>Това е, което предстои, но първо е на дневен ред формулярът за регистрация, валидирането, потвърждаване на регистрацията през email, забравена парола на email, и такива неща, сещате се, обичайните неща..</p>
<p>&#8212;</p>
<p>Просто ми къса нервите тая разлика между отделните браузъри: този път единствената таблица е тази на менюто, всичко друго е <em>div</em>, <em>p</em> и <em>span</em>, с много, много <em>CSS</em>. Малко ми е терсене този преход и ми липсват ползваните с години дребни неща като <em>br /</em> и твърдия интервал <em>&#038; nbsp ;</em>, но ще се изуча, де ще ида.. след критиката дето ми я дръпнаха в <a href="http://forums.bgdev.org/" target="_blank">BgDev</a> преди известно време :))</p>
<p>Дразни ме също, че неща, които ги има при един браузър липсват при друг и обратно, или че са по различен начин. Във Mozilla Firefox има елементарни и готини нещица като <em>class:hover</em> и <em>class:focus</em>, докато в MS IE 7 има само hover, а в MS IE 6 - нито едно от двете и hover-a за менюто май ще трябва да си го реализирам по стария начин с <em>onmouseover</em> и <em>onmouseout</em> handle events.</p>
<p>Пък за CSS-а, леле мале, аха си го направил изчистено и точно до пиксела за Лисицата, например - както е в момента, поглеждаш го в IE 7 и почваш да се почесваш, въздишаш и мрънкаш. Поглеждаш го в IE 6 и си вече яко суисайдъл настроен. За Opera 8 и 9 не съм забелязал засега проблеми. В Opera 7 - бляк. Netscape е аут, а и той е Мозила де факто. За Mac и Linux - ще трябва да гледам май май Safari и Konqueror. (Забележки? Пропуснах ли нещо?)</p>
<p>P.S. Точно по темата за стандартите, разликите и Internet Explorer: във <a href="http://fipolab.com/2008/05/17/time-breakdown-of-modern-web-design/" target="_blank">FipoLab, готина диаграма</a>..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vlkomarov.info/blog/2008/05/17/homeopathy_zone_with_new_face/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
