27 Kasım 2015 Cuma

Java Excel dosyası okuma

 import java.io.FileInputStream;  
 import java.io.IOException;  
 import java.util.ArrayList;  
 import java.util.Iterator;  
 import java.util.List;  
 import org.apache.poi.hssf.usermodel.HSSFCell;  
 import org.apache.poi.hssf.usermodel.HSSFRow;  
 import org.apache.poi.hssf.usermodel.HSSFSheet;  
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
 import org.apache.poi.ss.usermodel.Cell;  
 import org.apache.poi.ss.usermodel.Row;  
 public class ExcelTransaction {  
      static public List<List<HSSFCell>> readExcelFile(String path) throws IOException{  
           List<List<HSSFCell>> sheetData = new ArrayList<List<HSSFCell>>();  
           FileInputStream fis = new FileInputStream(path);  
           try {  
                HSSFWorkbook wb = new HSSFWorkbook(fis);  
                HSSFSheet sheet = wb.getSheetAt(0);  
                //Excell dosyasında satırlar için iterator oluşturuluyor.  
                Iterator<Row> rows = sheet.rowIterator();  
                //Satırlar geziliyor.  
                while (rows.hasNext()) {  
                     HSSFRow row = (HSSFRow)rows.next();  
                     //Satırda bulunan hücreler icin iterator olusturuluyor.  
                     Iterator<Cell> cells = row.cellIterator();  
                     List<HSSFCell> cellList = new ArrayList<HSSFCell>();  
                     //Hücreler geziliyor.  
                     while (cells.hasNext()) {  
                          HSSFCell cell = (HSSFCell) cells.next();  
                          cellList.add(cell);  
                     }  
                     sheetData.add(cellList);  
                }  
                return sheetData;  
           } catch (IOException e) {  
                e.printStackTrace();  
           }finally  
           {  
                if(fis != null)  
                     fis.close();  
           }  
           return null;  
      }  
      public static void main(String[] args) throws IOException {  
           List<List<HSSFCell>> list = readExcelFile("D:\\Users\\emre.sevinc\\Desktop\\ornek.xls");  
           for (List<HSSFCell> object : list) {  
                System.out.println(object);  
           }  
      }  
 }  

Projelerinizde bir excel dosyasında bulunan verileri okuma veya işleme ihtiyacı duyabilirsiniz. Java dilinde bu soruna çözüm olarak Apache firmasının geliştirmiş olduğu apache.poi kütüphanesi size yardımcı olabilir. Yukarıdaki kod örneğinde bir excel dosyasının nasıl okunabileceğini örnekledim. Kodu inceleyebilirsiniz.

4 Kasım 2015 Çarşamba

Cashback - POS Para nedir ?

Cashback özelliği debit kartlar üzerinde tanımlı olan bir özelliktir. POS Para işlemi gerçekleştirmek için kartınızın bu özelliğe sahip olması gerekmektedir. Şöyle ki, sizin bir debit kartınız varsa anlaşmalı mağazalardan kartınız ile POS para işlemini gerçekleştirebilirsiniz. Bir örnek ile açıklarsam, sizin debit kartınızdaki tanımlı cashback özelliği minimum 10 lira alışverişinizde 100 liraya kadar 10’un katları şeklinde bir para miktarını kasadan talep edebileceğiniz şekilde belirlenmiş sayalım. Bu durumda ben 10 lira veya üstü bir alışveriş yaptığımda kasaya giderek ayrıca POS Para işleminde bulunmak istiyorum diyerek 80 lira nakit olarak kasadan talep edebilirim. Yalnız bu durumda debit kartınızın içinde minimum 90 lira olması gerekmektedir ki işlemler gerçekleşsin. Şimdi bu durumun ne gibi bir faydası var dersek, elinize nakit olarak para geçiyor ve bu sayede pos cihazı olmayan başka bir yerden alış veriş gerçekleştirebilirsiniz. Başka bir yararı ise sizin bankanıza ait olan en yakın ATM çok uzak olabilir ya da yerini bilmiyor olabilirsiniz. Bu durumda minimum tutar ne ise ya da örnekte belirttiğim gibi 10 liralık bir alış veriş yaparak elinize 80 lira veya ihtiyacınız miktar kadar (tabi maximum çekebilecek tutarı geçmemek kaydıyla) nakit paranın geçmesini sağlayabilirsiniz. Visa’nın anlaşmalı olduğu bankalarla gerçekleştirebileceğiniz POS Para işlemi bilgisini buradan görüntüleyebilirsiniz.

Debit kart nedir?

      Debit kart (banka kartı olarakta bilinir), finansal bir kurumda müşterinin kendi hesabına ya da hesaplarına elektronik erişimi sağlayan bir tür plastik ödeme kartıdır. Bu kartlar içindeki para miktarı kadar ödeme yapabilir ve ödeme esnasında ödeyicinin belirlenmiş hesabı ile ilgili bankaya bir mesaj gönderilir. Bu mesaj kabul gördüğünde satın alma işlemi nakit yerine gerçekleştirilir. Bazı durumlarda, birincil hesap numarası hangisi ise bu hesap ile internet üzerinde yani fiziksel kart olmadan kullanılarak işlem gerçekleştirilebilir.

     Çoğu ülkede debit kartlar, nakit ödeme işlemlerinde çek ile ödeme ve örneklerini bütünüyle değiştirerek yaygın olarak kullanılmaya başlandı. Debit kartların geliştirimi, kredi kartlarının aksine ülkeye özgü ve farklı sistemler ile gerçekleştirildiğinden genel olarak uyumsuzlardı. 2000’lerin ortalarından itibaren uyumsuzluk giderilerek bazı ülkelerin telefon ve internet üzerinden alışverişlerinde debit kartların kullanımına izin verildi. Kredi kartlarının aksine ödemenin sonraki bir tarihte değil de o anda hızlı bir şekilde gerçekleştirilmesini sağlamaktadır. Debit kartlar farklı olarak cashback özelliğine sahip olarak aynı zamanda ATM işlevi de görebilirler. Cashback özelliğinden kısaca bahsedersek kart sahibi belli bir alış veriş tutarını geçmek suretiyle maximum belli bir para miktarına kadar ödeme yaptığı yerden nakit para talep edebilir.

29 Mayıs 2015 Cuma

Blogger yönlendirme CNAME sorunu (Find Second CNAME record of Website or Blog Second Time)

Blogger hesabınızdan oluşturmuş olduğunuz bloğun alan adı .blogspot.com gibi ek karakter dizisi içerdiğinden uzun bir alan adı olmakta ve pek kullanıcı dostu olmamaktadır. Bu sebepten dolayı bloğunuza çok daha okuması ve yazması kolay bir alan adı almak isteyebilirsiniz. Ben yakın zamanda öyle yaptım ve eesevinc.blogspot.com.tr olan blog alan adımı www.emresevinc.net alan adını tahsis ederek bu adrese yönlenmesini sağladım. Belki de bu çok kolay bir işlem bu videoda da göründüğü gibi halledilebilmekte.(http://www.isimtescil.tv/2012/05/domaini-bloggera-yonlendirme/). Bu işlemleri gerçekleştirirken yaşadığım sıkıntıyı kısaca özetleyeyim. Video'yu da izlediyseniz ikinci bir CNAME ekleme işleminde blogger'dan tahsis etmiş olduğunuz alan adına ait(benim örneğimdeki www.emresevinc.net) aldığınız gerekli karakter dizilerini isim tescilde de uyguladıktan sonra isim tescilde yanlışlıkla veya farkında olarak DNS yapılandırmasını varsayılana döndürürsek çalışması için bu yapılandırmayı tekrar yapmamız gerekecektir. Durum şu ki her şeyi baştan uygulamaya kalktığımızda bloggerdan alan adımıza ait CNAME kaydı için gerekli karakter dizisi(Hata 12'nin döndüğü arayüzü hatırlayın) ilk işlemdeki gibi dönmeyecek ve direkt kaydedilecektir. Bunun nedeni ilk kaydet işleminde google'ın bunu bir yere kaydetmesi ve sonuç itibari ile kayıtlı olmasıdır. Eğer önceden kaydetmediğiniz bir alan adını o bölüme girerseniz Hata 12'nin yani CNAME için gerekli karakter dizilerinin döndüğünü görürsünüz çünkü girdiğiniz alan adı kaydedilmemiştir. Sorun şurada ilk girişte ulaştığımız CNAME için gerekli karakter dizisine tekrar nasıl ulaşacağız? Çözümü ise şu adrese giderek bulabilirsiniz:





Google Webmasters Verification Tools linkine tıkladığınızda google hesabınızla giriş yapmanız gerekecek. Sonra herşeyiyle çok net bir arayüzle karşılaşacaksınız. Bu arayüzde üstte anlattığım blogger üzerindeki işlemlerde kayıt edilmiş(doğrulanmış) ve kayıt edilememiş(doğrulanmamış) alan adları listelenecek.





CNAME kaydınızın bilgilerine ulaşabilmek için doğrulamış olduğunuz adreste sağ taraftaki Doğrulama Ayrıntıları kısmına tıklayınız.




Şöyle bir arayüzle karşılacaksınız ve Ayrıntılar kısmına tıklarsanız CNAME kaydı için bilgileri görüntüleyebilirsiniz. Burada unutulmaması gereken şey CNAME kaydı sizin blogger'ınıza özel değil alan adınıza özeldir. Aslında bu bilgiyi araştırıp bulana kadar o arayüzde Google'ın küçük bir ibare ile bu durumda neler yapmamız gerektiğini belirtmiş olması çok daha güzel olurdu.

21 Mayıs 2015 Perşembe

Android Programlama- Mesaj Gelen veya Giden Kutusuna Erişim - (Android Programming - Access to Inbox or Sendbox)

Android işletim sistemli mobilinize bir uygulama yazarken uygulama içinde cihazın inbox (gelen mesaj kutusu) ya da sendbox (gönderilen mesaj kutusu)'na erişim ihtiyacı duyabilirsiniz. Burada öncelikle AndroidManifest.xml dosyasında gerekli izni belirlemeniz gerekmektedir. O izinler şöyledir:



Daha sonra java kodlarını yazdığınız bölümde aşağıdaki işlemleri gerçekleştirmelisiniz. Aşağıdaki işlemlerin çok yeni sürümlü Android cihazlarında çalışıp çalışmadığını test etmedim fakat LG G3 Beat telefonumda inbox ve sendbox uzantıları farklı dizinler olarak gerçekleştirilmiş.


Burada mesajlara erişerek mesajın içeriğini ve gönderici-alıcı numarasını ekrana yazdırmayı gösterdim. Dikkat ederseniz kullanıcı kimliğine dair sadece numara bilgisine ulaşılıyor. Eğer o kullanıcının telefon rehberinde kayıt edildiği ismi de göstermek isteseydik AndroidManifest.xml dosyasında rehbere okuma erişimi isteyecek ve işlemleri farklı şekilde gerçekleştirecektik.
Not: 2. ve 4. satırlardan herhangi biri tercih edilmelidir. Inbox erişimi ise 2. satır olmalı, sendbox erişimi ise 4. satırı kullanmalısınız. Resimde de elimden geldiğince açıklamalarda bulundum. Kolay gelsin.

12 Mart 2015 Perşembe

Windows İşletim Sisteminden Github'a Dosya Yüklemek (Push to Github)


  1.  İlk olarak https://windows.github.com/ adresinden GitHub'ı indirin ve kurun.
  2. Masaüstüne gelen GitHub isimli simgeye çift tıklayarak açın ve Github kullanıcı adı ve parolanız ile burada oturum açın. Cofiguration (yapılandırma) ayarlarını skip edin, bunu daha sonra ayarlayabilirsiniz.
  3. Şimdi dosyalarınızı aktaracağınız bir depoya ihtiyacınız var. Çünkü Github belli bir hiyerarşi gerektirmektedir. Bunun için GitHub arayüzünde;



 şeklinde repo oluşturuyoruz. Local Path alanında repositorry'nin nereye oluşacağı görünüyor. O yoldaki dosyaya bakarsak eğer;


şeklinde bir içerik görmeliyiz. İşte buraya Githuba push edeceğimiz (yükleyeceğimiz) dosya veya dosyaları atmalıyız. Mesela ben Java ile yazdığım bir uygulamayı (AlgorithmAnalysisExample ismindeki klasör) githuba atayım. Resimde görüldüğü gibi klasör içine sürükledim projemi.


  Sonra yüklemiş olduğum Github uygulamasına baktığımda değişlik otomatik algılanmış olacaktır ve eklediğim dosya bilgilerini göreceğim. Onu da gösterirsem;


Hide olarak görünen buton normalde Show şeklindeydi. Show'a tıkladığımda yukarıdaki Summary ve Description alanı ile ve sağ tarafta içerik bilgilerini göreceğim. Burada Summary alanına bir şeyler yazma zorunluluğu vardır. Çünkü bu yazı Github üzerinde gösterilecek. (Örneğin: Herhangi bir dosyada güncelleme yaptıysan bu alana şu dosyayı güncelledim falan yazabiliriz bu yazı Github'ta kullanıcı bilgisine sunulur). Description alanını boşta geçebiliriz, bilgiler de girebiliriz. Bunları hallettikten sonra altta Commit seçeneğine ve sonra sağ üst köşedeki Publish Repository alanına tıklıyoruz. Aynı alanda Sync seçeneği çıkacak. Onuda gösterirsem;


Sağ üstteki Sync'e tıkladığımızda dosyamız githubta paylaşılacaktır. Onu da gösterirsem:



şeklinde dosyalarımızı başarıyla github'a yüklüyoruz.




Bootstrap -Giriş

     


        Bu yazıyı yazmamdaki amacım Bootstrap ile uğraşmaya hevesi olan arkadaşların Github üzerinden bootstrap web sayfasını nasıl oluşturacağını göstermektir. Aslına bakılırsa bu işe hevesli olan kişilerin araştırıp bu işi yapmaları çok zamanlarını almayacaktır fakat en ufak bir zaman kaybının da çok önemli olduğunu düşünerek bu yazıyı yazmaya ihtiyaç duydum.
        Öncelikle bootstrap hakkında çok kısa bir bilgi vereyim. Bootstrap; büyük ölçüde günümüz teknolojisine uyumlu, HTML, CSS ve JS bileşenlerini içinde barındıran, web sitelerini hızlı, kaliteli hale getiren son derece popüler bir web teknolojisidir. Yani bootstrap ile oluşturulan web uygulamaları veya siteleri son derece efektif ve kullanışlıdır. Bootstrap'ı indirmek için http://getbootstrap.com/ tıklayarak ilgili adrese gidebilirsiniz.
       Github kullanıcılarına kullanıcı isimleri ile birlikte .github.io uzantılı olacak şekilde bir domain oluşturma hakkı tanıyor. Github kullanıcıları buradan çeşitli paylaşımlar ve benim şimdi yapacağım gibi bir web sitesi servisi sağlayabilir.
       Bootstrap'ı indirdikten sonra (ben distrubition 3.3.2 yi indirdim siz farklı sürümünü indirmiş olabilirsiniz) .zip dosyasını bir klasöre çıkartın.




        Normalde resimdeki .html uzantılı dosya hariç diğer 3 dosyayı göreceksiniz. İşte dosyaların hepsi bootstrap'in en sade şekliyle kendisidir. Yazılımcı'nın kullanacağı bileşenler buradadır. İhtiyaca göre dışardan ek dosyalar da eklenebilir. index.html dosyası tarayıcıdan sizin adresini yazan birinin karşılaşacağı içeriğin oluşturulduğu dosyadır. O yüzden sizde aynı şekilde bir dosya oluşturun. Bu index.html dosyasını açmak için size tavsiyem Sublime Text2'yi tavsiye ederim. Kodlarınız bu editör yardımıyla daha anlaşılır yazabilirsiniz. Konuya dönersek içeriği çok sade bir biçimde;





yaptım. Burada temel HTML içeriğinin yanında örnek olsun diye yine aynı dosya içine script kullanıp hedef gösterilerek hedefteki dosyayı kullanacağımı belirttim. Böylelikle sayfa belirtilen hedef içeriklerine ulaşabilecektir. Bunu binevi köprü olarak nitelendirebiliriz. index.html gibi fakat farklı isimde birden fazla .html dosyası oluşturup kullanıcılara görünteleyebilirsiniz. Ama unutmamak gerekir ki tarayıcıya sizin adresinizi yazan kişi ilk olarak index.html dosyasının içeriği ile karşılaşır. O yüzden index.html dosyasını oluşturmak önemlidir. Şimdi bu içerikleri web sunucuda çalıştırmak için Github hesabınızda kendi kullanıcıadınız.github.io isminde bir repository(depo) oluşturun. Buradaki kritik nokta kesinlikle kullanıcı adınızı kullanmanızdır. Aksi takdirde servisi veremezsiniz. Oluşturduğunuz bu repo'ya tüm bootstrap içeriğinizi (ilk resimdeki tüm dosya ve klasörleri) push edin ve kaydedin. Artık hemen hemen tüm tarayıcıdan kullanıcıadnız.github.io adresini aratan kişiler index.html sayfanızın içeriğini görüntüleyecektir. Bootstrap'ı iyi öğrenmek ve ayrıntılı bilgiler için http://www.w3schools.com/bootstrap/default.asp adresinden yararlanabilirsiniz. 

21 Ocak 2015 Çarşamba

UniSales yazılımını kaldırma (Remove uniSales)


Bu yazımda kısa fakat yararlı olabileceğini düşündüğüm bir konudan bahsedeceğim. Herhangi bir şekilde tarayıcınızda yaptığınız arama sonuçlarında ilk 4 veya 5 arama sonucu reklam siteleri oluyor ise ve her arama sonrasında bu sonuçlar dönüyor ise büyük ihtimal tarayıcınızda eklenti olarak virüs olarak da tabir edebileceğimiz bir yazılım çalışmaktadır. Ben bizzat böyle bir sıkıntı ile karşılaştım ve tarayıcı eklentilerine göz attığımda uniSales isminde bir eklentinin çalıştığını fark ettim. Buradan kaldırsam da  tarayıcıyı her yeni başlatışımda yine aktif görünüyordu. Bu yazılımın nasıl kaldırılacağı hakkında internette biraz araştırmam sonucu çeşitli anti-virüs yazılımları tavsiye edilmiş (adwcleaner gibi). Bu anti-virüs yazılımını indirdim fakat çalıştırdığımda silinecek listesinde ihtiyaç duyacağım verileri silebileceğinden korktuğum için silmesine izin vermedim. Soruna şu şekilde çare buldum.

* İlk olarak Denetim Masası (Control Panel) > Program Kaldır (Program Unisntall) ve gelecek liste üzerinde eğer varsa uniSale dosyasını kaldırın.

* C > Program Data klasörü içinde bulunan dosya ismi anlamsız bir şekilde rakamlardan ve harflerden olan klasörler olacak (18834244162332827158 ve bbgjoikaccajpnoamliohaplelogbmip dizinleri gibi) bunları kaldırın. Burada gerekli dosyalar da olabilir, dikkatli olmakta fayda var. 

Sorununuz büyük olasılıkla bu iki kısa adım ile çözülmüş olacaktır.