3 Haziran 2012 Pazar

Bugünün Tarihini İstediğimiz Formatta Almak

Java'da bugünün tarihini almak oldukça basittir, yalnızca Java kütüphanesinde bulunan birkaç sınıfı kullanmak yeterlidir, aşağıdaki yazdığımız metod alınan tarihi string tipinde döndürmektedir.

import java.text.SimpleDateFormat;
import java.util.Calendar;

public static String now(String dateFormat) 
{
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    return sdf.format(cal.getTime());
}

Görüldüğü üzere metodumuz tarih formatını da parametre olarak alabilmektedir, böylece tarihimizi istediğimiz formatta döndürebilmekteyiz.

String Date = now("yyyy-MM-dd");
String DateTime = now("yyy-MM-dd H:mm:ss");

Bu şekilde tarih ile ilgili işlemlerde bugünün tarihini kolayca alabiliriz.

4 Mart 2012 Pazar

Objective-C'de ViewController'lar Arası Veri Geçişi

Objective-C'de bir sayfadan başka bir sayfaya integer ve string gibi değişkenlerin verilerini aktarmak için belirli bir ilişkisel yapı ve implementasyonlar gerekmektedir. Aşağıdaki küçük örnekte TableView kullanan iki ViewController arası veri geçişi gösterilmektedir.

Öncelikle elimizde MasterViewController ve DetailViewController adında iki sınıfımız olsun. Amacımız master'dan detail'a bir integer değer aktarmak. Bunun için master'ımıza DetailViewController'a ulaşmak için MasterViewController.h'ye tanımlamamız gerekir.

#import UIKit/UIKit.h

@class DetailViewController; //Tanımlama

@interface MasterViewController : UITableViewController{
    DetailViewController *dvc;
    int *a; // aktarılacak olan değişken
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

@property (nonatomic, retain) DetailViewController *dvc;
@property (nonatomic)int a;

@end

interface'e yazdığımız dvc ismindeki DetailViewController objesini implementasyon kısmında kullanacağız.

#import "MasterViewController.h"
#import "DetailViewController.h" //Aktarım için bu sınıfın import edilmesi gerekir

@implementation MasterViewController

@synthesize dvc;
@synthesize a = _a;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(dvc != nil)
        [dvc dealloc];
    
    self.a = 5;    

    dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    dvc.b = [self a]; // Aktarım işlemi burada gerçekleşiyor
    
    [self.navigationController pushViewController:bvc animated:YES];
}
       
@end

Gördüğünüz üzere, interface'de nonatomic olarak tanımlanan objemizin değerini diğer sınıftaki integer tanımlı b objesine aktardık. DetailViewController sınıfında da a objesi gibi interface'e sadece nonatomic tanımlarsanız veri geçişi başarılı bir şekilde gerçekleştirilecektir.

25 Aralık 2011 Pazar

Windows 7'deki Gizli TanrıModu (GodMode)

Windows 7'de gizlenmiş TanrıModu (GodMode) kullanıcıların bütün sistem denetimine tek bir klasörden erişmesine olanak tanımaktadır. TanrıModu'na girmenizi sağlayacak anahtar, bir klasörün adının sonuna özel bir karakter kümesi eklemekten geçmektedir.

Bu klasörden denetim masasındaki bütün ayarların yanı sıra gelişmiş yönetimsel araçlara ulaşabilirsiniz. Bu klasör ile bilgisayarınıza format atabilir, yeni bir disk alanı dahi oluşturabilirsiniz.

TanrıModu'na erişmek için yapılması gereken tekşey yeni bir klasör oluşturup klasörün ismini aşağıdaki gibi değiştirmek:

GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

Bu işlem gerçekleştirildikten sonra klasör simgesi denetim masası simgesine dönüşecek ve bilgisayarınızla ilgili bütün ayarlara buradan ulaşabileceksiniz.

Niteleyici Ulaşılabilirlik Şeması

Aşağıdaki şemada niteleyicilerin diğer sınıflardan, alt sınıflardan veya farklı paketlerdeki sınıflardan ulaşılıp ulaşılamadığı gösterilmiştir.
Dipnot: Superclass'tan override edilmiş bir metodun ulaşılabilirlik seviyesi yükseltilebilir ama asla azaltılamaz. Örneğin superclass'taki protected metod override edilerek public yapılabilir ancak private yapılamaz.

22 Aralık 2011 Perşembe

String Tipindeki Tarihi SQL Date Tipine Çevirmek

Java tarafında string tipinde yazılan tarihleri bazen karşılaştırma ihtiyacı duyabiliriz. Ancak string tipinde olması bize bu karşılaştırma işlemini gerçekleştirmemize imkan tanımaz. Bunun için string tipindeki tarihleri sql isim uzayındaki Date tipine çevirmemiz gerekir.
public static Date ConvertStringToSqlDate(String date)
{
    try 
    {
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");            
        java.util.Date dateTimeUtil = formatter.parse(date);
        java.sql.Date dateTimeSql = new java.sql.Date(dateTimeUtil.getTime());
        return dateTimeSql;
    } 
    catch (ParseException ex)
    {
        Logger.getLogger(SaleOptions.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}
Yukarıdaki kodda string'te yazılan tarih formatı ile DateFormat objesinde belirlenen format tutarlı olmalıdır. Gereksinimleri karşıladığınızda kodumuz sorunsuz çalışacaktır.

20 Kasım 2011 Pazar

Android'de İnternetteki Bir Resmin Gösterimi

Android'de ImageView'a internetteki bir resmi atamak geliştiriciler için sorun teşkil edebiliyor. Çünkü ImageView'a direk olarak bir resim url'i verilemiyor, sadece projenizin içinde bulunan resimler atanabiliyor. Bu sorunun çözümü için aşağıdaki metod işinize yarayacaktır.
private Drawable LoadImageFromWebOperations(String url)
{
    try
    {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
    }
    catch (Exception e) 
    {
         return null;
    }
}

Gördüğünüz üzere metod String objesi alıyor, Drawable objesi dönüyor. Bu noktadan sonra yapmamız gereken şey elimizdeki Drawable objemizi ImageView'ımıza atamak. Bu işlemi OnCreate metodunda gerçekleştirmemiz gerekmektedir.
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ImageView imageview = (ImageView) findViewById(R.id.imageView1);
    Drawable drawable = LoadImageFromWebOperations("http://www.google.com/image01.png");
    imageview.setImageDrawable(drawable);
}

Böylelikle internette herhangi bir resmi ImageView'ınızdan gösterebilirsiniz. Aynı işlemi ImageButton içinde gerçekleştirebilirsiniz.

8 Ekim 2011 Cumartesi

Java'da Dialog Fırlatma

Java'da dialog fırlatmak için JOptionPane sınıfını kullanmamız gerekmektedir. Bu sınıf javax.swing namespace'ine ait bir sınıftır. Hata, bildirim, onay gibi dialoglar fırlatmak için aşağıdaki kodlar işimize yarayacaktır.

import javax.swing.JOptionPane;
public class JavaApplication1 {
    public static void main(String[] args) {
        JOptionPane.showConfirmDialog(null, "Mesaj", "Başlık", JOptionPane.YES_NO_OPTION);
        // Evet-Hayır onay dialogu
        JOptionPane.showConfirmDialog(null, "Mesaj", "Başlık", JOptionPane.OK_CANCEL_OPTION);
        // Tamam-İptal onay dialogu
        JOptionPane.showMessageDialog(null, "Mesaj", "Başlık", JOptionPane.ERROR_MESSAGE);
        // Hata mesajı
        JOptionPane.showMessageDialog(null, "Mesaj", "Başlık", JOptionPane.INFORMATION_MESSAGE);
        // Bilgi mesajı
        JOptionPane.showMessageDialog(null, "Mesaj", "Başlık", JOptionPane.QUESTION_MESSAGE);
        // Soru mesajı
        JOptionPane.showMessageDialog(null, "Mesaj", "Başlık", JOptionPane.WARNING_MESSAGE);   
        // Uyarı mesajı
    }
}

Böylece istenmeyen sonuçları önlemek üzere kullanıcıya dialog fırlatabilirsiniz.