IT정리노트

블로그 이미지

Edward. K

메멘토적 기억능력을 소유한 개발자 노트.

'Programming/JAVA'에 해당되는 글 76건

제목 날짜
  • 역컴파일을 방지하자!! 2008.07.02
  • XML Data Binding with Castor 2008.07.01
  • Eclipse Spring Update Site 2008.06.27
  • Eclipse Line view 2008.06.23
  • Eclipse 단축키 2008.06.20

역컴파일을 방지하자!!

Programming/JAVA 2008. 7. 2. 14:52
반응형
2009-02-26 수정 : retriver.pe.kr  호스팅 기간 만료로. 이미지가 사라져버렸다...-_-; 
                             그리하야...링크걸린 내용을...백업 받은 넘으로 다시 작성을 한다.
                             내용은 당시 작성 내용 그대로~.



4년(이나 흘렀네..--;) 전  '나'를 위해 작성된 문서이며..동시에 직원 교육을 위한 공개용이다.

디컴파일러 사용법(Eclipse On JAD ( Java Decompiler ))에 대한 글을 작성하면서
디컴파일을 방지하기 위한 방법에 대해선 빼놓은것 같아서  설명하고자 한다.
( 4년전 작성된 문서임다...이후 많은 발전이 있었을테니...최신 버젼으로 학습하세용)

obfuscator 혼란시키는 것, 멍하게 만드는 것, (마음을) 어둡게 만드는 것.

Obfucastor Tool을 이용하여 역컴파일을 방지하는 목적은 '보안상의 이유' 때문이다. 
하지만 사전 설명대로 '보안'이 아닌 클래스-함수-변수명들을 바꿔줌으로서 분석하기 어렵게 만들어 줄 뿐이다.
( 물론 디컴파일도 완벽하게 디컴파일 되는 건 아니다. Exception 처리 부분의 경우는 아직도 불안하더라..--)

6년전  이넘을 처음 접했을 당시에는 '이정도면 보안에 완벽하겠지..' 하는 마음에
아니..솔직히 공들여 작성된 코드(지금처럼 프레임웍 개념이 자리잡기전..노가다 코드)들을
남에게 보여주기 싫었기 때문에 사용을 했었다.
시간이 지나면서 '참 불필요한 짓거리를 했었군..' 하는 생각을 가지게 되었지만..ㅡ,.ㅡ;;

여튼..다시 2년후 모바일 게임 업계로 이직을 하면서 heap memory, 파일 사이즈 의 압박하에서
퀄리티 있는 게임을 보다 낮은 사양의 폰에서도 돌아가게 해야 하는 것이 당면 과제 였다.
  ( 수익이 더 나고..더 많은 인센티브를 받을수 있는게 아닌가..? )  
[#M_[보기] 인센티브의 함정|[닫기]|사장님을 믿어 달라는 말에..찝찝했지만..구두 계약만으로 약속을 했다.
운이 좋게도 만든 게임마다 일정 수준 이상의 돈을 벌어 들였고. 난 당연하게 요구했다..
하지만 결과는... '내가 언제?' 라는 말로 돌아왔고..나는 그 즉시 회사를 그만 뒀다.
       진행하던 것은 마무리를 짓고 그만뒀는데...이거 잘못한거지? 니미럴..--a


이때 생각난 것이 바로 이넘..Obfucastor 였다.
_M#]

역컴파일 방지툴은 여러가지가 있으며,  무료(RetroGuard), 유료(DashO)의 대표적인 2개를 소개합니다.
        대표적인 것(내가 알고 있는것..ㅋㅋ)은 다음과 같다.
            -RetroGuard(무료), ProGuard(무료) , DashO(유료)

RetroGuard 사용법 _DownTown LGT_
2004.07.22 retriver.pe.kr

1. 해당 프로젝트의 class 폴더로 이동해서 class파일만을 jar로 묶는다.
    >jar cvf Wooja.jar *.*

     


2. jar로 묶었으면 script 작성툴을 실행시킨다.
    >java RGgui
     


3. 그러면 gui창이 뜨고 Borwse..를 눌러서 해당 jar파일을 불러온다.
    이 작업은 보호해야할 코드명을 지정해주는 작업이다
    아래의 어쩌구 저쩌구는 신경끄고 넘어가자 next >    
 


4. 음.. 3번 항목에 뭔가 떠야 하는데.안 뜬다..그냥 next >


5. [Package]를 선택하면 해당 클래스 들이 뜬다..이 중에서 보호해야 할 클래스를 선택한다.
    물론Midlet을 상속한 Midlet class겠지..? 선택했으면 'Preserve the class....'를 선택해주고 next >


6. 헉..이번엔 더욱 섬세하게 함수..변수들 까지 나와주네..
    이곳에서도 보호가 필요한 이름들을 체크해 주자..
    선택하고 Preserve를 선택해주면 개별적으로 적용이 된다. next >


7. 그외에 보호가 필요한 것을 선택해주고(선택은 마음대로..) next >


8.오호,이거 봐라..화면에 script,rgs가 떴네..그래..완성된 거다..
  이넘이 obfucas..할때 참고할 제어문서(?)가 되는 것이다.
  이 툴이 없었다면..날코딩이 될것이다.
 


9. 여기까지 했으면 이제..RetroGuard를 사용하여 변환을 시켜 보자.
      > java RetroGuard Wooja.jar WoojaOb.jar script.rgs log.txt
      > java RetroGuard 원본.jar 변환될.jar 스크립트파일 결과정보
    끝난거다..이제 남은건 lgt의 preverify 과정과 jar묶는 과정..



10. WoojaOb.jar 압출을 풀면 바뀌어 잇는 파일들을 만나게 될 것이다.
     class파일들을 밖으로 꺼내고 나머지 것들을 지워주자..
      그리고 기존의 bat파일(없는가? -_-; ) 에서 compile과정을 지워주고
      preverify과정과 jar과정을 수행한다.그럼 끝이다.

    


성공하길 바란다...^^



How To DahoO
2004.07.22 retriver.pe.kr

1. classes 폴더와 preverify폴더를 생성하고
    classes 폴더에 관련 class들을 복사해둔다(oem단 포함)
    preverify 폴더는 DashO결과 파일이 담길 output폴더(lgt습관이..^^;;)

  


2.DashOEE.exe를 실행 시키고 Create New Project >OK 선택


3. classes 폴더를 선택후 add


4. 결과 파일이 담길 폴더(preverify) 선택, add


5. 다음과 같은 그림이라면 Ok,,, next >


6. Midlet 파일선택(보호 해야할..)


7. 신경쓰지 말고 next >>


8. Exclude Package 항목에 classes 폴더내의 package들 포함시키기


9.Rename tab에서 Rename Classes-Prefix(optional)을 선택


10. Optimize 항목에서 speed혹은 size중 원하는 항목 선택.


11. Package를 선택하면 프로젝트가 바뀌느니.뭐니 하는데.신경끄고 '예' 선택


12. DahoO 폴더에서 Zaper.dop폴더를 복사해두고 dop를 불러 온다.


13.자...다 끝났다...변환될 클래스 명과 함수.변수들의 목록이다.


14.Build를 하려고 tab을 선택하니..어라..또 뭐가 뜬다...,
   결과 파일들이 존재할 폴더를 선택하라는 이야기다..선택해주자.. next >


15. 또 뭐라구 지껄인다..신경 쓰지 말자..'예' 선택하면 힘든 과정의 끝이다..


16. 잘 했다고 칭찬해 준다..^^


17. 이제 jar파일로 묶어 주면 된다..필자의 경우, java파일들을 폴더 없이 저장했기 때문에
다음과 같은 과정을 감수해야 하나..이 글을 보는 분들은 그리하지 말길 바란다ㅡㅡ;
 

jar -Mcvf Race.jar *.class *.mmf *.dat

2004.07.22 ONE MOMENT JUST DO IT. 김성호

반응형
Posted by Edward. K

XML Data Binding with Castor

Programming/JAVA 2008. 7. 1. 14:27
반응형

castor.jar  란 넘을 분석하다가..찾아 보게된 자료...

SUN :   http://docs.sun.com/app/docs/doc/819-4707/gbvjl?a=view

-------------
From : http://www.onjava.com/pub/a/onjava/2001/10/24/xmldatabind.html


XML Data Binding with Castor

by Dion Almaer
10/24/2001

In this article, we will walk through marshalling data to and from XML, using a XML data-binding API. The first question is, why? Why not use SAX or DOM? Personally, when I sit down to work with XML, I get frustrated with the amount of code that you need to write to do simple things.

I came across JDOM and found it to be something I was looking for. DOM is built to be language-agnostic, and hence doesn't feel very "Java-like." JDOM does a great job in being DOM, in a way I would like to use it in Java.

For some applications, I don't want to even think about "parsing" data. It would be so nice if I could have a Java object to work with, and have it saved off as an XML representation to share, or store. This is exactly what XML data-binding can do for us. There are a few frameworks to help us do this, but we will walk through Castor, an open source framework from Exolab. Castor is a data-binding framework, which is a path between Java objects, XML documents, SQL tables, and LDAP directories. Today, we will work with Castor XML, the XML piece of the Castor project

We will discover the different aspects of Castor XML as we develop an Address Book XML document. We will create, read, and modify this XML document via the data-binding framework.

All of the code from this article should work with any JVM supporting the Java 2 platform.

We will walk through the following tasks:

  1. Create/modify/read a simple data-binding (Person representation)
  2. Develop the data-binding for the Address Book

Create/modify/read a simple data-binding

Let's get to work, building a "person" for the Address Book, which will sit between an XML representation and a Java object representation.

  1. Create an XML representation of a person
  2. Create a Java object representing a person
  3. Use Castor XML to read in XML to create a JavaBean
  4. Use Castor XML to create a "person"
  5. Use Castor XML to modify a "person"

Step One: Create an XML representation of a person

First of all, let us generate an XML representation of a person:


Michael Owen
222 Bazza Lane, Liverpool, MN

111-222-3333
michael@owen.com
720.111.2222
111.222.3333

Download the code for this article here. Code includes Person and Addressbook directories, as well as the castor.properties file, and a readme file. For the code to work, you must have either the castor.jar or the castor-xml.jar file.

Step Two: Create a Java object representing a person

Now that we have defined a person in XML, we need to generate a Java object that maps to this definition. To make things easy, we can follow a convention and create get and set methods which match the names of the elements in the XML document. If an element name is name, the corresponding methods in the Java object will be getName() and setName(). When elements have hyphens (such as home-phone), the corresponding method will uppercase the first letter after the hyphen. So, home-phone becomes getHomePhone(). With this in mind, let's look at Person.java:

public class Person {
private String name;
private String address;
private String ssn;
private String email;
private String homePhone;
private String workPhone;

// -- allows us to create a Person via the constructor
public Person(String name, String address, String ssn,
String email, String homePhone, String workPhone) {
this.name = name;
this.address = address;
this.ssn = ssn;
this.email = email;
this.homePhone = homePhone;
this.workPhone = workPhone;
}

// -- used by the data-binding framework
public Person() { }

// -- accessors
public String getName() { return name; }

public String getAddress() { return address; }

public String getSsn() { return ssn; }

public String getEmail() { return email; }

public String getHomePhone() { return homePhone; }

public String getWorkPhone() { return workPhone; }

// -- mutators
public void setName(String name) { this.name = name; }

public void setAddress(String address) {
this.address = address;
}

public void setSsn(String ssn) { this.ssn = ssn; }

public void setEmail(String email) { this.email = email; }

public void setHomePhone(String homePhone) {
this.homePhone = homePhone;
}

public void setWorkPhone(String workPhone) {
this.workPhone = workPhone;
}
}

Step Three: Use Castor XML to create a JavaBean

It's pretty simple so far: a simple XML document, a simple JavaBean. Now we will use Castor to read in that XML and return a JavaBean. Here is where we see the power of the framework. We are reading in XML, yet to us, it looks like we are just working with a normal JavaBean.

Here is the code that reads the XML into the JavaBean, and displays information on the person:

import! org.exolab.castor.xml.*;
import! java.io.FileReader;

public class ReadPerson {
public static void main(String args[]) {
try {
Person person = (Person)
Unmarshaller.unmarshal(Person.class,
new FileReader("person.xml"));
System.out.println("Person Attributes");
System.out.println("-----------------");
System.out.println("Name: " + person.getName() );
System.out.println("Address: " + person.getAddress() );
System.out.println("SSN: " + person.getSsn() );
System.out.println("Email: " + person.getEmail() );
System.out.println("Home Phone: " +
person.getHomePhone() );
System.out.println("Work Phone: " +
person.getWorkPhone() );
} catch (Exception e) {
System.out.println( e );
}
}
}

The magic is in the Unmarshaller class, and in this example, the

static method unmarshal(). You simply give the method the

XML document from which to read, and the Java object that will be instantiated.

The framework then automatically goes through the XML,

uses reflection to look for methods that match the conventions that

we mentioned before, and set() the values in the instantiated Java object.

Then we can talk to the Person class to call any methods that we wish.

Notice that there are no SAX event handlers, and no need to walk the DOM tree.

You don't even really know that you are using XML!

Step Four: Use Castor XML to create a person

We have discussed unmarshalling (reading) XML into a Java object.

We can also create XML by simply marshalling a Person object out to a file.

Ever had to go from a DOM to a file? This is a lot nicer!

Here is the code that will generate a person in the file bob_person.xml:

import! org.exolab.castor.xml.*;
import! java.io.FileWriter;

public class CreatePerson {
public static void main(String args[]) {
try {
// -- create a person to work with
Person person = new Person("Bob Harris",
"123 Foo Street", "222-222-2222",
"bob@harris.org", "(123) 123-1234",
"(123) 123-1234");

// -- marshal the person object out as a
FileWriter file = new FileWriter("bob_person.xml");
Marshaller.marshal(person, file);
file.close();
} catch (Exception e) {
System.out.println( e );
}
}
}
 

In this source file we instantiate a person passing in initial values.

Then we use the Marshaller class to write out this person as an

XML document to the bob_person.xml file.


Indentation of XML files

If you run this program and look at the file,

you will see that it looks something like this:


Bob Harris

123 Foo Street
111-222-3333

bob@harris.org(123) 123-1234

(123) 123-1234

This isn't very pretty on the eyes is it? By default,

Castor XML does not indent or format the XML representation,

as that requires extra resources. For development purposes,

you can make the output "pretty" by creating a castor.properties file

that has the following property:

org.exolab.castor.indent=true


Step Five: Use Castor XML to modify a person

We now know how to read in a person, and how to create a person.

Now we can put these two together to modify an existing person.

Here is the code that unmarshalls person.xml, makes a change to the name,

and then marshals the Java object back into an XML file:

import! org.exolab.castor.xml.*;
import! java.io.FileWriter;
import! java.io.FileReader;

public class ModifyPerson {
  public static void main(String args[]) {
  try {
// -- read in the person
    Person person = (Person)
      Unmarshaller.unmarshal(Person.class,
        new FileReader("person.xml"));
// -- change the name
    person.setName("David Beckham");

// -- marshal the changed person back to disk
    FileWriter file = new FileWriter("person.xml");
    Marshaller.marshal(person, file);
    file.close();
  } catch (Exception e) {
    System.out.println( e );
    }
  }
}

Just like that we modify a person, again without having to work with

any XML-specific APIs. Now that we have a person,

let's move on to setting up an Address Book.



Developing data-binding for Address Book

We define the address book as holding a collection of persons. To build this,

we will have to create a mapping for the data-binding framework,

and we will see how it will be able to set up a java.util.Collection of Persons.

We will also learn about mapping attributes (as in ).

Here are the steps we will follow:

  1. Create an XML representation of the address book
  2. Create a Java object representing the address book
  3. Create a mapping.xml file to allow Castor XML to marshal and unmarshal
  4. Use Castor XML to display the address book

Step One: Create an XML representation of the address book

Our address book will have an tag wrapping around

the elements that we defined earlier:


 
   

23 Whistlestop Ave

    111-222-3333
    roykeane@manutd.com
    720.111.2222
    111.222.3333
 
 
   
123 Foobar Lane

    222-333-444
    juanveron@manutd.com
    720.111.2222
    111.222.3333 
 

Step Two: Create a Java object representing the address book

Now that we have the address book defined in XML,

we need to create the AddressBook object that represents it.

We will make the AddressBook hold a java.util.List of Persons:

import! java.util.List;
import! java.util.ArrayList;

public class Addressbook {
private String addressBookName;
private List persons = new ArrayList();

public Addressbook() { }

// -- manipulate the List of Person objects
public void addPerson(Person person) {
persons.add(person);
}

public List getPersons() {
return persons;
}

// -- manipulate the name of the address book
public String getName() {
return addressBookName;
}

public void setName(String name) {
this.addressBookName = name;
}
}

Now we have the programming interface

that we'll use to work with an address book,

and we have defined the XML representation. We need to tie these together,

and that is where the mapping file comes in.


Step Three: Create a mapping.xml file to allow

Castor XML to marshal and unmarshal

In our simple example of a person, we didn't have to create a mapping file,

because Castor could work out what to do based on the JavaBean conventions

that we followed.

We have to use the mapping file now, however, as we need to instruct Castor

that:

  • We are going to have a collection of persons
  • We changed the element to contain the name as an attribute
  • We are using an attribute to name the address book

Here is the mapping file (mapping.xml):





A mapping file for our Address Book application


 
   
 

 
 
 
 
 



 
   
 

 


Looking at the mapping file, you will see that it is built from the point of view

of the Java class. We have Person.java and Addressbook.java,

and both have a element to describe them.

Each has fields. This is where we tell Castor the name of the fields,

their type, if they are an element or an attribute, and if there is one of them

or a collection.

The following snippet describes the fact that the given tag has an attribute,

of type String, with the name name. From this,

Castor knows that the XML document will hold .


The next snippet gives the framework the ability to use a collection

(in our case a java.util.List) of persons.

You can model many things in this mapping file, but let's not digress.

For extensive coverage of this mapping file, see the Castor Web site.


Step Four: Use Castor XML to display the address book

To display the address book, we will want to unmarshal addressbook.xml.

Unlike the simple person.xml, we will have to load the mapping file.

Here is the code for ViewAddressBook.java:

import! org.exolab.castor.xml.*;
import! org.exolab.castor.mapping.*;

import! java.io.FileReader;
import! java.util.List;
import! java.util.Iterator;

public class ViewAddressbook {
public static void main(String args[]) {
try {
// -- Load a mapping file
Mapping mapping = new Mapping();
mapping.loadMapping("mapping.xml");

Unmarshaller un = new Unmarshaller(Addressbook.class);
un.setMapping( mapping );

// -- Read in the Addressbook using the mapping
FileReader in = new FileReader("addressbook.xml");
Addressbook book = (Addressbook) un.unmarshal(in);
in.close();

// -- Display the addressbook
System.out.println( book.getName() );

List persons = book.getPersons();
Iterator iter = persons.iterator();

while ( iter.hasNext() ) {
Person person = (Person) iter.next();

System.out.println("\n" + person.getName() );
System.out.println("-----------------------------");
System.out.println("Address = "+ person.getAddress());
System.out.println("SSN = " + person.getSsn() );
System.out.println("Home Phone = " +
person.getHomePhone() );
}
} catch (Exception e) {
System.out.println( e );
}
}
}

The only real difference here is that we are no longer

using the static Unmarshaller.unmarshal() method.

Now we instantiate an Unmarshaller object,

and set the mapping to the newly created Mapping() object.

The Mapping() object loads the XML mapping file that we just created:

Mapping mapping = new Mapping();
mapping.loadMapping("mapping.xml");

Unmarshaller un = new Unmarshaller(Addressbook.class);
un.setMapping( mapping );

Conclusion

We have shown that working with XML doesn't mean

that you have to delve into the books to learn SAX, DOM, JAXP,

and all the other TLAs.

Castor's XML data-binding provides a simple

but powerful mechanism to work with XML and Java objects.

Dion Almaer is a Principal Technologist for The Middleware Company, and

Chief Architect of TheServerSide.Com J2EE Community.


Return to ONJava.com.

Copyright © 2004 O'Reilly Media, Inc.



http://www.castor.org/

반응형
Posted by Edward. K

Eclipse Spring Update Site

Programming/JAVA 2008. 6. 27. 16:11
반응형

Help -> Software Updates -> Find and Install -> Search for new features to install

      New Update Site
          - Name : SpringIDE
          - URL : http://springide.org/updatesite/
반응형
Posted by Edward. K

Eclipse Line view

Programming/JAVA 2008. 6. 23. 15:32
반응형
디버깅에 있어서...라인 표시는 필수지..

다음과 같이..
사용자 삽입 이미지

반응형
Posted by Edward. K

Eclipse 단축키

Programming/JAVA 2008. 6. 20. 09:48
반응형

Eclipse 단축키 확인 및 변경

Eclipse의 모든 단축키는 Window >> Preferences >> Workbench >> Keys 메뉴에서 확인 및 변경이 가능하다. 그 동안 다른 툴에서 자신의 손에 익숙한 단축키들이 있다면 이 메뉴에서 단축키들을 변경하는 것이 가능하다.

[2011-01-26 추가] 
         
Ctrl + 3  : 검색기능 (3.4부터 추가)

Java Editor 단축키

Ctrl + Shift + M : 특정 클래스 Import! 시키기
Ctrl + Shift + O : 자동으로 Import! 시키기
Ctrl + Shift + F : 코드 자동 정리
Ctrl + Shift + G : 특정 메써드나 필드를 Reference하고 있는 곳을 찾는다.
Ctrl + 1 : Quick Fix. 에러가 발생했을 경우 Quick Fix를 통해 쉽게 해결이 가능하다.
Ctrl + Shift + / : 블럭 주석 설정
Alt + Shift + UP : 커서를 기준으로 토큰단위 블럭지정
Alt + Shift + DOWN : 커서를 기준으로 토큰단위 블럭해제
CTRL + L : 특정 줄번호로 가기
Alt + Shift + J : 자동으로 주석 달기 (메소드나 멤버변수에 포커스 두고 실행)

Window 이동

F10 : 메뉴창을 활성화
Ctrl + F8 : 다음 Perspective로 이동
Ctrl + N : 새로운 파일 및 프로젝트 생성.
Ctrl + Shift + Down : Java Editor에서 다음 member로 이동.
Ctrl + F7 : 다음 View로 이동.
Ctrl + Shift + F7 : 이전 View로 이동.
Alt + <- : 이전 작업 화면
Alt + -> : 다음 작업 화면
F12 : 컴파일 중 에러등으로 포커스가 다른데로 갔을 때 Editor 로 커서 이동
Ctrl + 1 : 컴파일 에러가 발생한 곳에서 Ctrl + 1을 누를 경우 컴파일 에러에 대한 해결책을 제시

디버깅 단축키

CTRL + Shift + B : 현 커서의 위치에 브레이크 포인터 설정/해제
F11 : 디버깅 시작
F8 : 디버깅 계속
F6 : 한줄씩 실행(Step Over)
F5 : 한줄씩 실행하되 함수일 경우 그 함수 내부로 들어감(Step Into)
CTRL + R : 현재 라인까지 실행(Run to Line)

Refactoring 단축키

Shift + ALT + 알파벳 : Refactoring을 위한 단축키 임.

RUN 단축키

Ctrl + F11 : 이전에 실행되었던 Run파일 실행.

반응형
Posted by Edward. K
이전페이지 다음페이지
블로그 이미지

메멘토적 기억능력을 소유한 개발자 노트.

by Edward. K

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • 컴퓨터 관리
  • 이미지 편집
  • toad
  • STS
  • EkNote
  • Jboss
  • 캡쳐툴
  • 플래시 게임
  • Flash Player
  • flex
  • 색상코드표
  • android
  • iBATIS
  • sqlgate
  • netbeans
  • 미네르바
  • rocketdock
  • 중독성게임
  • 전자정부프레임워크
  • ERwin
  • Eclipse
  • Graphic
  • 이클립스
  • 사업 이야기
  • tomcat
  • 가상화폐무료
  • 개한민국
  • egov
  • eclipse plugin
  • EditPlus

글 보관함

«   2025/08   »
일 월 화 수 목 금 토
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

링크

카테고리

분류 전체보기 (792)
행운이와함께 (1)
EkNote Project (18)
ARIS (0)
Android (2)
LINK (39)
UML (9)
Programming (154)
Cobol (0)
ASP (0)
CSS (5)
C_C++ (2)
IBatis (2)
JSP (3)
JAVA (76)
JavaScript (44)
PHP (2)
Utility (76)
Protable (3)
MobileProgram (4)
SKT (0)
KTF (0)
LGT (0)
자료들 (4)
DB (82)
mongoDB (0)
MySQL (8)
Oracle (61)
MSSQL (4)
Graphic (8)
Flash (3)
PhotoShop (3)
SourceFactory (4)
Collection (73)
작가의기막힌상상력 (14)
미소를찾아보는공간 (44)
내심장은작동중일까 (6)
멀더와스컬리의노트 (3)
이건어디에사용할까 (6)
Edward (275)
나만 알기엔 아까워 (100)
기억하기 위한 기록 (123)
시선이 머무는 공간 (50)
숨기고 싶은 이야기 (2)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
Edward. K's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

IT정리노트

메멘토적 기억능력을 소유한 개발자 노트.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (792)
    • 행운이와함께 (1)
    • EkNote Project (18)
    • ARIS (0)
    • Android (2)
    • LINK (39)
    • UML (9)
    • Programming (154)
      • Cobol (0)
      • ASP (0)
      • CSS (5)
      • C_C++ (2)
      • IBatis (2)
      • JSP (3)
      • JAVA (76)
      • JavaScript (44)
      • PHP (2)
    • Utility (76)
      • Protable (3)
    • MobileProgram (4)
      • SKT (0)
      • KTF (0)
      • LGT (0)
      • 자료들 (4)
    • DB (82)
      • mongoDB (0)
      • MySQL (8)
      • Oracle (61)
      • MSSQL (4)
    • Graphic (8)
      • Flash (3)
      • PhotoShop (3)
    • SourceFactory (4)
    • Collection (73)
      • 작가의기막힌상상력 (14)
      • 미소를찾아보는공간 (44)
      • 내심장은작동중일까 (6)
      • 멀더와스컬리의노트 (3)
      • 이건어디에사용할까 (6)
    • Edward (275)
      • 나만 알기엔 아까워 (100)
      • 기억하기 위한 기록 (123)
      • 시선이 머무는 공간 (50)
      • 숨기고 싶은 이야기 (2)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바