Showing posts with label Tutorial. Show all posts
Showing posts with label Tutorial. Show all posts

Ders Konuları - Öğrenme Ağları || Beyin Haritaları

Üniversite sınavlarına hazırladığım günlerde çalıştığım fizik, kimya, biyoloji, türkçe konularını tek bir bakışla tekrar edebilmek ve önemli noktaları unutmamak için kullandığım bir yöntem vardı. O dönemler ülkemizde de yeni yeni söylenen beyin haritaları ya da ışınsal öğrenme ağları.

Aşağıda o dönem konular üzerine yaptığım çizimleri paylaşıyorum.

Biyoloji - Nükleik Asitler

Biyoloji - Bilimsel Yöntem

Fizik - Elektirik Akımı


Fizik - Manyetizma



Türkçe - Sözcükler

Kimya - Madde ve Özellikleri


Kimya - Atom

Kimya - Çözeltiler


Kimya - Hal Değişimi



Fizik - Elektirik


Kimya - Temel Yasalar

Kimya -  Periyodik Tablo


Kimya - Gazlar

Biyoloji - Bilimsel Yöntem

Biyoloji - Besinler

Biyoloji - Kimyasal Enerji, Metobolizma

Biyoloji - Enzimler

Biyoloji - Hücre Bölünmesi 1

Biyoloji - Hücre Bölünmesi 2

Biyoloji - Genetik 

Biyoloji - Hücresel Solunum

Biyoloji - Fotosentez


Binary (Ikili) Sayıları Ezberleme Yöntemi

Dünya Hafıza Şampiyonası'ndaki etaplardan birisi de binary(ikili) haldeki sayıları ezberlemektir. Bu konuda çeşitli teknikler olmakla birlikte en çok kullanılan
olabildiğince çok fazla sayıyı bir harfle ilişkilendirmektir. 

Bu ilişkilendirmeden sonra, bu harflerle anlamlı kelimeler üretip, bunları hayali ilişkilendirme (hikaye yaratma) yöntemi ile ezberlemek kalıyor geriye.

Benim lise yıllarımda geliştiridiğim sayı harf ilişkisi aşağıdaki gibidir. Herkes farklı bir ilişkilendirme izleyebilir. Kişinin kolayına nasıl geliyorsa.

Benim fonetiğe çevirme yöntemimde maksimum 4 sayıya bir harf verildi. 4 veri için toplamda 2'li sistemde 16 grup oluşuyor. Bunları mantıklı ve akılda kalacak şekilde aşağıda açıklamaları ile yazıyorum.

0000 -> S  : Tüm sayıların (s)ıfır olmasından kaynaklı
0001 -> Ş  : Ş harfinin altındaki kuyruk ve sayının ilk harfinin 1 olması
0010 -> N  : Sayının O(N)'u temsil etmesi
0100 -> Y  : Sayının (Y)üz'ü temsil etmesi 
1000 -> B  : Saysının (B)in'i temsil etmesi

0011 -> H : H harfinin iki çubuğunun 11'e benzemesi
1100 -> F : F harfinin iki çubuğunun sayının başındaki 11'i temsil etmesi

1111 -> T  : (T)amamının 1 olması

1001 -> M : M harfinin iki yanındaki çubukların sayının şeklinde benzetilmesi
0110 -> V  : V harfinin ortadan uzanan iki çubuğunun sayının şekline benzetilmesi

1101 -> K  : K ve L harfleri alfabede art arda gelir.  
1011 -> L  : Bu iki sayı birbirinin yer değiştirilmiş halidir.

1010 -> P : P ve R hatfleri alfabede art arda gelir.
0101 -> R : Bu iki sayı birbirinin yer değiştirilmiş halidir

1110 -> D : Tam 1 (d)eğil'den çıkıyor bu benzetme.
0111 -> Z : (Sıfır) (Zero) ile başlaması.

Not: Bu sayı ve harflerin ezberlenmesi için 1000 tane 0-1'li sayı yazılıp dörder grup haline okunursa çok kısa sürede öğrenilmektedir.

Sonraki kısım ise şöyle çalışıyor.

  • 101001010100001010101010 rakamını ezberlemek için öncelikle dörtlü gruplar haline inceliyoruz.1010-0101-0100-0010-1010-1010
  • Her grubun harfini yerleştiriyoruz. P R Y N L P
  • Kelime üretiyoruz. Burada tamamen özgürsünüz. İster iki harfi kullanır bir kelime üretirsiniz, ister üç, ister dört ... PARA, YÜN, LAPA. Tabi burada önemi bir nokta daha bu ezberleme ve çözme işleminde hızlanmak için önceden bir kelime listesi oluşturmanız ve bunları kullanmanız önemli.
  • Hikaye: Paralar yünlerin içine karışmıştı. Herkes yünü ayıklayıp paraları Lapa haline getiriyordu.
  • Bu hikayeyi kafamızda canlandırtıktan sonra ezberleme işlemi bitmiş oluyor.
  • Söylerken tek yapmanız gereken geriye doğru gitmek. Hikayedeki kelimelerden harfleri, harflerden rakamlara dönüşüm yapmak.




Dünya şampiyonalarındaki fark genelde hazırlanan büyük kelime listelerinden ve olabildiğince çok fazla sayıyı gruplamaktan geçiyor.



ElasticSearch Jest Client kullanımı ve LogSearch Web Projesi

ElasticSearch'de JSF uygulamalarımızda nasıl sorgu yapıp sonuçları bir DataTable'da göstereceğimiz bir uygulama yaptım.

ES'den sorgu yapabilmek için RestApi'i kullanan JEST kütüphanesini kullandım. Kodun en önemli kısmının görüntüsünüde paylaştım. Ekran görüntüsünde görüleceği üzere ES query'isini direk bu string'e verdiğimizde bize sonucu dönecektir. Gerisi Model Class'ınız için datayı toparlamakta.

Hatırlatamakta fayda var JEST getHits() metodu geri direk ModelClass'ınızın dönüşünü de yapabilmekte. Yani Map alıp get'lere girmek zorunda değilsiniz. Fakat ben her yaptığımda Null data geldi o sebeple henüz beceremedim o kısmını.

Depo: https://github.com/egcodes/logSearchOnElasticSeach




ElasticSearch - Kibana ile Data Visualization

Bir önceki blog yazısında bir Oracle tablonusu ES makinanıza nasıl indexleyeceğinizi açıklamıştım. Bu yazıda da Kibana kullanarak bu datayı nasıl görselleştirip raporlama ve analiz yapacağınızı anlatacağım.


Kurulum

  • https://www.elastic.co/downloads/kibana
  • Kurulumu aslında yine bir kurulumun olmaması sadece paketi indirip çalıştırdığınızda eğer ES'nin default port'unu değiştirmediyseniz aşağıdaki adresden çalışmaya başlayacaktır. Komut satırında da yazdığı gibi localinizde şu adrese bağlandığınızda karşınıza kibana'nın arayüzü gelecektir.
  • http://localhost:5601

Kibana ES Index Table Ayarı

Arayüzde sağ taraftaki resimde görüldüğü gibi Management'a girdiğinizde index'lediğiniz tablolar gelmektedir. Şu ana kadar bir şey indexlemediğinizden burası boş olacaktır. Öncelikle Add New'e basarak index'lediğiniz indexName'i buraya girin. Böylece Kibana DataSet'ini kullanabilecektir. (IndexName ES'de tablo index'lerken kullandığınız ismin aynısı)
















Discover sekmesine bastığınızda yukarıdaki görüntüdeki gibi datanın görünmesi gerekiyor. Sağ üst köşeden tarih aralığını genişleterek datasının bir kısmını yada tamamını görebilirsiniz. Burası önemli bir nokta çünkü Date column'una göre datayı göstermektedir. Eğer datanızda bir ay öncesinin date'leri mevcutsa sadece burayı da Last 30 day seçmelisiniz ki datasını gözüksün.

Kibana ile Görselleştirme

Visualize sekmesine bastığınızda size yapabileceğiniz tüm grafikleri göstermektedir. Ben örnek olması açısından verilen tarih aralığı için günlük kaç adet row'umuz var onu gösteren bir grafik oluşturacağım. Bunun için örnek olarak AreaChart'ı seçtim.

Sol tafafta Y-Axis ve hemen altında X-Axis bölümleri bulunmakta.
  • Y-Axis için default Count geldiği için buraya karışmıyorum. Bunun dışında Average, Sum, Min, Max.. gibi 10'a yakın daha aggregate fonksiyonları da bulunamakta.
  • X-Axis için date aralığı oluşturmamız gerekiyor. Benim index tablolm için günlük olarak Date column'u olan InsertDate'i seçtim.
Ve üst tarafta ok işaretine bastığınızda ekrandaki gibi grafiğim oluştu. Bu oluşturduğunuz grafikleri sonradan Dashboard oluşturuken kulllanacaksınız o yüzden yukarı sağ köşeden Save ile bir isim vererek kaydedin.
























Kibana Dashboard

Dashboard oluşturduğunuz tüm grafikleri yerleştirip kullanacabileceğiniz bir arayüz. Sol taraftaki sekmelerden Dashboard'u seçtikten sonra sağ üst köşeden Add butonuna tıkladığnızda daha önce Save ettiğiniz chart'ların isimlerini göreceksiniz bunlara tıkladığınızda otomatikman Dashboard'a 
eklenecektir. Daha sonra büyüklük küçüklük ve yerleştirme işlemleri için ayarlamalar kalmaktadır. Sonradan bu Dashboard'u da yine yukarıdan Save ile kaydedip başka bir Dashboard'da yapabilrsiniz.

Netice olarak benim CleanDuplicateLogs index tablom için Dashboard'um şu şekilde gözüküyor.



ElasticSearch 101

Linux sistemleri ve ElasticSearch-5.0.1 version'una göre anlatılmıştır. Bu kılavuz dökümanda hızlıca ElasticSearch kurulumu, WebGui ayarlama ve LogStash ile bir Oracle tablosunu indexleyip sürekli senkronize tutulması anlatılmıştır.


ElasticSearch indirme, config ayarlama ve çalıştırma

Aşağıdaki adresden .tar.gz uzantılı olan indirilir.
  • https://www.elastic.co/downloads/elasticsearch

Tar.gz açıldıktan sonra elasticsearch/config/elasticsearch.yml içinde
  • cluster.name ve node.name kısımlarının yorumları kaldırılıp cluster ve node'nuza bir isim verilir. Ek olarak ElasticSearch için yazılmış web uygulamalarının da çalışmasını istiyorsanız aşağıdaki config'lerde eklenir
    • http.cors.allow-origin: "*"
    • http.cors.enabled: true 

$ /elasticsearch/bin/elasticsearch altındaki çalıştırılabilir program tetiklenir ve aşağıdaki gibi bir çıktı ile karşılaşmanız gerekir eğer tüm ayarlarınız doğruysa


ElasticSearch Web Gui

Şu adresden plugin indirilip bir yere açılır ve index.html açılır. Tıklandığında aşağıdaki sayfa gelecek ve connect'e bastığımızda yukarıda başlattığımız Elasticsearch'ün default port'una bağlanmış olacak.
  • https://mobz.github.io/elasticsearch-head/









LogStash ile OracleDB'den Data Aktarma

ElasticSearch'ün sitesinden logstash indirilip bir yere açılır. 
  • logstash/bin/logstash -f my.conf komutu ile aşağıdaki config verilir ve elastiscsearch'e index'leme başlar. Bu conf, OracleDB'den data indexlemek için kullanılır. Farklı yerlerden data toplamak için ilgili conf örneklerini internetten bulabilirsiniz.
  • Bu conf'un özelliği verilen date için en son timestamp /tmp/logstash-oradb.lastrun altında verilen file'da tutulur böylece tablo sürekli senkron olur ve yeni gelen date'ler sürekli index'lenir.
my.conf içeriği
input {
    jdbc {
        jdbc_validate_connection => true
        jdbc_connection_string => "jdbc:oracle:thin:@10.x.x.80:1522/DB"
        jdbc_user => "username"
        jdbc_password => "password"
        jdbc_driver_library => "/home/x/x/x/ojdbc7.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        statement => "SELECT * FROM TABLE WHERE DATA_DATE >= :sql_last_value"
        last_run_metadata_path => "/tmp/logstash-oradb.lastrun"
        record_last_run => true
        schedule => "* * * * *"
       }
}
filter {
    
}
output {
    elasticsearch {
index => "myIndexName"
}
}

Slurm Ayrıntılı Kurulumu Ve Konfigürasyonu



İçerik

  • Nedir
  • Kurulum
  • Konfigürasyon ve Çalıştırma
  • İş Gönderme

Nedir

Slurm süper bilgisayar merkezlerinin kullandığı bir kaynak yönetim yazılımıdır. Çalıştırılacak paralel çalışan programların uygun şekilde bilgisayarlar arasında dağımıtımını, kontrolünü ve izlenmesini sağlar.

Slurmctld isimli bir adet ControlMachine üzerinde çalışan Slurm Controller, Compute Node'lar üzerinde çalışan Slurmd Daemon'ı ve bunların iletişiminin şifrelenmesini ve yetkilendirilmesini sağlayan munge isimli servisten oluşmaktadır. 


İş teslimi için makina üzerinde munge servisi olmalıdır. Srun, sbatch komutları ile iş teslimi yapılır. İş SlurmController'a gider ve burdan Slurm Daemon'lara dağıtılır. Slurm'da iş yönetimi kısaca bu şekilde yapılır.  Aşağıdaki şablon Slurm çalışma sistemini kısaca özetler.



Kurulum

Not 1: Kurulum CentOs sistemler için anlatılmıştır
Not 2: Kurulum yaparken sabit bir dizin belirlenmiştir
  1. Munge: Slurm için lazım olan Authentication Plugin'i indirilir ve kaynaktan aşağıdaki şekilde kurulur. Slurm'la iş gönderilecek makinada mutlaka munge aynı anahtara sahip olacak şekilde kurulmalıdır.
    1. http://munge.googlecode.com/ adresinden indirilir.
    2. Munge için şu paketlerin sistemde kurulu olması gerekir.
      yum install gcc make perl openssl-devel.x86_64
    3. ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
    4. make
    5. make install
    6. munge.key oluştumak için aşağıdaki komuttan yararlanılır.
      echo -n "slurm" | sha1sum | cut -d' ' -f1 > /etc/munge/munge.key
      1. Ayrıca munge.key için izinler ayarlanır.
        chown daemon /etc/munge/munge.key
        chmod 700 /etc/munge/munge.key
    7. Son olarak aşağıdaki komutu verip lib dosyalarını cacheliyoruz.
      ldconfig
  2. Slurm https://computing.llnl.gov/linux/slurm/download.html adresinden aşağıdaki şekilde kurulur.
    1. (Database isteniyorsa)Şu paketler sistemde kurulu olmalı mysql-server ve mysql-devel
    2. (Sview arayüz isteniyorsa) Şu paket sistemde kurulu olmalı gtk2-devel.x86_64
    3. ./configure --prefix=/opt/slurm/ --with-mysql_config=/usr/bin/
    4. make
    5. make install


Konfigürasyon ve Çalıştırma

Slurm Konfigürasyonu için şu adresden otomatik olarak oluşturulup /opt/slurm/etc/slurm.conf içine yazılır ya da aşağıdaki örnekten yararlanılabilir. :http://www.schedmd.com/slurmdocs/configurator.html
# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=
BackupController=
#ControlAddr=
#BackupAddr=
# 
AuthType=auth/munge
CacheGroups=0
#CheckpointType=checkpoint/none 
CryptoType=crypto/munge
#DisableRootJobs=NO 
#EnforcePartLimits=NO 
#Epilog=
#EpilogSlurmctld= 
#FirstJobId=1 
#MaxJobId=999999 
#GresTypes= 
#GroupUpdateForce=0 
#GroupUpdateTime=600 
#JobCheckpointDir=/var/slurm/checkpoint 
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
#JobFileAppend=0 
#JobRequeue=1 
#JobSubmitPlugins=1 
#KillOnBadExit=0 
#LaunchType=launch/slurm 
#Licenses=foo*4,bar 
#MailProg=/bin/mail 
#MaxJobCount=5000 
#MaxStepCount=40000 
#MaxTasksPerNode=128 
#MpiDefault=none
MpiParams=ports=12000-12999
#PluginDir= 
#PlugStackConfig= 
#PrivateData=jobs 
ProctrackType=proctrack/linuxproc
#Prolog=
#PrologSlurmctld= 
#PropagatePrioProcess=0 
#PropagateResourceLimits= 
#PropagateResourceLimitsExcept= 
#RebootProgram= 
ReturnToService=2
#SallocDefaultCommand= 
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=root
#SlurmdUser=root 
#SrunEpilog=
#SrunProlog=
StateSaveLocation=/var/spool
SwitchType=switch/none
#TaskEpilog=
TaskPlugin=task/none
#TaskPluginParam=
#TaskProlog=
TopologyPlugin=topology/tree 
#TmpFs=/tmp 
#TrackWCKey=no 
TreeWidth=250
#UnkillableStepProgram= 
#UsePAM=0 
# 
# 
# TIMERS 
#BatchStartTimeout=10 
#CompleteWait=0 
#EpilogMsgTime=2000 
#GetEnvTimeout=2 
#HealthCheckInterval=0 
#HealthCheckProgram= 
InactiveLimit=0
KillWait=30
MessageTimeout=10 
#ResvOverRun=0 
MinJobAge=300
#OverTimeLimit=0 
SlurmctldTimeout=120
SlurmdTimeout=300
UnkillableStepTimeout=60 
#VSizeFactor=0 
Waittime=0
# 
# 
# SCHEDULING 
#DefMemPerCPU=0 
FastSchedule=0
#MaxMemPerCPU=0 
#SchedulerRootFilter=1 
#SchedulerTimeSlice=30 
SchedulerType=sched/builtin
SchedulerPort=7321
SelectType=select/cons_res
#SelectTypeParameters=CR_CPU
# 
# 
# JOB PRIORITY 
#PriorityType=priority/basic 
#PriorityDecayHalfLife= 
#PriorityCalcPeriod= 
#PriorityFavorSmall= 
#PriorityMaxAge= 
#PriorityUsageResetPeriod= 
#PriorityWeightAge= 
#PriorityWeightFairshare= 
#PriorityWeightJobSize= 
#PriorityWeightPartition= 
#PriorityWeightQOS= 
# 
# 
# LOGGING AND ACCOUNTING 
#AccountingStorageEnforce=0 
AccountingStorageHost=
AccountingStorageLoc=slurmAcctDb
AccountingStorageUser=root
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageType=accounting_storage/slurmdbd
AccountingStoreJobComment=YES
#
JobCompHost=
JobCompLoc=slurmAcctDb 
JobCompUser=root
JobCompPass=/var/run/munge/munge.socket.2
JobCompType=jobcomp/filetxt
#
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
#
#
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurmctld
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd
#SlurmSchedLogFile= 
#SlurmSchedLogLevel= 
# 
# 
# POWER SAVE SUPPORT FOR IDLE NODES (optional) 
#SuspendProgram= 
#ResumeProgram= 
#SuspendTimeout= 
#ResumeTimeout= 
#ResumeRate= 
#SuspendExcNodes= 
#SuspendExcParts= 
#SuspendRate= 
#SuspendTime= 
# 
ClusterName=orion
# 
# COMPUTE NODES 
NodeName=a1-a10 CPUs=2 State=UNKNOWN 
NodeName=a11-a20 CPUs=4 State=UNKNOWN 


#shortMaxTime 3 saat, longMaxTime 1 hafta
PartitionName=short Nodes=a[1-10] MaxTime=180 State=UP Default=Yes AllowGroups=slurm
PartitionName=mid Nodes=a[11-20] MaxTime=3-0:0:0 State=UP AllowGroups=slurm


Slurm database için /opt/slurm/etc/slurmdbd.conf içine şu dosyadaki konfigürasyon yazılır.
# Sample /etc/slurmdbd.conf 
# 
ArchiveEvents=yes 
ArchiveJobs=yes 
ArchiveSteps=no 
ArchiveSuspend=no 
#ArchiveScript=/usr/sbin/slurm.dbd.archive 
AuthInfo=/var/run/munge/munge.socket.2 
AuthType=auth/munge 
DbdHost=
DbdBackupHost=
DebugLevel=4
PurgeEventAfter=1month 
PurgeJobAfter=12month 
PurgeStepAfter=1month 
PurgeSuspendAfter=1month 
LogFile=/var/log/slurmdbd.log 
PidFile=/var/run/slurmdbd.pid 
SlurmUser=root 
StoragePass=
StorageType=accounting_storage/mysql 
StorageUser=root
StorageLoc=slurmAcctDb


Çalıştırma

  • Öncelikle authentication programı aşağıdaki komut ile çalıştırılmalıdır.
    • service munge start
  • Slurm controller ve daemon aşağıdaki şekilde yapılandırılmalıdır. Slurm'un init.d betiği Slurm'un kaynak dosyası içersindeki etc dizininde mevcuttur. Buradan alınıp /etc/init.d/slurm ismi ile kopyalanır ve aşağıdaki değişiklikler yapılarak slurm servisi hazır hale getirilir.
    • cp slurm/etc/init.d.slurm /etc/init.d/slurm
    • cp slurm/etc/init.d.slurmdbd /etc/init.d/slurmdbd
  • /etc/init.d/slurm ve slurmdbd dosyalarını açıp aşağıdaki değişkenleri(exec_prefix ve prefix) tanımlayalım. Eğer BINDIR,CONFDIR.. bir yanlışlık var ise aşağıdaki gibi yapalım.
    • exec_prefix=/opt/slurm
    • prefix=/opt/slurm
  • Servis başlatılır ve bilgisayar her açıldığında çalışacak şekilde ayarlanır.
    • service  slurm start
    • service slurmdbd start
  • Ve servisler başlangıçta açılacak şekilde ayarlanır
    • chkconfig --level 345 slurm on
    • chkconfig --level 345 slurmdbd on
    • chkconfig --level 345 munge on

İş Gönderme

  • İnteraktif olarak iş göndermek için basit bir helloWorld mpi işi internetten bulunup derlenip aşağıdaki şekillerde gönderilir.
    • srun -N 10 mpijob
    • sbatch job.slurm


İş gönderme ve Slurm kullanımı ile ilgili ayrıntıları bir dahaki yazımda açıklamak üzere

Semantic-MediaWiki Eklentisi

Dünyanın bilgi birikiminin bulunduğu dev ansiklopedi wikipedia.org, arka planda bu web sitesini yönetmek için MediaWiki özgür yazılımını kullanır. (Ayrıntılı bilgi: mediawiki.org.)

MediaWiki bilgiyi kullanıcılarla paylaşmada son derece yeteneklidir. Fakat iş bu dev bilgi ağının içerisinden bazı detay bilgileri çekmeye geldiğinde MediaWiki eksik kalmaktadır.

Bu sebeple, geleceğin web standartı denilen semantic web eklentisi yardımımıza koşmaktadır. SemanticMediaWiki (semantic-mediawiki.org) ile sonradan hızlıca çekmemiz gereken bu detay bilgiler için özel yapılar (property) tanımlanır. Ve daha sonra bunları aynı sql sorgusu yapar gibi istediğimiz wikipedia sayfasından çekebiliriz.

Bu anlattıklarım ile ilgili aşağıda hızlıca göz atabileceğiniz örnek template, form ve property'ler var. Ve semantic sorgu ile bunları nasıl alıp gösterebileceğimiz.

Sonuç olarak ortaya çıkacak semantic-mediawiki destekli kategori sayfası





Örnek Template (Rapor tutulması için kullanılacak template)
This is the "Report" template.
It should be called in the following format:

{{Report
|Date=
|Personnel=
|Keywords=
}}

Edit the page to see the template text.

{| class="wikitable"
|-
! Date
| [[Has date::{{{Date|}}}]]
|-
! Personel
| {{#arraymap:{{{Personnel|}}}|,|x|[[Is assigned to::x]] }}
|-
! Keywords
| [[Has keywords::{{{Keywords|}}}]]
|}

[[Category:Report]]


Örnek Form (Rapor girilebilmesi için oluşturulan form)
;Başlangıç

* Rapor ismini, aşağıdaki "Rapor id"yi bir arttırarak giriniz.
'''En son olusturulan Rapor id:'''

{{#ask:[[Category:Report]]
| order=desc
| limit=1
}}

{{#forminput:form=Report}}


{{{for template|Report}}}
{| class="formtable"
! Date:
| {{{field|Date}}}
|-
! Personnel:
| {{{field|Personnel}}}
|-
! Keywords:
| {{{field|Keywords}}}
|}
{{{end template}}}


'''Free text:'''

{{{standard input|summary}}}

{{{standard input|minor edit}}} {{{standard input|watch}}}

{{{standard input|save}}} {{{standard input|preview}}} {{{standard input|changes}}} {{{standard input|cancel}}}


Örnek Kategori Sayfası (Raporları zaman çizgisinde ve tablolar halinde görmek için)

This category uses the form [[Has default form::Report]].


''' Zaman Çizgisi '''
 {{ #ask: [[Category:Report]]
  | ?Has date#Has date=Rapor Tarihi
  | ?Is assigned to#Is assigned to=Sahibi
  | ?Has keywords#Has keywords=Anahtar Kelimeler
  | format=timeline
  | timelinebands=WEEK,MONTH
  | limit=100
 }}


''' Raporlar '''
 {{#ask: [[Category:Report]]
  | ?Has date#Has date=Rapor Tarihi
  | ?Has keywords#Has keywords=Anahtar Kelimeler
  | ?Is assigned to#Is assigned to=Sahibi
  | format=broadtable
  | sort=Has date
  | order=desc
  | limit=20
}}

PXE Boot ve Pardus


Ağustos ayında staja başladığım Pardus'da projem PXE Boot ile Pardus kurulumu. Kısaca nedir diye soracak olursanız, PXE Boot, linux sistemlerinin ağ üzerinden kurulumunu sağlayan bir sistem. 


Bu olayı yapabilmek için bir server bilgisayarımız ve bir de kurulumun yapılacağı client bilgisayarı lazım. 


Server tarafı

Öncelikle server ile client arasındaki bağlantıyı sağlayabilmek için Pardus programcılarının geliştirdiği PTSP(Pardus Terminal Server Project) kurulumu ve ayarları yaparak server'i başlangıç için hazır hale getiriyoruz. Gerekli dökümantasyon bu adresde bulunuyor. (http://tr.pardus-wiki.org/NASIL:PTSP). Burda yazılanlara ek olarak benim başıma gelen olaydan çıkarak şu uyarıyıda yapayım. Bağlantı kurarken Firewall'ınızı kapatmayı unutmayın ya da UDP 63. porttaki alışverişe izin verin.

Sonraki adım olarak PTSP kurulumdan sonra root dizini altında /tftpsptp/pts isimli bir klasör ve onun içindede kernel, initramfs ve diğer ayar dosyaları oluşacaktır. Eğer bunlar var ise kurulum başarılı olmuştur. PTSP dökümanında söylenen dhcp, tftp, nfs-server, rpcbind servisleri çalıştırılırsa bağlantı için herşey hazır demektir.


Client tarafı

Client tarafındaki makinamazın PXE Boot özelliğini barındıran bir bilgisayar olması yeterlidir. Ayrıca sanal makine ile de bu olayı deniyebilirsiniz. Ben VirtualBox ile denemelerimi yaptım. Ayarlar kısmından network ayarlarında ağ arayüzü olarak bridge kısmı  ve ağ kartı olarak pci III seçilmeli, boot seçeneği olarak network seçilmesi yeterlidir.

PXE Boot'un çalışma mantığına kısaca değinecek olursak.

  • Client çalıştığında dhcp istemcisi ağ'a ip adresi isteyen paketler gönderir.
  • Server bu paketi alır ve kendi üzerinde çalışan dhcp servisi ile belirtiğimiz aralıktaki bir ip adresini client'a yolar.
  • Client ip adresine ve server kısmında PTSP ayarlarını yaparken dhcp.conf dosyası içinde tanımladığımız         filename = /pts/latest-ptsp/pxelinux.0 tanımınada sahip olur.
  • Client filename tanımında ki adresden üzerindeki tftp uygulaması ile bu dosyayı çeker ve pxelinux.0 içindeki ayarlar doğrultusunda kernel ve initramfs'i server'dan çekip RAM'e yazar ve boot işlemini başlatır.
Buradan sonra iş RAM'de bulunan kernel ve initramfs'e aktarılmıştır. Bu kısımda olanlar ise

Kernel çalıştığında kendi içerisindeki olayları tamamladıktan sonra RAM'e yüklenen initramfs'i kök dosya sistemi olarak bağlar. Initramfs küçük bir linux dağıtımı gibi içinde /bin, /etc ... ve init betiğini bulunduran bir dosya sistemi.

Daha sonra İnitramfs kendi içinde bulunan init betiğini çalıştırarak gerekli donanımları yükler

İşte bundan sonrası init betiğinin içinde olacaklar ve projenin bir özelliği olan istediğimiz iso'yu seçip kurma bölümü burda başlıyor. Projede şu an yaptığımız client tarafında pxebootselect isimli C ile yazılmış bir uygulama ile serverdan aldığımız xml'i parse edip menü ile kullanıcıya göstermek ve seçilen iso doğrultusunda serverdan iso'yu mount etmek.


Gerisi normal Pardus kurulumu. İleriki yazılarımda server tarafında yazdığım program ve konfigurasyon üzerine daha çok bilgi verecem ama önce benim de öğrenmem gerekiyor :)