KLDP CodeFest 테마 코딩: 별 헤는 밤

권순선의 이미지

KLDP CodeFest 테마 코딩 #3에 대한 답은 이 글에 대한 답글로 올려 주세요. 자세한 내용은 http://wiki.kldp.org/wiki.php/KLDPCodeFest/ThemeCoding 를 참고하시면 됩니다.

문제는 다음과 같습니다.

다음은 윤동주의 시 "별 헤는 밤" 입니다. 컴퓨터 프로그래밍 언어로 "창의적으로" 번역하세요. 조건은 2번 문제와 같습니다.

  • 재미있어야 합니다.
  • 작성된 언어는 알려진 컴퓨터 프로그래밍 언어이어야 하며 특별한 제한은 없습니다.
  • 줄 수, 스타일은 제한이 없습니다.
  • 사용된 API는 표준 언어에 있지 않은 함수 또는 클래스이어도 상관이 없으며, 컴파일되지 않아도 괜찮습니다.
  • 객체지향 프로그래밍 언어가 아닌 경우 Girl 객체 대신 구조체 또는 이미지를 바이트 스트림으로 받았다고 가정해도 됩니다.
  • 정수형이 지원되지 않는 언어는 문자열을 출력하거나 다른 방법을 통해서 리턴해도 됩니다.

Quote:
별 헤는 밤 (윤동주)

계절이 지나가는 하늘에는
가을로 가득 차 있습니다.

나는 아무 걱정도 없이
가을 속의 별들을 다 헤일 듯 합니다.

가슴 속에 하나 둘 새겨지는 별을
이제 다 못 헤는 것은
쉬이 아침이 오는 까닭이오,
내일 아침이 남은 까닭이오,
아직 나의 청춘이 다하지 않은 까닭입니다.

별 하나에 추억과
별 하나에 사랑과
별 하나에 쓸쓸함과
별 하나에 동경과
별 하나에 시와
별 하나에 어머니, 어머니,

어머님, 나는 별 하나에 아름다운 말 한 마디씩 불러봅니다. 소학교 때 책상을 같이 했던 아이들의 이름과, 패(佩), 경(鏡), 옥(玉) 이런 이국소녀들의 이름과 비둘기, 강아지, 토끼, 노새, 노루, 프랑시스 쟘, 라이너 마리아 릴케, 이런 시인의 이름을 불러봅니다.

이네들은 너무나 멀리 있습니다.
별이 아슬히 멀듯이,

어머님,
그리고 당신은 멀리 북간도에 계십니다.

나는 무엇인지 그리워
이 많은 별빛이 내린 언덕 위에
내 이름자를 써 보고,
흙으로 덮어버리었습니다.

딴은 밤을 새워 우는 벌레는
부끄러운 이름을 슬퍼하는 까닭입니다.

그러나 겨울이 지나고 나의 별에도 봄이 오면
무덤 위에 파란 잔디가 피어나듯이
내 이름자 묻힌 언덕 위에도
자랑처럼 풀이 무성할 게외다.

[/]

댓글

luapz의 이미지

pkgsrc 헤는 밤

컴파일 하는 터미널에는
문자열로 가득 차 있습니다.

나는 아무 걱정도 없이
pkgsrc의 패키지를 다 헤일듯 합니다

/usr/pkg/bin에 설치되는 패키지을
이제 다 못해는 것은
라이브러리 의존성 에러가 나기 때문이요,
사랑스런 그놈대신 kde의 라이브러리를 찾는 까닥입니다

패키지 하나의 Makefile과
패키지 하나의 distinfo와
패키지 하나의 buildlink3.mk와
패키지 디렉의 work와
패키지 디렉의 patches와
패키지하나의 의존성, 의존성

터미널이여, 나는 X-window에 아름다운 패키지를 한 개씩 불러봅니다. 마이컴 때 스샷만 보던 블랙박스와 가볍기만 하다는 xfce4와 xchat, gaim, xmms, vim 이런 패키지들의 이름과 ls, man, mkdir, cat, pwd, rm, chsh, 이런 명령어의 이름을 불러봅니다

이네들은 너무나 가까이 있습니다
키보드가 손바닥 아래 있듯이

패키지,
그리고 당신은 머얼리 의존성 너머에 게십니다

나는 무엇인지 두려워
이 많은 명령어가 써진 터미널 위에
내 닉네임 5글다를 써보고
백스페이스로 지워버립니다

많은 밤을 세워 컴파일 하는 머신은
부끄러운 램의 크기를 슬퍼하는 까닭입니다

그러나 백수가 끝나고 나의 통장에도 총알이 차면
파이어폭스에서 mozilla.org가 로딩되듯이
내가 루트된 머신위에도
자랑처럼 패키지가 무성할 게외다

현실은 꿈, 간밤의 꿈이야말로 현실.
http://lv255.net/
http://willbefree.net/
http://netbsder.org/

최옥규의 이미지

점심먹고와서 봤는데...
한참을 즐겼습니다. ^^
저에게 즐거움을 주신데 감사하는 의미로 한표! ㅋㅋ

다즐링의 이미지

while True:
    if Star:
        break

len( fall ) == len ( sky.TimePass() )

while True:
    if worry in self.mind:
        self.mind.remove(worry)
    else:
        break
len([ 1 * star for stars in  self.mind])

try:
    len( [ sta for stars in self.mind] )
except:
    time.remove(morning)
    time.remove(tomorrow.morning)
    tome.remove(self.young)

for star in stars:
    if memory in star:
        pass
    if love in star:
        pass
    if lonely in star:
        pass
    if longing in star:
        pass
    if poem in star:
        pass
    if (  mother , mother ) in star:
        pass

for star in stars:
    self.call(blahs)

len(stars) == len(blahs)
raise SystemExit

------------------------------------------------------------------------------------------------
Life is in 다즐링

oedalpha의 이미지

// * 헤는 밤
#define MY_NAME 1
int main()
{
int ***************************var;

*var = "추억";
**var = "사랑";
***var = "쓸쓸함";
****var = "동경";
*****var = "시";
******var = "어머니";

***************************var = MY_NAME;

return 0;
}
$ gcc test.c
$ ./a.out
Bus Error

$ gdb a.out

rain의 이미지

버그 헤는 밤

커서가 지나가는 코드에는
버그로 가득 차 있습니다.

나는 아무 걱정도 없이
코드 속의 버그들을 다 헤일 듯 합니다.

한텀 속에 하나 둘 새겨지는 segment fault들을
이제 다 못 헤는 것은
쉬이 데드라인이 오는 까닭이오,
회의 아침이 남은 까닭이오,
아직 나의 삽질이 다하지 않은 까닭입니다.

버그 하나에 printf와
버그 하나에 break point와
버그 하나에 담배 한 개피와
버그 하나에 커피 한 한잔과
버그 하나에 null pointer와
버그 하나에 segment fault!, segment fault!,

segment fault!

저는 이제 그만....버그 잡으러 갑니다..ㅡㅡa

세상에서 가장 이해하기 힘든 것은 내 자신이 그것을 이해할 수 있다는 것이다.
- 알베르트 아인슈타인 -

mmx900의 이미지

시선이 지나가는 코드에는
암호로 가득 차 있습니다.

나는 아무 걱정도 없이
화면 속의 코드를 다 지나칠 듯 합니다.

가슴 속에 하나 둘 새겨지는 구문을
이제 다 못 해석하는 것은
쉬이 졸음이 오는 까닭이오,
내일 아침 남은 까닭이오,
아직 통장의 잔고가 다하지 않은 까닭입니다.

코드 하나에 추억과
코드 하나에 사랑과
코드 하나에 쓸쓸함과
코드 하나에 동경과
코드 하나에 시와
코드 하나에 어머니, 어머니,

어머님, 나는 별 하나에 아름다운 언어 한 가지씩 불러 봅니다. 소학교 때 일상을 같이 했던 언어들의 이름과 클린(clean), 리습(lisp), 구일(guile) 이런 이국 언어들의 이름과 토발즈, 스톨만, 고슬링, 스티븐, 타넨바움 이런 시인들의 이름을 불러 봅니다.

이네들은 너무나 멀리 있습니다.
구루가 아슬히 멀듯이,

어머님,
그리고 당신은 멀리 지방에 계십니다.

나는 무엇인지 그리워
이 많은 코드가 펼쳐진 화면 위에
내 이름자를 써 보고,
DD로 지워버리었습니다.

딴은 밤을 새워 우는 코더는
날려먹은 코드를 아까워하는 까닭입니다.

그러나 밤이 지나고 나의 방에도 빛이 들면
윈도우에 블루스크린이 피어나듯이
내 이름자 적힌 프로그램에도
자랑처럼 기능이 무성할 게외다.

Setzer Gabbiani

skymedusa의 이미지

소스 짜는 밤

헤더가 인클루드된 소스에는
에러로 가득 차 있습니다.

나는 아무 걱정도 없이
소스 위에 주석을 다 붙일 듯 합니다.

코드 속에 하나 둘 읽혀지는 함수를
이제 다 못 헤는 것은
쉬이 요통이 오는 까닭이오,
어제 라면이 남은 까닭이오,
아직 코드의 에러가 다하지 않은 까닭입니다.

별 하나에 선언과
별 하나에 널값과
별 하나에 할당과
별 하나에 사용과
별 하나에 에러와
별 하나에 디버그, 디버그,

어머님, 저는 에러 하나에 아름다운 욕 한 마디씩 갈겨봅니다.
회의때 기획안을 같이 냈던 동기들의 이름과,
갑, 을, 병 이런 고용주들의 이름과 대리, 팀장, 과장, 부장, 사장, 기획팀, 인사팀, 이런 원수의 이름을 불러봅니다.

이네들은 너무나 멀리 있습니다.
월급날이 아슬히 멀듯이,

회장님,
그리고 당신은 멀리 골프장에 계십니다.

나는 무엇인지 지겨워
이 많은 주석이 쓰인 코드 위에
욕 한마디를 써 보고,
Delete로 지워버리었습니다.

딴은 밤을 새워 일하는 개발자는
부끄러운 에러를 슬퍼하는 까닭입니다.

그러나 개발이 끝나고 나의 프로젝트에도 완성이 오면
마이너스 통장에 월급이 들어오듯이
내 이름자 묻힌 CREDIT 화면에도
자랑처럼 칭찬이 무성할 게외다.

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

ㅡ_ㅡ;;;;;;

angpoo의 이미지

skymedusa님 정말 탁월하십니다.
공감의 감동이 물결칩니다.

옥의 티랄까 제목이 좀 어색합니다. 코딩 하는 밤 정도면 무난하지 않을까 싶네요.

Darkcircle의 이미지

좌절하는 무능력한 프로그래머의 밤 -_-

하루가 지나가는 창밖에는
오직 빛과 어둠만이 존재할 뿐입니다.

나는 수많은 걱정을 해가면서
소스코드속의 버그들을 헤아리지 못하고 있습니다.

가슴속을 쥐어파는 버그들을
아직도 못 파고 있는것은
마감기한이 임박했기 때문이오
단 이틀밖에 안남았기 때문이오
아직도 내 햏력(?)이 부족하기 때문입니다.

버그 하나에 안좋은 추억과
버그 하나에 컵라면 한박스와
버그 하나에 담배 한박스와
버그 하나에 술 한박스와
버그 하나에 절망과
버그 하나에 좌절 . . 좌절 . .

좌절 !
나는 좌절 여러번과는 달리 반전되는 인생을 꿈꿔봅니다.
연봉 1억 이상에 초호화 해외여행에다 로또복권 당첨 그리고
버그 없애는 프로그램과 자판기 같은 프로그램 생성기 등등
귀신 씨나락 까먹는 소리같은 말도 안되는 상상을 하며
입으로 되뇌어봅니다. ㅡㅛ-) <ㅡ 입방정 봐라 . . . 쯧쯧...

좌절,
이건 너무나 가까이 있습니다.
직장 상사분들이 여럿 와서 나를 갈구고 난 직후의
똥씹은 듯한 기분을 느낄때처럼 . . . \(-_-)/

나는 성공이 그리워
좌절감이 쌓인 마음속에
소스코드를 몽땅 뒤집어 엎어버릴 생각을 하다
그만 포기를 해버렸습니다 . . . (짜증);;

딴은 밤을 새워 노래방과 나이트에서 놀고 있는 팀장님은
자리가 너무 좋은 까닭입니다. -ㅛ-; ( 쿠..쿨럭; )

그러나 개발자에서 벗어나 엔지니어가 된다면
군대에서 진급하고 수많은 후임병을 맞이하게 되듯이 . . .
떠오르는 수많은 개발자들로 말미암아
내 몸이 자유케 될 것이외다.

쓰고나니 좀 많이 어설프네요 -_-;

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

cppig1995의 이미지

권순선 wrote:

쉬이 아침이 오는 까닭이오,
내일 아침이 남은 까닭이오,
아직 나의 청춘이 다하지 않은 까닭입니다.

쉬이 아침이 오는 까닭이오,
내일 이 남은 까닭이오,
아직 나의 청춘이 다하지 않은 까닭입니다.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

extrealm의 이미지

cppig1995 wrote:
권순선 wrote:

쉬이 아침이 오는 까닭이오,
내일 아침이 남은 까닭이오,
아직 나의 청춘이 다하지 않은 까닭입니다.

쉬이 아침이 오는 까닭이오,
내일 이 남은 까닭이오,
아직 나의 청춘이 다하지 않은 까닭입니다.

while( today.morning == FALSE &&
       deadline.count_of_night() && 
       mydream.get_strength() > QUIT_THRESHOLD )
{
    coding();
}

/E/X/T//R/E/A/L/M/ - 그대 품 안의 또하나의 세상

mach의 이미지

* 시나리오

Quote:
오픈 소스 찾아 헤메는 밤

발전해 가는 IT기술들이 지나가는 인터넷에는
오픈소스로 가득 차 있습니다.

나는 아무 걱정도 없이
인터넷의 오픈 소스들을 다 헤일 듯 합니다.

가슴 속에 하나 둘 새겨지는 오픈 소스를
이제 다 못 헤는 것은
쉬이 프로젝트 마감이 오는 까닭이오,
내일 아침이 남은 까닭이오,
아직 나의 정년이 다하지 않은 까닭입니다.

오픈 소스 하나에 추억과
오픈 소스 하나에 사랑과
오픈 소스 하나에 쓸쓸함과
오픈 소스 하나에 동경과
오픈 소스 하나에 시와
오픈 소스 하나에 어머니, 어머니,

어머님, 나는 현재 버그에 대한 질문 하나에 아름다운 말 한 마디씩 불러봅니다.
대학교 때 책상을 같이 했던 아이들의 이름과, google, sourceforge, freshmeat, codeproject
이런 이국 참고자료들의 이름과 Dijkstra, Tenenbaum, Bach, Stevens, Commer, Torvalds 이런
시인의 책들을 불러봅니다.

이네들은 너무나 멀리 있는 이국인들입니다.
오픈 소스가 아슬히 보기 어렵듯이,

어머님,
그리고 제가 출시할 프로젝트 패키지의 종결은 현재 멀리 beta test중에 계십니다.

나는 버그 잡기가 어려워
이 많은 지식인들이 있는 bbs.kldp.org 에
내 이름자를 써 물어 보고,
가끔 손님으로 로그인해서 흔적을 덮어버리었습니다.

밤을 새워 우는 벌레(버그)는
부끄러운 프로그램이 될까 슬퍼하는 까닭입니다.

그러나 겨울이 지나고 나의 소스에도 봄이 오면
무덤 위에 파란 잔디가 피어나듯이
내 이름자 묻힌 bbs.kldp.org 에도
자랑처럼 올린 글이 무성할 게외다.


* core algorithm
while ( INFINITE ) {
   research(book, paper, information);
   problem(probelem+bug);
   search( google, sourceforge, freshmeat, codeproject, kldp);
   solve(problem+bug);
   subscribe(bbs.kldp.org);
}

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

처로의 이미지

"프로그래밍 언어"는 아니지만 어떻든 Language인 SQL로 조금 해 봤습니다. (MySQL 기준입니다.)

Quote:
계절이 지나가는 하늘에는
가을로 가득 차 있습니다.

나는 아무 걱정도 없이
가을 속의 별들을 다 헤일 듯 합니다.

update sky set season = season + 1;
insert into sky
select * from season
where name = 'autumn';

select count(*)
from season as s
left join person as p on s.pid = p.pid
where s.name = 'autumn'
  and p.pid = 'I'
  and p.worry = 0;
sjpark의 이미지

#!/bin/sh
# 직접 쓰는 사람은 그럭저럭 재미 있었는데,
# 보고 싶은 사람은 없을 듯 해요...ㅜㅠ

SRC_URL="http://kldp.org/node/37805"
SRC_REF="http://kldp.org"
USER_AGENT="mozilla"
OUTPUT="/dev/null"

OUTFILE="/tmp/nicesj"
TMPFILE="/tmp/nicesj.tmp"

SRC_CH_ENCODING="UTF8"
TG_CH_ENCODING="EUCKR"

function search_tool()
{
RET=`which $1`
if [ $? -ne 0 ]; then
echo "$1 is not exists on this system"
exit -1
fi
}

search_tool wget
WGET=$RET

search_tool iconv
ICONV=$RET

search_tool sed
SED=$RET

search_tool cat
CAT=$RET

$WGET $SRC_URL --referer=$SRC_REF -U $USER_AGENT -o $OUTPUT -O $OUTFILE && $CAT $OUTFILE | $ICONV -f $SRC_CH_ENCODING -t $TG_CH_ENCODING -cs | $SED "s/<[^<]*>//g" > $TMPFILE

DATA=`$CAT $TMPFILE `

flag=0

for line in $DATA
do

if [ "$line" == "인용:" ]; then
flag=1
continue
fi

if [ $flag -eq 1 ]; then
echo -ne "$line "
fi

if [ "$line" == "게외다." ]; then
break
fi

done

echo
rm $OUTFILE
rm $TMPFILE

# http://nicesj.com

김정균의 이미지

yes "*********************************************************"

or

#!/bin/sh

i=0
while [ true ]
do
for j in $(seq 1 80)
do
if [ $i -eq $j ]; then
echo -n "*";
elif [ $i -eq $[$j/2] ]; then
echo -n "*"
elif [ $i -eq $[$j/3] ]; then
echo -n "*"
elif [ $i -eq $[$j/4] ]; then
echo -n "*"
else
echo -n "."
fi
done
echo ""
i=$[$i+1]
[ $i -eq 80 ] && i=0
done

실행해 보3 ^^; 별이 헤아려 지려나 ㅋㅋ

맨발의 이미지

#!/usr/bin/ruby

season = [:spring, :summer, :fall, :winter]

sky.full(fall).pass(season)
i.have_no(:problem).count(sky.stars)

i.carve(star) unless (sky.response_to?(:morning) && sky.rest?(:morning) && i.rest?(:youth))

['추억', '사랑', '쓸쓸함', '동경', '시', '어머니', '어머니'].each do |star|
sky.stars << star
end

beautiful_words = ['패(佩)', '경(鏡)', '옥(玉)', '비둘기', '강아지', '토끼', '노새', '노루', '프랑시스', '쟘', '라이너', '마리아', '릴케']

beautiful_words.each {|beautiful_word| i.call beautiful_word }

beautiful_words.each {|it| exit unless i.fall?(it) }

exit unless mother.in?('북간도')

bugs.cry(:over_night) if bugs.shame.reason_of?(:name)

thubms << i

while (true)
sky.pass(season) do |item|
thubms.glow_grass if item == :spring
end
end

#뭔가 하고 나니 문제를 잘못 이해하고 있다는 생각이 드는데... ㅡㅡ;;

--------------------------------------------
:: 누구보다 빠르게 남들과는 다르게

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.