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
20 Temmuz 2009 Pazartesi
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.
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.
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.
17 Temmuz 2009 Cuma
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.
Ş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.
Yukarda kullanılan önemli metodlar
İpucu: En önemli kısım transferencoding olayı Biz kastık başkadı kasmasın :)
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;
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;
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
$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
Yukarda görmüş olduğunuz sınıfa parametre olarak dizi verebilirsiniz. Dizi formatı;
Olurda bu menünün alt menüsü olacaksa ;
Peki parametre eklemek istersek ?
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;
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.
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;
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ı
İş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
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
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
Kaydol:
Kayıtlar (Atom)