0
04 Ağustos, 2020

E-Ticaret'e nasıl başlamalıyım? | Kısa ve Öz 051

E-ticarete yeni başlayacaksanız sizin için en iyi seçenek, hazır trafiğinden dolayı pazaryerlerini kullanmak. E-ticaret paketleri ve özel e-ticaret yazılımları ile kendi sitenizde de satış yapabilirsiniz ama, bu başlangıç için hem daha pahalı hem de müşteri tabanı oluşturabilmek için daha külfetli bir seçenek. Konu hakkındaki yazımızı okumak isterseniz:

https://medium.com/@kolaydegil/e-tica...

0
02 Ağustos, 2020

Database Tasarlarken Tablo İsimlendirme Nasıl Olmalı ?

Merhabalar,
 
Uzun yıllar kod yaza yaza birçok metot deneye deneye sonunda artık karar kıldığım bir veritabanı tablo isimlendirme yapısına kavuştum. Bu yapıyı uzun zamandır kullanıyorum ve gerçekten veri tabanı tarafından işlerimi kolaylaştıran yönleri olduğunu görüyorum. Bu deneyimimi sizlerle paylaşmak istedim arkadaşlar.
 
 
Veri tabanında isimlendirme konusu sandığınızdan çok daha önemli bir konudur. Programlama sırasında size kolaylık sağlaması dışında büyük ekiplerin ortak bir projede çalışırken de adaptasyonu kolay olmalı ve isimlendirmeler manalı olmalıdır.
 
 
Metotları açıklamak için örnek Müşteri, Müşteri Türü, Sipariş Türleri ve Siparişler şeklinde 4 tabloya ihtiyaç olduğunu düşünelim. 
 
En temel konu öncelikle tablonun isimlendirmesi olacaktır. Bu tablolara ne isimler verirdiniz ?
 
Veritabanı Tablo İsimlendirmesi 
 
Yaygın kullanılan yöntem 
Customers
CustomerTypes
OrderTypes
Orders 
 
şeklindedir. Özellikle MS-SQL geliştirme yapan coğu kişi entity framework ve progralama ortamında alışkın olduğu isimlendirme gereği bunu kullanır. Elbette kullanılabilir, ancak benim bu isimlendirmede gördüğüm birkaç sıkıntı var.
 
Öncelikle bu şekilde isimlendirdiğinizde, bunun entity framework tarafında daha alışılmış durduğunu kabul ediyorum. Ancak buna rağmen kodlama ortamında eğer büyük bir proje geliştiriyorsanız kullandığınız ara yardımcı modeller çok fazla olmaktadır. Örneğin OrderManager gibi veya AccountManager gibi şeyler yazıp bunları kullanıyoruz. 
 
Kodlama büyüdükçe o kodların arasında zaten business işlerimizin yürüdüğü modeller ile veritabanı modelleri birbiri ile aynı olduğu zaman çok ciddi benzerlik olması bana kalırsa bir sorun. Bunun yerine rahatça bir nesnenin DB objesi olduğunu anlamak büyük bir avantajdır. İşte bu nedenle ben öncelikle isimlendirmede tamamen büyük harf kullanmanın daha pratik olduğuna karar vermiş durumdayım.
 
1- Tekil İsimlendirme
 
Mantık olarak baktığınızda birçok müşteri verisini tutan tablonun isminin CUSTOMERS tablosu olması daha anlamlı aslında. Evet bu aslında gerçekten de daha mantıklı ama sorunlara sebep olduğu için iyi bir yol değil. 
 
Nasıl bir sorun derseniz, FISH tablosunu örneğin FISHES gibi her tabloda ingilizce kuralına göre çoğulunu türetmek biraz zorlayıcı. Bunda ne zorluk var demeyiniz, öyle uzun ve karmaşık sorgular yazarken buna odaklı olmadığınız için FISHES yazmak yerine FISHS şeklinde hatalı tahminleme ile kodlama yapabiliyoruz. Niçin bu zorluğa girelim ki, doğrudan tekil isim kullanma kuralı uygulanırsa bu sorun tamamen ortadan kalkıyor.
 
2- İngilizce İsimlendirme
 
Öncelikle pratik olsa idi Türkçe isimlendirme yapmanızı çok isterdim. Bu konuda epey gayret göstermiş birisi olarak yakın zamanda Türkçe isimlendirme ile devam ettiğim bir projemde de yaşadığım sıkıntılar sonucu İngilizce isimlendirmeye geçiş yaptım.
 
En büyük sorun tabi ki Türkçe karakter sorunu yaşamak oluyor. Dahası yazılım projeleri bugün belki büyük bir projeniz olmasa bile ilerisini kim bilebilir ki. Ekibiniz büyüdüğünde yabancı birçok yazılımcı ortak dili ingilizcedir Dolayısı ile ingilizce olması konusunda artık en küçük bir tereddütüm bile kalmamıştır size de tavsiyem budur.

3- Tamamen Büyük Harf ve '_' ile kelimeleri ayırın
 
CUSTOMER, CUSTOMERTYPE, ORDERTYPE ve ORDER şeklinde isimlendirmek kesinlikle daha kullanışlı. Bu aslında hak ettiği değeri vermesi adına da güzel bir kullanım. En iyi programı yazabilirsiniz ama veriyi iyi yönetmezseniz o yazılım doğru sonuçlar üretemez.

Yani tamamı büyük harf olması hem diğer nesnelerden öğeyi ayırdığı gibi ne denli önemli olduğu hakkında da bir güç kazandırıyor. 
 
Ama şimdi de bilmem fark ettiğiniz mi büyük küçük harf ayrımı olmadığı için otomatik olarak 2 kelimeden oluşan tabloların kelimelerini ayırmak zorlaştı! 
 
İşte bu sorunu da gidermek için kelimeler arasına '_' ekliyoruz. Yani nihai nokta şu şekilde oluyor.
 
CUSTOMER
CUSTOMER_TYPE
ORDER_TYPE
ORDER  
 
Bakın ne kadar anlaşılır ve anlamlı hale geldi. Bu yazım şekli aslında özellikle Oracle üzerinde çalıştığımda gelişti aslına bakarsanız. Kesinlikle çok daha kullanışlı.
 
 
4- Kelimelerin yalın halini kullanın
 
Veri tabanlarında birçok kayıt ile ilgili ilişkili başka kayıtlar tutulmaktadır. Bunlardan örneğin müşteri sisteme erişimlerini log tuttuğunuz bir tablo isimlendirecek olalım. Ne yapardınız ? 
 
CUSTOMERS_ENTERANCE_LOGS, CUSTOMER_ACCESS_LOGS, CUSTOMER_ACCESSES v.s...
 
Bir sürü seçenek doğuyor aklınızda. Bu metot risklidir çünkü, sürekli benzer bir kurallandırma koyup isimlendirme yapamazsınız.
 
Yani bir isim tamlaması kuralı belirleyip hepsine aynı şekilde uygulama şansınız olmayacağı için belirsizlik nedenidir.
 
Bakış açısı şu olmalıdır. Bu tabloda kayıt edilecek şey nedir sorusuna verilen en yalın isimler tablo adı olmalıdır.
 
Bu örnekte mesela, 'Müşteri Sistem Erişimleri' yani müşteri sisteme her login olduğunda sistem bir kayıt atacak ve bu sayede aslında sistemin güvenliğini sağlamak için bir tablodur bu.
 
Bu tablonun adı 'CUSTOMER_ACCESS' olması yeterlidir aslında. Bu isimlendirme herşeyi anlatır ancak hala bir sorun vardır.
 
 
 
5- Modül ön ekini kullanın
 
Bir önceki önerimde belirlediğimiz tabloyu düşünelim. Bu 'CUSTOMER_ACCESS' tablosunun ana amacı nedir ? 
 
Tabi ki güvenlik amacı ile müşterinin kayıtlarının tutulmasıdır. Böylece bir müşteri yerine başkaları giriş yapmış olma durumu takip edebilmesi sağlanır. Yani ana amacı güvenliktir ve görev yaptığı modül güvenlik ile ilgilidir. 
 
İşte bu örnekte mesela  'SECURITY_CUSTOMER_ACCESS' isimlendirmesini kullanmak daha akıllıca olacaktır.
 
Tabloları incelerken veritabanı üzerinde çok daha anlamlı şekilde isimlerine göre modüler bazla sıralandığını görebilirsiniz.
 
Bir diğer faydası da kodlarken örneğin dbo.SECUR... gibi bir yazım sonrası size programın önerdiği listede bu modüldeki tüm tabloları sunabilme gücüdür. 
 
 
 
Tablo isimlendirmesi konusunda önerilerim bu şekildedir arkasdaşlar.

Bir sonraki yazımda kolon isimlendirmeleri konusu ile karşınızda olana dek kendinize iyi bakın.
0
02 Ağustos, 2020

User experience catch : 'Are you sure to delete' popup yerine güzel bir metot

Bugün zapier.com da bir işlem yapmakta idim. Hatalı kayıt oluşturdum ve silmem gerekti.
 
O sırada yaşadığım bir kullanıcı deneyimi nedeniyle sizinle paylaşmak istedim.
 
Veri Silme Onayı
 
Önemli verileri sildiğinizde, tüm uygulamalar size emin misiniz diye sorar.
 
Çünkü işlem önemlidir ve geri alınamayabilir.
 
Aşağıdaki aramada görüleceği üzere genelde kötü bir popup alert box açılır. 
 
Ekranın ortasında kafamıza vurur gibidir ve beni pek bir iğreti yapar.
 
Hepsi bir tarafa, bu iğrenç görünümün bir sebebi de vardır, çünkü dikkat çekmektir amaç :(
 
 
 


 
Peki bu senaryodaki hata nedir ?
 
 
1- Öncelikle bir veri gerçekten silinmemelidir. Windows da olduğu gibi geri dönüşüm kutusuna atılmalıdır. Kalıcı silme işlemi ikinci bir adım olmalıdır.
 
2- En güzel gösterimi nasıl olur derseniz, zapier.com bunu göstermiştir.
 
Aşağıdaki gibi trash buton görünüyor listede.
 

 
Tıkladıktan sonra diğer bir aşamaya geçiyoruz.
 
Rahatsız edici popup olmadan harika bir onay mekanizası bence, ya sizce :)
 
Önerdiğiniz böyle başarılı uygulamalar varsa iletişim formundan paylaşabilirsiniz burada örnekleyelbilirim.