[완료]JAVA SWING 으로 ...랜덤 숫자 화면에 보여주기

uamyd5279의 이미지

죄송합니다;;;
다음의 기능을 구현하고 싶습니다.

1. 숫자를 입력받는다
=> 웹에 많이 널려 있는 계산기 소스 가져다가 display panel 에 뿌려 주는 방법을 알아냈습니다.
JTextField display; 를 선언하고, display.setText(값)

2. 'start' 버튼을 누르면 display panel 에서 입력받은 숫자내의 랜덤 숫자가 디스플레이 된다.
=> 처음엔 빠르게 시간이 지날 수록 조금씩 천천히
=> 상세 설명
이 부분이 어찌 해야할 지 모르겠는데요....
이벤트가 발생하면, 이벤트를 발생 시킨 버튼을 확인해서 ( 이것 ActionListener의 actionPerformed 을 구현하였습니다 )
해당 버튼에 해당하는 연산을 수행하고
display panel 에 세팅.

3. 최종적으로 입력받은 숫자 내의 값이 display panel 에 보여진다.

간단하게 만들어 볼려고 했는데... 예상외로 더 이상의 진도를 못나가고 있네요;

actionPerformed에서 display.setText(값)을 바꿔준다면 .....

예)
public void actionPerformed(ActionEvent c){
...
display.setText("0");
display.setText("2");
display.setText("3");
...
...
}

display panel 에서 차례 대로 0,2,3 이 보여질 거라고 생각했었는데,
안되더군요. ㅡㅡ;
마지막 3만 보여지더라구요.

swing 이 처음이라;;;

뭐라도 샘플이나 아무거라도.... 지푸라기라도 잡고 싶은 심정으로 글을 올립니다;

PS. 두서가 없지만... 필요하신 정보를 더 원하시면 다시 말씀 드리겠습니다

bookgekgom의 이미지

님 설명 이해 못함 특히 2 번

그리고 스톱 워치는 자바 타이머를 조금 읽어보면 알수잇습니다

구글 java timer api ㄱㄱ

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

uamyd5279의 이미지

다시 본문을 업데이트 하였습니다;;
자바 타이머하고는 상관이 없는데;;;;
자바에 타이머가 있었군요 ; 용어에 대한 정의를 명확히 해야하는데 이런;;

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

bookgekgom의 이미지

님도 님이 무슨 말을 하는지 햇갈리시는듯...

플라톤이 말했듯 "답을 쉽게 구하는 방법은 문제를 더욱 정확히 물어보는 것이다"

님도 자신이 무엇을 구하려 하는지 알아야 한다고 생각합니다.

자신이 이해를 못하는데 어떻게 설명을 하나요?

프로그램이란 결국 어떠한 값을 구해서 출력하는것....

1. 출력

일단 자바 스윙에서 숫자를 출력하는것은 여러 방법이 있습니다.

일단 텍스트 필드, 레이블, 버튼 같이 작은 컴포넨트들위에 텍스트나 이미지 아이콘으로 출력하는방법.

혹은 텍스트 아레아나 텍스트 펜에 이미지 아이콘을 추가 하는 방법.

그리고 마지막으로 모든 컴포넨트들은 paintComponent 매소드를 포함하므로

paintComponent 매소드를 오버라이딩하는 방법이 있겠네요.

@Override
public void paintComponent(Graphics g){} 참고

출력의 경우 직접 컴포넨트의 이미지를 바꿔주시면 validate() 메소드를 살펴주시기 바랍니다.

paintComponent() 오버라이딩의 경우 repaint() 를 읽어주세요.

스윙은 자바 6 부터 더블 버퍼링을 지원합니다.

2. 값 구하기

랜덤한 숫자는 Random 클래스를 읽어 주시기를 바랍니다.

"처음엔 천천히, 나중엔 빠르게" <- 이해가 안감

어떠한 속도를 조절하고 싶으시다면 타이머가 필요하실겁니다.

혹은 자신이 직접 쓰레드를 작성해야 겠죠....

다시 한번 말하지만...

Clarify Yourself...

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

whitelazy의 이미지

public void actionPerformed(ActionEvent c){
...
display.setText("0");
display.setText("2");
display.setText("3");
...
...
}

이 경우 정상적으로 0, 2, 3이 순서대로 뿌려졌을껍니다..
단지 사람이 못알아봐서 그렇지
delay나 sleep이나 timer를 사용해서 사람이 볼수 있는 시간 간격을 주어야합니다...
요즘 컴퓨터랑 모니터면 진짜 0.0x초정도 마다 한글자씩 뿌려버릴텐데 알아보기 힘들겠죠 :-)
uamyd5279의 이미지

실은...구글링해서 가져온 거라서 창피해서 안 올릴라고 그랬지만...올려 보겠습니다.
혹시라도, 이거 짜신 분 보시더라도, 이해해 주세요. 그냥 개인적으로 부탁 받아서 짜보는 거거든요. 양해를 바라겠습니다.

출력되는 로깅의 value 값처럼 실제로 display가 되었으면 합니다...
시간 간격 주었습니다. 로그 찍었구요. 방금 전에도 whitelazy 님 말씀대로 제가 혹시나 잘못 본건 아닌가 하고,
다시 한번 봤습니다.

하지만 display가 되지 않습니다 ㅡㅜ
eclipse 는 ganymede 고, java는 jdk 1.6.07 입니다.

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
 
import javax.swing.*;
public class JRandomCreator extends JFrame {
 private boolean isStart = true;
 JTextField display;
 JPanel keyPanel;
 
 public JRandomCreator() {
  super("Java Random Creator");
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  display = new JTextField("0", 12);
  display.setHorizontalAlignment(JTextField.RIGHT);
 
  keyPanel = new JPanel();
  JButton button;
  String buttons = "789456123C0=";
  keyPanel.setLayout(new GridLayout(5, 3));
  for (int i = 0; i < buttons.length(); i++) {
   String key = buttons.substring(i, i+1);
   if (key.equals("C") || key.equals("=")) {
    button = new JButton(key);
    button.addActionListener(new OpListener());
    keyPanel.add(button);
   } else {
    button = new JButton(key);
    button.addActionListener(new NumListener());
    keyPanel.add(button);
   }
  }
  Container pane = getContentPane();
  pane.setLayout(new BorderLayout());
  pane.add("North", display);
  pane.add("South", keyPanel);
 
 } 
 
 class NumListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   String digit = e.getActionCommand(); 
   if (isStart) {
	   //System.out.println("First input "+digit);
    display.setText(digit);
    isStart = false;
   } else {
	   //System.out.println("next input "+digit);
    display.setText(display.getText() + digit);
   }
  }
 }
 
 class OpListener implements ActionListener {
 
  public void actionPerformed(ActionEvent e) {
   String op = e.getActionCommand();
   if (op.equals("C")) {
	   //System.out.println("input C ==> clear!!");
    display.setText("0");
    isStart = true;
   } else if (op.equals("=")) {
	   int value = Integer.parseInt(display.getText());
	   System.out.println("input value="+value);
 
	   int LIMIT = 1000;
	   int total = 0;
	   Integer t = 0;
	   System.out.println("start random caculator, LIMIT="+LIMIT);
 
	   Random oRandom = new Random();
	   for(;total < LIMIT;){
		   t = oRandom.nextInt(value)+1;
		   display.setText(t.toString());
		   System.out.println("Display value = "+display.getText()+", total="+total+", t="+t);
		   try{
			   Thread.sleep(total);
		   }catch(InterruptedException ee){
			   System.out.println("exception....");
		   }
		   total += t;
	   }
	   isStart = true;
	   System.out.println("Random Finished.");
 
   } //if-else
  }	//EndOfActionPerformed
 }
 
 public static void main(String args[]) {
  JFrame.setDefaultLookAndFeelDecorated(true);
  JRandomCreator rc = new JRandomCreator();
  rc.pack();
  rc.setVisible(true);
 }
}

실행해 보시면, 간단하게 로그 찍히는데, ...display.getText() 를 찍은 겁니다. 하지만...
실제 어플리케이션의 display 에는 보여지지가 않습니다;

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

HotPotato의 이미지

(그냥 졸업작품이라고 하시죠. 졸업작품의 계절인데 ;-D)
그렇다고 글을 지우지는 마세요. 언젠가 누군가에게 또 도움이 될 수 있습니다.)

아래 소스를 보기 전에 이것만은 알아두세요.

일반 반복문은 시간계산 기능을 지원하는 타이머, 스레드와 달라서 순식간에 처리됩니다.
스레드는 소멸되기 전까지 주기적으로 실행되므로 sleep(1/1000초) 밑에 반복문(loop) 대신 if/else로 단순처리문을 넣으면 됩니다.

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
 
public class JRandomCreator extends JFrame implements Runnable
{
	boolean isStart = true;
	JTextField display;
	JLabel msg;
	JPanel keyPanel;
	static Thread randThread;
	static boolean calcFlag = false;
	static int LIMIT = 100;
	static int total = 0;
	static Random oRandom = new Random();
	static int value = 1;
 
	private void startRefresh()
	{
		System.out.println("startRefresh!!");
		if (randThread == null) {
			randThread = new Thread(this);
			randThread.start();
		} else {
			try {
				randThread.checkAccess();
				randThread.interrupt();
			} catch (SecurityException e) {
			}
		}
	}
 
	public final void run()
	{
		System.out.println("run!!");
		Thread currentThread = Thread.currentThread();
 
		while (currentThread == randThread) {
			System.out.println("calcFlag : "+calcFlag);
			System.out.println("total : "+total+", LIMIT : "+LIMIT);
 
			try {
//				Thread.sleep(1000);
				Thread.sleep(total);//적어도 total 이 1000(=1초) 을 넘어야 눈으로 확인하기 쉽습니다
			} catch (InterruptedException e) {
			} catch (Exception e) {
			}
			if (total < LIMIT) {
				System.out.println("total < LIMIT");
				Integer t = oRandom.nextInt(value)+1;
 
				System.out.println("t : "+t);
				display.setText(t.toString());
				total += t;
			} else	{
				calcFlag = false;
				msg.setText("Random Finished!!");
				System.out.println("Random Finished.");
				break;
			}
		}
		total = 0;
		randThread = null;
	}
 
	public JRandomCreator()
	{
		super("Java Random Creator");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		display = new JTextField("0", 12);
		display.setHorizontalAlignment(JTextField.RIGHT);
 
		keyPanel = new JPanel();
		JButton button;
		String buttons = "789456123C0=";
		keyPanel.setLayout(new GridLayout(5, 3));
 
		OpListener opListener = new OpListener();
		NumListener numListener = new NumListener();
 
		String key;
		for (int i = 0; i < buttons.length(); i++) {
			key = buttons.substring(i, i+1);
			if (key.equals("C") || key.equals("=")) {
				button = new JButton(key);
				button.addActionListener(opListener);
				keyPanel.add(button);
			} else {
				button = new JButton(key);
				button.addActionListener(numListener);
				keyPanel.add(button);
			}
		}
		Container pane = getContentPane();
		pane.setLayout(new BorderLayout());
		pane.add("North", display);
		pane.add("Center", keyPanel);
		pane.add("South", msg = new JLabel());
	} 
 
	class NumListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e) {
			String digit = e.getActionCommand(); 
			if (isStart) {
//				System.out.println("First input "+digit);
				display.setText(digit);
				isStart = false;
			} else {
//				System.out.println("next input "+digit);
				display.setText(display.getText() + digit);
			}
		}
	}
 
	class OpListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e) {
			String op = e.getActionCommand();
			if (op.equals("C")) {
				//System.out.println("input C ==> clear!!");
				display.setText("0");
				isStart = true;
			} else if (op.equals("=")) {
				value = Integer.parseInt(display.getText());
				System.out.println("input value="+value);
				calcFlag = true;
				isStart = true;
				msg.setText("Random Started!!");
				startRefresh();
			} //if-else
		}	//EndOfActionPerformed
	}
 
	public static void main(String args[])
	{
		JFrame.setDefaultLookAndFeelDecorated(true);
		JRandomCreator rc = new JRandomCreator();
		rc.pack();
		rc.setVisible(true);
	}
}

--
참한 여인네 구합니다!

--
즐 Tux~

uamyd5279의 이미지

아 진짜!!!
KLDP 사용하시는 분들
매너가 최고로 좋은 듯.( 일단 자주 다니는 사이트가 없어서리 ^^;;; )

일단 결론 부터 말씀드리자만, swing 을 포기하고 javascript 를 사용해서 web 으로 구현중입니다. ㅎㅎㅎ
완료 되면 소스 올려 드릴께요 (음...이미지는 어떻게 올리지;;;; )

죄송합니다만;;; 졸작은 아니구요. ㅋㅋ

그 뭔가 랜덤한 숫자를 쪼끔 뽀대나게 추출해 볼라구
생각한 프로그램이거든요 ㅎㅎ

....저도...개발자입니다;; 회사사람들에게 욕먹을 거 같지만,
제 주위 분들중 swing을 다루시는 분들은 안계셔서 ㅋ

어쨌든 잘 동작하는 것 확인 했습니다. 감사합니다.
년말인데, 이렇게 시간 내어 주셔서 감사드립니다 ^^;

HotPotato 님,
bookgekgom 님,
whitelazy 님.
또한 이 쓰레드를 참조해 주셨던 많은 개발자 분들 진심으로 고개 숙여 감사드립니다.
저도 도움을 주고 싶지만, 아직도 미숙해서 차마 뭔가를 적기가 힘드네요.
언젠가 저도 이곳에 님들처럼 도움을 줄 수 있기를 기대합니다.

년말에 마무리 잘하시고,
미리크리스마스 하시고,
풍성하고 많은 기대감을 갖게 만드는 새해를 시작하십시요~!

개발자분들. 파이팅입니다 ^____^

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

uamyd5279의 이미지

code전문을 올리겠습니다...
전체 파일 첨부합니다.
이미지는 저희 회사 디자이너의 도움을 받아서 아주 씸플하게 작성했습니다 :)
제가 원했던 swing으로 구현하고자 한 내용은 바로 이것입니다.
다시 한번 답변과 조언을 해주신 여러 개발자분들에게 감사의 말씀 드리겠습니다.
추운 겨울 년말 잘 보내시고, 감기 조심하시고,
새해에도 파이팅 해주세요~!!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<!-- head include -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<title>Lanian's Counter :)</title>
<link href="pop_go.css" rel="stylesheet" type="text/css" media="all" />
<script type="text/javascript" language="javascript">
	var MAX_COUNT = 999;
	var MAX_LEN = 3;
	var MAX_TIME = 200;
	var INPUT_VALUE = 0;
	var TIMER;
	var INTERVAL = 0;
	var _TIME_ = 50;
	var _RUN_FLAG_ = true;
	var RESULT_LIST = new Array();
	var RESULT_VALUE = -1;
 
	function makeHtml(no){
		var tag = '<li><img src="num_'+no+'.gif" alt="'+no+'"/></li>';
		return tag;
	}
 
	function getInterval(val){
		return val%_TIME_;		
	}
 
	function displayResult(value){
		var resultTag = '';
		var len = value.length;
		for( var i=0; i< len; i++ ){
			resultTag += makeHtml(value.charAt(i));
		}
		var result = document.getElementById("result");
		result.innerHTML = '';
		result.innerHTML = resultTag;
		RESULT_VALUE = value;
	}
 
	function interval_test(){
		document.getElementById("interval_value").value = INTERVAL;
		var obj = document.getElementById("test_interval");
		obj.style.display = 'block';
	}
 
	function result_test(){
		var curr = document.getElementById("result_value");
		curr.value = '';
		for(var i=1;i<RESULT_LIST.length+1; i++){
			if(RESULT_LIST[i]){
				curr.value += i+' ';
			}
		}
		document.getElementById("test_result").style.display = 'block';
	}
 
	function startCaculator(){
		var value = Math.floor(Math.random() * INPUT_VALUE )+1;
 
		if( !RESULT_LIST[value] ){
 
			displayResult(''+value);
		}
		INTERVAL = getInterval(value);
		//interval_test();
 
		TIMER = setTimeout("startCaculator()",INTERVAL);
	}
 
	function finishCalculator(){
 
		clearTimeout(TIMER);
 
		//initialize2
		INTERVAL = 0;
		RESULT_LIST[RESULT_VALUE] = true;
		//result_test();
	}
 
	function getResult(){
		var obj = document.getElementById("input_value");
		var input_value = obj.value;
 
		//initialize
		INTERVAL = 0;
		if( input_value.length > MAX_LEN ){
			var answer = confirm("Ooooooops 입력된 숫자의 자리수가 "+MAX_LEN+"자리를 넘었습니다!! \n계속 하시겠습니까?");
			if( !answer ){
				alert("^____^ 그럼 다시 입력해 주세요~ :)");
				obj.value = '';
				obj.focus();
				return;
			}
			alert("저런!!!	최대값이 "+MAX_COUNT+" 니까...그렇게 할께요 ^^;;;");
			obj.value = MAX_COUNT;
			input_value = MAX_COUNT;
			alert("바꾼거 확인하시고...START!");
		}
 
		//global variable set
		INPUT_VALUE = input_value;		
		startCaculator();		
	}
 
	function keyCheck(e){
		var keyNum;
		if( window.event ){ //IE
			keyNum = e.keyCode;
		}
		else if( e.which ){ // Netscape/Firefox/Opera
			keyNum = e.which;
		}
		return keyNum;
	}
 
	function chgImg(){
		var oldImg = document.getElementById("btn");
		var parentNode = oldImg.parentNode;
		var goHtml = '<img id="btn" src="btn_go.gif" alt="Go!" onclick="startOrEnd(); return false;"/>';
		var stopHtml = '<img id="btn" src="btn_end.gif" alt="End!" onclick="startOrEnd(); return false;"/>';
 
		if( !_RUN_FLAG_ ) parentNode.innerHTML = stopHtml;
		else parentNode.innerHTML = goHtml;		
	}
 
	function startOrEnd(){
		if( _RUN_FLAG_ ){
			_RUN_FLAG_ = false;
			chgImg();
			getResult();
		}else{
			_RUN_FLAG_ = true;
			chgImg();
			finishCalculator();
		}
	}
 
	function onenter(e) {
		var keyNum = keyCheck(e);
		if( keyNum == 13 ){
			startOrEnd();
		}
	}
 
	function onlyNumeric(e){
		var keynum = keyCheck(e);
		var keychar;
		var numcheck;
		if(keynum == 8 || keynum == 32) return true; //backspace and space
		keychar = String.fromCharCode(keynum);
		numcheck = /\d/;
		return numcheck.test(keychar);
	}
 
	function init(){
		alert("Welcome! Lanian's Counter ~");
		alert("숫자를 입력해 주세요~!");
		document.getElementById("input_value").focus();
	}
</script>
</head>
 
<body onload="init();">
 
<div id="pop_layer">
	<div id="template" style="display:none">
		<li><img src="" alt="8" /></li>
	</div>
	<!-- ########## contents_pop Area Start ########## -->
	<div id="contents_layer" class="go_con">
		<div class="go_input">
		<!--
			<input id="input_value" value=""  class="txt_num" maxlength="15"  onkeydown="onenter(event);" onkeypress="return OnlyNumeric(event);"/> 
		-->
			<input id="input_value" value=""  class="txt_num" maxlength="15"  onkeydown="onenter(event);" onkeypress="return onlyNumeric(event);"/> 
			<span id="test_interval" style="display:none">
				INTERVAL : <input id="interval_value" value=""  class="txt_num" maxlength="15"/> 
			</span>
			<span id="test_result" style="display:none">
				RESULT_VALUE : <input id="result_value" value=""  class="txt_num"/> 
			</span>
			<!--
			<span class="btn_go">
				<a href=""><img src="btn_go.gif" alt="Go!" onclick="getResult(); return false;"/></a>
			</span>
			-->
			<span class="btn_go">
				<a href=""><img id="btn" src="btn_go.gif" alt="Go!" onclick="startOrEnd(); return false;"/></a>
			</span>
		</div>
		<div class="go_box">
			<ul id="result">
				<!-- 
				****** 
				sample  
				******
				<li><img src="num_8.gif" alt="8" /></li>
				<li><img src="num_8.gif" alt="8" /></li>
				<li><img src="num_8.gif" alt="8" /></li>
				-->								
			</ul>
		</div>
	</div>
 
</div>
</body>
 
</html>

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16
댓글 첨부 파일: 
첨부파일 크기
Package icon go_20081222_v3.zip106.88 KB

"For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life"-John 3:16

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.