Fedora 20 Adım Adım Laravel Kurulumu

Hepinizin malumu Laravel şu an en popüler php frameworklerinden biri. İnternette Ubuntu için oldukça fazla anlatım mevcut olmasına rağmen Fedora'da oldukça kısıtlı ve eksik. Böyle olunca lamp kurulumundan başlayarak adım adım anlatalım dedik. Hadi başlayalım.

1.LAMP KURULUMU

   1.1 Apache Kurulumu

      Paket Yöneticisi Güncellenir

      #sudo yum update

      Apache web sunucusu kurulur

      #sudo yum install httpd

      Web sunucusu çalıştırılıp kontrol edilir

      #sudo service httpd start

      Tarayıcı'ya http://localhost yazılırsa şöyle bir şey çıkması lazım


     1.2 Mysql Kurulumu

       Mysql Kurulur ve başlatılır

       #sudo yum install mysql mysql-server       #sudo service mysqld start       


       Mysql Güvenli Kurulum betiği çalıştırılır

      #sudo /usr/bin/mysql_secure_installation
     
      Aşağıdaki gibi sorulara cevap verilir.


/usr/bin/mysql_secure_installation: line 379: find_mysql_client: komut yok

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): Burada enter'a basıyoruz
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

     1.3 PHP Kurulumu

       Php ve gerekli modülleri yüklenir

       #sudo yum install php php-mysql php-mcrypt 
         (mcrypt paketi kurulmazsa laravel kurulumunda hata verebilir)    

     1.4 Sistem Açılış Ayarları

       Aşağıdaki komutları yazarak http ve mysql servislerinin sistem açıldığında otomatik açılmasını sağlıyoruz
        #sudo chkconfig httpd on
        #sudo chkconfig mariadb on



     1.5 Php Testi

       Nano Editörü yüklenir

       #sudo yum install nano
       #sudo nano /var/www/html/info.php

       Açılan editöre aşağıdaki kod kopyalanır

     
             <?php 
             phpinfo(); 
            ?>

        Kaydedilip çıkılır. Apache yeniden başlatılır

         #sudo service httpd restart

        Tarayıcı'ya http://localhost/info.php yazılırsa şöyle bir şey çıkması lazım



2.LARAVEL KURULUMU

  Terminalde şu komutu yazıyoruz

   #sudo curl -sS https://getcomposer.org/installer | php
  

  Composer.phar dosyasını çalıştırılabilir dosyalar klasörüne atıyoruz.

   #mv composer.phar /usr/local/bin/composer

  Html Klasörümüze gidiyoruz

   #cd /var/www/html
   #composer create-project laravel/laravel proje-isminiz
   #cd proje-isminiz
   #composer install
   #cd ..
   #sudo chmod -R 777 proje-isminiz
   
   Tarayıcı'ya http://localhost/deneme/public/ yazdığınızda aşağıdaki ekran gelmesi lazım. Gelmiyorsa SElinux engelliyordur. Kaldırmak için
    #nano /etc/selinux/config 
    Bu dosya içerisinde yer alan SELINUX=enforcing yazan satırı SELINUX=disabled veya permassive olarak değiştiriyoruz  ve dosyamızı kaydediyoruz.


   

27 Eylül 2014

Posted In: fedora, Gezegen, kurulum, laravel, linux

Bir Proje Hikayesi: Vipera

Öncelikle Vipera’nın ne olduğundan bahsedeyim. Vipera, bir sağlık sistemidir. Çeşitli tıbbi cihazlar ile üretilen sağlık verilerini bir API üzerinden sisteme girilmesini sağlar. Girilen bu verileri hekimlere sunarak hekimlerin hastalar hakkında karar vermesinde yardımcı olur. Bir karar destek sistemidir. Hekimler kendi panellerinden grafikler üreterek hastanın sağlık durumunu takip eder. Vipera, tanımlanan acil durum kuralları sayesinde de istenilen bildirim yöntemi ile (SMS ve Android Push Bildirimi halihazırda çalışmaktadır) hekimlere bildirim gönderir.

Aslında hedefim Vipera’nın hekimin yerine karar vermesini sağlamak yani bir uzman sistem oluşturmaktı. Fakat bunu yapabilmek oldukça zor ve maliyetli bir işti. O yüzden üzerinde yapay zeka yöntemlerinin uygulanabileceği verileri öncelikle saklamak gerektiğine karar verdim.

Teknik Hedef

Projenin bir de teknik bir hedefi vardı. Java teknolojileri ile geliştirilmiş tamamen özgür teknolojilere sahip, esnek ve katmanlı bir mimariye sahip bir proje geliştirmekti. Öğrendiğim yazılım araçlarını da etkin kullanmayı da hedeflemiştim.
Bitirme projesini bu şekilde yapmayı istedim. Proje konusunu ise danışmanım belirledi.

Proje için Spring’i tercih ettim. Bunun asıl sebebi Spring’i öğrenmek istememdi. Aynı zamanda Spring ile geliştireceğim proje Lightweight bir proje olacaktı. Bununla birlikte gösterim katmanında JSF ve Primefaces, veri katmanında ise JPA’nın Hibernate implementasyonunu tercih ettim. Defacto olan maven ve diğer araçları da kullandım. Veritabanı olarak gömülü bir veritabanı yönetim sistemi olan HSQLDB’yi, asıl veritabanı yönetim sistemi tercihim ise PostgreSQL oldu. Veritabanı bağımsız olduğu için herhangi bir RDBMS kullanabilirdim.

Vipera?

Neden “Vipera” adını verdiğimi merak edenleriniz olabilir. Vipera, latince Engerek yılanı cinsi anlamına gelir. Biyolojik bir isimdir. Sağlık ile ilgili bir proje geliştirdiğimden yılanların latince isimlerinden birini verebileceğimi düşündüm. “Vipera” adını görünce proje adını belirledim.

Geliştirme Süreci

Okul dönemin uzun bir zamanında yarı zamanlı olarak çalıştığım için projeye zaman ayırmam mümkün olmadı. İlk dönem sonunda sadece giriş ekranını kodlayabilmiştim. Bahar döneminin sonuna projenin bitmesi gerekiyordu. Projeye başlarken kullanıcı hikayeleri ve görevler listesi oluşturdum. Daha sonra bunları önceliklendirdim. Daha sonra kullanıcı hikayelerinin implementasyonuna başladım. Katmanlı mimari oluşturmak pek zor olmasa da birçok teknolojiyi bir arada kullanmak başlangıçta bazı problemlere sebep oldu. Başlangıçta test güdümlü geliştirsem de zaman ve projenin birçok kısmı basit ve net çözümler olduğundan test güdümlü geliştirmeyi bıraktım. Fakat birçok yerde temiz kod yazmaya çalıştım. %100 e yakın dökümantasyon yazdım.

Tubitak Yarışması

Zaman darlığında projeyi tamamlayamayacağımı düşünürken danışmanım TUBİTAK tarafından düzenlenen Yazılım Projeleri Yarışması’na da katılmamı istedi. Ben birçok kez katılmamayı düşünürken başvuru tarihinin sonuna yakın bir gecemi harcayarak ilgili belgeleri hazırladım ve yarışmaya başvurdum.

Yarışma için projenin yetişmeyeceğine kesin karar vermişken bir taraftan mezun olabilmek için sınavları geçmem gerekiyordu. Ayrıca Vipera, bitirme projesi olduğundan bu dersi de geçmem gerekiyordu. Projenin TUBİTAK’a teslimine 2 hafta kalmıştı. O iki hafta sonunda finaller, ödevler, tez hazırlama gibi şeylerle karşılaşacağımdan kalan zamanım sadece 2 haftaydı. Yarışma ile kendimi motive ederek projeyi tamamlamaya karar verdim. Vizelerin yorgunluğunu henüz atamamışken gece gündüz projeyi kodlamaya devam ettim. Son günde projeyi tamamladım fakat yarışma için video ve rapor hazırlamak gerekiyordu. Video’yu montajlayıp izleyemeden TUBİTAK’a gönderdim. Rapor ise çok kötü haldeydi. Elimden gelen bu kadar diyerek kötü internet bağlantısına ve verilen süreyi aşmama rağmen projeyi teslim etmeyi başardım. Halen videoyu izleyip kendime gülüyorum :)

Bir Yarışma Hikayesi

Bitirme projesinin sunumundan bir gün önce final sergisine çağrıldığımı öğrendim. Final sergisine 1 hafta vardı. Finallerin yorgunluğunu yine atamamışken bu sefer tekrar girişip bildirim sistemini geliştirdim. Ayrıca afiş tasarımı vs. yaklaşık iki günümü almıştı. Daha önce android e bulaşmaktan hep kaçmış biri olarak ilk defa bir android uygulaması geliştirdim ve Vipera’nın bildirim sisteminin istemci tarafını yazdım.

Yarışma açık kaynak kodlu uygulamalar kategorisinde yarışıyordum. Bu kategorideki projeler, diğer kategorilere ve yarışmalara göre daha düşük kalıyordu. Teknik ve açık kaynak felsefesi açısından değerlendirildiğinde benim proje diğer projelerden üstündü. Sunum için bize yaklaşık 7dk süre verildi. 45dklık bir semineri 75dk’da verebilen biri için oldukça kısa bir süreydi. Üzerinde zaman harcayarak bu sürede sunumu tamamlamayı başardım. Sunumun sadece juriye yapılması, serginin değerlendirilmemesi gibi yarışma birçok açıdan kalitesizdi. Sunumu merak edenler yazının sonundaki slideshare sunumundan inceleyebilirler.

25 Haziran’da yapılan ödül töreninde sonuçlar açıklandı ve Vipera üçüncü sırada yer aldı.

Teknik Açıdan Sonuçlar

Vipera, geliştirmiş olduğum ilk proje olması sebebi ile benim için önemli bir yere sahip. Yarışmada ödül almasından daha çok böyle bir projeyi kısa sürede geliştirebilmek benim için oldukça büyük bir öneme sahip. Esnek bir yapıda geliştirme yaptığımdan dolayı yeni öğreneceğim Java teknolojilerini de bu proje üzerinde deneme şansım olacak. Yine benim için en önemli avantajı, hatalarımı görmem oldu. Gördüğüm başlıca eksiklikler şöyle:

  • Gösterim katmanındaki Controller ile işletme katmanının görevlerini karıştırmak,
  • LOG yazmak konusunda nerdeyse hiç birşey bilmiyor olmam,
  • Nerede test yazılması ve nerede yazılmaması gerektiği konusunda eksiklikler,
  • Tasarım desenleri,
  • Temiz kod!

Böyle bir projeyi geliştirmek zor olsa da beni motive ettiğini ve bugüne kadarki yazılım çalışmalarımın meyvesini aldığımı söyleyebilirim.

TUBİTAK yarışmasına katılmayı düşünenler için de en önemli tavsiyem mutlaka bilimsel bir proje ile başvurulması. Jüri, projenin bilimsel olmasına herşeyden daha çok önem veriyor.

Güncelleme

Bu yazının bu kısmını 7 Mart 2016’da yazıyorum. Projenin üzerinden nerdeyse 2 yıl geçmiş. Vipera benim üniversitede öğrenmek istediğim konuları öğrendiğimin bir göstergesi oldu. Yukarda da bahsettiğim proje hatalarla dolu. Ne de olsa o zamanlar mezun bile değildim. Projeyi öğrenme amacı ile inceleyecek olan arkadaşlar dikkatli olsunlar.

Kendi başınıza proje geliştirmenin birçok avantajı bulunmaktadır. Herşeyden önce kendi hatalarınızı kendiniz görmüş olursunuz. Proje geliştirirken birçok bilgi de beraberinde gelir. Ekip halinde çalışırken ekibe uyumlu olmak zorundasınız. Birşeyleri değiştirmeniz kolay olmaz veya doğru bildiğiniz konuları hem siz yanlış uygulayabilirsiniz hem de danıştığınız kişiler yanlış biliyor olabilir. O yüzden mutlaka kendi başınıza bir proje geliştirin.

Biraz gelecekten gelmiş gibi olacağım ama :) Merak edenler varsa yukardaki eksiklikler konusunda ne olduğunu da yazayım. Gösterim katmanı ve İşletme katmanı sorunlarını projeden hemen sonra anladım. Kısaca özetlersem gösterim katmanı sadece io olmalı. Asıl işleri işletme katmanı yapmalı. Log yazmak konusu da projeden projeye değişen bir durum. Fakat veri değiştiren işlemlerde mutlaka info seviyesinde log yazmalısınız. Test konusunda da oldukça rahatım. Tasarım desenleri projeden sonra çalıştığım ilk konu oldu. Tasarım desenlerini sorsanız şu an en çok kullanılanları anlatırım. Fakat tasarım desenlerine tam olarak hakim olmak için tecrübe gerekiyor. Bu konuda ne seviyedeyim ben de bilmiyorum.

Temiz kod ise yine oldukça önemli. Bu konuda herhangi bir sorun yaşamıyorum. Hatta Akademik Bilişim 16 da “Temiz Kod” kursu verdim.

Projenin Kaynak Kodu

24 Eylül 2014

Port Scan Detection using ElasticSearch and Kibana

NEK :  Netflow + ElasticSearch + Kibana
One of the most fundamentals of security monitoring is to be aware of port scans which can be part of reconnaissance activity. Netflow is very critical in network situational awareness (NetSA), and utilizing Elastic Search and Kibana we can create ourselves a nice looking dashboard that makes it very easy to spot scanning activities. ES+K not only a good solution for having a better dashboard, but also it overcomes limitations of typical IDS systems (snort,suricata,bro etc) associated with cost of having to track scanner activity for long periods. We can easily cook a realtime alerting system that can easily track 24-48 hour or even longer windows for abnormalities and scan activites.

In this blog post, you'll be able to create a dashboard that can be used for NetSA purposes in your environment.

Importing Netflow data into ES

I have a Netflow data file captured on June 10th, 2014 for a high volume web site. It contained data for all connections coming from all around the world to their public IP address. Time window in this Netflow file was 2014-06-10 00:00:00 - 2014-06-10 23:59:58. For the purpose of this blog post, first step in importing this file was to split flow records with only Syn packets into a separate dump file so that we can focus on typical matching pattern for common vertical/horizontal port scan (and also block scans). Using similar technique we can also catch SYN floods howeever this is a topic for another post.

In order to split flow records with only 'S', we can use following :

 # nfdump -r 2014-06-10.dump "flags S and not flags AFURP" -zw 2014-06-10-S.dump  

I should note that, due to nature of a 'flow', it may contain multiple TCP flags. So during a lifetime of a flow tuple (srcip,srcport,dstip,dstport,protocol) both S and A flags can be set and in this case above command will filter them out as we're not interested in flows that hit to an open (ACKed) ports. Out of 38,435,805 flows recorded in our 2014-06-10.dump file, there are only 275,485 flows that matches our criteria, so it makes it a lot easier to both import and analyze. Having said this, we'll still import full Netflow file along with SYN only flows into 2 separate types in ES as we want to observe if any traffic connection gets established between scanner IPs and alert on them.

When we're importing flows for S flows only dump file, we'll also get 'Flags' field so to get it converted to CSV :

 # nfdump -N -r 2014-06-10-S.dump -o "fmt:%ts, %sa, %sp, %da, %dp, %byt, %pkt, %out, %pr, %flg" -q > s.csv  

For our sample data set, this will create about 32MB file. File output for this file will contain lines like (masked to protect real IPs):

 2014-06-10 00:00:00.422,   AA.90.XX.2,  2299,   XX.20.YY.8,  445,   192,    4,   0, 6  , ....S.  
2014-06-10 00:00:03.456, ZZ.YY.103.20, 3241, XX.ZZ.112.25, 445, 20736, 432, 0, 6 , ....S.
2014-06-10 00:00:03.550, ZZ.XX.VV.132, 45486, XX.55.YY.12, 25, 352, 8, 0, 6 , ....S.
2014-06-10 00:00:03.695, XX.20.ZZ.114, 41313, XX.20.ZZ.AA, 15, 9040, 226, 0, 6 , ....S.
2014-06-10 00:00:05.560, AA.46.XX.64, 25003, BB.XX.19.AA, 80, 104, 2, 0, 6 , ....S.



For all flows, lets also get them converted to CSV for easy import into ES :

 # nfdump -N -r 2014-06-10.dump -o "fmt:%ts, %sa, %sp, %da, %dp, %byt, %pkt, %out, %pr" -q | gzip -1c > 2014-06-10.csv.gz  

I typically pipe export operation to a gzip utility as it will make it easier to move files around and faster to import using FIFO devices. Before getting them inserted into ES, lets create types for each. I'll first create a type for ALL flows we have using type definition used in previous blog post "NetFlow Analysis using ElasticSearch & Kibana"

1:  {  
2: "external": {
3: "_all" : {"enabled" : false},
4: "_source" : {"enabled" : false},
5: "properties": {
6: "ts": {"type": "date", "format" : "YYYY-MM-dd HH:mm:ss"},
7: "sa": {"type": "string", "index": "not_analyzed"},
8: "sp": {"type": "integer", "index": "not_analyzed"},
9: "da": {"type": "string", "index": "not_analyzed"},
10: "dp": {"type": "integer", "index": "not_analyzed"},
11: "byte": {"type": "long"},
12: "pkt": {"type": "long"},
13: "out": {"type": "integer", "index": "not_analyzed"},
14: "pr": {"type": "string", "index" : "not_analyzed"}
15: }
16: }
17: }

And for SYN flows we'll use following type definition. Please note, this type has 3 additional fields, one for TCP flags, 2 for GeoIP country codes we'll be storing with each IP.
1:  {  
2: "syn": {
3: "_all" : {"enabled" : false},
4: "_source" : {"enabled" : true, "compress" : true },
5: "properties": {
6: "ts": {"type": "date", "format" : "YYYY-MM-dd HH:mm:ss"},
7: "sa": {"type": "string", "index": "not_analyzed"},
8: "sp": {"type": "integer", "index": "not_analyzed"},
9: "sc": {"type": "string", "index": "not_analyzed"},
10: "da": {"type": "string", "index": "not_analyzed"},
11: "dp": {"type": "integer", "index": "not_analyzed"},
12: "dc": {"type": "string", "index": "not_analyzed"},
13: "byte": {"type": "long"},
14: "pkt": {"type": "long"},
15: "out": {"type": "integer", "index": "not_analyzed"},
16: "pr": {"type": "string", "index" : "not_analyzed"},
17: "flg": {"type": "string", "index" : "analyzed"}
18: }
19: }
20: }

As I'll be matching both source and destination IP addresses to ISO 2 letter country codes, I'll need latest GeoIP database from Maxmind via http://dev.maxmind.com/geoip/legacy/geolite/. Download 'GeoLite Country' binary database from the URL provided and extract into a directory where you'll also execute 'bulk-import-flgs.py' script available at https://github.com/bulutsal/networkanalysis. Also you'll need PYGeoIP API from https://pypi.python.org/pypi/pygeoip/ and you can simply install it using :

# pip install pygeoip  

After satisfying all dependencies you can go ahead with importing your S packets first. When I execute bulk import script with flags, it will produce JSON records like following :

1:  {  
2: "pkt":4,
3: "dc":"TR",
4: "da":"XX.20.ZZ.YY",
5: "byte":192,
6: "dp":445,
7: "out":0,
8: "pr":"TCP",
9: "sp":1250,
10: "ts":"2014-06-10 00:38:02",
11: "sc":"CH",
12: "sa":"185.12.44.214",
13: "flg":[
14: "S"
15: ]
16: }

After importing S only flows into ES, go ahead with importing your primary netflow data using FIFO as below :

Open a screen shell first
 # mkfifo external.csv  
# gunzip -dc 2014-06-10.csv.gz > external.csv

Create another window using CTRL-A-C and run your bulk-import.py script, dont forget to modify it for your index and type name. This may take a while. After all is uploaded, go ahead and import DevOps-PortScan.kibanadashboard (downloadable from https://github.com/bulutsal/networkanalysis)

Playing and understanding DevOps-PortScan Dashboard


Once you load the dashboard into Kibana3, you'll see something like this :


This first screen will show everything we got in the index. We want to use ES's and Kibana's capabilities to drill down to all port scan activity so we'll filter out connections to port 80 and 443 as this flow data is from a high traffic web site and we're not interested in connections to those ports. Also lets focus on only TCP protocol as other scan methods are outside scope of this blog post. As we drill down, we start to see some scan activity in 'SYN ATTEMPTS' widget on the right hand side. This widget shows ratio of S only flows to all flows, so between 03:00 and 08:00 there was clearly increase in S flows. This is not typical and is a clear indication of increased port scan activity during night ours.

If we like we can focus on this window and drill down from there, but I would love to focus on IPs listed on the left in 'SCAN IP' window and demonstrate different types of scans performed by each IP. Lets click on 185.12.44.17 and see what how IP appeared in our dashboard. This IP is registered in Switzerland and performed block scan, both touching a lot of IPs in our network and trying various ports which is clearly visible in the dashboard.


Once we click second IP, 218.77.79.34, in our list, we can see that it is from China (surprising eh?). This IP demonstrated different behaviour and performed horizontal scan mostly focusing on shorter list of ports like 53,25,22,3389 and 21. It also appears that it stopped scanning during between 09:00 and 14:00 and started scanning again.


3rd IP in our list is more interesting, this IP 204.93.154.200 is from US and tried only 3 IP addresses in our network and scanned almost every single port and he did this in short bursts as opposed to continuous scans.


We can click each IP in the SCAN IP list and see how they've scanned our network, but also utilizing Kibana's map feature, we can click to a country and drill down by Country.




In my next blog post, I'll be showing how to detect SYN floods and observing DDOS via Netflow data.

18 Eylül 2014

Posted In: ElasticSearch, Gezegen, NetFlow

Internet Ungovernance Forum (ungovForum) ve FSFE

Geçtiğimiz günlerde Internet Ungovernance Forum (ungovForum) gibi çok önemli bir etkinlik Alternatif Bilişim Derneği başta olmak üzere tüm gönüllülerin katkılarıyla İstanbul'da düzenlendi.

Internet Ungovernance Forum, sitesinde yazdığı gibi açık, güvenli ve özgür bir internet isteyenlerin buluşma noktası oldu. Hem de dünyanın dört bir köşesinden gelmiş olan aktivistin buluşma noktasıydı!

IGF varken neden ungovForum ortaya çıktı, etkinlikte neler oldu gibi soruları değerli arkadaşım Işık Mater'in yazısından okumanızı tavsiye ederim. Zira ben yazının genelinde benim için değerli birkaç anı ve ziyaretçilere özgür yazılımdan bahsettiğimiz Free Software Foundation Europe (FSFE) standından bahsedeceğim.

Işık Mater'in gözlemleri ile UngovForum daha da tamamlayıcı olacaktır.

Etkinlik benim için 4 Eylül Perşembe gecesi UngovParty ile başladı. Parti sırasında Aral Balkan ile tanışma fırsatım olmasının yanı sıra Jacob Appelbaum'a Şifrepunk kitabımı imzalatma fırsatım da oldu. :)

Jacob Appelbaum, imzaladığı kitabım ve ben \o/
Devamı »

17 Eylül 2014

Posted In: Alternatif Bilişim Derneği, free software, FSFE, GLFS, gnu/linux, igf2014, Özgür yazılım, stand, ungovForum

LibreOffice’den haberler…

Aslında uzun uzadıya yazacak çok şey var ama zaman olmadığından kısa kısa derlemek en iyisi…

  • TDF LibreOffice’in Android sürümü için ihaleye çıkıyor: Bilindiği üzere epeyce bir zamandır LibreOffice’in Android sürümü için çalışmalar yürütülmekteydi. Bu çalışmalar sıfırdan bir uygulama yazmanın zorluğu ve LibreOffice camiasının bu konuda yeteri kadar donanımlı ve platforma hakim katkıcıları olmadığı için ağır aksak ilerlemekteydi, temel belge görüntüleyicisi üzerinde Smoose vb gibi şirketlerin sponsorluğunda biraz ilerleme kaydedilmişse de temek çerçeve oluşturma meselesi istenilen hızla ilerlemedi. Bu yüzden The Document Foundation LibreOffice’in Android sürümün temel çerçevesini oluşturmak ve üzerine temel özellikleri inşa etmek için ihaleye çıkma kararı aldı. Bu ihale ile Şubat 2015’de temel düzenleme özellikleri çalışır halde bir Android uygulamasına kavuşmak hedefleniyor. İhale duyurusunu şuradan okuyabilirsiniz. Türkiye’den de bu ihaleye katılmak isteyen şirketler olursa çekinmeden başvursunlar derim.
  • TÜBİTAK’ın yazılım uyum sorunları yaşanmayacak olan bilgisayarlarda LibreOffice ve Pardus kullanılması ile ilgili bir genelge yayımladığını duyduk. Detaylarını öğrenmek için bu genelge ve hedeflenen bilgisayar sayısı gibi rakamlara ulaşmak için ilk fırsatta bir girişimde bulunacağım. Bu bilgiler ile güzel bir göç haberi hazırlayabilir ve küresel olarak da duyurabiliriz.. Şayet bu yazıyı okuyan yetkili varsa, bilgileri temin ederse çok daha iyi olur. Bu tür göçler bizim için önemli, hele TÜBİTAK gibi bu konuda yıllardır bir şekilde öncülük etmeye çalışan bir kurum için gecikmiş bir karar. Şahsi görüşüm ise daha önce de dediğim gibi, yazılımı sadece kullanmak değil, üretimine de katkıda bulunmak gerekir, bu sebeple TÜBİTAK’ın olması gereken yer kurumsal kullanıcıdan öte TDF Tavsiye Kuruluna üye olmak ve/veya LibreOffice geliştiricisi istihdam etmek… Türkiye’deki kullanım ve Türkçe için yapacak çok şey var…
  • Üyesi bulunduğum TDF’nin Üyelik Komitesi seçimleri yapılıyor. Bu seçimde aday oldum. Seçim duyurusu şurada ve adaylık için öz tanıtımım da şurada. Seçileceğimi sanmıyorum ama vakıfta görev almak ve seçimlerin daha zengin olması için aday oldum.
  • LibreOffice konferansı bu yıl Bern’de gerçekleştirildi. Ülkemizden geçen yılki konferansa katılmış olan Efe Gürkan Yalaman bu yıl da GSoC öğrencisi olarak Bern konferansına katıldı. Detaylarını günlüğünde yazar diye tahmin ediyorum. Konferansla ilgili haberleri gezegenden ve sunum ve diğer içeriği ise konferans sitesinden okuyabilirsiniz.
  • Önümüzdeki yıllardaki LibreOffice konferansını Türkiye’de gerçekleştirmek için sevgili Volkan Evrin niyetli… LKD öncülüğünde bu organizasyona ev sahipliği yapabiliriz diye düşünüyorum ama organizasyon işi benim pek becerebileceğim bir şey değil. Başvuru vs süreçlerde elimden geleni yaparım. Ama organizasyonun maddi/manevi ve lojistik kısımları ile ilgili durumlar nasıl olur bilemiyorum. Dediğim gibi anladığım şeyler değil.

Haberler böyle… LibreOffice’in özgür yazılım dünyası için ne kadar önemli olduğunu söylemekten sıkıldım, tamam ofis yazılımına katkı vermek kolay değil ve sıkıcı bir alan diye düşünülebilir ama sahip çıkmadan da olmuyor. Bu nedenle özellikle eli kod tutan ve zamanı olan özgür yazılım severleri LibreOffice’e katkı vermeye çağırıyorum.

Mutlu günler.

Sonrası LibreOffice’den haberler… Günlüğüm ilk ortaya çıktı.

9 Eylül 2014

Posted In: Gezegen, libreoffice, LibreOffice Android, LibreOffice konferansı, linux, lkd, oi, pardus, tdf, tubitak

Vimdiff Kullanımı

İki yada daha fazla txt dosyalarının, vim editörün diff mode özelliğini kullanarak diff farkını görmek için kullanılır. Vim text editörünün diff modda çalıştırılması ( vim -d ) ile vimdiff komutunu vererek çalıştırmak arasında bir fark yoktur. Aşağıdaki resimdeki gibi dosyalar açıldığında koyu kırmızı satırlar, iki dosya arasındaki diff farkını gösterir. ” –#########– “şeklinde dosyaların başında ve sonunda görünmesinin sebebi, o satırların iki dosyada da aynı olmasıdır. Vimdiff, fark bulunmayan satırları göstermez.

Kullanımı

# vimdiff file1 file2 [file3 [file4]]
# vim -d file1 file2 [file3 [file4]

httpd.conf ( resimde solda ) ve apachenin kaldırılması sonucunda oluşan httpd.conf.rpmsave dosyalarının aralarında diff farkına bakalım,

# vimdiff httpd.conf httpd.conf.rpmsave

Editör içerisinde iken iki dosya arasında gezinmek için aşağıdaki kısayollardan biri kullanılabilir;

  • Ctrl+W + Ctrl+W
  • Ctrl+W + W

İki dosya arasındaki farkları uygulamak için aşağıdaki editör komutları yada kısayolları kullanılır,

  • :[range]diffput ( yada dp kısayolu ), imlecin bulunduğu satırındaki değişikliği karşı dosyaya uygulayarak, karşı dosyanın aynı satırını değiştirir. ( put )
  • :[range]diffget ( yada do kısayolu ), imlecin bulunduğu satırı, karşıdaki dosyanın aynı satırına göre, imclecin bulunduğu satırı değiştirir. ( get )

diffput yada diffget komutların başlarında range kullanılmaması durumunda, farklı satırların alt alta olması durumunda vim grup olarak  değişiklik uygular. Sadece satırda değişiklik yapmak için diffget ve diffput aşağıdaki şekilde kullanılır.

  • :39,diffget  ; 39. satırı karşı dosyadaki aynı satıra göre imlecin bulunduğu satırı değiştirir.
  • :299,diffput ; Karşı dosyadaki 299. satırı değiştir.
  • :200,$diffget ; 200. satırdan sonra son satıra kadar değişiklikleri uygular.

Vim diff mode özelliğini daha ayrıntılı incelemek için man sayfasına bakabilirsiniz.

 

5 Eylül 2014

Posted In: diff, diff kullanımı, iki dosya arasındaki fark, iki dosya arasındaki farkı görmek, Küçük Notlar, lkd-gezegen, vim, vim diff mode, vimdiff

Ubuntu Kurulumundan Sonra Ev Dizinini Şifrelemek

Ubuntu işletim sistemini kurarken kullanıcıların karşılaştığı ekranlardan birisinde kullanıcının ev dizininin şifrelenmesini isteyip istemediği sorulur. Bu işlem, küçük bir miktar performans kaybı karşılığında kullanıcınızın ev dizinini kullanıcı parolası girilene kadar okunamaz biçimde şifrelenmesini ve kullanıcının oturumu açık olduğu müddetçe şifrelenen dosyaların içeriğine düzgünce erişilebilmesini sağlar. Örneğin kullandığınız bilgisayarınızın çalınması durumunda bilgisayarınızı çalan kişi(ler) sizin kullanıcı parolanızı bilemeyecekleri için size ait dosyaların içeriklerine asla erişemeyecektir.

Bu faydalı seçeneği kurulum sırasında işaretlememeyi tercih ederseniz bütün dosyalarınız herhangi bir özel işleme gerek kalmadan erişilebilir halde duracaktır. Eğer bu seçeneğe kurulumdan sonra ihtiyaç duyarsanız Ubuntu’nuzu tekrar baştan kurmak zorunda değilsiniz; tek yapmanız gereken aşağıdaki adımları takip etmek.

    1. Bilgisayarınızda geçici bir süreliğine yönetici haklarına sahip ikinci bir kullanıcı yaratın. Bunun sebebi, ev dizini şifrelenecek olan kullanıcının kendi kendine bu komutu çalıştıramıyor oluşu.
    2. Ev dizini şifrelenecek olan kullanıcınızın oturumunu tamamen kapatıp bir önceki adımda yarattığınız kullanıcı hesabına giriş yapın.
    3. Yeni yarattığınız kullanıcının yönetici haklarından faydalanarak aşağıdaki komutu çalıştırın. Bu komut, bilgisayarınıza ev dizininizi şifrelemenizi sağlayacak olan paketleri kurar.
      sudo apt-get install ecryptfs-utils cryptsetup
    4. Yeni kullanıcı hesabınız şifreleme işlemini başlatmak için aşağıdaki komutu çalıştırın.
      sudo ecryptfs-migrate-home -u kullanici_adi
    5. Enter tuşuna bastığınız zaman sizden ev dizini şifrelenecek olan kullanıcının (az önce yarattığınız kullanıcının değil) parolasını yazmanız istenecek. Parolanızı yazdıktan sonra ev dizininizin boyutuna bağlı olarak süresi uzayabilecek olan şifreleme işlemi başlayacak.
    6. Burası önemli: Şifreleme işlemi bittikten hemen sonra bilgisayarınızı yeniden başlatmadan kendi kullanıcı hesabınızla oturum açın. Eğer herşey yolunda gittiyse karşınıza her zamanki dosyalarınız çıkacak ve bir pencerede size şifreleme işlemiyle ilgili bir bilgi verilecek. Bu penceredeki butona tıkladığınızda size 32 karakter uzunluğunda bir parola verilecek, bunu güvenli bir yere not edin. Bu parola sayesinde dosyalarınızı gelecekte gerekirse elle kurtarabileceksiniz.
    7. Bilgisayarınızı yeniden başlatın. Eğer herşey eskisi gibi yolunda gidiyorsa /home/ dizini altında yaratılan kullanıcı hesabınızın yedek dizinini ve ilk aşamada yarattığınız geçici hesabı güvenle silebilirsiniz.

 

4 Eylül 2014

Posted In: Gezegen Yazıları, home directory, Kubuntu, linux, security, ubuntu

Twitter Auto Publish Powered By : XYZScripts.com