<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Coders&#039; Grave</title>
	<atom:link href="https://codersgrave.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://codersgrave.com</link>
	<description></description>
	<lastBuildDate>Sat, 31 Oct 2020 20:21:05 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.9</generator>
	<item>
		<title>Çoklu DVCS (Distributed revision control) Hesabı ile Git Kullanımı</title>
		<link>https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=coklu-dvcs-hesabi-git-kullanimi</link>
					<comments>https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/#respond</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Thu, 02 Apr 2015 09:56:57 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[multiple ssh key]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh agent]]></category>
		<category><![CDATA[ssh-keygen]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1739</guid>

					<description><![CDATA[<p>Eğer birden fazla versiyon kontrol servisine üyeliğiniz varsa ya da bu servislerin birinde veya birkaçında, farklı hesaplarla geliştirme yapıyorsanız, bunların her biri için SSH key oluşturmanız gerekir. Aksi takdirde Git Client, varsayılan olarak &#8220;id_rsa&#8220;yi kullanmaya çalışacak ve e-posta adresiniz ve/veya... <a class="more-link" href="https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/">Çoklu DVCS (Distributed revision control) Hesabı ile Git Kullanımı</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Eğer birden fazla versiyon kontrol servisine üyeliğiniz varsa ya da bu servislerin birinde veya birkaçında, farklı hesaplarla geliştirme yapıyorsanız, bunların her biri için SSH key oluşturmanız gerekir. Aksi takdirde Git Client, varsayılan olarak &#8220;<strong>id_rsa</strong>&#8220;yi kullanmaya çalışacak ve e-posta adresiniz ve/veya SSH anahtarınız (key) bununla uyuşmayacağı için &#8220;<strong>Permission denied (public key)</strong>&#8221; hatası alacaksınız.</p>
<p>Hem GitHub, hem Bitbucket hem de yerel sunucuda kurulu Gitlab&#8217;da geliştirme yapmaya çalışınca bu durumla karşılaşmam kaçınılmaz oldu. Buna çözüm olarak iki farklı yöntem denedim. İki yöntemde de temel olarak her bir hesap için ayrı birer SSH anahtarı oluşturulması gerekiyor.</p>
<pre><code class="prettyprint">$ ssh-keygen -t rsa -C "sevil@codersgrave.com"</code></pre>
<p>E-posta adresini kendi adresinizle değiştirip diğer adımları takip etmeniz yeterli. Tabii oluşturduğunuz SSH anahtarlarını ilgili servise (GitHub, Bitbucket v.s.) eklemeniz gerekiyor. Bununla ilgili olarak <a href="https://help.github.com/articles/generating-ssh-keys/" target="_blank">GitHub yardım sayfasını</a> inceleyebilirsiniz.</p>
<p>Daha sonra aşağıdaki iki yöntemden birini tercih etmeniz gerekiyor.<span id="more-1739"></span></p>
<h2>1. Yöntem</h2>
<p><strong>~/.ssh/</strong> klasörüne <strong>config</strong> isimli bir dosya oluşturup içine de aşağıdaki örnekteki gibi host ve public key tanımlamaları yapmalısınız.</p>
<pre><code class="prettyprint"># http://stackoverflow.com/a/17158985
# GitHub
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa

# Bitbucket
Host bitbucket.org
    HostName bitbucket.org
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/bitbucket_rsa</code></pre>
<h2>2. Yöntem</h2>
<p>Bir diğer yöntem de Git Client&#8217;ın her açılışında SSH anahtarlarını bir SSH agent&#8217;a tanıtmak. Bunun için <strong>~/.bashrc</strong> dosyası oluşturup içine aşağıdaki kodu eklemelisiniz. Burada dikkat etmeniz gereken nokta SSH anahtarlarının isimlerinin &#8220;<strong>_rsa</strong>&#8221; ile bittiğinden emin olmak.</p>
<p>.bashrc dosyasını oluşturmakta zorluk çekenler ana klasöre (~/) gelip bu komutu çalıştırarak dosyayı oluşturabilirler: <code class="prettyprint">touch .bashrc</code></p>
<pre><code class="prettyprint">#! /bin/bash 
eval `ssh-agent -s` 
ssh-add ~/.ssh/*_rsa</code></pre>
<p>Git Client&#8217;ı her açtığınızda aşağıdakine benzer bir ekran göreceksiniz.<br />
<a href="http://codersgrave.com/wp-content/uploads/2015/04/agent-identified-ssh-keys.png"><img loading="lazy" class="aligncenter size-large wp-image-1747" src="http://codersgrave.com/wp-content/uploads/2015/04/agent-identified-ssh-keys-630x203.png" alt="Agent identified SSH keys" width="630" height="203" srcset="https://codersgrave.com/wp-content/uploads/2015/04/agent-identified-ssh-keys-630x203.png 630w, https://codersgrave.com/wp-content/uploads/2015/04/agent-identified-ssh-keys-300x97.png 300w, https://codersgrave.com/wp-content/uploads/2015/04/agent-identified-ssh-keys.png 710w" sizes="(max-width: 630px) 100vw, 630px" /></a></p>
<h2>Test</h2>
<p>En sonunda, yapılan işlemin çalışıp çalışmadığını da bu şekilde test edebilirsiniz:</p>
<pre><code>$ ssh -T git@github.com
Hi sevilyilmaz! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@bitbucket.org
logged in as sevilyilmaz.</code></pre>
<p>The post <a rel="nofollow" href="https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/">Çoklu DVCS (Distributed revision control) Hesabı ile Git Kullanımı</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/coklu-dvcs-hesabi-git-kullanimi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Angular 2 TypeScript İle Geliştiriliyor</title>
		<link>https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=angular-2-typescript-ile-gelistiriliyor</link>
					<comments>https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/#respond</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Fri, 06 Mar 2015 09:11:56 +0000</pubDate>
				<category><![CDATA[Haberler]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[atscript]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1727</guid>

					<description><![CDATA[<p>Bu ortaklık sizi şaşırtabilir. Google ve Microsoft, Angular 2&#8217;nin geliştirilmesi için birlikte çalışacaklarını açıkladı. Ekim 2014&#8217;te NG Avrupa konferansında Angular ekibi Angular 2&#8217;nin AtScript&#8216;le geliştirileceğini duyurmuştu. Ama görünen o ki TypeScript&#8217;in gelişimi için bu ismi kullanmaktan vazgeçip AtScript&#8217;in özelliklerini TypeScript&#8217;e... <a class="more-link" href="https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/">Angular 2 TypeScript İle Geliştiriliyor</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Bu ortaklık sizi şaşırtabilir. Google ve Microsoft, Angular 2&#8217;nin geliştirilmesi için birlikte çalışacaklarını açıkladı.</p>
<p>Ekim 2014&#8217;te NG Avrupa konferansında Angular ekibi Angular 2&#8217;nin <a href="https://docs.google.com/document/d/11YUzC-1d0V1-Q3V0fQ7KSit97HnZoKVygDxpWzEYW0U/edit" target="_blank">AtScript</a>&#8216;le geliştirileceğini <a href="http://ngeurope.org/" target="_blank">duyurmuştu</a>. Ama görünen o ki TypeScript&#8217;in gelişimi için bu ismi kullanmaktan vazgeçip AtScript&#8217;in özelliklerini TypeScript&#8217;e dahil etmeye karar verdiler. MSDN blogunda bu olay büyük bir heyecanla <a title="Angular 2: Built on TypeScript" href="http://blogs.msdn.com/b/typescript/archive/2015/03/05/angular-2-0-built-on-typescript.aspx" target="_blank">duyuruldu</a>:<span id="more-1727"></span></p>
<blockquote><p>We&#8217;re excited to unveil the result of a months-long partnership with the Angular team.</p></blockquote>
<p><a href="http://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense.png" target="_blank"><img loading="lazy" class="aligncenter wp-image-1728 size-large" src="http://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense-630x303.png" alt="ngconf 2015 - TypeScript-Angular Sublime Intellisense" width="630" height="303" srcset="https://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense-630x303.png 630w, https://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense-300x144.png 300w, https://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense-900x433.png 900w, https://codersgrave.com/wp-content/uploads/2015/03/ngconf-2015-typescript-angular-sublime_intellisense.png 1254w" sizes="(max-width: 630px) 100vw, 630px" /></a></p>
<p>AtScript, büyük çoğunlukla TypeScript ve Dart&#8217;tan esinlenmiş bir <em>superset</em>. AtScript, JavaScript&#8217;e <a href="https://en.wikipedia.org/wiki/Type_introspection" target="_blank">introspection</a> gibi yeni özellikler getirerek daha hızlı bir geliştirme süreci amaçlıyor. Bu gibi bütün özellikleri yeni çıkacak olan TypeScript&#8217;in <a href="https://github.com/Microsoft/TypeScript/milestones/TypeScript%201.5" target="_blank">1.5</a> versiyonuna uyarlanacak.</p>
<p>Angular 2&#8217;nin geriye uyumluluğunun olmaması yazılımcı topluluğunda hala tartışılırken bu gelişme <em>framework</em>&#8216;un kullanılmasını ne kadar değiştirecek zamanla göreceğiz.</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/">Angular 2 TypeScript İle Geliştiriliyor</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/angular-2-typescript-ile-gelistiriliyor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Integrating Styled Google Calendar with Your Website</title>
		<link>https://codersgrave.com/integrating-styled-google-calendar-website/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=integrating-styled-google-calendar-website</link>
					<comments>https://codersgrave.com/integrating-styled-google-calendar-website/#respond</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Wed, 18 Feb 2015 19:13:36 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[google calendar]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1553</guid>

					<description><![CDATA[<p>This article might be outdated. I don&#8217;t intend to update it any further. See the comments for the possible up to date solutions. My brother needed a calendar that shows his availability to his clients for his website. So, I... <a class="more-link" href="https://codersgrave.com/integrating-styled-google-calendar-website/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/integrating-styled-google-calendar-website/">Integrating Styled Google Calendar with Your Website</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>This article might be outdated. I don&#8217;t intend to update it any further. See the comments for the possible up to date solutions.</em></p>
<p>My brother needed a calendar that shows his availability to his clients for his website. So, I know that already, marvelous Google Calendar provides embedding calendar in your website with iframe. But you couldn&#8217;t change its design (color, icons etc.). This is a bad thing for websites without white background color. It looks like an alien attached to your website.</p>
<p>I googled it a bit and I found this article: <a href="http://www.webdesignerdepot.com/2012/04/integrating-google-calendar-with-your-website/" target="_blank" rel="noopener noreferrer">Integrating Google Calendar with your website</a>. There is a PHP code in the article that it isn&#8217;t correct. But it inspired me. I took its idea and code and I reworked on it. Here is the live result: <strong><a href="https://taneryilmaz.pro/#schedule" target="_blank" rel="noopener noreferrer">https://taneryilmaz.pro/#schedule</a> </strong><br />
<span id="more-1553"></span></p>
<p><img loading="lazy" class="aligncenter size-full wp-image-1714" src="http://codersgrave.com/wp-content/uploads/2015/02/taneryilmaz-schedule.png" alt="taneryilmaz.pro - Schedule" width="583" height="428" srcset="https://codersgrave.com/wp-content/uploads/2015/02/taneryilmaz-schedule.png 583w, https://codersgrave.com/wp-content/uploads/2015/02/taneryilmaz-schedule-300x220.png 300w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<pre><code class="prettyprint">&lt;?php
$your_google_calendar="[YOUR_CALENDAR_EMBED_URL]";

$url= parse_url($your_google_calendar);
$google_domain = $url['scheme'].'://'.$url['host'];

// Load and parse Google's raw calendar
$dom = new DOMDocument;
$dom-&gt;loadHTMLfile($your_google_calendar);

// Create a link to a new CSS file called schedule.min.css
$element = $dom-&gt;createElement('link');
$element-&gt;setAttribute('type', 'text/css');
$element-&gt;setAttribute('rel', 'stylesheet');
$element-&gt;setAttribute('href', '/css/schedule.min.css');

// Change Google's JS file to use absolute URLs
$scripts = $dom-&gt;getElementsByTagName('script');

foreach ($scripts as $script) {
  $js_src = $script-&gt;getAttribute('src');
  
  if ($js_src) {
    $parsed_js = parse_url($js_src, PHP_URL_HOST);
    if (!$parsed_js) {
      $script-&gt;setAttribute('src', $google_domain . $js_src);      
    }
  }
}

 // Append this link at the end of the element
$head = $dom-&gt;getElementsByTagName('head')-&gt;item(0);
$head-&gt;appendChild($element);

// Remove old stylesheet
$oldcss = $dom-&gt;documentElement;
$link = $oldcss-&gt;getElementsByTagName('link')-&gt;item(0);
$head-&gt;removeChild($link);

// Export the HTML
echo $dom-&gt;saveHTML();
?&gt;</code></pre>
<p>Save this as <strong>calendar.php</strong> and after change the <strong>$your_google_calendar</strong> variable with your calendars URL. Now, you can change the style of calendar from <strong>schedule.min.css</strong> file. After that, you can embed it to your web page like this:</p>
<pre><code class="prettyprint">&lt;iframe style="border-width: 0;" src="/calendar.php" width="560" height="400" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;</code></pre>
<p>You need to store schedule.min.css on your server to achieve this. Feel free to ask if you get any trouble.</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/integrating-styled-google-calendar-website/">Integrating Styled Google Calendar with Your Website</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/integrating-styled-google-calendar-website/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress&#8217;te kalıcı bağlantı değişimi ve bunun SEO&#8217;ya etkisi</title>
		<link>https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-kalici-baglanti-degisimi-seo-etkisi</link>
					<comments>https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Wed, 11 Feb 2015 19:50:34 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[kalıcı bağlantı]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[yönlendirme]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1670</guid>

					<description><![CDATA[<p>Yakın zamanda sitedeki kalıcı bağlantı yapısı değişti. Önceleri performans gereği /%post_id%-%postname%/ şeklinde olan yapıyı, WordPress​&#8217;in performans geliştirmelerinden dolayı sadece /%postname%/&#8217;e çevirdim; ki böylesi SEO (arama motoru optimizasyonu) açısından daha iyi oldu. Ertesi gün fark ettim ki aldığım 404 hataları artmış.... <a class="more-link" href="https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/">WordPress&#8217;te kalıcı bağlantı değişimi ve bunun SEO&#8217;ya etkisi</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Yakın zamanda sitedeki kalıcı bağlantı yapısı değişti. Önceleri performans gereği /%post_id%-%postname%/ şeklinde olan yapıyı, WordPress​&#8217;in performans geliştirmelerinden dolayı sadece /%postname%/&#8217;e çevirdim; ki böylesi <abbr title="Search Engine Optimization">SEO</abbr> (arama motoru optimizasyonu) açısından daha iyi oldu. Ertesi gün fark ettim ki aldığım <abbr title="HTTP 404: Not Found">404</abbr> hataları artmış. Kalıcı bağlantı değişiminde WordPress&#8217;in aynı yazı bağlantısı değişimi gibi yönlendirme yapacağını sanıyordum ama bunu doğrulamamak hataydı.<span id="more-1670"></span> Hızlı bir şekilde, herhangi bir eklentiye ihtiyaç duymadan yönlendirmeyi yaptım. Aslında oldukça kolay olan bu yönlendirme SEO için hayati bir önem taşıyor. Eğer aynı şekilde siz de &#8220;post_id-postname&#8221;den &#8220;postname&#8221;e geçecekseniz aşağıdaki kod satırından URL&#8217;i değiştirmeniz yeterli. Yönlendirme için kullandığım <abbr title="Regular expression">regex</abbr> bu:</p>
<pre><code class="prettyprint">RedirectMatch 301 ^/(\d+)-([^/]+)/$ http://codersgrave.com/$2</code></pre>
<p>Regex&#8217;in anlamı şu: <code>/</code> ile başlayıp rakamla yani <code>(\d+)</code> devam eden, sonrasında <code>-</code> işareti ile ayrılıp sonrasında <code>/</code> ile biten herhangi bir yazı yani <code>([^/]+)</code> ile başlayan URL&#8217;leri <code>http://codersgrave.com/$2</code> adresine yönlendir. Yönlendirilecek adresteki <code>$2</code>, ilk <em>regex</em>&#8216;in &#8220;<code>-</code>&#8221; işeretinden sonraki kısma yani yazı alanına denk geliyor. Karışık geldiyse Yoast&#8217;ın yönlendirme kodu üreten sayfasını kullanabilirsiniz: <a title="Create Redirects" href="https://yoast.com/wp-content/permalink-helper.php" target="_blank">Yönlendirme oluşturma</a>. Coders&#8217; Grave için kullanıldığım alanlar aşağıdaki gibidir:</p>
<p><img loading="lazy" class="aligncenter wp-image-1674 size-full" src="http://codersgrave.com/wp-content/uploads/2015/02/coders-grave-301-yonlendirme.png" alt="Coders' Grave 301 Yönlendirmesi" width="636" height="405" srcset="https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-301-yonlendirme.png 636w, https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-301-yonlendirme-300x191.png 300w" sizes="(max-width: 636px) 100vw, 636px" /> Oluşan yönlendirme kodunu ana klasördeki .htaccess dosyasına eklediğinizde artık yönlendirme işleminiz hazır olacaktır. Ancak uygulamadan önce öncelikle .htaccess&#8217;in yedeğini almalı ve kodu herhangi bir <em>regex tester</em>&#8216;da test etmenizde fayda var. Yoksa değişiklikten sonra siteniz hiç açılmayabilir. <a href="https://regex101.com/" target="_blank" rel="nofollow">regular expression 101</a>&#8216;de, oluşan <em>expression</em>&#8216;ın sonucu aşağıdaki gibidir. <code>/</code> karakteri <em>regex</em>&#8216;de illegal olduğu için testte bunların öncesine <code>\</code> kaçış karakteri ekledim.</p>
<p><a href="http://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi.png"><img loading="lazy" class="aligncenter size-large wp-image-1681" src="http://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi-630x198.png" alt="Coders' Grave yönlendirmesi regex testi" width="630" height="198" srcset="https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi-630x198.png 630w, https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi-300x94.png 300w, https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi-900x283.png 900w, https://codersgrave.com/wp-content/uploads/2015/02/coders-grave-yonlendirme-regex-testi.png 1084w" sizes="(max-width: 630px) 100vw, 630px" /></a></p>
<p>Kalıcı bağlantı değişimi çok dikkatli alınması gereken bir karar. Bu değişikliği yapmadan önce iyice düşünmeli, kesin kararınızı vermeli ve değişikliği yaptıktan sonra buna bağlı kalmalısınız. Her ne kadar arama motorlarına bu sayfaların tamamen taşındığını <abbr title="HTTP 301: Moved Permanently">301</abbr> yönlendirmesi ile belirtsek bile bu işlemi sürekli yaptığınız takdirde arama motorlarının hoşuna gitmeyecek, sitenizin değerini düşürecektir. Bunun yanı sıra, çoğu site, hatta hemen hemen hepsi Facebook, Twitter, Google Plus gibi sosyal medya sitelerinin eklentilerini kullanıyor. Bu eklentilerdeki sayfa beğeni/paylaşım sayısı tamamen sayfa bağlantısı ile ilişkili. Bağlantıyı değiştirdiğinizde bu ilişkiyi kaybedip eklentilerin sayfanızı yeni bir sayfaymış gibi görmesini sağlayacak ve değerleri sıfırlayacaktır.</p>
<h3>Güncelleme (14.02.2013)</h3>
<p>Yukarıda bahsettiğim sosyal medya paylaşım sayısı kaybedilmesi sorununa Dave Ward <a href="http://encosia.com/preserving-social-sharing-counters-through-a-url-change/" target="_blank">bu yazısında</a> güzel bir çözüm bulmuş.  Buradaki mantığa göre değişikliği yaptığınız tarihten önce paylaşılmış yazılar eski linkleri ile kalıp yeniler ise yeni formatlı bağlantılarıyla paylaşılıyor. Coders&#8217; Grave&#8217;de kullanılan eski format &#8220;​/111-sitenizi-hizlandirin​/&#8221; şeklinde olduğu için makaledeki örneği buna göre düzenledim.</p>
<pre><code class="prettyprint">&lt;?php

// Bağlantı yapısı 1/1/2015 tarihinde değiştirildi. 
// Bu kod bloku eski yazıların eski bağlantılarını kullanmasını 
// sağlayarak sosyal medya paylaşım sayısının korunmasını sağlıyor.
$url_change_date = strtotime("1/1/2015");
$post_date       = strtotime(get_the_date("n/j/Y"));
$sharing_url     = get_permalink();
$postid          = get_the_ID();

if ($post_date &lt; $url_change_date) {
  $url_id_prefix = "/" . $postid . "-";
  $sharing_url   = str_replace("codersgrave.com/", "codersgrave.com" . $url_id_prefix, $sharing_url);
  $sharing_url;
}

// $sharing_url'i sosyal medya eklentilerinin URL ya da href
// alanlarına ekleyerek paylaşımların sayısı korunmuş oluyor.

?&gt;</code></pre>
<p>Yine de uzun vadede bu pek de mantıklı bir düzenleme gibi görünmüyor. Çünkü bu kod bloku ile eski yazılarınız hep eski bağlantıları ile paylaşılacak ve bu bağlantılarla siteye gelindiğinde yeni bağlantıya yönlendirme yapılacak. Bu durumda sitedeki yönlendirmeleri sitenin ömrü boyunca tutmak zorunda kalıp eski formatta yeni bir bağlantı oluşturamayacaksınız. Buradaki örneğe göre eski bağlantıları korursam asla şu şekilde bir bağlantı oluşturamam: &#8220;2015-seo-cozumleri&#8221;. Bu sebeple yeni bağlantılara bağlı kalıp eskilerden tamamen vazgeçmeye karar verdim. Eğer paylaşım sayılarınız çok yüksekse yukarıdaki çözümü de kullanmak isteyebilirsiniz. Bu karar siteden siteye farklılık gösterebilir.</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/">WordPress&#8217;te kalıcı bağlantı değişimi ve bunun SEO&#8217;ya etkisi</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/wordpress-kalici-baglanti-degisimi-seo-etkisi/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Modern Tarayıcılarda DOM Level 3 Altında Olay Tetikleme</title>
		<link>https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme</link>
					<comments>https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/#respond</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Tue, 11 Dec 2012 08:05:26 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dom level 3]]></category>
		<category><![CDATA[event trigger]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1608</guid>

					<description><![CDATA[<p>Eğer Level 2 DOM HTML Tanımlaması&#8216;na bakarsanız, click() fonksiyonunun sadece HTMLInputElement&#8216;ine tanımlanmış olduğunu görürsünüz. Bu durum Safari&#8217;de olayın(event) tetiklenmemesi gibi bir soruna yol açıyor. Modern tarayıcılarda DOM Level 3 altında olay tetiklemenin doğru yolu aşağıdaki gibidir: // First create an... <a class="more-link" href="https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/">Modern Tarayıcılarda DOM Level 3 Altında Olay Tetikleme</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Eğer <a href="https://www.w3.org/TR/2009/REC-DOM-Level-2-HTML-20090303/html.html#ID-2651361">Level 2 DOM HTML Tanımlaması</a>&#8216;na bakarsanız, <code class="prettyprint">click()</code> fonksiyonunun sadece <code class="prettyprint">HTMLInputElement</code>&#8216;ine tanımlanmış olduğunu görürsünüz. Bu durum Safari&#8217;de olayın(<em>event</em>) tetiklenmemesi gibi bir soruna yol açıyor.</p>
<p>Modern tarayıcılarda DOM Level 3 altında olay tetiklemenin doğru yolu aşağıdaki gibidir:</p>
<pre><code class="prettyprint">// First create an event
var click_ev = document.createEvent("MouseEvent");

// Initialize the event
click_ev.initEvent("click", true /* bubble */, true /* cancelable */);

// Trigger the event
document.getElementById("someElement").dispatchEvent(click_ev);</code></pre>
<p>Safari, Chrome, Firefox, Opera ve IE9&#8217;da çalışan jsfiddle örneğine <a href="http://jsfiddle.net/sevilyilmaz/SWxNt/3/" target="_blank" rel="noopener">buradan</a> bakabilirsiniz.</p>
<p><a href="http://stackoverflow.com/a/12764734/766665" target="_blank" rel="noopener">Orijinal yazı</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/">Modern Tarayıcılarda DOM Level 3 Altında Olay Tetikleme</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/modern-tarayicilarda-dom-level-3-altinda-olay-tetikleme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cross Domain Engelini Aşmak</title>
		<link>https://codersgrave.com/cross-domain-engelini-asmak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cross-domain-engelini-asmak</link>
					<comments>https://codersgrave.com/cross-domain-engelini-asmak/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Wed, 28 Nov 2012 18:28:02 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[cross-domain]]></category>
		<category><![CDATA[document.domain]]></category>
		<category><![CDATA[postMessage]]></category>
		<category><![CDATA[window.name]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1576</guid>

					<description><![CDATA[<p>iframe kullanmak zorunda olan neredeyse herkesin karşısına çıkmıştır cross-domain problemi ve bir o kadar da baş ağrıtmıştır ilk seferinde. Aynı şey benim de başıma geldiğinden biliyorum. Her şey gibi bunun da çözümü hatta çözümleri var. Kesin çözüm HTML5 postMessage. Bitti... <a class="more-link" href="https://codersgrave.com/cross-domain-engelini-asmak/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/cross-domain-engelini-asmak/">Cross Domain Engelini Aşmak</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>iframe kullanmak zorunda olan neredeyse herkesin karşısına çıkmıştır cross-domain problemi ve bir o kadar da baş ağrıtmıştır ilk seferinde. Aynı şey benim de başıma geldiğinden biliyorum. Her şey gibi bunun da çözümü hatta çözümleri var. Kesin çözüm HTML5 <strong>postMessage</strong>. Bitti 🙂</p>
<p>Alex Sexton <a href="http://alexsexton.com/blog/2011/06/breaking-the-cross-domain-barrier-screencast/" target="_blank">bu sunumunda</a> birden fazla çözüm önerisiyle anlatmış ve bunları artıları ve eksileriyle ortaya koymuş. Oldukça başarılı bir anlatım olmuş.</p>
<p>Bunların bir kısmını denedim ve SharePoint 2010 Intranet ortamında karşılaştığım sonuçları ve nihayi çözümü yazıyorum. Yapılanları tek tek anlatmayacağım, sadece çözümü detaylandıracağım. Diğerlerini Alex Sexton&#8217;ın sunumunda daha detaylı bulabilirsiniz.</p>
<p>Güvenlik nedenlerinden dolayı iletişimde olacak <em>frame</em>&#8216;lerin protokolleri (<code>http</code>, <code>https</code>), port numaraları (http için <code>80</code>), ve <em>host</em>&#8216;ları aynı olmalıdır. Aksi takdirde aşağıdaki örnekteki uyarıyla karşılaşırsınız.</p>
<p>Örnek şu: A domainin içindeki B domain&#8217;li bir iframe içinden bir <em>input</em>&#8216;ın değerini almak ya da iframe&#8217;in içindeki bir elemana değer atamak.<span id="more-1576"></span><br />
Bunu denediğiniz zaman karşılaşacağınız olası uyarı mesajı şu olacaktır (jQuery mesajı):<br />
 <span style="font-size: x-small; color: #f00">Unsafe JavaScript attempt to access frame with URL B from frame with URL A. Domains, protocols and ports must match.</span></p>
<h2>Çözüm Denemeleri:</h2>
<h4>1- window.name</h4>
<p>Buna erişmeyi denediğimde yine aynı uyarıyı aldım.</p>
<h4>2- document.domain</h4>
<p>İşe yaramadı.</p>
<h4>3- iframe içinde en üstteki katmanın domain&#8217;inde bir iframe daha açmak</h4>
<p>iframe dışındaki <em>domain</em>&#8216;i bilmiyor. URL&#8217;ine yazdırılsa bile SharePoint&#8217;in bir işlemi sonrasında URL değişiyor. Sadece tek seferinde URL alınabiliyor. Alt katmanda yine işe yaramıyor.</p>
<h4>4- window.postMessage</h4>
<p>Parmaklar yukarı. Aynı zamanda uygulaması en kolay çözümlerden biri. Olay temelde şu: Bir &#8220;event listener&#8221; ekliyorsunuz. O mesajın gelmesini tetikte bekliyor. Mesaj bir frame&#8217;den diğerine gönderildiği anda onu yakalıyor.</p>
<pre><code class="prettyprint">var otherWindow = document.getElementsByTagName('iframe')[0].contentWindow,
    targetDomain = 'http://garage.codersgrave.com',
    sourceDomain = 'http://codersgrave.com';

/*
 * Eğer iframe içinden dışarıya gönderilecekse
 * otherWindow = parent olmalı
 */

// Mesajın gönderileceği ekrandaki kod
otherWindow.postMessage('hoop robocop', targetDomain);


// Mesajın alınacağı ekrandaki kod
if (window.addEventListener) {
  window.addEventListener('message', receiveMessage, false);

// IE8+
} else if (window.attachEvent) {
  window.attachEvent('onmessage', receiveMessage);
}

function receiveMessage (e) {

  // Mesaj beklediğiniz adresten gelmiş ise
  if (e.origin === sourceDomain) {
    alert(e.data);
  }
}</code></pre>
<p><strong>Tarayıcı desteği</strong>: Bu örnek IE8-9, Chrome ve Firefox&#8217;da test edildi. <em>postMessage</em> desteklemeyen tarayıcılar için Ben Alman&#8217;ın <a href="http://benalman.com/projects/jquery-postmessage-plugin/" target="_blank">çok güzel bir jQuery plugin</a>&#8216;in var. postMessage&#8217;a <em>polling</em>, <em>delay</em> ve birkaç kontrol daha eklemiş. IE6-8 ve Opera 9 desteği de veriyor.</p>
<h3>Yararlı Kaynaklar</h3>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/DOM/window.postMessage" target="_blank">MDN window.postMessage</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ie/cc197015(v=vs.85).aspx" target="_blank">MSDN postMessage method</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#web-messaging" target="_blank">HTML5 Web messaging specification</a></li>
</ul>
<p>Siz hangi metodu kullanıyorsunuz? Bu yöntem işinize yaradı mı? Yazmaktan çekinmeyin.</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/cross-domain-engelini-asmak/">Cross Domain Engelini Aşmak</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/cross-domain-engelini-asmak/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>CSS, jQuery: Daha Üstün Performans</title>
		<link>https://codersgrave.com/css-jquery-daha-ustun-performans/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-jquery-daha-ustun-performans</link>
					<comments>https://codersgrave.com/css-jquery-daha-ustun-performans/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Sun, 08 Jul 2012 16:01:24 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[css preformance]]></category>
		<category><![CDATA[efficiency css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js performance]]></category>
		<category><![CDATA[reusable css js]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1498</guid>

					<description><![CDATA[<p>CSS ve jQuery performans ve optimizasyon konusunda kafaları yemiş biri olarak bu güzelim Pazar gününde hem kendim hem sizin için performans ve optimizasyonu araştırdım. (Tabi dün güneşin altında saatlerce dolaşıp amele yanığı olduktan sonra bugün bir yere çıkmayacağım kesindi) Bu... <a class="more-link" href="https://codersgrave.com/css-jquery-daha-ustun-performans/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/css-jquery-daha-ustun-performans/">CSS, jQuery: Daha Üstün Performans</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>CSS ve jQuery performans ve optimizasyon konusunda kafaları yemiş biri olarak bu güzelim Pazar gününde hem kendim hem sizin için performans ve optimizasyonu araştırdım. (Tabi dün güneşin altında saatlerce dolaşıp amele yanığı olduktan sonra bugün bir yere çıkmayacağım kesindi)</p>
<p>Bu araştırmamdaki en büyük etken Burak&#8217;ın yazdığı kodların (CSS ve jQuery) üzerine onunla girdiğimiz tartışmaların sonucu doğru ve yanlış bildiğim şeyleri tekrar gözden geçirme isteği.</p>
<p><span style="color: #888888;"><em>Not:</em></span> Araştırmamın sonucunda ben haklı çıktım burası ayrı bir konu 😉 Ama doğru bildiğim bazı yanlışları da düzeltme fırsatı buldum.<br />
<span id="more-1498"></span><br />
Konuyu ayrı başlıklar altında inceleyeceğim. İlk önce CSS.</p>
<h3 id="toc-css">CSS</h3>
<p>Bu sayfaları birçoğunuz biliyorsunuz zaten. Ama bilmediğiniz varsa iyi bir referans olur size çalışmalarınızda:</p>
<ul>
<li><a title="Optimize browser rendering - Make the Web Faster &amp;mdash; Google Developers" href="https://developers.google.com/speed/docs/best-practices/rendering" target="_blank">Optimize browser rendering &#8211; Make the Web Faster — Google Developers</a></li>
<li><a title="Writing efficient CSS" href="https://developer.mozilla.org/en/Writing_Efficient_CSS" target="_blank">Writing efficient CSS</a></li>
<li><a title="Remove unused CSS" href="https://developers.google.com/speed/docs/best-practices/payload?hl=tr#RemoveUnusedCSS" target="_blank">Remove unused CSS</a></li>
<li><a title="Efficiently Rendering CSS" href="http://css-tricks.com/efficiently-rendering-css/" target="_blank">Efficiently Rendering CSS</a></li>
</ul>
<p>Yukarıda anlatılanlara göre daha efektif ve performanslı bir CSS için:</p>
<dl>
<dt>Kullanılmayan CSS&#8217;leri sil</dt>
<dd>Kullanılmayan her stili silmek indirme süresini azaltarak sayfanızın daha hızlı taranmaya başlamasına başlar.</p>
<p>Aynı zamanda tarayıcının CSS motoru varolan tüm CSS kurallarının sayfada kullanılıp kullanılmadığını kontrol eder. Kullanılanları sayfaya uygular. Ancak kullanılmayanlar için de bir işlem gücü ve zaman harcar.</p>
<p>Sayfaya eklenen, eklenmeyen tüm stilleri ve harcanan süreleri görmek için Webkit&#8217;in CSS Profiler&#8217;ı kullanılabilir.<br />
<a href="http://codersgrave.com/wp-content/uploads/2012/07/webkit-css-profiler.png"><img loading="lazy" class="alignnone size-thumbnail wp-image-1504" title="Webkit CSS Profiler" src="http://codersgrave.com/wp-content/uploads/2012/07/webkit-css-profiler-e1341755660192-150x150.png" alt="Webkit CSS Profiler" width="150" height="150" /></a></p>
</dd>
<dt>Efektif ve performanslı CSS için aşağıdakileri yapma</dt>
<dd>
<dl>
<dt>Etiket isimini anahtar olarak kullanma</dt>
<dd>
<pre><code class="prettyprint">#footer h3 {...}</code></pre>
<p>Bunun yerine aşağıdaki kullanılabilir.</p>
<pre><code class="prettyprint">#footer .title {...}</code></pre>
</dd>
<dt>Genel seçicileri anahtar olarak kullanma</dt>
<dd>
<pre><code class="prettyprint">.hide-scrollbars * {...}</code></pre>
<p>Bunun yerine aşağıdaki kullanılabilir.</p>
<pre><code class="prettyprint">#hide-scrollbars .item {...}</code></pre>
</dd>
<dt>Torun seçicileri anahtar olarak kullanma</dt>
<dd>
<pre><code class="prettyprint">ul &gt; li &gt; a {...}</code></pre>
<p>Bunun yerine aşağıdaki kullanılabilir.</p>
<pre><code class="prettyprint">#list .link</code></pre>
</dd>
<dt>Fazladan niteleyiciler</dt>
<dd>
<pre><code class="prettyprint">.container#content div.container</code></pre>
</dd>
</dl>
</dd>
</dl>
<h3 id="toc-jquery">jQuery</h3>
<p>CSS&#8217;in aksine JS&#8217;de daha iyi performans için bazı alanları eklemek gerekiyor. Fazladan niteleyici ve seçiciye en yakın ID&#8217;li kapsayanı eklemek gibi.</p>
<ul>
<li><a title="jQuery Proven Performance Tips And Tricks (Slides)" href="http://addyosmani.com/jqprovenperformance/" target="_blank">jQuery Proven Performance Tips And Tricks (Slides)</a> &#8211; jQuery takım üyesi Addy Osmani</li>
<li><a title="10 Advanced jQuery Performance Tuning Tips from Paul Irish" href="http://jonraasch.com/blog/10-advanced-jquery-performance-tuning-tips-from-paul-irish" target="_blank">10 Advanced jQuery Performance Tuning Tips from Paul Irish</a> &#8211; Paul Irish&#8217;i biliyorsunuz zaten</li>
<li><a title="15 Powerful jQuery Tips and Tricks for Developers" href="http://tutorialzine.com/2011/06/15-powerful-jquery-tips-and-tricks-for-developers/" target="_blank">15 Powerful jQuery Tips and Tricks for Developers</a></li>
<li><a title="jQuery Performance Tips Cheat Sheet" href="http://dumitruglavan.com/jquery-performance-tips-cheat-sheet/" target="_blank">jQuery Performance Tips Cheat Sheet</a></li>
<li><a title="JQuery Performance Tips And Tricks With Addy Osmani" href="http://ontwik.com/javascript/jquery-performance-tips-and-tricks-with-addy-osmani/" target="_blank">JQuery Performance Tips And Tricks With Addy Osmani</a> &#8211; Video</li>
</ul>
<p>Yukarıdaki kaynaklara göre bu kurallar daha efektif ve performanslı bir jQuery kodu yazmamıza olanak sağlar:</p>
<dl>
<dt>Gerektiğinde düz JavaScript kullanın.</dt>
<dd>
<p>Sonuçta jQuery de bir JS kütüphanesi ve içinde düz JS kodlarıyla çalışıyor. O yüzden jQuery kullanmadan çözülebilecek yerleri düz JS ile çözün.</p>
</dd>
<dt>Nesnelerinizi önbelleğe yazın</dt>
<dd>
<pre><code class="prettyprint">var header = $('#header');</code></pre>
</dd>
<dt>Sınıflara etiket ismi ekleyin</dt>
<dd>
<pre><code class="prettyprint">$('a.button');</code></pre>
</dd>
<dt>Seçicileri en yakın ID&#8217;le elemanın torunu olarak çağırın</dt>
<dd>
<pre><code class="prettyprint">$('#navigation a.button');</code></pre>
</dd>
<dt>Seçicileri sağdan sola modeline göre yazın</dt>
<dd>
<pre><code class="prettyprint">$('a.contact-links .side-wrapper');</code></pre>
<p>Bunun yerine aşağıdaki kullanılmalı.</p>
<pre><code class="prettyprint">$('.contact-links div.side-wrapper');</code></pre>
</dd>
<dt>jQuery&#8217;nin chaining(zincir) özelliğini kullanın</dt>
<dd>
<pre><code class="prettyprint">$('li.menu-item').click(function() {alert('test click')}).css('display', 'block').fadeTo(2, 0.7);</code></pre>
</dd>
<dt>Context yerine jQuery&#8217;nin <code class="prettyprint">.find()</code> özelliğini kullanın</dt>
<dd>
<pre><code class="prettyprint">var panels = $('div.panel', $('#content'));</code></pre>
<p>Bunun yerine aşağıdaki kullanılabilir.</p>
<pre><code class="prettyprint">var panels = $('#content').find('div.panel');</code></pre>
</dd>
<dt>Kullanmadığınız kodları sayfaya yüklemeyin</dt>
<dd>JS kodlarınızı birden fazla dosyaya bölün. İhtiyacınız olan sayfalarda bu dosyaları ekleyin.</p>
</dd>
<dt>Google CDN kullanın</dt>
<dd>Daha iyi tarayıcı önbelleklemesi için Google CDN kullanın</p>
<pre><code class="prettyprint">&lt;script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"&gt;&lt;/script&gt; </code></pre>
</dd>
</dl>
<p>Bunlar temel olarak işinize yarayacak kısımlar. Ayrıntılı bilgiler için bağlantılardaki adreslere bakabilirsiniz.</p>
<p>Performanslı ve efektif bir kod için sen ne önerirsin?</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/css-jquery-daha-ustun-performans/">CSS, jQuery: Daha Üstün Performans</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/css-jquery-daha-ustun-performans/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress Mediawiki Entegrasyonu</title>
		<link>https://codersgrave.com/wordpress-mediawiki-entegrasyonu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-mediawiki-entegrasyonu</link>
					<comments>https://codersgrave.com/wordpress-mediawiki-entegrasyonu/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Wed, 06 Jun 2012 16:06:43 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress mediawiki integration]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1464</guid>

					<description><![CDATA[<p>Nette bununla ilgili kaynak çok az ya da çok eski. mudadost.org&#8216;a Mediawiki eklemek istediğimde işte bu sorunlarla karşılaştım. Ama sonunda bununla ilgili bulduğum eski birkaç yazı bu sorunu çözmeme yardımcı oldu. Halihazırdaki wordpress pluginleri de ihtiyacı karşılamakta yetersiz kalıyor. Bir... <a class="more-link" href="https://codersgrave.com/wordpress-mediawiki-entegrasyonu/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/wordpress-mediawiki-entegrasyonu/">WordPress Mediawiki Entegrasyonu</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Nette bununla ilgili kaynak çok az ya da çok eski. <a href="http://mudadost.org" target="_blank">mudadost.org</a>&#8216;a <a href="http://www.mediawiki.org/" target="_blank">Mediawiki</a> eklemek istediğimde işte bu sorunlarla karşılaştım. Ama sonunda bununla ilgili bulduğum <a href="http://insites.ingenesis.net/2008/08/17/wordpress-bbpress-mediawiki/" target="_blank">eski</a> <a href="http://ciarang.com/wiki/page/WPMW" target="_blank">birkaç yazı</a> bu sorunu çözmeme yardımcı oldu. Halihazırdaki wordpress pluginleri de ihtiyacı karşılamakta yetersiz kalıyor. Bir tanesi vardı ama o da ücretli.</p>
<p>Temelde Mediawiki AuthPlugin&#8217;ini kullanıyorsunuz. WordPress tarafında hiçbir şey yapmıyorsunuz. PHP gurusu sayılmam; o yüzden yanlış yaptığım birşey varsa yorumlarla seslenin hemen.</p>
<p>Kullandığım WordPress versiyonu: <strong>3.3.2</strong>; Mediawiki versiyonu da: <strong>1.19.0.</strong><br />
<span id="more-1464"></span><br />
Öncelikle <strong>wiki</strong> (WordPress ana klasörünün hemen içine yani) klasörüne Mediawiki&#8217;nin normal kurulumunu gerçekleştiriyorsunuz. Sonra buradan AuthWordpress.php&#8217;yi indiriyorsunuz:<br />
<a href="http://insites.ingenesis.net/wp-content/uploads/2008/08/authwordpressphp.zip" target="_blank">AuthWordpress.php</a></p>
<p>Bu dosyayı da Mediawiki extensions klasörünün içine atıyorsunuz:</p>
<pre><code class="prettyprint">wiki/extensions/AuthWordpress.php</code></pre>
<p>Dosyada ufak bir değişiklik yapmanız gerekiyor. Çünkü Mediawiki AuthPlugin.php&#8217;yi AuthWordpress.php ile aynı klasörde gibi düşünüp çağırmayı deniyor. Ama <strong>extensions</strong> içinde değil <strong>includes</strong> içinde dosya. O yüzden bu kodu:</p>
<pre><code class="prettyprint">require_once('AuthPlugin.php');</code></pre>
<p>Bununla değiştirmelisiniz:</p>
<pre><code class="prettyprint">require_once('includes/AuthPlugin.php');</code></pre>
<p>Ardından da MediaWiki LocalSettings.php dosyasına şu kodları eklemelisiniz.</p>
<pre><code class="prettyprint">require_once( 'extensions/AuthWordpress.php' );
$wgAuth = new AuthWordpress();
$wgAuth-&gt;setAuthWordpressTablePrefix('wp_'); // wp-config.php'deki db önekiyle uyuşmalı
$wgAuth-&gt;setAuthWordpressDBServer ('localhost'); // wordpress host (örnek: localhost)
$wgAuth-&gt;setAuthWordpressDBName('DB_ADI'); // wordpress database
$wgAuth-&gt;setAuthWordpressUser('DB_KULLANICI_ADI'); // wordpress db kullanıcı adı
$wgAuth-&gt;setAuthWordpressPassword('DB_PAROLASI'); // wordpress db parolası</code></pre>
<p>Yukarıdaki bilgilerin wp-config.php&#8217;dekilerle aynı olduğuna emin olun.</p>
<p>Mediawiki&#8217;den kayıt olunmasını engellemek için aşağıdaki kodu da LocalSettings.php&#8217;ye ekleyin. Sonuçta giriş için WordPress kullanıcı bilgilerini kullacaksınız.</p>
<pre><code class="prettyprint">$wgGroupPermissions['*']['createaccount'] = false;</code></pre>
<p>Mediawiki <strong>.htaccess</strong> dosyası da aşağıdaki gibi olmalı:</p>
<pre><code class="prettyprint">Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]</code></pre>
<p>Hepsi bu kadar. Çalışan örneğini buradan görebilirsiniz: <a href="http://www.mudadost.org" title="www.mudadost.org" target="_blank">www.mudadost.org</a><br />
Bir sorunla karşılaşırsanız yazın; birlikte çözelim.</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/wordpress-mediawiki-entegrasyonu/">WordPress Mediawiki Entegrasyonu</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/wordpress-mediawiki-entegrasyonu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>taneryilmaz.pro: Yeni Site</title>
		<link>https://codersgrave.com/taneryilmaz-pro-yeni-site/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=taneryilmaz-pro-yeni-site</link>
					<comments>https://codersgrave.com/taneryilmaz-pro-yeni-site/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Tue, 31 Jan 2012 10:14:53 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Haberler]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[htm5]]></category>
		<category><![CDATA[one page]]></category>
		<category><![CDATA[tasarım]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1440</guid>

					<description><![CDATA[<p>Yeminli tercüman Taner YILMAZ&#8217;ın kişisel web sitesi. Tasarım, HTML5/CSS3: taneryilmaz.pro</p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/taneryilmaz-pro-yeni-site/">taneryilmaz.pro: Yeni Site</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Yeminli tercüman Taner YILMAZ&#8217;ın kişisel web sitesi.</p>
<p>Tasarım, HTML5/CSS3: <a title="taneryilmaz.pro • Türkçe - İngilizce Çeviri. English - Turkish Translation" href="http://taneryilmaz.pro" target="_blank">taneryilmaz.pro</a></p>
<p class="group"><a href="http://codersgrave.com/wp-content/uploads/2012/01/01-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation.png"><img loading="lazy" class="alignleft wp-image-1446 size-thumbnail" title="taneryilmaz.pro" src="http://codersgrave.com/wp-content/uploads/2012/01/01-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-150x150.png" alt="taneryilmaz.pro" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/02-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-What-I-Do.png"><img loading="lazy" class="alignleft size-thumbnail wp-image-1447" title="taneryilmaz.pro - What I Do" src="http://codersgrave.com/wp-content/uploads/2012/01/02-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-What-I-Do-150x150.png" alt="taneryilmaz.pro - What I Do" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/03-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-About.png"><img loading="lazy" class="alignleft size-thumbnail wp-image-1448" title="taneryilmaz.pro - About" src="http://codersgrave.com/wp-content/uploads/2012/01/03-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-About-150x150.png" alt="taneryilmaz.pro - About" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/04-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-Subtitles.png"><img loading="lazy" class="alignleft size-thumbnail wp-image-1449" title="taneryilmaz.pro - Subtitles" src="http://codersgrave.com/wp-content/uploads/2012/01/04-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-Subtitles-150x150.png" alt="taneryilmaz.pro - Subtitles" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/05-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-Contact.png"><img loading="lazy" class="alignleft size-thumbnail wp-image-1450" title="taneryilmaz.pro - Contact" src="http://codersgrave.com/wp-content/uploads/2012/01/05-T-ercume-Turkce-Ingilizce-Ceviri-English-Turkish-Translation-Contact-150x150.png" alt="taneryilmaz.pro - Contact" width="150" height="150" /></a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/taneryilmaz-pro-yeni-site/">taneryilmaz.pro: Yeni Site</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/taneryilmaz-pro-yeni-site/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Facebook Friend Selector</title>
		<link>https://codersgrave.com/facebook-friend-selector/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=facebook-friend-selector</link>
					<comments>https://codersgrave.com/facebook-friend-selector/#comments</comments>
		
		<dc:creator><![CDATA[Sevil Yılmaz]]></dc:creator>
		<pubDate>Sun, 01 Jan 2012 09:00:23 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Sosyal Ağ]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[friend chooser]]></category>
		<category><![CDATA[friend selection]]></category>
		<category><![CDATA[friend selector]]></category>
		<category><![CDATA[multi-friend selector]]></category>
		<guid isPermaLink="false">http://codersgrave.com/?p=1336</guid>

					<description><![CDATA[<p>Facebook Friend Selector is a friend selection assistant for your Facebook application or your website that is equipped with Facebook Connect. This tool returns you your friends ID&#8217;s only and you use them as you please. It was built using... <a class="more-link" href="https://codersgrave.com/facebook-friend-selector/">Continue Reading &#8594;</a></p>
<p>The post <a rel="nofollow" href="https://codersgrave.com/facebook-friend-selector/">Facebook Friend Selector</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Facebook Friend Selector is a friend selection assistant for your Facebook application or your website that is equipped with Facebook Connect. This tool returns you your friends ID&#8217;s only and you use them as you please. It was built using the <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a> library.</p>
<p style="text-align: center;"><a class="demo-link" href="http://facebook-friend-selector.codersgrave.com/">Demo &amp; Download</a></p>
<p class="group"><a href="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-1.jpg"><img loading="lazy" class="alignleft size-thumbnail wp-image-1342" title="Facebook Friend Selector Color Blue" src="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-1-150x150.jpg" alt="Facebook Friend Selector Color Blue" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-4.jpg"><img loading="lazy" class="alignleft size-thumbnail wp-image-1344" title="Facebook Friend Selector Search Results" src="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-4-150x150.jpg" alt="Facebook Friend Selector Search Results" width="150" height="150" /></a><a href="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-2.jpg"><img loading="lazy" class="alignleft size-thumbnail wp-image-1343" title="Facebook Friend Selector Show Count" src="http://codersgrave.com/wp-content/uploads/2012/01/preview-img-2-150x150.jpg" alt="Facebook Friend Selector Show Count" width="150" height="150" /></a></p>
<p><strong><em>This plugin is no longer maintained</em></strong>. Feel free to fork and update! <a href="https://github.com/codersgrave/Facebook-Friend-Selector" target="_blank">Github repo</a></p>
<p><span id="more-1336"></span></p>
<ul>
<li>Ability to set a maximum number for friend selection</li>
<li>Exclude as many people as you want from the list</li>
<li>Ability to show random friends list</li>
<li>Ability to set maximum friends on list</li>
<li>Search</li>
<li>Facebook invite option</li>
<li>Ability to select/deselect all friends</li>
<li>Ability to show selected friends</li>
<li>Ability to predefine selected friends</li>
<li>Overlay color selection</li>
<li>Overlay opacity selection</li>
<li>Ability to hide the overlay with a mouse click outside the box or a ESC key press</li>
<li>Centers the box on window resize</li>
<li>Ability to close the box onsubmit</li>
<li>Ability to enable or disable to display the number of selected people in the box</li>
<li>Seven color options (easily customizable)</li>
<li>Adaptability of texts to any desired language</li>
<li>Ability to decide what to do onstart</li>
<li>Ability to decide what to do onclose</li>
<li>Easy integration</li>
</ul>
<p>The post <a rel="nofollow" href="https://codersgrave.com/facebook-friend-selector/">Facebook Friend Selector</a> appeared first on <a rel="nofollow" href="https://codersgrave.com">Coders&#039; Grave</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codersgrave.com/facebook-friend-selector/feed/</wfw:commentRss>
			<slash:comments>45</slash:comments>
		
		
			</item>
	</channel>
</rss>
