
<?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>Писанина на парте developer`а.</title>
	<atom:link href="http://www.sakrist.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sakrist.com</link>
	<description>PHP, Python, Trac, Linux, JavaScript, AJAX, Google, iPhone, Objective-c, Mac OS</description>
	<pubDate>Tue, 06 Jan 2009 23:57:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Управление памятью в Objective-c</title>
		<link>http://www.sakrist.com/memory-management.html</link>
		<comments>http://www.sakrist.com/memory-management.html#comments</comments>
		<pubDate>Tue, 06 Jan 2009 23:55:13 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[objective-c]]></category>

		<category><![CDATA[Кодинг]]></category>

		<guid isPermaLink="false">http://www.sakrist.com/?p=295</guid>
		<description><![CDATA[<p>Система управления памятью в Objective-C основана на подсчете ссылок. Все что вам нужно делать — следить ссылками, среда выполнения сама осуществит освобождение памяти.</p>
<p>Выражаясь простым языком, вызываете ли вы alloc, или retain сколько бы то ни было раз, то для корректного удаления объекта вы должны вызвать такое же число раз метод release.</p>
<p>Существуют две причины для использования объектов в программе:</p>
<p>1. Для использования его как переменной экземпляра<br />
2. Для единоразового использования внутри функции<br />
<span id="more-295"></span><br />
В большинстве случаев, set-методы должны вызвать autorelease для старого, и retain для нового объекта. Затем просто убедитесь, что не забыли вызвать release в dealloc для ваших переменных экземпляров.</p>
<p>Так что единственная реальная работа по управлению ссылками происходит внутри вызова функции. И здесь действует лишь одно правило: если вы создаете объект при помощи alloc или copy, не забудьте отправить ему release или autorelease сообщение в конце функции. Если вы создаете объект другими способами, то не делайте ничего.</p>
<p>Ниже представлен пример реализации первого варианта.</p>
<div class="codecolorer-container objc"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1">— <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span> setTotalAmount: <span class="br0">&#40;</span><span class="kw5">NSNumber</span>*<span class="br0">&#41;</span>input <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>totalAmount autorelease<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">totalAmount = <span class="br0">&#91;</span>input retain<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">— <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span> dealloc <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>totalAmount release<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>super dealloc<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></div></div>
<p>Вот другой случай, с локальными переменными.</p>
<div class="codecolorer-container objc"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw5">NSNumber</span>* value1 = <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="kw5">NSNumber</span> alloc<span class="br0">&#93;</span> initWithFloat:<span class="nu0">8.75</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw5">NSNumber</span>* value2 = <span class="br0">&#91;</span><span class="kw5">NSNumber</span> numberWithFloat:<span class="nu0">14.78</span><span class="br0">&#93;</span>;</div></li></ol></div></div>
<p>// освобождаем value1, но не value2<br />
[value1 release];<br />
</code></p>
<p>А вот комбинация: используем локальные переменные, чтобы задать значения переменным экземпляра.</p>
<div class="codecolorer-container objc"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw5">NSNumber</span>* value1 = <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="kw5">NSNumber</span> alloc<span class="br0">&#93;</span> initWithFloat:<span class="nu0">8.75</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>self setTotal:value1<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw5">NSNumber</span>* value2 = <span class="br0">&#91;</span><span class="kw5">NSNumber</span> numberWithFloat:<span class="nu0">14.78</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>self setTotal:value2<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#91;</span>value1 release<span class="br0">&#93;</span>;</div></li></ol></div></div>
<p>Заметьте, что правила для локальных переменных те же самые, что и для переменных экземпляра.</p>
<p>Если вы поймете эту стать, то вы поймете 90% из того, что вам понадобится знать об управлении памятью в Objective-C. Желательно прочесть еще <a href="http://www.stepwise.com/Articles/Technical/2001-03-11.01.html">это</a>.</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/memory-management.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Курс валют на iPhone</title>
		<link>http://www.sakrist.com/exchange-rates-in-iphone.html</link>
		<comments>http://www.sakrist.com/exchange-rates-in-iphone.html#comments</comments>
		<pubDate>Sat, 03 Jan 2009 01:32:51 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[OOP]]></category>

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

		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.sakrist.com/?p=277</guid>
		<description><![CDATA[<p>Ура! Выделил время и написал нужный мне апп для iPhone. Долго собирался, а делов то! В целом, за вечер написал. Естественно прост и без наваротов. Курс валют Украины :) Но если захотите, то прочтете эту статью и сами сделаете :) Если лень, можно скачать <a href="http://www.sakrist.com/wp-content/plugins/download_counter/redirect.php?id=1" target="_blank"><img src="http://www.sakrist.com/wp-content/plugins/download_counter/redirect.php?pid=1" border="0" alt="Exchange rates on iPhone Курс валют украины в iPhone" width="0" height="0" />Exchange rates on iPhone</a></p>
<p>Вот что у меня получилось:<br />
<a href="http://www.sakrist.com/wp-content/uploads/2009/01/img_0003.png"><img class="aligncenter size-medium wp-image-280" title="Example" src="http://www.sakrist.com/wp-content/uploads/2009/01/img_0003-200x300.png" alt="" width="200" height="300" /></a></p>
<p>Привиду примеры кода.<br />
В парсинге мне помогла официальная книга от apple. Если интересно, то можно почитать про это на странице 311 в книге &#8220;The iPhone Developer`s Cookbook&#8221;.</p>
<p>Далее код и скомпилированная версия&#8230;<br />
<span id="more-277"></span><br />
Класс для хранения информации:</p>
<div class="codecolorer-container objc" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">class</span> TreeNode;</div></li></ol></div></div>
<p>@interface TreeNode : NSObject<br />
{<br />
TreeNode        *parent;<br />
NSMutableArray  *children;<br />
NSString        *key;<br />
NSString        *leafvalue;<br />
NSMutableDictionary	*dattributes;</p>
<p>}<br />
@property (nonatomic, retain)     TreeNode        *parent;<br />
@property (nonatomic, retain)     NSMutableArray  *children;<br />
@property (nonatomic, retain)     NSString        *key;<br />
@property (nonatomic, retain)     NSString        *leafvalue;<br />
@property (nonatomic, retain)     NSMutableDictionary	  *dattributes;</p>
<p>@end</p>
<p>@implementation TreeNode<br />
@synthesize parent<br />
,	children<br />
,	key<br />
,	leafvalue<br />
,	dattributes;<br />
@end</p>
<p>Далее сам код который парсит и сохраняет данные в объект root:</p>
<div class="codecolorer-container objc" style="height:35px;"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1">- <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>parseXMLFileAtFile <span class="br0">&#123;</span></div></li></ol></div></div>
<p>NSURL *xmlURL = [NSURL URLWithString:@"http://bank-ua.com/export/currrate.xml"];<br />
[self parseXMLFile:xmlURL];<br />
}</p>
<p>// Use just one parser instance at any time<br />
+ (NSXMLParser *) sharedInstance<br />
{<br />
if(!sharedInstance) {<br />
sharedInstance = [[self alloc] init];<br />
}<br />
return sharedInstance;<br />
}</p>
<p>// Public parser returns the tree root<br />
- (TreeNode *)parseXMLFile: (NSURL *) url<br />
{<br />
stack = [[NSMutableArray alloc] init];</p>
<p>root = [[TreeNode alloc] init];<br />
root.parent = NULL;<br />
root.leafvalue = NULL;<br />
root.children = [[NSMutableArray alloc] init];<br />
root.dattributes = [[NSMutableDictionary alloc] init];<br />
[stack addObject:root];<br />
[root release];</p>
<p>NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];<br />
[parser setDelegate:self];<br />
[parser parse];<br />
[parser release];</p>
<p>// pop down to real root<br />
return [[root children] lastObject];<br />
}</p>
<p>// Descend to a new element<br />
- (void)parser:(NSXMLParser *)parser<br />
didStartElement:(NSString *)elementName<br />
namespaceURI:(NSString *)namespaceURI<br />
qualifiedName:(NSString *)qName<br />
attributes:(NSDictionary *)attributeDict<br />
{<br />
if (qName) elementName = qName;</p>
<p>currentElement = [elementName copy];</p>
<p>TreeNode *leaf = [[TreeNode alloc] init];</p>
<p>leaf.parent = [stack lastObject];</p>
<p>[(NSMutableArray *)[[stack lastObject] children] addObject:leaf];<br />
leaf.key = [NSString stringWithString:elementName];<br />
leaf.leafvalue = NULL;<br />
leaf.children = [[NSMutableArray alloc] init];<br />
leaf.dattributes = [[NSMutableDictionary alloc] initWithDictionary:attributeDict copyItems:YES];</p>
<p>[stack addObject:leaf];</p>
<p>[leaf release];<br />
}<br />
// Pop after finishing element<br />
- (void)parser:(NSXMLParser *)parser<br />
didEndElement:(NSString *)elementName<br />
namespaceURI:(NSString *)namespaceURI<br />
qualifiedName:(NSString *)qName<br />
{<br />
[stack removeLastObject];<br />
}</p>
<p>// Reached a leaf<br />
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string<br />
{<br />
[[stack lastObject] setLeafvalue:[NSString stringWithString:string]];<br />
}</p>
<p>Ну а дальше на ваше усмотрение как это отбразить. Я предпочел временно в UITableView.</p>
<p>Для запуска вам возможно понадобиться зайти по ssh на свой телефон и прописать:<br />
sysctl -w security.mac.proc_enforce=0 security.mac.vnode_enforce=0</p>
<p>Все в ваших руках :)</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/exchange-rates-in-iphone.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>How To setup driver in OS X for nVidia GeForce Go 6100</title>
		<link>http://www.sakrist.com/how-to-setup-driver-in-os-x-for-nvidia-geforce-go-6100.html</link>
		<comments>http://www.sakrist.com/how-to-setup-driver-in-os-x-for-nvidia-geforce-go-6100.html#comments</comments>
		<pubDate>Fri, 02 Jan 2009 21:13:14 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[work]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=269</guid>
		<description><![CDATA[<p>Мануал по установке драйвера для видеокарты nVidia GeForce Go 6100.<br />
1. <a href="http://www.sakrist.com/wp-content/plugins/download_counter/redirect.php?id=2" target="_blank"><img src="http://www.sakrist.com/wp-content/plugins/download_counter/redirect.php?pid=2" border="0" alt="Download MacVidia 1.0.81" width="0" height="0" />Download MacVidia 1.0.81</a></p>
<p>2. Backup all file and folder /System/Library/Extensions Geforce*.kext and NV*.kext</p>
<p>3.  Setup MacVidia, by <strong>NOT RESTART</strong></p>
<p>4. launch terminal, go /System/Library/Extensions</p>
<p>5. Write: sudo mkdir NVBack ↵</p>
<p>6. Write: sudo mv ./NV*.plugin ./NVBack ↵</p>
<p>7. Write: sudo mv ./NV*.bundle ./NVBack ↵</p>
<p>8. Reboot and change screen resolution</p>
<p>P.S.: Если что не ясно, пишите :)</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/how-to-setup-driver-in-os-x-for-nvidia-geforce-go-6100.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>For iPhone Wifi Develop</title>
		<link>http://www.sakrist.com/for-iphone-wifi-develop.html</link>
		<comments>http://www.sakrist.com/for-iphone-wifi-develop.html#comments</comments>
		<pubDate>Mon, 29 Dec 2008 00:26:55 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[objective-c]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=267</guid>
		<description><![CDATA[<div class="postentry">
<p>Using Private Framework is banned by Apple. It’s the biggest violation to Apple’s sdk agrement. But who cares, that doesn’t mean we can try and experiment what we can really do with an iphone. I’ll show you here in few lines how to link at runtime your application with a private framework. In this case I will use Apple80211.</p>
<div class="codecolorer-container objc"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw4">void</span> *libHandle;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> *airportHandle;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> <span class="br0">&#40;</span>*open<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw4">void</span> *<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> <span class="br0">&#40;</span>*bind<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw4">void</span> *, <span class="kw5">NSString</span> *<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> <span class="br0">&#40;</span>*close<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw4">void</span> *<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> <span class="br0">&#40;</span>*associate<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw4">void</span> *, <span class="kw5">NSDictionary</span>*, <span class="kw5">NSString</span>*<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> <span class="br0">&#40;</span>*scan<span class="br0">&#41;</span><span class="br0">&#40;</span><span class="kw4">void</span> *, <span class="kw5">NSArray</span> **, <span class="kw4">void</span> *<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">libHandle = dlopen<span class="br0">&#40;</span>”/<span class="kw3">System</span>/Library/PrivateFrameworks/Apple80211.framework/Apple80211″, RTLD_LAZY<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">open  = dlsym<span class="br0">&#40;</span>libHandle, “Apple80211Open”<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">bind  = dlsym<span class="br0">&#40;</span>libHandle, “Apple80211BindToInterface”<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">close = dlsym<span class="br0">&#40;</span>libHandle, “Apple80211Close”<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">associate = dlsym<span class="br0">&#40;</span>libHandle, “Apple80211Associate”<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">scan  = dlsym<span class="br0">&#40;</span>libHandle, “Apple80211Scan”<span class="br0">&#41;</span>;</div></li></ol></div></div>
<p>The real drawback of this approach is that the framework absolute path is hardcoded in our call to dlopen, which means Apple is able, with a real small change to the OS, to breaks our app. For completeness, the last framework organization change happened with the big step between firmware 1.x and 2.x.</p></div>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/for-iphone-wifi-develop.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Image resize and watermark</title>
		<link>http://www.sakrist.com/image-resize-and-watermark.html</link>
		<comments>http://www.sakrist.com/image-resize-and-watermark.html#comments</comments>
		<pubDate>Wed, 10 Dec 2008 14:05:54 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[PHP]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=255</guid>
		<description><![CDATA[<p>Parameters are passed via URL: image.php?image=1.jpg;</p>
<p>You can set the type of your output image to JPG, GIF or PNG format like this: image.php?image=1.jpg&#038;type=png; If you don’t specify the type of the output image, the script will output the image in the original format image.php?image=1.jpg;</p>
<p>To add a watermark to image you heave to set 2 variables: watermark_text and watermark_color(optional).Black will be use if you do not set the watermark_color;<br />
Example:<br />
1) image.php?image=1.jpg&#038;watermark_text=1234567890&#038;watermark_color=fffff;<br />
2) image.php?image=1.jpg&#038;watermark_text=1234567890;</p>
<p>Resizing images:<br />
a. Exact size:<br />
Variables: w and h<br />
Example: image.php?image=1.jpg&#038;w=100&#038;h=100<br />
b. Maxim size:<br />
Variable: maxim_size<br />
Example: image.php?image=1.jpg&#038;maxim_size=300<br />
c. Percent:<br />
Variable: percent<br />
Example: image.php?image=1.jpg&#038;percent=50<br />
d. Square:<br />
Variable: square<br />
Example: image.php?image=1.jpg&#038;square=100<br />
I use this type of resizing for creating thumbnails that heave the same size</p>
<p>It for study&#8230;</p>
<p><span id="more-255"></span></p>
<div class="codecolorer-container php" style="height:1400px;"><div class="codecolorer" style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">&lt;?</span></div></li>
<li class="li1"><div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'image'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="re0">$image</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'image'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;jpg&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/jpeg&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;gif&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/gif&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;png&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/png&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;jpg&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;JPG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/jpeg&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#125;</span> <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;gif&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;GIF&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/gif&quot;</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;png&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;PNG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="kw3">header</span><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/png&quot;</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;jpg&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;JPG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re0">$im</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="re0">$image</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;gif&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;GIF&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re0">$im</span> = imagecreatefromgif<span class="br0">&#40;</span><span class="re0">$image</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;png&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;PNG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re0">$im</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="re0">$image</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'percent'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="kw3">round</span><span class="br0">&#40;</span><span class="br0">&#40;</span>imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>*<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'percent'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>/<span class="nu0">100</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="kw3">round</span><span class="br0">&#40;</span><span class="br0">&#40;</span>imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>*<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'percent'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>/<span class="nu0">100</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imw</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'w'</span><span class="br0">&#93;</span> and <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'h'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'w'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'h'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imw</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'maxim_size'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'maxim_size'</span><span class="br0">&#93;</span> || imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'maxim_size'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'maxim_size'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="br0">&#40;</span><span class="re0">$y</span>*imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span>/imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'maxim_size'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="br0">&#40;</span><span class="re0">$x</span>*imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span>/imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imw</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span> || imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>&gt;=imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="br0">&#40;</span><span class="re0">$x</span>*imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span>/imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=-<span class="br0">&#40;</span><span class="re0">$y</span>-<span class="re0">$x</span><span class="br0">&#41;</span>/<span class="nu0">2</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="br0">&#40;</span><span class="re0">$y</span>*imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span>/imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=-<span class="br0">&#40;</span><span class="re0">$x</span>-<span class="re0">$y</span><span class="br0">&#41;</span>/<span class="nu0">2</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imw</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span>,<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'square'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$yyy</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$xxx</span>=<span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imw</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>,<span class="re0">$y</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; imagecopyresampled<span class="br0">&#40;</span><span class="re0">$imw</span>, <span class="re0">$im</span>, <span class="re0">$xxx</span>,<span class="re0">$yyy</span>,<span class="nu0">0</span>,<span class="nu0">0</span>,<span class="re0">$x</span>,<span class="re0">$y</span>,imagesx<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>, imagesy<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'watermark_text'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'watermark_color'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re0">$watermark_color</span>=<span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'watermark_color'</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$watermark_color</span>=<span class="st0">&quot;000000&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$red</span>=<span class="kw3">hexdec</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$watermark_color</span>,<span class="nu0">0</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$green</span>=<span class="kw3">hexdec</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$watermark_color</span>,<span class="nu0">2</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$blue</span>=<span class="kw3">hexdec</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$watermark_color</span>,<span class="nu0">4</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$text_col</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$imw</span>, <span class="re0">$red</span>,<span class="re0">$green</span>,<span class="re0">$blue</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$font</span> = <span class="st0">&quot;georgia.ttf&quot;</span>; <span class="co1">//this font(georgia.ttf) heave to be in the same directory as this script</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$font_size</span> = <span class="nu0">12</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$angle</span> = <span class="nu0">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$box</span> = imagettfbbox<span class="br0">&#40;</span><span class="re0">$font_size</span>, <span class="re0">$angle</span>, <span class="re0">$font</span>, <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'watermark_text'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = <span class="nu0">5</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = <span class="nu0">17</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; imagettftext<span class="br0">&#40;</span><span class="re0">$imw</span>, <span class="re0">$font_size</span>, <span class="re0">$angle</span>, <span class="re0">$x</span>, <span class="re0">$y</span>, <span class="re0">$text_col</span>, <span class="re0">$font</span>, <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'watermark_text'</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;jpg&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagejpeg<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;gif&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagegif<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">'type'</span><span class="br0">&#93;</span>==<span class="st0">&quot;png&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagepng<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;jpg&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;JPG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagejpeg<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;gif&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;GIF&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagegif<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;png&quot;</span> || <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$image</span>, <span class="nu0">-3</span><span class="br0">&#41;</span>==<span class="st0">&quot;PNG&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>imagepng<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; imagedestroy<span class="br0">&#40;</span><span class="re0">$imw</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="kw2">?&gt;</span></div></li></ol></div></div>
<p>it for work<br />
<a href='http://www.sakrist.com/wp-content/uploads/2008/12/resize-class-2007-05-15.zip'>resize-class</a></p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/image-resize-and-watermark.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Two OS in iPhone</title>
		<link>http://www.sakrist.com/two-os-in-iphone.html</link>
		<comments>http://www.sakrist.com/two-os-in-iphone.html#comments</comments>
		<pubDate>Tue, 09 Dec 2008 15:21:51 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

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

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

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=249</guid>
		<description><![CDATA[<p>На iPhone можно поставить не только родную ось ;)</p>
<p>Linux на iPhone<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="533" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2373142&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="533" src="http://vimeo.com/moogaloop.swf?clip_id=2373142&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><span id="more-249"></span></p>
<p>Управление Windows на iPhone через софтину<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://widgets.vodpod.com/w/video_embed/ExternalVideo.744897" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://widgets.vodpod.com/w/video_embed/ExternalVideo.744897" wmode="transparent"></embed></object></p>
<p>Windows Mobile на iPhone<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="330" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="embeddedPlayerVideo" /><param name="allowScriptAccess" value="always" /><param name="quality" value="high" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="bAutoStart=false&amp;isEmbeded=true&amp;iVideoId=491&amp;sScreenshotUrl=http://videos.video-loader.com/emotion/windowsmobile.jpg" /><param name="src" value="http://videos.video-loader.com/_player/gvideoplayer.swf" /><embed id="embeddedPlayerVideo" type="application/x-shockwave-flash" width="400" height="330" src="http://videos.video-loader.com/_player/gvideoplayer.swf" flashvars="bAutoStart=false&amp;isEmbeded=true&amp;iVideoId=491&amp;sScreenshotUrl=http://videos.video-loader.com/emotion/windowsmobile.jpg" allowfullscreen="true" quality="high" allowscriptaccess="always"></embed></object></p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/two-os-in-iphone.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Lessons programming for iPhone on objective-c</title>
		<link>http://www.sakrist.com/lessons-programming-for-iphone-on-objective-c.html</link>
		<comments>http://www.sakrist.com/lessons-programming-for-iphone-on-objective-c.html#comments</comments>
		<pubDate>Mon, 01 Dec 2008 11:22:50 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[OOP]]></category>

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

		<category><![CDATA[objective-c]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=244</guid>
		<description><![CDATA[<p>В просторах интернета достаточно много литературы на данную тематику, но хочу отметить два источника литературы откуда я подчерпнул свои знания.</p>
<p>Первый источник <a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">stanford.edu</a></p>
<p>Второй источник <a href="http://pyobjc.ru/tag/iphone%20sdk/">pyobj.ru</a></p>
<p>Чтоб не пришлось по YouTube искать видео примеров написания приложений выложу ссылочку на хороший сайт www.iphonedevcentral.org</p>
<p>Этого пока в полне достаточно! Рекомендую начать изучение по порядку выложенных мною материалов.</p>
<p>Если будут какие-то вопросы пишите. Постараюсь ответить :)</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/lessons-programming-for-iphone-on-objective-c.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Расширяю кругозор&#8230;</title>
		<link>http://www.sakrist.com/mac-mini.html</link>
		<comments>http://www.sakrist.com/mac-mini.html#comments</comments>
		<pubDate>Sat, 29 Nov 2008 16:01:05 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

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

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

		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.sakrist.com/?p=235</guid>
		<description><![CDATA[<p>Вот целый месяц ничего не писал на блоге :)</p>
<p>Было 2 причины:</p>
<p>1. Кто читает мой блог и читал about, тот знает что я учусь в универе и живу в общаге. У нас была реорганизация сети и не было интернета 2 МЕСЯЦА!!! Вот в понедельник пойду подключаться :)</p>
<p>2. На работе перешли под маки и нужно осваиваться эту ось и программирование на ней под iPhone :)</p>
<p>Так вот насчет расширения кругозора :)<br />
Изучаю objective-c и среду разработки xCode. Очень интересно и занимательно. Открыл для себя новый мир разработки ПО, перейдя с одной ос на другую.</p>
<p>Так вот&#8230;</p>
<p><span id="more-235"></span></p>
<p>На работе (www.injoit.com) купили mac mini.</p>
<p><a href="http://www.sakrist.com/wp-content/uploads/2008/11/image007.jpg"><img class="aligncenter size-medium wp-image-237" title="mac mini" src="http://www.sakrist.com/wp-content/uploads/2008/11/image007-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Работаю за ним и наслаждаюсь стабильностью системы.</p>
<p>Мое рабочее место:</p>
<p><a href="http://www.sakrist.com/wp-content/uploads/2008/12/1.jpg"><img class="aligncenter size-medium wp-image-242" title="Мас mini, injoit company, work place" src="http://www.sakrist.com/wp-content/uploads/2008/12/1-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>А вот чем мы <a href="http://www.injoit.com/eng/iphone-custom-development-outsource">занимаемся</a> :)</p>
<p>Будет время напишу статейку по программированию под iPhone</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/mac-mini.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Python and PyQt4 part 1</title>
		<link>http://www.sakrist.com/python-and-pyqt4.html</link>
		<comments>http://www.sakrist.com/python-and-pyqt4.html#comments</comments>
		<pubDate>Sat, 29 Nov 2008 15:17:58 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[Я кодер!]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=197</guid>
		<description><![CDATA[<p>Меня уже довольно долгое время интересует программирование на python. В том числе и кроссплатформенное программирование под GUI. Для этих целей использовал PyQt4, который очень легко было использовать т.к. под рукой был qt4 и все его возможности. Первые помощьники это Qt Designer в котором можно быстро набросать интерфейс и Qt Assistant в котором можно прочитать много полезного для работы с объектами GUI.</p>
<p>Про IDE можно спорить долго, но я выбрал Eric IDE, он написан на Python+PyQt4 , что мне очень понравилось, но в нем есть свои нюансы и баги :)</p>
<p><span id="more-197"></span></p>
<p>На  Qt Designer делаем интерфейс и легким движением руки превращаем в python код:</p>
<p>pyuic4 -x untitled.ui &gt; untitled.py</p>
<p>но можно и не преобразовывать, а использовать *.ui файл&#8230;.</p>
<p>прошло много времени&#8230;&#8230;</p>
<p>и еще много времени&#8230;.</p>
<p>Эта статья писалась уже давно и не как не доходили руки ее дописать, публикую то что есть. Будет время допишу :)</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/python-and-pyqt4.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google developer day 2008 Moscow</title>
		<link>http://www.sakrist.com/google-developer-day-2008-moscow.html</link>
		<comments>http://www.sakrist.com/google-developer-day-2008-moscow.html#comments</comments>
		<pubDate>Wed, 29 Oct 2008 14:44:39 +0000</pubDate>
		<dc:creator>Vladimir Boichentsov</dc:creator>
		
		<category><![CDATA[Google]]></category>

		<category><![CDATA[Я кодер!]]></category>

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

		<guid isPermaLink="false">http://www.sakrist.com/?p=216</guid>
		<description><![CDATA[<h2 style="text-align: center;">Google developer Day 2008</h2>
<p><a href="http://www.sakrist.com/wp-content/uploads/2008/10/dsc02025.jpg"><img class="aligncenter size-medium wp-image-218" title="dsc02025" src="http://www.sakrist.com/wp-content/uploads/2008/10/dsc02025-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Это часть команды <a title="injoit.com" href="http://www.injoit.com">Injoit</a>. Я стою в рубашке с левой стороны, на корточках сидит <a href="http://oleg40a.in.ua/2008/10/google-developer-day-2008/">Сорока Олег</a> , далее Филатов Тарас и <a title="Bulgakov Alex" href="http://www.alexbulgakov.com/2008/11/03/google-developer-day-2008/">Булгаков Алексей</a>. Фото сделано после лекции про &#8220;Gears&#8221;, лектор <a href="http://codinginparadise.org/">Brad Neuberg</a>. Лекция была очень познавательная, эту лекцию можно будет найти на YouTube.</p>
<p><span id="more-216"></span></p>
<p><a href="http://www.sakrist.com/wp-content/uploads/2008/10/dsc02010.jpg"><img class="aligncenter size-medium wp-image-217" title="dsc02010" src="http://www.sakrist.com/wp-content/uploads/2008/10/dsc02010-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Лекция по App Engine(углубленное изучение), лектор Jon McAlister. Перед лекцией Jon McAlister присутствовал на практическом занятии на котором мы поработали с примерами wiki.</p>
<p><a href="http://code.google.com/intl/ru/events/developerday/2008/agenda.html">Залы были названы известными фантастами</a>:Лем, Бредбери, Азимов, Шекли, &#8230;</p>
<p>Всюду царил позитив&#8230; :)</p>
<p>Было приятно принять участие на данной конференции и открыть новые горизонты технологий Google&#8230;</p>
<p><strong><span style="color: #000000;">Огромное спасибо Тарасу Филатову (директор Injoit Team) за организацию поездки на конференцию (</span></strong><strong><span style="color: #000000;">Google Developer Day 2008)</span></strong><strong><span style="color: #000000;"> в Москву!!!</span></strong><span style="text-decoration: underline;"><br />
</span></p>
<p>P.S.: Рекомендую ознакомиться с медиа материалами конференции, которые вскоре появятся на офф. сайте.</p>
]]></description>
		<wfw:commentRss>http://www.sakrist.com/google-developer-day-2008-moscow.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
<!--Replace this with default text-->