<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>CTAPbIu_MABP's BLOG</title><link>http://mabp.kiev.ua</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CTAPbIu_MABP" /><description>энтузиазм = 1/опыт © Старый Мавр</description><language>en</language><lastBuildDate>Sat, 12 May 2012 00:40:54 PDT</lastBuildDate><generator>http://wordpress.org/?v=3.2</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CTAPbIu_MABP" /><feedburner:info uri="ctapbiu_mabp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>49.836924</geo:lat><geo:long>24.012342</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>CTAPbIu_MABP</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/CTAPbIu_MABP" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCTAPbIu_MABP" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>Карусель</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/6ti4ZWZzeQE/</link><category>CSS</category><category>HTML</category><category>JavaScript</category><category>Программирование</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Fri, 11 May 2012 23:16:04 PDT</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1395</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Сегодня немного про карусельки, поскольку в последние время я сделал две на одной разметке и крайне доволен решением, я поделюсь им с вами.</p>
<span id="more-1395"></span>
<p>Сначала об общих моментах, разметка по большей части на ваше усмотрение, а я использовал такую, как по мне достаточно семантично и главное ничего лишнего. Внутрь li-шек помещается контент который надо каруселить, например картинки.</p>

<pre><code class="html">
&lt;div id="slider" class="c"&gt;
	&lt;a class="ib arrow left" href="#"&gt;&lt;/a&gt;
	&lt;ul class="ib"&gt;
		&lt;li&gt;&lt;/li&gt;
		&lt;li&gt;&lt;/li&gt;
		&lt;li&gt;&lt;/li&gt;
		&lt;li&gt;&lt;/li&gt;
		&lt;li&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;a class="ib arrow right" href="#"&gt;&lt;/a&gt;
&lt;/div&gt;
</code></pre>

<p>CSS на самом деле еще больше на ваше усмотрение, главные моменты тут такие</p>

<pre><code class="css">
li { display:none; } /* все слайды скрыты*/
.c {} /*просто контейнер*/
.ib { display:inline-block; } /*можно еще хаки для ie*/
.arrow { background:url("") no-repeat; } /*картинка со стрелочками*/
.arrow.left { background-position: 0 0; } /*ну вы поняли*/
.arrow.right { background-position: 0 0; }
.active { display:inline-block; } /*текущий элемент карусели*/
</code></pre>

<p>А вот и сладенькое, первый скрипт показывает только одну li-шку за раз и при достижении крайней точки начинает с противоположного конца</p>

<pre><code class="javascript">
$(".arrow", "#slider").click(function(){

	var self = $(this),
		direction = self.is(".left") ? -1 : 1,
		collection = self.parent().find("li"),
		index = collection.filter(".active").removeClass("active").index(),
		next = (collection.length + index + direction) % collection.length;
		
	collection.eq(next).addClass("active");

	return false;

}).eq(1).trigger("click");
</code></pre>

<p>А второй показывает количество определенное в переменной number и при достижении крайней точки останавливаеться.</p>

<pre><code class="javascript">
$(".arrow", "#slider").click(function(){
	
	var self = $(this),
		direction = self.is(".left") ? -1 : 1,
		collection = self.parent().find("li"),
		index = collection.filter(".active:first").index(),
		number = 5;
		
	index = Math.max(0, Math.min(index + direction, collection.length - number));
				
	collection.removeClass("active").filter(function(){
		var self = $(this);
		return self.index() &gt;= index &#038;& self.index() &lt; index + number;
	}).addClass("active");
	
	return false;

}).eq(1).trigger("click");
</code></pre>

<p>Зачему еще что обе карусели сами инициализируються, тоесть зарание выставлять класс active не надо.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6ti4ZWZzeQE:2vABC_LnsN0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6ti4ZWZzeQE:2vABC_LnsN0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6ti4ZWZzeQE:2vABC_LnsN0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=6ti4ZWZzeQE:2vABC_LnsN0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6ti4ZWZzeQE:2vABC_LnsN0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=6ti4ZWZzeQE:2vABC_LnsN0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6ti4ZWZzeQE:2vABC_LnsN0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/6ti4ZWZzeQE" height="1" width="1"/>]]></content:encoded><description>Сегодня немного про карусельки, поскольку в последние время я сделал две на одной разметке и крайне доволен решением, я поделюсь им с вами. Сначала об общих моментах, разметка по большей части на ваше усмотрение, а я использовал такую, как по мне достаточно семантично и главное ничего лишнего. Внутрь li-шек помещается контент который надо каруселить, например [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2012/05/12/carousel/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2012/05/12/carousel/</feedburner:origLink></item><item><title>GD2: два в одном</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/a-4jE5Htp2s/</link><category>PHP</category><category>Программирование</category><category>pic</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Wed, 29 Feb 2012 01:04:06 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1394</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Благодарю вас за то что не сбрасываете меня со счетов и не удаляете из ридера. Потому что я пишу когда у меня есть интересные задачи и вот сегодня я немного попишу про библиотеку GD2 и работу с ней средствами <a href="http://mabp.kiev.ua/category/programming/php/">PHP</a></p>
<span id="more-1394"></span>
<p>Задачка сегодня звучит так: надо загрузить на сайт два изображения (произвольного размера, разумеется) каждое изображение уменьшить до определенного размера с учетом пропорций и положить на один холст (с соотношением размеров 2:1 к размеру картинки) так чтобы обе картинки были в центре. В общем я не большой мастер объяснять на пальцах поэтому нарисовал вот такой эскиз.</p>

<div style="text-align:center;"><img src="/content/img/gd2.png" alt="gd2"/></div>

<p>Сначала я попробовал рещить эту задачу при помощи встроенной в CI (поскольку именно на CI я пишу в силу незнания других фреймворков) библиотеки которая умеет работать и с GD2 и с ImageMagic и с NetPBM. К сожалению библиотека оказалась очень громоздкой (в плане конфигурации) и не очень гибкой в плане функционала, поэтому написал три больших конфига и попытавшись отладить полученное я получил головняк на пару часов с виндовыми путями на локальной машине. Библиотека никак не хотела принимать абсолютные пути типа C:/localhost/path/to/file.jpg и относительные типа implode(DIRECTORY_SEPARATOR, array("path","to","file.jpg")) , в общем я сделал то чему меня учили в школе - положил на нее, и написал все на чистом <a href="http://mabp.kiev.ua/category/programming/php/">PHP</a></p>

<p>Я не буду описывать как работает CI единственно что надо знать это что я перебираю массив $_FILES и преобразовываю его в массив фалов где каждый файл это элемент массива. итак внимание на экран, коменты по коду.</p>

<pre><code class="php">
// это преобразование массива $_FILES в нечто человеко-удобное
$files = $this->getFileData('files');

// юник для базы и размер уменьшенной (квадратной) картинки
$uniqid = uniqid(); //md5(now());
$size = 450;

// проверяю наличие, тип файла и размер
$status = array();
$types = array("first","second");
foreach($types as $type){
	if (!$files[$type]['tmp_name']){
		$status[$type] = "а как же картинкa?";
	} elseif (!in_array($files[$type]['type'], array('image/gif','image/jpeg','image/png'))){
		$status[$type] = "это разве картинка?";
	} elseif ($files[$type]['size'] > 1048576){
		$status[$type] = "размер картинки больше 1M";
	}
}

// если ошибки - выходим
if ($status){
	echo json_encode($status);
	exit;
}

// создаю холст на котором будет все это потом лежать и делаю его прозрачным
$sample = imagecreatetruecolor(2*$size, $size);
imagesavealpha($sample, true);
$transparent = imagecolorallocatealpha($sample, 0, 0, 0, 127);
imagefill($sample, 0, 0, $transparent);

// для каждой картинки
foreach($types as $type){
	// переименовываю и переношу во временную папку
	$files[$type]['new_name'] = TEMP_DIR.'/'.$type.$uniqid.".".end(explode('/', $files[$type]['type']));
	move_uploaded_file($files[$type]['tmp_name'], $files[$type]['new_name']);
	
	// узнаю реальные размеры и высчитываю какими они должны быть
	$image[$type] = array();
	list($image[$type]['width'], $image[$type]['height']) = getimagesize($files[$type]['new_name']);
	$dim = $image[$type]['width'] > $image[$type]['height'] ? 'width' : 'height';
	if($image[$type][$dim] < $size){
		$image[$type]['new_width'] = $image[$type]['width'];
		$image[$type]['new_height'] = $image[$type]['height'];
	} else {
		$image[$type]['ratio'] = $size / $image[$type][$dim] * 100;
		$image[$type]['new_width'] = $image[$type]['width'] * $image[$type]['ratio'] / 100;
		$image[$type]['new_height'] = $image[$type]['height'] * $image[$type]['ratio'] / 100;
	}
	
	// получаю саму картинку
	switch ($files[$type]['type']){
		case 'image/gif':
			$image[$type]['source'] = imagecreatefromgif($files[$type]['new_name']);
			break;
		case 'image/jpeg':
			$image[$type]['source'] = imagecreatefromjpeg($files[$type]['new_name']);
			break;
		case 'image/png':
			$image[$type]['source'] = imagecreatefrompng($files[$type]['new_name']);
			break;
	}
	
	// а теперь собственно магия - я рисую картинку на холсте 
	imagecopyresampled(
		$sample,
		$image[$type]['source'],
		$type=='first'?$size-$image[$type]['new_width']:$size,
		($size-$image[$type]['new_height'])/2,
		0,
		0,
		$image[$type]['new_width'],
		$image[$type]['new_height'],
		$image[$type]['width'],
		$image[$type]['height']
	);
	
	// удаляю ненужное
	unlink($files[$type]['new_name']);
}

// и на последок сохраняю холст
imagepng($sample, implode(DIRECTORY_SEPARATOR, array('path','to',$uniqid.'.png')), 0);
imagedestroy($sample);
</code></pre>

<p>Конечно реальный код выглядит не так, там реальные пути и названия, что-то вынесено в отдельные методы, где-то юник сохраняется в базу, но общий смысл он сохранил. Приятного пользования.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=a-4jE5Htp2s:Kn7NxhURJrE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=a-4jE5Htp2s:Kn7NxhURJrE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=a-4jE5Htp2s:Kn7NxhURJrE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=a-4jE5Htp2s:Kn7NxhURJrE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=a-4jE5Htp2s:Kn7NxhURJrE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=a-4jE5Htp2s:Kn7NxhURJrE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=a-4jE5Htp2s:Kn7NxhURJrE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/a-4jE5Htp2s" height="1" width="1"/>]]></content:encoded><description>Благодарю вас за то что не сбрасываете меня со счетов и не удаляете из ридера. Потому что я пишу когда у меня есть интересные задачи и вот сегодня я немного попишу про библиотеку GD2 и работу с ней средствами PHP Задачка сегодня звучит так: надо загрузить на сайт два изображения (произвольного размера, разумеется) каждое изображение [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2012/02/29/gd2-two-in-one/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">10</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2012/02/29/gd2-two-in-one/</feedburner:origLink></item><item><title>О $.ajax.context</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/8_VmBrHaark/</link><category>JavaScript</category><category>Программирование</category><category>ajax</category><category>jquery</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Thu, 26 Jan 2012 02:32:54 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1390</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Вроде удобно сделали, теперь можно задать контекст для метода success, теперь вместо </p>
<span id="more-1390"></span>
<pre><code class="javascript">
$.ajax({
	url: "...",
	success: function(){
		$("#myTemplate").tmpl(data).appendTo($("#myContainer").empty());
	}
});
</code></pre>

<p>можно удобно писать</p>

<pre><code class="javascript">
$.ajax({
	url: "...",
	context: $("#myContainer").empty(),
	success: function(){
		$("#myTemplate").tmpl(data).appendTo(this);
	}
});
</code></pre>

<p>только это все разбивается о рифы реальности, когда аджакс надо повесить на кнопку</p>
<pre><code class="javascript">
$("#myButton").click(function(){
	$.ajax({
		url: "...",
		context: $("#myContainer").empty(),
		success: function(){
			$("#myTemplate").tmpl(data).appendTo(this);
		}
	});
});
</code></pre> 

<p>При трех быстрых кликах, контейнер три раза обнуляется, потом идет запрос/ответ и шаблон три раза вставляется в контейнер.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=8_VmBrHaark:GsYDOepoX80:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=8_VmBrHaark:GsYDOepoX80:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=8_VmBrHaark:GsYDOepoX80:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=8_VmBrHaark:GsYDOepoX80:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=8_VmBrHaark:GsYDOepoX80:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=8_VmBrHaark:GsYDOepoX80:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=8_VmBrHaark:GsYDOepoX80:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/8_VmBrHaark" height="1" width="1"/>]]></content:encoded><description>Вроде удобно сделали, теперь можно задать контекст для метода success, теперь вместо $.ajax({ url: "...", success: function(){ $("#myTemplate").tmpl(data).appendTo($("#myContainer").empty()); } }); можно удобно писать $.ajax({ url: "...", context: $("#myContainer").empty(), success: function(){ $("#myTemplate").tmpl(data).appendTo(this); } }); только это все разбивается о рифы реальности, когда аджакс надо повесить на кнопку $("#myButton").click(function(){ $.ajax({ url: "...", context: $("#myContainer").empty(), success: function(){ $("#myTemplate").tmpl(data).appendTo(this); [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2012/01/26/about-jquery-ajax-context/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2012/01/26/about-jquery-ajax-context/</feedburner:origLink></item><item><title>A4Tech X-705</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/9KahYz5wWt4/</link><category>Программирование</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Tue, 24 Jan 2012 02:09:59 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1388</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>В добавок к клаве <a href="http://mabp.kiev.ua/2010/10/18/a4tech-x7/">A4Tech X7-G700</a> купил себе мышку, надо было раньше это сделать, она охуенна.</p>
<span id="more-1388"></span>
<div style="text-align:center;"><img src="http://mabp.kiev.ua/content/img/items/a4tech.X-705.jpg" alt="a-tech-x7"/></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=9KahYz5wWt4:g2OnV5kfX9E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=9KahYz5wWt4:g2OnV5kfX9E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=9KahYz5wWt4:g2OnV5kfX9E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=9KahYz5wWt4:g2OnV5kfX9E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=9KahYz5wWt4:g2OnV5kfX9E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=9KahYz5wWt4:g2OnV5kfX9E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=9KahYz5wWt4:g2OnV5kfX9E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/9KahYz5wWt4" height="1" width="1"/>]]></content:encoded><description>В добавок к клаве A4Tech X7-G700 купил себе мышку, надо было раньше это сделать, она охуенна.</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2012/01/24/a4tech-x-705/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2012/01/24/a4tech-x-705/</feedburner:origLink></item><item><title>Как закрыть диалог</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/JfFiVvECdLc/</link><category>JavaScript</category><category>Программирование</category><category>jquery</category><category>jqueryUI</category><category>Modal Dialog</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Mon, 16 Jan 2012 15:50:41 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1386</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Представьте что у вас на странице есть 5 разных диалогов, они могут быть открыты в любой последовательности но два сразу открытыми быть не могут. Значит надо закрывать все открытые, но как их ывыбрать, не хранить же 5 ссылок на диалоги.</p>
<span id="more-1386"></span>
<p>Первый пришедший в голову вариант был прост как двери</p>

<pre><code class="javascript">
$("#dialog1","#dialog2","#dialog3","#dialog4","#dialog5").dialog("close");
</code></pre>

<p>но если хотя бы один диалог не был создан при старте страницы то вылетит Exception. Естественно создавать диалоги при старте бессмысленно. ни один может не понадобиться а ресурсов они отъедают нормально. Второй вариант был таким</p>

<pre><code class="javascript">
for (var i=1,j=5;i&lt;j;i++){
	try{
		$("#dialog"+i).dialog("close");
	}catch(e){
		// do nothing
	}
}
</code></pre>

<p>и несколько дней эта конструкция муляла мне глаза. Наконец я переписал это примерно так</p>

<pre><code class="javascript">
for (var i=1,j=5,d;i&lt;j;i++){
	d = $("#dialog"+i);
	if(d.data("dialog")){
		d.dialog("close");
	}
}
</code></pre>

<p>стало лучше но еще не совершенно, последним вариантом стало</p>

<pre><code class="javascript">
$("div:data(dialog)").dialog("close");
</code></pre>

<p>теперь я доволен, а какие еще есть варианты?</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=JfFiVvECdLc:pLiPjZiC3ZY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=JfFiVvECdLc:pLiPjZiC3ZY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=JfFiVvECdLc:pLiPjZiC3ZY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=JfFiVvECdLc:pLiPjZiC3ZY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=JfFiVvECdLc:pLiPjZiC3ZY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=JfFiVvECdLc:pLiPjZiC3ZY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=JfFiVvECdLc:pLiPjZiC3ZY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/JfFiVvECdLc" height="1" width="1"/>]]></content:encoded><description>Представьте что у вас на странице есть 5 разных диалогов, они могут быть открыты в любой последовательности но два сразу открытыми быть не могут. Значит надо закрывать все открытые, но как их ывыбрать, не хранить же 5 ссылок на диалоги. Первый пришедший в голову вариант был прост как двери $("#dialog1","#dialog2","#dialog3","#dialog4","#dialog5").dialog("close"); но если хотя бы один [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2012/01/17/how-to-close-dialog/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">8</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2012/01/17/how-to-close-dialog/</feedburner:origLink></item><item><title>@font-face</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/m8YZxDG6H3o/</link><category>CSS</category><category>Программирование</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Sat, 12 Nov 2011 05:07:28 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1384</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Я сначала подумал ради прикола оформить эту статью при помощи <font face="comic sans MS" color="violet">comic sans MS</font>, но потом решил вас пожалеть...</p>
<span id="more-1384"></span>
<p>Но шутки комикам, а я сегодня буду писать о шрифтах, а точнее об их подключении на страницу. Для начала возьмем какой-нибудь бесплатный шрифт, например Marke Eigenbau. Это реальный восьмипиксельный шрифт, не смотря на название, и дальше я буду использовать его как пример.</p>

<p>Еще забыл оговориться, эта статья не касается 
<a href="http://wiki.novemberborn.net/sifr/">sIFR</a>, 
<a href="http://cufon.shoqolate.com/generate/">typeFace</a> и 
<a href="http://typeface.neocracy.org/">cufon</a>. Так что по ссылочкам сами походите, а я пока расскажу про нативный @font-face.</p>

<p>Теория простая - пишем в CSS правило:</p>
<pre><code class="css">
@font-face {
	font-family: 'MarkeEigenbau';
	src: url('../fonts/MarkeEigenbau/MarkeEigenbau.ttf') format('truetype');
}
</code></pre>

<p>Все бы хорошо, но у нас есть целый зоопарк браузеров, форматов и лицензий поэтому все-всех, а страдаем мы. После консультации у Гугла выясняется, что достаточно все 4 формата чтобы все были довольны ttf, eot, woff, svg. Правим CSS, но не забываем что сотрудники компании MS каждый день усердно работают над тем чтобы нам было тяжелее работать.</p>

<pre><code class="css">
@font-face {
	font-family: 'MarkeEigenbau';
	src: url('MarkeEigenbau.eot?#iefix') format('embedded-opentype'),
		url('MarkeEigenbau.woff') format('woff'),
		url('MarkeEigenbau.ttf') format('truetype'),
		url('MarkeEigenbau.svg#MarkeEigenbau') format('svg');
}
</code></pre>

<p>Для пытливых: Похоже IE разбирает параметр src регуляркой c включенным квантификатором жадности и этот # обрывает паттерн.</p>

<p>Ой забыл что у нас нет всех этих файлов, тогда их можно нагенерить например <a href="http://www.fontsquirrel.com">белкой</a> или <a href="http://onlinefontconverter.com/">фонт конвертером</a>, но белка мне больше нравиться, потому что она еще и генерит CSS.</p>

<p>Для пытливых: Раньше белка вставляла в хеш после svg какую-то ересь типа webfontiGyDMQZD, но сейчас её попустило и она правильно вставляет туда имя шрифта.</p>

<p>Итак, на руках 4 файла и куча радости, но мы ж хотим не просто шрифт, а хотим жир, курсив, и жирный курсив, и чтоб удобно! Для начала скачиваем все это хозяйство и конвертим. Если вы используете белку то на выходе у вас 16 файлов шрифта и 16 правил для @font-face</p>

<pre><code class="css">
@font-face {
	font-family: 'MarkeEigenbauBold';
	src: url('MarkeEigenbauBold.eot?#iefix') format('embedded-opentype'),
		url('MarkeEigenbauBold.woff') format('woff'),
		url('MarkeEigenbauBold.ttf') format('truetype'),
		url('MarkeEigenbauBold.svg#MarkeEigenbauBold') format('svg');
	font-weight: normal;
	font-style: normal;
}
</code></pre>


<p>Я считаю это перебор, тем более не удобно каждый раз как нужен курсив использовать конструкцию с полным перечислением шрифтов.</p>

<pre><code class="css">
.markerEigenbauBold {
	font-family: 'MarkeEigenbauItalic' /*, [fallback]*/, sans-serif;
	font-style: italic;
}
</code></pre>

<p>и все только потому что так нагенерила белка, поэтому правим</p>

<pre><code class="css">
@font-face {
	font-family: 'MarkeEigenbau';
	src: url('MarkeEigenbauBoldItalic.eot?#iefix') format('embedded-opentype'),
		url('MarkeEigenbauBoldItalic.woff') format('woff'),
		url('MarkeEigenbauBoldItalic.ttf') format('truetype'),
		url('MarkeEigenbauBoldItalic.svg#MarkeEigenbauBoldItalic') format('svg');
	font-weight: bold;
	font-style: italic;
}
</code></pre>

<p>Дышать явно стало проще потому что правил осталось 4 и они теперь не напрягают. Но что делать если вы вдруг захотели осчастливить пользователей Mac шрифтом Calibri, вам ведь не надо заставлять пользователей седьмой винды и висты качать его, поэтому добавляем еще локальное имя шрифта.</p>

<pre><code class="css">
@font-face {
	font-family: 'Calibri';
	src: local('Calibri Bold Italic'),
		url('CalibriBoldItalic.eot#iefix') format('embedded-opentype'),
		url('CalibriBoldItalic.woff') format('woff'),
		url('CalibriBoldItalic.ttf') format('truetype'),
		url('CalibriBoldItalic.svg#CalibriBoldItalic') format('svg');
	font-weight: bold;
	font-style: italic;
}
</code></pre>

<p>Ну вот почти все, осталась маленькая деталь, а что если ваш сайт надежно защищен SSL, вы думаете это будет работать? Правильно, надо еще пошаманить с .htaccess, который достаточно положить в директорю со шрифтами.</p>

<pre><code class="no-highlight">
&lt;IfModule mod_headers.c&gt;
	Header set Access-Control-Allow-Origin "*"
&lt;/IfModule&gt;
</code></pre>

<p>А раз полезли в .htaccess то добавляем правильные mine-type</p>

<pre><code class="no-highlight">
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-woff .woff
AddType image/svg+xml .svg
AddType application/octet-stream .afm
</code></pre>

<p>Вот вроде и все... А вывод такой: используйте Helvetica, не бодрите мозги :)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=m8YZxDG6H3o:ZwdFMhR06xg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=m8YZxDG6H3o:ZwdFMhR06xg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=m8YZxDG6H3o:ZwdFMhR06xg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=m8YZxDG6H3o:ZwdFMhR06xg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=m8YZxDG6H3o:ZwdFMhR06xg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=m8YZxDG6H3o:ZwdFMhR06xg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=m8YZxDG6H3o:ZwdFMhR06xg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/m8YZxDG6H3o" height="1" width="1"/>]]></content:encoded><description>Я сначала подумал ради прикола оформить эту статью при помощи comic sans MS, но потом решил вас пожалеть... Но шутки комикам, а я сегодня буду писать о шрифтах, а точнее об их подключении на страницу. Для начала возьмем какой-нибудь бесплатный шрифт, например Marke Eigenbau. Это реальный восьмипиксельный шрифт, не смотря на название, и дальше я [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2011/11/12/font-face/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2011/11/12/font-face/</feedburner:origLink></item><item><title>jQuery UI: Tabs below content</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/45zF4h9YgSE/</link><category>CSS</category><category>JavaScript</category><category>Программирование</category><category>jquery</category><category>jqueryUI</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Thu, 10 Nov 2011 02:25:05 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1382</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Похоже открывается очередной сезон этого блога. И вот я вчера приготовил статью про табики, я всего лишь хотел сделать их снизу, и выложить пример даже без объяснения, но все серьезно затянулось и сейчас вам предстоит прочитать достаточно много текста.</p>

<span id="more-1382"></span>

<p>Как обычно примера из <a href="http://jqueryui.com/demos/tabs/#bottom" rel="nofollow external">официального мануала</a> мне не достаточно поэтому начал хачить. Собственно то что мне надо было находиться в низу страницы, а как я его делал я расскажу сейчас.</p>

<p>Основная идея примера из мануала: чтобы на одной и той же разметке можно было сделать табики и сверху и снизу. Это очень хорошая идея но мне явно не подходила. Вкратце табики выглядят так: общий контейнер, в нем сверху UL с закладками, снизу - DIV с контентом. Это верно как для разметки так и для отображения. Для табиков снизу разметка та же, но табики имеют position:absolute и bottom:0 . Казалось бы все должно работать, НО есть одно НО, и это не IE! Это как не странно WebKit. Все размерности в JQuery UI указаны в EM, что бы все одинаково хорошо смотрелось с любым размером текста, так вот при переходе из EM (да в общем и из остальных относительных величин) в PX, WebKit  округляет числа в большую сторону, тогда как все остальные в меньшую, или подгоняют. Об этом еще <a href="http://ejohn.org/blog/sub-pixel-problems-in-css/" rel="nofollow external">Resig</a> писал в далеком 2008 году. При таком подходе прижатые к низу табики налазят на текст на 1-2PX. Это совершенно не волнует пример в мануале, потому что текст там не имеет бордера и заранее короче на несколько пикселей, так что между ним и прижатыми табами есть зазор. Ради красоты пришлось пожертвовать первоначальной разметкой, перенеся табики под текст. Хотя по моему вообще это не принципиально, потому что я сделал это скриптом, да и вернуть их тоже не проблема.</p>

<p>Вторая проблема это !important. <a href="http://teambook.ru/approaches/the-ezhupa" rel="nofollow external">ежупанятна</a> что универсальность в таком большом CSS framework требует перекрывать что-то, что было написано позже, тем что было написано раньше. Тут кроется проблема всего framework. Я свято уверен что классы типа ui-state-[default|hover|active] не должны определять толщину и тип бордера, а только цвет, потому что потом надо городить огороды. В своем маленьком примере я это поправил. </p>

<p>Ну и последние, надо открывать таб по урлу. Как бы самое обычное дело, но предусмотрено в документации только через куки, а если руками указывать то надо знать индекс таба а не скажем его ID. С этой маленькой гадкой проблемой я тоже очень элегантно справился двумя строками кода.</p>


<link rel="stylesheet" type="text/css" media="screen" href="/content/css/jquery-ui-tabs-below-content.css"/>
<script type="text/javascript" src="/content/js/jquery-ui-tabs-below-content.js"></script>

<div id="tabs" class="tabs-bottom">
	<ul>
		<li><a href = "#tabs-1">1</a></li>
		<li><a href = "#tabs-2">2</a></li>
		<li><a href = "#tabs-3">3</a></li>
		<li><a href = "#tabs-4">4</a></li>
		<li><a href = "#tabs-5">5</a></li>
	</ul>
	<div id="tabs-1">
		<h1>1</h1>
	</div>
	<div id="tabs-2">
		<h1>2</h1>
	</div>
	<div id="tabs-3">
		<h1>3</h1>
	</div>
	<div id="tabs-4">
		<h1>4</h1>
	</div>
	<div id="tabs-5">
		<h1>5</h1>
	</div>
</div>

<p>KISS</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=45zF4h9YgSE:3KkSFz30pkQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=45zF4h9YgSE:3KkSFz30pkQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=45zF4h9YgSE:3KkSFz30pkQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=45zF4h9YgSE:3KkSFz30pkQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=45zF4h9YgSE:3KkSFz30pkQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=45zF4h9YgSE:3KkSFz30pkQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=45zF4h9YgSE:3KkSFz30pkQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/45zF4h9YgSE" height="1" width="1"/>]]></content:encoded><description>Похоже открывается очередной сезон этого блога. И вот я вчера приготовил статью про табики, я всего лишь хотел сделать их снизу, и выложить пример даже без объяснения, но все серьезно затянулось и сейчас вам предстоит прочитать достаточно много текста. Как обычно примера из официального мануала мне не достаточно поэтому начал хачить. Собственно то что мне [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2011/11/10/jquery-ui-tabs-below-content/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">7</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2011/11/10/jquery-ui-tabs-below-content/</feedburner:origLink></item><item><title>jQuery 1.7</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/88_R53gCFUg/</link><category>Новости</category><category>Разное</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Sun, 06 Nov 2011 05:50:21 PST</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1380</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<blockquote>
- Ну что, Данила Мастер, выходит каменной цвяточек?
- ВыыыыходитЪ...
</blockquote>
<span id="more-1380"></span>
<p>Так вот новая jquerу 1.7 вышла, все ликуют и засыроют интернет обзорами, я похоже не исключение. А теперь взглянем что же все-таки изменилось:</p>

<p>Вот, например, придумали новые методы on/off. Нахрена? И теперь в одном коде будет каша из on/delegate/bind/live/[shotcut] и все это вперемешку с 90x-style-code, как это, например, сейчас у неких <a href="http://mabp.kiev.ua/2011/02/12/semanticforce/">кидал из SemanticForce</a>, и я вам точно скажу они не одни такие, просто вам повезло.</p>

<p>Придумали методы done/fail, для совместимости с <a href="http://api.jquery.com/category/deferred-object/">deferred</a>. Ждем кучу криков по поводу того что "everything doesnt work" после релиза 1.8 и размножение каши (из прошлого абзаца) в геометрической прогрессии после того как в 1.8.1 вернут success/error для обратной совместимости.</p>

<p>Как обычно очень радует забота о IE6, фиксим баги, улучшаем совместимость, заботимся о html5. Даже добавляем <a href="http://code.google.com/p/html5shiv/">html5shil-els</a>, а на <a href="https://github.com/aFarkas/iepp/">IEPP</a> кладем болт. Конечно ведь где вы видели идиотов, которые буду печатать на бумаге мегадинамические страницы с jquery. Вообще если убрать пачку ифов для Feature Detection то jquery потеряет половину в весе...</p>

<p>Кстати о Browser detection, его отменили еще хрен знает когда а deprecated $.browser все еще живет... так что надежды на то что уберут success/error - нет.</p>

<p>Короче, порадовало только то, что поправили чекбоксы и анимацию. Наверное еще кого-то порадовала саморегистрация jquery как модуля, но мне пофиг. В общем продолжаем ждать релиза jquery UI 2.0 и предвкушаем удобные кастомные элементы форм, а пока не густо...</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=88_R53gCFUg:RLwDg22UwQ8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=88_R53gCFUg:RLwDg22UwQ8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=88_R53gCFUg:RLwDg22UwQ8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=88_R53gCFUg:RLwDg22UwQ8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=88_R53gCFUg:RLwDg22UwQ8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=88_R53gCFUg:RLwDg22UwQ8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=88_R53gCFUg:RLwDg22UwQ8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/88_R53gCFUg" height="1" width="1"/>]]></content:encoded><description>- Ну что, Данила Мастер, выходит каменной цвяточек? - ВыыыыходитЪ... Так вот новая jquerу 1.7 вышла, все ликуют и засыроют интернет обзорами, я похоже не исключение. А теперь взглянем что же все-таки изменилось: Вот, например, придумали новые методы on/off. Нахрена? И теперь в одном коде будет каша из on/delegate/bind/live/[shotcut] и все это вперемешку с 90x-style-code, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2011/11/06/jquery-1-7/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2011/11/06/jquery-1-7/</feedburner:origLink></item><item><title>Обновился</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/6OwdPF_k6bE/</link><category>Новости</category><category>Разное</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Tue, 05 Jul 2011 03:39:24 PDT</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1378</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Обновил вордпресс сегодня до 3,2, заодно обновил до <a href="http://mabp.kiev.ua/tag/jquery/">jquery 1.6.2</a> , <a href="http://mabp.kiev.ua/2009/12/10/ui-layout/">jquery ui 1.8.14</a> , <a href="http://mabp.kiev.ua/2009/12/10/ui-layout/">jquery layout 1.3.0.rc29.15</a> , пиздец как можно так затягивать релиз. </p>

<span id="more-1378"></span>

<p>В вордпрессе есть одна очень плохая особенность это форматирование текста, а точнее функция wpautop которую я безжалостно выпиливаю при каждом обновлении, и из-за чего так редко обновляюсь.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6OwdPF_k6bE:B9ueQR2loGA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6OwdPF_k6bE:B9ueQR2loGA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6OwdPF_k6bE:B9ueQR2loGA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=6OwdPF_k6bE:B9ueQR2loGA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6OwdPF_k6bE:B9ueQR2loGA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=6OwdPF_k6bE:B9ueQR2loGA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=6OwdPF_k6bE:B9ueQR2loGA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/6OwdPF_k6bE" height="1" width="1"/>]]></content:encoded><description>Обновил вордпресс сегодня до 3,2, заодно обновил до jquery 1.6.2 , jquery ui 1.8.14 , jquery layout 1.3.0.rc29.15 , пиздец как можно так затягивать релиз. В вордпрессе есть одна очень плохая особенность это форматирование текста, а точнее функция wpautop которую я безжалостно выпиливаю при каждом обновлении, и из-за чего так редко обновляюсь.</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2011/07/05/wp-update/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2011/07/05/wp-update/</feedburner:origLink></item><item><title>Batumi-Petra</title><link>http://feedproxy.google.com/~r/CTAPbIu_MABP/~3/nkdzG0wMU6w/</link><category>Места</category><category>Разное</category><category>travel</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">CTAPbIu_MABP</dc:creator><pubDate>Mon, 04 Jul 2011 01:37:50 PDT</pubDate><guid isPermaLink="false">http://mabp.kiev.ua/?p=1374</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Вот уже понедельник, а я еще не начинал писать отчет...</p>
<span id="more-1374"></span>
<p>На этот раз будет достаточно скучно :) Наконец стало тепло, заполнились почти все гостиницы, загорелые дети ссут в море, а я сижу за компом :) </p>
<p>На выходных выбрался в <a href="https://picasaweb.google.com/CTAPbIuMABP/BatumiGarden" rel="nofollow external">Батумский ботанический сад</a>. Он очень большой и разделен на секции а-ля материки. Как ни странно самый красивый участок принадлежит не Грузии, а восточной Азии, в частности Японии. Там растут карликовые растения, в пруду плавают рыбки, и выстроены небольшие терраски. Быд еще Мексиканский участок на котором я тщетно искал пейот, нашел тока какой-то ядовитый вьюнок.</p>
<p>Вообще в саду хороший интерактив, то есть по всему саду растут мандарины, апельсины, мушмула, бананы (но они не дозревают) которые можно срывать и кушать. Много бамбуковых беседок (тут вообще бамбук растет как дома, а вдоль дорог продяют бамбуковые изделия: лестницы, кресла, кружки и тп), родников со вкусной (не йодированной, без запаха серы) водой, прудов с рыбками и даже черепашками, смотровых площадок, по саду ездят экскурсионные электро-автобусики. Но самое интересное что в саду можно купить землю и построить дом, тем у кого там дом был, до того как это стало бот садом - повезло, остальным придется выложить кругленькую сумму, есть предположение что земля тут стоит дороже чем в центре Тбилиси. С другой стороны делать там нечего, там даже не единого ларька нет, за всем надо ехать в Чакви.</p>
<p>После бот сада поехали посмотреть <a href="https://picasaweb.google.com/CTAPbIuMABP/Petra" rel="nofollow external">Петри</a>. Вход три лара (для сравнения вход в Гонио 1 лар), раскопками даже не пахнет - все поросло травой много лет назад, камни навалены в кучу, целыми  сохранилась только пара стен.  Попытки построить террасы (из бетона) не увенчались успехом, может бабла не было, хз, но они тоже заброшены. Музея с находками нет и не будет. Вердикт: Петра - гавно.</p>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=nkdzG0wMU6w:g71HJZQNVFk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=nkdzG0wMU6w:g71HJZQNVFk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=nkdzG0wMU6w:g71HJZQNVFk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=nkdzG0wMU6w:g71HJZQNVFk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=nkdzG0wMU6w:g71HJZQNVFk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?i=nkdzG0wMU6w:g71HJZQNVFk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?a=nkdzG0wMU6w:g71HJZQNVFk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CTAPbIu_MABP?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CTAPbIu_MABP/~4/nkdzG0wMU6w" height="1" width="1"/>]]></content:encoded><description>Вот уже понедельник, а я еще не начинал писать отчет... На этот раз будет достаточно скучно :) Наконец стало тепло, заполнились почти все гостиницы, загорелые дети ссут в море, а я сижу за компом :) На выходных выбрался в Батумский ботанический сад. Он очень большой и разделен на секции а-ля материки. Как ни странно самый [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mabp.kiev.ua/2011/07/04/batumi-petra/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://mabp.kiev.ua/2011/07/04/batumi-petra/</feedburner:origLink></item></channel></rss>

