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;

PostGIS Nedir?

25 May

PostGIS, GIS (Coğrafi Bilgi Sistemleri – CBS) nesnelerinin veritabanında depolanmasına izin veren bir PostgreSQL veritabanı uzantısıdır (extension). Tamamen ücretsizdir ve açık kaynak kodludur. PostGIS, GiST tabanlı R-Tree uzamsal dizinleri için destek ve GIS nesnelerinin analizi ve işlenmesi için işlevler içerir. GIS nesnelerinin analizi ve işlenmesi için fonksiyonlar içerir.

PostGIS, temel konumsal işlevlere ek olarak, Oracle Locator/Spatial ve SQL Server gibi diğer uzamsal veritabanlarında nadiren bulunan birçok özellik sunar. Bu özellikler listesine buradan ulaşabilirsiniz.

PostGIS Özellikleri

Tamamen SQL gücünü kullanarak vektör ve raster verileri üzerinde splicing (yapıştırma), dicing (kare/tile şeklinde bölme), morphing(dönüştürme), reclassifying(yeniden sınıflandırma), ve collecting(toplam)/unioning(birleştirme) gibi işlemler yapılabilir.

Raster üzerinde işlemler yapılabilmektedir.

Raster ve vektör verileri üzerinde SQL sorguları ile projeksiyon dönüşümleri yapılabilmektedir.

Hem komut satırı hem de GUI paketli araçlar yoluyla ESRI shape vektör verilerini içe ve dışa aktarma yanında diğer 3.parti açık kaynak araçlar aracılığıyla farklı formatları da desteklmektedir.

GeoTiff, NetCDF, PNG, JPG gibi birçok standart formattaki raster verilerini içe aktarmak için hazırlanmış komut satırı bulunmaktadır.

SQL kullanarak KML, GML, GeoJSON, GeoHash ve WKT gibi standart metin formatlı verileri içe aktarma fonksiyonları bulunmaktadır.

SQL kullanara raster verilerini GeoTIFF, PNG, JPG, NetCDF gibi çeşitli standart formatlarda oluşturma.

Ağ Topolojisi desteği bulunmaktadır.

3D nesne desteği, spatial index ve fonksiyonlar bulunmaktadır.

SQL fonksiyonları ile kusursuz bir şekilde rester/vektör piksel değerlerinin geometrik bölgeye göre çıkarılması, bölgelere göre istatistikler çalıştırılması, raster veriyi belli bir geometriyle kırpma gibi özellikleri bulunmaktadır.

Açık Kaynak Masaüstü Düzenleme/Görüntüleme Araçları

QGIS

PostGIS dahil olmak üzere birçok mekansal formatı destekler. Python uzantısı modeliyle PostGIS ile kullanılan masaüstü araçlarının en popüler olanıdır.

OpenJump

Java tabanlı bir yazılımdır. Bazı PostGIS de dahil olmak üzere birçok coğrafi mekansal formatı destekler.

uDig

Bazı PostGIS ve Oracle, SQL Server, ArcSDE gibi diğer uzamsal veritabanları dahil olmak üzere destek sunan Java tabanlı bir yazılımdır. Ana odak noktası OpenGIS standartlarına uymaktır.

gvSig

Java tabanlıdır ve işlevselliği QGIS’e benzer.

TileMill

Tile image görüntülerini işlemek için çok kullanışlıdır. Mapbox firmasına ait bir üründür. Ancak geliştirilmesi durdurulmuştur.

Açık Kaynak Haritalama Sunucuları

PostGIS ile en sık kullanılan sunucular aşağıda listelenmiştir. Bunların çoğu OpenGIS Konsorsiyumu (OGC) haritalama standartlarına uygundur. Harita sunucularının desteklediği formatlar şu şekildedir:

  • WMS – Web Map Service
  • WFS – Web Feature Service
  • WFS-T – Web Feature Service Transactional (ability to edit)
  • WCS – Web coverage service
  • WPS – Web Processing service
  • WMTS – Web Map Tile service

Mapserver

PostGIS’i destekleyen ve hala en popüler sunuculardan biri olan, C Tabanlı ilk harita sunucusu.

GeoServer

Mapserver ile benzer işlevlere sahiptir ve Web arayüzüne sahip bir harita sunucusudur. Yeni başlayanlara ve Enterprise GIS çalışanlarına ArcGIS Server gibi imkanlar sunar. OGC WMS, WFS, WFS-T’yi destekler.

Deegree

Java tabanlı coğrafi veri yönetimi, veri erişimi, görselleştirme, keşif ve güvenlik dahil olmak üzere bir çok yönetim imkanı sağlar.

QGIS Server

QGIS masaüstüne destek olarak, QGIS workspaces yayınlarını oluşturmak için kullaılır.

MapGuide 

Kullanıcıların web haritalama uygulamalarını ve geospatial web hizmetlerini hızlı bir şekilde geliştirmelerini ve dağıtmalarını sağlayan web tabanlı platformdur.

PostGIS ile ilgili PostgreSQL Uzantıları

pgRouting

PostGIS’e sürüş mesafesi, en kısa yol, gezgin satıcı gibi hız ve dönüş kısıtlamaları ile çeşitli maliyetleri göz önünde bulundurarak çözüm yapan ve coğrafi spatial rota yönlendirme yapan özellikler katar.

ogrfdw

Postgresql harici veri paketleyicisi.

GDAL/OGR

PostgreSQL’de diğer spatial ve spatial olmayan veri kaynaklarının tablo olarak okunmasına izin verir. Vektör verileri PostGIS geometri tipine çevrir.

pgpointcloud

Point Cloud verilerini PostgreSQL’de depolamak için bir PostgreSQL uzantısı ve yükleyicisi.

Postgresql DDL, DML, DCL, TCL Kavramları

24 May

Veri tabanı yönetim sistemlerinde, veriyi tanımlama, işleme, kontrol etme ve veri tabanına işlem yapma gibi aktiviteler için diller tanımlanmıştır.

  • DDL-Data Definition Language
  • DML-Data Manipulation Language
  • DCL-Data Control Language
  • TCL-Transactional Control Language

DDL – Data Definition Language

DDL bildirim yapan bir yapıya sahiptir ve table, view, index, namespace, tablespace, database, function, trigger ve user gibi veritabanı nesnelerini oluşturmamıza, değiştirmemize ve kaldırmamıza imkan tanır. Başlıca DDL işlemleri:

  • CREATE
  • DROP
  • RENAME
  • ALTER
  • TRUNCATE

DML – Data Manipulation Language

DML ifadeleri, veritabanındaki verilerle işlem yapmaya yarar.

  • SELECT
  • UPDATE
  • INSERT
  • DELETE

DCL – DATA CONTROL LANGUAGE

Kullanıcı yetki ve izinleri üzerinde işlem yapmaya yarar.

  • GRANT
  • REVOKE

TCL – TRANSACTIONAL CONTROL LANGUAGE

Yapılan işlemlerin kontrolünü sağlamaya yarar.

  • COMMIT
  • ROLLBACK
  • SAVEPOINT

PostgreSQL GRANT, REVOKE

23 May

Bir önceki yazıda PostgreSQL kullanıcı işlemlerinin nasıl yapıldığından bahsetmiştik. Bu yazıda ise PostgreSQL kullanıcısının, erişim izinlerini düzenleyen DCL (Data Control Language) ifadelerden bahsedilmektedir. PostgreSQL DCL ifadeleri şu şekildedir:

  • GRANT
  • REVOKE

Aşağıdaki örneklerde bir kullanıcı (username) için yetki verme ve alma işlemi yapılsa da, username yerine bir grup adı da kullanılabilir. Bu şekilde, kullanıcı grubuna dahil olan bütün kullanıcılar yetkilendirilmiş olur.

Bir kullanıcının yetki işlemlerini yapabilmesi için öncelikle superuser yetkilerine sahip olması gerekmektedir.

Superuser Durum Değişimi

Kullanıcıyı superuser durumuna getir.

ALTER USER myuser WITH SUPERUSER;

Kullanıcının superuser durumunu kaldır.

ALTER USER username WITH NOSUPERUSER;

Veritabanı Yetkileri

Kullanıcıya, veritabanı oluşturma yetkisi ver.

ALTER USER username CREATEDB;

Kullanıcıya, veri tabanına bağlanma yetkisi ver.

GRANT CONNECT ON DATABASE database_name TO username;

Kullanıcıdan veritabanı bağlanma yetkisini geri al.

REVOKE CONNECT ON DATABASE database_name FROM username;

Kullanıcıya, veritabanındaki tüm ayrıcalıkları ver.

GRANT ALL PRIVILEGES ON DATABASE database_name TO username;

Kullanıcıdan, veritabanındaki tüm ayrıcalıkları geri al.

REVOKE ALL PRIVILEGES ON DATABASE database_name FROM username;

Schema ve Object Yetkileri

Kullanıcılar, şema içerisinde bulunan table, column, sequence gibi nesneler üzerinde yetkilendirilebilirler.

Kullanıcıya şema kullanım yetkisi ver.

GRANT USAGE ON SCHEMA schema_name TO username;

Kullanıcıdan şema kullanım yetkisini geri al.

REVOKE USAGE ON SCHEMA schema_name FROM username;

Kullanıcının, bir tablo üzerinde SELECT, INSERT, UPDATE, DELETE gibi DML(Data Manipulation) ifadelerini kullanım yetkilerini vermek mümkündür.

Kullanıcıya şemadaki bütün tablolar için yetki ver.

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES 
IN SCHEMA schema_name TO username;

Kullanıcının şemadaki bütün tablolarda bulunan yetkilerini geri al.

REVOKE SELECT, INSERT, UPDATE, DELETE ON ALL TABLES 
IN SCHEMA schema_name FROM username;

Kullanıcıya tek bir tabloya için yetki ver.

GRANT SELECT, INSERT, UPDATE, DELETE ON table_name 
IN SCHEMA schema_name TO username;

Bir şemeda bulunan bütün tablolar için, kullanıcıya bütün yetkileri ver.

GRANT ALL PRIVILEGES ON ALL TABLES 
IN SCHEMA schema_name TO username;

Bir şemeda bulunan bütün tablolara ait bütün yetkileri kullanıcıdan geri al.

REVOKE ALL PRIVILEGES ON ALL TABLES 
IN SCHEMA schema_name FROM username;

Bir şemeda bulunan bütün dizeler(sequence) için, bütün yetkileri ver.

GRANT ALL PRIVILEGES ON ALL SEQUENCES 
IN SCHEMA schema_name TO username;

Bir şemeda bulunan bütün dizeler(sequence) için, bütün yetkileri geri al.

REVOKE ALL PRIVILEGES ON ALL SEQUENCES 
IN SCHEMA schema_name FROM username;

Yukarıdaki şema içi yetkiler, veritabanına mevcut olan tablolar için geçerlidir. Eğer şemada yeni oluşturulan tablolar için de kullanıcıya tüm yetkiler vermek için şöyle bir ifade kullanılabilir:

ALTER DEFAULT PRIVILEGES
FOR USER username
IN SCHEMA schema_name
GRANT ALL ON TABLES TO username;

Tablo üzerindeki yetkilerin sorgulanması

Bir tabloda hangi kullanıcıların hangi yetkilere sahip olduğunu öğrenebilmek için gerekli komut:

SELECT 
    grantee, 
    string_agg(privilege_type, ', ') AS privileges
FROM 
    information_schema.role_table_grants
WHERE 
    table_name='table_name'
GROUP BY 
    grantee;

Startup Şehri San Francisco

22 May

Her yıl dünya üzerinde gerçekleşen yenilikçi girişimlerin (startups) yaklaşık yüzde 90’ı Amerika’nın San Francisco şehrinde bulunmaktadır. Yani şehir tam bir startup cenneti,  teknoloji girişimcileri için kutsal bir yer diyebiliriz. Her yıl binlerce startup kurucusu yeni bir hayalin peşinde çalışmalarına başlayıp en öne geçebilmek için çalışmaktadır. Bu durum ekosistemi, hayatta kalmak için son derece zor bir hale getirmektedir.

Bu kadar yoğun bir teknoloji girişiminin bulunduğu şirketler şehri, yeni girişimcilere gelecek ile ilgili bazı ipuçları da vermektedir. Şehir hem bir database hem de bir kılavuzdur.

Neden bir database?

Çünkü şehirde hangi şirketlerin bulunduğu, ne gibi işlerle uğraştıkları, hangi teknolojileri kullandıkları hakkında bilgiler mevcuttur.

Neden bir kılavuz?

Şirketlerin kullandıkları teknolojiler incelendiğinde bizlere yeni girişimleri hayata geçirirken, çantamıza neleri koymamız gerektiği hakkında bilgi vermekte ve bize yön göstermektedir. Yani teknoloji dünyasının ne yöne doğru yatkın olduğu görülebilmektedir. Örneğin ağırlıklı olarak hangi programlama dillerinin kullanıldığı incelendiğinde Amerika da çalışmak isteyen bir yazılımcı yatırım yapması gerektiği programlama dilini kolayca belirleyebilir.

Hayat Şartları

Şehre yeni gelen biri için geçinebilme maliyetleri inanılmaz yüksektir. Mesela studio dairelerin kirası $2500 civarıdır. Ofis kiralarını artık sis düşünün. Geçim sıkıntısının yanında şirketinizi, diğer şirketler ile rekabet edecek seviyelerde tutmak gibi zorluklarla da uğraşmak gerekmektedir.

Melek Yatırımcılar

Twitter ve Uber gibi şirketlerin doğum yeri olan şehirde, büyüyen startup’lar melek yatırımcılar tarafından desteklenmektedir. USA’da çalışmış bir kaynaktan duyduğum kadarıyla, belli kesimlerin amacına hizmet etmeyen girişimler, ağzıyla kuş tutsa bile yatırım alamaz ve yok olur gider. Dediğim gibi bu kısım bana da pek yanlış gelmeyen bir yorumdur.

Bu bilgileri San Francisco da yaşayarak değil orayı merak edip araştırırken elde etmiştim. Siz okuyucularla da paylaşmak istedim. Umarım faydalı olmuştur.

Kaynaklar:

  • https://thenextweb.com/podium/2019/08/13/a-san-francisco-startup-guide-for-international-entrepreneurs/
  • https://thenextweb.com/podium/2019/08/13/a-san-francisco-startup-guide-for-international-entrepreneurs/
  • https://fi.co/insight/san-francisco-startup-resource-list-550-accelerators-investors-and-more