Burak SARICA

Cloud computing, .NET, WPF vs.. Genelde teknik konular, bazen serzenişler..

Archive for Ekim 2006

PHP kurulumu ve “Sayfa bulunamıyor” hatası

with 5 comments

Ben.. PHP.. Durun iyiyim birşeyim yok. 😛

Arkadaşım Sertaç için bir blog düzenlemem gerekiyor. Ucuz hosting temin etmek için PHP kullanan blog seçenekleri tercih ettim. Veritabanına gerek duymayan bir blog motoru buldum. Adı Simple PHP Blog. Text dosyalarda tutuyor herşeyi. (konfigürasyon dahil, şifreler hariç 🙂 )

Neyse, bu blog motorunu Sertaç’ın istekleri doğrultusunda düzenlemek için makinama PHP kurayım dedim. Ivır zıvır ile uğraşmamak için de Installer ile kurmayı tercih ettim. Makinamda Microsoft Windows Server 2003 yüklü (Sağol MSDN). Kurulum bitti. EEE?? Çalışmıyor php? Makinama yaptığım php uzantılı isteklerin hepsi Sayfa bulunamıyor hatası veriyor tarayıcımda. Özel bir hata mesajı vermediğinden, ben bunaldım (bu bunaldım kelimesindeki n harfi genizden). Açtım IIS Manager’ı, php uzantısının ilişkilendirilmesini kontrol ettim. Doğru görünüyordu. Ama ne görüntü ne ses vardı PHP kanalında.

Çözümü kurcalayarak buldum, ne kadar doğru bilmiyorum ama 🙂

Web Service Extensions’a gidin. (IIS Manager da yine, en alttaki node.) Add a new Web service extension a tıklayın. Açılan pencerede sizden bu extension için bir isim ve gerekli dosyaları isteyecek. İsim olarak PHP girin mesela (ismin önemi yok). Gereken dosyalar bölümüne php.exe ve php4ts.dll dosyalarını seçip ekleyin tek tek (kurulum dizininizde olması gerek). OK demeden önce altta Set extension status to allowed isimli seçim kutusunu işaretleyin. Ve OK diyerek kaydedin. Sitenizi yeniden başlatın. Artık sunucunuz php uzantılı çağrılara cevap verecektir.

Merak ettiğim konu şu: PHP Installer ın bunu yapmasına imkân yok mu acaba? Neden kasıyoruz ki?

Reklamlar

Written by Burak SARICA

Ekim 24, 2006 at 11:26 am

Uncategorized kategorisinde yayınlandı

Internet Explorer 7

with 3 comments

Denemek için release olmasını beklemiştim. Tam release tarihini bilmiyorum, ama dün gördüm hemen download ettim. Kurdum, makinamı restart ettim. Açtım.

İlk göze çarpan özelliği önceki versiyonlarda hiç üstüne gidilmemiş bir özellik olan estetik. Belki fevkalâde süper bir tasarım değil, daha doğrusu böyle bir eleştirmen moduna girmeme lüzum yok estetik konusunda. Ama kesinlikle özen gösterilmiş bu belli.

Beta sürümlerinde çok eleştiri alan yavaşlık eleştirisini saçma buluyorum. Sebep olarak yavaş çalışan phising filter özelliğini gösteriyorlar. Phising yaşamayacağınıza güveniyorsanız neden bu özelliği açıp deniyorsunuz ki zaten? 🙂 Bu özellik contribution tarzında çalışıyor. Bi site phising amaçlı kullanılıyorsa, bunu farkedenler bu şekile raporluyor. Sonra bir başkası bu siteye girdiğinde, eğer IE7 kullanıyorsa bu raporları sorgulayarak girdiği sitenin güvenli olup olmadığını görebiliyor. Siz derseniz ki "arkadaş ben yemem phising mhising", o zaman kapatın bu özelliği ve görün olanları. Bence tarayıcının render hızı daha yüksek eski versiyona göre.

Tab olayını firefox popüler hale getirmişti sanırım. Gerçekten güzel bir özellik. IE7 bu güzel özelliğin arkasında kalmamış. Tab özelliğini kullanmak benim için ilk başta alışması zor idi. Ama git gide alışıyor insan. Ve kalabalık olmayan bir task bar güzel bir sebep tab page leri kullanmak için (task-bar için pencere gruplamayı sevmiyorum).

Şimdilik bu kadar, keşfettikçe aktaracağım güzel özellikleri.

Written by Burak SARICA

Ekim 20, 2006 at 11:52 pm

Uncategorized kategorisinde yayınlandı

Good For Nothing – geyik versiyon

with one comment

Good For Nothing (GFN) 1 saatte nasıl bir dinamik derleyici yazılır sorusunun cevabını veren bir PDC oturumu ürünü.

Buradan daha detaylı bilgi bulabilirsiniz.

Oluşturulan dilin özellikleri o kadar basit ki, döngü içinde adınızı n defa yazdırmanın ötesinde bişeyler yapmak güç. Aslında gerçekten merak ediyorum, en fazla ne yapılabilir bu dil ile.

Ama bir derleyicinin dünyasında neler olup bitiyor görmek için bence harika bir başlangıç.

Bekir ile muhabbet ederken, hadi bunu türkçeleştirelim dedik. Geyik olsun ama dedik, böyle biraz kayseri şivesi ile olsun dedik. Ortaya şöyle bir dil çıktı :

Degisik ntimes = 0;
YazAaa "Lütfern bir sayi giriniz : ";
OkuBaakhSayiyi ntimes;
Degisik x = 0;
DonSen x = 0 dan ntimes olanaKadarYap
   YazAaa x;
bitir;
YazAaa "Çok güzel, aferim demek istiyorum.";

 

Degisik  anahtar kelimesi Dim veya Var a denk geliyor. YazAaa ekrana yazdırıyor. OkuBaakhSayiyi kullanıcıdan tamsayı değeri alıyor.

DonSen .. dan … olanaKadarYap
     ….

bitir;

yapısı ise tahmin edersiniz ki for döngüsü.

 

Bu dilin başka hiçbir özelliği yok. Bu kadar. Sadece bu kadar. 😀

Yukarda verdiğim linkte bu kodun normal halini de bulabilirsiniz derleyicinin kodları içinde. loop.gfn olması lazım.

Written by Burak SARICA

Ekim 17, 2006 at 5:40 am

Uncategorized kategorisinde yayınlandı

Database upgrade ederken

leave a comment »

MS SQL Server 2000’den 2005 e bir veritabanını  taşıdınız. Taşıdığınız veritabanı 5166 diye bir login e aitti. Tüm nesnelerin owner’ı olarak 5166 görünüyordu. Yanlız 2000 versiyonunda bu nesnelerin ismi dbo.Nesne_adi şeklinde iken, 2005’te bir baktınız, 5166.Nesne_adi olarak görünüyor. Önceden gül gibi çalışan blogunuz da şu anda çalışmıyor (bu yeni isimleri ile nesneleri bulamadığı için).

ALTER schema_ismi TRANSFER eski_Schema_ismi.NesneIsmi

Komutu da çalışmadı bende çünkü sanırım eski_schema_ismi için 5166 ya iyi gözle bakmadı. (hayret, sen verdin bu ismi ben mi verdim)

Bu 2005 versiyonu için önerilen bir komut. Azmettim obsolete kalacağı için önerilmeyen, ama canavar gibi işimi halleden sistem stored procedure ünü buldum :

sp_changeobjectowner

(gören de tekerleği ben keşfettim sanacak 🙂 )

Neyse işte bu sp işimi halletti. Peki ama 100 tane stored procedure, 40 tane de tablo olan bir db için bu işi nasıl kolayca halledeceğiz?

Şöyle : (ÖNEMLİ NOT: Aşağıdaki kodu MS SQL Server 2005’te, kendi veritabanımda çalıştırdım. Bu çalışmaya girişmeden evvel de data ve log dosyalarımı yedekledim. Aşağıdaki kodun çıktısını kullanırken dikkatli olun. Çok bilinçli bir uyarı gibi olmadı bu belki ama tedbir güzel şey. :))

declare @OldOwner varchar(100)
declare @NewOwner varchar(100)
set @OldOwner = '5166'
set @NewOwner = 'dbo'

select 'EXEC sp_changeobjectowner ''['
			+ sys.Schemas.[Name]
			+ '].['
			+ sys.Procedures.[Name]
			+ ']'', '''
			+ @NewOwner
			+ ''''
FROM sys.Procedures,sys.Schemas
WHERE sys.Procedures.schema_id = sys.Schemas.schema_id
	AND sys.Schemas.[Name] = '5166'

Bu yukardaki SQL sonucunda oluşan satırların hepsini seçin, copy diyip bir query penceresine yapıştırın. Sonra @OldOwner ve @NewOwner değişkenleriniz ihtiyacınıza göre düzeltin (İhtiyacınıza göre lütfen! Başınıza iş açmayın :)). Çalıştırdığınızda stored procedure lerinizin ownerlarının değiştiğini göreceksiniz. Aynı işlemi tablolarınız için yapmak istiyorsanız sys.Procedures yerine sys.Tables yazın.

Böylelikle eski blogumu kurtarmış oldum. Tüm bu zahmetlere sabahın 5’inde eski blogum için katlandım yani. Orayı kullanmaya devam etmeyecek de olsam, yayında kalmasını istedim.

Bir bakın

İşte böyle 🙂

Written by Burak SARICA

Ekim 11, 2006 at 11:01 pm

Uncategorized kategorisinde yayınlandı

CodePlex ön deneyimleri 2

leave a comment »

Bir önceki gönderimde en son CodePlex’in sağladığı Team System hesabından bahsetmiştim. Şimdi Team System’i kullanırken yaşadığım ilk sıkıntıları aktarmak istiyorum.

Arkadaşımlar yürüteceğimiz proje bir ASP.NET projesi. Yani ben de gittim bir web projesi oluşturdum Visual Studio yu açıp. Buraya kadar bir sorun yok. Sonra gidip bu projeyi Source Control’e eklemek için gerekli adımı attım (solution explorerda solution un üzerinde sağ tıklayıp, add to source control diyorsunuz). Visual Studio’ya daha önceden codeplex sunucusu için gereken ayarları yaptığım için, otomatik bağlandı. Fekat bir de ne göreyim, tuttu sadece Default.aspx ve Default.aspx.cs dosyasını attı. Ben de yanlış oldu heralde dedim, gidip bunları Source Control den sildim. Bir de baktım kendi solution’umdan da silinmiş. Hımm dedim başım dertte sanırım biraz bu Team System ile. (tamam, bilmiyorsan bir bilene sor demişler ama işte soracak adam bulamadım o saatte.)

Sonraki birkaç denememde de aynı sonuçla karşılaştım. Neyse sorunsuz şekilde hallettiğim denememi aktarayım ben size. Sanırım web projelerini çok sevmiyor Team System.

Gittim Boş bir Solution oluşturdum Empty Solution şablonunu seçerek. Sonra solution a sağ tıklayıp  add to source control dedim. İşte o zaman istediğim şekilde klasörlendirip, gereken tüm dosyaları attı (solution dosyası ve bağlantı ayar dosyası mesela). Sonra bu solution üzerinde yaptığım her işlem kod ağacımda da güncellendi. Eklediğim web projeleri de artık sorunsuz şekilde ekleniyordu. Yani aklınızda bulunsun bu.

Böyle işte 🙂

Written by Burak SARICA

Ekim 11, 2006 at 9:51 pm

Uncategorized kategorisinde yayınlandı

CodePlex ön deneyimleri 1

leave a comment »

CodePlex oluşumunu duyduğumdan beri sıklıkla takip etmeye çalışıyordum. Hatta bir proje gözüme kestirip dahil olmayı da istedim. Ascend.NET isimli bir projeye dahil oldum (ekibin yürütücüsü ile görüşmeniz gerekiyor, proje sayfasında discussions kısmında). Ascend.NET projesi çeşitli windows kontrolleri içeren bir paket yayınlamayı hedefliyor. Ben de Türkçe versiyonu üzerinde çalışacağım. Bu proje hakkında daha detaylı bilgiyi siz okursunuz CodePlex’ten.

Daha sonra bir arkadaşımla bir e-commerce sitesi hazırlamayı planladık. ImagineCup’a katılacak ekibiyle inşallah, ve ısınma turları atmak istiyor. Dedim ki "gel bu projeyi CodePlex’te yürütelim". O da "Tamam!!" dedi. CodePlex’te yeni proje oluşturmak şu an için otomatik işleyen bir süreç değil. Anasayfada Start a project linki var. Sizi bu sayfaya getiriyor. Sayfada projenizle ilgili temel detaylar isteniyor. Formu doldurup gönderiyorsunuz. Julie Sanders abla projenizi kabul ediyor ve artık CodePlex ailesinde proje yürütebilirsiniz (Herşeyden evvel CodePlex’e üye olmanız gerektiğini söylemeli miydim sanki başta? 🙂 ). 

Bu kabul işlemini hızlandırmanız için bir önerim var. Doldurduğunuz formun özellikle License kısmını savsaklamayın. CodePlex, illaki bir lisanslama türünü benimsemenizi bekliyor. Ben savsakladım. "Ticari olmayan amaçlar için eyvallah, yoksa görüşelim" mealinde birşeyler karaladım. Julie hanım beğenmedi. Lisanslama ile ilgili bikaç siteyi gösterdi, ben de gittim CPL i seçtim. Bu kaynaklar size de gerekebilir, önceden gidin bi lisans modeli seçin, içeriğini direk yapıştırın o alana.

Microsoft’un benimsediği birkaç model

Genel benimsenmiş farklı modeller

Projeniz kabul edildi. Şimdi sırada ne var? Visual Studio kullanıyorsanız CodePlex size harika bir fırsat sunuyor. Team Explorer ile CodePlex sunucularına bağlanma ve projenizi Visual Studio Team System avantajları ile yönetme fırsatı.

CodePlex+Team System maceramı sonraya (belki yarın) bırakıyorum.

Written by Burak SARICA

Ekim 11, 2006 at 5:36 am

Uncategorized kategorisinde yayınlandı

Klavye veya mouse takılı mı değil mi?

leave a comment »

Yazgeliştir forumlarında bir soruya rastladım. Programatik olarak klavye ve mouse un takılı olup olmadığını anlayabilir miyiz diyordu özetle. Kafama takıldı, biraz araştırdım. En sağlam yol WMI ile sorgulamak diyorum. Ama hala kafamda P/Invoke ile bir API’den öğrenebilir miyiz sorusu var. Kod örneği aşağıda.

using System;
using System.Collections.Generic;
using System.Text;
using System.Management;

namespace ListHardwareWMI
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Management.ManagementScope mScope = new ManagementScope("\\\\BURSARMOBILE\\root\\cimv2");
            ObjectQuery query = new ObjectQuery("SELECT DeviceID,Status FROM Win32_Keyboard");
            ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(mScope,query);
            ManagementObjectCollection Devices = mSearcher.Get();
            Console.WriteLine("Klavyeler----\n");
            foreach (ManagementObject Device in Devices)
            {
                Console.WriteLine(Device.GetPropertyValue("DeviceID") + "\t" + Device.GetPropertyValue("Status"));
            }
            query.QueryString = "Select DeviceID,Status from Win32_PointingDevice";
            mSearcher.Query = query;
            Devices = mSearcher.Get();
            Console.WriteLine("\nFareler----\n");
            foreach (ManagementObject Device in Devices)
            {
                Console.WriteLine(Device.GetPropertyValue("DeviceID") + "\t" + Device.GetPropertyValue("Status"));
            }
            Console.ReadLine();
        }
    }
}

Laptopuma fare takmadan zor kullanıyorum. Yazdığım uygulamayı, usb fareyi çıkararak test ettim. Çalışıyor. Aslında birileri PS/2 cihazlarında test edip sonucu paylaşırsa sevinirim.

Written by Burak SARICA

Ekim 4, 2006 at 3:36 pm

Computers and Internet kategorisinde yayınlandı

%d blogcu bunu beğendi: