posted by 희정냥★ 2008. 11. 10. 01:24


Plug-in Project 에서
FormToolkit toolkit = new FormToolkit(shell.getDisplay());
Composite child_composite = toolkit.createComposite(parent_composite);

이렇게 사용했었는데

Java Project 에서는
FormToolkit toolkit = new FormToolkit(shell.getDisplay()); 부분에서 에러가 납니다.
toolkit이 null로 반환되네요.

Composite child_composite = new Composite(parent_composite, SWT.NONE);
이렇게 바꾸니 됩니다.

이거 런타임시 에러납니다. -_-; 덕분에 꽤나 삽질했음...

'Computer > Programming' 카테고리의 다른 글

Java Project에서 FormToolkit 런타임 에러.  (1) 2008.11.10
Canvas(SWT)에 보이는 화면을 이미지 파일로 저장하기  (0) 2008.11.05
JAR 파일 풀기  (0) 2008.11.05
Java 소스 컴파일하기  (0) 2008.11.04
jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30

댓글을 달아 주세요

  1. BlogIcon 자수씨 2008.11.10 10:05 신고  Addr  Edit/Del  Reply

    FormToolkit 은 먼가요 ㅋㅋㅋ

posted by 희정냥★ 2008. 11. 5. 10:18
public void captureCanvas() {
		
	GC gc = new GC(canvas);
	final Image image = new Image(display, 240, 320); 
	// 240, 320은 가로, 세로 사이즈
	gc.copyArea(image, 0, 0);

	ImageLoader loader = new ImageLoader();
	loader.data = new ImageData[] { image.getImageData() };
	String imageFileName = "cutewebi.bmp";
	loader.save(imageFileName , SWT.IMAGE_BMP);

	gc.dispose();

}

'Computer > Programming' 카테고리의 다른 글

Java Project에서 FormToolkit 런타임 에러.  (1) 2008.11.10
Canvas(SWT)에 보이는 화면을 이미지 파일로 저장하기  (0) 2008.11.05
JAR 파일 풀기  (0) 2008.11.05
Java 소스 컴파일하기  (0) 2008.11.04
jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30

댓글을 달아 주세요

posted by 희정냥★ 2008. 11. 5. 01:25
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class UnZip {

	/** The ZipFile that is used to read an archive */
	protected ZipFile zippy;

	/** The buffer for reading/writing the ZipFile data */
	protected byte[] b;

	/**
	 * Simple main program, construct an UnZipper, process each .ZIP file from
	 * argv[] through that object.
	 */
	public static void main(String[] argv) {
		UnZip u = new UnZip();

		String filename = "c:/cutewebi.jar";
		u.unZip(filename);

		System.err.println("All done!");
	}

	/** Construct an UnZip object. Just allocate the buffer */
	UnZip() {
		b = new byte[8092];
	}

	/** Cache of paths we've mkdir()ed. */
	protected SortedSet dirsMade;

	/** For a given Zip file, process each entry. */
	public void unZip(String fileName) {
		dirsMade = new TreeSet();
		try {
			zippy = new ZipFile(fileName);
			Enumeration all = zippy.entries();
			while (all.hasMoreElements()) {
				getFile((ZipEntry) all.nextElement());
			}
		} catch (IOException err) {
			System.err.println("IO Error: " + err);
			return;
		}
	}

	protected boolean warnedMkDir = false;

	/**
	 * Process one file from the zip, given its name. Either print the name, or
	 * create the file on disk.
	 */
	protected void getFile(ZipEntry e) throws IOException {
		String zipName = ("C:/" + e.getName());

		if (zipName.startsWith("/")) {
			if (!warnedMkDir)
				System.out.println("Ignoring absolute paths");
			warnedMkDir = true;
			zipName = zipName.substring(1);
		}
		// if a directory, just return. We mkdir for every file,
		// since some widely-used Zip creators don't put out
		// any directory entries, or put them in the wrong place.
		if (zipName.endsWith("/")) {
			return;
		}
		// Else must be a file; open the file for output
		// Get the directory part.
		int ix = zipName.lastIndexOf('/');
		if (ix > 0) {
			String dirName = zipName.substring(0, ix);
			if (!dirsMade.contains(dirName)) {
				File d = new File(dirName);
				// If it already exists as a dir, don't do anything
				if (!(d.exists() && d.isDirectory())) {
					// Try to create the directory, warn if it fails
					System.out.println("Creating Directory: " + dirName);
					if (!d.mkdirs()) {
						System.err.println("Warning: unable to mkdir "
								+ dirName);
					}
					dirsMade.add(dirName);
				}
			}
		}

		System.err.println("Creating " + zipName);
		FileOutputStream os = new FileOutputStream(zipName);
		InputStream is = zippy.getInputStream(e);
		int n = 0;
		while ((n = is.read(b)) > 0)
			os.write(b, 0, n);
		is.close();
		os.close();

	}
}

'Computer > Programming' 카테고리의 다른 글

Java Project에서 FormToolkit 런타임 에러.  (1) 2008.11.10
Canvas(SWT)에 보이는 화면을 이미지 파일로 저장하기  (0) 2008.11.05
JAR 파일 풀기  (0) 2008.11.05
Java 소스 컴파일하기  (0) 2008.11.04
jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30
TAG

댓글을 달아 주세요

posted by 희정냥★ 2008. 11. 4. 17:40
import java.io.IOException;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;

import com.sun.tools.javac.api.JavacTool;

public class TestCompile {
    public static void main(String[] args) {
      
        String filename = "c:/Cutewebi.java";
        boolean compRes = false;

  try {
  
   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
      if (compiler == null)
           compiler = JavacTool.create();

   StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); 
   Iterable compilationUnits2 = fileManager.getJavaFileObjects(filename);
   compRes = compiler.getTask(null, fileManager, null, null, null, compilationUnits2).call();
   fileManager.close();
         if (compRes) {
             System.out.println ("Compilation was successful");
         } else {
             System.out.println ("Compilation failed");
         }
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

    }
} 

jdk 폴더에 있는 tools.jar를 라이브러리로 추가해야 합니다.

댓글을 달아 주세요

posted by 희정냥★ 2008. 11. 4. 14:35
   

import java.io.*;
import java.util.*;
import java.util.jar.*;

public class ListJar {
  public static void main(String args[]) {
   String fileName = "c:/cutewebi.jar";
      try {
        listjar(fileName);
      } catch (IOException e) {
        System.err.println("Problems reading: " + fileName);
      }
  }

  private static void listjar(String name) 
          throws IOException {
    System.out.println("Jar: " + name);
    JarFile jar = new JarFile(name);
    Enumeration e = jar.entries();
    while (e.hasMoreElements()) {
      listInfo((JarEntry)e.nextElement());
    }
    System.out.println();
  }

 private static void listInfo(JarEntry entry) {
    System.out.println("\t" + entry.getName());
    
 }
}

'Computer > Programming' 카테고리의 다른 글

JAR 파일 풀기  (0) 2008.11.05
Java 소스 컴파일하기  (0) 2008.11.04
jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30
문자열이 숫자로 구성된건지 아닌지 알아내기  (0) 2008.10.15
IRC 봇 만들기?!  (0) 2008.10.09

댓글을 달아 주세요

posted by 희정냥★ 2008. 10. 30. 16:12
 

/*

  JarClassLoader.java
  version 1.1 - 04/04/2000

*/

import java.io.*;
import java.util.*;
import java.util.zip.*;
import java.util.jar.*;

/**
 *
 * This class implements a simple class loader 
 * that can be used to load at runtime 
 * classes contained in a JAR file.
 *
 * (P)2000 Laurentiu Cristofor
 *
 */
public class JarClassLoader extends ClassLoader
{
  private Hashtable jarContents;

  /**
   * Creates a new JarClassLoader that will allow the loading
   * of classes stored in a jar file.
   *
   * @param jarFileName   the name of the jar file
   * @exception IOException   an error happened while reading
   * the contents of the jar file
   */
  public JarClassLoader(String jarFileName)
    throws IOException
  {
    // first get sizes of all files in the jar file
    Hashtable sizes = new Hashtable();

    ZipFile zf = new ZipFile(jarFileName);

    Enumeration e = zf.entries();
    while (e.hasMoreElements())
      {
	ZipEntry ze = (ZipEntry)e.nextElement();
	// make sure we have only slashes, we prefer unix, not windows
	sizes.put(ze.getName().replace('\\', '/'), 
		  new Integer((int)ze.getSize()));
      }

    zf.close();

    // second get contents of the jar file and place each
    // entry in a hashtable for later use
    jarContents = new Hashtable();

    JarInputStream jis = 
      new JarInputStream
	(new BufferedInputStream
	  (new FileInputStream(jarFileName)));

    JarEntry je;
    while ((je = jis.getNextJarEntry()) != null)
      {
	// make sure we have only slashes, we prefer unix, not windows
	String name = je.getName().replace('\\', '/');

	//System.err.println("JarClassLoader debug: loading " + name);

	// get entry size from the entry or from our hashtable
	int size;
	if ((size = (int)je.getSize()) < 0)
	  size = ((Integer)sizes.get(name)).intValue();

	// read the entry
	byte[] ba = new byte[size];
	int bytes_read = 0;
	while (bytes_read != size)
	  {
	    int r = jis.read(ba, bytes_read, size - bytes_read);
 	    if (r < 0)
	      break;
	    bytes_read += r;
	  }
	if (bytes_read != size)
	  throw new IOException("cannot read entry");
	
	jarContents.put(name, ba);
      }

    jis.close();
  }

  /**
   * Looks among the contents of the jar file (cached in memory)
   * and tries to find and define a class, given its name.
   *
   * @param className   the name of the class
   * @return   a Class object representing our class
   * @exception ClassNotFoundException   the jar file did not contain
   * a class named className
   */
  public Class findClass(String className)
    throws ClassNotFoundException
  {
    //System.err.println("JarClassLoader debug: finding " + className);

    // transform the name to a path
    String classPath = className.replace('.', '/') + ".class";

    byte[] classBytes = (byte[])jarContents.get(classPath);

    if (classBytes == null)
      throw new ClassNotFoundException();

    return defineClass(className, classBytes, 0, classBytes.length);
  }
}

'Computer > Programming' 카테고리의 다른 글

Java 소스 컴파일하기  (0) 2008.11.04
jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30
문자열이 숫자로 구성된건지 아닌지 알아내기  (0) 2008.10.15
IRC 봇 만들기?!  (0) 2008.10.09
const char* 를 char* 로 형 변환하기  (1) 2008.10.06

댓글을 달아 주세요

posted by 희정냥★ 2008. 10. 15. 15:02

자바에서.
 
규식이 옵하를 이용하여;

  String a = "123123123";
  String b ="";
  String c ="afdf";
  
  System.out.println(a.matches("[0-9]+"));
  System.out.println(b.matches("[0-9]+"));
  System.out.println(c.matches("[0-9]+"));

이렇게 하면 반환값이 boolean 타입으로 나옵니다~

'Computer > Programming' 카테고리의 다른 글

jar 파일 목록 보기  (0) 2008.11.04
Jar 파일 읽어오기  (0) 2008.10.30
문자열이 숫자로 구성된건지 아닌지 알아내기  (0) 2008.10.15
IRC 봇 만들기?!  (0) 2008.10.09
const char* 를 char* 로 형 변환하기  (1) 2008.10.06
Java에서 String과 StringBuffer  (2) 2008.08.19

댓글을 달아 주세요

posted by 희정냥★ 2008. 10. 9. 14:02
* Link : http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.ecf.doc/html/tutorials/bot.html


Eclipse Communication Framework (ECF)

Create an IRC bot

A bot is a useful daemon application for a user to automate tasks similar to a script or a macro. An IRC bot is generally a bot that sits in an IRC channel and performs tasks such as answering to commands and logging. This tutorial will explain how to create an IRC bot using the bot framework.

Requirements

As regular expression pattern matching is used, a Java runtime environment of 1.4.2 or higher is required.

Project Setup

Dependencies
  1. Create a 'Plug-in Project' like how you normally would. Since this is a bot that will be run in headless mode, we do not need any UI components. You do not even need an activator class.
  2. Open the 'MANIFEST.MF' file and go to the 'Dependencies' tab.
  3. Add 'org.eclipse.ecf', 'org.eclipse.ecf.presence', and 'org.eclipse.ecf.presence.bot' as a 'Required Plug-in'.
  4. Now add 'org.eclipse.core.runtime' as an 'Imported Package'.

MANIFEST.MF

 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Geir Plug-in
 Bundle-SymbolicName: org.eclipse.ecf.example.geir;singleton:=true
 Bundle-Version: 1.0.0
 Require-Bundle: org.eclipse.ecf,
  org.eclipse.ecf.presence,
  org.eclipse.ecf.presence.bot
 Import-Package: org.eclipse.core.runtime

Extensions

  1. Open the 'Extensions' tab.
  2. Add the 'org.eclipse.ecf.presence.bot.chatRoomRobot' and the 'org.eclipse.ecf.presence.bot.chatRoomMessageHandler' extension point.
  3. Select the 'org.eclipse.ecf.presence.bot.chatRoomRobot' extension.
  4. Fill in something unique for your 'id'. 'org.eclipse.ecf.example.bot.geir2'
  5. Fill in 'ecf.irc.irclib' for your 'containerFactoryName'.
  6. For the 'connectId', select an IRC server of your choice and a name for the bot. 'irc://geir2@irc.freenode.net'
  7. For the 'chatRoom' field, pick the channel that you want your bot to join upon successful connection to the server above. '#eclipse'
  8. Now select the 'org.eclipse.ecf.presence.bot.chatRoomMessageHandler' extension point.
  9. For your 'id', copy the same 'id' that you filled in above. 'org.eclipse.ecf.example.bot.geir2'
  10. In 'filterExpression', enter a regular expression that should be matched for parsing purposes for your bot. '(~bug[0-9]*)
  11. Click on the 'class*' hyperlink and then create a new class that implements the 'org.eclipse.ecf.presence.bot.IChatRoomMessageHandler' interface. For this example, I will assume that your class's name is 'Geir2Bot' under the 'org.eclipse.ecf.example.bot' package..

plugin.xml

 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.2"?>
 <plugin>
    <extension
          point="org.eclipse.ecf.presence.bot.chatRoomMessageHandler">
       <handler
             chatRoomRobotId="org.eclipse.ecf.example.bot.geir2"
             class="org.eclipse.ecf.example.bot.Geir2Bot"
             filterExpression="(~bug[0-9]*)">
       </handler>
    </extension>
    <extension
          point="org.eclipse.ecf.presence.bot.chatRoomRobot">
       <chatRoomRobot
             connectId="irc://geir2@irc.freenode.net"
             containerFactoryName="ecf.irc.irclib"
             id="org.eclipse.ecf.example.bot.geir2">
          <chatRooms
		        name="#eclipse"<
          >/chatRooms<
       </chatRoomRobot>
    </extension>
 </plugin>

Writing the Code

  1. Open the 'Geir2Bot' class that you have created.
    • Since we want our bot to be able to say something, we need to retrieve an interface that will provide us with such a functionality.
      • Add a field to the class of type 'IChatMessageSender'.
        • We will retrieve our instance in the 'preChatRoomConnect(IChatRoomContainer, ID)' method. This method will be called right before our bot joins the channel (#eclipse in our case). You can retrieve an instance of an IChatMessageSender by calling 'getChatRoomMessageSender()' on the provided 'IChatRoomContainer' instance.
          • Now that our bot has a mechanism for replying, we should write some code to parse the messages that the bot receives so that it can give a correct response. To get the string that's been said, use the 'getMessage()' method from the 'IChatRoomMessage' interface that's passed into the 'handleRoomMessage(IChatRoomMessage)' method.
            • Our regular expression of '(~bug[0-9]*)' implies that any string beginning with ~bug followed by any number of digits will be a valid input for our bot to read. So let's add some string handling code to route people to Eclipse's bugzilla when they type something like ~bug150000 or ~bug180078.
              • To send a reply to the IRC channel, simply use IChatRoomMessageSender's 'sendMessage(String)' method. This method will throw an 'ECFException', but given this simple scenario, we won't bother to handle it.

              org.eclipse.ecf.example.bot.Geir2Bot

               package org.eclipse.ecf.example.bot;
               
               import org.eclipse.ecf.core.IContainer;
               import org.eclipse.ecf.core.identity.ID;
               import org.eclipse.ecf.core.util.ECFException;
               import org.eclipse.ecf.presence.bot.IChatRoomBotEntry;
               import org.eclipse.ecf.presence.bot.IChatRoomMessageHandler;
               import org.eclipse.ecf.presence.chatroom.IChatRoomContainer;
               import org.eclipse.ecf.presence.chatroom.IChatRoomMessage;
               import org.eclipse.ecf.presence.chatroom.IChatRoomMessageSender;
               
               public class Geir2Bot implements IChatRoomMessageHandler {
               
               	private IChatRoomMessageSender sender;
               
               	public void handleRoomMessage(IChatRoomMessage message) {
               		// use substring 1 to just truncate the opening tilda (~)
               		String msg = message.getMessage().substring(1);
               		try {
               			if (msg.equals("bug")) { //$NON-NLS-1$
               				// if no number was provided, just send them to bugzilla
               				sender.sendMessage("https://bugs.eclipse.org/bugs/"); //$NON-NLS-1$
               			} else {
               				// otherwise, give the person a direct link to the bug
                				sender.sendMessage("https://bugs.eclipse.org/bugs/" //$NON-NLS-1$
               						+ "show_bug.cgi?id=" + msg.substring(3)); //$NON-NLS-1$
               			}
               		} catch (ECFException e) {
               			e.printStackTrace();
               		}
               	}
               
               	public void init(IChatRoomBotEntry robot) {
               		// nothing to do
               	}
               
               	public void preChatRoomConnect(IChatRoomContainer roomContainer, ID roomID) {
               		sender = roomContainer.getChatRoomMessageSender();
               	}
               
               	public void preContainerConnect(IContainer container, ID targetID) {
               		// nothing to do
               	}
               
               }

              Running the Example

              1. Open the 'Run' dialog and then right-click on 'Eclipse Application' and select 'New'.
              2. From the combo drop down in the 'Program to Run' section, select 'Run an pplication:' and choose 'org.eclipse.ecf.presence.bot.chatRoomRobot'.
              3. Click on the 'Plug-ins' tab.
              4. From the top, select 'plug-ins selected below only' from the drop down box.
              5. Pick the plug-in you created (in the example, this was 'org.eclipse.ecf.example.geir') and 'org.eclipse.ecf.provider.irc'.
              6. Click on the '''Add Required Plug-ins''' button on the right and then hit 'Run'.
              7. Moments later, your bot should appear in the server and channel that you specified in the 'plugin.xml' file.

               * geir2 (n=geir2@bas3-kitchener06-1096650252.dsl.bell.ca) has joined #eclipse
               <user> ~bug
               <geir2> https://bugs.eclipse.org/bugs/
               <user> ~bug76759
               <geir2> https://bugs.eclipse.org/bugs/show_bug.cgi?id=76759
               
              심심할때 해봐야겠심;
              TAG

              댓글을 달아 주세요

              posted by 희정냥★ 2008. 10. 6. 13:05

              C++에서

              const char*를 char* 로 형 변환하기!

              사실 엄청 간단한건데;;

              순간 어떻게 해야할지 생각했었어요.. ㅡ_ㅡ;;


              const char* cc = "cc";

              char* c = (char *) cc;

              댓글을 달아 주세요

              1. BlogIcon Ray 2010.09.28 12:14  Addr  Edit/Del  Reply

                const char* cc = "cc";

                char* c = (char *) cc; <== 위험한 코드입니다.

                char *c = const_cast<char*>cc <== 안전한 코드입니다.

              posted by 희정냥★ 2008. 8. 19. 11:47
              저는 요즘 코드를 생성해내는 코드(ㅡ_ㅡ;;)를 짜고 있습니다.

              Java로 데이터를 읽어서 원하는 형태의 C++ 코드를 생성해 내는 것이죠.

              계속 String을 붙이는 방식으로요.. ㅎㅎ

              그런데 오늘 한가지 새로운 사실을 알았습니다.

              제 뒷자리 계신 연구원께서 문자열을 계속 붙일땐 String보다 StringBuffer를 사용하는게 성능상 좋다네요..;;

              그럼 뭐 다음부터는 StringBuffer를 써야지라고 생각했었는데..;;

              참고 글들을 보는 순간 기존의 String을 StringBuffer로 바꾸기로 결심했습니다.. ㅡ_ㅡ;;;

              public String getCode(){
                 String result = "";
                 result += "a";
                 result += "b";
                 return result;
              }

              --> 이런 형태로

              public String getCode(){
                 StringBuffer result = new StringBuffer();
                 result.append("a");
                 result.append("b");
                 return result.toString();
              }

              String은 불변객체라 += 할때마다 String 객체들을 생성합니다.


              참고글 :
              http://theeye.pe.kr/146
              http://rothmans.wordpress.com/2006/07/12/string%EC%9D%98-%EC%99%80-stringbuffer%EC%97%90-%EB%8C%80%ED%95%B4/
              http://euney.tistory.com/


              그걸 이제 알았냐고 물으신다면.. 네.. 이제 알았습니다... OTL

              'Computer > Programming' 카테고리의 다른 글

              IRC 봇 만들기?!  (0) 2008.10.09
              const char* 를 char* 로 형 변환하기  (1) 2008.10.06
              Java에서 String과 StringBuffer  (2) 2008.08.19
              Windows Vista의 Hero를 찾습니다!  (0) 2008.05.10
              후기_자바 개발자 컨퍼런스  (8) 2008.02.17
              자바 개발자 컨퍼런스  (0) 2008.02.01

              댓글을 달아 주세요

              1. BlogIcon 2009.02.14 17:06  Addr  Edit/Del  Reply

                C# 에선 StringBuilder

              2. 김민석 2009.06.20 20:55  Addr  Edit/Del  Reply

                요즘은 컴파일러가 문자열 연결식으로 해놔도 완만하면 자동으로 StringBuffer 로 바꿔준단다. 컴파일 하고 나서 다시 역컴파일해보면 알아.

              posted by 희정냥★ 2008. 5. 10. 21:17
              사용자 삽입 이미지


              Windows Vista의 Hero를 찾습니다!

              자세한 사항은 "이곳"을 클릭해주세요.

              'Computer > Programming' 카테고리의 다른 글

              const char* 를 char* 로 형 변환하기  (1) 2008.10.06
              Java에서 String과 StringBuffer  (2) 2008.08.19
              Windows Vista의 Hero를 찾습니다!  (0) 2008.05.10
              후기_자바 개발자 컨퍼런스  (8) 2008.02.17
              자바 개발자 컨퍼런스  (0) 2008.02.01
              조엘 테스트  (1) 2007.11.24

              댓글을 달아 주세요

              posted by 희정냥★ 2008. 2. 17. 03:09

              서울 코엑스에서 자바 개발자 컨퍼런스가 있었습니다.

              저는 아주아주아주 가고 싶은 맘에 KTX 표를 떡~ 하니 끊고 새벽부터 부산역으로 나섰습니다.

              학생이 돈이 어딨겠습니까 ㅠㅠ 저에겐 차비가 아주 충격적이였지만 아주아주 큰 맘 먹은거죠. ^-^;

              새벽에 바람이 정말 차더군요.,..

              KTX를 타고 나홀로 상경을 했습니다.

              서울역에 도착해서 지하철을 타고 삼성역으로 갔는데,

              중간에 환승할때 빼곤 별로 헤메진 않았습니다.

              삼성역에 도착하고, 코엑스를 찾아가는데도 화살표 보고 잘 따라갔죠.

              코엑스는 처음 가봤는데 굉장히 크고 좋더군요...;;


              코엑스로 가는 길입니다.



              건물 안으로 들어가서 화살표 따라 갔죠... ㅎ

              중간에 매장들이 많이 있더군요.



              그리고 안내데스크에서 그랜드 볼룸이 어딨냐고 물어보고,, 컨퍼런스가 있는 장소를 찾아갔습니다.

              1층이라고 해서 1층까진 갔는데 1층도 굉장히 넓고 다른 행사도 하고 있더라구요.

              전 그냥 검은옷 입고, 어두운 분위기 나는, 네모난 서류가방을 든 아져씨들을 따라 갔죠.

              왠지 그 대세를 따라가면 도착할꺼 같아서요.. ㅎ


              그런데 실제로 맞았습니다 !!


              그랜드 볼룸으로 딱~ 들어갔죠... !


              그런데...................!!



              헉.....!!!!!!!



              뭐지 ㅡ_ㅡ?

              사람들이 정말 많았습니다.

              온통 줄은 서있는데,

              줄이 바르지 않고, 안내도 안 되어 이써서 이 줄이 뭐하는 줄인지도 잘 모르겠더라구요.

              일단 대세를 따라 사전등록 줄을 섰습니다.

              저는 사전등록을 하고 간 상태인데 줄이~~~~

              이렇게 뒤쪽까지 서 있었습니다.

              머리가 띵~~하더군요.. ㅡ.ㅡ;; 언제까지 기다려야 하지.. ㅠ_ㅠ


              줄을 서 있으면서 조금씩 앞으로 전진했죠.


              드디어 사전등록 창구에 가까이 왔습니다...


              그렇게 한참 후에~ 사전등록을 무사히 확인 마치고 교재를 받았습니다.

              이건데;; 굉장히 두껍고 (제가 들기에는) 무거워요.. ㅡ.ㅡ



              사람들이 너무 많아서 정신이 없었습니다... ㅠㅠ

              그동안 세미나는 수십번도 더 가봤지만, 이렇게 사람 많은 세미나는 처음봐요.. ㅠㅠ

              옆에 IBM, Redhat, Daum, Sun 등의 회사에서
               
              설문지를 작성하거나 설명을 들으면 기념품을 주더군요,.

              그걸 받기위해서 사람들이 또 줄을 한~~~~~~~~~~~~~참 길게 서있었습니다.

              저도 대세를 따라 줄을 섰긴 한데..너무 오래걸려서 2~3군데 밖에 못했어요.

              (여기까지 왔는데,, 기념품은 다 받아가야 하는데... ㅠㅠ)



              처음 연설 할때입니다.

              줄 서느라 시간을 너무 마니 빼껴서 연설이 끝날때 쯤 들어갈수 있었습니다.

              굉장히 넓었는데 사람들이 너무 많아서 자리가 없었어요 ㅠㅠ


              그리고 각 섹션별 강의가 시작되었는데,

              제가 듣고 싶은 섹션을 찾아 갔더니 거기도 사람이 너무 많아서

              한참을 줄 선 후에 들어갈 수 있었어요.


              자리가 모자라서 통로 부분에 앉을수 밖에 없었습니다.

              그나마 통로에라도 앉으면 다행이지, 그 자리조차 없어서 뒤에 서서 듣는 사람들도 있었고,

              아예 들어오지도 못해서 못듣는 사람도 있었어요.


              제가 앉은 자리에서 본 앞쪽입니다.



              빽빽하게 통로까지 다 앉아있으니 이동은 거의 불가입니다.. ㅡ_ㅡ

              전 화장실도 갔다오지 못하고, 목말랐지만 물도 못마시고,,,

              꼼짝 않고 그대로 있었어요.



              제가 앉은 자리에서 본 뒤쪽입니다.

              처음엔 저도 줄을 늦게 서서 통로 바닥에 바로 앉게 되었는데 다리가 어찌나 저리던지...

              의자에 앉으신분이 너무 부럽더군요... ㅠㅠ


              다음 섹션도 같은 장소에서 하는걸 들어서, 저는 이동하지 않고 그대로 있다가,,

              드디어 의자에 앉게 되었습니다.

              뒤에 보면 문 앞에 서 계신분들이 참 많죠.. 아예 들어오지 못한 분들도 많은것 같습니다.


              인기 많은 섹션엔 사람들이 너무 몰리고, 인기 없는 섹션은 한산하더라구요.


              그렇게 세미나는 진행되었어요.


              사람이 너무 많아서 제가 원하는 걸 못들었던 시간도 있었어요.

              인기 많은 강의는,, 공간은 좁은데 어찌나 사람이 줄을 많이 서 있던지 .....


              그리고 모든 세미나가 끝나고 경품 추첨이 있었습니다.


              저는 제 블로그로 트랙백도 날렸고, 사전등록도 했고, 설문지도 제출했습니다.

              화면에 보이는것은 트랙백 추첨 프로그램이고요,,


              트랙백 날린사람 대상으로 추첨해서 경품을 주고,

              사전등록 한 사람들 대상으로 추첨해서 경품을 주고,

              설문지 제출한 사람들 대상으로 추첨해서 경품을 줬거든요.


              저는 3번이나 가능성이 있었습니다...!!!


              하지만 아무것도 받지 못했어요ㅠㅠ

              완전 슬펐어요~~~~~~~~~~~~~~~~~ ㅠ_ㅠ 엉엉.. ㅠㅠ


              이것은 제 설문지 추첨번호....;

              매년 2월 셋째주 토요일은 자바개발자의 날입니다.... ;;

              셋째주 토요일이 설날 연휴인 경우 다음주에 합니다.


              아... 오늘 하루 너무 힘들었습니다..


              이건 제가 받아온 기념품들...

              이거라도 있으니 그나마 위안이... ㅠㅠ


              음... 오늘 자바 개발자 컨퍼런스에 대해 아쉬운 점이 있다면..

              사전등록을 받으면서 대충 참가 인원수가 파악되었을텐데,

              좀 더 질서 있게 줄을 설 수 있도록 도와주셨으면 좋았을꺼 같습니다.

              사람들이 엄청 많아서, 어디가 줄의 끝인지, 어디로 이어지는지도 잘 모르겠더군요.


              그리고 섹션별로 미리 어느 섹션을 들을껀지 사전조사를 통해

              사람들이 많이 몰리는 강의는 좀 더 넓은 Room에서 했으면 좋았을뻔 했습니다.

              분명히 섹션별로 듣는 인원이 다를 수 있는데, 그냥 Room을 순서대로 정하는 바람에

              사람들이 많이 몰리는 강의는 정말 듣기 힘들었습니다.

              저는 부산에서까지 시간+돈 투자해서 왔는데

              들어갈 자리가 없어서(공간이 없어서) 제가 원하는 강의 못듣고,,,

              얼마나 슬펐겠습니까.. ㅠ_ㅠ!!!


              이 줄이 뭐하는 줄인지도 안내해 주시거나 종이에라도 적어서 세워 두셨으면 하는 생각이 드네요.

              이 줄이 도대체 뭐하는 줄인지도 모르고 그냥 대세 따라 줄슨 경우도 많았습니다.

              제가 줄을 서있으면서 사람들이 하는 얘기를 들었는데

              '이 줄은 도대체 뭐하는 줄이야...?"

              "뭐하는 줄인지라도 좀 알고 서있으면 좋겠는데...;;"

              저도 적극 공감했습니다.


              보이는건 사람밖에 없었어요.


              너무 힘들었습니다.


              내년에는 더 좋은 행사가 되었으면 좋겠습니다 ^-^

              'Computer > Programming' 카테고리의 다른 글

              Java에서 String과 StringBuffer  (2) 2008.08.19
              Windows Vista의 Hero를 찾습니다!  (0) 2008.05.10
              후기_자바 개발자 컨퍼런스  (8) 2008.02.17
              자바 개발자 컨퍼런스  (0) 2008.02.01
              조엘 테스트  (1) 2007.11.24
              구글의 마스터 플랜  (0) 2007.04.07

              댓글을 달아 주세요

              1. BlogIcon 프리지트 2008.02.17 11:16  Addr  Edit/Del  Reply

                우아... 부산에서 오셨군요... 사진에 저두 나왔네요..ㅎㅎ

                저두 그 바닥에 앉았던..ㅡㅡ;;

              2. BlogIcon Heart 2008.02.17 11:56  Addr  Edit/Del  Reply

                부산에서 올라오셨다니;; 그것도 KTX타고;;
                고생 많으셨네요 ^^
                이번 컨퍼런스는 여러 모로 아쉬움이 좀 많았던 것 같아요.

              3. BlogIcon innerman 2008.02.17 13:22  Addr  Edit/Del  Reply

                올해 정말 많은 인원이 참석했더라구요.
                자바가 인기인는 언어인가 봅니다.

              4. BlogIcon 하루10분 2008.02.17 14:56 신고  Addr  Edit/Del  Reply

                ㅎㅎㅎ 부산에서 오시고^^ 대단하십니다...

              5. BlogIcon lazyartist 2008.02.17 17:45  Addr  Edit/Del  Reply

                부산에서 오시다니... 대단하시네요...
                전 한시간 거린데두 넘 멀다고 투덜거렸는데요... ^^
                첨엔 사람이 넘 많아서 적응이 안됐는데 나중엔 요령이 생겨서 줄도 잘 파악하고 자리 없으면 젤 앞에가서 앉아서 편하게 본것같아여~
                그리고 화장실에 남여 표시가 잘 안보여서...
                여자화장실에도 한번 들어갔다오고... ㅡㅡ;
                잼나는 행사였네요~ ㅋㅋ

              6. BlogIcon 동완짱 2008.02.19 17:37  Addr  Edit/Del  Reply

                와..진짜 부산에서 서울까지^^
                대단하세요!

                다음엔 다음 캘린서 소개해드릴게요^^

              7. 박정욱 2008.04.12 01:15  Addr  Edit/Del  Reply

                헉 !!! 자바 개발자 컨퍼런스 !!! ㅠ_ㅠ 가고 팠었는데 ㅠ_ㅠ
                간접 체험 ㅠ_ㅠ 흑흑

              8. 쏘랭이 2011.01.26 21:46  Addr  Edit/Del  Reply

                보기 좋네요. 하고 싶은거 하려는 열정,,부럽네요^^ 건강하세요!!

              posted by 희정냥★ 2008. 2. 1. 04:53

              'Computer > Programming' 카테고리의 다른 글

              Windows Vista의 Hero를 찾습니다!  (0) 2008.05.10
              후기_자바 개발자 컨퍼런스  (8) 2008.02.17
              자바 개발자 컨퍼런스  (0) 2008.02.01
              조엘 테스트  (1) 2007.11.24
              구글의 마스터 플랜  (0) 2007.04.07
              단위 테스트 JUnit 사용하기  (0) 2007.04.02

              댓글을 달아 주세요

              posted by 희정냥★ 2007. 11. 24. 21:55



              조엘 테스트


              1. 소스코드 관리프로그램을 사용하고 있습니까?

              2. 한방에 빌드를 만들어 낼 수 있습니까?

              3. 일일 빌드를 하고 있습니까?

              4. 버그 추적 시스템을 운영하고 있습니까?

              5. 코드를 새로 작성하기 전에 버그를 수정합니까?

              6. 일정을 업데이트 하고 있습니까?

              7. 명세서를 작성하고 있습니까?

              8. 조용한 작업 환경에서 일하고 있습니까?

              9. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까?

              10. 테스터를 별도로 두고 있습니까?

              11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까?

              12. 무작위 사용편의성 테스트를 수행하고 있습니까?


              'Computer > Programming' 카테고리의 다른 글

              후기_자바 개발자 컨퍼런스  (8) 2008.02.17
              자바 개발자 컨퍼런스  (0) 2008.02.01
              조엘 테스트  (1) 2007.11.24
              구글의 마스터 플랜  (0) 2007.04.07
              단위 테스트 JUnit 사용하기  (0) 2007.04.02
              컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25

              댓글을 달아 주세요

              1. BlogIcon 하니르 2007.11.30 05:15 신고  Addr  Edit/Del  Reply

                테스터? 본인 ㅋ

              posted by 희정냥★ 2007. 4. 7. 00:59
              출처 : http://amper.tistory.com/



              사용자 삽입 이미지

              'Computer > Programming' 카테고리의 다른 글

              자바 개발자 컨퍼런스  (0) 2008.02.01
              조엘 테스트  (1) 2007.11.24
              구글의 마스터 플랜  (0) 2007.04.07
              단위 테스트 JUnit 사용하기  (0) 2007.04.02
              컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25
              프로그래머 타입별 분류  (3) 2006.10.03

              댓글을 달아 주세요

              posted by 희정냥★ 2007. 4. 2. 14:33

              단위 테스트 JUnit 사용하기.

              목포  bada9님의 질문중 JUnit을 이용한 단위 테스트입니다. 디버그를 할 때 자바는 단위테스트를 많이 사용합니다. 자바 디버깅 툴 jbd 사용법과 System.out.println, JLogger, Log4j를 이용한 로깅방법은 빠른 시일안에 추가하겠습니다.
               
              1. JUnit 환경 확인하기 - 이클립스에 통합되어 있다.


              2. 프로젝트 만들기


              3. 클래스 만들기
              [Student.java]-------------------------
              package kr.honny.unit;

              public class Student {
               private String name;
               private int age;
               private String addr;
                      
               public Student(String name, int age,String addr) {
                         this.name=name;
                         this.age=age;
                         this.addr=addr;
               }//Student
               public String getAddr() {return addr;}
               public int getAge() {return age;}
               public String getName() {return name;}
               public void setAddr(String string) {addr = string;}
               public void setAge(int i) {age = i;}
               public void setName(String string) {name = string;}
               public String toString(){
                         return name+"   "+age+"    "+addr;
               }//toString
               public boolean equals(Object obj){
                         boolean isE=false;
                         Student temp=(Student)obj;
                         if(temp.getName().equals(name) && temp.getAge()==age
                          && temp.getAddr().equals(addr)){
                                   isE=true;
                         }
                         return isE;
               }//equals
               
               public int hashCode(){
                         int temp=0;
                         temp=name.hashCode()+addr.hashCode()+age+37;
                         return temp;
               }//hashCode
              }

              [StudentMain.java]-------------------------

              package kr.honny.unit;      

              public class StudentMain {

               public static void main(String[] args) {
                      Student s1=new Student("a",34,"b");
                      Student s2=new Student("a",34,"b");
                      System.out.println("--------Test----------");
                      System.out.println(s1.hashCode());//해쉬코드
                      System.out.println(s2.hashCode());//해쉬코드
                      System.out.println(s2.equals(s1));
                      System.out.println(s1.getName().equals("a"));
                      System.out.println(s1.getAddr().equals("b"));
                      System.out.println(s1.getAge()==34);
               }
              }

               

              4. JUnit Test Case 만들기



              5. JUnit Test Case 설정


              6. JUnit Test Case 코딩
              [HelloJunits.java]-------------------------
               
              package kr.honny.unit;
              import junit.framework.TestCase;
              public class HelloJunits extends TestCase {   //1. 반드시  TestCase를 상속한다.
                     Student s1;
                     Student s2;
                     Student s3;
                   
               public static void main(String[] args) {
                    junit.swingui.TestRunner.run(HelloJunits.class); //2. 실행은 ..run(클래스이름.class)
                   //junit.swingui.TestRunner.run(클래스이름.class)  이형식을 지킬 것.
               }
               public void setUp() {   //초기화
                     s1=new Student("a",34,"b");
                     s2=new Student("a",34,"b");
                     s3=new Student("a",34,"c");
               }
               public void testHash() {  // 3. 테스트할 메서드는 testXXX 형태로 선언한다.
                    assertTrue(s1.hashCode() == s2.hashCode());
                    //4. assertTrue는 ==나 equals를 직접 비교한다.
               }
               public void testSameStudent() {
                //System.out.println(s2.equals(s1));
                    assertEquals(s1,s2);  //정상   5. s1.equals(s2)를 비교한다.
                    assertEquals(s1,s3);  //에러 발생
                    assertEquals("참조타입 비교",s1,s2);
                //assertTrue(s2.equals(s1));
               }
              }

              7. JUnit Test Case 코딩

              StudentMain.java과 같은 역할을 단위 테스터로 실행한다.

              StudentMain.java는 System.out.println을 사용하여 한 줄 한 줄 테스트를한다.

              그러나 HelloJunits.java는 JUnit 프레임워크를 이용하여 메서드 단위로 테스트를 한다.

              assertEquals, assertTrue를 이용하여 참 거짓을 예상하고 잘 작성된 메서드 인가 아닌가를 판별할 수 있다.



              8. JUnit Test Case 실행결과 - 모두 올바른 결과를 낼때
              틀린 결과를 내면 붉은 색이 나온다. 맞는 값과 틀린 값을 입력해서 잘 작성된 메서드인가를 확인한다.

              출처 : Tong - rainboowkr님의 Eclipse통

              'Computer > Programming' 카테고리의 다른 글

              조엘 테스트  (1) 2007.11.24
              구글의 마스터 플랜  (0) 2007.04.07
              단위 테스트 JUnit 사용하기  (0) 2007.04.02
              컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25
              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02

              댓글을 달아 주세요

              posted by 희정냥★ 2007. 3. 25. 15:56
              출처:이정환닷컴

              'RSA 공개열쇠 방식'의 암호화는 다음의 3단계 과정이 필요하다.

              1단계 : 공개 열쇠 만들기.

              1. 암호를 받는 쪽에서는 아무거나 두 소수, p와 q를 생각한다.
              2. p와 q를 곱해 N을 만든다.

              3. 아무 숫자나 다음 식을 만족하는 두 숫자를 생각한다.

              1=(e*d)mod[(p-1)(q-1)]

              4. mod()는 나머지를 구하는 함수다. 40mod(7)은 40을 7로 나눈 나머지를 구하라는 말이다. 답은 5다.

              5. N과 e는 공개 열쇠다. 전화로 불러줘도 되고 사람들에게 알려줘도 된다. 전혀 문제가 없다.

              2단계 : 암호 만들기.

              1. 암호를 만드는 쪽에서는 공개 열쇠 N과 e를 써서 암호를 만든다. 문제는 다른 사람들도 모두 이 공개 열쇠를 알고 있다는 사실이다. 열쇠는 공개돼 있지만 받는쪽에서만 풀 수 있어야 한다.

              2. 먼저, 문서의 모든 글자를 이진수로 바꾸고 다시 십진수로 바꾼다. 이 숫자를 M이라고 한다. 우리는 지금부터 M을 암호로 바꾼다.

              3. 다음 식을 써서 암호 C를 만든다.

              C=Memod(N)

              3단계 : 암호 풀기.

              1. 암호 C를 받아서 원래 문서 M으로 풀어보자.
              2. 공식은 간단하다. N과 d를 집어넣으면 된다.

              M=Cdmod(N)

              3. N과 e는 공개돼 있지만 다른 사람들은 p와 q를 알 방법이 없다. 한번 더 계산해서 만든 d는 더 알 수 없다.




              백문이 불여일견, 예제를 풀어보자.

              1단계 : 공개 열쇠 만들기.

              1. 이정환은 두 소수 11과 17을 생각하고 곱해서 공개 열쇠 N을 187로 잡는다.

              2. 이정환은 대충 d를 23로 놓고 다음 공식에 넣어서 공개 열쇠 e를 7으로 잡는다.

              1=(e*d)mod[(p-1)(q-1)]

              1=(7*23)mod(10*16)
              1=161mod(160)

              3. N과 e, 187과 7을 공개한다. 얘들아, 우리 이걸로 암호 만들거다. 풀 수 있으면 풀어봐라.

              2단계 : 암호 만들기.

              1. 백우진은 'X'를 암호화하려고 한다. 이진수로 바꾸면 1011000, 다시 십진수로 바꾸면 M은 88이 된다. 백우진은 M을 공개 열쇠 N과 e, 187과 23을 써서 암호로 바꾼다.
              2. 공식에 집어넣는다.

              C=Memod(N)

              C=887mod(187)
              C=40867559636992mod(187)
              C=11

              3. 40867559636992을 187로 나누면 나머지가 11이 나온다는 이야기다. 11이 암호다. 11를 이정환에게 보낸다.

              3단계 : 암호 풀기.

              1. 이정환은 이제 암호 C, 11을 풀어 원래 숫자 M을 찾아내야 한다.

              2. 공식에 집어넣는다. N과 d는 각각 187과 23이다. N은 공개 열쇠지만 d는 이정환만 아는 숫자다. 처음에 생각한 숫자 p와 q를 곱해서 N을 만들고 이걸 조합해서 d와 e를 만들었는데, 공개된 N과 e만 가지고 d를 찾기는 굉장히 어렵다. 거의 불가능하다.

              M=Cdmod(N)

              M=1123mod(187)
              M=895430243255237372246531mod(187)
              M=88

              3. 88, 암호를 풀었다.




              'RSA 공개 열쇠 방식'은 MIT 컴퓨터 사이언스 실험실의 론 리베스트와 아디 샤미르, 레너드 애들먼, 세 사람이 발명했다. RSA는 이들의 머릿글자 모음이다. 이 암호화 방식의 핵심은 소인수 분해에 있다.

              두 소수 p와 q를 곱해서 공개 열쇠 N을 만들면 이걸 쥐고 아무리 난리법석을 떨어도 원래 숫자를 찾을 방법이 없다.

              35가 5와 7로 나눠져 있다는 건 쉽게 알 수 있다. 소인수 분해는 하나하나 숫자를 맞춰보는 수밖에 딱히 방법이 없다. 숫자가 커지면 슈퍼컴퓨터를 돌려도 몇십년씩 걸린다. 17과 19607843을 곱하면 333333331이 된다는 건 쉽게 알 수 있지만 그걸 찾기가 어렵다는 이야기다. 실제로 수학자들은 수백년동안 이 숫자가 소수라고 생각해왔다.

              여기서 문제를 한번 더 뒤집어 공개 열쇠를 두개 만들어 놓고 이걸 꼬아서 혼자만 아는 결정적인 열쇠 d를 만들어 놓으면 당신의 암호는 거의 완벽하다고 할 수 있다.

              위의 예제에서 공개 열쇠 N과 d는 각각 187과 23이다. 이걸 풀려면 N이 먼저 뭐와 뭐의 곱인가 알아야 한다. 그리고 그 뭐와 뭐에서 각각 1을 뺀 숫자의 곱을 구하고 거기서 다시 1을 뺀 수가 d의 몇배인가도 알아야 한다. 몇배인가만 알면 암호는 풀리겠지만, 한번 해봐라. 결코 만만치 않다.

              187 정도면 어떻게 풀릴 수도 있지만 보통은 자릿수가 308 이상이다. 한번 보겠는가.

              4286280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744699627495237

              이게 308자리 숫자다. 이게 뭐와 뭐, 두 소수의 곱으로 돼 있는가 맞춰봐라. 이 정도면 1억대의 PC를 한꺼번에 돌려도 1000년이 넘게 걸린다고 한다. 현재의 과학기술로는 이런 암호를 풀 방법이 없다.

              도움 말씀 : 백우진.
              참고문헌 : '코드북', '현대수학의 여행자, '수학: 양식의 과학', '영부터 무한대까지', '수학의 황제 가우스'.

              'Computer > Programming' 카테고리의 다른 글

              구글의 마스터 플랜  (0) 2007.04.07
              단위 테스트 JUnit 사용하기  (0) 2007.04.02
              컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25
              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16

              댓글을 달아 주세요

              1. BlogIcon 아치븐 2007.03.25 22:47  Addr  Edit/Del  Reply

                걍.. 귀찮은데 해킹 하라고 그러지 뭐..ㅡ.ㅡㅋㅋ

              2. 성민 2009.10.12 14:15  Addr  Edit/Del  Reply

                중국에서 저 거 푸는 알고리즘이 나와 서 대략 5분내로 푼다더군요

              posted by 희정냥★ 2006. 10. 3. 22:36
              프로그래머 타입별 분류
              프로그래머의 적성에 따라 다음과 같은 식으로 역할을 나누면 어떨까 하는 생각이 들었음

              1. 옵티마이저
              - 나는 1 fps 를 올릴때마다, 1kb 를 줄일 때마다 삶의 보람을 느낀다 타입
              - 좋아하는 툴 : 프로파일러, 프로파일링 라이브러리, 메모리 할당 현황 뷰어
              - 이 사람이 가장 좋아하는 책 : Efficient C++, Effective C++ 시리즈, 인텔 프로세서 최적화 cookbook...

              2. 인터페이스 디자이너
              - 나는 불필요한 dependency 를 없앨 때마다 삶의 보람을 느낀다 타입
              - 쓰기 쉽고 편하게 된 라이브러리를 만드는 것이 임무
              - 각 모듈의 인터페이스에서 작명이나 구성이 사용자 중심이 아니라 구현자 중심으로 되어있는 부분을 수정
              - 회사에서 만든 라이브러리는 언제라도 외부에 돈받고 팔 수 있는 수준이어야 한다는 신조
              - 이 사람이 가장 좋아하는 책 : John Lakos 의 Large scale C++ Developement

              3. 구조 설계자
              - mvc 구조로 딱딱 기능이 잘 분담되어 있는 프로그램을 보면 기분이 좋아지는 타입
              - 인터페이스 디자이너와 유사한 부분이 있지만, 인터페이스 디자이너는 여러개의 모듈 사이에어의 관계에 주목하는 반면, 구조 설계자는 한 모듈 내에서의 기능 구현
              - 버츄얼 함수를 언제 써야 하고, 언제 쓰지 말아야 할지에 대해서 동물적인 감각으로 디자인
              - 이 사람이 가장 좋아하는 책 : 디자인 패턴, POSA 등...

              4. 신기술 연구원
              - 아 돈만 있으면 이것도 써보고 싶고 저것도 써보고 싶고, 몸에 좋은건 다 써보고 싶다 타입
              - gamedev 나 flipcode 같은 곳에 소개된 외국산 신종 라이브러리를 검토하고 도입, 적용하는 일
              - 그 밖에 논문이나 아티클로만 소개되었던 부분들을 직접 구현해서 적용하는 것도 포함
              - 이 사람이 가장 좋아하는 책 : GPG 시리이즈...

              5. 어플리케이션 프로그래머
              - 나는 유저들이 직접 만지는 부분을 만드는 것이 좋다 타입
              - 지식보다는 경험을 이용해서 성과를 내는 타입
              - 이 사람이 좋아하는 책 : 책보다 해킹을 좋아함

              6. 테스트 케이스 프로그래머
              - 유닛 테스트 or 예제 프로그램을 만드는 담당자.
              - 뉴비 개발자가 우선 현재 시스템을 이해하기 위해 필수로 거쳐야 할 코스
              - 이 사람이 가장 봐야 하는 책 : Test Driven Development, Extreme Programming Installed

              7. 툴 프로그래머
              - 나는 툴을 만들어서 사람들의 노가다를 덜어주는 것에서 보람을 느낀다 타입
              - 언젠가 나만의 3ds max 같은 툴과 sdk 같은 것을 만들어보고 싶다
              - 그의 고객은 외부 유저가 아니라 내부 개발자
              - 이 사람이 가장 좋아하는 문서 : 3DSMAX SDK 레퍼런스 매뉴얼

              사람마다 7 가지중 딱 한가지에만 맞춰지는 것은 아니고 2가지 이상의 특징을 가질 수도 있음

              당신의 타입은?

              ----

              출처 : 김학규님 홈페이지.

              댓글을 달아 주세요

              1. 정희록 2006.10.11 00:30  Addr  Edit/Del  Reply

                난 천재 프로그래머에다가 시스템엔지니어

              2. 박석우 2007.03.05 05:28  Addr  Edit/Del  Reply

                나는 신기술 연구원 ㅠㅠ
                이거 시른데.;;;

              posted by 희정냥★ 2006. 10. 2. 23:29
              으하하하 ㅋㅋㅋㅋ
              상금은 다 빼고 빈봉투만 기념으로 ㅋㅋ

              'Computer > Programming' 카테고리의 다른 글

              컴퓨터로도 풀 수 없는 암호 만들기  (2) 2007.03.25
              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16
              디자인 패턴에 관한 세미나 갔을때;  (1) 2006.07.16
              파이썬(Python)  (2) 2006.02.06

              댓글을 달아 주세요

              1. 정희록 2006.10.11 00:31  Addr  Edit/Del  Reply

                누나 이제 형민선배 피해다니셈;;

                내가 형민선배한테 다 꼬질럿삼..ㅡㅡ;ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

              2. 누나 팬클럽 2006.11.06 18:21  Addr  Edit/Del  Reply

                뭐지???

              posted by 희정냥★ 2006. 7. 16. 15:51
              가는 소스가 고와야 오는 파일에 바이러스 없다.
              잦은 Warning 에 Error 날줄 모른다.
              영업은 상사 편이다.
              디자이너는 프로그래머 편이다.
              프린터 밑에 누워 소스 떨어지기만을 기다린다.
              printf 도 디버깅에 쓸려면 에러난다.
              에러 무서워서 코딩 못 할까
              소스가 한 박스라도 코딩을 해야 프로그램이다.

              'Computer > Programming' 카테고리의 다른 글

              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16
              디자인 패턴에 관한 세미나 갔을때;  (1) 2006.07.16
              파이썬(Python)  (2) 2006.02.06
              진짜와 가짜 프로그래머  (1) 2006.01.22

              댓글을 달아 주세요

              1. 애녹이 2006.07.19 08:18  Addr  Edit/Del  Reply

                글이 제미있어서..좀 퍼갈께요..^^
                열심히 사시는거 같네요..ㅋㅋ
                자기가 하고 싶은일에 푹빠져서 지내시는 모습이 부럽습니다..그럼 항상 건승하시길..^^

                지나가는 프라모델(?)이....ㅠ.ㅠ

                아..난 언제쯤 프로그래머가 될란가..ㅠ.ㅠ

              posted by 희정냥★ 2006. 7. 16. 00:29
              저번에 부산개발자그룹에서 했었던 세미나였는데,;;

              여러 내용이...^^;; 있었다..^^;
              프로그램 개발하면서 중요한 것들~ 많이 알려줬다;;


              이 ppt는 매우 맘에 들었다;.. ㅋㅋ (예뻐서.. ㅡ,ㅡ;;)



              무엇보다도~~!!!
              이 세미나 끝나고 마지막에 경품추첨을 했는데
              내가 당첨됐다는 것이다!!!! 우하하하하하하하하하하하하하하하!!!
              완전 기쁘삼 ^-----------------------------------------------^

              세미나는 죄다 쪼차다녀찌만 경품 당첨되기는 처음이다^^

              그것도 맨~~~~~ 마지막 사람까지 다 부르고 끝날려는데
              그 마지막사람이 먼저 가버리는바람에 하나 더 뽑은게 바로 나였다 ㅋㅋㅋ

              이 키보드 받았다 ㅋㅋ



              거기서 주는 경품중에선 최고로 좋은거였다 ㅋ

              'Computer > Programming' 카테고리의 다른 글

              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16
              디자인 패턴에 관한 세미나 갔을때;  (1) 2006.07.16
              파이썬(Python)  (2) 2006.02.06
              진짜와 가짜 프로그래머  (1) 2006.01.22

              댓글을 달아 주세요

              1. BlogIcon 어흥 2006.07.30 02:39  Addr  Edit/Del  Reply

                .. 제일 비싼키보드네요 -.-;;
                대단히 부럽 ㅡㅡ

              posted by 희정냥★ 2006. 2. 6. 05:17
              퍼온검니다;;

              ------------------------

              파이썬(Python)을 배우다...

              지금까지 파이썬을 배워야지 배워야지 생각하다가, 게으름만 부리고 있었는데, 얼마 전 결심을 하고 파이썬 튜토리얼을 인쇄해서 읽어보았습니다...

              역시, 파이썬은 소문대로 깔끔하고 아름다운 언어라는 생각이 듭니다...
              지금까지 C 나 PHP, Java 같은 언어의 코드를 보면서, { 나 } 를 쓰는 코드가 간결하고 보기에 좋다는 생각을 해 왔습니다. 그런데 Python 은 블록 지정을 탭으로 하더군요. 예컨대 이런 식입니다:


              C:

              int i = 1;
              while (i <= 100)
              {
              if (i % 2 == 0) printf("%d ", i);
              i++;
              }
              printf("\n");

              Python:

              i = 1
              while i <= 100:
              if i % 2 == 0: print i,
              i = i + 1
              print


              또, 내장되어 있는 추상형 데이터 타입들도 큰 장점입니다... 물론 추상형 데이터 타입들을 사용하면 속도는 느리겠지만, 코더가 자기가 원하는 프로그램을 더 쉽게 만들 수 있다는 장점이 있겠지요...

              또, Python 이 마음에 든 것은, 간결한 언어임에도 엄격함을 갖추었다는 점입니다. Python 과 비슷한 스크립트 언어이지만, 웹에서 주로 사용되는 PHP 는 언어 자체가 크게 엄격하지 않아서 약간 불만이였거든요...

              'Computer > Programming' 카테고리의 다른 글

              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16
              디자인 패턴에 관한 세미나 갔을때;  (1) 2006.07.16
              파이썬(Python)  (2) 2006.02.06
              진짜와 가짜 프로그래머  (1) 2006.01.22

              댓글을 달아 주세요

              1. hotfeeling 2006.03.04 01:54  Addr  Edit/Del  Reply

                Python.. 편하고 좋은데.. 먹고 살려면 ㅠ.ㅠ

              2. 규성 2009.02.15 00:59  Addr  Edit/Del  Reply

                파이썬의 강점은 엄격함보다는 엄청난 자유로움에 있는것인데^^

                이강성교수의 강의를 추천합니다!!!

              posted by 희정냥★ 2006. 1. 22. 16:28
              가짜 : 책상에 온통 책으로 덮여있다. 자세히 보면 웹부터 시스템 프로그래밍까지 동내서 점같다. 그런 자기 책상을 보며 자랑스러워 한다.
              진짜 : 책상에 담배재와 잡동사니만 굴러다닌다.

              가짜 : 모르는 것이 있을 때는 여기저기 관련 사이트에 Q&A에 질문을 올리고 답변을 기다린다.
              진짜 : 모르는 것이 있을 때는 Q&A를 뒤져보고 없으면 깡으로 만든다.

              가짜 : 짜본 것보다 아는 게 더 많타
              진짜 : 아는 것보다 짜본 게 더 많타

              가짜 : 직업을 물어보면 프로그래머라고 당당하게 말한다.
              진짜 : 직업을 물어보면 우물쭈물 하다가 상대에 따라 '컴퓨터 하는 사람', '소프트웨어쪽 하는사람', 자꾸 자세히 물어보면 '프로그램 짜는 사람' 등 프로그래머라는 말을 피한다.

              가짜 : 부탁하면 뭐든지 한다. 물론 끝까지 한다는 보장은 없다.
              진짜 : 부탁하면 곤란한 표정을 짓는다. 어쩔 수 없이 하게 되면 수단과 방법을 안 가리고 끝을 본다.

              가짜 : 컴퓨터 관련은 뭐든지 물어보면 모르는 게 없다. 아주 성의있게 요목조목 설명해준다.
              진짜 : 물어보면 아는 게 없다. 중요한 질문이나 확실히 아는 것만 간단하게 말한다.

              가짜 : 다른 사람이 잘 공부하지 않는 분야를 익히면 자신이 그분야 전문가가 된줄 안다. 그러나 기술을 제대로 써 보지는 못 한다.
              진짜 : 다른 사람이 잘 공부하지 않는 분야는 쓸모가 없기 때문이기에 배우지 않는다. 반드시 필요하면 대강 배워서 쓰고 잊어버린다.

              가짜 : 시간만 나면 관련 게시판 TIP이나 강좌를 읽으면서 외공을 연마하여 자랑하고 다닌다.
              진짜 : 시간 나면 가끔식 자료구조,알고리즘,인공지능학, 영상처리학등 개론서를 훝어보면서 내공을 연마한다. 누가 물어보면 논다고 한다.

              가짜 : 클래스만 쓰면 OOP프로그램인줄 안다.
              진짜 : 마음만 먹으면 프로그램을 비지오로도 짤수도 있다.

              가짜 : 100만큼 배워서 10만큼 쓴다.(C/C++/API/MFC/VB바이블을 쓸수 있을정도로 알고 있어도 프로그램은 1000 줄이상 못짠다.)
              진짜 : 10만큼 배워서 1000만큼 쓴다.( if문만 배워도 만든다.)

              가짜 : 자신이 프로그래밍에 소질이 있다고 생각한다.
              진짜 : 자신은 프로그래밍에 소질이 없다고 생각한다. (입버릇처럼 때려치울꺼라고 하면서 부지런히 짠다.)

              가짜 : 코딩할때 타자속도가 600타 이상 나오며 부지런히 친다.
              진짜 : 한참 담배피다 300타 이하 속도로 몇자치고 또 담배핀다.

              가짜 : 마지막 10%가 고비다.
              진짜 : 처음 10%가 고비다.

              가짜 : 빌게이츠,리누스,잡스등 IT유명인들에 관심이 많고 때론 동경한다.
              진짜 : 아무 관심없다.

              가짜 : 언제나 최신 컴퓨터에 최고급 사양으로 유지하고 잡다한 부품이나 오버클럭등에 관심이 많타
              진짜 : 컴파일러가 뜨는데 지장 없으면 컴퓨터에는 관심 없다. 스피커에만 관심을 가진다.

              가짜 : 최적에 작업 환경을 요구한다. (조용하고, 남의 시선이 안닫고 구석진곳등등..)
              진짜 : 컴퓨터만 있으면 작업한다.

              가짜 : 알고 있는 모든 프로그램이 다 깔려있다. 깔면 다 사용할수 있다고 생각한다. 물론 나가서도 그렇게 말하고 다닌다. 윈도우 태마나 바탕화면등에 신경을 많이쓴다.
              진짜 : 아무 관심없다.

              가짜 : 심심하면 인터넷에서 특이한 테크닉 소스나 완성된 프로그램 소스를 구해서 구경하고 누가 물어보면 자신이 짰다고 말한다.
              진짜 : 필요하지 않타면 남의 소스에 관심 없다.

              가짜 : 가능한한 남이 못알아 보게 짠다. 물론 주석도 안단다.
              진짜 : 가능한한 남이 알아보기 쉽게 짠다. 주석은 가끔식 단다

              가짜 : Q&A게시판에서 조금이라도 들어본 질문이 올라오면 다 아는듯 답변을 단다.
              진짜 : 게시판을 잘 이용하지 않는다.

              가짜 : 온갓 유명 컴퓨터 서적과 잡지를 부지런히 사다 모은다.
              진짜 : 가끔식 잡지나 한번씩 사고, 절판되었거나 절판직전 책을 어렵게 구해다 본다.

              가짜 : 책의 목차와 앞에 몇패이지만 본다. 그러면 그 책을 다봤다고 생각한다..
              진짜 : 목차도 보지않는다. 가끔식 뒤에 색인만 살핀다.

              가짜 : 가짜들 끼리 모이면 잘 될줄 안다.
              진짜 : 진짜들 끼리 모이면 잘 안된다.(가짜가 좀 끼어있어야 한다.)

              가짜 : 가짜가 하는모습을 동경하고 따라할려고 한다.
              진짜 : 가짜처럼 살려고 노력한다.

              진짜와 가짜가 만나서 프로그래밍 이야기를 하면....
              가짜 : 입으로 프로그램을 짠다. (현란한 첨단기술은 다써서)
              진짜 : 머리로 다짜고 컴파일 시켜서 컴파일된 결과만 말한다. ( if/for만 써서)

              가짜 : VC를 조금이라도 하면 VB하는 사람은 다 자기보다 프로그램 못짜는 줄 안다.
              진짜 : 프로젝트에 최적의 언어를 선택한후 개발한다.(주특기는 있지만 특정 언어만 쓰지 않는다.)

              가짜 : 왠만하면 VC로 짠다. VB로 프로그램 짜고 있는 사람을 보면 VC몰라서 VB로 짜는줄 안다.
              진짜 : 왠만하면 VC 안쓰려고 노력한다.

              가짜 : DirectX를 다 익히면 게임 만들수 있을줄 안다.
              진짜 : DirectX를 다 모른다. 그러나 필요하면 게임은 만든다.

              'Computer > Programming' 카테고리의 다른 글

              프로그래머 타입별 분류  (3) 2006.10.03
              학술제 때 플밍대회 1등한 희정냥★  (2) 2006.10.02
              속담  (1) 2006.07.16
              디자인 패턴에 관한 세미나 갔을때;  (1) 2006.07.16
              파이썬(Python)  (2) 2006.02.06
              진짜와 가짜 프로그래머  (1) 2006.01.22

              댓글을 달아 주세요

              1. 난다가짜야 2006.02.26 22:48  Addr  Edit/Del  Reply

                -_-; 배울게많군