27 Nisan 2007 Cuma

Uninstall Symantec Corporate edition without password

To remove Symantec Antivirus without using a password:

1) Use Regedit

2) HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDes
k\VirusProtect6\CurrentVersion\Administrator Only\Security\

3) Change the value for this key from 1 to 0

useVPuninstallpassword

4) Close the registry and retry the uninstall

10 Nisan 2007 Salı

Linux üzerinde Oracle destekli PHP derleme

Merhaba,

Bu yazımda, üzerinde Oracle veya Oracle Client kurulu bir Linux sistemde PHP' yi OCI fonksiyonlarını kullanacak şekilde nasıl derleyeceğimizi anlatacağım.

Bunun için önce apache 1.3.xx.tar.gz sürümlerinden en güncel olanını
ve php.4.x.tar.gz sürümlerinden en güncel olanını indirmeniz gerekmektedir.
indirdiğimiz programları önce uygun bir klasöre açıyoruz.

cd /usr/tmp
tar zxf apache.1.3.xx.tar.gz
tar zxf php.4.x.tar.gz

cd apache.1.3.xx


burda önce apacheyi konfigüre edebilmek için örneğin kur isimli dosyaya aşağıdaki komutları yazıyoruz.

./configure --prefix=/usr/local/apache \
--enable-module=so



daha sonra php konfigüre edebilmek için örneğin kur isimli dosyaya aşağıdaki komutları yazıyoruz.

cd /usr/tmp/php.4.x

./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-mysql \
--with-oci8 \
--with-oracle \
--enable-sigchild \
--enable-track-vars \



php configure parametrelerini istediğiniz gibi değiştirebilirsiniz. Fakat OCI fonksiyonlarını kullanmak istiyorsak with-oci8, enable-track-vars parametrelerini olması şarttır.

daha sonra sırası ile aşağıdaki adımları uyguluyoruz.
adımlar
--------------
apache konfigure edilecek

cd /usr/tmp/apache.1.3.xx
./kur
make
make install


php konfigure edilecek

cd /usr/tmp/php.4.x
./kur
make
make install


apache yeniden kurulacak

cd /usr/tmp/apache.1.3.xx
make clean
LIBS=-lpthread ./config.status
make
make install


böylece kurulum bitmiş oluyor. şimdi httpd.conf' a php yi tanıtmak için aşağıdaki ifadeleri ekleyelim.

AddType application/x-httpd-php .php
LoadModule php4_module libexec/libphp4.so



son olarak istersek

php.ini de register_globals = on yaparak kullanabiliriz.

şimdi apacheyi başlatabiliriz.

/usr/local/apache/bin/apachectl start

9 Nisan 2007 Pazartesi

PHP ile dizideki anahtar(key) değerlerini değişken tanımlama

Belki başka yerde vardır da ben bulamadım ama bulmak isteyenlere kolaylık olsun diye basit bir kuralı tekrarlamak istiyorum. Biliyorsunuz foreach fonksiyonu PHP deki en kullanışlı fonksiyonlardan biridir. Örneğin içinde 20 adet $key olan bir diziniz var ve bütün $key leri bir değişken gibi kullanmak istiyorsunuz ve aynı zaman da bu değişkene $key' in sahip olduğu  $value değerini almasını istiyorsunuz; bu durumda yapmanız gereken:

/*
$dizi['ad'] = 'ramazan';
$dizi['soyad'] = 'ozturk';

foreach ($dizi = $val) $$key = $val;

echo $ad; // ramazan
echo $soyad; // ozturk
*/

daha kolayı tek boyutlu diziler için extract fonksiyonu kullanmak.

$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";

RTHDCPL.EXE ve USER32.DLL hatası

Son zamanlarda sistemlerinde Realtek HD Audio ses kartı kullanan XP kullancılarının bilgisayarı açıtığında ekranına şöyle bir mesaj geliyor.

user32.dll sistem DLL’sinin bellekte konumu değiştirildi. Uygulama, düzgün çalışmayacak. Konum değişikliği, C:\Windows\System32\Hhctrl.ocx DLL’si Windows sistem DLL’leri için ayrılmış bir adres aralığında bulunduğu için yapıldı. Yeni bir DLL edinmek için DLL üreticisine başvurulması gerekir.
(The system DLL user32.dll was relocated in memory. The application will not run properly. The relocation occurred because the DLL C:\Windows\System32\Hhctrl.ocx occupied an address range reserved for Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL.)

Bu problem Microsfot' un yayınladığı bir güncellemenin sistemde çalışmakta olan Realtek HD Audior Driver yazılımı ile çakışmasından kaynaklanıyor.

Sorunun çözümü için kendi denediğim ve sonuç aldığım yöntem Denetim Masası > Program Ekle/Kaldır' dan Realtek HD Audio Driver programını kaldırmak ve sistemi yeniden başlatmak.
Neticede sistem açılırken ses kartınızı yeniden tanıyıp dll leri yeniden register ettiği için aynı sorunla karşılaşmıyorsunuz..

Bu konuda Microsoft' un yapmış olduğu duyuru da inceleyebilirsiniz. Bir de yama mevcut.

6 Nisan 2007 Cuma

GridView ile SQL Server 2005 deki tabloları sayfalama

ASP.NET 2.0 ile yaptığım bir örneği sizinle paylaşmak istiyorum.

Bu örnek sonucunda bir tablodaki datalar ile listeleme, sayfalama, sıralama, detay bilgilerine ulaşmayı yapabileceksiniz. Elbetteki bu konuda ASP.NET 2.0 ' ın sunduğu özellikleri kullanacağız ve pratik tarafı örneğimizi neredeyse hiç kod yazmadan yapacağız.

Geliştirme ortamı olarak Microsoft' dan ücretsiz olarak indiribileceğimiz Visual Web Developer Express Edition ve SQL Server 2005 Express edition sp1 kullandım.

Şimdi örneğimize geçelim.
Önce kullanacağımız tabloyu oluşturalım


CREATE TABLE person(
id integer NOT NULL,
ad varchar(70),
soyad varchar(70),
dogum_tarihi datetime,
dogum_yeri varchar(70),
meslek varchar(70),
evtel varchar(10),
ceptel varchar(10),
PRIMARY KEY (id)
);


Projemizde kullanacağımız default.aspx, liste.aspx ve kayit.aspx sayfaları ile bunların behinde kod dosyalarını oluşturuyoruz. Son olarak kullanacağımız Database.mdf yi de ekliyoruz.
ve tablomuzu create ediyoruz. Daha sonra insert, update, delete, select procedurelerimizi yazacağız.

script:


/*****************************************/

create procedure sp_insert_person
@id integer not null ,
@ad varchar(70),
@soyad varchar(70),
@dogum_tarihi datetime,
@dogum_yeri varchar(70),
@meslek varchar(70),
@evtel varchar(10),
@ceptel varchar(10),
as
insert into person (id,ad,soyad,dogum_tarihi,dogum_yeri, meslek, evtel, ceptel)
values (@id,@ad,@soyad,@dogum_tarihi,@dogum_yeri,@meslek,@evtel,@ceptel);

/****************************************/

create procedure sp_select1_person
as
select id, ad, soyad soyad from person

/****************************************/


create procedure sp_select2_person
@id integer
as
select * from person
where id=@id


/****************************************/

create procedure sp_delete_person
@id integer
as
delete from person where id=@id

/****************************************/

create procedure sp_update_person
@id integer,
@ad varchar(70),
@soyad varchar(70),
@dogum_tarihi datetime,
@dogum_yeri varchar(70),
@meslek varchar(70),
@evtel varchar(10),
@ceptel varchar(10)
as
update person set ad=@ad,soyad=@soyad,dogum_tarihi=@dogum_tarihi,dogum_yeri=@dogum_yeri, meslek=@meslek, evtel=@evtel, ceptel=@ceptel
where id=@id

/****************************************/


Biliyorsunuz ASP.net 2.0 gelen bir özellik olarak App_Data dizini altına veritabanımızı ekleyip rahatça kullanabilyoruz. DB'yi SqlServer a register etmekte gerekmiyor.


Procedurelerimizi yazdığımıza göre geri sadece sayfaya koyacağımız kontrol ve bu kontrolleri dbye bağlamak kalıyor. ASP.NET 2.0' ın güzellikleri burda başlıyor.

şimdi liste.aspx dosyamıza 1 SqlDataSource ve Gridview kontrolü ekleyelim.

SqlDataSource kontrolünü ekledikten sonra Configure Data Source linkine tıklıyoruz. ve
karşıma çıkan ekran oluşturduğum Database.mdf dosyasını seçiyoruz. ileriki aşamada bu bağlantıyı kullanabilmek için yaptığımı database bağlantısını ConnectionString değişkenine atayıp bu bağlantının Web.Config'e kaydedilerek bütün proje tarafından kullanılmasını sağlayacağız.


Bu kısımda otomatik eklenmiş id fieldi silip onun yerine bir HyperLinkField ekliyoruz.
eklediğimiz HyperLinkField yine aynı işi yapıp aynı değeri ekrandan gösterecek bir farkla. ekledğimiz bu field ile her bir satıra bir link verebileceğiz.


Bu aşamada GridView1 kontrolünün auto format özelliği ile görünümü değiştirebilirsiniz.
böylece grid görünümlü liste kısmını bitirmiş olduk. ve herbir ID için örneğim kayit.aspx?id=2 değerini link olarak satırlara ekledik.


Kayıt.aspx için sayfası içiden yine SqlDataSource kontrolü ve DetailView kontrol ekliyoruz.
SqlDataSource için aynı ConnectionStringi seçip SP bağlantılarımı yapıyoruz. tek farkla bu kez select procedure sp_select2_person olacak.