Monday, August 1, 2016

Convert Set to List in Java 8 and Convert List to Set in Java 8

Convert Set to List in Java:

Set<Pencil> myPencilsSet = new HashSet<>()
List<Pencil> myPencilsList = new ArrayList<Pencil>(myPencilsSet);

Sort a list in Java:
Collections.sort(myPencilsList); 


Convert List to Set in Java:


Pencil pencil1 = new Pencil(1)
Pencil pencil2 = new Pencil(2)
Pencil pencil3 = new Pencil(3)

Set<Pencil> myPencilSet = new HashSet<>(Arrays.asList(pencil1, pencil2, pencil3))

Thats it. It is so easy.

Monday, May 9, 2016

Bir ülkenin geleceği, gençliğin geleceğinden ayrı düşünülemez!

Harun Karadeniz, 1967-1968 İstanbul Teknik Üniversitesi yıllığında şu satırları kaleme aldı:

“Gençliği ülke sorunları ile ilgilenmeyen bir ulusun sonu gelmiş demektir.Gençlik olarak biz, ülke sorunları ile ilgilenmeyi görev biliyoruz ve ülke sorunlarıyla ilgilenip etken olduğumuz ölçüde görevimizi yaptığımıza inanıyoruz.

Çünkü ülkenin geleceği, gençliğin geleceğinden ayrı düşünülemez. Biz ülke sorunları ile ilgilenmekle, gerçekte kendi geleceğimize sahip çıkmış oluyoruz. Yaşlı kuşağın bize devredeceği Türkiye’yi, Amerikan üslerini, bizi Amerika’ya bağlayan ikili anlaşmaları, yıldan yıla artan dış borçları ve Türk halkının nasıl sömürüldüğünü görüp de ülke sorunlarıyla ilgilenmemek en yumuşak söyleyişle ihanettir. Türk ulusuna ihanettir. Türk devletinin geleceğine ihanettir.

Gençliğin ülke sorunlarıyla ilgilenmesi ve sömürülen Türk halkından yana eylemler yapması, sömürgen çevreleri tedirgin etmekte ve bu çevreler “Gençlik siyaset yapıyor” diye feryadı basmaktadır.

Egemen sınıfın isteğine kalırsa, onlar bizi yönetecekler, ömrümüz boyunca acısını çekeceğimiz ikili anlaşmalarla bizi bir yabancı devlete bağlayacaklardır. Fakat biz kadere boyun eğeceğiz, bu ikili anlaşmalara karşı çıkmayacağız.

Bir doğu-batı savaşında onlar Türkiye’yi bir nükleer hedef haline getirecekler. Fakat biz NATO’ya karşı çıkmayacağız. Bütün yer altı kaynaklarımızı Amerika’ya peşkeş çekecekler, fakat biz bu sömürünün hesabını sormayacağız.

Köylünün ürününü ucuza kapatarak köyle kardeşlerimizi sömürecekler, fakat biz köylüyü sömürüyorsunuz dahi demeyeceğiz. Kıbrıs’ta yolumuzu kesen 6. filo İstanbul Limanı’na demirleyecek, fakat biz 6. filoyu protesto etmeyeceğiz.

Meslek bilgimizi kullanarak lüks binalar inşaa edeceğiz, fakat bu binalarda kimlerin yatıp kalktığını sormayacağız.Mühendis olarak silahlar yapacağız, fakat bu silahlar küçük ücretlerine zam isteyen işçi kardeşlerimize çevrildiği zaman ses çıkarmayacağız.

Bugünün öğrencileri yarının meslek adamları olarak ülkemizin bütün sorunları ile ilgilenmek zorundayız. Öğrenciliği bitirip meslek hayatına atılacak olan biz mühendisler için iki yol vardır. Bu yollardan biri, kim için ve ne için üretim yaptığını düşünmeksizin egemen sınıfların yararına üretim yapmaktır. Kısaca neden ve niçinini düşünmeksizin bir miktar karşılığında üretim yapmak yani robotlaşmak.

İkinci yol ise kim için ve ne için çalıştığını bilerek emekçi halkın yararına üretim yapma olanaklarını aramaktır. Bir başka deyişle, ikinci yol küçük bir azınlığın yararına robotlaşmak değil, büyük çoğunluğun, yani toplumun yararına çalışarak insanlaşmak yoludur.”

***

1942 yılında Giresun’da doğan Harun Karadeniz, 1962’de İTÜ İnşaat Fakültesine girdi.  Fikir Kulüpleri Federasyonu’na üye oldu. İlerleyen süreçte TİP’le tanıştı. Öğrenci Derneği başkanlığı ve İTÜ Öğrenci Birliği başkanlığı yaptı. Birçok anti-emperyalist eylemin en ön saflarında, boykotlarda, okul işgallerinde kitlelere öncülük eden isimlerden biriydi. 1960-1980 döneminde ülkenin sosyal sorunu haline gelen özel okulların devletleştirilmesinde önemli bir rol oynadı. 12 Mart Darbesi (1971) sonrası TKP ve Dev-Genç davalarından yargılandı. Dev-Genç davasından tutukluyken hapishanede ciddi bir hastalığa yakalandı, tedavisine izin verilmedi. 15 Ağustos 1975’de öldü.



Saygıyla anıyoruz…

Wednesday, March 16, 2016

How to upgrade Primefaces 3.5 to Primefaces 5.3?

In this article, I am going to talk about the steps to upgrade Primefaces. I installed Primefaces 5.3 and Primefaces Extensions 4.0.0. Primefaces 5.3 is totaly suitable with Primefaces Extensions 4.0.0. I was using Gradle as build automation system, so I am also giving the details for it. My JSF Mojarra version is 2.2. So lets start to steps....

To upgrade from Primefaces 3.5, do the steps below. Do the changes which are required for both PrimeFaces 4.0 and Primefaces 5.3 :

-- Menu changes

1) Find "MenuItem", replace with "UIMenuItem" (You can use find and replace tool of any IDE)
2) Find "org.primefaces.model.MenuModel", replace with "org.primefaces.model.menu.MenuModel"
3) Find "org.primefaces.model.DefaultMenuModel", replace with "org.primefaces.model.menu.DefaultMenuModel"
4) Find "addMenuItem", replace with  "addElement"
5) Find "addSubmenu", replace with "addElement"

-- Other changes

6) Add into web.xml :
<context-param>
  <param-name>facelets.SKIP_COMMENTS</param-name>
  <param-value>true</param-value>
</context-param>
7) Delete all showButtons="false".
8) Change save file function:
// save file
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(new File(pathToFile + fileName));

            InputStream inputstream = dosya.getInputstream();

            int read = 0;
            byte[] bytes = new byte[1024];

            while ((read = inputstream.read(bytes)) != -1) {
                fos.write(bytes, 0, read);
            }
            fos.close();
        }
9) In Javascript, find all .live(" , replace with .on(".
10) In Javascript, find and replace variable names:
Find: ([a-z]\w+).show\(\);
Replace with: PF\(\'$1\'\).show\(\);
Find: ([a-z]\w+).hide\(\);
Replace with: PF\(\'$1\'\).hide\(\);

-- Changes required just for PrimeFaces 5.3

Now do the changes which is required just for PrimeFaces 5.3 :

11) Remove all old PieChart, BarChart, and LineChart. You have to rewrite all of them with new way which is explained the website of Primefaces 5.3.
12) Update faces-config.xml:
<resource-handler>org.primefaces.application.resource.PrimeResourceHandler</resource-handler>
13) Update build.gradle:
dependencies {
        compile 'org.primefaces:primefaces:5.3'
        compile 'org.primefaces.extensions:primefaces-extensions:4.0.0'
}
14) Create FileUploadRenderer which can be found in here.
15) decode functions require 3 parameters, add null as 3rd parameter.
16) Update MyClient.eml:
<lib name="primefaces-5.3.jar" scope="COMPILE">
<relative-module-cls project-related="jar://$PROJECT_DIR/primefaces-5.3.jar!/"/>
</lib>
<lib name="primefaces-extensions-4.0.0.jar" scope="COMPILE">
<relative-module-cls project-related="jar://$PROJECT_DIR$/primefaces-extensions-4.0.0.jar!/"/>
</lib>
17) Update Lazy classes: The last parameter of Load function must be final Map<String, Object> filters.
18) The old calendars are not working in Primefaces 5.3, so reimplement them.
19) Refresh Gradle, deploy&try the system.

Have fun with your new JSF project with Primefaces 5.3.

Seval.

Friday, March 4, 2016

How to upgrade Primefaces 3.5 to Primefaces 4.0?

Here are the step by step to upgrade Primefaces from 3.5 to 4.0 :
  • MenuModel is rewritten and not backward compatible with the old version. Change the import addresses with new ones.
    • In Primefaces 3.5:
      • import org.primefaces.component.menuitem.MenuItem;
      • import org.primefaces.model.DefaultMenuModel;
      • import org.primefaces.model.MenuModel;
    • In Primefaces 4.0:
      • import org.primefaces.component.menuitem.UIMenuItem;
      • import org.primefaces.model.menu.DefaultMenuModel;
      • import org.primefaces.model.menu.MenuModel;
  • DataTable sortBy and filterBy expressions require the plain property name meaning "name" instead of "#{person.name}". Backward compatibility is maintained for expressions like "#{var.property}" but not for complex expressions. 
    • In Primefaces 3.5:
      • sortBy="#{projectName}" 
    • In Primefaces 4.0:
      • sortBy="projectName" 
  • FileUpload is reimplemented. Probably the old fileupload of Primefaces 3.5 is not going to work in JSF (Mojarra) with Primefaces 4.0. Use the solution mentioned in http://stackoverflow.com/a/19381134.
  • disabledSelection option of column, moved to DataTable, change is backward compatible and the option will be removed from column in a future release. So remove "disableSelection" option from columns.
  • AutoComplete: removed process/global/onstart/oncomplete in favor of "p:ajax event="query" process/global/onstart/oncomplete". If you are already using ajax, so do not change anything.
  • Preferred way of accessing widgets is via PF('widgetVarName').show(), old way (e.g. widgetVarName.show()) is still supported and will be removed in a future version.
    • In Primefaces 3.5:
      • widgedVarName.hide();
    • In Primefaces 4.0:
      • PF('widgetVarName').hide();
You can use find and replace function of Eclipse, IntellijIdea or Netbeans. To change all way of accessing widgets from plain variable name to PL('variableName'), use regular expression.

Search for: ([a-z]\w+).show\(\);

Replace with: PF\(\'$1\'\).show\(\);

Sources

https://github.com/primefaces/primefaces/wiki/Migration-Guide
http://developer.axonivy.com/doc/latest/doc/migrationNotes/MigrationNotesDesigner5.1.html

Saturday, February 6, 2016

Görev Tamamlandı

Şu hayatta en çok kendimizi ne zaman sorgularız biliyor musunuz, yapmamız gereken bir görevi yaparken. İşte o anlarda insan kendisinde bir şeyler yapacak gücü bulmak için savaşır. Benim yüksek lisansta tez yazma dönemim de işte böyle geçti. Ne zaman tez ile ilgili bir şey yapmak için bilgisayarın başına otursam kendimi sorgulamaya başlıyordum. İnsan kendisini sorguluyor. Bugüne kadar yaptıklarını, yapmak istediklerini, neler yapmak isteyip de yapamadıklarını... Hani ödev yapmanız gerekirken hayatta okumaya tenezzül etmeyeceğiniz kitapları okursunuz, izlemeyeceğiniz dizileri izlersiniz... Hani erken kalmanız gerekirken daha fazla uykunuz gelir. İşte o anlarda kendinizle savaşırsınız. Yüksek lisans yapmak aynen böyle bir şey. Yapmak istiyorsunuz, başarmak istiyorsunuz, ama yapmasanız da olur düşüncesi sizi bırakmıyor bir türlü. Zaten yıllarca çalışmaktan beyni yorulmuş insanların artık ders çalışmak istememesi çok doğal. Aynı zamanda derslerden başarısız oldukça pes etmeyip başarılı olana kadar savaşmak yaşlandıkça artık zor geliyor. Tez yazmak isterken hep ben neden bunu yapıyorum diye düşünüp durdum...

Yüksek lisans en sonunda sizin ruhunuzda istek, gözlerinizde fer kalmadığı zaman bitiyor. İşte o zaman bitirdiğinize inanamıyorsunuz. O bitti gitti duygusuna bir türlü kapılamıyorsunuz. Sanki yarın olacak ben yine okula gitmek zorunda kalacağım. Çünkü yüksek lisansta geçirdiğim 3,5 yıl boyunca hem üniversitenin hem de yök'ün dayattığı çok gereksiz dersleri almak zorunda kaldım. Öğretim'in çok farklı bir doğası var. O anda kendinizi zorluyorsunuz, anladığınızı sanıyorsunuz, ezberliyorsunuz, ders bittikten 1 hafta sonra her şeyi unutuyorsunuz. Beyninizde geriye sadece ders hakkında bir fikriniz kalıyor. O zaman dersler fikir vermek içinse neden insanlara bu işkence yapılıyor. Bunu anlamak mümkün değil.

Yüksek lisans akademik çalışma yapmak, yayın yapmak ve bilimsel aktivitelerde bulunmak için değil mi? Fakat yayın yapacak, araştırma yapacak vakti ilgi ve bilgi alanımız olmayan dersleri almakla harcamamız saçma değil mi... Bu derslerde zaten derse ilginiz değil ezberlediğiniz şeyler sizi başarıya götürüyor. Bunu tecrübeyle gördüm. Ne zaman ki ilgi duyduğum bir ders alsam başarısız oldum. Sonra bu başarısızlığı ilgi duymadığım ama ezber yaptığım derslerdeki başarılarımla telafi ettim. O zaman insan soruyor acaba başarısız mıyım, bıraksam mı... Bir yıl geçmiş ben sadece 2 ders geçebilmişim, o zaman ne yapsam?...

Tam dersler bitti derken hoop tez başladı. Tezde yapabileceğime inanmadığım her şeye kendimi inandırdım ve yaptım. Yoksa bu tezler nasıl ortaya çıkardı? Bazen tıkandığım anlar oldu, pes ettiğim bıraktığım zamanlar yaşadım. Yapamayacağım dediğim çok an oldu...

Kendimi çok sorguladım, çok inandırmaya çalıştım. Evet ben bunu yaparım diye kendimi inandırmaya çalıştım. Bu süreçte beynimi o kadar meşgul ettim ki kendimi unuttum. Her gün bir kaç kere linkedin'e, facebook profilime girip ben kimim diye baktım. Kendimi hatırlayıp, kendime inancımı yeniledim. Evet ben buyum ve yapabilirim dedim. Linkedin benim aynam oldu. Ne zaman umudum yok olmaya başlasa, ne zaman kendimi içimde ağır bir sıkıntı ile bulsam o zaman linkedin'e girdim. Kendime baktım ve bunu yapabilirim dedim. Geçmişte yaptıklarıma bakmak beni cesaretlendirdi.

Önüme çıkan zorlukları bir basamak olarak görüp onları fırsata çevirmek için uğraştım. Dönem ortasında tez hocam tarafından terk edildim ve 2. kez tez hocası değiştirmek zorunda kalmamak için uğraştım. Aldığım bursu kaybettim ama geri ödememek için uğraştım. Hiç kimsenin almadığı dersleri aldım, bazen bıraktım bazen geçtim. İntibak yüzünden yeniden ders almak zorunda kaldım. Elimden gelenin en iyisini yaptım. Bu süreçte odtü bilgisayar mühendisliğinde verilen neredeyse bütün dersleri aldım, neredeyse bütün hocalarla tanıştım. Bu süreçte 4 kere iş değiştirdim. Çalıştığım yerlerde yaşadığım olumsuz deneyimlere üzülmedim. Hep tecrübe olarak gördüm ve yoluma devam ettim. İnsanlar hayatımızdan gelip geçerken ben seyrettim. Olduğum yeri, konumumu, yapabileceklerimi biliyordum. Kimsenin bunu bana söylemesine gerek yoktu. Ama öyle anlar oluyordu ki insanlardan kaçmak istiyordum. O zamanlarda odtü'nün sevimli kampüsüne sığındım. Odtü benim için bazen herkesten kaçtığımda elimde bavulla gittiğim bazen sadece kafamı dinlemek için gittiğim bir yuvam oldu. Odtü bazen ağladığım bazen gülme krizlerine girdiğim acısıyla tatlısıyla yaşamımda büyük bir yer edindi.

İnsanın hayatında her zaman dışarıdan gelen zorluklar olmuştur. Ama başarının önündeki en temel engel insanın kendisidir. Bence insan kendisiyle savaşmaktan korkmamalı. Ben bu noktaya gelebilmek için kendi kendimi yenmek zorunda kaldım. Pes edecek gibi olduğum zaman odtü kütüphanesine sığındım. En yakınımdaki insanlar bile bırak dedikleri halde bırakmadım. Çünkü kendime inanıyordum. Başkaları için çok kolay olabilirdi ama benim için hiç de öyle olmadı.

Sonuçta insanlık için küçük, benim için büyük bir adım oldu. Bu süreçte büyüdüm, yaşlandım, kendimi tanıdım, yapmak istediğim işi, olmak istediğim insanı seçtim. Ben bu süreçte hayatımda olmasını istediğim şeylere karar verdim. Gerçekten böyle bir tecrübeyi her iyi kalpli insanın yaşamasını ve başarıyla tamamlamasını dilerim.

Benim tez tamamlama sürecim halen devam ediyor. Tez jürisinden oy birliği ile geçtim. Bu son 3,5 yılda odtülü olmak güzeldi. Odtü'de olmak son derece güzeldi. Üzerimdeki ağırlıktan kurtulmakla birlikte, insanın ömür boyu gururla taşıyacağı bir altın bileziği de odtüden almış oldum.

Bunu bir anı olarak yazıyorum. İlerde baktığımda yaşadığım zorlukları hatırlamak için yazıyorum. Bu arada okuyorsunuz, takip ediyorsunuz çok teşekkür ederim. Okuduğunuzu biliyorum, linkedin'de ne zaman açsam beni ekleyen birkaç okurum oluyor ama maalesef kabul edemiyorum. Bunun için çok üzgünüm. Bundan yıllar önce yüzyüze tanışmadığım insanları eklememe kararı almıştım. Sizin de böyle yapmanızı öneririm. Saygı ve selametle.

Belki de vakti gelmiştir yeniden çimlere uzanıp bulutları bi şeylere benzetmenin.. Hadi ama biraz sıyrılın hırslarınızdan, kaldırın başınızı bilgisayardan.. Bulutlar hala bi şeye benziyor, bakkallardan hala alışveriş yapanlar var mesela, mesela duvarların üstünde çekirdek çitleyen kızlar, bisikletli çocuklar var.. apartmanlardan azıcık uzaklaşsanız yıldızlar bile duruyor hala yerinde.. konuşacak çok şey var birbirimizin kusurları dışında.. hayat güzel kuşlar uçuyor, açın kanatlarınızı, hadi ama.
--Sevilay V.

***

Sunday, December 20, 2015

Technical blog advise: Toptal Engineering blog

Editor of a technical blog -Toptal Engineering blog- reached me and I really love their blog. Their aim is to post technical publications like programming, software tools and tutorials. Their blog covers a variety of topics, across many programming languages and dev/design.

There is post about Java in the Toptal Engineering blog. It is Top 10 Most Common Mistakes That Java Developers Make: A Java Beginner’s Tutorial you can find it useful too. The topic says this post is for beginners but I think it is wrong. This blog post is for intermediate and advanced Java developers. Please bookmark it.

One of the Java mistakes which I usually do is forgetting to close the buffer readers. Also I never pay attention to the memory issues while writing codes in Java. However we should clear our garbage collector sometimes. The most of the developers create unneeded objects. For example, we are using different string objects rather than directly append strings. In addition to this, we all have a lot of unneeded null objects in the software. The main reason why we use unneeded objects is that we want to see the errors if there is a fail. So our first concern is handling errors, so the performance comes next. However we can do some little tricks while writing Java codes and we may gain performance too. The blog post which I mentioned is about these little tricks.

Have a nice read guys :)

Tuesday, January 6, 2015

SEO Tips

Don't spent a lot of money for Search Engine Optimization. Here are easy tips...

1. We should keep META-Description length under 160 characters. Search engines does not read after this length.

2. If text to code ratio of the main page is around %15, this is too low. We may consider removing some of the scripts if they are not in use in the main page.

3. Lets say we have 18 external links. We should keep them around 3 if we can. External links lowers reputation of the websites for search engines.

4. Having keywords is good but if the page does not have the keywords in META-Keyword tag, search engines thinks we are spamming. We should remove unused keywords from the META. Also we shouldn’t use more than 20 keywords anytime.

5. We have some broken links they are bad for SEO also. We can check them online using this tool http://www.iwebtool.com/broken_link_checker

6. One of the important thing for SEO is back links. Right now we don’t have much back links. We need to establish high quality back links to get better SEO results. I have this tool to start back linking but we need to consider adding web site to globally recognized directories like DMOZ, Yahoo, Archive.org etc. http://smallseotools.com/backlink-checker/ also this article is very useful on this purpose http://blog.hubspot.com/blog/tabid/6307/bid/10322/The-Ultimate-List-50-Local-Business-Directories.aspx

7. Social media integration is another key point. Right now search engines don’t know our social accounts. google+ is a good starting point. We may add our website as a local business on map. This will help google to index website much faster. I think we should have twitter, linkedIn, facebook and google+ accounts to start.

8.We should check W3C validity of the Html. We can check this here http://validator.w3.org/

9. Add google analytics code into your website and analyze web site there to see if we have missed any other points.

10. For the site links, best practice is, if the target url is in our domain we should not use _blank. If the target url is in a different domain we should use _blank.

11. Bundling helps us to compress and minified js and css files into a single file for saving bandwidth and number of requests to load page. Inline scripts are important for SEO since search engines only reads first 100K of your web site. If we have inline scripts in the page, search engines will read these scripts instead of actual page content. We can also include having too many js or css links in the page to this problem. So bundling will help us for SEO purpose as well. Having a clean html is important as having a clean page layout. You can call it is occupational habit but I like to check html source of company web sites that I like to work with. Some of them are very clean and organized. They even hides messages in html like “Thank you for checking our source codes. We tried to keep everything clean and neat. Hope you enjoy!” In Wordpress there is a plugin called Js & Css Optimizer. You can combine and minify suitable css and js files using that plugin.

12. Create a sitemap.xml and submit it to Google with Google Web Master Tools. There is this site to generate sitemaps if we need to https://www.xml-sitemaps.com/ I used this all the time and had good results.

13. Robots.txt is so important for search engines. If you are using Wordpress, here is the best robots.txt file:

sitemap: http://mywebsitename.com/sitemap.xml

User-agent: *
# disallow all files in these directories
Disallow: /cgi-bin/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /archives/
Disallow: /*?*
Disallow: *?replytocom
Disallow: /wp-*
Disallow: /author
Disallow: /comments/feed/
User-agent: Mediapartners-Google*
Allow: /

User-agent: Googlebot-Image
Allow: /wp-content/uploads/

User-agent: Adsbot-Google
Allow: /

User-agent: Googlebot-Mobile
Allow: /

14. Before uploading a new image:

* Rename it with keywords. E.g: crm-salesforce-secure-ImageName.jpg

* Check it's size. Better less than 100 KB.

15. When adding a new image into a page:

* Please add "Alt" attribute to all images. It should be meaningful. You can copy&paste the image name for image "Alt" attribute. "Alt" attribute is important for search engines.

* You can add "Link Title", it should be meaningful too. But that is not as important as "Alt" attribute.

* You can add link to the images. The image link will be the same as image URL. (This enables Google will index our images and they will be searchable on Google Image Search). Link target can be "_blank" which means image is going to be opened in a new browser tab. If we use a lightbox plugin, we don't add target attiribute.

16. When adding a URL:

* If the url is not in our host, you can give it like "Open link in a new window tab". (This can be done using target="_blank" attribute in html) In this way, our website will not closed, so user can return our website easily with browser tab.

* Links should be meaningful. "visit this" is not proper, but "visit crm".

17. Writing a Text:

* Please use bold for key words. For example "crm" and "Salesforce" should be bold. Emphasized words are indexed in Google as a keyword.

* Please use meaningful titles.

* Use keywords in the first paragraph (especially in first sentence) and last paragraph. Use keywords like crm, secure, salesforce etc.

18. SEO Analysis & Reports

Keyword Density (http://smallseotools.com/keyword-density-checker/)
Code To Text Ratio (http://smallseotools.com/code-to-text-ratio-checker/)
Link Analyze (http://smallseotools.com/website-link-analyzer-tool/)

Keyword Position Checker (http://smallseotools.com/keyword-position/)
Back Link Checker (http://smallseotools.com/backlink-checker/)
Page Rank Checker (http://smallseotools.com/google-pagerank-checker/)

Seval / January 2014 / Ankara Turkey 
Related Posts Plugin for WordPress, Blogger...