링크 자료는 되도록 안올리려 했지만, 좋은 내용이 있어서 링크해본다.
스타도 지우고 eclipse와 잼난 시간을 보내고 있는 ... 요즘이 즐겁다.

제1회 가장 간단한 Eclipse 플러그인

  1. 플러그인 작성의 기본 순서
  2. 플러그인의 소스를 살펴 보자
  3. SWT와 JFace

제2회 트리 표시 플러그인을 작성하자

  1. 트리 뷰어를 사용한 뷰어의 구현
  2. 뷰의 툴바와 풀다운 메뉴

제3회 텍스트 문자 편집기 플러그인 구현

  1. 템플릿에 의한 XML 에디터의 생성
  2. 문서의 분할 작업
  3. 에디터의 configuration

제4회 플러그인의 설정 보존

  1. preference 스토어 / 초기값의 설정
  2. preference 페이지의 구현
  3. 에디터로 설정내용 반영/preference의 변경 검지

제5회 Eclipse플러그인에 마법사를 구현하려면

  1. 마법사의 기본 구조
  2. XML 파일을 작성하는 마법사의 구현
  3. 마법사의 이동을 제어한다.
  4. 여러 개의 페이지를 가지는 마법사의 구현

Posted by 아름프로





Java generics support in Eclipse V3.1

developerWorks














Document options


















Set printer orientation to landscape mode

Print this page

Email this page

E-mail this page

Document options requiring JavaScript are not displayed






Rate this page











Help us improve this content



Level: Intermediate


Neal Ford (nealford@nealford.com), Application Architect, ThoughtWorks


18 Oct 2005


Java™ 5 offers generics support, a feature developers requested for years. It represents a significant upgrade to the Java programming language. With something as complex as generics also comes challenges, both for tool vendors and developers. This article highlights how Eclipse has responded and the changes wrought by generics to the Java language. It shows how to take full advantage of generics within Eclipse, including support in Quick Assist, Quick Fix, refactoring, and project preferences. It also shows some subtle and important aspects of a fully generic language.

Generics in Java


The creators of Java technology have talked about adding generics support to the language almost since the first version. C++ supports generics through the Standard Template Library, but the implementation is hampered by the lack of a single unified parent class for all other classes (embodied in the Object class in Java). The generics support in the Java programming language is the most significant syntax change in its history. Tools support has proceeded more slowly than for other SDK upgrades for obvious reasons. Now, though, you have excellent support for these new language features in Eclipse V3.1. This article highlights some of these new features.
















Back to top



Java 5 Projects


To turn on generics support in Eclipse V3.1, you need Java 5 on your machine, which you can download from the usual places. The generics support comes along with project properties in the compiler settings pages. That means you can have separate SDK settings per project, just as in the past. To create a project that uses generics, you have to specify the language level during the creation of the project or through the project properties of an existing project.


Two specific property pages pertain to Java 5 settings. The first specifies compiler settings.


Figure 1. Compiler-specific settings for Java 5 support
Compiler-specific settings for Java 5 support

Unless you have set the default project settings in Eclipse for Java 5, you will need to override those settings for this project. The JDK compliance section allows you to determine the settings for source and class files. When setting level 5.0 for source files, you get a slew of new Content Assist and refactoring options.


The other pertinent properties dialog is the Errors/Warnings section in the tree view.


Figure 2. The Errors/Warnings section of project properties
The Errors/Warnings section of project properties

The wealth of J2SE 5 options control what kinds of errors and warnings (see Table 1) Eclipse will generate for your Java 5 code.





































Table 1. Errors and warnings Eclipse will generate for Java 5 code
J2SE 5 options Type of warning
Unchecked generic type operation The compiler will issue an error or warning whenever it encounters an unchecked generic type operation. This includes operations on types like List or ArrayList without a type specified. This provides a warning any time you use an old-fashioned Collection class that holds objects.
Generic type parameter declared with a final type bound The compiler will issue an error or warning whenever it encounters a type bound involving a final type. Consider this sample method signature:

public int doIt(List<? extends String> list)


Because String is final, the parameter cannot extend String, so it is more efficient to write it like this:

public int doIt(List<String> list)
Inexact type match for vararg arguments The compiler generates a warning when it cannot exactly determine the developer's intent from a varargs parameter. There are some varargs involving arrays that are ambiguous.
Boxing and unboxing conversions Warns about automatic boxing operations, which may impact performance, and breaks assumptions about object identity for type wrapper objects. This is a minor warning ignored by default.
Missing @Override annotation You should include the @Override annotation for any overridden method. A missing annotation may indicate that the developer didn't realize the method was being overridden.
Missing @Deprecated annotation Warning about leaving off the @Deprecated flag.
Annotation is used as super interface You shouldn't use the Deprecated class as a super interface. For example, this is frowned upon:

public interface BadForm extends Deprecated {


}

.
Not all enum constants covered on switch Missing enumerations on a switch statement, meaning that you may miss some enumerated options.
Unhandled warning tokens in @SuppressWarnings Java 5 allows you to add annotations to suppress warnings from the compiler. If you misspell the warning or use a warning that doesn't exist, this flag will issue a warning.
Enable @SuppressWarnings annotations Turns on the ability to programmatically (in code) suppress warnings you don't care about.

Once you have all your project options set to your liking, you can start using generics in Eclipse.
















Back to top



Porting from Specific to Generic


Consider this simple class in Listing 1, which creates a list of Employee and Manager objects (Manager extends Employee), prints them, gives them a raise, then prints them again.


Listing 1. The HR class






package com.nealford.devworks.generics.generics;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class HR {

public HR() {
List empList = new ArrayList(5);
empList.add(new Employee("Homer", 200.0, 1995));
empList.add(new Employee("Lenny", 300.0, 2000));
empList.add(new Employee("Waylon", 700.0, 1965));
empList.add(new Manager("Monty", 2000.0, 1933,
(Employee) empList.get(2)));

printEmployees(empList);

System.out.println("----- Give everyone a raise -----");
for (int i = 0; i < empList.size(); i++)
((Employee) empList.get(i)).applyRaise(5);

printEmployees(empList);

System.out.println("The maximum salary for any employee is "+
Employee.MAX_SALARY);

System.out.println("Sort employees by salary");
Collections.sort(empList);
printEmployees(empList);

System.out.println("Sort employees by name");
Collections.sort(empList, new Employee.NameComparer());
printEmployees(empList);

System.out.println("Sort employees by hire year");
Collections.sort(empList, Employee.getHireYearComparator());
printEmployees(empList);

}

public void printEmployees(List emps) {
for (int i = 0; i < emps.size(); i++)
System.out.println(emps.get(i));
}

public static void main(String[] args) {
new HR();
}
}


If you turn on Java 5 support, a variety of warnings will light up for this code.
















Back to top



Quick Fix features


The Quick Fix feature in Eclipse appears as a lightbulb in the editor gutter anytime Eclipse wants to suggest an improvement to your code. In the code from Listing 1, you will see a variety of Quick Fixes.


Figure 3. The Quick Fix lightbulbs indicate potential improvements to your code
Quick fix

Quick Fix provides a lightbulb and a wavy yellow line indicating improvements. If you roll over the wavy yellow line, you will see the suggestion that appears in Figure 4.


Figure 4. The Quick Fix indicates what should be generified
Quick Fix indicates what should be generified

The Quick Fix suggestion listed here is just that -- a suggestion. The lightbulbs in the gutter are offered to add a local variable for the return of the add() method of List, which returns a boolean, which is ignored, in this case.


To address the Quick Fix suggestion, move to the refactoring menu. A few refactorings in Eclipse directly relate to generics in Java 5. The "Infer Generic Type Arguments" refactoring will add generics support to the list. The first dialog allows you to pick options.


Figure 5. Infer Generic Type Arguments choices dialog
 Infer Generic Type Arguments choices dialog

The first option relates to the inference that the clone() method will return the receiver type, not another (related class). Well-behaved classes generally observe this rule; uncheck this box if you know that your class doesn't. The second option, when unchecked, will leave the "raw" (nongeneric) parameter in place, rather than infer the correct generic parameter type.


As in most refactorings in Eclipse, you can preview what changes will occur in your class. The Preview button on this dialog yields the dialog shown in Figure 6.


Figure 6. Preview the generic refactoring
Preview the generic refactoring

The updated code looks like this:


Listing 2. Updated code






List<Employee> empList = new ArrayList<Employee>(5);
empList.add(new Employee("Homer", 200.0, 1995));
empList.add(new Employee("Lenny", 300.0, 2000));
empList.add(new Employee("Waylon", 700.0, 1965));
empList.add(new Manager("Monty", 2000.0, 1933,
empList.get(2)));


Two interesting changes have occurred to the code. First -- and most obvious -- the List and ArrayList declarations are now generic for Employee types. The second -- more subtle -- change is in the last line. If you look at the original empList addition of the Manager class, it requires a typecast to an Employee for the Assistant field in the last parameter. The Infer refactoring was smart enough to remove the now unnecessary type cast.


Before leaving Quick Fix, there is one other aspect that is interesting in the Java 5 support added by Eclipse: You can now receive suggestions for supplying annotations for methods, such as @Override. You also have Content Assist for annotations.


Figure 7. Quick Fix and Content Assist extends to annotations
Quick Fix and Content Assist extends to annotations















Back to top



Quick Assist features


Eclipse V3.1 has added a Quick Assist to facilitate generics support in Java 5. Consider this mundane for() loop, found in the printEmployees() method shown in Listing 3.


Listing 3. The for() loop






public void printEmployees(List<Employee> emps) {
for (int i = 0; i < emps.size(); i++)
System.out.println(emps.get(i));
}


Along with support for generics, Java 5 now supports a for...each loop. Quick Assist offers to change this for loop into a for...each, which yields the code shown in Listing 4.


Listing 4. The for...each loop






public void printEmployees(List<Employee> emps) {
for (Employee emp : emps)
System.out.println(emp);
}


This version is much cleaner because it eliminates the i variable and the call to get() entirely.
















Back to top



Generic types


Eclipse V3.1 has also expanded its support for type operations to extend to generic types. This means:



  • Generic types can be safely renamed.
  • Type variables can be safely renamed.
  • Generic methods can be extracted from or inlined into generic code.
  • Code Assist can automatically insert appropriate type parameters in parameterized types.

The search facilities in Eclipse have also gotten more intelligent with generic types. Consider this:


Listing 5. Generic types






public void doEmployeeAnalysis() {
List<Employee> empList = new ArrayList<Employee>(5);
List<Date> hireDates = new ArrayList<Date>(5);
List<Integer> departments = new ArrayList<Integer>(10);
List<? extends Employee> allMgrs = new ArrayList<Manager>(5);
. . .


If you highlight the first List<Employee> declaration and select Search > References > Project, Eclipse will show you all the list declarations.


Figure 8. Eclipse has gotten smart about finding generic references
Eclipse has gotten smart about finding generic references

You can also filter these results via a well-hidden feature of the Search window. If you access the Search window menu (in the right-hand corner, beside the minimize and maximize buttons), you get generics-aware filtering options.


Figure 9. The filter menu of the search window allows you to filter generics-aware results
The filter menu of the search window allows you to filter generics-aware results

If you filter the results using Filter Incompatible, it eliminates the two entries that are not Employee-based. The results are shown in Figure 10.


Figure 10. Filter Incompatible filters out the non-Employee related entries in the search window
Filter Incompatible filters out the non-Employee related entries in the search window















Back to top



Digging deeper in generics


Unfortunately, Eclipse cannot solve all your generics problems. In fact, sometimes refactorings yield syntactically correct code that is not semantically correct for the problem you are trying to solve. Ironically, life was easier in the pre-generics days because you had to pass everything as generic collections of objects. Now you must be careful to pass the right type of collection.


Consider this example. In the HR application, you add a method that determines retirement age for employees. However, the age of the Employee comes from the Employee super class: Person. Writing a method that takes just employees would work in this one instance, but you do not want to restrict the application to work only with employees. What if you need to trace former employees (as Persons) in the future?


The solution to this problem lies with flexible generic parameters. Consider the code in Listing 6, which accepts any class that extends Person.


Listing 6. Sample SELECT statement






public List<Person> empsOverRetirementAge(
List<? extends Person> people) {
List<Person> retirees = new ArrayList<Person>(1);
for (Person e : people)
if (e.getAge() > 65)
retirees.add(e);
return retirees;
}


This method accepts any subclass of Person and is, therefore, more flexible. You should keep this in mind when using generics. In this case, the generic is actually more specific (they should have called this language feature "specifics," anyway). Carefully identifying your parameter types allows you to achieve the same level of flexibility in your code that you had prior to generics, but with the added type security that generics provide.
















Back to top



Summary


Generics support is a huge enhancement to the Java programming language, necessitating a long time for tool vendors to catch up. Now that you have good tool support, you should start taking advantage of this advanced language feature. It makes code more readable -- because you eliminate type casts -- and allows the compiler to do more work on your behalf. Anytime you can get compilers and other tools (like IDEs) to perform more work, it means less work for you.
















Back to top



Resources

Learn


Get products and technologies


  • Innovate your next open source development project with IBM trial software, available for download or on DVD.


Discuss
















Back to top



About the author









Neal Ford


Neal Ford is an application architect at ThoughtWorks, an IT professional services company. Neal designs and develops applications, instructional materials, magazine articles, courseware, video/DVD presentations, and wrote the books Developing with Delphi: Object-Oriented Techniques, JBuilder 3 Unleashed, and Art of Java Web Development. His primary consulting focus is the building of large-scale enterprise applications. He has also been a speaker at developer conferences.

Posted by 아름프로

[svn] SVN + Eclipse Subclipse

2005. 8. 3. 09:53
CVS대체 SVN + Eclipse 통합
에 관한 내용입니다.
최근 오픈 소스중에는 cvs대신 svn을 사용하는 것들이 늘어가긴하네요.
(예, ibatis)
Posted by 아름프로

이클립스 3.0 단축키

2005. 4. 10. 02:12
제가 정리해놓은거 보다 깔끔해서 링크합니다. ^^
더 자세한 내용은 링크 참조..
========================================

필수 단축키

한줄 삭제 CTRL + D,
메소드나 필드 이동하기 CTRL + O
페이지 이동 CTRL + E

ULTRAEDIT나 EDITPLUS 의 CTRL+TAB 과 같은 기능. : CTRL+F6

VIEW 들의 이동. (Package Explorer, source, Outlines...) : CTRL+F7

Perspective 같은 이동(?)  : CTRL+F8  

파일 닫기 : CTRL+W

들여쓰기 자동 수정. (3.0 NEW) : CTRL+I

블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
위(아래)줄과 바꾸기 : ALT+UP(DOWN)

블록 선택하기.  : ALT+SHIFT+방향키

메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
자동으로 import 하기 : CTRL+SHIFT+O

열린 파일 모두 닫기 : CTRL + SHIFT + F4

블록 주석 제거 : CTRL+SHIFT+\

전체화면 토글 : CTRL+M
한줄(블럭) 복사 : Ctrl + Alt + 위(아래)

다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .

퀵 픽스 : Ctrl + 1  
메소드 정의부로 이동 : F3
하이어라키 팦업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T  


(이외에.. 3.0에선 형광펜기능[선택한 변수 형광펜으로 표시]도 있어서 편해요.. ^^)

이것 이외의 단축키 리스트 :  HELP->Help Contents->Java Development User Guide->Reference->JDT Basics

새로운 기능:  HELP->Help Contents->Java Development User Guide->What's new

유용한 기능 :  Tips and tricks

Posted by 아름프로

RCP (Rich Client Platform)

2005. 3. 3. 11:57
Eclipse Rich Client Platform
While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components could be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the Rich Client Platform.

Applications that don't require a common resource model can be built using a subset of the platform. These rich applications are still based on a dynamic plug-in model, and the UI is built using the same toolkits and extension points. The layout and function of the workbench is under fine-grained control of the plug-in developer in this case.

When we say that the Rich Client Platform is the minimal set of plug-ins needed to build a platform application with a UI, we mean that your application need only require two plug-ins, org.eclipse.ui and org.eclipse.core.runtime, and their prerequisites. However, rich client applications are free to use any API deemed necessary for their feature set, and can require any plug-ins above the bare minimum. Examples include the Help UI, and the Update Manager.

Posted by 아름프로

PMD for Eclipse install instructions





  1. Start Eclipse.


  2. Start the installation procedure : select the Help>Software Updates>Find and
    Install... menu item.


  3. Select "Search for new features to install" option and click Next.


  4. Click New Remote Site...


  5. Give a name (ie PMD Eclipse Site), enter the URL http://pmd.sourceforge.net/eclipse


  6. Select this new site in the Sites to include in search list and click Next.


  7. Select PMD for Eclipse 3 and Apache Xerces in the "Select the features to install" list and click Next.


  8. Accept the terms of the license agreements and click Next.


  9. Verify that the install location is your Eclipse installation directory, otherwise
    select the correct one, click Finish.


  10. A warning appear telling the feature is not signed. Ignore and click Install to
    continue.


  11. Accept to restart the workbench to load PMD into the workbench.



Eclipse is restarted and a PMD welcome page is displayed : the plugin is correctly
installed.

Posted by 아름프로
Article

NetBeans IDE 4.1

























By Qusay H. Mahmoud, February 2005







An Integrated Development Environment (IDE) is a necessity for enterprise developers who want to have all their productivity tools under one umbrella. An IDE enables the developer to move from one phase of application development to the next without having to worry about manual management of source code or tool interfaces. With so many IDEs available on the market today, it has become a time-consuming task to decide on and choose one. Ideally, you should be looking for an IDE that maximizes your productivity: easy to use, fun to work with, enables you to get the work done, and has out-of-the-box support for open standards and technologies.



The NetBeans IDE 4.1 Early Access 2 (EA2), which was released in January 2005, includes Java 2 Platform, Enterprise Edition (J2EE) and web services development capabilities. This new release allows developers to not only develop applications in the web tier but also includes Enterprise JavaBeans (EJBs) and web service development capabilities. NetBeans IDE 4.1 is a single platform with out-of-the-box development capabilities and support for enterprise (J2EE 1.4) applications and web services, mobile/wireless Java 2 Platform, Micro Edition (J2ME) applications and services and desktop Java 2 Platform, Standard Edition (J2SE) applications.













NetBeans IDE








The NetBeans IDE, which is sponsored by Sun Microsystems, is a free and open source IDE that enables you to develop J2EE 1.4 applications and web services, mobile/wireless applications and services, and J2SE desktop applications. Using the NetBeans IDE, developers get their work done in a fun development environment that enables them to concentrate on the business logic of their applications. It provides productivity tools, and supports refactoring and integrated debugging, that simplify the work of Java technology developers.



NetBeans IDE 4.1 (EA2) supports the development of J2EE 1.4 applications and web services, and their deployment on the freely available Sun Java System Application Server 8.1 Platform Edition (Application Server PE 8) and Tomcat. Application Server PE 8 is the first compatible "production grade" application server implementation of the J2EE 1.4 specification, and it is free for development and deployment. This release of NetBeans IDE 4.1 with support for J2EE 1.4 will make a big difference for enterprise applications developers as it provides them with out-of-the-box support for J2EE 1.4, which helps them increase their productivity.



In this release (4.1), J2EE EJBs and web services are first class citizens. The IDE features ease of use, and the overall design of the IDE keeps the tools you need the most immediately at your fingertips. Developers get everything they need to develop J2EE 1.4 enterprise applications and web services with a single download.



The NetBeans IDE 4.1 (EA2) allows developers to:



  • Create J2EE applications, automatically add EJB modules and web modules, and deploy the applications

  • Create EJBs from existing source, from scratch, or from an existing database

  • Automatically generate EJB business methods, database calls, and calls to EJBs

  • Create a web module for deployment to the freely available Application Server PE 8 or Tomcat

  • Add multiple source folders to an EJB module or web module, and create unit tests as part of the project

  • Edit deployment descriptors in a graphical editor that is automatically synchronized with the underlying XML

  • Create, register, and test web services

  • Import your existing J2EE projects

  • Validate your applications with the J2EE Verifier

  • Visually configure your EJBs, web Services and web components



Note that the NetBeans IDE is not only meant to be used by advanced developers, but also by beginners who wish to learn about J2EE and web services technologies. The NetBeans IDE 4.1 allows you to try out the sample applications to learn and understand the J2EE technology and web services.



The IDE increases the productivity of developers by guiding them through the development process, and automatically building the underlying J2EE infrastructure. The distribution provides several great quick starts and tutorials that enable beginners to get up to speed quickly. In addition, it comes with numerous samples of J2EE applications that can be easily accessed from within the IDE, as well as contributions from the J2EE Java BluePrints catalog.




NetBeans IDE 4.1 (EA2) Key Features








The NetBeans IDE 4.1 (EA2) features significant new development capabilities for J2EE 1.4, including EJB components and web services. It has over 15 new modules for developing J2EE 1.4 applications and services. The three key features are:



Creating EJB Modules, Session Beans, Entity Beans, and Message Driven Beans


  • The NetBeans IDE 4.1 guides the user through the process to easily learn how to write an EJB as well as deploy, package, and test applications.

  • A GUI is available to select an EJB and perform tasks such as adding business methods and editing deployment descriptors.

  • All EJB infrastructure methods are generated automatically and are hidden in a power code fold.

  • The resulting EJB module can be easily added to a J2EE application.

  • Entity beans can be created using an existing database schema.

  • The NetBeans project structure matches J2EE Java BluePrints standards and relies on the Ant open standard for the build system.



Calling EJBs


  • Using the "Call EJB" feature from within a Servlet, JSP, or web service saves the user the headache of writing the JNDI lookup code and required exception handling. It will even work with your existing ServiceLocator class.



Develop and Test Web Services


  • Developers can create, modify, package, deploy, and test web services from the IDE.

  • Web services can be created from scratch, existing code, and/or WSDL.

  • Once created, the web service can be registered with the IDE, which creates an internal client for testing the web services.

  • NetBeans also supports creating web service client code from existing WSDL.




Getting Started








The NetBeans IDE 4.1 is available for the Solaris Operating System, Microsoft Windows, and Linux. It runs on J2SE SDK 1.4.2 as well as J2SE SDK 5.0. I recommend that you download the NetBeans IDE 4.1 EA2 + AS 8.1 Bundle Installer.




Sample Projects








If you wish to experiment with some J2EE projects, chose File -> New Project then expand the Samples folder. In addition, the IDE includes samples from the Java BluePrints Solution Catalog as shown in Figure 2. You can select one of these samples and install it.












Figure 2: Java BluePrints Solution Catalog


Figure 2: Java BluePrints Solution Catalog




Once you select a sample project, press F6 to run the project. Figure 3 shows a sample run.












Figure 3: Sample Run


Figure 3: Sample Run




You can easily develop new J2EE applications and web services. To learn how to create J2EE applications, EJB modules, web modules, and to call, deploy, and test applications, please see the Quick Start Guide for J2EE Applications, and Exposing and Consuming Web Services, which provide you with a step-by-step tutorial on how to get started with J2EE and web services development.



NetBeans.org Needs You








The NetBeans IDE 4.1 (EA2) currently supports deployment on the Application Server PE 8 and Tomcat, but netbeans.org needs your support in order to ensure that the majority of J2EE 1.4 compliant application servers can be used as both development and deployment targets from the NetBeans IDE.



If you are interested in supporting this effort, you can download the source code that implements the support for J2EE 1.4 in the NetBeans IDE 1.4 (EA2) from the NetBeans.org J2EE page.



You can subscribe to a mailing list by sending a blank email to nbj2ee-subscribe@netbeans.org, and you can send questions and feedback to nbusers@netbeans.org.



If you are a serious Java developer looking for an IDE with out-of-the-box support for J2EE and web services, that is easy to install, simple to learn and use, fun to work with, and enables you to get the job done, then try the NetBeans IDE 4.1 early access. Download it today and see for yourself. Learning about J2EE and building JEE applications and web services has never been easier.



For More Information






Posted by 아름프로

BLOG main image

카테고리

분류 전체보기 (539)
이야기방 (19)
토론/정보/사설 (16)
IBM Rational (9)
U-IT (0)
SOA/WS/ebXML (110)
개발방법론/모델링 (122)
J2SE (34)
J2EE (60)
DataBase (39)
Open Projects (30)
BP/표준화 (50)
Apache Projects (15)
Web/보안/OS (22)
Tools (7)
AJAX/WEB2.0 (1)
Linux/Unix (1)
영어 (0)
비공개방 (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/05   »
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

글 보관함

Total :
Today : Yesterday :