
Unformatted text preview: 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Tüm Platformlar için Hızlı Uygulama
Geliştirme
Windows, Mac OS X,
Linux, iOS ve Android
Fesih ARSLAN
Ocak 2019 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Tüm Platformlar İçin Hızlı Uygulama Geliştirme
Fesih ARSLAN Birinci Baskı
ISBN
Yayıncılık Sertifika No
Kapak Tasarım
Sayfa Düzeni
Satış Sorumlusu
Baskı
Tel
Matbaa Sertifika No Ocak 2019
978-605-80936-1-4
42989
Nihat DOMUR
Uğur PARLAYAN
Torkum Bilişim Anonim Şirketi
İşkur Matbaacılık Sanayi ve Ticaret Limited Şirketi
Ağaç İşleri Sanayi Sitesi 1370. Sokak No:5
İvedik Organize / Ankara
0312 394 62 30
19371 Kitabın bütün yayın hakları Torkum Bilişim Anonim Şirketi’ne aittir. İlgili yönetim
kurulumuzun yazılı izni olmaksızın, kısmen veya tamamen alıntı yapılamaz, hiçbir şekilde
kopya edilemez, çoğaltılamaz ve yayımlanamaz. ANKARA
Mutlukent Mh. 2027. Sk. No:2 Beysukent Çankaya
Ankara 06800
T:+90 312 266 06 06
F:+90 312 266 06 07 İSTANBUL
Kanyon Ofis Binası Kat:6 Büyükdere Cad. No:185
Levent İstanbul 34394
+90 212 319 77 22
+90 212 319 76 00 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Bu kitabı, yazım sürecinde desteğini esirgemeyen eşime ithaf ediyorum. 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Teşekkür
Bu kitabın yazım sürecinde, bana destek olan ve sabır gösteren eşime ve çocuklarıma
teşekkür ederim. Kitabın yayım sürecinde maddi ve manevi desteklerini esirgemeyen BTG
(Bilgi ve Teknoloji Grubu) kurucu ortaklarından Yücel TEPEKÖY ve Sadi TEPEKÖY’e, “Veri
Tipleri, Kapladıkları Alanlar ve Pointer’larla İlişkileri” bölümünü yazan,
platform yöneticilerimizden Tuğrul HELVACI’ya, tasarım ve sayfa
düzeni işlemlerinde yardımcı olan Uğur PARLAYAN’a, kapak tasarımı için Nihat DOMUR’a,
içerik düzeltmeleri için değerli zamanını ayıran Erdoğan BAKIR’a, ve adlarını burada
sayamadığım tüm dostlarıma teşekkür ederim. Fesih ARSLAN 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Kitap Kimlere Hitap Ediyor
Elinizdeki bu kitap, tek bir kaynak kod ile Windows, OS X, Android, iOS veya Linux sunucu
uygulamaları geliştirmek ve bu alanlarda uzmanlaşmak isteyen herkese hitap ediyor.
Kitabımız başlangıç seviyesindeki yazılım severlere hitap etmesine rağmen, yeni bir
teknoloji olan Multi-Platform mimarisini öğrenmek ve uzmanlaşmak isteyen tüm
geliştiriciler için ise bir kılavuz niteliği taşımaktadır. Kitap İçeriği, Kaynak Kodlar
Günümüzde birçok yazılım dili veya editörü, yalnızca tek bir hedef platform üzerinde
uygulama geliştirmeye müsaittir. Bu kitapta ise “Tek bir kaynak kod ile tüm hedef
platformlarda uygulama geliştirmenin” temelleri öğretilmektedir. Bu kapsamda MultiPlatform (masaüstü, mobil ve benzeri tüm ARM cihazlar) uygulama geliştirme prensipleri
ve hedef platform hassasiyetleri ilgili konu başlıkları altında detaylı olarak anlatılmıştır.
Anlatımları güçlendirme ve konuları daha iyi kavrayabilmek için birçok yerde sıkça ekran
görüntüsü kullanılmış ve farklı örnek uygulamalarla desteklenmiştir.
Kitapta anlatılan uygulama örneklerine, web sayfamızdan
ulaşabilirsiniz. Kitapta Kullanılan Terimler ve Kısaltmalar
RAD: (Rapid Application Development) Delphi yazılım geliştirme ortamının sembol sloganı
haline gelmiş, hızlı uygulama geliştirme manası taşmaktadır.
VCL: (Visual Component Library) Delphi görsel bileşen setlerini ifade etmektedir. Daha çok
Windows platformuna özgü geliştirilen uygulama tipini ifade etmektedir.
FMX: (FireMonkey) Multi-platform mimarisini ifade etmektedir.
İçerik menüsü: Sağ tuş ile ortaya çıkarılan menüdür.
IDE: (Integrated Development Environment) Geliştiricinin hızlı ve kolay bir şekilde yazılım
geliştirebilmesini amaçlayan ve bu süreçleri eklentiler ile organize edebilen tümleşik
geliştirme ortamını ve program arayüzünü ifade etmektedir.
$(BDS): Delphi kurulum klasörünü ifade eden ortam değişkenidir.
Örneğin C:\Program Files (x86)\Embarcadero\Studio\19.0
SDK: (Software Development Kit) Donanım ve yazılım geliştiricileri için sunulan ve
içerisinde birçok hazır metod barındıran yazılım geliştirme araçlarının tümüdür.
NDK: (Android Native Development Kit) Android platformuna özgü doğal bileşen
kütüphanesini ifade etmektedir.
API: (Application Programming Interface) Birçok kaynakta Uygulama Programlama
Arayüzü olarak nitelendirilir. Bir uygulamaya ait fonksiyonların başka uygulamalar
tarafından kullanılabilmesi için paylaşılan ortak arayüzdür.
PAServer: (Platform Assistant Server) Multi-platform yazılım geliştirmek için kullanılan bir
ara yazılımdır. 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. AdMob: Mobil reklamcılık sektöründe faaliyet gösteren Omar Hamoui tarafından
kurulmuş Google’a bağlı bir şirkettir. AdMob sözcüğü, mobilde reklamcılık anlamındaki
"Advertising on mobile"in birleştirilerek kısaltılmasından gelmektedir.
UI: (User Interface) Son kullanıcının erişebileceği tüm görülebilen bileşenleri ifade eder.
GUI: (Graphical User Interface) UI gibi son kullanıcının erişebileceği daha çok görülebilen
vektörel ve grafiksel bileşenleri ifade eder.
GPU: (Graphichs Processing Unit) Grafiksel işlemlerin yorumlandığı merkezi işlem
birimidir.
SOA: Sunucu – istemci veya benzeri birçok ara yazılım veya katmanların yer aldığı servis
odaklı mimarilerdir.
SOAP: (Simple Object Access Protocol) Sunucu - İstemci prensibi ile çalışan bir web servis
protokolüdür.
RDBMS : (Relational Database Management System) İlişkisel veri tabanı yönetim sistemini
ifade eder. Veri tabanı üzerindeki tüm bileşen ve objeler arasında bir ilişkinin olduğu
sistemlerdir. Oracle, MS-SQL Server, Firebird, PostgreSQL ve daha birçok veri tabanı
bunlara örnek olarak verilebilir.
DBA: DataBese Administrator olarak nitelendirilen veri tabanı uzman yöneticileridir. 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Yazar Hakkında
Fesih ARSLAN, ilk, orta, lise ve üniversite eğitimlerini Erzurum’da tamamlamış, Lise
öğrenimini Erzurum Atatürk Endüstri Meslek Lisesi’nde Teknik Lise Bilgisayar
Bölümü’nden, üniversite öğrenimini ise Atatürk Üniversitesi Ziraat Fakültesinden mezun
olarak tamamlamıştır. Yazılım dilinin temellerini 1993-1996 yılları arasında Turbo Pascal
ile atmış olup, 2002 yılından bugüne kadar Emniyet Mensubu olarak görevine devam
etmektedir. Delphi yazılım dili ile aktif olarak uygulamalar geliştirmekte olup, yazdığı proje
ve makalelerini, kurucusu olduğu, platformunda yayınlamaktadır.
Yazılım eğitmeni olan yazarımız, daha önce birçok defa “Temel Seviye Yazılım ve
Algoritma” kursu vermiştir. Ayrıca Siber ve Adli Bilişim Suçları alanında birçok eğitim ve
kurs almış ve almaya devam etmektedir.
Çalışmış olduğu bazı projeleri; kurumsal sorgulama uygulamaları, Forensic uygulamaları,
RF teknolojileri ile uzaktan kontrol sistemleri (Erken Uyarı Sistemleri ve Merkezi Isı
Yönetim Sistemleri gibi), beacon teknolojileri ile mikro lokasyon mimarileri, personel
devam kontrol ve geçiş noktalarının yönetimi gibi daha birçok IoT projelerde proje
yöneticisi veya geliştirici olarak görev almıştır. Fesih ARSLAN 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Önsöz
Yazılım teknolojilerinin gelmiş olduğu son noktayı ve bunların önemini daha iyi anlama
adına; Delphi ve Object Pascal ile yıllardır uygulama geliştiren, dağıtımını yapan çok
değerli abi ve hocalarımın ve Embarcadero Delphi geliştiricilerinin kaleminden birer
önsözün, bu kitapta yer almasının uygun olacağı kanaatindeyim. Tuğrul HELVACI
Öncelikle, sevgili arkadaşım Fesih ARSLAN’a bana vermiş olduğu bu imkândan ötürü ve
daha da önemlisi Delphi camiasına yaptığı ve yapmaya devam ettiği tüm emeklerinden
ötürü çok teşekkür ederim.
Delphi; 1995 yılında Turbo Pascal ürününün devamı olarak üretilmiş, Object Pascal tabanlı
bir dil ve geliştirme ortamıdır. Delphi; tamamiyle güvenli ve güçlü bir tip sistemi ile
donatılmış, olay güdümlü, nesneye yönelik programlamanın tüm özelliklerini
kullanmanıza izin veren, yazdığınız uygulamaların bir başka kütüphaneye yada harici
kaynağa bağımlı olmadan tamamen native çalışabilmesine olanak tanıyan, içinde modern
programlama dillerinin olmazsa olmazlarını barındıran (anonymous methods, generics,
operator overloading, class & record helpers, abstract, sealed, nested classes vb..) ve
yazdığınız kodu birden fazla hedef platform için (Windows, Linux, Mac OS, Android, IOS)
tek bir hareket ile derleyebileceğiniz tutarlı, hızlı bir programlama ortamıdır.
Neden Delphi?
Bu sorunun yanıtı kişiden kişiye değişir elbette. Her insan için, dili kendisine sevdiren
unsurlar farklı farklı olabilir. Delphi’nin mükemmel olduğunu iddia edebilmem için,
piyasadaki tüm dilleri biliyor ve kullanıyor olmalıyım. Ancak maalesef bu mümkün değil.
Lâkin yeterince dil bilen ve gerektiği zaman kullanabilen birisi olarak, Delphi’de kod
yazarken her daim kendimi evimde gibi hissettiğimi söyleyebilirim.
PEKİ BEN DELPHI’Yİ NEDEN SEVİYORUM? RAD (Rapid Application Development-Hızlı uygulama geliştirme) konseptinin ilk
sahibi ve başarılı uygulayıcısı olması münasebeti ile.
Object Pascal’ın sade ve anlaşılır dil yapısı nedeni ile.
Delphi ile ilgili çok profesyonel ve tatmin edici component’lerin mevcudiyeti ve
çok tecrübeli bir topluluğa sahip olması nedeni ile.
Dilin, programcıları karmaşadan uzak tutmak için uyguladığı mükemmel
tasarımı nedeni ile.
İstediğim an Delphi’nin her türlü kütüphanesine bakıp kaynak kodlarını
inceleyebildiğim için. (Compiler’ın kodu hariç, hemen her şey açık kaynak)
Düşük seviye programlamaya ihtiyaç duyduğum an, hız lazım olduğunda,
projelerimin içinde Assembly dilini kullanabildiğim için.
Üretilen tüm çıktıların native olmasından, dolayısı ile uygulamanın çalışabilmesi
için harici hiçbir kaynağa ihtiyaç duymamasından ötürü. (Örneğin .Net
Framework’ün varlığına ya da harici DLL’lere ihtiyacı yoktur) 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Çok hızlı derleyebildiği için.
İşletim sistemi API’lerinin çok büyük çoğunluğunun tanımlarına sahip olduğu ve
ilgili API’leri kullanmak için ekstra tanımlar yapmaya gerek olmadığı için.
Pointer’ların gücünü kullanmama izin verdiği için.
Windows Servis Uygulamaları, Konsol Uygulamaları, Web Serverlar, Web
Servisler, ActiveX’ler, COM tabanlı uygulamalar, 3 ve daha fazla katmanlı
uygulamalar, REST servis uygulamaları, GUI uygulamaları, DLL’ler, Control Panel
Uygulamaları, Android Servisleri vb. birçok uygulama türünü çok kolay ve hızlıca
geliştirebilmeye imkân tanıdığı için.
Kodu bir kere yazıp, aynı kodu; Windows, Linux (şu an sadece konsol ve servis
desteği), Mac OS, Android ve IOS için tek bir hamlede derleyebilmenin verdiği
haz ve kazandırdığı zaman için. Bu ve buna benzer maddeler çoğaltılabilir. Kimi programcılar için bu maddeler arasında
“olmazsa olmaz” lar vardır; kimileri için de “eh işte” ler. Elbette tercih sizlerin. Ben bir dil
fanatiği değilim asla. Gerektiğinde gereken dili ve platformu kullanmayı severim. Bu
nedenle birçok dil ve platform kullanmışlığım vardır. Ama samimi olarak şunu
söyleyebilirim ki; Delphi’nin kapsama alanının dışına çıktığımda, Delphi’yi ve bana verdiği
nimetlerin değerini daha çok anlıyor ve onu özlüyorum. Evet dediğim gibi bir fanatik
değilim belki ama kısaca bir Delphi aşığı sayılabilirim. Size aşığı olduğum dili çok kısaca
özetleyebilirim sadece, fazlası için yerim yok. Umut ederim ki, sizler de inceleyince
sevecek ve belki de âşık olacaksınız ben ve benim gibi binlerce programcı gibi.
Sizlere bu satırlar vasıtası ile söyleyebileceğim son sözüm, her zaman sistem kaynaklarına
yakın olan programlama dilleri ile ilgilenmeye gayret edin. Düşük seviye programcılık,
ülkemizin geleceği için çok önemli. Evet, hayatımızı idame ettirebilmek için düşük seviye
diller çok da önemli değil gibi görünüyor. Ancak devletler için çok büyük bir öneme sahip.
Bir gün, sizlerin arasından birisinin ilk Türk işletim sistemini yazdığını, savunma sanayimiz
için düşük seviye yazılımlara imza attığını, kendi firewall’umuzu, kendi virüs tarayıcımızı
yazdığını görmek ben ve benim gibi milyonlarca insan için bir gurur vesilesi olacaktır.
Programlama hayatınız başarı, eğlence, tatmin ve öğrenmeye açlık ile geçsin. Yolunuz
aydınlık olsun. Tuğrul HELVACI Yazılım Uzmanı 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Yücel TEPEKÖY 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. Since over 20 years ago, Delphi has been
a fantastic tool for Windows developers,
who wanted to have the power of a
modern object-programming language
combined with the fast development
offer by RAD visual programming and an
integrated IDE. Over the last few years,
Delphi has gone way beyond its Windows
focus: while extended to remain the best
tool for WIndows 10 development, it has
added support for mobile platforms
(both iOS and Android), cross-platform
client development, and also server side
development on both Windows and
Linux. The product today offers a wide
range of capabilities, supports 5
operating systems and ships with 8
different compilers for an extended and
modern language. Marco Cantu
Delphi, 20 yılı aşkın bir süredir, görsel
programlama ve entegre bir IDE
tarafından sunulan hızlı geliştirme ortamı
ile birlikte modern bir nesneprogramlama dilinin gücüne sahip olmak
isteyen Windows geliştiricileri için harika
bir araç olmuştur. Delphi, son yıllarda
Windows odaklı yazılım geliştirmenin
ötesine geçmiştir: Windows 10 yazılım
geliştirme için en iyi araç olma statüsünü
korurken, mobil platformlar (hem iOS
hem Android), çapraz platform istemci
uygulamaları geliştirme, ayrıca Windows
ve Linux için sunucu geliştirme desteği
eklenmiştir. Ürün şu anda çeşitli özellikler
sunmaktadır; genişletilmiş ve modern bir
dil için 8 farklı derleyici ve 5 işletim
sistemini desteklemektedir. While this is great, it does pose a
challenge for both new developers
approaching it and old developers who
have not followed the recent extensions,
the support for new libraries and new
platforms.
Tackling
a
complex
development tool in an increasing
diverse scenario is a challenge that
becomes much easier with great
resources such as this book Fesih Arslan
has written to help master today’s Delphi
-- unlike my own old Mastering books
written over 10 years ago and focused on
yesterday’s product. Ürün bu aşamaları kaydederken hem
arkasından gelen yeni geliştiricilere hem
de yeni kütüphaneler ve yeni platformlar
için son zamanlarda ortaya çıkan
eklentileri
takip
etmeyen
eski
geliştiricilere meydan okuyor. Giderek
çeşitlenen bir durumda karmaşık bir
geliştirme aracını çözmek, benim 10 yılı
aşkın süre önce yazdığım ve geçmişte
kalan ürüne odaklanan uzmanlaşma
kitaplarımın aksine, Fesih Arslan'ın şu
anki Delphi'de uzmanlaşmaya yardımcı
olmak için yazdığı bu kitap gibi muazzam
kaynaklarla kolaylaşan bir zorluktur. The book does a great job putting at the
Delphi
and
FireMonkey
mobile
development at the center of the focus.
It does this while covering all of the
elements of Delphi development, the IDE
and the visual designers, the code editor,
the structure of a Delphi project, and in
general on multi-device development. Bu kitap, Delphi ve FireMonkey mobil
uygulama geliştirmeye odaklanması
yönüyle harika bir iş yapar. Kitap; Delphi
ile
uygulama
geliştirmenin
tüm
esaslarına, yazılım geliştirme ortamına
(IDE) ve görsel tasarlayıcılara, kod
editörüne, Delphi proje yapısına ve genel
olarak çoklu cihaz geliştirmeye değiniyor. 2020-05-09; 13:54:47; Bu kopya yalnızca erol altekin adına lisanslıdır.
Lisans sahibi, yayıncı (Torkum Bilişim A.Ş.)'nin resmi yazılı izni olmadan kitabın tamamını veya bir bölümünü çoğaltmamayı, Internet üzerinden yayınlamamayı, satmamayı, başka bir kişiye/kuruma aktarmamayı kabul eder. The real focus is on FireMonkey mobile
components, for example going in depth
on the fundamental ListView controls,
but also covering components like
address book and map, device sensors
and GPS, FMX effects, and the
notification system, including the fairly
complex push notification mechanism.
There is also a nice section on data access
covering SQLite and FireDAC, and a final
chapter on Linux, helping creating the
backend for your mobile applications. Kitapta asıl olarak FireMonkey mobil
uygulama bileşenlerine odaklanmıştır,
örneğin temel ListView bileşeni hakkında
detaylı bilgiler yer almakta ayrıca, adres
defteri ve harita, cihaz sensörleri ve GPS,
FMX efektleri ve bildirim sistemleri ile
oldukça karmaşık bir anlık bildirim
mekanizması gibi hususlarda da bilgi
verilmektedir.
Kitapta
SQLite
ve
FireDAC'e ilişkin veri erişimi hakkında da
güzel bir bölüm bulunmaktadır. Kitabın
son bölümü ise Linux hakkındadır; mobil
uygulamalarınız için arka uç oluşturmaya
yardımcı olacaktır. A book with this breadth of coverage is
certainly going to help you understand
where Delphi is today and the power it
brings to mobile, multi-device and multitier development. The IT world is
changing fast and mobile platforms
offers a completely new opportunity and
challenge, with the ability to deploy
applications to millions of users in a
seamless way. Böylesine kapsamlı bir kitap Delphi'nin
bugünkü durumunu ve mobil, çoklu cihaz
ve çok katmanlı uygulama geliştirme
ortamının sağladığı yararı anlamanıza
yardımcı olacaktır. BT dünyası hızla
değişiyor ve mobil platformlar, sorunsuz
bir şekilde milyonlarca kullanıcıya
uygulamalar sunarak tamamen yeni
fırsatlar sağlıyor ve adeta meydan
okuyor. Delphi is ready to take the challenge of
today’s development world, are you also
ready? If not this book is going to help
you get there and be ready for the future.
Have a great reading. Delphi, Piacenza, Italy, July 2nd 201...
View
Full Document