My Books

 


Design Patterns in ABAP Objects

1464_high_res_2d

Boston, SAP Press, 2016, ISBN 978-1-4932-1465-5

Use design patterns to step up your object-oriented ABAP game, starting with MVC! Want to create objects only when needed? Call objects only when required, minimizing runtime and memory costs? Reduce errors and effort by only coding an object once? Future-proof your code with a flexible design? Design patterns are the answer! With this guide, you’ll get practical examples for every design pattern that will have you writing readable, flexible, and reusable code in no time!

– Use design patterns to write better code, faster

– Implement common architectural, structural, and behavioral design patterns

– See design patterns in action with real-world SAP applications

Link: SAP Press, Amazon

 


Ne Kadar Hayvansın

0000000444842-1

İstanbul, Pusula Yayıncılık, 2013, ISBN 605-510-602-7

Doğanın gizli programı insan ve hayvan davranışlarını nasıl şekillendiriyor?

Modern insana has üstünlük duygusunu bir an için bir kenara bırakıp doğaya; doğadaki diğer canlılara bakın. Sonra bir de kendinize bakın. İlk seferde, sosyal ortamımızın içimize kazıdığı şartlanmalarla karşılaşacaksınız muhtemelen, arada büyük farklar bulacaksınız. Bir süre sonra bir daha bakın. Bir daha… Bir daha… Önyargılarınızı bir kenara bırakıp daha dikkatli bakmaya başladıkça, aradaki farkların inandırılmış olduğunuzdan çok daha az olduğunu fark etmeye başlayacaksınız…

Erkekler neden futbola bayılır? Neden alışveriş yapmak kadınların kendini iyi hissetmesini sağlar? Seksten sonra neden erkekler uyumak isterken kadınlar canlanmış olur? Korku filminden sonra yorgana sarılınca neden kendimizi güvende hissederiz?

Doğadaki bütün canlılar, ortak bir programla dünyaya gelir. Bu program, insanda da vardır, köpekte de; ayıda da vardır, kaplanda da. Bu programı anlayabilen biri, kendine ve başka insanlara ait davranışların çok büyük bir kısmını da anlayabilir, açıklayabilir, hatta öngörebilir.

Dr. Kerem Köseoğlu, söz konusu programı deşifre edip herkesin anlayabileceği bir şekilde açıklıyor. Kitabı okudukça ve kendi içinizdeki programı da gözlemlemeye başladıkça; aslında her şeyin ne kadar basit olduğunu göreceksiniz. Hatta bu kadar uzun zamandır bu kadar açık bir şekilde ortada olan bir şeyi, nasıl olup da keşfedememiş olduğunuza şaşıracaksınız belki de…

Kolay okunan, pek çok konudaki görüşlerinizi değiştirecek ve size yeni bir bakış açısı kazandıracak, keyifli bir kitap… En önemlisi, diğer canlılara ve kendinize daha anlayışlı ve daha hoşgörülü davranmanızı sağlayacak!

Link: Pusula, Amazon, D&R, HepsiBuradaIdefix, KitapYurdu

 


Veritabanı Mantığı (10.)

0000000185275-1

İstanbul, Pusula Yayıncılık, 2005, ISBN 975-647-756-3

Bu kitapta yazar, SQL’in ne olduğu ve nasıl kullanıldığı gibi konulardan önce, veritabanı kavramına değiniyor. Bu çerçevede; veritabanının ne olduğu, nerelerde hangi amaçlarla kullanıldığı, nasıl hazırlanıp programlandığı gibi konulara açıklık getiriyor. Özellikle; yeni oluşturulan bir veritabanı içerisinde tablo tasarımının nasıl yapılması gerektiği konusu üzerinde ayrıntılı bir biçimde duruluyor. Yaygın olarak kullanılan tüm veritabanı programlarının ortak dili olan SQL’i öğretmek amacıyla hazırlanan bu kitapta, her konu birden çok örnekle anlatılıyor ve birkaç kez MS-Access programını çalıştırmış bir kullanıcının bile rahatça takip edebileceği bir dil kullanıyor.

Link: Pusula, Amazon, D&R, HepsiBuradaIdefix, KitapYurduDownloads

 


Bilgisayar Destekli Müzik

0000000180374-1

İstanbul, Pusula Yayıncılık, 2005, ISBN 975-6477-53-9

Bilgisayar desteği arkanızda olduğu sürece, evinizde ekonomik yollardan müzik yapabilirsiniz! Fazla masraf yapmadan kendi ev stüdyonuzu kurabilir ve odanızda yaptığınız çalışmalarla profesyonel kayıt stüdyolarını aratmayacak sonuçlara imza atabilirsiniz.

Kitapta bahsedilen programları kullanarak ruhunuzdan dökülen notaları dijital ortama aktarabilir, üzerlerinde sayısız düzenleme yapabilirsiniz. Tüm bunları; ortalama bir bilgisayar, doğru seçilmiş bir ses kartı ve program ile kolayca gerçekleştirebilirsiniz!

• MIDI nedir?
• Audio Nedir?
• Popüler Müzik Programları: Sequencer, Loop, Audio Düzenleme, Notasyon, SoundFont Programları
• Adım adım örnek uygulamalar
• Cakewalk Sonar ve Sound Forge Programlarının detaylı anlatımı
• Loop bazlı projeler ve Fruity Loops
• Notasyon ve Sibelius

Kendi müziklerinizi nasıl hazırlayacağınızı adım adım tarif eden kitapla birlikte, yazarın Audio çalışmalarını ve kitapta kullanılan programların deneme sürümlerini içeren CD de hediye!…

 


Programcılık Mantığı (9.)

0000000160095-1

İstanbul, Pusula Yayıncılık, 2004, ISBN 975-647-738-5

Programcılık nedir? Programcı olabilmek için neler gerekir? Kimler programcı olabilir? Programcılar ne yapar? Programcı kimdir?

• Programlama dilleri ve karşılaştırmaları
• Programcılık Terimleri
• Temel Algoritma Öğeleri
• Mantıksal Operatörler
• Akış Şemaları
• Nesne Temelli Programlama
• Görsel Programcılık

Bu sorulardan yola çıkarak, programcılığı masaya yatıran Programcılık Mantığı, programcı olmak isteyen ama nereden başlayacağını bilemeyenler için yazılmış benzersiz bir kaynak. Temel programlama öğelerinden, görsel programcılığa, programcılık terimlerinden nesne temelli programlamaya kadar, programcılık hakkında bilmek isteyeceğiniz her şey bu kitapta yalın bir dille ve günlük hayattan örneklerle anlatılıyor. Programcılığa nereden başlayacağını bilemeyenler, bu kitap tam sizin için. Değişkenler, fonksiyonlar, sınıf ve nesneler, akış şemaları, görsel programcılık, nesne temelli programlama gibi temel programlama konularını detaylı olarak inceleyen kitap, işlediği her konu için Java, C#, VB.NET ve Delphi’de yazılmış örnek uygulamalar da içeriyor. Böylece en çok kullanılan bu dört programlama dilini de bir arada görme ve kıyaslama imkânı da sunuyor.

Algoritma yapılarını, günlük hayattan örneklerden yola çıkarak anlatan, her uygulamanın dört ayrı dilde yazımını veren bu kitap, bu özellikleriyle Türkiye’de bir ilk.

Link: Pusula, Amazon, D&R, HepsiBurada, Idefix, KitapYurdu, Downloads


Bir Romeo Bir Juliet

screen-shot-2016-10-24-at-18-19-22

İstanbul, Self, 1999

 

Romeo geceye bakıp Juliet’i her düşündüğünde
Bir yıldız kayar Juliet’in gözlerine ve biraz daha parlar gece…
Juliet geceye bakıp Romeo’yu her düşündüğünde
Bir yıldız daha kayar Romeo’nun içine ve derinliklerde kaybolur gider… Aslında bilirler ki Romeo ile Juliet,
Güneş onların birbirlerini bulduğu gün bir daha doğmayacak…
İlkin son ve sonun ilk olacağı ilk ve son karşılaşma olacak bu…
Romeo ilk ve son kez Romeo,
Juliet ise ilk ve son kez Juliet olacak…

 

JSP – MySQL Türkçe Karakter Probleminin Çözümü

JSP ile MySql kullanıyor ve Türkçe karakter sorunu yaşıyorsanız; aşağıdaki adımlarla bu sorunu çözebilirsiniz.

Veritabanında Schema, Table ve Column bazındaki tüm Collation’larınız “utf8 – utf8_unicode_ci” olmalıdır.

JSP sayfalarınızın tamamında aşağıdaki Tag’lerden biri yer almalıdır:

<%@page pageEncoding="UTF-8"%>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

Veritabanı bağlantısını sağlayacağınız zaman, Connection String’inize aşağıdaki gibi karakter setini dahil edin:

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

Son olarak; özellikle Request / Response ile aldığınız Text’leri SQL sorgusuna dahil etmeden önce aşağıdaki kod ile dönüşümden geçirin (Gelen metin: Input, SQL’e gidecek metin: output):

byte[] bytes = new byte[Input.length()];
for (int i = 0; i < Input.length(); i++) bytes[i] = (byte) Input.charAt(i);
String output = new String(bytes, "UTF-8");

SAP Veritabanına Doğrudan Erişim

1464-ppt

Kerem Bey merhaba,

http://kk-dev.blogspot.com adresindeki yazılarınızı tesadüfen gördüm ve gerçekten işime yaradılar.

SAP konusunda bilgili olmanızdan dolayı bana yardımcı olabileceğinizi düşündüm ve maili o yüzden yazıyorum.

Özel bir proje çalışmam var ve SAP veritabanları üzerinde denemeler yapmam gerekiyor. HR, FI, CRM … ancak örnek veritabanı bulamıyorum. Ayrıca daha önce hiç çalışmadım.

Bilgisayarıma MAXDB kurdum. Yeterli olacak mı bilemiyorum.

Yapmak istediğim şey ABAP öğrenmek yada SAP içinde proje geliştirmek değil. SAP projelerinin veritabanları üzerine bir çalışma yapmak istiyorum. ASP.NET ile hazırlanan bir DB projesi var. Tabloları-kolonları ve veritabanına ait basit sorguları gösteren bir proje.

İhtiyacım olan şey örnek bir veritabanı üzerinde, tablo,kolon ve relation bilgilerini veritabanı üzerinden okumak ve verilerin nasıl ve ne şekilde yerleştiğini tespit etmek ve basit ama dinamik sorgular oluşturmak.

Umarım bana bu konuda yardım edebilirsiniz.

 

SAP üzerine yazılım geliştirmeye başlayan bir çok kişinin ilk aklına gelen şey, SAP’nin altında yatan veritabanına (Oracle, SQL Server, vs) doğrudan doğruya erişip raporlama yapmak veya uygulama geliştirmektir. Ancak, çok özel bazı durumlar haricinde, bu yöntem hiçbir zaman kullanılmamalıdır. Zira SAP R/3, modern veritabanları ile birlikte gelen güvenlik, Lock gibi katmanların üzerine pek çok ek katman koymaktadır. Bunları es geçip veritabanına doğrudan doğruya erişmenin birçok sakıncası olacaktır.

Biz kendi projelerimizde; .NET veya Java gibi platformlardan SAP verilerine erişmek istediğimizde genelde iki yöntem kullanıyoruz:

  • Eğer 4.x versiyonlu eski bir SAP sistemi söz konusu ise, .NET Connector veya Java Connector üzerinden SAP’de geliştirilmiş olan fonksiyonlara erişebilirsiniz. SAP üzerinde, dışarıdan erişmek isteyeceğiniz verileri okuyup Export eden fonksiyonlar yazdığınızda, bu fonksiyonları .NET veya Java ile çağırabilirsiniz.
  • Eğer 6.x versiyonlu yeni bir SAP sistemi söz konusu ise, aynı fonksiyonları Web Service olarak yayınlayabiliyoruz. Bu Web Service’leri .NET veya Java’dan çağırarak SAP’deki verileri SAP dışında kullanmak mümkündür.

SAP’ye dışarıdan kayıt atmak söz konusu olduğunda ise; veritabanına doğrudan doğruya kayıt atmak %99.9’luk ihtimalle sistem üzerinde tutarsızlıklara yol açacaktır. SAP en basit işlem kodlarında bile onlarca tabloya kayıt atmaktadır, bu kayıtları birebir taklit etmek mümkün değildir. Bunun yerine; yine SAP’nin standart BAPI fonksiyonlarını veya Batch Input ile kayıt atacak şekilde sonradan geliştirilmiş fonksiyonları yine yukarıdaki yöntemlerden biriyle çağırmak gerekir.

Gelelim esas sormuş olduğunuz soruya… Bilgisayara MAXDB kurmak yeterli olmayacaktır. SAP veritabanı ise tek başına kurulabilecek bir yazılım değildir, standart bir SAP kurulumunda hem veritabanı yüklemeleri (tablolar, View’lar, genel veriler, vs) yapılır hem de R/3 Application Server kurulur. Eğer benden SAP R/3’ün kendisini istediyseniz, bunu temin etmem pek mümkün değil. Zira SAP kurulum CD’leri lisans sözleşmesi karşılığı müşterilere SAP’nin kendisi tarafından gönderilir. Bu tarz bir kurulumu (temiz biri kurulum dahi GB’larca yer kaplamaktadır) kopyalayarak veya bir başka yöntemle çoğaltmak ise yasa dışı bir hareket olacaktır. SAP’nin Gold Partner’ı olan bir firmada yazılım geliştirme yöneticisi pozisyonunda bulunan birinden böyle bir talepte bulunmadığınızı varsayacağım 😉

Yukarıdaki teknik ve lisans uyarılarım çerçevesinde SAP üzerinde çalışmalar yapmak istiyorsanız, SAP kullanan tanıdık bir firmanın test sisteminde çalışmanızı öneririm.

 

 

Access Üzerinde 3DES


veritabanı mantığı adlı kitabınızı zaten uğraştığım access işinde yanlış yapmamak için okuyorum. Uygulama geliştirmek yerine tablo yapılarımda sorun varsa gidermek istiyorum. belki biz çoğu zaman bir iş biterken öğrendiğimiz son şey o işe nasıl başlamamız gerektiğidir.

her şey iyi güzel çok gerekli bir şey sunucu üzerindeki *.mdb dosyalarımızdaki bilgileri başkalarının okuması ya da offline iken okunması. açma parolasını nirsoft ‘un ücretsiz yazılımı bile mükemmel buluyor ücretsizce access 2003’e kadar.

çok laf kalabalığı oldu biliyorum. sizden ricam kitabınızda kullanıcı şifrelerini 3DES ile şifrelemişsiniz. Ben de bunu uygulamak istiyorum bu konuda access içine yazacağım kod, yardımcı araç ya da farklı şeyler neledrdir? hangi kaynaklara başvurmalıyım?

Öncelikle iki kavramı birbirinden ayırmakta fayda var. Sizin .mdb dosyasına koymuş olduğunuz şifre, Access içerisindeki tablolarda değil, .mdb dosyasının başlığında bir yerlerde Binary olarak saklanmaktadır. Bu, oluşturmuş olduğunuz veritabanı tablolarından ziyade Microsoft Office’in bir özelliğidir. Dosyaya koyduğunuz genel şifreyi programlama yaparak güçlendirmeniz, benim bilgim dahilinde mümkün değildir.

Benim kitapta bahsetmiş olduğum şifreleme, veritabanı tablolarında sakladığınız hassas verileri şifrelemektir. Örnek olarak User – Password değerlerinin tutulduğu bir tablo vermiş olmam, sanırım bu iki kavramın karışmasına yol açmış sizin tarafınızda. Örnekteki tablo .mdb dosyasına konan genel şifreyi saklayan tablo değildir – zaten öyle bir tablo da yok, dosyanın genel şifresi (az önce de belirttiğim gibi) tablolarda değil dosyanın içerisinde Binary olarak saklanır. Örnekteki User + Password, (örneğin) bir Web sitesinin üyelerine ait User + Password değerleri olabilir – yani Microsoft Office’in bir özelliği olmaktan ziyade, Access üzerinde geliştirmiş olduğunuz uygulamaya ait değerlerdir.

Aynı şekilde; veritabanı tablolarındaki kredi kartı numaralarının da şifrelenerek saklanması gerekir. Buna benzer diğer hassas bilgiler de şifrelenerek saklanmalıdır. Ama bunun, .mdb dosyasının genel şifresiyle bir ilgisi yoktur. .mdb dosyalarının genel olarak şifrelenmesi, sizin de işaret ettiğiniz gibi, Access 2007 itibariyle daha güçlü bir hale geldi. Access sürümünüzü yükselterek bu konudaki güvenliğinizi arttırabileceğinizi düşünüyorum – ama yine de Access 2007’yi kırabilen programların olup olmadığını bir araştırmakta fayda var.

Eğer kullanıcı bazlı erişim kontrolü (yani kim hangi tabloya erişebilir, kim okuyabilir, kim yazabilir) gibi bir ihtiyacınız varsa, Access yerine Microsoft SQL Server veya Oracle gibi daha kapsamlı bir RDBMS ürünü kullanmanızı tavsiye ederim. Bu ürünlerdeki erişim kısıtlama ve güvenlik özellikleri Access’e kıyasla çok daha güçlüdür. Access daha ziyade ufak tefek işlerde kullanmak üzere hazırlanmıştır. Microsoft SQL Server Express Edition’a bir göz atmanızı tavsiye ederim – bildiğim kadarıyla kişisel kullanım için ücretsiz; ama kurumsal amaçla kullanacaksanız lisans şartlarını bir okuyun, sonradan lisans ihlali yapmış olmanızı istemem. Yine kişisel kullanım için ücretsiz olan MySql’i de inceleyebilirsiniz; bu ürünü sadece 1-2 kez kullandığım için lisans şartlarını ve kullanıcı bazlı yetkilendirme konusundaki yeteneklerini tam bilmiyorum.

Bir access tablosu içerisindeki verilerin nasıl şifreleneceğine gelince… Uzun yıllardır SQL Server / Oracle / Lotus Notes dışında veritabanı kullanmamış olmamın yanı sıra, bugüne kadar Access’i sadece bir veri dosyası gibi kullandım, Access’in kendi geliştirme araçlarını kullanarak uygulama geliştirme ihtiyacım hiç olmadı. Yani; Access dosyasında tablolarım duruyor – işin uygulama kısmını ise .NET veya Java gibi ayrı bir platformda yapıyorum. Bu platformda geliştirdiğim uygulama, Access veritabanıyla sürekli etkileşim halinde olup gerekli yerlerde okuma / yazma işlemlerini yapıyor. Dolayısıyla, 3DES Encoding / Decoding işlemlerini de uygulamayı geliştirdiğim platform üzerinde hallediyorum. Yani veritabanı seviyesinde bu tarz bir işi hiç yapmadım. Bu durumda; tablolarınızdaki verileri şifrelemek istiyorsanız veri okuma / yazma kısmı için Java / .NET ile geliştirme yapmanızı tavsiye edeceğim. Access içerisinde böyle bir iş doğrudan yapılabilir mi diye merak ediyorsanız, bu sorunun cevabını bilmiyorum çünkü hiç denemedim. Eğer SQL Server, Oracle, MySql gibi bir ürün kullanmaya karar verirseniz; yine bu ürünlerin kendi şifreleme fonksiyonları olup olmadığını araştırabilirsiniz.

Ancak; güvenlik açısından, herhangi bir ürünü / algoritmayı olduğu gibi kullanmak pek tavsiye edilmez. Mesela bugüne kadar 3DES’i olduğu gibi kullandığımı hiç hatırlamıyorum. Genelde 3DES’i temel alıp, algoritmayı biraz değiştirerek (üzerine ek 1-2 işlev daha katarak) kullanıyorum. Böylece hem 3DES’in gücünden faydalanıyor, hem de 3DES’i kırmak üzere yazılmış standart programlara karşı nispeten güvende olduğumdan emin olabiliyorum. Bu mantıkla hobi anlamında geliştirmiş olduğum örnek bir algoritmayı http://www.codeplex.com/milkshake adresinde inceleyebilirsiniz, sanırım ne demek istediğimi daha net göreceksiniz. Bu tarz genişletmeler için yine Java / .NET tarzı bir platformda uygulama geliştirmeniz gerekecektir diye düşünüyorum.

CREATE DATABASE Permission Denied in Database ‘master’? Not Any More!

In Vista environment, when you run Microsoft SQL Server Management Studio Express and try to create a new database on your local instance (MACHINENAME\SQLEXPRESS), you might get the following error:

CREATE DATABASE permission denied in database ‘master’

The reason is; you are connecting to the database using Windows Authentication. If you start Management Studio Express the regular way, the program won’t have any Administrator privileges which are required to be able to create a new database.

You simply have to run Management Studio Express as administrator. Here is a step-by-step guide:

  • Close Management Studio Express
  • In the start menu, right-click the shortcut of Management Studio Express and select “Run As Administrator”
  • If Windows asks if you want to allow the program in admin mode, say “Yes”
  • Retry creating your database
  • Web Sitesindeki Veritabanı Nasıl Tespit Edilir

    Asp ile yazılan bir sayfada da SQL Injection tipi bir açık olma ihtimali var değil mi?

    Önemli olan kodun nasıl yazılmış oldugu sanırım?

    Ayrıca, login kısmı olan bir baska sitede, arkada mutlaka database kullanılmıştır diyebilir miyiz ?

    Kullanılıp kullanılmadıgını nasıl anlarız ? Kullanılmışsa, SQL veya Oracle olup olmadıgını anlama sansı var mı ?

    ASP, PHP, JSP; hangi teknoloji olursa olsun, veirtabanı kullanan ve QueryString’den aldığı değeri doğrudan doğruya sorguya dahil eden her Web sayfası SQL Injection’dan etkilenebilir. Önemli olan arkasındaki mimari.

    Login olan bir site %90 veritabanı kullanmıştır arkasında. %10’luk ihtimal; Hard Code girilmiş User değerleri veya XML, TXT gibi dosyalarda saklanan Login bilgileri olabilir. Ya da, bazı lokal intranetlerde Active Directory veya Domino Server tabanlı bir kontrol de olabilir; ama bu tarz kontrollere Internet ortamında bulacağın sitelerde rastlama ihtimali sıfıra yakın.

    Arkada çalışan veritabanı SQL Server mı Oracle mı (ya da MySql mi, PostGreSQL mi, Access mi, vs) anlamanın genel geçer bir yolu yok sanırım. SQL Injection ile zorlayıp çıkan hata iletilerinden tahmin yürütülebilir. Ya da, Hosting firmasının veritabanının IPsini biliyorsan, o IP’ye Oracle ve SQL Server portlarından (ezbere bilmiyorum) Telnet açmayı deneyebilirsin, Telnet açabildiğin portun veritabanını kullanıyordur. Daha basit bir yol; mesela SQL Server Manager ile o IP’ye bağlanmayı denersin, bağlanıp User sorduysa SQL Server’dır. Ama veritabanı IP’si, muhtemelen sitenin IP’sinden farklı olacaktır.

    Access`de Foreign Key

    kerem bey merhabalar

    kitabınızdan access çalışıyorum gerçekten de hiç bilmiyenler için sade ve
    zevk alınacak bir biçimde yazmışsınız. ama ben şunu anlayamıyorum:
    ilişkisel veri tabanı kurarken: siz şu ülke tablosunun ıd sini müşterinin
    id sine ülke_id ismiyle nasıl ekliyorsunuz. bayağı bir denedim beceremedim

    teşekkürler


    Ulke tablosunun ID`sini musteri tablosuna eklemek icin basit anlamda yapmaniz gereken ozel birsey yok. Musteri tablosunda INT tipinde ULKE_ID diye bir sutun yaratin, su asamada size yeter.

    Eger veritabani seviyesinde butunluk kontrolu saglayacak bir sekilde Foreign Key olarak yaratmak istiyorsaniz su adimlari izleyebilirsiniz:

  • ULKE tablosunu yaratin. ID alani anahtar olsun.
  • MUSTERI tablosunu yaratin. ID alani anahtar olsun.
  • MUSTERİ tablosuna ULKE_ID diye bir alan ekleyin. DATA TYPE kisminda `Lookup Wizard…` degerini secin ve acilacak olan sihirbazi takip edip ULKE tablosunun ID alanini secin.