PowerShell ile dosyaları yeniden adlandırma

18 Eki

PowerShell Nedir?

PowerShell, Windows işletim sistemine 2006 yılında eklenen, bir komut satırı kabuğu(shell) ve kendine özgü bir betik dilinden (script language) oluşan bir yönetim aracıdır.

PowerShell ile dosyalar nasıl yeniden adlandırılır?

PowerShell aracı, grafik ara yüzü olmayan bir komut satırı aracı olması sebebiyle bütün işlemleri komutlar üzerinden yürütür.

PowerShell ile dosyaları tek tek veya toplu bir şekilde yeniden adlandırmak çok kolaydır. Dosyaları yeniden adlandırmak öncelikle komut satırından dosyaların bulunduğu dizine geçilir.

Yukarıda listelenen dosyaların hepsinin isimlerinde “foo.com” şeklinde bir web sitesine ait gereksiz bir bilgi bulunmaktadır. Bu gereksiz bilgiyi kaldırarak dosyaları temiz bir adlandırmaya kavuşturmak için aşağıdaki komutu kullanabiliriz.

dir *.txt | rename-item -newname {$_.name -replace " foo.com", ""}

Yukarıdaki komut, *.txt dosyalarını seçerek bu dosyaların adlarında bulunan foo.com metnini ve önündeki bir adet boşluk karakterini kaldırır.

Bu şekilde, dosyalarımıza temiz bir şekilde yeniden adlandırılmış olur. Dosyaların uzantılarını da benzer şekilde değiştirmek mümkündür. Doysa sayılarının çok fazla olduğu durumlarda son derece etkili bir yöntem olarak kullanılabilir.

QGIS Provider does not support Hatası

28 Haz

QGIS ile bir tabloda UPDATE veya DELETE gibi işlemler gerçekleştirilirken aşağıdaki gibi hatalar ile karşılaşılabilmektedir.

Data provider does not support deleting features. (Veri sağlayıcı objelerin silinmesini desteklemiyor)

veya

Data provider does not support updating features. (Veri sağlayıcı objelerin silinmesini desteklemiyor)

Bu hatanın sebebi, veri tabanında ilgili feature (tablo) üzerinde bir Primaty Key (PK) belirlenmemiş olmasıdır. Feature üzerinde bir PK tanımlandığındasorun düzelecektir.

Linux Dosya Sistemi (Filesystem)

9 Haz

Linux dosya türlerini tanıdıktan sonra anlaşılması gereken diğer konu dosya sistemidir. Linux veya Unix işletim sistemlerinde tek bir kök dizin (root directory) bulunur. Windows işletim sisteminde partition sayısına bağlı olarak C, D, E gibi birden fazla kök dizin bulunabilmektedir. Ancak Linux ve Unix işletim sisteminde tüm dosya ve dizinler tek bir kök dizin altında hiyerarşik olarak bulunurlar. Kök dizin “/” karakteri ile temsil edilmektedir. Sürücü bölümleri, kök dizinin altındaki dizinlere monte edilir.

  • /
    • /bin
    • /boot
    • /dev
    • /home
    • /lib
    • /media
    • /mnt
    • /opt
    • /proc
    • /proc
    • /root
    • /sbin
    • /srv
    • /sys
    • /tmp
    • /usr
    • /var
    • /lib64

/bin (Temel kullanıcı komutları)

Linux işletim sisteminin bir parçası olan ve tüm kullanıcılar tarafından yürütülebilir programları içerir. Cat, cp, ls, more ve tar gibi birçok Linux komutu bu dizinde bulunur.

/boot (Sabit önyükleme dosyaları)

Kernel ve bootloader dosyalarını içerir.

/dev (Aygıt dosyaları)

Aygıt dosyalarını içerir.

/etc (Konfigürasyon noktaları)

İşletim sistemine özel konfigürasyon dosyalarını içerir.

/home (Kullanıcı ana dizinleri)

Kullanıcılara ait ana dizindir. Örneğin kullanıcı adı “bayram” olan bir kullanıcı için sistemde /home/bayram şeklinde bir dizin mevcuttur.

/lib (Temel paylaşılan kütüphaneler)

32 bit sistemler için kernel modülleri ve paylaşılan program kütüphanelerini içerir.

/media (Takılıp çıkarılabilir medya)

Bilgisayara takılıp çıkarılabilir medya aygıtlarının bağlandığı alt dizinleri içerir. Örneğin, Linux sisteminize bir CD yerleştirdiğinizde, /media dizininde otomatik olarak bir dizin oluşturulur ve bu dizinin üzerinden CD’nin içeriğine erişebilirsiniz.

/mnt (Geçici bağlanma noktaları)

Boş bir dizindir. Geçici olarak monte (mount) edilen dosya sistemleri için kullanılan bir dizindir. Montaj, bir dosya sistemini sistem tarafından kullanılabilir hale getirme işlemidir. Standart bağlama noktaları /mnt/cdrom ve /mnt/floppy şeklindedir.

/opt (İsteğe bağlı paketler)

İsteğe bağlı yazılım paketleri için alt dizinler içerir. Genellikle derlediğiniz yazılımların bulunduğu yerdir. Uygulamalar /opt/bin dizininde ve /opt/lib dizinindeki kitaplıklarda bulunur.

/proc (Kernel ve işlem dosyaları)

Sistem durumu ve işlemlerin durumlarını içerir. /dev gibi sanal bir dizindir. Bilgisayarınız hakkında, CPU’nuz ve Linux sisteminizin çalıştırdığı çekirdek gibi bilgiler içerir.

/root (Kök giriş dizini)

Bu dizin, superuser olan ve administrator olarak bilinen root kullanıcısına ait ana dizindir. root kullanıcısının dosyaları /home yerine burada bulunur.

/sbin (Sistem yönetim dosyaları)

Sistem binary komutlarını içerir. Superuser kullanıcısının çalıştırabileceyi uygulamaları içerir. Bu uygulamaları sudo komutu ile kullanabilirsiniz.

/srv (Servis verisi)

Sistem tarafından sunulan hizmetler (HTTP, FTP vb.) İçin veri içerir. Linux kutunuzdan bir web sunucusu çalıştırıyorsanız, siteleriniz için HTML dosyalarınız /srv/http (veya /srv/www) içine gider. Bir FTP sunucusu çalıştırıyorsanız, dosyalarınız /srv/ftp‘ye gider.

/sys

Linux çekirdeği tarafından görüldüğü gibi, aygıtlar hakkında bilgi içeren özel bir dizin.

/tmp (Geçici dosyalar)

Uygulamalar geçici dosyaları /tmp dizininde depolar. Bu dosyalar genellikle sisteminiz her yeniden başlatıldığında silinir ve tmpwatch gibi yardımcı programlar tarafından herhangi bir zamanda silinebilir.

/usr (Kullanıcı dosyaları ve salt okunur Veriler)

Sistem tarafından kullanılan uygulamaların ve dosyaların aksine, kullanıcılar tarafından kullanılan uygulamaları ve dosyaları içerir. Örneğin, temel olmayan uygulamalar /bin dizini yerine /usr/bin dizininde bulunur ve temel olmayan sistem yönetim ikili dosyaları /sbin dizini yerine /usr/sbin dizininde bulunur.

/var (Değişken veri dosyaları)

Zaman, sayı ve boyut olarak zamanla değişme eğilimi olan log, mail dizinleri, yazdırma kuyruğu biriktirme gibi çeşitli sistem dosyalarını içerir.

/lib64

64 bit sistemler için kernel modülleri ve paylaşılan program kütüphanelerini içerir.

Linux Dosya Türleri

8 Haz

Linux ve Unix öğrenirken bilinmesi gereken önemli konulardan biri dosya sistemidir.

Anlamamız gereken ilk şey, Linux ve Unix’in genel olarak, donanım birimleri de dahil her şeye bir dosya olarak davranacak şekilde tasarlanmış olmasıdır. Linux işletim sistemi çalışırken, gerekli olan dosyayı açar okur veya yazar ardından da kapatır. Her şeye dosya olarak bakıldığından dolayı dosya sistemine ait standartlar oluşturulmuştur.

Regular (Normal)

Normal dosyalar genel olarak html, text, word veya çalıştırılabilir dosyalardır.

Directory (Dizin)

Linux işletim sisteminde dizin, diğer dosya türlerini tutmak veya işaret etmek için özel olarak tasarlanmış bir dosya türüdür.

Link (Bağlantı)

Linux / UNIX sistemlerinde iki tür link (bağlantı) vardır.

  • Soft/Symbolic Link: Bir dosya veya dizinin dolaylı bir göstergesidir. Sabit bağlantının aksine, sembolik bağlantı farklı bir dosya sistemindeki veya bölümdeki bir dosyayı veya dizini işaret edebilir. Windows işletim sistemindeki bir kısayol gibidir.
  • Hard Link: Sabit bir bağlantıyı mevcut bir dosya için ek bir ad olarak düşünebilirsiniz. Sabit bağlantılar iki veya daha fazla dosya adını aynı inode ile ilişkilendirir. Çok fazla tercih edilmez.

Special (Aygıtlara özel)

  • Character File: Tek karakterlik girişi kabul edereler. Klavye Giriş/Çıkış işlemleri, yazıcı, teyp sürücüsü veya terminal gibi gerçek bir fiziksel aygıtı temsil etmek için kullanılır.
  • Block File: Sabit disk gibi depolama aygıtlarını gösterir.
  • Pipe File: Uygulamalar arasında bilgi göndermeye izin verir. Bir uygulama, başka bir uygulamaya bilgi gönderecekse pipe file kullanır.
  • Socket File: Pipe file gibi çalışır. Ancak bilgi alışverişinin ağ ortamında yapıldığında devreye girer.

Temel Linux Bileşenleri

7 Haz

Linux işletim sistemin nasıl çalıştığını anlamak için, Linux temel bileşenlerini bilmek gerekmektedir.

Kernel (Çekirdek)

Bir işletim sisteminin çekirdeği ve en temel birimidir. Her işletim sisteminde sadece bir tane Kernel bulunur. Ağırlıklı olarak C programlama dili ile geliştirilmiş programlardan meydana gelmiştir. Kernel, bilgisayar donanımı ile doğrudan iletişim kurar. Kernel’in işletim sistemindeki bazı temel görevleri:

  • Kullanıcının yetkili bir kullanıcı olup olmadığını kontrol etmek.
  • Çalıştırılan programları izlemek ve her programa belirli bir zaman ayırmak..
  • Sistemdeki dosyalar için depolama alanı atamak.
  • Shell programlarını çalıştırmak.
  • Bilgisayarlar ve terminaller arasında bilgi aktarımı yapmak.

Shell (Kabuk)

Linux işletim sistemi, komutları klavyeden bilgisayara aktarmak için shell bileşenini kullanır. Shell de C programlama dili ile yazılmış bir programdır. Kullanıcı programları ve kernel arasında tercüman görevi görür. Kullanıcı komutlarını eyleme dönüştürür. Shell, komutları alan ve uygun programı yürüten ya da çekirdeğin anladığı yönergelere çeviren bir programdır.

Shell kullanıcılarla etkileşime girerken, kernel makinenin donanımıyla etkileşime girer.

Örneğin shell, klavyeden girdiğimiz “ls” komutunu kernel tarafından anlaşılabilecek bir formata dönüştürür.

Linux’ta varsayılan shell bash’tir.

User Programs (Kullanıcı Programları)

Linux işletim sisteminde bir takım araçlar vardır. Bu araçlar, işletim sisteminin kullanımını kolaylaştırmak amacıyla üçüncü şahıslar veya firmalar tarafından yazılmış kullanıcı programlarıdır. Bu araçlar, programlama, iş uygulamaları ve Office, vi gibi kelime işleme uygulamaları şeklinde gruplandırılabilir.

Devrim Uzay Araçları

6 Haz

SpaceX firması, Crew Dragon isimli insanlı uzay aracını uzaya gönderiyordu. Bu olay ile birlikte tarihte ilk kez, özel bir şirket uzaya insan göndermiş oluyordu. Uçuş günü etrafta ne görkemli bir kalabalık, ne de kurdele kesim töreni vardı. Bu sadeliğin sebebi, bir anlayış farklılığı mıdır yoksa yaşanacak bir olumsuz durum karşısında karizmayı çizdirmemek midir bilmiyoruz. Ama başarı ortada.

Bu olay hiç şüphesiz, yeni bir çağın başlangıcıydı. Uzay çağı. Uzaya yolculukların başlayabileceği sinyali veriliyordu. ABD başkanı da bu daha başlangıç diyordu. Artık uzaya yolculuklar başlayacağına göre, uzay araçları yeniden kullanılabilir bir yapıya kavuşmuş oluyordu.

Uzayda dolaşımı sağlayan kapsül (Crew Dragon):

Kapsülü uzaya fırlatma roketi (Falcon 9):

Kısaca, uzay mühendisliğinde yeni bir çığır açılıyordu.

SpaceX adında özel bir şirkete ait bu başarı, ABD devletinin Obama döneminde uzay yatırımlarını azaltarak, NASA’nın gücünü sektörlere dağıtmasıyla başladı. 2002 yılında kurulan bir şirket, 18 yılda adeta bir devrim yaptı. Dünyada bir çok yerde silah sanayisinin devletler elinden çıkmasından sonra uzay sanayisinin de özel sektöre geçişini bizlere göstermiş oldu.

Bu devrim ile birlikte, uzay turizminin kapıları açılacak ve olayın ticari tarafı gelişmeye başlayacak. Gezegenler arası dolaşım ve uzayda yaşam başlayacak. Uzayda keşfedilen yeni madenlerle birlikte yeni teknolojik gelişmeler yaşanacak.

Yazımı bitirirken, uzay teknolojilerinde ülke olarak bizlerin de başarılı olacağı yıllar diliyorum. Bu başarının, gündemimizi, anlayışımızı ve bakış açımızı değiştirmekle mümkün olacağına inanıyorum.

Tekrar görüşmek dileğiyle.

PostGIS GeoJSON Query

29 May

PostGIS ile SQL sorguları kullanarak GeoJSON sonuçları üretmek mümkündür. Bu işlem için gerekli olan PostgreSQL fonksiyonları:

  • jsonb_build_object()
  • jsonb_agg()
  • jsonb_build_object()
  • ST_AsGeoJSON()
  • to_jsonb

SQL sorgusu:

SELECT jsonb_build_object(
    'type',     'FeatureCollection',
    'features', jsonb_agg(features.feature)
)
FROM (
    SELECT jsonb_build_object(
      'type',       'Feature',
      'id',         gis_id,
      'geometry',   ST_AsGeoJSON(shape)::jsonb,
      'properties', to_jsonb(inputs) - 'shape' - 'gdb_geomattr_data'
      ) AS feature
    FROM (
          SELECT 
               * 
          FROM 
              sde.icmesuyu_hatlari 
          WHERE 
              objectid=121710
    ) inputs
) features;

Sorgu sonucu:

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "a71bca31-22d1-11e8-8590-0050568bf4f1",
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          458791.489,
          4520951.706,
          0
        ]
      },
      "properties": {
        "layer": "N_VANA_SİSTEM",
        "cbs_id": "811bca31-22d1-11e8-8590-0050568bf4f1",
        "aciklama": "AKTİF",
        "objectid": 121710,
        "zemin_kot": 43.57
      }
    }
  ]
}

Opnelayers Contribution (Katkı Sunma)

27 May

Opanleyers, harita uygulamaları geliştirmek amacıyla geliştirilen açık kaynak kodlu bir Javascript kütüphanesidir. Uygulama kendini şu şekilde ifade eder:

A high-performance, feature-packed library for all your mapping needs.

yani

Tüm harita ihtiyaçlarınız için yüksek performanslı, özelliklerle dolu bir kütüphane.

Açık kaynak kütüphane olduğu için tüm geliştiricilerin sunabileceği katkılara açıktır. Openlayers kütüphanesine katkıda bulunabilmek için aşağıdaki adımları izleyebilirsiniz.

Geliştirme ortamının hazırlanması

Geliştirme ortamı için öncelikle kütüphanenin fork edilmesi gerekmektedir. Github ortamında bir havuzun (repository) fork işlemi, o kodun kendi Github havuzunuza bir kopyasının alınmasıdır. Şu anda Openlayers 6.3.1 sürümü yayınlanmış durumdadır.

Gerekli Geliştirme Araçları

Bilgisayarınızda bulunması gereken minimum ihtiyaç listesi:

  • Git
  • Node.js (minimum 8 ve üstü)

Kodun indirilmesi

Fork işleminin ardından kendi Github hesabınızda Openlayers kütüphanseisnin bir kopyası oluşturulur. Bu kopyayı kendi bilgisayarınıza clone veya downlad şeklinde indirmeniz gerekmektedir.

Uygulamanın çlışabilmesi için, kod indirme işleminden sonra kod dizininde bir terminal açarak node bağımlılıklarını yüklemelisiniz. Bunu yapan komut:

$ npm install

Örnek uygulamanın çalıştırılması

Kodda bulunan örnek uygulamalarının çalıştırılıp internet tarayıcısında görüntülenebilmesi için gerekli komut:

$ npm run serve-examples

serve-examples” script’i, package.json içerisinde tanımlanmıştır.

Testlerin çalıştırılması

Openlayers uygulaması test driven olarak geliştirilmiştir. Uygulamanın çalışabilir olması için tüm testlerin geçmiş olması gerekmektedir. Katkı sunduğunuz kod birimlerinin testlerinin yapılmış ve geçmiş olması gerekmektedir.

Testler bir kez çalıştırılması için gerekli komut:

$ npm test

Testleri geliştirme süreci boyunca sürekli çalıştırmak için gerekli komut:

$ npm run karma

Örnek uygulamalar

Openlayers örnek uygulamaları “examples” dizininde bulunmaktadır. Eklemek istediğiniz özelliklere ait örnek çalışma dosyalarını(html, js, css) “examples” dizininde oluşturabilirsiniz.

Pull Request

Openlayers katkı alma talebini pull requests (çekme isteği) ile gerçekleştirir. Pull request göndermeden önce kodun, aşağıdaki çekme isteği yönergesine uygun olduğundan emin olmalısınız.

Bir pull request yapmadan önce, neye katkıda bulunmak istediğinizi açıklayan bir issue oluşturmalısınız. Bu sayede yaptığınız pull request, fark edilir ve uygun olmayan bir şeye katkıda bulunmanız sağlanır. Geliştirici olarak açtığınız issue uygun görülürse, openlayers yetkilileri tarafından ilgili issue, pull request accepted şeklinde etiketlenir. Bu etiketleme işleminden sonra artık pull request gönderebilirsiniz.

Pull request talebi:

  • OpenLayers’ın kodlama stiline uygun olmalıdır.
  • Sürekli Entegrasyon sistemi(Continuous Integration system) tarafından otomatik olarak yürütülen entegrasyon testlerini geçmelidir.
  • Her pull request için tek bir sorun üzerinde çalışın.
  • İşlem geçmişi(commit history), kodda yapılan değişiklikler açıklar. Bu nedenle, binlerce satırı değiştirerek bunu tek bir commit ile açıklamak yerine, küçük, mantıksal ve anlaşılabilir işlemlere commit’ler uygulayın.
  • Kısa ve öz commit mesajları ekleyin.
  • Kodunuz otomatik olarak birleştirilebilir olmalıdır. Bazen master’da yapılan diğer değişiklikler, pull request (çekme isteğinizin) otomatik olarak birleştirilemeyeceği anlamına gelebilir.

Kaynak: https://github.com/openlayers/openlayers/blob/master/CONTRIBUTING.md

PostGIS Kurulumu

26 May

PostGIS bir PostgreSQL uzantısıdır. PostgreSQL üzerinde bir veritabanı üzerine eklenebilir. Burada dikkat edilmesi gereken, PostgreSQL kurulu sırasında oluşturulan postgis veritabanı üzerine kurulmamasıdır.

Ancak postgis uzantısının işletim sistemi üzerinde bulunması gerekmektedir. Bu yazıda Ubuntu üzerinde PostgreSQL 12 veritabanına PostGIS 3 sürümü kurulmaktadır. Bunun için öncelikle repository version kontrolü yapmak gerekmektedir.

apt-cache policy postgis

Bu komut ile yülenecek sürümün Candidate: 3.0.1+dfsg-2.pgdg18.04+1 olduğunu öğreniyoruz.

PostGIS’i işletim sistemine yükleme komutu:

sudo apt-get install postgis

Artık PostGIS, Ubuntu üzerine indirildiğine göre, veritabanına eklenebilir durumdadır. Psql veya pgAdmin üzerinden veritabanına bağlanarak postgis uzantısını oluşturan SQL komutunu çalıştırdığınızda eklenti kurulacaktır.

CREATE EXTENSION postgis;

PostGIS raster desteği için gerekli SQL komutu:

CREATE EXTENSION postgis_raster;

PostGIS topoloji desteği için gerekli SQL komutu:

CREATE EXTENSION postgis_topology;

PostGIS ileri seviye 3D desteği ve sfcgal algoritması gibi diğer coğrafi veri işleme yetenekleri için gerekli SQL komutu:

CREATE EXTENSION postgis_sfcgal;

Tiger için bulanık eşleme gerekliyse:

CREATE EXTENSION fuzzystrmatch;

Kural tabanlı standartlaştırma için:

CREATE EXTENSION address_standardizer;

US Tiger Geocoder uzantısı için:

CREATE EXTENSION postgis_tiger_geocoder;