Yazar arşivleri: Uğur Özşahin

Postacı Programı Kullanıma Hazır

Published / by Uğur Özşahin / Leave a Comment

Oldukça uzun zaman oldu yazmayalı. Son geliştirmiş olduğum, “Postacı” adını verdiğim programı ve kaynak kodlarını paylaşıyorum. Dileyen kodları inceleyebilir.

Programın çalıştırılabilmesi için .NET Framework 3.5’un bilgisayarınızda kurulu olması gerekmekte.

Postacı’yı C# 3.0 ile geliştirdim. Kaynak kodların, C# ile uğraşan arkadaşların ilgisini çekebileceğini düşünüyorum. Özensiz kodlamadan dolayı kusura bakmayın 🙂 Elimden geldiğince yorum satırlarında kod bloklarının ne işe yaradıklarına dair ipuçları vermeye çalıştım.

Program kısaca şu işi yapıyor, program aracılığı ile oluşturmuş olduğunuz mail listesinin hepsine birden toplu mail gönderim işlemini gerçekleştirebiliyorsunuz.

Gönderim işleminin başarılı olması için Smtp ayarlarını yapmanız gerekmekte,

Örnek : Gmail için SMTP ayarları

SSL : True

Port : 587

Kullanıcı Adı : ornek@gmail.com

Şifre : Şifreniz

Eksik bulduğunuz yönleri veya karşılaştığınız hataları bana bildirebilirseniz, en kısa sürede gerekli düzenlemeleri yapmaya çalışırım. Güle güle kullanın.

Kurulum dosyaları :
Postacı Installer

Kaynak kodları :
Postacı Source Code

Taşınabilir ASP Web Server

Published / by Uğur Özşahin / Leave a Comment

ASP ile arada sırada da olsa uğraşmak zorundayım ve sistemime attığım formattan sonra IIS kurmak istemediğimden bir ASP Server arayışına girdim. Önceden bildiğim, ancak kurulumunu fazla çetrefilli ve gereksiz bulduğum abyss web server (Hem ASP, Hem PHP desteği mevcut) için Eburhan’ın yazısı dikkatinizi çekebilir. Farklı bir ASP Web Server arayışım sonucu karşıma taşınabilir Baby Web Server programı çıktı.

Baby ASP Web Server ’da %100 ASP desteği maalesef söz konusu değil. Ancak bir parça da olsa işinizi görebilir. Programın boyutu da oldukça küçük. Eksikliğini çekebileceğinizi düşündüğüm en büyük yanı ise hata sayfalarını kullanamamanız. Özellikle SEO (Arama Motoru Optimizasyonu) destekli projelerinizde sıkıntı çekebilirsiniz (Anlamlı Linkler). Ayrıca dikkatimi çeken bir başka noktada access veritabanından dönen boolean değerlerin true yada false yerine sırası ile -1 ve 0 değerlerini döndürmesi. Bunun dışında eksiklikleri de var olabilir, incelediğim birkaç dakika içerisinde yalnızca bu eksiklikler ve farklar dikkatimi çekti. Desteklediği özelliklerden bazıları ise şunlar: Request, Response, Server, QueryString ve Form collections, Global.asa, Session ve Application Nesneleri, vb.

Programın ayarlar menüsünden, localhostunuz için port numarasını, web sayfalarınızın bulunduğu fiziksel klasörün konumunu, default sayfa tipini ve session süresini değiştirebilirsiniz. Dilerseniz sistem her yeniden başladığında server’ın otomatik olarak aktif olmasını da sağlayabilirsiniz.

Download : Baby ASP Web Server 2.7.2

Baby Web Server ’ın en sevdiğim yanları ise Portable (Taşınabilir) ve boyutunun sadece 220KB olması. Açıkçası artık ASP üzerinde (.NET i kastetmiyorum) fazla durmak istemediğimden, Baby Web Server sadece eski projelerimin idaresi için tam anlamı ile olmasa bile yeterli olacaktır. Tabii bu biraz elimdeki siteleri çok detaylı kodlamamış olmam ile de alakalı bir durum. Aşağıdaki listeden Baby web Server ’ın hangi ASP kodlarını desteklediğini,  hangilerini desteklemediğini inceleyebilirsiniz.

Baby ASP Web Server desteklediği objeler/methodlar/özellikler:

Request Object
Request.ClientCertificate: Hayır
Request.Cookies: Evet
Request.Form: Evet
Request.QueryString: Evet
Request.ServerVariables: Evet

Request.TotalBytes: Evet
Request.BinaryRead: Evet

Response Object
Response.Cookies: Evet

Response.Buffer: Evet
Response.CacheControl: Evet
Response.Charset: Hayır
Response.CodePage: Hayır
Response.ContentType: Evet
Response.Expires: Evet
Response.ExpiresAbsolute: Evet
Response.IsClientConnected: Evet
Response.Status: Evet

Response.AddHeader: Evet
Response.AppendToLog: Evet
Response.BinaryWrite: Evet
Response.Clear: Evet
Response.End: Evet
Response.Flush: Evet
Response.Redirect: Evet
Response.Write: Evet

Session Object
Session.Contents: Evet
Session.StaticObjects: Hayır

Session.CodePage: Hayır
Session.LCID: Hayır
Session.SessionID: Evet
Session.Timeout: Evet

Session.Abandon: Evet
Session.Contents.Remove: Evet
Session.Contents.RemoveAll: Evet

Events
Session_OnEnd: Evet
Session_OnStart: Evet

Application Object
Application.Contents:Hayır
Application.StaticObjects: Hayır

Application.Contents.Remove: Hayır
Application.Contents.RemoveAll: Hayır
Application.Lock: Hayır
Application.Unlock: Hayır

Events
Application_OnEnd: Hayır
Application_OnStart: Hayır

Server Object
ScriptTimeout: Evet

createObject: Evet
Execute: Evet
GetLastError: Hayır
HTMLEncode: Evet
MapPath: Evet
Transfer: Hayır
URLEncode: Evet

Global.asa
Application_OnEnd: Evet
Application_OnStart: Evet
Session_OnEnd: Evet
Session_OnStart: Evet
<OBJECT> Declarations: Hayır
TypeLibrary Declarations: Hayır

Portable VirtualBox 1.6.2

Published / by Uğur Özşahin / Leave a Comment

VirtualBox, kısaca şöyle açıklayabilirim: Sanal PC yönetim programı. Bilgisayarınızın donanım özelliklerini paylaşarak kullanan birden fazla Sanal PC nin yönetim ve kullanımını bu program sayesinde gerçekleştirebilirsiniz. Doğrusunu söylemek gerekirse bu portable (Taşınabilir) program modası beni fazlası ile sardı. Hemen her programın portable versiyonunu bulmak mümkün ve benim düşünceme göre bu programlar kurulum gerektiren versiyonlarına göre çok daha fazla avantajlılar. Daha fazla söze gerek yok. Portable VirtualBox programına ihtiyacı olan arkadaşlar, aşağıdaki linkten programı indirip bilgisayarlarında sorunsuz bir şekilde kurulum gerektirmeden çalıştırabilir ve kullanmaya başlayabilirler. Not: En azından Service Pack 3 yüklü XP sistemimde sorunsuz bir şekilde çalıştırabildiğimi söylemeliyim. Diğer Windows sistemlerinde test etme fırsatım olmadı. İndirmek için aşağıdaki linkleri kullanabilirsiniz.

32Bit => Portable VirtualBox 32Bit

64Bit => Portable VirtualBox 64Bit

32Bit ve 64Bit Birarada => Portable VirtualBox 32Bit and 64Bit

Düzenleme : İndirdiğiniz dosyalar Portable Apps Menu ile uyumludur. Dolayısı ile USB Portable Set ’inize kolaylıkla dahil edebilirsiniz.

PHP ile E-Mail Geçerlilik Kontrolü

Published / by Uğur Özşahin / Leave a Comment

    Bugün yine kod yazarken PHP nin yeni fonksiyonlarından birini öğrendim. Fonksiyon filter_var fonksiyonu, filter_var() PHP 5.2.0 ve üstü sürümlerde kullanılabilir durumda. Önceleri bu işi regular expression (Düzenli İfadeler) ile pek güzel yapabiliyorduk. Artık düzenli ifadeleri e-mail geçerliliği için kullanmaya son. Bundan sonra filter_var() ile işimizi halledebileceğiz.

    Daha fazla uzatmadan hemen e-mail geçerlilik kontrolü için örnek bir kod yazıyorum.


    İşte fonksiyonun kullanımı böyle. filter_var fonksiyonu hakkında daha fazla bilgiye linke tıklayarak ulaşabilirsiniz. FILTER_VALIDATE_EMAIL referansı yerine örnek olarak FILTER_VALIDATE_URL referansı ile URL geçerliliğini test edebilir yada FILTER_VALIDATE_IP ile de IP geçerliliğini kontrol edebilirsiniz. Kullanabileceğiniz diğer filtreler için PHP Filter Reference sayfasına göz atabilirsiniz.

MySQL Türkçe Karakter İlk Harf Sıralaması

Published / by Uğur Özşahin / Leave a Comment

    PHP ve MySQL e geçiş sürecim ve bu konulardaki eksikliklerim gün geçtikçe kapanıyor. Ancak sancılı bir dönem olduğu en azından benim için gün gibi ortada. Her yazdığım koddan sonra yada yazmak istediklerim için araştırmaya girişmek beni yavaşlatan başlıca sebeplerden. Fakat ilk kompleks projemi bu şekilde hazırlıyor olmamın çok önemli bir nedeni var. Yıllarca WEB konusunda VB Script ve Access veritabanı ile uğraşmış biri olarak, PHP ve nimetlerinden yararlanmanın tek yolunun bu şekilde kodlama yapmaktan geçiyor olması. Çünkü daha önce PHP ile ilgili her ne kadar bir kitap bitirmiş olsamda, düzey bakımından kesinlikle ihtiyacımı karşılayabilecek seviyede değildi. Dedim ya basit PHP kodlamalarımı belki bu kitap sayesinde yaptım, ancak işin içine daha özgün ve karmaşık yapılar girdiğinde, muhtemelen hiç bir kitap ihtiyaçları karşılayacak yeterliliğe sahip olmuyor.

    Başlıkta anlatmak istediğimi kısaca daha anlaşılabilir biçimde açıklayayım. PHP ve MYSQL ile yapmak istediğim şu, öncelikle elimde bir tablom ve listelemem gereken verilerim var. Listeleme koşulum ise her verinin baş harfinin, alfabetik bir düzen içerisinde web sayfasında görüntülenmesi. Örnek vermek gerekirse, ziyaretçi ’A’ harfine göre listeleme yapmak istediğinde, sonuçlar içerisinde yalnızca ’A’ ile başlayan verinin görüntülenecek olması. Aslında yapmak istediğim şey son derece basit ki, zaten istediğimi bir parçada almış olmama rağmen, işin içine Türkçe karakterle başlayan veriler girdiğinde sonuç beklentilerim ile uyuşmuyordu. Yine örnek verecek olursam, ’İ’ harfine göre bir listeleme yapmak istediğimde, liste içerisinde ’I’ ile başlayan verilerde yer alıyordu. Neyse ki sorunun çözümünü yine kendim buldum. Aslında tüm sıkıntı veritabanında yer alan tabloların kendine has özelliklerinden kaynaklanıyormuş. Prensip olarak tablo karakter setlerini ’utf8’ olarak belirlerim. Collation (Karşılaştırma) değerini ise ön tanımlı olan ’utf8_general_ci’ olarak bırakırdım. İşte hata tam olarak bu noktada başlıyor, Collation özelliğini ön tanımlı olarak bırakmak yerine ’utf8_turkish_ci’ olarak ayarlamamın istediğim sonucu sağladığını gördüm. Ancak belirtmeliyim ki, ’utf8_turkish_ci’ ayarı, uluslararası projelerde neler götürür kestiremiyorum. Bu yüzden sanırım, yabancı dilde hazırladığım sitelerde ’utf8_general_ci’ yada ’utf8_unicode_ci’ ayarlarını kullanmaya devam edeceğim.

Önemli Not: Yalnız bu değişikliği eğer fulltext indeks içerikli tablolarda yapmak isterseniz bazı hatalar ile karşılaşabilirsiniz. Bu yüzden öncelikle fulltext indeksleri kaldırmanızı ve Collation (karşılaştırma) ayarlarını yaptıktan sonra fulltext indeksleri tekrar tanımlamanızı öneriyorum.