19 Aralık 2009 Cumartesi

Windows Server 2008 IIS 7 Uzerinde Guvenli PHP Kullanma

Windows Server 2008 uzerine IIS7 ile PHP yi GUVENLİ Kullanma

Merhabalar,

Kullandiginiz serverde Plesk gibi bir araci program kullanmiyorsaniz guvenlik ayarlariniza cok dikkat etmelisiniz. Normalde bunu sizin yerinize Plesk gibi programlar yapar ama o yoksa isinizi şansa kalmasın.

Server 2008 Uzerine PHP + MySQL Kurup IIS7 ile calistirinca gayet guzel calisiyor. Ama sitelerin birinden include metoduyla herhangi bir yere girip dosya cekmeniz mumkun. Burdan dogacak kıyameti siz düşünün…

Normalde Apache + PHP kullandiginizda eğer PHP FastCGI olarak çalışmıyorsa

php_admin_value open_basedir “d:\webspace\volkanaltan.com”
Yazarsaniz kullanici bu dizinden yukari cikamaz. Ama maalesef IIS7 de veya Apache uzerinde php yi fastcgi olarak calistirirsaniz bu komutlar calismaz http://www.zend.com/en/support/knowledgebase.php?kbid=252&view_only=1

Peki bunun önüne geçmek için ne yapmak gerekiyor ?

Benim anlatacagim Server Web 2008 IIS + PHP

Bilgisayar üzerine sağ tıkla -> Manage ->Configuration -> Local Users And Group
Groups üzerine sağ tıkla -> Yeni grup ekle
Adına : IIS_WPG
İçine -> LOCAL SERVICE , NETWORK SERVICE ekliyoruz

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-49-23-559.png

Users Tabına Sağ tıkla -> New User
Burda her site için bir user oluşturuyoruz. Ama bu userlar IIS kullanıcısı olacagi için isimlendirmeyi şöyle yapiyorum. IUSR_volkanaltancom
C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-52-00-025.png


Şimdi bu usere sağ tıklayıp Properties den “Member Of” tabına geçiyorum

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-54-05-481.png

Profile Tabına geçip ordada sitenin yolunu veriyorum.
C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-55-36-668.png

Şimdi IIS üzerinde işlem yapacağız.

Bilgisayar üzerine sağ tıkla -> Manage -> Roles -> Web Server -> IIS -> Server Name
Sites sağ tıkla -> Add Web Site
Physical path e d:\volkanaltan.com\www yazıp Test Settings’e tıklıyoruz.

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_11-58-44-258.png
The server is configured to use pass-through authentication with a built-in account to access the specified physical path. However, IIS Manager cannot verify whether the built-in account has access. Make sure that the application pool identity has Read access to the physical path. If this server is joined to a domain, and the application pool identity is NetworkService or LocalSystem, verify that <domain>\<computer_name>$ has Read access to the physical path. Then test these settings again.

rdüğünüz gibi yetkisizlik durumu söz konusu.

Bu kez “Connect as” a tıklıyoruz. Ve daha once oluşturduğumuz useri seçiyoruz.

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-01-02-058.png

Eğer site kırmızı olursa

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-01-48-768.png

Sağdaki “Basic Settings”e tıklayıp Ok’a basın.

Şimdi klasör ayarlarına bakıyoruz;

C:\Users\Volkan\AppData\Roaming\PixelMetrics\CaptureWiz\LastCaptures\2009-12-19_12-03-15-159.png

Site -> Sağ tıkla Edit Permissions
Security tabına geçtiğinizde sizing users a tam yetki verildiğini göreceksiniz. Ama bu işin başında sizin web sitelerini tuttuğunuz klasöre yetki olarak “Network Service”, “Users” Okuma yetkisini vermeniz gerekmektedir.

Olayımız bitmiştir. Sorularınız olursa sorabilirsiniz.
Daha iyi görmek için : http://docs.google.com/View?id=dgndh2qr_99f7vrr47x

9 Aralık 2009 Çarşamba

server 2008+Apache+php 5.2.x ile mssql_connect hatası

server 2008 + Apache + php 5.2.x ile mssql_connect hatası

Hatanin tamami ;

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: ip,port in D:\mssql_error.php on line 147

Couldn't connect to SQL Server on ip,port

Yapilacak ;

http://www.dlldll.com/ntwdblib.dll_download.html Adresinden dll i indirip

c:\Windows\system32\ altına atıyoruz.

6 Aralık 2009 Pazar

Taşınabilir Satranç Takımı

Taşınabilir Satranç Takımı

Araştırmalarım sonucunda taşınabilir olarak bulduğum en iyi satranç takımı http://staroyun.com.tr/satrancr.html tarafından satılmaktadır.



Bu satranş takımını alabileceğiniz yer MMM Migros lardır. Bunun dışında bir yerde var mı bilmiyorum. Ama aşağıdakilerde olmadığı kesin.

Toyzzshop, Cevahirdeki oyuncakcılar, NT, D&R hiçbirinden bu kalitede satranç takımı bulunmamaktadır.


Şimdi oyun zamanı :)

15 Kasım 2009 Pazar

Windows Media Player'da rastgele muzik dinlemek için kısayol tuşları



Windows Media Player da rastgele muzik dinlemek.

Play liste muzikleri atip rastgele dinlemek icin kullanılan kısayol CONTROL+H

Sürekli unutuyorum! Artık unutmam herhalde.

14 Kasım 2009 Cumartesi

DirectAdmin olan sisteme ioncube kurmak (Linux - Centos)

DirectAdmin olan sisteme ioncube kurmak

En önce http://www.ioncube.com/loader_download.php linux için olan son versiyonu çekiyoruz.

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

tar -zxvf ioncube_loaders_lin_x86.tar.gz

çıkan dosyaları /usr/local/lib/ioncube altına atın.

İçindeki ioncube-loader-helper.php dosyasını serverdaki bir sitenin altına atın.

www.volkanaltan.com/ioncube-loader-helper.php dediğimizde açılan ekranda size server için hangi dosyayı yüklemeniz gerektiğini söyleyecektir. Centos için aşağıdaki biçim;

nano /usr/local/lib/php.ini yazark php.ini içine aşağıdaki satırı ekliyoruz;

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so

/etc/init.d/httpd restart

Mutlu son.

13 Kasım 2009 Cuma

Orta okul lise zamanımda olsaydı dediğim bir site teknikim.com


Orta okul lise zamanımda olsaydı dediğim bir site http://teknikim.com/

Bu siteyi beni takip etmesiyle farkettim. Rss'e ekledim o zamandan beri geçen yazılar gerçekten de çok ilgi çekiciydi. Etrafınızdaki gençlere bu siteyi önerebilirsiniz. İnternette gereksiz yerlere girip çıkmak yerine (facebook) bu gibi faydalı siteleri takip edip izlesinler.

12 Kasım 2009 Perşembe

svn cannot rename file .svn\entries & Error processing command

svn cannot rename file .svn\entries & svn:Error processing command

SVN kullanırken Bu iki hatayı alıyorsanız (önce ilki sonra ikincisi çıkabilir) kesinlikle yazma izinlerini kontrol edin.

linux için chmod değiştirin.

windows için ServerAdi\Users icin tam yetki verebilirsiniz.

Not: Ayrıca server 2003 de sorun olmuyor ama 2008 de başınız ağrıyor.

Kolay gelsin.

5 Kasım 2009 Perşembe

Notepad++ Windows 7 64 bit ile sapitiyor....


Notepad++ Windows 7 64 bit ile sapitiyor....

Birkaç aydır windows 7 kullanıyorum. Performansından memnunum ama 64 bit kullanamanın getirdiği bazı dez avatantajlar oluyor. Genelde programlar sapıtıyor.

Bugün kü konumuz :) Notepad++ Malumun son sürümünü indiriyoruz
http://sourceforge.net/projects/notepad-plus/files/

Sonra çalıştırmak istediğimizde plugin yüklenme hataları soruları çıkıyor.
Bunları aşmak için Aynı sürümün zipli halini indirip http://sourceforge.net/projects/notepad-plus/files/notepad%2B%2B%20releases%20binary/npp%205.5.1%20bin/npp.5.5.1.bin.zip/download bir yere açıyoruz. Sonra Orjinal olandan syle, config ve lang xml leri kopyalayıp zipliyi çıkarttığımız klasöre atıyoruz.

Son olarak orjinal olanı komple silip yerine ziplide yaptığımız yeni versyonu atıyoruz.

Ben sorunlardan böyle kurtuldum daha iyi fikirleri olan varsa dinlemeye açığım.

1 Kasım 2009 Pazar

Windows Server 2003/2008 Apache/PHP/MySQL kurmak kullanmak

Windows Server 2003/2008 Apache/PHP/Mysql kurmak kullanmak

Biz server ları yönetirken harici bir panel veya benzeri bir araç kullanmıyoruz herşeyi elle yapıyoruz. Şimdi de size elle Apache/PHP/Mysql kurulumunu anlatacağım. Ama biraz uyanıklık yapıp işi nasıl kolaylaştırdığımı göreceksiniz :)

Öncelikle Zend in sitesinden http://www.zend.com/en/products/platform/downloads açılan sayfadan "Zend Core V2.5 (Win/Linux)" u seçip aşağıdan windows için olan versyonu indiriyoruz. Bunun kurulumu standart kurulum. Ama kurulum devam ederken bize ne için kurulum yaptığımızı soruyor (IIS,Apache) burda yeni bir apache yükleyi seç diyoruz ve devam ediyoruz. Bu aşamadan sonra genellikle herşey sorunsuz çalışır. ( Tabi IIS i kapatmayı unutmadıysanız yada 80 portunu kullanan başka bir uygulamanız yoksa) Bazen size gıcıklık olsun diye bu windows servisi değil gibi bir hata mesajı çıkarırsa ZendCoreApache servisini Otomatik çalışacak şekilde yapılandırın.
Makineyi yeniden başlatın, bu sorun gidecektir.

Şimdi gelelim Apache de birden fazla site çalıştırmaya. Bu konuda çeşitli şeyler yazılıp çiziliyor ama en doğru düzgün ve sorunsuz çalışan bizde :) Hatta bu işi yapmaya çalışan ücretli ücretsiz araçlarda bile iyi sonuçlar alınamayabiliyor. En iyisi elle ayarlamak. Tabi ciddi hosting işi yapıyorsanız uğraşılacak iş değil...

C:\Program Files\Zend\Apache2\conf\httpd.conf dosyasında

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

Include conf/extra/httpd-vhosts.conf şeklinde değiştiriyoruz. Ve şimdi bu dosyaya gidiyoruz.

C:\Program Files\Zend\Apache2\conf\extra\httpd-vhosts.conf

Site eklemek için örnek komutlar

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "D:/volkanaltan.com"
ServerName volkanaltan.com
ServerAlias www.volkanaltan.com
ErrorLog "logs/volkanaltan.com-error.log"
CustomLog "logs/volkanaltan.com-access.log" common
</VirtualHost>

Yukardaki kısmda site adı geçen yerleri değiştirip istediğimiz gibi çoğaltabiliriz.
En sonada da siteleri koyduğumuz yeri gösteriyoruz.

<directory>
Options Indexes
FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</directory>

Artık sorunsuz bir şekilde çalışmaya hazır.

Eğer aynı makinede IIS de çalıştıracaksak. İkinci bir IP ile bu işi yapabiliriz.

NameVirtualHost *:80 yerine NameVirtualHost digerip:80

Yukardaki kısımlarda da yerine

Ve httpdconf dosyasında da "Listen 80" yerine "Listen digerip :80"

Yazıyoruz.

Windows Server 2003 IIS 6 ile URLRewrite




Windows Server 2003 IIS 6 ile URLRewrite yapmak direk mümkün değil. Bunun için uzun zamandan beri kullandığımız
bir araç var. İsmi Helicon ISAPI rewrite / 2 biz bu versyonu kullanıyoruz http://www.isapirewrite.com/download/isapi_rwf_x86_0073.msi
Oldukça memnunuz PHP ve ASP sitelerde .htacess dosyası ile istediğimiz cambazlığı yapıyoruz. Şimdiye kadar da bir sorun
yaşamadık.

31 Ekim 2009 Cumartesi

TTNET ile yaşadığım sorunlar ve sonrası...



TTNET ile yaşadığım sorunlar ve sonrası...

Eminim ki ttnet kullanan herkes sorun yaşamıştır. Sorunun kaynağı her zaman TTNET olmasa da bir ucu ona dokunuyor.
Nede olsa hizmeti ordan aldığımız için daha doğrusu suyun başında TTNET olduğu için.( hangi servis sağlayıcıyı kullanırsanız kullanın)

Ben de son zamanlarda ciddi sorunlar yaşadım ve artık TTNET ile bağları koparma noktasına geldim. Başka bir servis
sağlayıcıya geçip en azından iyi bir hizmet alırım diye düşündüm. Çünkü zaten alt yapıda TTNET var o kesin ama bunu
bana satan kişi başkası olursa işler değişir diye düşündüm.

Bu süreç zarfında beni şaşırtacak bir çok şey yaşadım ve öğrendim.

Şimdi bu tecrübelererimi siz bilişim camiasına ve varsa normal kullanıcılara aktarmak istiyorum. (Zaten bu bloğunda amacı bu değil mi ? )
Ve aynı zamanda TTNET in yapması gerekenleri yazmak istiyorum.

1. Öncelikle şunu unutmayın 444 0 375 paraı özel bir hattır. Özel bir şirket TTNET in Call Center olayını yönetiyor.
Bu nedenle burdaki kişiler her türden insanlar olabilir. Çok kültürlü bilgili veya hiç bilgisiz prosedür insanı.
Bu nedenle burayı aradığınız
da tatmin olmuyorsanız sorunların çözülmüyorsa kesinlikle uzatmayın hemen kapatın paranıza yazık edersiniz.

2. Telefonu kapatmadan önce bulunduğunuz yerin santraline ait telefon numarasını isteyin.
Size XXX YY AB gibi bir numara verecektir. Bu noyu aradığınızda açmıyorlarsa sondaki numarayı 1 artırarak
aramaya devam edin. Burda karşınıza çıkacak
kişi ilede işler yürümüyorsa.

3. iletisim[at]ttnet.com.tr adresine bilgilerinizi ve derdinizi anlatan güzel bir email atın. Bu email sizin bilgilerinize göre ilgili kişilere gönderilecektir. Ama İstanbul da oturuyorsanız istyak.pazarlama[at]turktelekom.com.tr adresine CC leyin.

4. Halen bir şeyler olmuyorsa 2. adıma geri dönüp müdürle görüşmek istediğinizi söyleyin. Muhtemelen görüşeceksinizdir. ( Benim olayımda müdür bey beni aramıştı. )

Bu adımları takip ederseniz inanıyorum ki sorununuzu kesin olarak çözersiniz. Çünkü siz müşterisiniz ve özelsiniz TTNET ise özel bir kuruluş, paraya ve daha çok müşteriye ihtiyacı var. Karşılıklı arz-talep ile sorunun çözülmesi için ne gerekiyorsa yapılacaktır.

Burdaki önemli nokta sizin önemli olduğunuzu anlayan size değer verecek olan kişiler ile görüşmek. Bunu yakalamak için yukda adımları yazdım.

TTNET için ise söyleyeceklerim ;

1. Bilişim camiasına özel ilgi ve alaka göstermelidir. Nasıl çalışanlarına özel uygulamalar yapıyorsa bilişim çalışanları içinde özel uygulaması olmalıdır. Çünkü piyasayı genişleten biziz. En iyi reklamı yapacak olanlar gene biziz. Bizim değerimizi ve kıymetimizi bilmeli.

2. Modemine telefon hattını takmadığı için internetim yok diyenle gerçek sorunu olanları ayırmalı. ( Nasıl yapar bilemiyorum )

29 Ekim 2009 Perşembe

Cumhuriyet Bayramı


Bayramımızın 86. yılını kutlarım.Bu uğurda şehit olan atalarımızın ve şehitlerimizin ruhları şad olsun..





23 Ekim 2009 Cuma

Windows Server 2008 Password Policy den kurtulma

Windows Server 2008 Password Policy den kurtulma.

Windows Server 2008 de sizden karmarışık saçma sapan şifreler istiyor olabilir yok kardeşim bu şifre işi bana göre değil ben ip bazlı koruma yaparım diyorsanız IpSec ile ilgili bu yazıyı okuyun.

Gelelim Asıl meseleye ;

Control Paneli -> Local Security Policy -> Account Plicy Burdan sağ taraftaki
Password must meet complexity... ıvır zıvırını Disabled yapıyoruz.

22 Ekim 2009 Perşembe

Windows Console da Tab calismiyor yerine bosluk oluyor ?

Windows Console da Tab calismiyor yerine bosluk oluyor ?

Başlat -> Çalıştır -> Cmd

c:\

İşte tam bu anda W ye basıp tab tuşuna basınca koca bir boşluk oluşuyor. Sinirlerimi bozan bu şeyi gittim işin uzmanına sordum. StreAmeR Allah ondan razı olsun biricik kardeşim :)

Çözüm yolu ;
regedit e girdikten sonra ;
"
HKEY_CURRENT_USER/Software/Microsoft/Command Processor e CompletionChar diye bi REG_DWORD tipinde key aç içinede value olarak 9 gir.
"

Teşekkürler StreAmeR

Windows Server 2008 RDP Session time limit

Windows Server 2008 RDP Session time limit

Yeni kurulan makinede sessionı açık bırakıp çıktıktan sonra oturumun kaybolduğunu gördüm. Otomatik olarak atıyormuş uyanık.

Yapılması gereken;

Control Panel -> Administrative Tools->Teminal services -> Terminal Services Configuration



RDP-Tcp ye sa tıklayıp Properties den
aşağıdaki ekrana ....



Ordan session tabına ;

Override user settings uncheck yapıyoruz.

Bitti :)

10 Ekim 2009 Cumartesi

MSsql den Mysql e database yapisi ve data aktarmak

MSsql den Mysql e database yapisini ve datayi aktarmak veya tersi yönde işlem yapmak
oldukça huzursuz edici bir iş piyasada bunu bedava yapan yok :) Yapanlarınki de patlıyor çatlıyor. Ama bu işi gerçekten yapan firmalar var ;

Birkaç program var ama diğerlerini yazmak bile istemiyorum nede olsa doğru düzgün çalışmıyorlar.

En iyisi :DBConvert for MSSQL & MySQL

C# ile fax send/receive Gonderip almak veya alamamak

C# ile fax send/receive Gonderip almak veya alamamak.

C# ile fax almam gereken bir proje oldu ama ne yazık ki fax göndermeyle ilgili sürüyle örnek varken almak ile ilgili tam bir örnek bile bulamadım. Hemde en büyük kaynaklardan bile...

Sağdan soldan toparladığım kod parçalarıyla bunu yapmayıda başaramadım. Ama umutsuzluğu kapılmak yok :) En iyisi delphi de örnek aramak eminim onda çok fazla örnek vardır :)

4 Ekim 2009 Pazar

Dr House 6. sezon


Dr. House lost ve diğer diziler arasında bence en iyisi, en istikrarlısı, en yararlısı ve daha nice en lerin olduğu çok harika bir dizi...

Yeniden seni izlemek çok güzel Dr House :)

15 Eylül 2009 Salı

Zend_Mail Attachment ayari

Zend_Mail Attachment de sorun yaşamak istemiyorsanız ayarları aşağıdaki şekilde yapın.

    
$attachment = new Zend_Mime_Part(file_get_contents($fullpath));
$attachment->disposition = Zend_Mime::DISPOSITION_INLINE;
$attachment->encoding = Zend_Mime::ENCODING_BASE64;
$attachment->filename = $fileName;
$mail->addAttachment($attachment);


Gerekirse

$attachment->type = Helper_Common::getMimeContentType($fullpath);


ekleyin.

getMimeContentType metodu

public static function getMimeContentType($filePath)
{
$mime_types = array(
'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',

// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',

// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',

// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',

// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',

// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',

// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);

$ext = pathinfo($filePath , PATHINFO_EXTENSION);

if (isset($mime_types[$ext])){
return $mime_types[$ext];
} else {
return 'application/octet-stream';
}
}

13 Eylül 2009 Pazar

iis 7 ye geciteki hatalar overrideModeDefault hatasi

Hata detayi;

Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070021
Config Error This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".
Config File \\?\D:\IIS\site\web.config
Requested URL http://localhost:80/site/
Physical Path D:\IIS\site\
Logon Method Not yet determined
Logon User Not yet determined

Windows 7 harikaları diyarında iis 7 bulunuyor onunla çalışmaya bailayayım derken karşıma yukardaki hata çıktı.

Çözümü ;

%windir%\system32\inetsrv\config\.

Dizininde -> applicationHost.config dosyası içerisinde;

"Deny" yi "Allow" yapın

change this value from "Deny" yi "Allow" yapın.

Sorun çözülsün.

12 Eylül 2009 Cumartesi

windows 7 Harikaları

Windows 7 (64 bit) sonunda kurabildim. Ve şimdiye kadar windows 7 siz geçirdiğim her vakit için pişman oldum. Neyini anlatayım bilmiyorum.

visual studio, Sql server kurmak hiç bu kadar kolay ve sorunsuz olmamıştı.
10 dakikada kurdum ve şok oldum.

Görsellik arka plan resimleri herşey özel olarak seçilmiş ve sonuç harika bir ürün olmuş...

Şimdiye kadar xp yi kaçak kuran ben Windows 7 ye para vermeye razı oldum!
Çünkü gerçekten kaliteli ve para edecek, para verilecek bir ürün.

Bütün programlarımı hızlıca kurup birde yedeğimi alınca (40Gb) keyfime diyecek yoktu...

Sadece update işlemleri biraz yavaş. O da olsun önemli değil :)

En son uzun zamandır kullanamadığım windows media center kumandasını felan takıp bir deniyeyim dedim. Ve bundan da tam puan aldı.

Diyecek birşey yok hemen windows7 ye geçin hayatınız kolaylaşsın.
(Vistaya para verenler üzülmesin onları paralarıyla win7 geldi :) )

Not: Teakolik bu konuda baya birşey yazmış http://www.teakolik.com/tag/windows-7/ okumanızı tavsiye ederim.

10 Eylül 2009 Perşembe

İstanbul Büyükşehir Belediyesi (IBB) Şehir Rehberi

Istanbul Buyuksehir Belediyesi (IBB) 'nin çok kaliteli bir hizmeti. Benim en beyendiğim ve işa yarar bulduğum hizmeti "şehir rehberi" şehir rehberi sayesinde aradığınız okulu,eczaneyi,hastaneyi,sağlık ocağını ve telefonlarını hızlıca bulabiliyorsunuz. Bu hizmeti özellikle sınava gireceğim okulları bulmakta kullanıyorum. Tabi nöbetçi eczane olayıda çok süper. Harita eski olmasına rağmen rehber oldukça yeni. Şehir rehberi yol tarifide yapabiliyor. Mesafe ölçümlerindede kullanabilirsiniz. İnşallah birde API yaparlar bizde dışardan kullanabiliriz.

9 Eylül 2009 Çarşamba

PHP ile MSSQL kullanarak proje gelistirmek...

Sql servere php ile bağlanmak.

SQL Server Driver for PHP sözcüğü bunu anlatıyor ama açalım...

ASP.NET ile MSSQL kullanarak proje geliştirmek kolay peki bunu php ile yapmak istersek ?

Neden asp.net dururken php derseniz anlatacak çok şey var ama zamanı değil :)

Bu konuyu biraz araştırdım ve Microsoft'un bu iş için bir driver geliştirdiğini Zend inde kod yazdığını gördüm.

Çok karışık sorgular çalıştırmayabilir ama iş görür durumda.

Yukarda yazdığım eskidi. Şu an hertürlü komutu çalıştırıyor. Eskiden çalıştırmama nedeni Sqlsrv.dll nin ve Zend kodlarının eski olmasıymış.

Bu işe girişeceklere tavsiyelerim;
1- DLL yi Microsofttan indirin: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx
2- Zend'in bu iş için yazdığı kodları Microsoft'un sitesinden değil Zend'in sitesinden frameworkun 9 ve üzerindeki sürümünü indirerek test edin.
http://framework.zend.com/download/latest

Bunları yazıyorum çünkü php nin 5.2 sürümünde dll eski olduğu için DELETE gibi result döndürmeyen işlemlerde hata mesajı alabiliyorsunuz. Yada Zend'in model dosyalarında insert metodu ile işlem yaptığınız lastInsertId() yi alamama durumunuz oluyor.
Tabi son sürüm Zend'i kullanırsanız bu sorun ortadan kalkıyor.

Bu mükemmel olmuş PHP ve MSSQL şimdiye kadar iyi çalıştı. PHP & MySQL ile yapılmış bir projenin belli bir kısmını PHP & MSSQL e dönüştürdüm çok iyi çalışıyor.

Yakın zaman içerisinde büyük bir projede kullanacağız. Kullandıkça eksik ve fazlalıklarını yazmaya çalışacağım.

2 Eylül 2009 Çarşamba

Güvenlik Bülteni

Uzun zamandan beri takip ettiğim ( 1 yıl olmadı) bir email grubu var. Burdaki konular, konulara yaklaşım biçimi, üyelerin bilgi seviyesi tatmin edici. Kafanıza takılan şeyler sorun olmaktan çıkıveriyor. Ayrıca kültürünü bilginiz artıyor.

Velhasıl bu gurubun oldukça yararlı olduğunu düşünüyorum, sadece network ile uğraşanlar için değil yazılım ve bilişim alanındaki herkes için bir pay var...

Ayrıca güvenlik bülteni çıkarmaya başladılar... ( Bazıları gibi fos değil :) )

Artık meşhur siteyi açıklayalım. Hüzeyfe Önal'ın başı çektiği "netsec" listeye üye olmak için http://blog.lifeoverip.net/netsec-listesi/

Güvenlik bülteni üyeliği için http://blog.lifeoverip.net/newsletter/ kullanabilirsiniz.

FirePHP, FireBug ve Zend Framework ile debug

FirePHP, FireBug ve Zend Framework bir araya gelince ortaya guzel bir debug mekanizması çıkıyor. Önce FireBug sonra FirePHP

Zend döküman: http://framework.zend.com/manual/en/zend.log.writers.html#zend.log.writers.firebug

İşi yapan kod:
// Place this in your bootstrap file before dispatching your front controller
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);

// Use this in your model, view and controller files
$logger->log('This is a log message!', Zend_Log::INFO);

1 Eylül 2009 Salı

Delphi, C++Builder, Delphi Prism

Gelen emailde aşağıdaki bilgiler vardı.

Delphi coşmuş...

Embarcadero® RAD Studio 2010, Windows®, .NET, Web ve veritabanı uygulamaları geliştirmek için tüm ihtiyaçlarınıza cevap veriyor !

Embarcadero® RAD Studio 2010 grafiksel arayüzü ile farklı Windows ve veritabanı platformlarında Windows ve .Net uygulamaları 5 kata kadar daha hızlı geliştirmenizi sağlayan sektörün en güçlü ve hızlı uygulama geliştirme (RAD) süitidir.

RAD Studio 2010; Delphi®, C++Builder® ve Delphi Prism™ in yeni versiyonlarını içeren, sektörün ödüllü ve en yaygın kullanılan hızlı uygulama geliştirme platformudur.

İki yönlü görsel sürükle bırak özelliği, zengin bileşen-tabanlı geliştirme seçenekleri, hızlı ve grafiksel olarak zengin uygulamalar geliştirmenize katkıda bulunur.

RAD Studio 2010, Windows uygulamaları geliştirmenizi hızlandırmak için pek çok yeni ve gelişmiş yeteneğe sahiptir:

  • Grafiksel Arayüz uygulamaları için Windows 7 dahil bütün Windows işletim sistemlerinde dokunuş ve jest (touch and gesture) desteği
  • Oracle, Microsoft SQL Server, IBM DB2, Sybase, InterBase, MySQL, Firebird ve daha fazlası için dbExpress™ hızlı veritabanı erişim sürücüleri ve genişletilmiş DataSnap™ ile gelişmiş, kapsamlı veritabanı desteği
  • 120'den fazla, yazılım geliştirici-odaklı IDE (Bütünleşik Yazılım Ortamı) üretkenlik yenilikleri

RAD Studio 2010, 'aspect oriented' tekniğiyle programlama ve .NET 4.0 'da kullanılan dinamik yapılar desteği dahil olmak üzere, .NET ve çoklu platform Mono uygulamaları geliştirilmesi için yeni yetenekler de içermektedir.

Detaylı bilgi, demo videolarını izlemek, ücretsiz deneme sürümlerini indirmek ve daha fazlası için RAD Studio 2010 adresini ziyaret edin, RAD Studio farkını deneyimleyin.

26 Ağustos 2009 Çarşamba

Sql Server tablo schema degistirme

EXEC sp_changeobjectowner 'TabloAdi', 'dbo'

Eğer orjinal şeması dbo değilse... Mecbur tam yazmanız gerekiyor.

EXEC sp_changeobjectowner 'test.TabloAdi', 'dbo' gibi.

Bu kadar basit...

25 Ağustos 2009 Salı

Email ile rss aboneliği

Merhaba,

Bloğumu rss yoluyla takip edenler email yoluylada takip edebilirler. Çalışmadığını yeni farkettim ve düzelttim. Sağolsun blok okuyucuları ( 3-5 :) ) söylemediği için kendimiz kendi eksiğimizi buluyoruz.

23 Ağustos 2009 Pazar

Sahurda ne Yenir ?

Mübarek Ramazan Ay'ı yeniden geldi. Ve bu mübarek ayda cevabı aranan en önemli sorudur "Sahurda ne Yenir?". Ben şahsen bilgisi olan uzmanlar ile tanışmasam bu konuda çok sıkıntılar çekerdim ama Allah'a şükür tanıdığım uzmanlar var :)

Geçen senede bununla ilgili bir yazı girdim bu senede aynısını söyleyeceğim.

Oruç tutmaya başlayalı 2 gün oldu. Tekrar olayımızı test etme imkanı buldum ve bu testlerin sonucunu buraya yazmasam dostlara haksızlık etmiş olurdum.

Ben sahurda 1 çay bardağı dolusu zeytinyağı karıştırılmış salata yiyorum. Ardından Tam buğday ekmeğine ( Ekmek çok önemli aslında ama her zaman olmayabiliyor) sürülmüş birkaç dilim terayağlı ekmek.
Burda en önemli olay zeytinyağı. Zeytinyağındaki asit bazen çok olabiliyor bundan rahatsız olabilecekler için tecrübelere dayaranak önerebileceğim çözüm geçen senede bahsettiğim elta-ada zeytinyağı gerçekten çok hafif.

Sonuç olarak bu şekilde tuttuğum her oruçta o gün içinde işte veya dışarda bir performans kaybı yorgunluk halsizlik hissetmemekteyim. Aksine oldukça iyi oluyorum. Sizede tavsiye ederim...

Geçen seneki "sahurda ne yenir" başlıklık yazım.

19 Ağustos 2009 Çarşamba

Bakirkoy Dr. Sadi Konuk Egitim ve Arastirma Hastanesi Online Randevu

Bakırköy Dr. Sadi Konuk Eğitim ve Araştırma Hastanesi'n den online randevu almak isteyen herkes hüsrana uğramakta bunlardan biride benim. Ne rezil bir sistemdirki aylardan beri adam gibi çalıştıramadılar. Artık sınırları zorladıkları için buraya yazmak zorunda kaldım. Birde üstüne firefox desteklemeyen bir sistem yapmışlar utanmadan da altına imzalarını koyuyorlar. ( Uzun zaman önce onlarada email atmıştım, cevap vermediler)

Ya işinizi adam gibi yapın yada çekip gidin!!!


20 Temmuz 2009 Pazartesi

Sürüclere girmek istediğiniz zaman Çalıştırmak için program seç uyarısı çıkıyorsa

Sürücülere girmek istediğiniz zaman çalıştırmak için program seç uyarısı çıkıyorsa bu muhtemelen sisteme virüs girdiğinin göstergesidir. Ama bu yoksa bile aşağıda vereceğim programla bilgisayarınızı mutlaka taratın çünkü avastın bulamadığı bu virüsü bulup temizledi.

Muhteşem programımız combofix

19 Temmuz 2009 Pazar

Thunderbird *.eml import

Madem dosya kurtardık bunları birde import edelim.

Thunderbird doğrudan bunu yapamıyor ama bir eklenti sayesinde bunu yapabilirsiniz.

http://www.nic-nac-project.de/~kaosmos/mboximport-en.html adresinden farkli kaydet diyerek eklentiyi indirin. Sonra Thunderbird in Ad-on ekleme kısmından yükleyin.

Yeniden başlayınca ekleme kısmı aktif oluyor.

Dosya kurtarma - Recovery Files

Dosya kurtarmam gerekti denediğim programlar ;

Easy Recorvery Professional, R-Studio, Recover my files


En başarılısı güzel özellikleri bulunan Recover my files idi herkese tavsiye ederim.
Daha başlarkan dosya tiplerini seçebiliyorsunuz. Tarama bitincede filitreleme yaparak sadece ilgili dosyaları seçiyorsunuz.

12 Temmuz 2009 Pazar

Zend_Mail_Storage_Pop3 Zend_Mail Kullanimi

Yazacağımız bir ticket sistemi için uygun kütüphane bakarken en iyisinin Zend olduğuna karar verdim. Zend de dahi bazı eksikler olmasına rağmen ne varki okunabilirlik, dökümantasyon ve destek açısından (google) en iyisi zend gözüküyordu.

Olaya burdan başlayalım.
http://zendframework.com/manual/en/zend.mail.read.html

Pop3 ile, gelen emailleri okumak için Zend_Mail_Storage_Pop3 sınıfı kullanılmakta
iyi güzel diyip emailleri alıyorsunuz ama olay bundan sonra başlıyor. Çünkü her email in ayrı birde derdi ve sıkıntısı var.


$configurations = array(
'host' => $settings['popHost'],
'port' => $settings['popPort'],
'user' => $settings['user'],
'password' => $settings['password']
);

$mail = new Zend_Mail_Storage_Pop3 ( $configurations );

self::$_settings = ( object ) $settings;
echo $mail->countMessages ( ) . "

messages found

\n";


Şeklinde parametreleri girince emailleri alıp adetini ekrana basıyorsunuz.
Gmail i okumak için ssl özelliği var ama siz hosta ssl://pop.gmail.com port a 995 yazarsanızda iş görüyor.

Aşağıda örnek kullanım ile ilgili kodları göreceksiniz. Bu kodlarda gelen dosyaları almaktan tutun da mesaj ve konuya kadar bütün verinin alınması mevcut. Size düşen biraz incelemek.


foreach ( $mail as $messageNum => $message ) {

$fromEmail = Helper_Common::getEmailAddress ( $message->from );
$fromName = Helper_Common::getName ( $message->from );

$recordUniqueID = $mail->getUniqueId ( $messageNum );

//mail daha once eklenmediyse ekle
if ( self::isExistMail ( $recordUniqueID ) == false ) {
$arrAttach = array ();
/**
* Gelen verileri tiplerine gore ayristiriyoruz
*/
foreach ( new RecursiveIteratorIterator ( $message ) as $no => $parts ) {
//bazi emaillerde contentTransferEncoding olmuyor o yuzden bunu koydum
try {
$contentTransferEncoding = $parts->contentTransferEncoding;
} catch ( Zend_Exception $e ) {
$contentTransferEncoding = '';
}

try {
//apllicationa gore bakmak olmuyor ekte text/plain olabiliyor
//o yuzden name gore bakiyoruz
$tmpfilename = self::getFileName ( $parts->contentType );

if ( $tmpfilename != false ) {
$arrAttach[] = array(
'FileName'=>$tmpfilename, 'ContentType' => $parts->contentType,'Part'=> self::decode ( $contentTransferEncoding, $parts ),
'ContentTransferEncoding' => $contentTransferEncoding
);
}

if ( strtok ( $parts->contentType, ';' ) == 'text/plain' && $tmpfilename == false ) {
$part = $parts;
$part->contentTransferEncoding = $contentTransferEncoding;
}
} catch ( Zend_Mail_Exception $e ) {
//echo $e;
}
}
/**
* Bazen yukardaki foreach e girilmiyor o zaman direk atiyoruz
*/
if ( $part == null ) {
$part = $message;
while ( $part->isMultipart ( ) ) {
$part = $message->getPart ( 1 );
}

try {
$contentTransferEncoding = $part->contentTransferEncoding;
} catch ( Zend_Exception $e ) {
$contentTransferEncoding = '';
}

$part->contentTransferEncoding = $contentTransferEncoding;
}

$recordSubject = self::convertSubjectToUTF8 ( $message->subject, $part->contentTransferEncoding );

/**
* Message
*/
$content = $part->getContent ( );
$recordMessage = self::convertContentToUTF8 ( $content, $part->contentTransferEncoding, $part->contentType );
$recordHeaders = $mail->getRawHeader ( $messageNum );

/**
* Attachment
*/
for ( $i = 0; $i < count ( $arrAttach ); $i++ ) {
$filename_ = $arrAttach [ $i ]['FileName'];
$fileExt = pathinfo($filename_, PATHINFO_EXTENSION);
$attachpart_ = $arrAttach [ $i ]['Part'];
$attachcontentType = $arrAttach [ $i ]['ContentType'];
$contentTransferEncoding = $arrAttach [ $i ]['ContentTransferEncoding'];
}

//email ile isimiz bitince siliyoruz
$mail->removeMessage($messageNum);
}
}



Yukarda kullanılan önemli metodlar

/**
*
* @param $content
* @param $contentTransferEncoding - 7bit,quoted-printable biciminde data
* @param $toContentType - text/plain; charset=ISO-8859-9 biciminde data
* @return unknown_type
*/
public static function convertContentToUTF8 ( $content, $contentTransferEncoding, $contentType ) {

if ( $contentTransferEncoding == '' ) {
return $content;
}

$contentType = self::getCharset ( $contentType );

$content = self::striptags ( $content );

if ( $contentType == 'us-ascii' || $contentType == false ) {
return htmlspecialchars ( $content );
} else {
return mb_convert_encoding ( htmlspecialchars ( self::decode ( $contentTransferEncoding, $content ) ), "UTF-8", $contentType );
}
}

public static function convertSubjectToUTF8 ( $subject, $contentTransferEncoding = '' ) {
if ( $contentTransferEncoding == '' ) {
return $subject;
}

return imap_utf8 ( self::striptags ( $subject ) );
}


public static function striptags ( $str ) {
return strip_tags ( html_entity_decode ( $str ) ); //strip all tags ...no mercy!
}

public static function decode ( $encoding, $text ) {
$encoding = trim ( $encoding );
switch ( $encoding ) {
case '7bit' :
$text = imap_8bit ( $text );
break;
case 'binary' :
$text = imap_binary ( $text );
break;
case 'base64' :
$text = imap_base64 ( $text );
break;
case 'quoted-printable' :
$text = imap_qprint ( $text );
break;
case '' :
default :
$text = imap_8bit ( $text );
//$text=$text;
}
return $text;
}


İpucu: En önemli kısım transferencoding olayı Biz kastık başkadı kasmasın :)

Zend_Auth birden fazla modülde kullanmak

Zend_Auth ile oturum yönetimi yapılabilmekte ama birden fazla modülünüz varsa ve bunların arasında ayrım yapmak istiyorsanız ilk kez register ettiğinizde;


$TicketUserPlugin = Zend_Auth::getInstance ( );
$TicketUserPlugin->setStorage(new Zend_Auth_Storage_Session('ticketAuth'));

$UserPlugin = Zend_Auth::getInstance ( );
$UserPlugin->setStorage(new Zend_Auth_Storage_Session('defaultAuth'));



Böylece karışmaz ama bana kalsa en güzeli initializer da modül adına göre kontrol yapıp ordan ayırmak ama yukardaki dediğimide kullanmanız gerekiyor. initializer da ayırım yaparsanız $TicketUserPlugin = Zend_Auth::getInstance ( ); gibi bir çağırmada setStrogae demenize gerek kalmaz.

Not: Modül adını yakalamak için;

public function routeStartup(Zend_Controller_Request_Abstract $request)
{

}

public function routeShutdown(Zend_Controller_Request_Abstract $request)
{

}

public function dispatchLoopStartup(
Zend_Controller_Request_Abstract $request)
{

}

public function preDispatch(Zend_Controller_Request_Abstract $request)
{

}

public function postDispatch(Zend_Controller_Request_Abstract $request)
{

}



metodlarından biri kullanılabilir. Bunlar yazdığım sırayla çağrılmaktadır. Kimisinde yaptığınız işe göre yakalama yapamayabilirsiniz. O zaman bir sonrakini denemeniz gerekebilir.

http://framework.zend.com/manual/en/zend.controller.plugins.html

Zend_Navigation Kullanimi

Zend Framework 1.8 sürümü ile duyurduğu yenilikler arasında bu sınıfta bulunmaktaydı.
İşimiz düştü kullanalım dedik maceramız bundan sonra başladı.

1.7 ile geliştirdiğimiz projede bazı yükseltmeler yapıp 1.8 e uyumlu hale getirdik ama 1.8 ile gelen Bootstrap mevzuları mevcut yapıyı inciteceği veya bizi uğraştıracağı için yapıda değişiklik yapmadık.

http://zendframework.com/manual/en/zend.navigation.html şu sayfaya bakınca adamlar ne güzel yazmış diğebilirsiniz ama bazı alanlarda istediğiniz sonuç çıkmıyor.

Ben size orası şöyle burası böyle demek yerine nasıl kullanacağınızı anlatacağım. Böylece uğraşıp başınızı ağrıtmazsınız.

Öncelikle


$container = new Zend_Navigation();


Yukarda görmüş olduğunuz sınıfa parametre olarak dizi verebilirsiniz. Dizi formatı;

$pages = array(
'label' => $label,
'module' => $module,
'controller' => $controller,
'action' => $action,
'title' => $label
);


Olurda bu menünün alt menüsü olacaksa ;

$pages = array(
'label' => $label,
'module' => $module,
'controller' => $controller,
'action' => $action,
'title' => $label,
'pages' => array(
array(
'label' => $label,
'module' => $module,
'controller' => $controller,
'action' => $action,
'title' => $label
)
)
);


Peki parametre eklemek istersek ?

$pages = array(
'label' => $label,
'module' => $module,
'controller' => $controller,
'action' => $action,
'title' => $label,
'params' => array('_id' => 100)
);


Menüyü heryerde çalıştırmak için initializer gibi bir dosyaya koymak lazım.
Ben plugin olarak yazdım sonrada bu plugini register ettim.

plugin sayfasi;

class CMS_Module_Menu_Plugin_Menu extends Zend_Controller_Plugin_Abstract {

/**
* @var object
*/
protected $_model;

protected $_cms_module_menu;

public function __construct ( $Model ) {

$CMS_Module_Menu_Adapter_Menu = new CMS_Module_Menu_Adapter_Menu($Model);
$this->_cms_module_menu = $CMS_Module_Menu_Adapter_Menu;
}

public function preDispatch ( Zend_Controller_Request_Abstract $request ) {
/**
* Menuleri topla
* @var unknown_type
*/
$pages = $this->_cms_module_menu->getMenuData(0);
/**
* layouta ata
* @var unknown_type
*/
$view = Zend_Layout::getMvcInstance()->getView();
$container = new Zend_Navigation($pages);
$view->navigation()->setContainer($container);
//$uri = $request->getPathInfo();
//$activeNav = $view->navigation()->findByUri($uri);
//$activeNav->active = true;
//$activeNav->setClass("active");
}

}


Dataları ( daha önce bahsettiğim menümüze ait data) dizi olarak almak içinse veritabanından okuyup diziye dönüştüren bir adapter yaptım.


class CMS_Module_Menu_Adapter_Menu
{

/**
* @var object
*/
protected $_model;


public function __construct ($Model)
{
$this->_model = $Model;
}

//TODO:params metodunu kullanarak parametre al
/**
* $pages = $this->getMenuData(0);
* @param $parentid
* @param $pages
* @return unknown_type
*/
public function getMenuData($parentid = 0,&$pages = array())
{

$where = array(
'ParentID='.$parentid.' AND IsMenu = 1 AND Status=1'
);

//$Module_TicketUser_Authentication_Resource = new Module_TicketUser_Authentication_Resource();
$getResourceList = $this->_model->fetchAll($where);
//unset ( $Module_TicketUser_Authentication_Resource );
if ($getResourceList){
foreach($getResourceList as $key=>$value){
list($action, $controller, $module) = explode(".", $value->Name);
$label = $value->Label;
$pages[$value->ResourceID] = array(
'label' => $label,
'module' => $module,
'controller' => $controller,
'action' => $action,
'title' => $label
);

if ($value->Name == 'detail.view.ticket'){
$request = new Zend_Controller_Request_Http();
$param = $request->getParam('_id');
$pages[$value->ResourceID]['params'] = array('_id' => $param);
//$pages[$value->ResourceID]['route'] = 'article_view';
}

if ($value->ResourceID != 0) {
$pages[$value->ResourceID]['pages'] = array();
$this->getMenuData($value->ResourceID,$pages[$value->ResourceID]['pages']);
}

}
}
return $pages;
}

}


Yukardaki sınıfta getMenuData metodu ile veritabanından aldığım veriyi diziye dönüştürüp bırakıyorum. Tabi bunu Zend_Navigation un mantığına uygun olarak yapıyorum.

Son olarak plugini register edelim;

$Zend_Controller_Front = Zend_Controller_Front::getInstance ( );
$Zend_Controller_Front->registerPlugin ( new CMS_Module_Menu_Plugin_Menu ( new Module_TicketUser_Authentication_Resource ( ) ) );


Dikkat ederseniz parametre olarak db nesnesini yolluyoruz. Sizde tablonuzun adına ve içeriğine ögre gerekli değişikliği yaparsınız.

Layout kullanımı

echo $this->navigation()->menu(); ?>
echo $this->navigation()->breadcrumbs()->setMinDepth(0)->setLinkLast(false)->setSeparator("»"); ?>

6 Temmuz 2009 Pazartesi

SpyMasterSnake Açıldı...

Evet bu haber beni çok duygulandırdı. Çünkü çocukluğumuz orda geçti. Orda büyük öğrendik yazdık. Bir zamanlar AventGrup da vardı. Kim bilir belki ilerde bir gün o da açılır.

Ama SpyMS başka hakkaten özlemişim mesajları okurken gördüğüm nickler beni geçmişe götürdü. Neredeyse hepsini tanıyorum....

Nerden nereye....

http://www.spymastersnake.org

4 Temmuz 2009 Cumartesi

Flashget in client.kuaiche.com sayfasini acmaya baslamasi...

Flashget in flashget196 versiyonunu indirdiğinizde bir süre sonra " client.kuaiche.com " sayfasını açmaya çalıştığını ve bunu açamayarak sorular sorduğunu farkedersiniz.

O zaman yapmanız gereken;

http://www.trendsecure.com/portal/en-US/threat_analytics/HiJackThis.zip

programını indirip temizliye başlayabilirsiniz. Spybot Search and Destroy yada sdFix
bunu temizliyemiyor.

Programı kullanmak için http://www.bilgisayar-destek.com/hijackthis-v202-tanitimi-ve-resimli-anlatimi/ okuyabilirsiniz.


Not: her ihtimale karşı flashget şn eski versiyonunu bulup onu kurdum.
http://www.oldapps.com/flashget.php?old_flashget=17

20 Haziran 2009 Cumartesi

SQL Server ROLLBACK ve @@ERROR Flag

2 aşamadan oluşan bir işlemde birinci başarısız olursa ikinci işleme geçilmesini engellemek isteyebilirsiniz.

O zaman devreye bu rollback ( geri sarma) mevzusu giriyor.

Örnek senaryo;

BEGIN TRANSACTION
--temp db deki temp tabloya tasi
INSERT INTO rollback_table (ProductID,Name)
Select
ProductID, Name
From
tmp_table(NOLOCK)

--yukardaki islem basarili degilse bitir
IF @@ERROR<>0
BEGIN

ROLLBACK
RETURN 0
END
--datalari sil
DELETE FROM tmp_table
COMMIT TRANSACTION

Sql Server ile Median ( Ortanca kaydı ) Bulma

Lazım oldu araştırdık kullandık gerçekten işe yarıyor..

WITH RN AS
(
SELECT groupid, val,
ROW_NUMBER() OVER(PARTITION BY groupid ORDER BY val, memberid) AS rna,
ROW_NUMBER() OVER(PARTITION BY groupid ORDER BY val DESC, memberid DESC) AS rnd
FROM dbo.Groups
)

SELECT groupid, AVG(1.*val) AS median
FROM RN
WHERE ABS(rna - rnd) <= 1
GROUP BY groupid;


http://www.evanreiser.com/2007/07/calculating-medians-in-tsql-using-2005.html



ASP.NET Datatable colmn var mı ?

Column 'AnyColumn' does not belong to table Table

hata mesajı yukardaki gibi bunu kontrol edebileceğiniz güzel bir komut ;

if (globalDataTable.Columns[_firmList[j].FirmID.ToString()] != null)

bu kontrol işinizi görüyor...

Sql Server IDENTITY INSERT engeli...

Bazen bir tabloya zorlada olsa kayıt girmeniz gerekiyor o zaman o gün geldiğine buna izin verilmiyorsa...


Msg 544, Level 16, State 1, Procedure SP_MOVE_PRICE_TMP, Line 33
Cannot insert explicit value for identity column in table 'tmp_Reports' when IDENTITY_INSERT is set to OFF.


SET IDENTITY_INSERT table ON
EXEC SP_MOVE_PRICE_TMP
SET IDENTITY_INSERT table OFF


diyerek engeli aşabilrisiniz...

Sql Server temp tablo var mı yok mu ?


IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp


Erginin dediğine göre en iyi komut buymuş...

Sql Server Stored Procedure out parametresini kullanma

Her zaman karşımıza çıkmıyor ama bazen gerçekten lazım olan bir komut unutanlar için hatırlatalım...

CREATE PROCEDURE [dbo].[test]
@a int,
@TotaltCount int out

SET @TotaltCount = 10


şimdi bu sp yi kullanarak dönderdiği parametreyi alalım;

DECLARE @ Count2 int
exec [PRW_SEL_SEARCH] 1,@Count2 output
select @ Count2

Vmware de mecut diskinizin alanını büyütmek

Sizde benim gibi cimrilik edip diskinizi küçük tuttuysanız ve pişman olduysanız üzülmeyin kolayı var...

Öncelikle disk alanını genişleteceğiniz sistem çalışıyorsa kapatın ardından...

Başlat->Çalıştır->cmd

virtual diskinizin olduğu klasöre gidip şöyle değin;

D:\Virtual Machines\Windows XP Professional>"C:\Program Files\VMware\VMware Serv
er\vmware-vdiskmanager" -x 20GB "Windows XP Professional.vmdk"


Ardından işlemin başladığını göreceksiniz...

Bu bitince
Bilgisayarıma sağ tıkla
Yönet
Storage (Kapasite)
Disk yöneticisinden yeri belirlenmemiş disk parçasını bulup oluştur deyin..

Başka bir disk programıylada bu diski C ye dahil edebilirsiniz.

Kullandığım ve önerdiğim: AcronisDiskcreator.rar


Mutlu son...

4 Haziran 2009 Perşembe

mysql restart ettiginizde calismiyor veya InnoDB: default storage engine is not available hatalar veriyorsa

Mysql ,

bazen bilinmeyen bir sebeple calismaya bilir hata mesajlari asagidaki gibidir;

Cozumu ise oldukca basit ;

[mysqld]
tmpdir=C:/temp

Kaynak: http://dev.mysql.com/doc/refman/5.0/en/cannot-create.html

default storage engine is not available

InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
090603 13:27:55 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.

InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
080916 4:10:41 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
080916 4:10:41 InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 50 MB
InnoDB: Database physically writes the file full: wait...
080916 4:10:42 InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 50 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
080916 4:10:44 InnoDB: Started; log sequence number 0 0
080916 4:10:44 [Note] C:\MySQL5\bin\mysqld-nt: ready for connections.
Version: '5.0.67-community-nt' socket: '' port: 3306 MySQL Community Edition (GPL)
080918 3:01:30 [Note] C:\MySQL5\bin\mysqld-nt: Normal shutdown

6 Mayıs 2009 Çarşamba

MSSQL IP limit (access) koyma Windows IPsec kullanimi

Windowsda bulunan
IPSec servisi ile Ip bazlı filtreleme yapmak;






Adımlar ;



Temelde iki adım bulunmaktadır.
1. IPSec
filter listesini oluşturma
2. IPSec roller
tanımlama



  1. Başlat ->
    Çalıştır -> services.msc -> IPSEC
    Services çalıştırınız.


  2. Başlat ->
    Çalıştır -> secpol.msc


  3. IP
    Security Policies on Local Computer sağ tıklayıp /
    Manage IP Filtrer seçiniz.


  4. Manage
    IP Filter Lists tabında iken “Add” butonuna
    tıklayınız.











  1. Use Add Wizard
    unclick ediniz. Add butonuna basınız.
    Addressing
    tabinda ;




Source
IP Address : 66.135.40.45 (serv1)
Destination address : My Ip
Address

66.135.40.45 den bana gelen butun
istekler.


Protocol tabında;


Select
a protocol type : TCP

Set the IP protocol port:
From any
port click.

To this port: 1435

Herhangi bir portdan
1435 e gelen butun istekler.

Yukardakinin aynisini bu kez
engellenen baglanti istekleri olarak oluşturuyoruz;






Add
butonuna basarak Yeni liste ekleyiniz.
Bu listede engeleldiğiniz
ip leri yaziniz.



Herhangi
bir ip den yapilan butun istekleri kapsar.


1435
portu TCP baglantilari;












  1. “Manage
    IP Filter Actions” tabina geçiniz.




Use
Add wizard unclick edip “Add” butonuna basiniz.



  1. Security
    Methods tabinda Block secip “OK”
    basiniz.




    ------------------------------------------------------------------------------------------------------------------------------


  2. IP
    Security Policies on Local Computer sağ tıklayıp /
    Create IP Security Policy








Next
-> Finish.



  1. Daha once
    tanımladığımız listeleri hangi işlemde
    kullanacağımızı belirleyeceğiz.



    Add
    butonuna basınız.


    “İzin
    verilen baglanti istekleri” ni tıklayıp “Filter
    Action” tabına geçiniz.



    Bu
    listeye hangi yetki vermek istediğinizi seçin.



  2. Son olarak
    secpol.msc ekranında “1435 portune gelen istek yönetimi”
    sağ tıklayıp Assign ediyoruz.



    Policy
    Assinged Yes ve Name kismindaki resim kenari yeşil ise
    çalışıyor demektir.

    Düzgün göremiyorsanız : http://docs.google.com/Doc?id=dgndh2qr_77cdf2p3cr

    Kaynak:
    http://support.microsoft.com/kb/313190




JMeter


Apache JMeter







  1. Giriş




Apache JMeter Java
dilinde yazılmış bir uygulamadır.. Öncellikle
Web için tasarlanan bir test aracı olup, sonradan başka
test alanlarında da kullanılmıştır.



Apache
JMeter hem statik hem de dinamik kaynakları test etmek için
kullanılabilir. Örnek: Servlet, Perl script, Java nesnesi
(Java Object), veri tabanı sunucusu (DBMS),
FTP sunucusu v.b.



Bir
sunucu üzerinde birden fazla bağlantı açıp
aynı zamanda birçok bağlantı yapılıyormuş
gibi gösterebilmektedir. Bu sonuçları analiz etmek
içinde grafiksel raporlama imkanları
vardır.

Apache JMeter aşağıdaki
özellikleri taşır:




  1. -
    HTTP, FTP ve veri tabanı sunucuları
    (JDBC kullanarak) üzerine ağır yük (heavy
    load
    ) ve performans (performance) testleri yürütebilir



  2. -
    100% Java dilinde yazılmış olduğundan
    platformdan bağımsız, taşınabilir



  3. - Swing package’i
    kullanıyor (derlenmiş JAR javax.swing.* package’leri
    içeriyor)



  4. -
    Çok dizililiği (multithreading) kullandığından,
    koşut olarak birkaç işlev yapılabilir, çok
    kullanıcılı bir ortamı simule edebilir.



  5. -
    Kullanıcı arayüzü (GUI) kullanışlı
    olup, daha hızlı işlemekte ve daha doğru
    zamanlamayı (precise timing) sağlıyor.



  6. -
    Önbelleğe almayı (caching) kullanıp,
    sonuçları çevrim dışı (offline)
    olarak görme/analize etmeye olanak sağlıyor.



  7. -
    Genişleyebilir (Highly Extensible)






    1. *
      Takılabilir örnekleyiciler (pluggable samplers)
      ile sonsuz test olanakları sağlıyor



    2. *
      Takılabilir Zamanlayıcılar (pluggable timers)
      ile birkaç yük istatistiği (load statistics)
      seçilebilir



    3. *
      Veri analizi ve görselleştirme takılabilirler
      (visualization plugin) ile genişleyebilirliği
      (extendibility) ve kişiselleştirmeyi (personalization)
      sağlamakta



    4. *
      İşlevler (JavaScript’i içermekte) bir test
      için devingen (dynamic) girdi oluşturmakta
      kullanılabilir



    5. *
      Yazılı yönergeli örnekleyiciler (scriptable
      samplers
      )













  1. JMeter’i
    Çalıştırma

    JMeter’i kullanmak
    için
    http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
    adresinden son sürümüni indirmeliyiz. İndirdiğimiz
    dosyanın içinde “bin” klasöründe
    jmeterw.cmd (Windows için) veya jmeter (Linux için)
    çalıştırmalıyız.


  2. JMeter’in
    Kullanımı

    a. HTTP Çalışması



JMeteri
çalıştırmak için bir çalışma
planımızı “Thread Group” a ekliyoruz













Yukarda
ki ayarları istediğimiz şekilde değiştiriyoruz.


(Kullanıcı
sayısı , kaç kez tekrarlanacağı)
Number
Of Thread (users) :







Thread imize sağ
tıklayıp Add / Config Element /
HTTP Request Defaults
ekliyoruz.












Şimdi
Add / Sampler / HTTP Request’ten
HTTP isteklerimizi eklemeliyiz.







Burada
gerekli ayarları yapıyoruz.
HTTP Request Defaults ‘a
server bilgilerini girdiğsek buraya girmemize gerek yok.
(
post ve get için değişkenler girilebiliyor)





Raporlama
için Add / Listener/ View
Results Tree
(işlemleri
adım adım görmek için)









Sonuçları
gördüğümüz ekran;



























HTTP
Proxy Kullanımı


Thread
Group ekliyoruz. İçine HTTP Request Defaults.


WorkBench
e sağ tıklayıp Add / Non-Test Elements /HTTP Proxy
Server



















































Kabul
edilecek dosyalar



Kabul
edilmeyecekler







Tarayıcı
ayarları;










Bu
işlem sonrasında gezdiğimiz sayfalar JMeter tarafından
kayıt altına alınacaktır.






b.
Veritabanı Çalışması


JDBC
(
Java Database Connectivity )
kullanabilmek için
http://dev.mysql.com/downloads/connector/j/5.1.html


Sitesinden
connectoru indirip JMeter’in bulunduğu dizinde lib/ext
içine atıyoruz. Programı yeniden başlatınca
artık JDBC kullanılabilir.


Çalışmamıza
Thread ekliyoruz. Ardından buna sağ tıklayıp
Add
/ Sampler /
JDBC
Connection Configuration
ekliyoruz.


MySQL
için örnek bir bağlantı;







Ayarları
;


Variable
Name : MySQL


Database
URL :
jdbc:mysql://volkanmysql:3306/db


JDBC
Driver class :
com.mysql.jdbc.Driver


Username:
dbusername


Password:
dbpassword
Diğer veritabanları için bağlantı
örnekleri;


MySQL
com.mysql.jdbc.Driver jdbc:mysql://host[:port]/dbname PostgreSQL
org.postgresql.Driver jdbc:postgresql:{dbname} Oracle
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:user/pass@//host:port/service Ingres (2006)
ingres.jdbc.IngresDriver jdbc:ingres://host:port/db[;attr=value] SQL
Server (MS JDBC driver) com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://host:port;DatabaseName=dbname
Apache Derby
org.apache.derby.jdbc.ClientDriver
jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]



http://jakarta.apache.org/jmeter/usermanual/component_reference.html#JDBC_Connection_Configuration






Sorgularımızı
yollamak icin ;


Add
/ Sampler /
JDBC
RequestVariable Name
yazan
yere JDBC Connection Configuration da yazdığımızın
aynısını yazıyoruz.













MSSQL
için;


Open
Source olan jtds connectörünü indirebilirsiniz.
http://jtds.sourceforge.net/


Driver
Class:
net.sourceforge.jtds.jdbc.Driver


Veya


http://www.microsoft.com/downloads/details.aspx?familyid=f914793a-6fb4-475f-9537-b8fcb776befd&displaylang=en


Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver










Kaynaklar


http://jakarta.apache.org/jmeter/usermanual/index.html


http://www.bilgidata.com




            Yayınlayan: http://volkanaltan.blogspot.com/