Sayfalar

Translate Blog

16 Kasım 2013 Cumartesi

Android Kaydırılabilir Text Alanı / Scrolling TextView

Android ekranınızda kaydırılabilen bir metin alanına ihtiyacınız mı var?
Do you need a scrollable text area on your android app?

Use this 2 line code to make your text scroll.
Class kodunuzdaki text alanınızı tanımlayın ve ardından scroll edilebilmesi için 2. satırdaki kodu kullanın.
TextView liste = (TextView) findViewById(R.id.liste);
liste.setMovementMethod(new ScrollingMovementMethod());


Use this line
Şimdi de arayüz dosyanızda bulunan yani layouts da bulunan xml dosyanızdaki textview tagınızı düzenleyin.
<TextView
        android:id="@+id/liste"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:maxLines="10"
        android:shadowColor="#7D7D7D"
        android:shadowDx="1"
        android:shadowDy="1"
        android:shadowRadius="1.5"
        android:singleLine="false"
        android:text="@string/mesajbilgi"
        android:textColor="#3B3B3B"
        android:textSize="12sp"
        android:textStyle="bold"
        android:typeface="serif" />

Hepsi bu kadar

29 Eylül 2013 Pazar

Windows 8 64 Bit Türkçe Dil Paketi / Windows 8 64 Bit Language Packs

You can download language pack files here
http://www.gtkdb.de/index_27_2027.html

Yukarıdaki linkten dil paketlerini indirebilirsiniz.
Nasıl yüklendiğini soranlar olmuş,

Başlattaki arama yerine lpksetup.exe yazın ve açılan ekanda dil paketini seçebileceğiniz seenek var.
Üstteki seçenek yeni dil paketi yükleyi seçin, ordan bilgisayardan seçeneği ile cab dosyasını seçin.

1 Eylül 2013 Pazar

Android Pass Variable to Another Activity / Android Uygulamada Değişkeni Diğer Ekranlara Göndermek

Eğer uygulamanızda bir değeri başka bir activitye aktarmak istiyorsanız aşağıdaki kodları kullanabilirsiniz.  İlk aktivitenizden diğer aktiviteye geçir yaparken putExtra komutu ile değişkeninizi aöılan yeni aktiviteye gönderebilirsiniz.

Intent yeniLayout = new Intent(getApplicationContext(), NewActivity.class);
yeniLayout.putExtra("degisken_adi","deger");startActivity(i);

Aşağıdaki kodları da açılacak olan sayfaya yerleştirerek gönderilen değeri bir değişkene atarak kullanabilirsiniz.

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("degisken_adi");
}

18 Ağustos 2013 Pazar

Android Disable Screen Sleep/ Android Programın Açıkkan Ekranın Uyumasını Engelle

Eğer android programınızın açıkkan ekranınızın kararmasını engellemek istiyorsanız program ekranınınızın tasarımı olan layout sekmesindeki xml dosyanızın üst kısmına şu kodu eklemeniz yeterli;

android:keepScreenOn="true"

 Yani şu şekilde gözükmeli xml dosyanız;
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:fillViewport="true"
  android:keepScreenOn="true">


If you want your apps make your screen not goes black, you should use a little code in your screen xml file on layout.
android:keepScreenOn="true"
or
android:keepScreenOn="false"

So your apps will not be sleep while your layout on screen.

26 Temmuz 2013 Cuma

Android 4.2.2 XML Connection Error

if you are using xml connection on your main file onCreate on android, you probably see an error,

you should use this code to work properly,

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}
Write this code top of your main class. Thats all.

Eğer sizde android programlarken xml bağlantısı yapıyor ama sürekli hata alıyorsanız yukarıdaki kodu oncreate kısmına yapıştırın. Bu kod versiyonları kontrol edip sizin yazmış olduğunuz eski bağlantı kurallarını geçerli kılıyor. Eğer kullanmayacağım diyorsanız bilmeniz gereken birşey var, android 4.2.2 ve belkide biraz daha eski versiyonlarında uzun süren işlemler için kodları artık ana class içine yazamacaksınız. Harici bir klass oluşturup onun içine yazmanız gerekmekte.

28 Mayıs 2013 Salı

Photoshop Save For Web Layers to JPG Script / Katmanları Resim Olarak Kaydetmek

If you want to export your layers as jpg or something you should use File->Scripts->Export Layers To Files options. This script save your each layers to jpg or other types. But there is one problem is you want to save as jpeg, your images save as a "Photoshop Save As", mean big file size. What is you need to Save For Web your all layers? What is you dont want to see a prefix on your images like _0001_damnPrefix.jpg.
So if you want these solution, you should read blow explains. Have a nice days ;)

Photoshop belgenizdeki katmanları ayrı ayrı resim olarak kaydetmek ister misiniz? Tek bir tıklama ile.
Bunun için File->Scripts->Export Layers To Files seçeneğini kullanabilirsiniz. Resim türünü ve hangi klasöre yerleştirileceğini seçebilirsiniz.

0000_at.jpg
0000_essek.jpg

gibi resim isimleri elde edeceksiniz. Eğer elinizde çok resim var ise önündeki ek kısımları canınızı sıkacaktır.
Ayrıca resimleriniz boyutları biraz büyük olacaktır çünkü bu işlem belgelerinizi Save As menüsündeki kaydetme yöntemi ile kaydediyor.

Save For Web seçeneği ile katmanları toplu JPG kaydetme işlemi nasıl yapılır, ona değinelim. BU tarz problemler ile işi olmayanlar okumaya buradan sonra devam etmesinler ;)

C:\Program Files\Adobe\Adobe Photoshop CS5\Presets\Scripts
klasörünü açalım, Export Layers To Files.jsx dosyası sizin katmanlarınızı resim olarak kaydeden kod betiğidir. bu kodda ufak bir değişiklik yapacağız. Bu yüzden bu belgenin yedeğini başka bir klasöre alın. Ne olur ne olmaz.

Öncelikle isimleri düzeltelim;

How to remove _0001_ prefix on our images. Go 1030th row or find "zeroSuppress(i, 4)" string. You will see OLD CODE, change that code lines to NEW CODE, thats all.

"zeroSuppress(i, 4)" kelimesini aratalım yaklaşım 1030. satırda olmalı.

ESKİ KOD / OLD CODE
fileNameBody += "_" + zeroSuppress(i, 4);
fileNameBody += "_" + layerName;

Eski Kod başlığı altındaki kodları bulun onları kapatın veya silin, yerlerine aşağıdaki Yeni Kodu yapıştırın.

YENİ KOD / NEW CODE
fileNameBody += layerName;

Yani resimlerin isimlerinin önündeki _1234_ yazan kısmı kaldırmış olduk.




Gelelim belgemizi Save For Web şeklinde yani küçük boyutlu kaydetmeye.

How to Save For Web And Devices our layers, Go 700th row or find "Function: saveFile" string. You will see Old Code and change these lines to New Code, tataaaaa. The image quality is 60%, you ca change this number as you wish.

700. satıra gelin veya "Function: saveFile" metnini aratın. kaydetme işini yapan kısım burası. Ve aşağıdaki Eski Kodda bulunanları görün, onları silin yerine Yeni Kod başlığı altındakileri yapıştırın.

ESKİ KOD / OLD CODE
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.embedColorProfile = exportInfo.icc;
jpgSaveOptions.quality = exportInfo.jpegQuality;
docRef.saveAs(saveFile, jpgSaveOptions, true, Extension.LOWERCASE);

YENİ KOD / NEW CODE
jpgSaveOptions = new ExportOptionsSaveForWeb();
jpgSaveOptions.format = SaveDocumentType.JPEG;
jpgSaveOptions.includeProfile = false;
jpgSaveOptions.interlaced = 0;
jpgSaveOptions.optimized = true;
jpgSaveOptions.quality = 60; //Resim Kalitesini Buraya Yazabilirsiniz
activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, jpgSaveOptions);


Artık belgeniz hem küçük boyutlu oldu yeni katmanlarımızı Save For Web and Devices %60 kalitede kaydetmiş olduk.






8 Mayıs 2013 Çarşamba

A4 Cetvel Çıktıları / A4 Ruler Prints

Acil cetvel mi lazım oldu, eğer bilgisayar başındaysanız ve yazıcınız var ise hemen bir cetvel çıktısı alabilirsiniz.
Çeşitli boyutlarda  cetvel çıktıları mevcut. Siz sadece yazıcıdan yazdır demeniz yeterli. Bazı çıktılar 3-4 sayfadan oluşmakta ve yan yana birleştirerek çok daha uzun metreler elde edebilirsiniz.
http://www.vendian.org/mncharity/dir3/paper_rulers/

If you need a ruler rigth now, you can print one, use below link and print the pdf for a new ruler.
Yukarıdaki resme tıkladıktan sonra ekrana gelen resme sağ klik farklı kaydet yaparak bilgisayardan çıktısını alabilirsiniz.
You can click above image and save as then print for an imediate need.

1 Mayıs 2013 Çarşamba

Flash AS3 Movie Klip İçinden Root'a Erişmek / How To Call A Function on Root From MovieClip

Flash Action Script 3 ile bir movieclip'in içinden ana sahnede tanımladığınız bir fonksiyonu çağırmak başa beladır. Basit bir yolu da var tabi.
Ana sahnedeki kodumuzun sahneyeGel() olsun.
Siz onu çok çok derinlerde bulunan bir movie clipten çalıştırmak istiyorsanız

If you want to run a function on root from a deep deep movieclip you can use this code to call your function. sahneyeGel() is a function that written on root. And you can call this function from any movie clip with this code.

Object(root).sahneyeGel();

Komutu işinizi görecektir.

19 Nisan 2013 Cuma

C# Word Belgesi Açmak / Open Office Word Documents

Eğer c# ile office belgelerini açmak istiyorsanız aşağıdaki gibi bir kod kullanmalısınız. Using satırına System.Diagnostics eklemelisiniz. Aksi halde ProcessStartInfo kodu çalışmayacaktır.
Belgenizi açacağınız programın yolunu çift slashlı (//) olarak yazmalı, belgenizin adını seçmeli ve hangi dizinde olduğunu (@"C:\";) da belirlemelisiniz. Bu kodda butona tıklandığında açılan bir a.docx belgesinin örneğidir. 32 veya 64 bitlik bilgisayarlarda Program Files değişmektedir, kalınızda olsun.

If you want to open any document with any program, you should use ProcessStartInfo on c#.
You can use these codes for open word file. Other file types has the same way. Show the main program way  as FileName, and your file that wanted to open as Arguments. This sample show "open a.docx file on C:/ when you click button".


using System.Diagnostics;
using System.IO; //for File.Exist() command

private void button1_Click(object sender, EventArgs e)
        {         
           ProcessStartInfo startInfo = new ProcessStartInfo();
            //32 Bits
            //startInfo.FileName = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD.EXE";

            //64 bits
            startInfo.FileName = "C:\\Program Files (x86)\\Microsoft Office\\Office12\\WINWORD.EXE";
            startInfo.Arguments = "a.docx";
            startInfo.WorkingDirectory = @"C:\";
            startInfo.WindowStyle = ProcessWindowStyle.Maximized;
            if (File.Exists(startInfo.WorkingDirectory + startInfo.Arguments))
            {
                Process process = Process.Start(startInfo);
            }
            else
            {
                MessageBox.Show("Belge Yok");
            }

18 Nisan 2013 Perşembe

C# ile Word ve Excel Den Veri Almak / Read Docx Word File Using C#

How to get data from Microsot Office Word file, means docx files.
First of all you must add referance to your project. Rigth Click to your project, click  Add Referance.
Choose the COM tab and find Microsoft Word Object Library. This is for using below code.
Dont forget to add using row.
Below code use a.docx that stay in C drive, and add the whole text into the richedit object. So you should add a button and richedit also.

Öncelikle kodları hemen vereceğim ama office referanslarını eklemeniz lazım projenize.
Proje adınıza sağ klik Add Referance, ordan COM sekmesini açın, listede Microsoft Word Object Library seçeneğini ekleyin.

Kodlarınınzın en yukarısında bulunan using satırına ise şunları ekleyin

using Word = Microsoft.Office.Interop.Word;
Sahnenize bir RichEdit ve buton ekleyin, butonunuza şu kodları ekleyin;
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
            object miss = System.Reflection.Missing.Value;
            object path = @"C:\a.docx";
            object readOnly = true;
            Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
            string totaltext = "";
            for (int i = 0; i < docs.Paragraphs.Count; i++)
            {
                totaltext += " \r\n " + docs.Paragraphs[i + 1].Range.Text.ToString();
            }
            richTextBox1.Text = totaltext;
            docs.Close();
            word.Quit();



İşlem tamam C sürücünüzde bulunan a.docx belgesini okudunuz. Excellide siz deneyin ben denemedim ;) ONun da referansdan eklemelisiniz. Microsoft.Excel, ....

Php İle Dizinde Bulunan Resimler Üzerine Toplu Yazı Yazmak

Dizinde bulunan yüzlerce resminiz olabilir, bunların hepsinin üzerine ayrı ayrı resim, logo veya yazı eklemek ihtiyacınız olabilir. Bunun için gidilecek yolu önce maddeler halinde yazayım. Yapmanız gereken şeyler;

  1. Kütüphane Kontrolü: Php GD kütüphanesi kullanarak resimleri işlemeniz lazım. Bu komutlarla resimleri düzenleyebilirsiniz. Muhtemelen kendi bilgisayarınızda localde kullanacağınız serverlarda bu kütüphane varmı yokmu kontrol edilmeli. Yoksa kurulmalı veya internetteki bir serverda denemelere devam edilmeli.
  2. Yazı Dizisi: Dizindeki resimlere yazdırılacak yazıları bir dizide tutacaksınız. Dizideki sıralama, server içindeki sıralama ile aynı olmalı. Bunun nasıl yapılabileceğinden bahsedeceğim merak etmeyin.
  3. Dizin Tarama ve Resim İşleme: Klasörünüzün içindeki resimleri taramak için kod kullanacağız, FAKAT KLASÖRDE RESİMDEN BAŞKA BİRŞEY BULUNMASIN. Her resim için GD kodları ile (imagecreatefromjpeg, imagecolorallocate, imagefill, imagecopyresampled, imagejpeg) düzenleme yapıp ilgili yazıyı resimlerimize yazdıracağız.
  4. Kayıt: İşlenen resimleri başka bir dizine aynı isimde kaydedeceğiz.
1. KÜTÜPHANE KONTROLÜ
Localde çalışıyorsanız aşağıdaki kodu bir php dosyasına yazıp çalıştırın.
<?php
phpinfo();
?>
Ekranda serverınıza ait bilgiler gelecektir. Burada aradığımız bilgi GD. GD Support  değerinin enabled yazıyor olması lazım. Yazmıyorsa veya GD ile alakalı birşey yok ise kurmalısınız. Nasıl olacak bilmiyorum :D Google amcaya sorun. İnternette bir serverınız varsa orada deneyin garanti açıktır.

2.YAZI DİZİSİ
Eğer elinizde 500 resim var ve bunlara 500 ayrı yazı yazmak istiyorsanız bu yazı dizisini oluşturmanız lazım.
Benim 532 dosyam var ve bu dosyaların her birine Türkçe karakterleri doğru yazılmış yazılar yazmak istiyorum. Bu yüzden bu resim belgelerinin Düzgün isimlerinin listesi lazım. Elinizle yazarsanız doğru sonucu elde edersiniz AMA YANLIŞ SIRADA. Yukarıda gördüğünüz sıralama işletim sisteminiz tarafından size gösterilen sıralamadır, fakat php kodu ile sıralama yaptığınızda yukarıdaki sırada resimleriniz sıralanmamaktadır.
Php ile sıralama kodu yazıp klasörünüzün belge isimlerinizi listelediğini zaman yukarıdaki gibi farklı sıralamalar elde edebilirsiniz. İşimizi garantiye almalıyız. Bunun için bir iki yazı önce bahsetmiş olduğum dizin sıralama kodlarını kullanacağız.

<?php
$dizi = array();
$dizin = "b/"; //dizininizin yolu
$ac = opendir($dizin);
while($x=readdir($ac)) {
if ($x != "." && $x != "..") {
$dizi[] = $x;
}
}
sort($dizi);

foreach($dizi as $x => $y) {
 echo $y."<br>";
}
?>

Yukarıdaki kodu bir php belgesine yapıştırıp, $dizin değişkeninizi de yolunuz olarak değiştirdikten sonra çalıştırın. Ekrana dizin listeniz gelecektir. Türkçe karakterleriniz bozuk geliyorsa Dreamweaver kullananlar için Page Propertiese'e girip Encoding değerini Türkçe yapmaları lazım. Sonuç şu şekilde;
Yukarıdaki listeyi kopyalayın ve excell'e yapıştırın. Amacımız bu isimlerin düzgün yazılmasını sağlamak veya resimlerin üzerine yazdıracağınız yazılar farklı yazılar ise bu belge içinde sırayla yanlarına yazmak istediğiniz metinleri yazabilirsiniz.


Ben siz görün diye formülü açık halini de yazmıştım. Bu excel belgesindeki amaç klasördeki aynı sırada bir metin dizisi elde etmek. Ve bu sayede metinleri dizindeki resimlerin üzerine aynı sırada yazdırabilmek. Tırnak işaretli metin satırlarınızı oluşturduysanız ki yukarıdaki ortadaki sütundan bahsediyorum, o sütunlarının tamamını kopyalayıp notpad veya varsa ki olsun notpad++ a yapıştırın.
'10 Kuruş',
'25 Kuruş',
'50 Kuruş',
'5 Kuruş',

Notpad programında yukarıdaki sarı kırmızı ile seçtiğim tırnak virgül ve alt satırdaki tırnağa kadar bir seçim yapın kopyalayın ve CTRL+H ile değiştir menüsünü açıp yapıştırın, yerine yine aynı işaretleri yazın ama elinizle. Amacımız ENTER kodunu ortadan kaldırmak ve hepsini yan yana yazdırmak aynı şu şekilde;
'10 Kuruş','25 Kuruş','50 Kuruş','5 Kuruş','Tl','Abla','Abla','Adım','Akrep','Akşam Yemeği',

Bu tarz bir liste elde ettiyseniz artık dizimiz hazır demektir. Şu kodu bir kenarda tutun bunu kullanacağız.
$etiket = array('10 Kuruş','25 Kuruş','50 Kuruş','5 Kuruş','Tl','Abla','Abla','Adım','Akrep','Akşam Yemeği',)

3. DİZİN TARAMA VE RESİM İŞLEME


  • Artık klasörünüzün içinde resimlerinizin bulunduğu bir klasör "a/". FAKAT KLASÖRDE RESİMDEN BAŞKA BİRŞEY BULUNMASIN.
  • Resimlerinizi son hallerini kaydedeceğiniz bir klasör "b/",
  • C:\Windows\Fonts klasörünüzden kopyalayıp yapıştırdığınız font belgeniz "verdanab.ttf", dışarıdan bulduğunuz başka bir ttf font dosyasını da koyabilirsiniz.
  • Ve dizin tarayıp resimleri metinlerle birleştirecek olan bir php dosyanız olmalı.
Bunlardan biri veya birkaçı yok ise hemen temin edin ;) Yemeğimizi pişirme zamanı geldi, aşağıdaki kodu kopyalayıp bir php dosyasına yapıştırın. 
<?php 
$etiket=array('10 Kuru?','25 Kuru?','50 Kuru?','5 Kuru?','Tl','Abla','Abla','Adym','Akrep','Ak?am Yeme?i');
//print_r($etiket);

$dizi = array(); 
$dizin = "a/"; 
$ac = opendir($dizin); 
while($x=readdir($ac)) { 
if ($x != "." && $x != "..") { 
$dizi[] = $x; 
} 
} 
sort($dizi);

// Bu kodlar dönüştürme işlemi uzun sürdüğü zaman serverın işleminizi iptal etmesini geciktiren kodlardır.
set_time_limit(10); 
ini_set('max_execution_time', 1000); // Buradaki 1000sn yi istediğiniz kadar uzatabilirsiniz. Ben 500 resim için 1.5dk bekledim. Fazla fazla süre verdim. Aksi halde işleminiz yarıda kalır 160 tanesini yaparsınız ve işleminiz kesilir. Resim işleme uzun bir süreçtir Unutmayın.


foreach($dizi as $x => $y) { 
 //echo $x.") ".$etiket[$x]." - ".$y."<br>";
 $font ='./verdanab.ttf'; //klasörümüe kopyaladigimiz boldlu font dosyasi
 $kaynak = "a/".$y; // resimleri alacagimiz dizin
 $resim = imagecreatefromjpeg($kaynak); //GD kodu ile resmimizi Ramde olusturuyoruz

 $yeniresim=imagecreatetruecolor(803,862); //GD kodu ile Daha büyük bir resim olusturuyoruz
 
 //kullanacagimiz renkleri tanimliyoruz
 $beyaz = imagecolorallocate($yeniresim, 255, 255, 255);
 $gri = imagecolorallocate($yeniresim, 128, 128, 128);
 $siyah = imagecolorallocate($yeniresim, 0,0,0); 
 //arkaplan rengimizi beyaz yapiyoruz
 imagefill($yeniresim, 0, 0, $beyaz);
 
 //yeni olusturdugumuz beyaz resim ile kaynaktan aldigimiz resimi birlestiriyoruz.
 //bu kodda resim yukaridan 94px bosluktan sonra ekrana yerlestirilmistir. En sondaki 2 deger resimin genislik ve yükseklik degerleridir.
 //
 imagecopyresampled($yeniresim,$resim, 0, 94, 0, 0, 803, 768, 803, 768);
 
 //yazilarin bulundugu diziden $etiket[$x] içinde bulunan yazidaki türkçe karakterleri UTF-8 yapiyoruz.
 $yazi= iconv("iso-8859-9","utf-8",$etiket[$x]); //türkçe karakter sorunu çözüldü
 
 //bu bir hizalama fonksiyonu, uzun aramalar sonucu denk geldim. Yazinizi ortalamak için kullabilirsiniz.
 hizala($yeniresim,40,0,0,63,$gri,$font,$yazi, $alignment='C');
 hizala($yeniresim,40,0,0,60,$siyah,$font,$yazi, $alignment='C');
 
 //Resminize yaziyi da ekledikten sonra artik bir yerlere kaydetmelisiniz. 
 //b/$y dedigimiz b dizininde $y ismiyle kaydedilecek bu resim.
 imagejpeg($yeniresim,"b/$y",100);

} 
closedir($ac); 


//yazıyı ortaya Hizalamak için bir fonksiyon. 

function hizala($image, $size, $angle, $x, $y, $color, $font, $text, $alignment='C') 
{ 
   //check width of the text 
   $bbox = imagettfbbox ($size, $angle, $font, $text); 
   $textWidth = $bbox[2] - $bbox[0]; 
   switch ($alignment) { 
       case "R": 
           $x -= $textWidth; 
           break; 
       case "C": 
           $x -= $textWidth / 2; 
           break; 
   } 

   //ekrana metni yazdır, ben metini resmin ortasında yazdırmak istediğim için 400 olan 
   //resmimin genişliğine -değer olan xi ekledim. ortalanmış oldu
   imagettftext ($image, $size, $angle, $x+400, $y, $color, $font, $text); 
} 
?>


Kodlar içine açıklamalar yazdım. Onları okuyarak nerenin ne işe yaradığını anlayabilirsiniz.
Yukarıdaki kodlarda öncelikle kelime dizimiz yazılmış. Ardından aynı dizin tarama kodu çalıştırılmış ve her bir resim için GD kütüphanesinin kodları kullanılarak resimlere dizininin içindeki bir kelime eklenmiş. Bu ekleme işlemi tam ortada yapılmış yani yazının resminizin ortasında durmakta. Bu hizalama olayı biraz sıkıntılı idi, araştırınca buldum. hizala isimli bir fonksiyon yazınızı alıp tam resminizin ortasına yazınızı eklemekte.

Kaydetme işlemide bu esnada yapılmakta.
imagejpeg($yeniresim,"b/$y",100);
Kodu ile. yeni oluşturulan resimi b dizininde eski ismi ile kaydetmiş oluyoruz.

Sonuç şu şekilde;

Yazının gölgesi olduğuna dikkati çekerim ;) Gd kodlarını araştırarak başka şeyler de yapabilirsiniz. Özellikle türkçe karakter destekleyen fontlar kullanın. Resim belgelerinizin isimlerinde boşluklar ve türkçe karkterler var ise problem yaşayabilirsiniz, yaşamamak için Tüm PHP belgeleriniz TÜRKÇE ENCODING yapılması gerekiyor. Yukarıda bahsetmiştim nasıl yapılacağından.

Benim kullandığım resim belge boyutları ile sizinkiler arasında farklar vardır. imagettftext ve imagecopyresampled


Komutlarında kullanılan koordinat, genişlik yükseklik bilgileri değiştirilmelidir. Hangisi hangisi olduğunu öğrenmek isterseniz googleda aratın php.net sitesinden çıkan yani ilk sonuçlara tıklayın hangisi hangisi orda yazıyor, ingilizce ama kolay gelsin (translate.google.com)

17 Nisan 2013 Çarşamba

Php İle Yapılan İşlemin Çalışma Süresini Arttırmak / Increase PHP Execution-Working Time

Sayfanızda kod çalışıyor ama tamamlanamadan duruyor mu?
Uzun bir döngüyü başlattınız ama sonlanmadan bitti mi?

Problem muhtemelen kodunuzdadır, düzeltin geçer ;)
Demeyeceğiz, ilacını vereceğiz,

Başlattığınız işlem serverınız tarafından çok uzun sürdüğü için iptal edilmekte. Ama bu bekleme süresini elinizle değiştirebilirsiniz. Hemde php.ini dosyanızı kurcalamadan ufak bir kod ile. Php dosyanızın içine aşağıdaki kodu ekleyin;


set_time_limit(10);

ini_set('max_execution_time', 1000);


max_execution_time komutunu çalıştırdığınız belge için arttırarak o an yapılan işlemin 1000sn de sürse kesilmeden devam ettirileceği anlamına gelmektedir.

Üzülerek bildirmek isterimki set_time_limit ne işe yarar bilmiyorum. Ama bu kod sayfamda 500 adet resim işlenip bir dizine kaydedilirken işlemlerimin yarıda kesilmesini engelledi.

If your php page has a log job to do, and has a deadlock while running, you should change your php execution settings. You can change file execution time on php.ini but you dont need to do this way.
As an easy way you can use above code on your php file. Make execution time to 1000 (16 min) ;)

I have 500 images to process on one time, and have a deathlock on 160th. I use this code and now i can process all my images for one attampt in one php file.

Php İle Alfabetik Türkçe Dizin Listeletme

Klasörlerin içindeki belgeleri alfabetik listelemek için aşağıdaki kodu kullanabilirsiniz. $dizin içini listelemek istediğiniz klasörün yoludur.

<?php
$dizi = array();
$dizin = "b/";
$ac = opendir($dizin);
while($x=readdir($ac)) {
    if ($x != "." && $x != "..") {
         $dizi[] = $x;
    }
}
sort($dizi); //listelenen isimler alfabetik sıralanıyor.

foreach($dizi as $x => $y) {
 echo $y."<br>"; //ekrana satır satır yazdırılıyor.
}
?>


Yukarıda görüldüğü gibi sayfanızdaki bilgilerin türkçe karakterlerinde bozulma oluyorsa belgenizin encoding olayını Türkçe olarak değiştirmelisiniz. Bunu Dreamweaverda veya Notpad++ ile yapabilirsiniz. Dreamweaver'da Properties panelinde Page Properties / Title Encoding / Türkçe (Windows)
Notpad++'da Kodlama/Karakter Grubu / Türkçe / Windows-1254

Hiçbiri işe yaramıyorsa kodlarınızı kopyalayın, boş bir belge açıp içine yapıştırın. Encoding ayarını yapıp yeniden kaydedin.

22 Şubat 2013 Cuma

Linux İşletim Sisteminin Kısa Hikayesi


Kaderin ilginç oyunları,

Dosya:Linus Torvalds.jpegLinus Torvalds, 1991 yılının başlarında üniversitede öğrenciyken, Unix işletim sistemine uzaktan bağlandığı Terminal arayüzünü beğenmemiş, ve kendisi bir tane yazmak istemiş. Yanlız normalde unix'te çalışan basit bir program yazmak varken o donanımlara direk erişim yapabilen bir yazılım hazırlamış, bu yaptığı yazılım öylesine büyük olmuşki şu anda cep telefonumun içinde bulunan işletim sisteminin oluşturulmasına sebep olmuş.

İşin ilginç kısmı bu değil, ilginç olan basit bir yazılım yazmak yerine neden donanımlara doğrudan erişen bir ana yazılım yazmış olması, yani basitçe neden bir işletim sistemi gibi davranan bir program yazdığı.

Çünkü uzun zamandır para biriktirerek aldığı yeni Intel-386 çipli bilgisayarının donanım kabiliyetlerini görmek istemiş. Ve istemeden de olsa inanılmaz bir sektörü devreye sokmuş. Evet Linux böyle yazılmış.

Ve şu anda bilgisayarlarda, cep telefonlarında hatta saatlerde bile bu işletim sistemi kullanılmakta. Hemde ücretsiz.

Geçmişte kader çizgisinde oluşan minicik çatallanma, gelecekten bakıldığında inanılmaz yolların birleşimine tekamül etmiyormu!

Linus savurgan bir çocuk da olabilirdi. Yeni bilgisayar için para biriktirmek yerine profesör olan babasından para isteyebilir babası da olmaz diyebilirdi. İşte o zaman neler olurdu kim bilir :D

Linux işletim sistemlerinin ücretsiz olmasının sebebide çok basit bir geçmiş detayında gizli. Linus iyileştirme ve geliştirme önerileri almak için işletim sisteminin ilk versiyonunu üniversitenin bilgisayarı üzerinden internette yayınlamaya karar verdi. Ve birçok üniversite uzmanı cevap verdi, düzeltmeler yapıldı. Ve Linux kararlı bir hal alınca üniversitedeki birçok uzman bunu kullanmaya ve yaymaya başladı.

Birileri kodları alıp gizleyerek satmasın diye GPL denilen Açık Kaynak Lisansı altına yayınladı. Bu sayede sistemde değişiklik, düzeltme yapanlar bunları yayınlamak zorunda kaldı. Ve bu güne kadar da halen daha aynı yöntem devem etmekte. Bu yüzden ücretsiz, bu yüzden açık kaynak...