19 Eylül 2007 Çarşamba

Tanınmayan virüsleri nasıl tanırız

Diyelim ki bilgisayarınızda antivirüs programlarını bulamadığı bir virüs olduğunu düşünüyorsunuz.
kendinizce bazı dosyaları da buldunuz, fakat tanımlayamıyorsunuz. Bu durumda dosyanın ne olduğunu belirlemek gerek. Belki de bir sistem dosyasıdır da siz bilmiyorsunuzdur.
Her zaman lazım olabilir, lazım olmaması dileğiyle :)

Detaylı bilgi için

İngilizce ofis 2003 için türkçe yazım denetimi

C:\Program Files\Common Files\Microsoft Shared\PROOF altında
bu aşağıda adı yazılan 4 dosyayı atıp, word içinden default dil ayarlarını türkçe seçmeniz yeterli.
İngilizce ofis Türkçe dil denetimini de yapabilir hale geliyor. Dosya isimleri şöyle:

MSSP3TR.LEX
MSSP3TR.DLL
MSTH3TR.LEX
MSTH3TR.DLL

indirmek için buraya tıklayabilirsiniz.

Exchange 2003 üzerinde database ve log yönetimi

Exchange 2003 üzerinde log dosyaları oldukça büyük yerler tutabilir. Bu nedenle log fileların doğru olarak yapılandırılması gerekiyor.
Küçük boyuttaki bir sistem partitionı üzerinde büyüyen log dosyaları kısa sürede olmasa bile uzun vadede sorun yaşamamıza sebep olacaktır.
Bu nedenle log dosyalarının lokasyonlarını doğru olarak yapılandırmak gerekiyor.

Bu sorunu yaşamamak için uygulabileceğimiz bir kaç yöntem var.
Bunlardan biri circular logging.
Diğer yöntem ise mdbdata ve database klösürünün farklı ve daha büyük bir partitiona konumlandırılması ve sistem üzerinde full yedek alınması.

Circular logging ile ilgili detaylı açıklamayı buradan izleyebilirsiniz.

Exchange üzerinde database dosyası genelde farklı bir partionda konumlandırılır. Fakat log dosyaları bazen unutulabiliyor. Bu durumda çalışan bir sistemde log dosyalarının konumunun değiştirilmesi gerekir. Bu işlem hakkında detaylı açıklamayı yine buradan izlemeniz mümkün.
Burda dikkat edilecek husus taşıma aşamasında exchange servisinin çalışmaya devam etmesi ile birlikte kullanıcıları maillerine erişilemeyeceği.

6 Ağustos 2007 Pazartesi

TCMB üzerinden döviz kurlarını almak ASP.net 2.0

Asp.net 2.0 ile oluşturacağımız yeni projede dil olarak VB seçip default.aspx ve default.aspx.vb isimli dosyalarımızı oluşturuyoruz. Daha sonra default.aspx üzerine label1 ve label2 isimli kontrollerimizi ekliyoruz.
aşağıdaki kodu kod dosyasına kopyalıyoruz. Sonuç olarak c:\doviz.sql isimli dosyaya basit bir insert statement kaydedecektir. istersek scheduler tasks üzerinden bunu database'e insert edebiliriz. bu kod 1.1 için çalışmak üzere yazılmıştır biraz modifiye ettim o kadar.



Imports System
Imports System.IO
Imports System.Text
Partial Class Default2

Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label1.Text = "insert into t_dovkur (dovkod, tarih, birim, doval, dovsat, efkal, efksat) values ("
Label1.Text += "'USD', '" + Today.Date + "', 1 ," + fnDovizKurlari(1, 1)
+ "," + fnDovizKurlari(1, 2) + " ," + fnDovizKurlari(1, 3) + ","
+ fnDovizKurlari(1, 4) +");"


Label2.Text = "insert into t_dovkur (dovkod, tarih, birim, doval, dovsat, efkal, efksat) values ("
Label2.Text += "'EUR', '" + Today.Date + "', 1 ," + fnDovizKurlari(2, 1)
+ "," + fnDovizKurlari(2, 2) + " ," + fnDovizKurlari(2, 3) + ","
+ fnDovizKurlari(2, 4) + '' );"



'Open a file for writing
Dim FILENAME As String = "c:\doviz.sql"

'Get a StreamReader class that can be used to read the file
Dim objStreamWriter As IO.StreamWriter
objStreamWriter = File.CreateText(FILENAME)

'Append the the end of the string, "A user viewed this demo at: "
'followed by the current date and time
objStreamWriter.WriteLine(Label1.Text)
objStreamWriter.WriteLine(Label2.Text)
'eger database icin gorevleyeceksek kullanabiliriz.
'objStreamWriter.WriteLine("Commit;")
'objStreamWriter.WriteLine("exit;")

'Close the stream
objStreamWriter.Close()

End Sub


Public Function fnDovizKurlari(ByVal strDoviz As String, ByVal strBicim As String)
Select Case strBicim
Case "1"
strBicim = "ForexBuying"
Case "2"
strBicim = "ForexSelling"
Case "3"
strBicim = "BanknoteBuying"
Case "4"
strBicim = "BanknoteSelling"
Case Else
strBicim = "ForexBuying"
End Select
Select Case strDoviz
Case "1"
strDoviz = "USD"
Case "2"
strDoviz = "EUR"
Case Else
strDoviz = "EUR"
End Select
Dim xmlOku As New System.Xml.XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml")
Dim xmlBelge As New System.Xml.XmlDocument
xmlBelge.Load(xmlOku)
Dim xmlParca As System.Xml.XmlNodeList = xmlBelge.SelectNodes("/Tarih_Date/Currency[@Kod ='" + strDoviz + "']/" + strBicim)
Return xmlParca.Item(0).InnerXml.ToString
End Function

End Class

4 Ağustos 2007 Cumartesi

Oracle EM (Enterprise Manager) üzerinde export/import işlemindeki hata

Oracle EM üzerinde normal kullanıcı veya SYS kullanıcısının export/import işlemlerini yapabilmesi için Preferred Credential host username, password bilgilerini girmek gerekiyor. burda hosta ait kullanıcı ve şifreyi doğru girseniz de çalışmıyor. bunun için yapılması gerekenler şöyle :

You have to provide the 'Log on as a batch job' privilege:

1. Go to control panel/administrative tools
a. click on "local security policy"
b. click on "local policies"
c. click on "user rights assignments"
d. double click on "log on as a batch job"
e. click on "add" and add the user that was entered in the "normal username" or "privileged username" section of the EM Console.

2. Go to the Preferences link in the EM GUI
a. click on Preferred Credentials (link on the left menu)
b. under "Target Type: Host" click on "set credentials"
c. enter the OS user who has logon as a batch job privilege into the "normal username" and "normal password" fields

3. Test the connection
a. while in the Set Credentials window, click on "Test"


Aslında bu yöntemde Türkçe Windows XP Pro SP2 üzerinde çalışmadı. Dil ayarları English olduğu halde yine çalışmadı.

Çalıştırmayı başardığım andan Türkçe sistemde içinde uygun yöntemi paylaşacağım.

Ayrıntı bilgi ve diğer dillerdeki sonuçlar için :

http://www.orafaq.com/forum/t/45729/0/

http://forums.oracle.com/forums/thread.jspa?threadID=305172&start=45&tstart=0

Oracle10g, Enterprise Manager üzerinde normal kullanıcı logini

Oracle 10g üzerinde normal kullanıcıların EM (Enterprise Manager) üzerinde login olabilmesi için usera SELECT ANY DICTIONARY veya SELECT_CATALOG_ROLE yetkilerinden birinin verilmesi gerekir. aski halde user

"The application requires more database privileges than you have currently been granted"

şeklinde bir hata alacaktır. bu yetkiden sonra normal bir user EM' üzerinden login olabilir.

bununla birlikte bu yetkileri vermenin de ne kadar gerekli olduğunu düşünmek gerek.

http://www.orafaq.com/forum/t/85708/0/


3 Ağustos 2007 Cuma

Out of Office not enough memory hatası

Eğer Microsoft Office outlook üzerinde out of office' i aktif etmek isteğinizde
"Changes to the rule could not be saved. There is not enough memory or the rules are too complex, try deleting some rules."
böyle bir hata ile karşılaşırsanız. bunun nedeni kural eklerken kişi başına sınırlanmış 32 KB lık kural alanı sınırıdır. Bundan kurtulmak için silinmiş gibi görünen ama silinmeyen ve 32KB kıymetli alanımızı işgal eden kuralları tamamen silinmesi sağlamamız gerekiyor.

Server üzerinde bu alanda bulunanları görmek için microsfotun bir toolu var

Microsoft Exchange Server Information Store Viewer (MDBVU32)

http://www.microsoft.com/downloads/details.aspx?FamilyID=3D1C7482-4C6E-4EC5-983E-127100D71376&displaylang=en

ayrıca en kalıcı yöntem de outlook.exe yi /cleanrules parametresi ile açmak
böylece bütün kurallar siliniyor ve 32KB lik alan tamamen boşaltılıyor. tabiki bunu yapmadan önce kurallarınızı yedeklemeyi unutmayın.

kolay gelsin.

19 Temmuz 2007 Perşembe

Oracle, Ms Sql Farklılıkları (copy, insert)

Oracle ve MS-SQL dek bazı farklılıklar

Bir tablodaki tüm verileri veya bazı alanları başka bir tabloya aktarmak için

Oracle:

insert into table1 (select * from table2) ;

eğer tablo yapıları biribir aynı ise bu yapı çalışacaktır. Eğer tablo yapıları farklı ise alanları belirtelerek sql cümleciğini çalıştırabiliriz.

MS-SQL:

insert into table 1 select * from table2;

eğer alan belirlememiz gerekiyorsa

insert into table1 field1, field2 .. values select field1, field2 from table


Bir tabloyu verileriyle birlikte kopyalamak istiyorsak

Oracle
create table2 as select * from table1 where ...

MS-SQL
select * into table2 from table1 where ....

1 Haziran 2007 Cuma

Insert a swf file to powerpoint presentation

Copy your SWF file to the same folder as your saved blank or existing presentation. Within PowerPoint, navigate to the slide where you want to insert a Flash SWF movie.

  1. If the Control Toolbox is not already visible within your PowerPoint interface, point to Toolbars on the View menu, and then click Control Toolbox. (see screenshot below):



  2. Within the Control Toolbox, click More Controls (bottom right icon). This will open a drop down menu - choose Shockwave Flash Object. Naturally, the Shockwave Flash control must be installed on your computer for the Shockwave Flash Object to be listed in the Control Toolbox.

  3. Your cursor will change into a cross-hair - draw a rectangle anywhere on screen - don't bother about the size and location now - we'll take care of that later.

  4. Right-click the inserted Shockwave Flash control, and then click Properties in the resultant flyout menu.
  5. You'll find a "..." within the cell next to the 'Custom' option (usually the topmost option). Clicking this will open the Property Pages dialog box.

  6. Within the movie option, type the name of the movie without any path (since it is saved within the same folder as the presentation). Alternatively, you can type an entire URL within the box to access a SWF live from the Internet. Make sure that the Playing property is set to True - you can experiment with other options as well (see screenshot below):

Tip: You might want to reposition and resize your Flash movie on the slide.

18 Mayıs 2007 Cuma

ASP.NET 1.1 ve 2.0 da yazılmış uygulamaları aynı ortamda çalıştırmak

.NET framework 2.0 ve 1.1 versiyonlarının aynı makina üzerinde kurulmasında bir sakınca yoktur. Bu zaten bilinen bir şey. Önce 1.1 kururarsınız sonra 2.0 kurarsınız. 2.0 versiyonu kurulduktan sonra default olarak atanır ve uygulamalarınızı çalıştırabilirsiniz.

Peki default olarak 2.0 üzerinde çalışan bir uıygulamamız olsun (www.abc.com)
bu uygulama altında bir virtual directoryde bulunan uygulamanızı (www.abc.com/ab)
1.1 de nasıl çalıştıracaksınız.
Bunun için yapmanız gereken farklı bir Application pool oluşturmak. Böylece kök 2.0'da çalışsa bile altındaki dizin 1.1 de çalışabiliyor. özellikle farklı versiyonlarda geliştirilmiş uygulamaları bir çatı altında toplamak için ideal bir yol.

Ayrıntılı bilgi için :

http://blogs.msdn.com/david.wang/archive/2005/11/07/HOWTO-Install-and-Run-ASP-Net-20-Side-by-Side.aspx

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.