PHP Animated Gif Resizer

There are many sites that use avatars and sometimes they use animated GIF files. But when it comes to resizing them, it really becomes a pain when your server doesn’t support ImageMagick. So I decided to write an animated GIF resizer based on GD Library (Because GD doesn’t support it directly either.)

It works like this:

  1. Extract frames from GIF animations into a temporary folder.
  2. Resizes all the frames
  3. Combines them into one file

Using this class is really simple. Here is the code

<?php
include_once "gifresizer.php";
$gr = new gifresizer;
$gr->temp_dir = "frames"; //note that it doesn't end with a "/"
$gr->resize("gif/1.gif","resized/1.gif",200,300);

// $gr->temp_dir = {a folder with a write permission (777)}; // The temporary folder which frames will be extracted to.
// $gr->resize({file to be resized}, {new file to be created}, {new width}, {new height});
?>

Here’s an example:

 

Original GIF file :


Resized Image:


Here you can download the class, documentation and examples.

PHPClasses.org class main page

 

Note: I’m expecting some feedback. Here or at phpclasses.org. Doesn’t matter. If you are using it, tell me how it works.

about costabrava hack and some fix.


Türkçe:
Hostunuzdaki bütün php dosyalarınıza eval ve base64_decode kodunu kullanan ve google’da sitenizi aratıp linkinize tıkladığınız zaman costabrava diye bir siteye yönlendiren bir enfeksiyonunuz varsa altta paylaştığım fixcosta.rar dosyasını açıp içindeki PHP dosyasını hostunuza yüklüyorsunuz ve çalıştırıyorsunuz. sitenizdeki zararlı kodlar (eğer modifikasyona uğramamamışsa) temizleniyor.

Kaynak olarak http://redleg-redleg.blogspot.com/p/simple-script-to-find-base64decode-in.html adresindeki virüs bulucu kodu kullandım ve üzerine temizleyen kodu ekledim.

Daha sonra, eğer hostunuzda wordpress kurulu ise ve temalarınız arasında TwentyTen teması varsa, ve kullanmıyorsanız, silin.

 

English: Today I had this on my server and needed to fix like a hundred files which are infected with some nasty redirection script. So I wrote this php file to remove all the injected codes from my php files and I decided to share with you.

You can check if your server is infected or not by googling your web site and then clicking the link. If it opens your site, it’s ok. But if it redirects to “costabrava.bee.pl“, your server is infected. You should do something.

Its based on http://redleg-redleg.blogspot.com/p/simple-script-to-find-base64decode-in.html which finds the infected files, and I added the code to remove the costabrava.bee.pl header.

First, download the code below here and unrar it. there’s one php file named “fixcosta.php” and upload it into your server’s root directory. then run it.

Second, if you’re not using TwentyTen theme, delete the folder from wp-content/themes.

This’ll fix it for now. Then you should search how the hacker got into your ftp and uploaded these files. And find a fix for that too.

Saving passwords submitted by jQuery $.post function

Today I was struggling with “How can I make Chrome show the remember password form after I use a AJAX submit approach then after a success result redirect to a successful login page?” and it took my one hour to figure it out. I couldn’t find many solutions on the blogs that satisfied me on forums etc. so I wanted to write my own solution here.

First, assume you have a form like this:

<form id="loginform">
    <input name="username" type="text" />
    <input name="password" type="password" />
    <input type="submit" value="Log in" />
</form>

and your AJAX login javascript etc..

And you would like to submit it to “login.php” (or login.aspx – doesn’t matter), after successful login you want to redirect to “main.php”, here’s the trick:

1. point your form’s action to “main.php” (there wouldn’t be any database checking or field validation just opening the post-login page)

2. move the onsubmit=”return Login” part to input type=submit as onclick=”” event.

3. then change your javascript code like this

    function Login(){
        $.post("login.php",$("#loginform").serialize(),function(data){
	    if(data=="OK"){ //I assume you're returning "OK" after login from login.php
		$("#loginform").submit();
	    }else{
		//write your error showing statements here
            }
        }
    }

this way, you’re actually setting a session or cookie in “login.php” to state that your user has been successfully logged on and you just need to check that session or cookie at “main.php” if the user really is logged in. If not, just redirect the user to the login form to prevent misleads to main.php.

Silinmeyen dosya ve klasörlere çözüm!

Zaman zaman Windows’ta bir dosya silmek istediğinizde “Bu dosyayı silemezsiniz. Dosya kullanımda.” türü hataları hepimiz almışızdır. Dosyayla işimizin olmadığına eminiz ve bu dosyayı sistemden kaldırmak istiyoruz ama kaldıramıyoruz bir türlü. İşte bu pratik kod parçacığı, silinemeyen dosyaların bilgisayarın bir sonraki başlangıcında (Windows dosyayı daha kullanmaya başlamadan) silinmesi için Windows sağ klik menüsüne “Delete after reboot” şeklinde bir bağlantı oluşturup bu işlemi kolaylaştırmamızı sağlıyor.

Kullanımı şöyle;

Aşağıdaki kodu alın ve bir metin dosyasına yapıştırın.

 

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Delete on reboot\command]
@="CMD /E:OFF /C REG ADD HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\Currentversion\\RunOnce /v \"Del %1 OnNextReboot\" /d ^\"cmd.exe /c DEL /F /Q \\\"%1\\\"\" /f\""

[HKEY_CLASSES_ROOT\*\shell\Open]

[HKEY_CLASSES_ROOT\Folder\shell\Delete on reboot\command]
@="CMD /E:OFF /C REG ADD HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\Currentversion\\RunOnce /v \"Del %1 OnNextReboot\" /d ^\"cmd.exe /c RD /S /Q \\\"%1\\\"\" /f\""

 

  • Dosya uzantısını “.reg” olacak şekilde değiştirin ve çift tıklayın.
  • Karşınıza çıkan soruya “Evet” cevabı verin ve “başarıyla kayıt defterine eklendi” mesajını görün.
 
Artık sağ menüye tıkladığınızda “Delete on reboot” şeklinde bir komut olduğunu göreceksiniz. Bunu bir dosyanın bir sonraki başlangıçta silinmesini istediğinizde dosyaya sağ tıklayıp “Delete on Reboot” komutunu seçerek kullanabilirsiniz.
Kolay Gelsin.

Anahtar boyutu dönüşüm tablosu

Günlerdir elimdeki lokmaları, allen ve açık ağız anahtarları inç sisteminden metrik sisteme nasıl dönüştürürüm şeklinde değişik çalışmalar yapıyorum ve elimdeki liste ile malzeme arasında pek bir bağlantı kuramıyorum. Ya listedeki malzemeler elimde yok, ya da dönüştürme yaparken bir hata yapıyorum diye düşünüyordum. Sonra tabi ki vazgeçtim 🙂 ama yine de belki birileri doğrusunu biliyordur ve bu listeyi doğrulayabilir diye internette araştırıp bulduğum bu listeyi paylaşma ihtiyacı hissettim.

Bu tabloyu paylaşan arkadaşın alet çantasında da değişik ölçülerde anahtarlar mevcutmuş ve bu listeyi atölye duvarına veya alet çantası kapağı içine yapıştırın demiş. O kadar güveniyor sanırım listenin doğruluğuna. Neyse liste doğru ise aynı şeyi bende tavsiye ediyorum o zaman. Çünkü çok kafa karıştırıyor, gereğinden fazla yoruyor ve bir süre sonra da bıktırıyor.

Not : Tablo biraz yetersiz kaldığı için yeniden oluşturdum. Neyseki PHP biliyormuşum dediğim günlerden biri sanırım bu gün 😛

KRALİYET / METRİK ANAHTAR DÖNÜŞÜM TABLOSU

 

Metrik Sistem İnç Karşılığı İnç Farkı* Fark % Kraliyet Sistemi Metrik Karşılığı
8mm. 0.315″ 0.002″ 1% 5/16 7.938mm
9mm. 0.354″ 0.011″ 4% 11/32 8.731mm
10mm. 0.394″ 0.019″ 5% 3/8 9.525mm
11mm. 0.433″ 0.027″ 7% 13/32 10.319mm
12mm. 0.472″ 0.004″ 1% 15/32 11.906mm
13mm. 0.512″ 0.012″ 3% 1/2 12.7mm
14mm. 0.551″ 0.02″ 4% 17/32 13.494mm
15mm. 0.591″ 0.028″ 5% 9/16 14.288mm
16mm. 0.63″ 0.005″ 1% 5/8 15.875mm
17mm. 0.669″ 0.013″ 2% 21/32 16.669mm
18mm. 0.709″ 0.021″ 3% 11/16 17.463mm
19mm. 0.748″ 0.029″ 4% 23/32 18.256mm
20mm. 0.787″ 0.006″ 1% 25/32 19.844mm
21mm. 0.827″ 0.014″ 2% 13/16 20.638mm
22mm. 0.866″ 0.022″ 3% 27/32 21.431mm
23mm. 0.906″ 0.031″ 4% 7/8 22.225mm
24mm. 0.945″ 0.007″ 1% 15/16 23.813mm
25mm. 0.984″ 0.016″ 2% 31/32 24.606mm
26mm. 1.024″ 0.024″ 3% 2/2 25.4mm
27mm. 1.063″ 0″ 0% 1 1/16 26.988mm
28mm. 1.102″ 0.009″ 1% 1 3/32 27.781mm
29mm. 1.142″ 0.017″ 2% 1 1/8 28.575mm
30mm. 1.181″ 0.025″ 3% 1 5/32 29.369mm
31mm. 1.22″ 0.002″ 1% 1 7/32 30.956mm
32mm. 1.26″ 0.01″ 1% 1 1/4 31.75mm
33mm. 1.299″ 0.018″ 2% 1 9/32 32.544mm
34mm. 1.339″ 0.026″ 2% 1 5/16 33.338mm
35mm. 1.378″ 0.003″ 1% 1 3/8 34.925mm
36mm. 1.417″ 0.011″ 1% 1 13/32 35.719mm
37mm. 1.457″ 0.019″ 2% 1 7/16 36.513mm
38mm. 1.496″ 0.027″ 2% 1 15/32 37.306mm
39mm. 1.535″ 0.004″ 1% 1 17/32 38.894mm
40mm. 1.575″ 0.012″ 1% 1 9/16 39.688mm
41mm. 1.614″ 0.02″ 2% 1 19/32 40.481mm
42mm. 1.654″ 0.029″ 2% 1 5/8 41.275mm
43mm. 1.693″ 0.005″ 1% 1 11/16 42.863mm
44mm. 1.732″ 0.014″ 1% 1 23/32 43.656mm
45mm. 1.772″ 0.022″ 2% 1 3/4 44.45mm

Windows Desktop Search’in klasörlerde çıkmamasını nasıl sağlarız?

Windows Desktop Search, belki de çoğu kullanıcının hala nasıl çalıştığını tam kestiremediği ve windows explorer pencerelerinin arama yerini tutan ilginç bir uygulama. Hızlı aramalar yapılabilmesi için bilgisayarınızda belirttiğiniz klasörlerin bir index’ini oluşturan, daha sonra aramayı bu index üzerinde gerçekleştiren bir yazılım. Çoğu diğer hızlı arama yardımcıları gibi aynen.. Ama “çoğu zaman bu klasör indekslenmedi” gibi bahanelerle aradığınızı size getirmeyen ve sinir edebilen bir uygulama aynı zamanda.

Peki Windows pencerelerinde eski arama sayfanıza tekrar kavuşmak için ne yapabilirsiniz? İşte çözümü :

RegEdit’i çalıştırın  (Başlat > Çalıştır’ı tıkladıktan sonra ‘regedit’ yazıp enter’layın). Aşağıdaki kayıt anahtarına ulaşın:

HKEY_CURRENT_USER\Software\Microsoft\Windows Desktop Search\DS

Sonra ‘ShowStartSearchBand’ isimli kayda tıklayın ve değerini  ‘0′ yapın ve kapatın. Bundan sonra klasörlerinizde ara dediğiniz zaman, eski güvenilir windows arama yardımcınız çıkacaktır. Windows Vista’dan önceki windows sürümlerinde çalışıyor, diğerleri denenmedi.

Some VB6 Modules

Here are some VB6 Module files each serving a seperate purpose. The codes are VB6 codes and they are written in .bas modules so it’ll be easy to import these codes to your own programs. I thought it’ll be helpful because some of you might need them eventually, like I did. All thanks to their original coders.

Modules (all are .bas files):

FitBit : Yaşam aktivitenizi takip edin!

Her gün elektronik dünyasına yeni ve ilgi çekici elemanlar ekleniyor. Bunlardan birisi de FitBit isimli kişisel aktivite takip cihazı. Ufak boyutuyla her durumda yanınızda taşıyabileceğiniz bu cihaz sayesinde yapabilecekleriniz şunlar:

  • O gün içerisinde yaptığınız egzersizlerin miktarı
  • Ne kadar kalori yaktığınız
  • Yatağa girdiğiniz vakit ve uyuduğunuz süre
  • Uykunuzda kaç defa uyandığınız
  • Gün içerisinde kaç mil/km yürüdüğünüz
  • Ne kadar yemek yediğiniz ve aldığınız kaloriler
  • Ağırlığınız ve Vücut Kitle Endeksi (BMI) ‘niz

vesaire vesaire..

Ayrıca bu miktarlara bağlı olarak kendinize hedefler koyup bu hedeflerin gerçekleşme durumları, şimdiye kadar gerçekleştirdiğiniz aktivite rekorları, Bu aktivitelere bağlı olarak grafikleri FitBit’in sitesinde takip edebilirsiniz.

Fiyatı şu an 99$ ve henüz piyasaya çıkmadığı söyleniyor. Sitesinden edindiğim bilgiye göre Aralık sonu – Ocak başı gibi piyasaya sürülmesi bekleniyor. Ancak yahoo.com’un alışveriş sitesinde ön siparişler kabul ediliyor.

Daha fazla bilgi ve FitBit’in gerek cihaz gerek takip ortamı görüntüleri için http://www.fitbit.com adresini ziyaret edebilirsiniz.

Ödüle aday oldum! Ödülü Kazandım :)

PHPClasses.org’ta yazdığım ilk class kodu ilk ayında inovasyon ödülüne aday oldu 🙂 Desteğinizi esirgemeyin. Sayfaya girip oy vermek için önce üye olmanız gerekiyor. Üyelik işleminizi yaptıktan sonra oylama sayfasına giderek oyunuzu verebilirsiniz. Linkler burada :

SimpleXML for PHP4 Class

Oylama Sayfası

İnovasyon Ödülleri Hakkında Bilgi

Not: 10 kişi içinden 27.87%lik bir yüzde ile Nisan Ayı İnnovasyon ödülünü kazandım. Ödüllerden sadece birini seçebiliyomuşuz o yüzden bende o’reilly ‘den şu kitabı seçtim. İlerde lazım olma ihtimali çok yüksek çünkü 🙂

Hepinize desteğiniz için çok çok teşekkür ediyorum.

pngfix WordPress Plugin

This plugin uses CSS technique to fix the png image transparency issue and jQuery to apply this script to all of png images shown in the page. The CSS code added by the script is :

.png {
background-image: expression(
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + (this.tagName==\'IMG\' ? this[\'src\'] : this.currentStyle[\'backgroundImage\'].split(\'\"\')[1]) + ")",
this.runtimeStyle.backgroundImage = "none",
this.src = "{plugindir}/pixel.gif",
this.width = this.style.width | this.clientWidth,
this.height = this.style.height | this.clientHeight
);
}';

And the jQuery code which applies this css to all of the png images :

$(document).ready(function(){
if(($.browser.msie)&(parseInt($.browser.version)<7)){
$("img[src$='.png']").each(function(){$(this).addClass("png");});
}
});

That’s all. The jQuery library is included in the plugin so you don’t need to modify anything.

Installation is simple. Just follow these steps :

  1. Upload ‘wp-pngfix’ directory to the ‘/wp-content/plugins/’ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Thats all. Go to any page which contains some png images with IE and check if there’s any errors.

This should fix them all except backgrounds now.

Download: Official WordPress plugin page : http://wordpress.org/extend/plugins/wp-pngfix/

Note: This type of fixes cause slight color changes to your png images with background color, so you may have to change some css.If you use images without inner backgrounds and only need to show the background transparent, forget that note 🙂

Featured Plugins

GiottoPress by Enrique Chavez