Archive for Mart 2010

JDBC de Tablonun Column Bilgilerini Almak

com.mysql.jdbc.DatabaseMetaData class i ile column a ait bütün bilgileri alabiliriz. Aşağıda basit bir örnek var. Daha ayrıntılı bilgi için JavaDoc incelenmelidir.

1
2
3
4
5
6
7
8
DatabaseMetaData meta = (DatabaseMetaData) connection.getMetaData();
ResultSet rsColumns = (ResultSet) meta.getColumns(null, null, tables[i], null);
String columnNameStr = rsColumns.getString("COLUMN_NAME");
String columnTypeStr = rsColumns.getString("TYPE_NAME");
ResultSet primaryKeys = (ResultSet) meta.getPrimaryKeys(null, null, tables[i]);
while(primaryKeys.next()) {
      String pri = primaryKeys.getString("COLUMN_NAME");
}

JSP/Servlet Dosya Upload Etmek

JSP ve Servlet ile dosya upload etmek için OReilly’s COS kütüphanesi kullanılabilir.

1. İlk önce cos kütüphanesini projemize eklememiz gerekiyor. Netbeans de projenize sağ tıklayıp “Properties” altındaki “libraries” kategorisinden kütüphaneyi ekleyebilirsiniz.

upload1

2. Dosya upload etmek için jsp dosyamıza “file” türünden bir input içeren form ekliyoruz.

1
2
3
<form action="Upload" enctype="multipart/form-data" method="post"> <input name="uploaded" type="file" />
<input name="save" type="submit" value="Upload" />
</form>

3. Servlet e gelen request i MultipartRequest e cast etmemiz gerekmektedir. Bunun için processRequest fonksiyonunu aşağıdaki şekilde oluşturuyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        System.out.println("upload servlet");

        try {
            /**
             * Parse request using MultiparRequest since it is a multipart/form-data
             * throws IOException if request is not multipart
             *
             * So, if form is not yet submitted Upload servlet will show upload.jsp as response
             * if form is submitted Upload servlet will process the request at upload() function
             */

            MultipartRequest multipartRequest = new MultipartRequest(request, getServletContext().getRealPath("/"), /* 1MB */ 1024 * 1024, new DefaultFileRenamePolicy());
            if (multipartRequest.getParameter("save") != null) {
                upload(request, response, multipartRequest);
            } else {
                throw new IOException("Display Upload Dialogue");
            }
        } catch (IOException ex) {
            displayUpload(request, response);
        }


    }

4. upload ve displayUpload fonksiyonlarını aşağıdaki şekilde tanımlıyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void upload(HttpServletRequest request, HttpServletResponse response, MultipartRequest multipartRequest) throws IOException {

        /**
         * Get uploaded file
         */

        File tmpFile = multipartRequest.getFile("uploaded");

        /**
         *  Move temporary file to actual destination
         */

        File dirToMove = new File(getServletContext().getRealPath("/"));
        String newFileName = "uploaded" + tmpFile.getName().substring(tmpFile.getName().lastIndexOf('.'));
        File fileToMove = new File(dirToMove, newFileName);
        tmpFile.renameTo(fileToMove);


        tmpFile.delete();

        response.sendRedirect("uploaded.jsp");
    }
1
2
3
4
private void displayUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        getServletContext().getRequestDispatcher("/WEB-INF/jspf/upload.jsp").forward(request, response);
    }

5. Yukardaki fonksiyonlar basit bir upload işlemini yapacaktır. Daha ayrıntılı bilgi için O’Reily’s COS’s javadocs unu incelemek faydalı olacaktır.

kaynak

java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream hatasının çözümü

Eğer jsp ve servlet kullanarak dosya upload etmek istiyor ve bu hatayı alıyorsanız, %JRE%\jre\lib\ext klasöründeki common-file-io jar ini veya dosya upload etmek için başka bir kütüphane kullanıyorsanız onun jar ini silmeniz gerekiyor.

JavaFX Nedir?

JavaFX zengin medya ve içerik sunarak Web deneyiminizi daha zevkli hale getirir. Kullanıcılar JavaFX uygulamalarını bir tarayıcıda çalıştırabilir veya sürükleyip bırakarak masaüstüne kopyalayabilir. JavaFX her zaman sorunsuz çalışan bir arabirimdir!

  

JavaFX gücünü Java’dan alır: JavaFX, yazılım geliştiricilerin JavaFX uygulamalarında istedikleri Java kitaplığını kullanmalarına olanak sağlayarak Java’nın gücünü artırır. Böylece yazılım geliştiriciler Java alanındaki becerilerini artırabilir ve etkileyici bir görsel deneyim sunmak için JavaFX’in sağladığı olağanüstü sunum teknolojisinden yararlanabilirler.

 

JavaFX’in başlıca özellikleri:

- Kullanıcıların JavaFX uygulamalarını bir tarayıcıda veya tarayıcıya gerek kalmadan, masaüstüne sürükleyip bırakarak görüntülemelerini sağlar.

- Project Nile sayesinde tasarımcı ile yazılım geliştirici arasında verimli bir iş akışına olanak verir: Tasarımcılar, JavaFX ve NetBeans IDE kullanan Web kodu yazarlarıyla birlikte çalışırken kendi seçtikleri araçları kullanabilirler.

- JavaFX uygulamalarında her tür Java kitaplığının kullanılmasına olanak sağlayarak Java’nın gücünü artırır.

- Yazılım geliştiricilerin zengin içerikli, etkileşimli ve etkileyici uygulamalara Web tabanlı vektör grafiği, animasyon, ses ve video gibi öğeler yerleştirmelerine olanak verir.

  

JavaFX teknolojisi hakkında daha fazla bilgi edinmek için javafx.com veya java.sun.com/javafx Web sitesini ziyaret edin.

  

kaynak : http://www.java.com/tr/about/

Netbeans de JDBC ile Mysql Bağlantısı

1. Öncelikle Mysql JDBC driver ini indiriyoruz.

Connector-J 3.1.14

2. Bu jar dosyasını projemizin “Libraries” kısmına ekliyoruz.

image

3. Database bağlantısı için class imizda aşağıdaki fonksiyonu oluşturuyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public Connection connect(String conURL, String user, String pass) throws SQLException {

     Connection connection = null;

     // load jdbc driver
     try {
          Class.forName("com.mysql.jdbc.Driver");
     } catch (ClassNotFoundException ex) {
          Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
     }

     connection = DriverManager.getConnection(conURL, user, pass);

     return connection;

}

4. Bir query çalıştırmak için aşağıdaki kodu kullanıyoruz.

1
2
3
connection = jdbc_connect.connect(connectionURL, connectionUser, connectionPass);
statement = connection.createStatement();
rs = statement.executeQuery("SELECT * FROM deneme");

5. Yukarıdaki koddan oluşan result seti aşağıdaki kod ile ekrana bastırabilir.

1
2
3
4
5
while (rs.next()) {
     System.out.println(rs.getString("id"));
     System.out.println(rs.getString("name"));
     System.out.println(rs.getString("surname"));
}

6. Insert, update ve delete için aşağıdaki kodu kullanıyoruz.

1
statement.executeUpdate(sqlQuery);

7. Hepsini bir araya toplarsak aşağıdaki class oluşur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package saxparser;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import sun.applet.Main;

/**
 *
 * @author ugur
 */

public class JDBC_Connect {

    public Connection connect(String conURL, String user, String pass) throws SQLException {
        Connection connection = null;

        // load jdbc driver
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        connection = DriverManager.getConnection(conURL, user, pass);
        return connection;
    }

    public static void main(String[] args) throws SQLException {

        String connectionURL = "jdbc:mysql://localhost:3306/ugur?";
        String connectionUser = "root";
        String connectionPass = "pass";
        Connection connection = null;
        Statement statement = null;
        ResultSet rs = null;

        try {            
            JDBC_Connect jdbc_connect = new JDBC_Connect();

            connection = jdbc_connect.connect(connectionURL, connectionUser, connectionPass);
            statement = connection.createStatement();
            rs = statement.executeQuery("SELECT * FROM deneme");

            while (rs.next()) {
                System.out.println(rs.getString("id"));
                System.out.println(rs.getString("name"));
                System.out.println(rs.getString("surname"));
            }

            String name = "ugur";
            String surname = "donmez";
            String sqlQuery = "INSERT INTO deneme (name,surname) VALUES (\"" + name + "\",\"" + surname + "\")";


            statement.executeUpdate(sqlQuery);

        } catch (SQLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            connection.close();
        }

    }
}

Java Garbage Collector

• Java virtual machine(JVM) bir java uygulaması tarafından oluşturulan bütün objeleri heap de tutar.
• Objeler New() komutuyla oluşturulur ama program tarafından yok edilmezler.
• Garbage collector kendinden başka referansı olmayan objeleri otomatik olarak yok eden bir işlemdir.

Garbage Collector un avantajları
• Programcı hafıza yönetiminden ( memory management ) bağımsız olarak program yazabilir.
• Hafıza yönetimi yüzünden program çökmez.

Garbage Collector un dezavantajları
• Sisteme fazladan yük getirir.
• Garbage collectorun ne zaman çalışacağı tam olarak bilinemez.

Garbage Collector Java API
• Object class ındaki finalize() methodu
- Bir objenin referansı kalmadığı zaman garbage collector tarafından çağırılır.
• System class ındaki gc() methodu
- Garbage collector u çalıştırır.
- System.gc() çağırılması Runtime.getRuntime().gc() çağırılması ile aynıdır.

Java Downcasting

Java da bir base class i daha belirli bir class a çevirme işlemine downcasting denilir. Mesela Object class ini String class ina çevirmek. Bu casting işlemi objeyi tam olarak çevirmez, sadece çevirdiğini iddia eder. Bundan dolayı bazı durumlarda compile time veya runtime hataları alınabilir.




Örnek verecek olursak :


Çalisabilecek kod :

1
2
3
Object o = getSomeObject();

String s = (String) o; // Burada compile time hatası alınmaz çünkü o objesi String class inin referansına sahip olabilir.



Runtime hatası alacak kod :

1
2
3
Object o = new Object();

String s = (String) o; // Object class inin String class ina referans? olmad??? için runtime hatas? olacak



Çalışan kod:

1
2
3
Object o = "a String";

String s = (String) o; // String referansı olduğu için çalışacak



Compile time hatası alacak kod :

1
2
3
Integer i = getSomeInteger();

String s = (String) i; // i nin String class i na referansı olmadığı için dermele anında hata verecektir.



referans : stackoverflow.com

Visual Studio 2008 e Irrlicth 3d Motoru Kurulumu

1. Irrlicth in son sürümünü aşağıdaki adresten indiriyoruz.

http://irrlicht.sourceforge.net/downloads.html

2. Zip dosyasını açıyoruz.

3. Irrlicth-x.x/include un altındaki header dosyalarının hepsini C:\Program Files\Microsoft Visual Studio 9.0\VC\include klasörüne kopyal?yoruz.

4.   Visual Studio 2008 de Tool->Options->Project and Solutions->VC++ Directories kısmına aşağıdaki iki satırı ekliyoruz.

…/Irrlicth-x.x/include

…/Irrlicth-x.x/lib/Win32-visualstudio

 

image

 

5. Visual Studio 2008 de Project->Options->Configuration Properties->Linker->Input->Additional Dependecies kısmına aşağıdaki satırı ekliyoruz.

Irrlicht.lib

image

 

6. Yeni bir proje oluşturuyoruz.

 

image

 

7. Irrlicth in header dosyalarını projemizin header kısmına ekliyoruz.

 

image

 

…\irrlicht-x.x\include altındaki bütün dosyaları ekliyoruz.

image

 

8. Source folder ina yeni bir cpp dosyası ekleyip aşağıdaki kodu ekliyoruz.

 

#include <irrlicht.h>
#include <iostream>
using namespace irr;
#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
// ask user for driver

video::E_DRIVER_TYPE driverType;

printf("Please select the driver you want for this example:\n"\
" (a) Direct3D 9.0c\n (b) Direct3D 8.1\n (c) OpenGL 1.5\n"\
" (d) Software Renderer\n (e) Burning's Software Renderer\n"\
" (f) NullDevice\n (otherKey) exit\n\n");

char i;
std::cin >> i;

switch(i)
{
case 'a': driverType = video::EDT_DIRECT3D9;break;
case 'b': driverType = video::EDT_DIRECT3D8;break;
case 'c': driverType = video::EDT_OPENGL;   break;
case 'd': driverType = video::EDT_SOFTWARE; break;
case 'e': driverType = video::EDT_BURNINGSVIDEO;break;
case 'f': driverType = video::EDT_NULL;     break;
default: return 1;
}

// create device and exit if creation failed

IrrlichtDevice *device =
createDevice(driverType, core::dimension2d<u32>(640, 480));

if (device == 0)
return 1; // could not create selected driver.
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
device->getFileSystem()->addZipFileArchive("C:/Users/Ugur/Desktop/irrlicht-1.6/media/map-20kdm2.pk3");
scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
scene::ISceneNode* node = 0;
if (mesh)
node = smgr->addOctTreeSceneNode(mesh->getMesh(0), 0, -1, 1024);
//              node = smgr->addMeshSceneNode(mesh->getMesh(0));
if (node)
node->setPosition(core::vector3df(-1300,-144,-1249));
smgr->addCameraSceneNodeFPS();
device->getCursorControl()->setVisible(false);
int lastFPS = -1;

while(device->run())
{
if (device->isWindowActive())
{
driver->beginScene(true, true, video::SColor(255,200,200,200));
smgr->drawAll();
driver->endScene();

int fps = driver->getFPS();

if (lastFPS != fps)
{
core::stringw str = L"Irrlicht Engine - Quake 3 Map example [";
str += driver->getName();
str += "] FPS:";
str += fps;

device->setWindowCaption(str.c_str());
lastFPS = fps;
}
}
else
device->yield();
}
device->drop();
return 0;
}

9.  Projeyi build ettiğimz zaman Quake 3 in bir haritası açılacaktır.

image image

 

Uğur Dönmez

METU CENG

Visual Studio 2008 ile Ogre Kullanmak

1. Ogre SDK yi http://www.ogre3d.org/wiki/index.php/Installing_the_Ogre_SDK_on_Windows adresinden indiriyoruz. Ben Installing the Ogre SDK for Visual C++ 2008 & Code::Blocks paketini kurdum.

2. Ogre Application Wizard i http://www.jacmoe.dk/forum/index.php?topic=3.0 adresinden indiriyoruz.

3. Ogre SDK yi C:\OgreSDK altına kuruyoruz. Başka bir yere kurmak sorun çıkarabilir.

4. Ogre SDK ortam değişkeninin varlığını her ihtimale karşı kontrol ediyoruz. Bunun için Bilgisayarım a sağ tğklayğp Gelişmiş tabındaki ortam değişkenlerine tıklıyoruz.

image

 

5. OGRE AppWizard i unzip edip

 

image

 

VC9_Setup u çalıştırıyoruz.

image

 

6. Visual Studio 2008 den yeni proje oluşturuyoruz.

 

 

image

 

Ogre SDK Application u seçiyoruz.

 

image

 

OGRE SDK Application Wizard u takip ediyoruz.

 

image

 

image

 

Finish dedikten sonra örnek projemiz oluşuyor.

image

 

7. Oluşturduğumuz projeyi build ediyoruz.

 

image

 

8. Build ettiğimiz proje OgreSDK/bin/debug klasörünün altında yer almaktadır.

 

image

 

Kaynak : http://www.ogre3d.org

Microsoft Visual Studio 2008 ile OpenGl Kullanmak

Öncelikle gerekli binary dosyaları aşağıdaki adreslerden indiriyoruz.

freeglut 2.4.0

GLUT win32 binaries


Daha sonra indirdiğimiz dosyaları doğru klasörlere yerleştirmemiz gerekiyor.

    freeglut.h i dosyasını ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL\’ klasörüne ( GL klasörünü yaratmanız gerekmektedir.  )
    freeglut_ext.h dosyasını ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL\’ klasörüne,
    freeglut_std.h dosyasını ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL\’ klasörüne,
    freeglut.lib dosyasını ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\’ klasörüne,
    freeglut.dll dosyasını ‘C:\WINDOWS\system32\’ klasörüne,
    glut32.dll dosyasını ‘C:\WINDOWS\system32\’ klasörüne,
    glut32.lib dosyasını‘C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\’ klasörüne,
    glut.h dosyasını ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL\’ klasörüne kopyalıyoruz. </LI>

Daha sonra oluşturacağımız C++ projesine freeglut kütüphanesini tanıtmamız gerekiyor.


1. Visual Studio da yeni bir C++ Console Application oluşturuyoruz.




1a. Win32 Application Wizard da ‘Empty Project’ i seçiyoruz.

image




2. Projeye yeni bir cpp dosyası ekliyoruz. İçine aşağıdaki örnek kodu yazıyoruz.



1
2
3
4
5
#include &lt;freeglut.h&gt;
int main ()
{
return 0;
}





3. Debug etmeye çalışırsak Visual Studio hata verecektir çünkü freeglut header dosyalarını projeye henüz tanıtmadık.




3a. Menu bar dan Project->Project Properties i açıyoruz.




3b.  Linker->Input ta Additional Dependencies yazan yere aşagıdaki satırı kopyalıyoruz.




opengl32.lib glu32.lib glut32.lib




image



4. Derlemeye çalışırsak hala hata verebilir çünkü header ve library lerin klasörünü projenin directories ine eklememiz gerekmektedir.




4a. Tools –> Options altındaki Project and Solutions menüsünde VC++ Directories i seçiyoruz.




4b. C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL satırını ekliyoruz.




image




5. Proje artık derlenmektedir.