Arcgis Server Domain Query

17 Oca

Arcgis ile oluşturulan Geodatabase üzerinde tanımlanan attribute domain yani kod listeleri arcgis server üzerinden yayınlanmaktadır.

Tanımlanan attribute domain’ler feature class üzerindeki alanlara eklenebilmektedir. Örneğin tablodaki land_type alanına yukarıdaki LandValue tipi atanabilmektedir. Kullanıcılar ekranda “Residential” değerini görürken değer olarak “Res” kullanırlar. Bu yöntem web ortamındaki combobox ile benzer özelliktedir.

Tanımlanan kod listelerine arcgis server yayınları üzerinden erişmek mümkündür. Yayınlanan FeatureServer veya MapServer aresindeki queryDomains adresi sorgulamak için gerekli arayüzü sağlar.

Aşağıdaki örnekte örnek arcgis server adresinden bir kesit sunulmuştur.

https://sampleserver6.arcgisonline.com/arcgis/rest/services/Water_Network/FeatureServer/queryDomains?layers=16&f=html

"domains": [
  {
   "type": "codedValue",
   "name": "piPipeMaterial",
   "description": "Pipe material types based on NASSCO standards",
   "codedValues": [
    {
     "name": "ABS Plastic",
     "code": "ABS"
    },
    {
     "name": "Asbestos Cement",
     "code": "AC"
    }],
   "fieldType": "esriFieldTypeString",
   "mergePolicy": "esriMPTDefaultValue",
   "splitPolicy": "esriSPTDefaultValue"
  }

Liste çok uzun olduğu için bir kısmı alınmıştır.

Elde edilen bu kod listesini web veya desktop uygulamalarda kullanmak mümkündür. Bu şekilde alan tipinden policy tiplerine kadar bütün bilgileri edinebiliyoruz.

Javascript Callaback Hell Nedir?

16 Oca

Programlama dünyasında asenkron yani eş zamansız olarak tabir edilen fonksiyonlar, yürütülen diğer fonksiyonlara paralel olarak çalışırlar.

Neden asenkron?

Asenkron işlemler, kod içerisinde çalıştırılan bir fonksiyonun ne kadar zaman alınacağı veya ne zaman tamamlanacağı bilinmediği durumlarda tercih edilirler. Örneğin aşağıdaki işlemlerin ne kadar süreceği bilinemez;

  • API’den talepte bulunmak.
  • Dosya okuma ve yazma işlemleri.
  • Veritabanında işlem yapmak.
  • Email göndermek.

Asenkron fonksiyonlar “sen diğer işlemlere devam et, benim işim bittiğinde ben sana haber ederim” yönteminde çalışırlar. Asenkron fonksiyonlar bize haber etmek için callback diye adlandırılan fonksiyonları kullanılırlar.

setTimeout() örneği

Javascript programlamada asenkron işlemlere örnek olabilecek en basit fonksiyon setTimeout() fonksiyonudur. setTimeout(callback, miliseconds) fonksiyonu iki parametre alır. Parametrelerden biri işlem bittiğinde çalıştırılacak olan callback fonksiyonu, diğeri ne kadar bekleneceğidir. Belirlenen süre kadar bekledikten sonra, parametre olarak aldığı fonksiyonu çalıştırır.

function notify() {
  console.log("Notification!");
}

setTimeout(notify, 3000);

Örnekte, 3 saniye bekledikten sonra callback olarak belirlenen notify() fonksiyonu çalıştırılır.

Asenkron fonksiyonlar çağrıldığında, hemen ardından çalıştırılan kod asenkron fonksiyonun bitmesini beklemek zorunda değildir.

function notify() {
  console.log("Notification!");
}

setTimeout(notify, 3000);
console.log("Merhaba!");

Yukardaki örnekte sırayla;

  • Önce setTimeout() süreci başlatılır.
  • Konsola “Merhaba!” yazılır.
  • 3 saniye dolduktan sonra konsola “Notification!” yazılır.

Callback hell

Callback hell(cehennem) kavramı, callback fonksiyonlar içerisinde tekrar asenkron fonksiyonların ardı ardına çağırılmasıyla oluşan karışık ortama verilen isimdir.

İşlemler dizisi şu şekilde olsun:

  • Ayarlar dosyasını oku ve API url bilgisini al.
  • API url talebi gönder ve iş listesini al.
  • Listedeki iş listesini başka bir API’ye Post olarak gönder
fs.read("settings.json", function(error, result){
    http.get(result.toDoUrl, function(toDoResponse){
        toDoResponse.todos.forEach(item=> { 
             http.post(result.customerToDoUrl, item, 
                function(response){
                 console.log(response);
             })
        }); 
    }
})

İşlem adımı ne kadar fazlaysa iç içe geçen işlemler dizisi o kadar uzun olacaktır.

Javascript programlama dilinde callback hell’den kurtulabilmek ya da daha düzenli hale getirebilmek için Promise yöntemi uygulanmaya başlandı. Ancak bu sefer de promise hell oluşmaya başladı.

Bu sorunlardan bizi kurtaran modern javascript kavramı async/await olmuştur.

async/await

Yukarıdaki işlemi async/await ile aşağıdaki şekilde de kullanabiliriz.

const settings = await fs.read("settings.json");
const todoResponse = await http.get(result.toDoUrl);

todoResponse.todos.forEach(item => { 
     const response = await http.post(result.customerToDoUrl, item);
     console.log(response);
})

ArcGIS Subtype Kullanılan FeatureClass üzerinde Domain Kullanımı

7 Oca

ArcGIS platformunda oluşturulan coğrafi veri tabanları (geodatabase) üzerinde attribute domain’ler oluşturarak veri tabanındaki bütün FeatureClass’lar üzerinde kullanabilirsiniz. Attribute domain’ler FeatureClass üzerinde tanımlanan filed veri tipi ile uyumlu olmalıdır. Çünkü her attribute domain bir veri tipine sahiptir. Bu veri tipleri:

  • Short
  • Long
  • Float
  • Double
  • Text

Örnek bir attribute domain aşağıdaki gibi tanımlanabilir.

Burada “su_tipi” adında bir attribute domain oluşturulmuştur. Aldığı değerler ise code ve description alanlarına doldurulmuştur.

Hazırlanan attribute domain, bir feature class içerisindeki field üzerine aşağıdaki şekilde eklenip defalut değeri seçilebilir.

Artık siz içmesuyu ana hat çizimi yaparken su tipleri otomatik olarak “Arıtılmış” değerlerini almış olacaktır.

Dikkat

Ancak, eğer tanımladığınız feature class(şekilde içmesuyu ana hattı) üzerinde oluşturduğunuz bir subtype varsa attribute domain değerleri otomatik olarak gelmeyebilir. Bu durumda Arcgis Pro üzerinde attribute domain neden çalışmıyor diye düşünebilirsiniz. Ancak Arcgis Pro üzerinde subtype oluşturulduğunda her type için farklı attribute domain özelliği tanımlayabilme yeteneği getirilmiştir. Bu nedenle siz her bir subtype için değerleri yeniden belirlemek durumunda kalabilirsiniz. Eğer tanımlamazsanız çizim yaparken attribute değerleriniz null olarak gelebilir.

Yukarıdaki içmesuyu ana hat feature class üzerinde “*hat_tipi” field biraz daha koyu renkle ve “*” ile işaretlenmiştir. Bunun nedeni, hat_tipi alanında bir subtype tanımlanmış olmasıdır. Bu durumda her bir subtype üzerinde attribute domain tanımlamalarını tekrar gözden geçirmek durumunda kaldım. Eğer attribute domain tanımlamanızı, subtype oluşturduktan sonra yaptıysanız bu ayarları mutlaka kontrol etmelisiniz.

Subtype ekranında her bir su_tipi alanının belirlenmiş olduğunuzda artık bir sorun ile karşılaşmazsınız.

Neden Geliştiriciler Apple Mac ürünlerini Tercih Eder?

15 Ara

Yazılım ve sistem geliştirici seviyesindeki kullanıcılar genelde Apple Mac ürünlerini tercih ederler. Geliştirici dünyasında en sık görünen ürün ise MacBook laptoplardır. Uluslararası sunumlar, webcast gibi aktivitelerde genelde Apple logosu görünür.

Bunun tercihin sebepleri en genel hatlarıyla nelerdir?

Kullanıcı Dostu

Mac bilgisayarlar gerek dış görünüm ile gerekse macOS işletim sisteminin kullanıcı ara yüzü ve programların kullanıcıyı cezbeden görüntüsü ile kullanıcıların ilgisini çekmektedir.

Donanım Kalitesi

Ekran kalitesi göz alıcı ve çekici. MacBook bünyesindeki alüminyum şase termal özellikleri mac işletim sistemi ile birleştiğinde Mac bilgisayarlar PC bilgisayarlardan daha serin çalışır.

MacOS işletim sistemi Windows işletim sistemine göre daha verimli olduğundan pil ömrü avantajıyla önemli bir tercih sebebidir.

DPI ölçekleme Mac bilgisayarlarda kusursuz gibidir. Mac üstünde 4k doğrudan çalışır.

Fiyat Avantajı

Mac’ler aslında uzun vadede daha ucuzdur. Dolar kurundan dolayı ülkemizde her zaman bu avantaja sahip olamıyoruz. Yurt dışında durum böyle değildir. Elbette, daha az dolar ödeyerek bir Windows PC satın alabilirsiniz. Ancak gerçek sahip olma maliyeti, yalnızca ürünü edinme maliyetine değil, aynı zamanda onu sattıktan veya takas ettikten sonra kalan değere göre de hesaplanmalıdır. Üç yıl önce satın alınan Windows PC ile üç yıl önce satın alınan Mac’in bugünkü değeri karşılaştırıldığında durum anlaşılabilir. Ayrıca Apple ürünlerinin hatalı çıktığında Apple tarafından ücretsiz yenisi ile değiştirilmesi de önemli bir avantajdır.

Güvenilirlik

MacBook işletim sistemi macOS olarak adlandırılır ve Apple bilgisayarlar için oluşturulmuştur. Apple yalnızca kendi işletim sistemlerinin tek başına oluşturduğu Mac, iPad, iPhone, Watch, TV gibi küçük bir aygıtlar listesine destek vermektedir. Yazılım ve donanım birbiriyle uyumlu çalışır ve bu nedenle MacBook çok kararlıdır. Buna karşılık Windows, 1000 üzerinde cihaza destek verir. Bu durum Apple ürünlerinin daha uyumlu, verimli ve güvenilir bir deneyim sunmasını sağlar.

Güvenlik

Virüsler için endişelenmenize de gerek yoktur çünkü macOS için çok fazla virüs yoktur. Ancak yine de MacBook’unuzda entegre ek güvenlik özellikleri de vardır. Apple, sistemin güvenli ve güvenilir kalması için macOS’u düzenli olarak günceller.

Uzun Süreli Destek

Eski model Mac bilgisayarlarda bile en son iOS sürümünü çalıştırmak mümkün olabilmektedir. Bu durumu Windows çalıştıran PC’lerde görmek zordur. Yeni bir windows sürümü yayınlandığında eski bir bilgisayarın video sürücüsü desteklenmeyebiliyor. Windows dizüstü bilgisayar üreticileri genellikle bir aygıt üretir ve sürmekte olan sürücü güncellemelerini ve hata düzeltmelerini görmezden gelir. Apple’ın bakımlı donanım ekosistemi, uzun süreli sürücü desteği sağlamaya yardımcı olur. Bununla birlikte, Microsoft’un Surface çizgisini genişlettiğini görmek çok güzel, bugünün Mac aygıtlarıyla aynı uzun vadeli desteğin tadını çıkarmayı planlıyor.

Çevre Birimleri

MacBook Pro, ek bir kablo ile Dual 4K ekranlar ve monitör aynı USB-C kablosuyla makinenize güç sağlar.

Bash Komutları

MacOS işletim sistemi kullanışlı bir terminale sahiptir ve bash komutlarını çalıştırmaktadır. Terminal ve bash komutları geliştiriciler için çok önemlidir.

Bash komutları MacOS işletim sisteminin dosya yapısına uygundur. Her ne kadar windows işletim sisteminde de bash komutları çalışsa da alt taraftaki dosya yapısı buna uygun değildir. Linux ve macOS üzerinde benzer bash komutları çalıştırılabilir. Her iki işletim sistemi de aynı kökenden (Unix) gelse de yıllar boyu süren geliştirilme safhalarından sonra bile kullanıcı alışkanlıkları ve komut yapıları pek değiştirilmemiştir.

Git ve türevi versiyon kontrol sistemleri de yine ek gereksinime ihtiyaç duymadan doğrudan terminal üzerinden kullanılabilmektedir.

Geliştirme Ortamı

MacOS, web sunucularının çoğu tarafından kullanılan yerel bir UNIX ortamına sahiptir. Bu nedenle aynı ortama sahip bir macOS bilgisayarda geliştirme yapmak önemlidir. Bu sayede MacBook bilgisayarda geliştirilen kodlar sunucuda da sorunsuz çalışacaktır.

Geliştiricilerin kullandığı araçların çoğu Unix’ten geliyor ve MacOS işletim sisteminde UNIX’in gücünü kullanmak konforlu bir geliştirme sağlar.

iOS ve OS X uygulamaları geliştirmek ve yayınlamak için Mac bilgisayarlara ihtiyaç duyulur. MacOS bilgisayarlarda Windows ve Linux için yazılım oluşturmak ve test etmek büyük bir çaba gerektirmez, bu arada OS X’i bir Windows veya Linux bilgisayarda çalıştırmak oldukça zahmetlidir.

Emeğinizi Paçavraya Çevirmeyin

6 Ara

Hangi meslek erbabı olursanız olun, daima mesleğinize saygılı olun. Emeğinizi paçavraya çevirmeyin.

Emeği paçavraya çevirmek nasıl olur?

Mesleğinizi elinize alana kadar harcadığınız sürede okul, iş, tecrübe edinme derken on yıllar geçtiğini göreceksiniz. Bu yıllar geçerken sadece sizden değil, sizi bakmakla yükümlü olanların da emekleri harcanmıştır. Artık bir mühendis, mimar, usta, doktor veya sanatkar olmuşsunuzdur. O gün gelmiştir ve bir tanıdığınızın işletmesinde veya üretim tesisinde mesleğinizle ilgili bir iş yapılması konusunda size ihtiyaç duyulmuştur. Siz de bunun çok kolay bir iş olduğunu, hatta para bile vermelerine gerek olmadığını söyleyerek işi yapmışsınızdır. O andan itibaren artık mesleğinizin erbabı olmaktan çıkıp, kölesi olursunuz. Mesleğinizin itibarını yerlere serersiniz. Bir süre sonra mesleğinizin yeterince kazandırmadığına karar verip iş değiştirmek zorunda kalabilirsiniz. Evet yaptığınız iş belki yarım saat belki bir saat sürecek bir iştir. Ancak mesleğiniz yılların birikimi ile kazanılmıştır.

Bir de işe tersten bakalım. Bedelsiz veya çok ucuza iş yaptığınız işletmelere sizin işiniz düştüğünde en fazla yüzde beş veya yüzde on indirim alabilirsiniz. Halbuki işletmenin yaptığı nedir ki? Verdiği siparişlerle tedarik ettiği ürünlere elini bile sürmeden rafa yerleştirmek bu iş adımlarından biridir. Daha sonra ürünlere elini bile sürmeden müşteriye fatura kesmek is diğer bir basit adımdır. Ama bu sürecin bu kadar basit olduğunu size asla hissettirmezler. Bir diş hekiminin koltuğunda tek bir dişinize dolgu yapmak için sekiz on saat süre ayrılmaz. Hiç bir doktorun muayenehanesinde iki saat geçirmezsiniz. Bir avukatın ofisinde on saat danışmanlık hizmeti almazsınız. Evde makineniz arıza verdiğinde evinize gelen teknik servis elemanı en fazla yarım saat işlem yapar ve ücretini tam alıp gider. O halde siz de mesleğinizi yani emeğinizi paçavraya çevirmemelisiniz. Bunu yaparsanız aç kalırsınız. Sevdiğiniz işi bırakıp, sevmediğiniz işleri yapmak zorunda kalırsınız. Çok basit diye küçümseyerek yaptığınız işlerle kendi kendinize ve diğer meslektaşlarınıza zarar verirsiniz.

Burada kastım adım başı her hizmetinizden bedel istemeniz değildir. Ya da arkadaşlarınıza, dostlarınıza çıkar ilişkileri ile yaklaşıp, sizden her yardım isteyenden bir karşılık almakta değildir. Burada profesyonel dünyadaki iş yaklaşımından bahsetmek istedim.

Unutmayın, dünya üzerinde sömürülmeye en müsait olan ve en çok sömürülen şey emektir. Yaptığınız işte kesinlikle hakkınızdan fazlasını almayın. Ama hakkınızı da kurda kuşa yem etmeyin. Unutmayın, çalışmak emek satmaktır. Yani ömrünüzden bir parçayı feda etmektir. Bunu bedelli veya bedelsiz yapmak size kalmıştır.

Document Object Model (DOM) Nedir?

18 Kas

Document Object Model (DOM), hem HTML hem de XML için bir uygulama arabirimidir(API). DOM Türkçe’de Belge Nesne Modeli olarak adlandırılabilir.

DOM tüm sayfayı, düğüm hiyerarşisinden oluşan bir belge olarak oluşturur. Bir HTML veya XML sayfasının her bölümü bir düğümden türetilmiştir. Bu düğümlerin her biri ayrı birer nesnedir.

<html>
   <head>
      <title>E-Ticaret</title>
   </head>
   <body>
      <h1>Kategoriler</h1>
   </body>
</html>

Bu kod, DOM kullanılarak bir düğüm hiyerarşisi olarak aşağıdaki şekilde çizilebilir. Bir web sayfası yüklendiğinde, internet tarayıcısı(Chrome, IE, Mozilla, vs) sayfanın DOM modelini oluşturur.

DOM yapısı, bir belgeyi temsil eden ağaç yapısını oluşturarak, geliştiricilere belgenin yapısı üzerinde kolay bir denetim yapabilmelerini sağlar. Hangi nesnenin hangi nesneye bağlı olduğu kolay bir şekilde öğrenilebilir. Ağaçtaki düğümler DOM API sayesinde kaldırılabilir veya ağaca yeni bir düğüm eklenebilir.

DOM ve Javascript İlişkisi

DOM JavaScript’e özgü değildir ve aslında pek çok başka dilde uygulanabildiğidir. Ancak Web tarayıcıları için DOM, ECMAScript kullanılarak uygulanmıştır ve artık JavaScript dilinin büyük bir bölümünü oluşturmaktadır. Javascript DOM ile dinamik HTML oluşturmak için daha etkili işlemler yapabilmektedir.

  • Sayfadaki tüm HTML öğelerini ve HTML attribute değerlerini değiştirebilir.
  • Sayfadaki tüm CSS stillerini değiştirebilir.
  • Mevcut HTML öğelerini ve özniteliklerini kaldırabilir.
  • Yeni HTML öğeleri ve öznitelikleri ekleyebilir.
  • Sayfadaki mevcut tüm HTML olaylarına yanıt verebilir.
  • Sayfada yeni HTML elementi ekleyebilir.

DOM Neden Gerekli Hale Gelmiştir?

Web uygulamalarının yaygınlaşmaya başladığı yıllarda Internet Explorer 4.0 ve Netscape Navigator 4.0 ile birlikte, geliştiriciler ilk kez bir Web sayfasının görünümünü ve içeriğini sayfayı yeniden yüklemeden değiştirebilir hale gelmişlerdi. DHTML (Dynamic HTML) doğmuştur. Bu olay web teknolojisinde adeta yeni bir sayfa açmıştı. Fakat yeni bir sorunu da beraberinde getiriyordu. Microsoft ve Netscape gibi ticari firmalar DHTML’yi geliştirme sürecinde kendi yollarından gittiler. Böylece Web geliştiricilerinin herhangi bir Web tarayıcısı tarafından çalıştırılabilen tek bir HTML sayfası yazabildikleri dönemi sona erdirdiler. Buradaki tehlike, Microsoft ve Netscape firmalarının önüne geçilmediği taktirde Web’in iki gruba bölünecek olmasıydı.

Web’in platform bağımsız doğasını korumak için bir adım atıldı. Web standartları oluşturmakla görevli olan World Wide Web Consortium (W3C), DOM üzerinde çalışmaları başlatmıştır. DOM W3C trafından üç bölümde oluşturulmuştur.

  • DOM Core
  • DOM XML
  • DOM HML

DOM zamana bağlı olarak seviyeler halinde gelişim göstermiştir.

DOM Level 1

1998 yılında W3C tarafından tavsiye edilmiştir tek amacı belgenin yapısını oluşturmaktır. İki modülden oluşur.

  • DOM Core: Bir belgenin herhangi bir bölümüne kolayca erişmeyi ve belgede düzenleme yapmayı sağlar.
  • DOM HTML: DOM Core genişletilerek HTML’e özgü nesneler ve yöntemler eklenmiş halidir.

DOM Level 2

Bu seviyede DOM’a fare ve kullanıcı arabirimi olayları(events) ve stil sayfaları yanında yeni modüller eklendi.

  • DOM Views: Belgenin CSS Stil’den önce ve CSS Stil’den sonraki görünümlerini izlemek için arayüzleri tanımlar.
  • DOM Events: Olaylar için arayüzleri tanımlar.
  • DOM Style: CSS tabanlı stilleri yönetmek için arayüzleri tanımlar.
  • DOM Traversal and Range – bir belge ağacında gezinmek ve düzenleme yapmak için arayüzleri tanımlar.

DOM Level 3

Bu seviyede, belgeleri tek tip bir şekilde yükleme ve kaydetme yöntemlerinin yanı sıra bir belgeyi doğrulama yöntemleri DOM’a eklenmiştir.

Kaynaklar
  • Professional JavaScript for Web Developers 3rd Edition, Nicholas C. Zakas
  • https://www.w3schools.com/js/js_htmldom.asp

PowerShell Robocopy ile hızlı dosya kopyalama

16 Kas

Büyük boyutlu dosyaların transferinin copy/paste yöntemi ile yapılması mümkün olmayabiliyor. Benim başıma gelen gerçek bir sorun, bir uydu fotoğrafının tile denen 256×256 pixel boyutunda parçalara ayırdığında oluşan devasa (yaklaşık 250GB) boyutlu verinin sunuculara aktarılmasıydı. Bu işlem sonucunda oluşan verinin ağdaki başka bir sunucuya taşınması öyle kopyala yapıştır gibi klasik yöntemlere olacak gibi değildi.

Windows ortamında robocopy‘nin gücü kullanılarak PowerShell veya Console üzerinden bu gibi büyük verilerin taşınması kolay bir şekilde yapılabilmektedir.

Robocopy ile dosyaların bir yerden bir yere taşınması için temel yazım biçimi şu şekildedir:

robocopy <kaynak> <hedef> [<dosya>[ ...]] [<seçenekler>]

Örneğin, “C:\tiles” dizinindeki tüm dosyalar “D:\tiles” dizinine taşımak için aşağıdaki komut kullanılır. Burada alt dizinler ve dosyalar dikkate alınmaz, ancak tüm sistem dosyaları ve gizli dosyalar taşınır.

robocopy C:\tiles D:\\tiles

Eğer, tüm alt dizinler ve dosyalar da taşınacaksa komuta aşağıdaki gibi “/S” parametresi eklenir. Ancak bu parametre boş dizinleri dikkate almaz.

robocopy C:\tiles D:\\tiles /S

Eğer boş dizinleri de taşımak isterseniz komuta “/E” parametresi eklenmelidir.

robocopy C:\tiles D:\\tiles /E

Eğer ağdaki başka bir bilgisayara taşıma işlemi yapılacaksa, ilgili bilgisayarda bir dizinin paylaşıma açılması gerekmektedir.

Robocopy için bir çok kullanışlı parametreye buradan ulaşabilirsiniz.

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.