24 Eylül 2013 Salı

Yerel Yum Deposu Oluşturmak

rpm komutu ile bir paket kurmak istediğimizde eğer bağımlı paketler sistemimizde kurulu değilse paketi kurmamıza izin vermeyecektir. Yum ise bağımlı paketleri de kurabiliyor. O nedenle önemli kullanım kolaylığı sağlıyor.
RHEL'e kayıtlı olmadığınız için yum'u kullanamıyorsanız, bu yazıda anlatılanları yaparak sisteminizde yerel bir yum deposu oluşturabilir ve yum'u kullanabilirsiniz.

Öncelikle depo (repository) için dizin oluşturalım.

mkdir -p /opt/yum/rhel6.4

RHEL DVD'sindeki (Centos, Fedora ya da Oracle Linux de olabilir) rpm dosyalarını yeni oluşturduğumuz dizine kopyalayalım.

cp /media/RHEL_6.4\ i386\ Disc\ 1/Packages/*.rpm /opt/yum/rhel6.4

Aşağıdaki komut girilerek depo yapılandırması yapılır.

cd /opt/yum/rhel6.4
createrepo .

Eğer sisteminizde createrepo kurulu değilse rpm paketinden kurabilirsiniz. Sisteminizde rpm dosya ismi farklı olabilir. Ama genellikle createrepo ile başlar.

rpm -i createrepo-0.9.9-17.el6.noarch.rpm

createrepo paketini kurarken eksik bağımlık nedeniyle kuramadığını söylerse öncelikle bağımlı olduğu paketi/paketleri kurun. 3-4 bağımlı paket kurulumundan sonra createrepo kurulabiliyor.

Böylece depo yapılandırması yapılmış oldu. Şimdi bu depo'yu yum'a tanıtacağız.

/etc/yum.repos.d dizininde içeriği aşağıdaki gibi olan local.repo isminde bir dosya oluşturun.

[local-source]
name=local RHEL rpms
baseurl=file:///opt/yum/rhel6.4
enabled=1
gpgcheck=0


Yeni depomuzu yum'un görüp görmediğini kontrol etmek için aşağıdaki komutları kullanabiliriz.

yum clean all
yum repolist

Bundan sonra yum'u kullanarak paket kurulumlarını gerçekleştirebiliriz.

23 Eylül 2013 Pazartesi

Dosyanın Hangi RPM Paketinde Yer Aldığını Bulmak

Sisteminizde kurulu bir pakete ait bir dosyanın tam path'ini biliyorsanız bu dosyanın hangi pakete ait olduğunu aşağıdaki komutla bulabilirsiniz.

rpm -qf [dosya_adı]

Örneğin:
rpm -qf /usr/bin/xmllint

Paket, sisteminizde kurulu değilse adını bildiğiniz dosyanın hangi pakette yer aldığını aşağıdaki betik ile bulabilirsiniz.
Bu betik, repoquery komutundan faydalanır ve yum repository'lerinde arama yapar.

#!/bin/bash

if [ $# -ne 1 ]
then
echo -e "Usage: $0 [file_name]"
exit 1
fi

FILE_NAME=$1
ALL_PACKAGES=$(repoquery -a)

for PACKAGE in $ALL_PACKAGES
do

#echo package = $PACKAGE
FILES=$(repoquery --list $PACKAGE)
for file in $FILES
do
if [[ "$file" =~ "$FILE_NAME" ]]
then
echo Package $PACKAGE contains the file $FILE_NAME
break
fi
done

done 

20 Ağustos 2013 Salı

Linux'te Java'nın Cryptography kütüphanesi yavaş çalışıyor

Kamu SM'nin Zaman Damgası console uygulaması çok yavaş çalışıyordu. Yavaşlığın sebebinin RHEL'de (6.4 versiyonu) kullanılan (aynı problem Debian'da (7.1 versiyonu) da gözlendi) random number generator'ın yavaş çalışmasından kaynaklandığı anlaşıldı.

Random number generator, sistemin entropy değerine göre sayı üretiyor. Entropy değeri küçükse önce entropy'yi yükseltip daha sonra sayı üretiyor. Bu arada; entropy, zaman, klavye ve mouse hareketleri, sıcaklı vb etmenlere göre oluşuyor. Aşağıdaki komutu kullanarak entropy'nin değerini görebilirsiniz.

cat /proc/sys/kernel/random/entropy_avail


Linux'taki rngd/rng-tools servisi bu değerin her zaman yüksek olmasını sağlıyor.

--------------------------------------------------------------------------------

RHEL ve türevi sistemlerde aşağıdaki komut ile bu servisi kurabilirsiniz
yum install rng-tools

Debian ve türevi sistemlerde aşağıdaki komut ile bu servisi kurabilirsiniz
apt-get install rng-tools

--------------------------------------------------------------------------------

RHEL ve türevi sistemlerde aşağıdaki komut ile servisi başlatabilirsiniz.
service rngd start

Debian ve türevi sistemlerde aşağıdaki komut ile servisi başlatabilirsiniz.
service rng-tools start

--------------------------------------------------------------------------------

Starting rngd: can’t open entropy source(tpm or intel/amd rng)
Maybe RNG device modules are not loaded

[FAILED]

RHEL ve türevi sistemlerde yukarıdaki gibi bir hata alıyorsanız ve servis başlamıyorsa "/etc/sysconfig/rngd" dosyasında aşağıdaki satırı ekleyiniz.
EXTRAOPTIONS=”-r /dev/urandom”

--------------------------------------------------------------------------------

Starting Hardware RNG entropy gatherer daemon: (Hardware RNG device inode not found)
/etc/init.d/rng-tools: Cannot find a hardware RNG device to use.

Debian ve türevi sistemlerde yukarıdaki gibi bir hata alıyorsanız ve servis başlamıyorsa "/etc/default/rng-tools" dosyasına aşağıdaki satırı eklemelisiniz
HRNGDEVICE=/dev/urandom

--------------------------------------------------------------------------------

rngd/rng-tools servisini başlatınız. Aşağıdaki komutla entropy değerine baktığınızda çok daha yüksek rakamlara çıktığını göreceksiniz.
cat /proc/sys/kernel/random/entropy_avail

Çözümün oluşturulmasında faydalanılan 2 sayfayı aşağıda yazıyorum.

http://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom

http://my.itwnik.com/2012/04/how-to-increase-linux-kernel-entropy/

29 Ocak 2013 Salı

Açık Kaynaklı Yazılımlar

Load Balancer

Nginx, http://nginx.org
Apache Web Server, http://httpd.apache.org

Monitoring & Management

Nagios, http://www.nagios.org
Zabbix, http://www.zabbix.com
Hyperic, http://www.hyperic.com
Graylog2, http://graylog2.org
Cluster SSH, http://sourceforge.net/projects/clusterssh

Raporlama

RRDtool, http://oss.oetiker.ch/rrdtool
Cacti, http://www.cacti.net

Intrusion Detection

Ossec, http://www.ossec.net

Kurulum & Konfigürasyon Yönetimi

etckeeper, http://joeyh.name/code/etckeeper
Puppet, http://puppetlabs.com
Chef, http://www.opscode.com/chef
Cobbler, http://cobbler.github.com

Sniffing

Wireshark, http://www.wireshark.org/

Ön Muhasebe

Tekir, http://www.tekir.com.tr

Uzaktan Eğitim

Moodle, https://moodle.org
Sakai, http://www.sakaiproject.org

Web Konferans

BigBlueButton, http://www.bigbluebutton.org




3 Ocak 2011 Pazartesi

Bulut Bilişim

(Cloud Computing)

Bulut bilişimde seviyeler:
  1. Servis olarak altyapı (Infrastructure-as-a-Service IaaS)
  2. Servis olarak platform (Platform-as-a-Service PaaS)
  3. Servis olarak yazılım (Software-as-a-Service SaaS)
Kapsam:
  1. Public: İnternet üzerinden erişilebilen ve isteyen herkesin kullanabildiği sistem
  2. Private: Belli bir kurum veya kuruluşun iç kullanımı için oluşturulan sistem
Bulut bilişim platformları:
  1. VMware vFabric Cloud Application Platform
    http://www.springsource.com/products/cloud-application-platform
    http://www.vmware.com/solutions/cloud-computing/
    http://static.springsource.com/projects/tc-server/2.0/getting-started/html/index.html
    http://static.springsource.com/projects/tc-server/2.0/getting-started/html/ch03s05.html
  2. WSO2 Stratos
    http://wso2.com/cloud/stratos/
  3. Ubuntu Enterprise Cloud
    http://cloud.ubuntu.com/
    http://www.ubuntu.com/cloud
    http://www.ubuntu.com/cloud/private/deploy
  4. Eucalyptus Systems
    http://www.eucalyptus.com/
Bulut bilişim hizmeti sunan firmalar:
  1. Google AppEngine
    http://code.google.com/appengine/
  2. Salesforce
    http://www.salesforce.com/
  3. Amazon Elastic Compute Cloud (Amazon EC2)
    http://aws.amazon.com/ec2/
  4.  RockspaceCloud
    http://www.rackspacecloud.com/index.php
    Cloud Server
    Cloud Sites
    Cloud Files
  5. Microsoft Windows Azure
    http://www.microsoft.com/windowsazure/

    24 Aralık 2010 Cuma

    Wndows 7'de AHCI Mod

    Hard diskiniz BIOS'ta IDE modda iken Windows 7'yi kurup daha sonra AHCI moda geçirdiğinizde Windows'unuz açılmayacaktır. Windows'un repair özelliği bu problemi giderebilir. Ama, repair'de bu problemi giderememişse aşağıdaki adımları izleyerek hard diskinizi AHCI moda geçirebilirsiniz.

    Ben problem yaşamadım ama aşağıdaki işlemleri yapmadan önce sisteminizi yedeklemenizi tavsiye ederim.

    •  BIOS'ta disk modunu IDE yapıp bilgisayarınızı açınız.
    • Registry editör'ü (regedit) açınız.
    • HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlset / Services / msahci dizinini açınız.
    • start değişkenine çift tıklayarak açınız. 3 olan değerini 0 yapınız.
    • Registry editör'ü kapatınız.
    • Bilgisayarınız yeniden başlatıp BIOS'a giriniz.
    • Hard disk modunu AHCI yapıp, BIOS ayarlarınızı kaydedip bilgisayarınızı yeniden başlatınız.
    • Windows açıldığında AHCI sürücüleri yükleyip yeniden başlatmak isteyecektir.
    Bu işlemler Windows Vista için de geçerlidir.

    16 Aralık 2010 Perşembe

    Headless Ortamlarda Toolkit Kullanımı

    Ekran, klavye veya fare'siz ortamlarda grafik arayüz kodları içeren bir Java uygulaması çalıştırırsanız HeadlessException alabilirsiniz. Linux/UNIX bir sunucuya telnet/ssh ile bağlandığınızda, uygulamanız sistem servisi olarak çalıştığında ve benzeri durumlarda bu hata ortaya çıkar.

    Java'nin 1.4 versiyonundan itibaren bu durum için Headless mode desteği vardır. Uygulamanızı Headless mode'da çalıştırdığınızda sistem, Toolkit olarak HeadlessToolkit kullanır ve uygulamanızın ihtiyaç duyduğu bazı kaynakları ve parametreleri sağlar.
    Uygulamanızın Headless mode'da başlaması için uygulamanızı -Djava.awt.headless=true parametresi ile çalıştırmalısınız. Panel, Canvas gibi bileşenler ve Swing bileşenleri Headless mode'da kullanabilirsiniz, ama JFrame, JDialog gibi en üst seviye container'ları kullanamazsınız.
    Headless mode ile ilgili ayrıntılı bilgiye aşağıdaki bağlantıdan erişebilirsiniz.

    http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/

    HeadlessToolkit'in sağladıkları sizin için yeterli olmayabilir. Örneğin Toolkit'in getScreenResolution, createCustomCursor metodlarına ihtiyacınız var. Bu gibi durumlarda aşağıdaki gibi bir Toolkit tanımlamalısınız.



    public class CustomToolkit extends HeadlessToolkit {

        public CustomToolkit() {
            super(createSystemToolkit());
        }

        private static Toolkit createSystemToolkit() {
            String osName = System.getProperty("os.name");
            String toolkitClass = osName.startsWith("Windows") ? "sun.awt.windows.WToolkit" : "sun.awt.X11.XToolkit";
            try {
                Class<?> clazz = Class.forName(toolkitClass);
                Object toolkitInstance = clazz.newInstance();
                return (Toolkit)toolkitInstance;
            }
            catch (Exception exc) {
                throw new RuntimeException(exc);
            }
        }

        @Override
        public int getScreenResolution() throws HeadlessException {
            return 72;
        }

        @Override
        public Insets getScreenInsets(GraphicsConfiguration graphicsConfiguration) throws HeadlessException {
            return new Insets(0, 0, 30, 0);
        }

        @Override
        public Cursor createCustomCursor(Image image, Point point, String s)
                throws IndexOutOfBoundsException, HeadlessException {
            return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
        }

    }

    createSystemToolkit metodunda işletim sistemine göre Toolkit döndürüyoruz. Reflection kullanmamızın sebebi Windows'taki JRE'lerde XToolkit'in, Linux'teki JRE'lerde WToolkit'in bulunmaması.

    Bunun gibi problem yaşadığınız Toolkit metodlarını ezebilirsiniz.

    Toolkit'imizin etkin olabilmesi için uygulamanızı aşağıdaki parametrelerle çalıştırmalısınız.
    -Djava.awt.headless=false
    -Dawt.toolkit=CustomToolkit

    20 Ekim 2010 Çarşamba

    Yahoo Gazetteer

    Gazetteer, Coğrafi Bilgi Sistemleri ile ilgili bir kavram. Gazetteer, yerleşim yerleri hakkında çeşitli bilgiler sağlar. En azından bu yerleşim yerinin adı ve coğrafi olarak koordinatlarını verir. Bunun yanında nüfus, dağlar, yollar, gelir düzeyi gibi bilgilerde içerebilir.

    Yahoo'nun gazetteer servisi var. Aşağıdaki adresten ulaşılabilir. Bu servise, yazdığınız bir uygulamadan erişebileceğinize gibi adresi doğrudan internet gezginine yazarak ta erişebilirsiniz.

    http://local.yahooapis.com/MapsService/V1/geocode?appid=UYGULAMA_ADI&location=KONUM

    Örneğin NASA'nın World Wind Java API'si ile Ankara'nın bilgisini almak istediğimizde URL aşağıdaki gibi olacaktır.

    http://local.yahooapis.com/MapsService/V1/geocode?appid=nasaworldwind&location=ankara

    Yahoo'nun gazetteer servisi isim, konum, şehir ve ülke bilgilerini veriyor.

    30 Eylül 2010 Perşembe

    Herhangi Bir Sınıfa Listener Desteği Sağlamak

    Başka sınıfların bizim sınıfımıza ActionListener olarak kaydolmalarını ve sınıfımızın iç işleyişi sırasında bir durum oluştuğunda actionPerformed olayını atmak istiyoruz. Bunun için sınıfımızda yapmamız gereken tanımlamalar aşağıdaki gibidir.

    public class XYZ {
        private ActionListener listenerList;

        .....
        .....
        // diğer sınıflar bu metot aracılığıyla bizim sınıfımızda oluşan olaya kayıt yaptırabilir.
        public void addActionListener(ActionListener listener) {
            if (listener == null) {
                return;
            }
            listenerList = AWTEventMulticaster.add(listenerList, listener);
        }

        // diğer sınıflar bizde gerçekleşen olaylardan artık haberdar olmak istemiyorsa bu metodu kullanmalıdır.
        public void removeActionListener(ActionListener listener) {
            if (listener == null) {
                return;
            }
            listenerList = AWTEventMulticaster.remove(listenerList, listener);
        }
       
        // sınıfımızda oluşan durumda olay atmak için bu metodu kullanacağız.
        private void fireActionEvent() {
            ActionListener listener = listenerList;
            if (listener != null) {
                // burada isterseniz başka source, id ve command parametreleri geçebilirsiniz.
                ActionEvent event = new ActionEvent(this, 0, null);
                listener.actionPerformed(event);
            }
        }

        .....
        .....
            // beklenilen durum gerçekleşti, olay atalım.
            fireActionEvent();
        .....
        .....

    }

    Input/Output Stream ve Reader/Writer'lar ile Çalışmak

    Input/Output Stream (aynı durum Reader/Writer'lar için de geçerlidir.) değişkeni try/finally bloğundan önce tanımlanmalı, try bloğu içinde oluşturulmalı ve finally bloğu içinde kapatılmalı (close). Catch bloğu tanımlanmamış olsa dahi finally bloğu tanımlanıp bu işlemler yapılmalıdır.


    Örnek:


    InputStream is = null;
    try {
        is = new FileInputStream(inputFileName);
        is.....
        .......
        .......
    }
    finally {
        if (is != null) {
            try {
                is.close();
            }
            catch (Exception exc) {
                // logla
            }
    }

    15 Ocak 2010 Cuma

    Windows Servisleri Arasında Bağımlılık Tanımlama

    Start -> Run çalıştırılıp, açılan diyalogda regedit yazılarak Windows'un registry düzenleyicisinin açılması sağlanır.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services yolu takip edilerek servisler listelenir.
    Bağımlılık tanımlanacak servis altındaki DependOnService isimli Multi String tipinde key tanımlanır (eğer yoksa).
    Bu key'in değeri olarak bağımlı olacağı herbir servis adı yazılır. Servis isimlerinin herbiri ayrı bir satırda yazılmalıdır. registry düzenleyisi kapatılıp Windows yeniden başlatılır.

    23 Aralık 2009 Çarşamba

    Linux Shell Programlama

    Script'i hangi shell'in çalıştıracağının belirtilmesi


    Script dosyasının başındaki #! ifadesi ile bu scriptin hangi shell tarafından çalıştırılacağı belirtilir. Örneğin script dosyasının ilk satırında #!/bin/sh yazmışsak bu script'in /bin'de yer alan sh yorumcusu tarafından çalıştırılıcağını belirtmiş oluyoruz. Kullanılabilecek diğer bazı yorumcular:
    #!/bin/csh

    #!/bin/bash
    #!/usr/bin/perl


    Dosya içeriğinde kelime arama

    grep ntp messages
    Messages dosyasında ntp geçen satırları listelemektedir.

    ls -l | grep mysqld
    ls -l ile listelenen dosyalardan mysqld ifadesine göre bir filtreleme yapılmaktadır.


    Dosya arama

    find . -name "*.log" -print
    Bu komutla bulunduğumuz dizin ve tüm alt dizinlerdeki log uzantılı dosyalar listelenmektedir.

    find /var/log -name "messages*" -exec grep samba {} \; -print
    /var/log dizinindeki messages ile başlayan dosyalarda ntp ifadesinin geçtiği satırları bulmaktadır.


    Sıkıştırılmış dosyalarla çalışma

    zip backup.zip backup
    Backup dizini backup.zip adıyla zip formatında sıkıştırılmıştır.

    unzip backup.zip
    Zip formatıyla sıkıştırılmış backup.zip isimli dosyayı açar.

    gzip message.log
    message.log dosyasını Lempel-Zip formatında sıkıştırır ve message.gz isimli dosya üretir


    gunzip message.gz
    Lempel-Zip formatında sıkıştırılmış message.gz isimli doyayı açar.


    For döngüsü ile dizin içeriğinin listelenmesi

    for i in {1..5}; do echo $i; ls; sleep 5; done

    Aritmetik işlemler

    set i = $(( $i + 1 ))







    18 Aralık 2009 Cuma

    Eclipse

    Bu yazıda anlatılanlar Eclipse'in 3.5 versiyonunda tespit edilmiştir. Teorik olarak farklı versiyonlarda farklı yapılar olabilmekle beraber pratikte yaklaşık tüm versiyonlar için geçerli olduğu düşünülmektedir.


     

    Workspace dizin ve dosyaları

    Proje listesi ve dizinleri

    org.eclipse.core.resources dizininde proje listesi ve bu projeler ile ilgili bazı ayarlar yer almakta. .projects/proje_adı/.location dosyasında projenin konum bilgisi yer almakta. .root ve .safetable dizinleri de yine projeler ile ilgili gerekli bazı referansları tutmak ve bu dizinler silinmemeli. Silinirse Eclipse tekrar açıldığında proje listesi boş gelmektedir.
    Workspace'in encodingi
    org.eclipse.core.runtime\.settings\org.eclipse.core.resources.prefs dosyasına encoding=UTF-8 kaydı eklenerek workspace'in varsayılan encoding'i UTF-8 yapılabilir.
    Kullanıcı tanımlı kütüphaneler
    Kullanıcı tarafından tanımlanan kütüphane tanımları org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs dosyasında tutulmaktadır.
    Açılışta tanıtım ekranının görünmesi
    org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs dosyasındaki showIntro değişteninin değeri false yapılarak tanıtım Eclipse açıldığında tanıtım ekranının açılması engellenebilir.
    Perspective ve View'ler
    Workspace'te hangi perspective ve view'lerin yer aldığı bilgisi org.eclipse.ui.workbench/workbench.xml dosyasında tutulmaktadır.
    org.eclipse.core.resources/.span
    Bu dosya workspace oluşturulurken geçici olarak üretilmekte ve workspace oluşturulduktan sonra silinmektedir.

    17 Aralık 2009 Perşembe

    MySQL

    Bu kısımda mysql ile ilgili çeşitli bilgiler verilecektir.


    Komut satırından veritabanına bağlantı

    Veritabanı yeni oluşturulmuşsa ve/veya kullanıcının bir şifresi yoksa:
    # mysql -ukullanici_adi
    # mysql -uroot

    Kullanıcının şifresi varsa:
    # mysql -ukullanıcı_adı -pşifre
    # mysql -uroot -proot


    Kullanıcının şifresini değiştirme

    Veritabanı yeni oluşturulmuşsa ve/veya kullanıcının bir şifresi yoksa:
    # mysqladmin -u kullanıcı_adı password şifre
    # mysqladmin -u root password root

    Kullanıcının şifresi varsa:
    # mysqladmin -u kullanıcı_adı -p eski_şifre password yeni şifre

    # mysqladmin -u root -p root password 123456

    SQL ile şifre değiştirme:
    mysql# use mysql;
    mysql# update user set password=PASSWORD("yeni_şifre") where User='root';
    mysql# flush privileges;


    Root şifresini sıfırlama

    1. MySQL servisi kapatılır.
    2. MySQL servisi --skip-grant-tables seçeneği ile başlatılır.
             Eğer bu şekilde başlatılmasında problem oluyorsa my.cnf/my.ini dosyasının mysqld kısmına skip-grant-tables yazan bir satır eklenip, servis yeniden başlatılır.
    3. MySQL sunucusuna root olarak bağlanılır.
    4. Yeni şifre SQL yöntemi ile belirlenir.
    5. Komut satırından çıkılıp MySQL servisi yeniden başlatılır.

    LINUX'te kullanım örneği
    1. # /etc/init.d/mysql stop
    2. # mysqld_safe --skip-grant-tables
    3. # mysql -u root
    4. mysql# use mysql;
        mysql# update user set password=PASSWORD("yeni_şifre") where User='root';
        mysql# flush privileges;
        mysql# quit
    5. # /etc/init.d/mysql restart


    Shell script'ten sql kullanmak

    --execute parametresi ile istenilen sql komutu çalıştırılabilir.

    mysql --user=root --password=degistir --execute="show databases"

    mysql --user=root --password=degistir --execute="CREATE DATABASE DENEMEVT CHARACTER SET utf8 COLLATE utf8_turkish_ci"


    Sunucuya başka bilgisayarlardan erişim

    MySQL artık ağ erişimi açık olarak gelmektedir. Varsayılan olarak sadece yerel bilgisayardan erişime izin vermektedir. my.cnf/my.ini dosyasında bind-address değişkeninin değerini 0.0.0.0 ya da sunucunun IP adresi olarak değiştirirseniz MySQL servisine başka bilgisayarlardan da erişebilirsiniz. Gerektiği durumlarda aşağıdaki 2 maddeyi de uygulamalısınız.


    Kullanıcı yetkisi vermek

    Aşağıdaki komut root kullanıcısına tüm bilgisayarlardan DENEMEVT şeması üzerinde her tür işlem yapma yetkisi verir.
    GRANT ALL ON DENEMEVT.* TO 'root'@'%'
     

    Linux sunucularda uzaktan erişim

    Linux sunucularda uzaktan erişim için yukarıdaki başlıkta yapılan işlem yeterli olmayabilir.
    Bu durumda /etc/hosts.allowed dosyasına "mysqld: ALL" yazan bir satır eklemeniz gerekecektir.


    2 Eylül 2009 Çarşamba

    CMMI

    CMMI; süreç iyileştirme yaklaşımıdır.

    Kısaltmalar

    SEISoftware Engineering Institute
    CMMICapability Maturity Model Integration
    SCAMPIStandart CMMI Appraisal Method for Process Improvement
    GGGeneric Goal
    GPGeneric Practice
    SGSpecific Goal
    SPSpecific Practice


    CMMI Seviyelerinin Anlamları

    1Başlangıç
    2Yönetilen
    3Tanımlı
    4Sayılarla Yönetilen
    5Sürekli İyileşen


    Süreç Alanları
    2Requirements ManagementREQMEngineering
    2Project PlanningPPProject Management
    2Project Monitoring and ControlPMCProject Management
    2Supplier Agreement ManagementSAMProject Management
    2Measurement and AnalysisMASupport
    2Process and Product Quality AssurancePPQASupport
    2Configuration ManagementCMSupport
    3Requirements DevelopmentRDEngineering
    3Technical SolutionTSEngineering
    3Product IntegrationPIEngineering
    3VerificationVEREngineering
    3ValidationVALEngineering
    3Organizational Process FocusOPFProcess Management
    3Organizational Process Definition+IPPDOPD+IPPDProcess Management
    3Organizational TrainingOTProcess Management
    3Integrated Project Management+IPPDIPM+IPPDProject Management
    3Risk ManagementRSKMProject Management
    3Decision Analysis and ResolutionDARSupport
    4Organizational Process PerformanceOPPProcess Management
    4Quantitative Project ManagementQPMProject Management
    5Organizational Innovation and DeploymentOIDProcess Management
    5Causal Analysis and ResolutionCARSupport

    26 Ağustos 2009 Çarşamba

    JIDE

    JIDE, Swing bileşen kütüphanesidir.

    JIDE'nin paketinde gerekli doküman ve örnek kodlar da mevcut.

    doc dizininde tüm modüllerin geliştirici klavuzları mevcuttur.

    javadoc dizininde API dokümanları mevcuttur.

    Örnek uygulama jidesoft'un sitesinden Java Web Start ile çalıştırılabilir. Örnek uygulamadan ilgili ekran ve bileşenlerin kullanımı ile ilgili kodlara ulaşılabilir. Örnek uygulamaya ait kodlar aynı zamanda examples dizininde de mevcuttur.

    Bazı Bileşenler

    Common Layer

    JideSplitButton: Ana fonksiyonalite için bir düğme ve yan fonksiyonalite için bir menüden oluşan bileşen.
    JideTabbedPane: Başılığında ikon gösterilebilen sekme uyarlaması. Sekme sayısı belirlenen sayıyı geçerse sekmelere menü araçılığıyla ulaşılabilir. İstenirse farenin orta düğmesi ile sekme kapatılabilir.
    CheckBoxList: JCheckBox desteği olan liste. İstenilen elemanlar disable edilebilir.
    CheckBoxTree: JCheckBox desteği olan ağaç bileşeni. Dig In özelliği ile parent eleman seçildiği zaman child elemanların da seçilip seçilmeyeceği belirlenebilir.
    Searchable: JTree, JTable, JList, JTextComponent, JComboBox ve bazı JIDE bileşenlerinde kullanıcı aradığı elemanın baş harflerini yazdığında eşleşen eleman seçili duruma gelir.
    SearchableBar: Ctrl+f tuşları ile Firefox'un arama paneline benzer bir arama paneli açıp ilgili bileşende kayıt aranabilemsini sağlar.
    JidePopup: JPopup'tan farklı olarak taşınabilmekte, yeniden boyutlandırılabilmekte ve belli bir zaman sonra otomatik olarak kapanabilmekte.
    JideSplitPane: 2'den fazla bileşen eklenebilir.
    RangeSlider: Tamsayı aralık seçmek için kullanılabilecek bileşen.
    Overlayable: Bir bileşenin üstünde küçük, bilgilendirici başka bir bileşen göstermek için kullanılır. Örneğin bir bileşene veritabanından veriler yüklenirken progress bar gösterip işlem bittiğinde kaybolması.
    ObjectConverter: Bileşenin, veri sınıfının toString fonksiyonu ile dönen değer yerine hesaplanan başka bir değeri göstermesini sağlar. Örneğin combobox'ta şehirler gösterildiği varsayılsın. Şehir nesnesinin toString'i yerine adı ile nüfusunun birleşimi gösterilebilir. Ortam yapılandırılırken ObjectConverterManager sınıfına veri tipi, converter nesnesi ve context kaydı yapılmalıdır. İlgili bileşende de setConverterContext fonksiyonu ile hangi context'e göre gösterim uygulanacağı belirlenmeli.
    DateSpinner: Verilen formatta tarih yazmak için kullanılabilecek spinner bileşeni.

    Docking Framework

    DockableFrame: Dock özelliği olan panel desteği sağlar. DockableFrame'larin floating/docking, auto-hide on/off ve close desteği mevcuttur.

    Action Framework

    CommandBar: MS Ofis'in 2007'den önceki versiyonlarındaki araç çubukları gibi taşınabilen ve ayrı bir diyalog gibi kullanılabilen araç çubuğu özelliği sağlar.
    CommandMenuBar: CommandBar'ın menü uyarlaması.

    Components

    CollapsiblePane: Windows Explorer'da ve birçok Microsoft uygulamasındaki açılır/kapanır panel görüntüsünü sağlayan bileşen.
    FloorTabbedPane: Sekmelerin yukarıdan aşağıya listelendiği ve ilgili panelin sekmeler arasında görüntülendiği JTabbedPane uyarlaması.
    OutlookTabbedPane: MS Outlook'daki gibi sekmelerin alt tarafta ve alt alta listelendiği, ilgili panelin yukarıda görüntülendiği JTabbedPane uyarlaması.
    Alert: MS Outlook'daki mesaj ekranları gibi uyarı mesajlarının ekranın belirli bir kısmında kayarak gelmesini sağlayan bileşen. Mesaj diyaloğunun ekranın hangi kısmından gelip hangi kısmından çıkacağı, belli bir süre sonra kaybolacak mı yoksa kullanıcı kapatana kadar kalacak mı ve benzeri ayarlar verilebiliyor.
    BalloonTip: Balon şeklinde görülen tooltip uyarlaması.

    Grids

    SortableTable, SortableList, SortableComboBox, SortableTree: Sıralama desteği olan bileşenler.
    FilterableTableModel: MS Excel'de başık satırı sabitlendikten sonra istenilen sütun başlığından verilerin filtrelenmesi özelliğini sağlayan bileşen.
    ShrinkSearchableSupport: JList, JComboBox ve JTable'da kullanıcı aramak istediği kaydın baş harflerini yazdıkça eşlenik olmayan kayıtları gizleyen, sadece eşlenik kayıtların gösterilmesini sağlan yardımcı sınıf.
    TreeTable: Tablo'nun bir sütunu ağaç yapısı şeklinde görünür. Ağaç yapısının açma/kapama (expand/collaps) desteği vardır.
    HierarchicalTable: Satır aralarında fazladan bileşen bulundurabilen JTable uyarlaması. Windows'un program ekle/kaldır ekranına benzer ekranlar yapılabilmekte.
    GroupTable: Belli sütundaki değerlere göre verileri gruplayabilmekte.
    GroupList: Gruplama özelliği olan liste uyarlaması.
    JideTable: Çok katmanlı sütun gruplama, hücre güncellemede fazladan editingStarting, editingStarted ve editingStopping eventlerinin fırlatılması, hücre güncellemede kontrol gibi özelliklerin eklendiği JTable uyarlaması.
    TableScrollPane: Satır başlığı, satır sonu, sütun sonu gibi ek alanlar (JScrollPane'ın sağladıklarına ek olarak), sütun sabitleme (sadece istenilen sütunların scroll edilmesi, diğer sütunların scroll edilmemesi) gibi özellikler sağlamaktadir.
    TableSplitPane: Büyük bir tablonun sütunlarını jidenin split pane'inde birçok pane'e parçalayabilen, aynı zamanda da gezinme, sıralama, scroll etme gibi özellikleri de kaybetmeyen bileşen.
    DualList: İkili liste vasıtasıyla kayıt seçme ve sıralama desteği sağlayan bileşen.
    TableColumnAutoResizer, TableRowAutoResizer, TableColumnResizer, TableRowResizer: Kullanıcının tablonun satır ve sütunlarını yeniden boyutlandırabilmesine imkan sağlamaktadır.
    TableUtils: Tablonun seçim, satır/sütun boyutu, sütunların sıralaması, scroll durumu gibi birçok ayarını kaydetme ve yeniden yüklemeye imkan sağlayan yardımcı sınıflar.
    DateComboBox, ColorComboBox, TreeComboBox, ListComboBox, FileChooserComboBox: Tarih, renk, font ve benzeri tipte veri seçmek için kullanılan, popup'ında liste, tablo, ağaç, checkboxlist ve benzeri birçok bileşeni gösterebilen, popup'ı yeniden boyutlandırılabilen JComboBox uyarlamasıdır.
    DateChooserPanel: Gün seçmek için kullanılan takvim görünümlü bileşen.
    MonthChooserPanel: Ay seçmek için kullanılan bileşen.

    Dialogs

    WizardDialog: Wizard hazırlamak için hazır diyalog.
    MultiplePageDialog: Bazı uygulamaların seçenekler ekranlarındaki gibi ikonlu tabbed pane uyarlaması.
    AggregateTable: Satırları gruplamaya imkan sağlayan ağaç yapılı tablo uyarlaması.

    Data Grids

    PageNavigationBar: JList ve JTable'da çok fazla veri olduğunda verilerin sayfa sayfa gösterilmesi ve sayfalar arasında gezinmeye imkan sağlamaktadır.

    Shortcut Editor

    ShortcutEditor: Uygulamanın tüm kısayollarını yönetmeye yarayan bileşen. Şema desteği, xml olarak kaydetme ve yeniden yüklemek için yardımcı foksiyonları mevcuttur.

    Dashboard

    Dashboard: Portal benzeri arayüzler oluşturmaya imkan sağlayan bileşendir.

    12 Ağustos 2009 Çarşamba

    Subversion

    Subversion (SVN) bir versiyon kontrol sistemidir/version control sistem (VCS).

    Versiyon kontrol sistemleri aynı zamanda kaynak kod yönetimi/source code management (SCM) olarak da isimlendirilmektedir. Versiyon kontrol sistemleri kod, doküman veya diğer herhangi bir dosyanın değişimini tarihsel olarak tutmak için kullanılır. Günümüzde yazılım projelerinin vazgeçilmez bir parçasıdır.

    Subversion'ın resmi sitesine burdan ulaşabilirsiniz.

    Alternatif Versiyon Kontrol Sistemleri
    • Concurrent Versions System (CVS): Açık kaynak kodludur. Açık kanak kodlu projelerde SVN'den önce en yaygın şekilde kullanılan bir versiyon kontrol sistemidir.
    • Visual SourceSafe (VSS): Microsoft'un geliştirdiği versiyon kontrol sistemi.
    • ClearCase: IBM'in geliştirdiği versiyon kontrol sistemi.
    • Git: Açık kaynak kodlu, dağıtık mimarili olarak tasarlanmış bir versiyon kontrol sistemi.


    SVN varsayılan dizin yapısı

    SVN'de proje dizini altında trunk, branches ve tags dizinlerinin açılması tavsiye edilir. Trunk ana branch'tır ve asıl geliştirme bu branch üzerinde yürütülür. Branch'lar branches dizini altına açılan ilgili dizine, tag'ler ise tags dizini altına açılan ilgili dizine atılır.


    SVN'de branch kavramı

    SVN branch alma dosya kopyalama şeklindedir. Branches dizini altına açılan bir dizine trunk'ın kopyasının alınmasıyla branch alınmış olur.

    Aşağıdaki komut ile branch alınmış olur.

    svn copy -m "1.1 branchı oluşturuldu." http://svn_server/abc_projesi/trunk http://svn_server/abc_projesi/branches/ver_1_1

    Bu komut işlemleri server tarafında çok hızlı bir şekilde gerçekleştirir. Client'ta branch çok yavaş olduğu için burada anlatılmadı.

    SVN'den silinen bir dosya yada dizinin geri alınması

    Projemizin SVN URL'inin http://svn_server/abc_projesi olduğunu ve bizim src dizinin altındaki com dizinini yanlışlıkla silip, commit ettiğimizi düşünelim. Repository'nin silinmeden önceli versiyonu'da 123 olsun. Aşağıdaki komutla com dizinimizi geri alabiliriz.

    svn copy http://svn_server/abc_projesi/src/com@123 http://svn_server/abc_projesi/src --message "silinen src dizini kurtarıldı."

    Spring

    Enterprise uygulama geliştirmenin karmaşıklığını ortadan kaldırmak için Rod Johnson tarafından geliştirilen açık kaynak kodlu bir altyapıdır. Spring; daha önce EJB'lerle yapılabilen birçok fonksiyonaliteyi POJO'lar (Plain Old Java Object - Herhangi bir interface'i genişletmek zorunda olmadığınız, sadece sizin ihtiyaç duyduğunuz özellik ve metodları barındıran sınıflar) üzerinden yapabilmeye imkan sağlamaktadır. Spring sadece enterprise uygulamalarda değil, diğer pek çok türdeki uygulamada da kolaylıklar sağlamaktadır.

    "Dependency Injection" Spring'in çıkış noktalarından biridir. Dependency Injection tasarım kalıbı yazılımın bileşenleri arasında bağımsızlığı sağlar. Bu durum aynı zamanda "Don't call me, I will call you" (Beni arama, ben seni arayacağım) Hollywood prensibi olarak da ifade edilir.

    JIRA

    1. Overview
    JIRA lets you prioritise, assign, track, report and audit your 'issues,' whatever they may be — from software bugs and help-desk tickets to project tasks and change requests.
    More than just an issue tracker, JIRA is an extensible platform that can be customised to match to any business processes.
    2. Features
    2.1. Issue Type Scheme:
    Project specific issue types. Locatization of type names.
    2.2. Notification Scheme:
    Event type: Issue Created, Issue Updated, Issue Assigned, Issue Resolved, Issue Closed, Issue Commented, Issue Comment Edited, Issue Reopened, Issue Deleted, Issue Moved, Work Logged On Issue, Work Started On Issue, Work Stopped On Issue, Issue Worklog Updated, Issue Worklog Deleted, Generic Event.
    Notified: Current Assignee, Reporter, Curent User, Project Leader, Component Leader, Single User (selected), Group, Project Role, Single Email Addess, All Watchers, User Custom Field Value, Group Custom Field Value.
    2.3. Permission Scheme
    Permissions: Administer Projects, Browse Projects, View Version Control, Create Issues, Edit Issues, Schedule Issues, Move Issues, Assign Issues, Assignable User, Resolve Issues, Close Issues, Modify Reporter, Delete Issues, Link Issues, Set Issue Security, View Voters and Watchers, Manage Watcher List, Add Comments, Edit All Comments, Edit Own Comments, Delete All Comments, Delete Own Comments, Create Attachments, Delete All Attachments, Delete Own Attachments, Work On Issues, Edit Own Worklogs, Edit All Worklogs, Delete Own Worklogs, Delete All Worklogs
    Belonging: Reporter, Group, Single User, Project Leader, Current Assignee, User Custom Field Value, Project Role, Group Custom Field Value
    2.4. Issue Security Scheme
    Security Level: Reporter, Group, Single User, Project Leader, Current Assignee, User Custom Field Value, Project Role, Group Custom Field Value
    2.5. Field Configuration Scheme
    Holds the association between “Issue Type” and “Field Configuration”.
    Field Configuration: List of Predefined or user defined fields. Defines association between specific field and screen. Other attributes; required, renderer, hidden.
    Field Types:
    Cascading Select: Choose multiple values using two select lists.
    Date Time: A custom field that stores dates with a time component
    GreenHopper Ranking: Field that will hold the rank of the issue.
    Hidden Job Switch: Hidden switch programmatically set whether or not to create a Perforce job.
    Job Checkbox: Checkbox to choose whether or not to create a Perforce job.
    Multi Group Picker: Choose multiple user groups using a popup picker window.
    Multi User Picker: Choose multiple users from the user base via a popup picker window.
    Project Picker: Choose from projects that the user can view in the system.
    Read-only Text Field: A read-only text label. Only possible to create values programatically (Used internally for imports from Mantis). Maximum of 255 characters.
    Single Version Picker: Choose a single version from available versions in the project.
    URL Field: Allow the user to input a single URL
    Version Picker: Choose from available versions in the project.
    Date Picker: A custom field that stores dates and uses a date picker to view them
    Free Text Field (unlimited text): A multiline text area custom field to allow input of longer text strings.
    Group Picker: Choose a user group using a popup picker window.
    Import Id: A read-only custom field that points back to the previously imported bug id.
    Multi Checkboxes: Choose multiple values using checkboxes.
    Multi Select: Choose multiple values in a select list.
    Number Field: A custom field that stores and validates numeric (floating point) input.
    Radio Buttons: A list of radio buttons
    Select List: A single select list with a configurable list of options.
    Text Field (< 255 characters): A basic single line text box custom field to allow simple text input.
    User Picker: Choose a user from the user base via a popup picker window.
    2.6. Issue Type Screen Scheme
    Defines association between “Issue Type” and “Screen Scheme”.
    Screen Scheme: Defines association between “Issue Operation” and “Screen”
    Screen: Visible fields, Order of Fields, Tab Selection, Tab Naming.
    2.7. Workflow Scheme
    Defines list of associations between “Issue Type” and “Workflow”.
    Workflow: Step Name, Linked Status, Transition.
    Transition: Conditions, Validators, Post Functions
    Conditions:
    Code Committed Condition: Transition to execute only if code has/has not (depending on configuration) been committed against this issue.
    No Open Reviews Condition: Transition to execute only if there are no related open Crucible reviews.
    Only Assignee Condition: Condition to allow only the assignee to execute a transition.
    Only Reporter Condition: Condition to allow only the reporter to execute a transition.
    Permission Condition: Condition to allow only users with a certain permission to execute a transition.
    Sub-Task Blocking Condition: Condition to block parent issue transition depending on sub-task status.
    User Is In Group: Condition to allow only users in a given group to execute a transition.
    User Is In Group Custom Field: Condition to allow only users in a custom field-specified group to execute a transition.
    User Is In Project Role: Condition to allow only users in a given project role to execute a transition.
    Validator:
    Permission Validator: Validates that the user has a permission.
    User Permission Validator: Validates that the user has a permission, where the OSWorkflow variable holding the username is configurable. Obsolete.
    Post Function:
    Assign to Current User: Assigns the issue to the current user if the current user has the 'Assignable User' permission.
    Assign to Lead Developer: Assigns the issue to the project/component lead developer
    Assign to Reporter: Assigns the issue to the reporter
    Create Perforce Job Function: Creates a Perforce Job (if required) after completing the workflow transition.
    Update Issue Field: Updates a simple issue field to a given value.
    2.8. CVS Module
    2.9. Mail Configuration
    POP3, IMAP, SMTP, JNDI support.
    2.10. Project Category
    Group project by category.
    3. User Manager
    Authentication only LDAP integartion.
    Groups
    Project Role
    Privilege
    4. Extract Information
    XML, Word, Printable and other plug-ins.
    Filter: Save filter.
    Dashboard:
    GreenHopper portlet - Displays the GreenHopper project dashboard
    Recent Changesets - Show recent changesets for a particular subtree of your code repository.
    Crucible Charting - Displays a chart generated from one of your Crucible instances.
    Bamboo Plan Summary - Portlet to display a graphical summary of results for a specific build plan.
    Project Table - Shows all project names in a table.
    Project - Allows the user to choose a project to display.
    Filter Statistics - Display statistics of issues returned from specified filter
    Favorite Filters - Lists favorite filters for the current user.
    Favorite Filters - Lists favorite filters for the current user.
    Issues in progress - Shows the issues in progress.
    Voted issues - Shows the issues voted by the current user.
    Introduction - An introduction to this installation of JIRA.
    Bugzilla ID Search - Search by Bugzilla ID
    Release Notes - Release Notes Portlet for remote access only
    FishEye Charting - Displays a chart generated from one of your FishEye instances.
    Bamboo Status - Portlet to display the status of builds in Bamboo.
    Projects - Displays multiple projects.
    Admin - Shows functions for admin users.
    Project Statistics - Displays statistics for a project
    Two Dimensional Filter Statistics - Display statistics of a specified filter in a table
    Assigned to me - Shows all unresolved issues assigned to the current user.
    Watched issues - Shows the issues watched by the current user.
    Show Saved Filter - Shows the issues/results for a saved filter.
    Quick links - Shows quick links to user issues.
    Road Map - Display upcoming versions for specified projects.
    5. Plugins and extend
    API, Admin, Agile, Custom Fields, Drawing, Export, External Tools, Issue Operation, Mail, Other, Portlets, Reports, Version Control Integration, Workflow Extensions, Worklog and Time-Tracking.
    6. Other
    Issue Linking
    7. Drawback
    No scheme support for priority, resolution or status.
    No static Issue Hierarchy

    Hibernate

    Hibernate nesne, veritabanı eşlemesi için bir altyapıdır. Başlangıçta Java ile geliştirilmesine rağmen NHibernate isminde .Net ile geliştirilen versiyonu da mevcuttur.

    ORM: Object/Relational Mapping. Nesne veritabanı eşlemesi. Java nesnelerimiz ile relational veritabanı arasında ilişki kurmayı ifade eder.

    Hibernate'de ORM, XML ile sağlanmakta. Hibernate'in son versiyonları bu eşlemeyi annotation ile de yapmaya imkan sağlamakta.