코드레이스 다녀왔어용

051126-0004

대안언어축제에서 인기있었던 코너를 분리해서 새로운 행사로 만든 코드레이스를 했습니다. 이번에는 준비기간도 짧고, 학기중이라 자봉분들과 자주 만나지도 못하고 후다다닥해서 막 정신이 없었네요.. 리허설때도 여러가지 했어야 했는데, 학교 시험하고 겹쳐서 당일날 가서야 삽질을.. ㅠ.ㅠ

이번 대회에서는 참가자들의 프로그램에 대한 acceptance test를 계속해서 자동으로 채점을 해야했기 때문에, 자동채점 프로그램과 그를 공시하는 점수판 프로그램이 중요했습니다. 그런데, 그 전까지 특별히 제대로 돌아가는지 테스트도 못해보고 당일 아침에 별의 별 희한한 에러를 다 만나가며 수정하느라 좀 전반부 거의 대부분의 시간을 제대로 진행하지 못한 문제가 있었습니다. 대회가 진행되는 trac과 svn, 해설용 vnc 접속, 점수판, 채점들도 모두 같은 노트북에 세팅했었는데, trac과 점수판이 받아들이는 요청이 엄청나서 로그가 막 우루루루루 올라가는 판에 vncviewer 12개가 떠 있으니까.. 노트북이 로드가 80까지 올라가서 계속 멈추는 바람에 또 난감해하고.. 하여간 여러모로 해설을 할 수 있을 만한 맥락이 조성이 안 돼서 그 부분에 대해서는 정말 아쉬움이 남습니다. 그래서 이 부분에 대해서 다음부터는 해설자는 해설만 계속 하고, 옵저버와 trac/svn/스코어보드 유지를 담당하는 기술적인 자봉을 따로 둬서 해결하는 것으로 뒷풀이 때 의견이 모아졌습니다.

이번 행사에는 C++팀이 4군데, C#팀이 1군데, Python팀이 2군데, Ruby팀이 2군데, Java팀이 2군데 해서 모두 12팀이 참가를 했습니다. 생각보다 C++의 비율이 엄청 높았는데, 처음 기획 때는 동적 언어들이 너무 유리하지 않을까 해서 무척 고심을 해서 동적 언어들이 너무 유리하지 않은 방향으로 가도록 초기 문제를 조정했었습니다. 그 영향인지 동적 언어를 쓰는 팀들이 속도가 C++에 비해서 크게 나지 않았던 것이 약간 아쉽지만, 적당히 평형을 유지했던 것 같습니다. 🙂 초반기에는 중앙대 동아리에서 단체로 출전한 “밥묵자”라는 팀이 C++로 굉장한 리드를 했었는데, 이 팀에서는 다른 여러 프로그래밍 대회의 경험이 많아서 그런지, 경진대회에 적합한 코드를 빨리 만드는 것을 잘했습니다. 그런데, 후기에 타입이 여러가지로 늘어나거나 evaluation 규칙이 바뀌는 등의 기존의 디자인을 벗어나는 요구사항들이 나오기 시작하자, 역시 경진대회를 많이 연습한 팀인 연대의 “액션가면사주세요”가 엄청나게 유연한 C++ 코드를 무기로 계속 만점가도를 달려서 결국 우승하게 되었습니다.

김형용님께서 찍으신 사진입니다.

기획하던 단계에서의 생각은, 아무래도 요구사항이 많이 바뀌는데다가, 알고리즘이 크게 어려운 것이 필요한 문제가 없고 거의 디자인 문제였기 때문에 경진대회 준비팀들이라고 특별히 유리할 것은 없다고 생각했었습니다. 그런데 아무래도 문제를 빨리빨리 풀고, 발생하는 난관들을 잽싸게 해결하는 부분에서 경진대회팀들이 많이 익숙해 있어서 유리하지 않았나 싶네요. 2위를 한 “Effect”팀은 독특하게도 C#으로 출전하셨는데, MonoDevelop을 굉장히 익숙하게 다루시는 모습이 아주 인상적이었습니다. 1위가 C++이고 2위가 C#이라니 정말 충격이지요.. -O-;

다른 팀들도 다들 잘 해주셨는데, 문제 출제에서 약간 문제가 있어서 초기에 너무 요구사항들이 한꺼번에 나가서 상당히 혼란스러웠음에도 불구하고 금방 적응하고 빨리빨리 해결하고 그러셔서 적지않이 놀랐습니다. 역시 코딩 고수이 이렇게 많구나!

이제, 코드레이스 준비는 다 끝났으니(-O-;;;;), 본격적으로 다음엔 재미있는 코드레이스가 될 수 있을 것 같습니다. 좀 더 좋은 코드레이스를 위해 창준형이 말한 두가지가 집에 오는 길에 계속 생각이 났습니다. 아직 마땅한 좋은 생각은 없지만~ 계속 생각해 봐서 2회는 더욱 좋은 대회로.. 🙂

  • 1,2위 팀 뿐만 아니라 모두가 집에 가면서 나도 이겼다 하는 생각을 갖고 돌아갈 수 있게 하는 방법은 없을까
  • 축구나 야구처럼 선수들이 재미있기 보다는 관객들이 즐길 수 있고 배울 수 있는 흥미로운 대회를 만들 수는 없을까

몇가지 대회 자료입니다. (여기 있는 것 외의 trac 안의 데이터 등은 곧 소프트웨어진흥원 홈페이지에 공개될 예정입니다.)

물론 채점 프로그램과 점수판 프로그램은 zlib/libpng 라이선스을 적용하여 다른 곳에 사용하실 수 있습니다.

오픈룩 방문객 분석~

요새 구글 통계가 인기이길래~ 저도 한번 해 봤습니다. +_+ 호홍; Firefox가 Firebird이던 시절에 해본 통계에 비해서 엄청나게 많은 변화가 있었습니다. 깜짝 놀랐어요! ^_^

웹 브라우저 점유율


2003년에는 MSIE가 85%에 육박하고, Firebird가 7.2% Mozilla가 6.0%에 불과했습니다. 이제는 위의 그래프에서 같이 이제 OpenLook에서는 Firefox가 무려 31%로 올라왔습니다! 우와! 한편, Mozilla는 이제 0.6%로 내려가서 모질라 계열 브라우저에서는 Firefox로 완전히 넘어간 것을 알 수 있었습니다. (소수 의견–요새 유행하는! ^_^;;–으로 Safari가 0.86%, Opera가 1.56% 등이 있었습니다.)

플랫폼 점유율


한편, 플랫폼 점유율은 2년전과 거의 같았습니다. 윈도우 계열 사이에서의 비율이 2000이상의 버전이 거의 압도적으로 늘어났지만 윈도우 자체의 비율은 변화가 아주 미미했습니다. 기타 운영체제해서는 리눅스는 거의 같았지만, FreeBSD가 약간 감소하고, MacOS X가 약간 증가하였습니다.

국가별 비율

한국에서 방문하는 분들의 비율이 얼마나 될지도 상당히 궁금했는데요~ 87%정도가 한국에서 오신 접속자이셨습니다. 그 외에는 미국이 4.45%, 일본이 1.15%, 중국이 0.91% 등등이었고, 팔레스타인, 세네갈에서도 1분씩 오셨군요 -ㅇ-;

도메인별 비율

아마도 리버스가 등록된 IP에 대해서 검사한 것 같은데, 모든 IP에 대해서 리버스를 등록하는 미국의 ISP인 팩벨이 가장 비율이 높군요.. 그 외에도 비교적 많은 IP에 대해서 리버스를 등록하는 서울대와 카이스트가 그 다음으로 각각 1.2%, 0.8%를 차지했습니다. 으흐흐. 아무래도 우리나라에서는 리버스를 전혀 등록 안 하는 것이 통상적이라서 도메인 통계는 크게 의미는 없는 것 같네요..

단골 손님 비율

링크를 따라서 오시거나, 검색엔진을 통해서 처음 오신 분들과 자주 오시는 분들의 비율도 흥미로왔습니다. pxr.openlook.org도 등록해 놓았는데, 거기는 아직 홍보가 안 되어서 그런지, 단골 손님 비율이 거의 1% 이하였는데, openlook은 다행히도 44% 정도가 자주 오시는 분들이군요. 에헤헤 요새 글도 별로 없는데 감사합니다. 뒹굴 _-_

오픈소스 범용 VM

틀린 부분을 찾으시면 알려주세요. 🙂

최근 몇년새에 CPU가 하도 빨라져서 그런지, 범용VM이 트렌드로
떠오르고 있는 듯 합니다. 90년대 말의 Java의 유행의 뒤를 이어서
.NET(ECMA CLI)가 여러 언어들이 동시에 통합된 인터페이스로 라이브러리를 공유하는 것을 VM의 주요 특징으로 뽑아내기 시작한 것이 대중적으로는 그 시초라고 볼 수 있겠습니다. 한동안 GNU lightning이나 Psyco같은 VM을 포함하지 않은 JIT 시스템이 뭔가 비전을 제시해줄 것만 같았지만, 결국엔 JIT에서 높은 효율을 내기 위해서 빠질 수 없는 타입 인퍼런스, 메모리 참조 단축, 가비지 컬렉션 같은 것 때문에, 돌아가는 상황을 완전히 제어할 수 있는 VM 수준의 것이 있어야 안정하게 좋은 성능을 낼 수 있었기에 결국은 이렇게 범용 VM의 유행이 왔을 것이라고 봅니다.

Parrot

오픈소스 범용VM으로 처음 알려지기 시작한 것은 아무래도 parrot이라고 할 수 있겠습니다. parrot은 스크립트 언어를 위한 범용VM을 표방하고, 인스트럭션들을 굉장히 스크립트 언어의 주요 작업들에 직관적으로 대응될 수 있을 정도로 간단한 환경을 만들어 주었습니다. 그렇지만, 너무 원대한 꿈을 꾸면서 만든터라, 새로운 아키텍처로의 이식이 다른 VM들에 비해서 쉽지 않고, 내부적인 구조가 너무 어려워서 처음 보는 사람들이 길을 잃어버리기 좋은 환경이라 새로운 개발자의 참여가 적어서 결국은 지금의 상태처럼 다른 사람들은 베이퍼웨어라고 부르지만, 자기들은 곧 릴리스한다고 우기는 상태가 된 것 같습니다.

Mono

그 다음으로 뜬 범용VM은 Mono라고 할 수 있겠는데, 물론 Mono는 ECMA CLI의 스펙을 구현한 것이기 떄문에 VM의 디자인은 독창적인 것은 아니지만 Microsoft제품과의 호환성을 충분히 확보함으로써, 일단은 사용자 뿐만 아니라 개발자들의 관심을 많이 얻었습니다. Mono는 Parrot이 헤메는 과정을 어느정도 보고 나서 개발이 되었기 때문에, 초기부터 너무 큰 꿈을 그리는 것보다 돌아가는 작은 것들을 엮어놓고 나중에 좋은 것으로 부분 부분을 교체하는 방식으로 발전이 되어 와서 결과적으로 쓸만한 것이 나오는 시간이 훨씬 적게 들었고, 그에 따라 지금과 같은 성공을 거둘 수 있었습니다. Mono는 가비지 콜렉터로 boehm-gc를 쓰고 있는데, 이게 겉으로나 소스에서나 보이는 것에 비해서 훨씬 포터블하지가 못합니다. 포팅하기도 쉽지가 않고요.. 그래서, 결국은 Mono는 마이너 플랫폼에 포팅할 때 boehm-gc가 상당한 걸림돌인데, 곧 Mono에서 자체적으로 만든 gc를 도입한다고 하니까 기대를 걸만 하겠습니다. 🙂

LLVM

LLVM은 2002년 정도부터 다른 VM들과는 달리 최적화를 위한 플랫폼이 주요 목적으로 개발되었습니다. 이 VM을 만든 사람은 석사,박사학위 논문의 주제로 LLVM을 썼는데, 박사학위 논문은 “광범위 데이터 구조 분석과 최적화”라는 제목인데, 그에 걸맞게 LLVM은 머신 코드를 실행하면서 데이터 구조적으로 발생하는 여러가지 최적화 가능 지점들을 자동으로 발견해서 최적화를 수행합니다. 대표적인 예로 strcat의 두번째 인자로 변하지 않는 스트링 상수가 들어가는 경우에 memcpy로 교체해버리는 것이 있는데, 이런 것이 컴파일타임에 수행되는 경우 상당한 부작용을 유발할 수도 있다는 점을 생각해 보면, valgrind같이 틈새시장을 굉장히 잘 노린 기발한 착상이라고 할 수 있겠습니다.

LLVM은 valgrind처럼 머신코드를 직접 받아주는 것은 아니고, LLVM의 바이트코드로 생성된 코드를 만들어주는 C/C++ 등의 컴파일러를 사용해서 컴파일하면 그 코드를 실행하면서 분석하고 최적화를 해 주게 되어있는데, 최적화 자료를 토대로 컴파일할 때 아예 머신코드로 컴파일해버리는 기능도 있어서, mono의 머신코드 컴파일러보다도 한단계 더 발전한 것이라고 볼 수 있습니다. LLVM은 현재 PyPy같은 여러 다른 언어 프로젝트에서도 LLVM 코드를 생성하는 기능이 들어가고 있다는 점에서 많은 사용자들을 확보해가고 있어서 앞으로 아주 장래가 기대가 됩니다.

NekoVM

NekoVM은 올해 나온 것이라 다른 것들에 비해서 상대적으로 역사가 짧습니다. NekoVM도 Parrot 만큼이나 굉장히 고수준의 인스트럭션을 갖고 있어서 스크립트 언어를 만들기가 굉장히 간단하게 되어 있습니다. 그리고, NekoVM은 VM 코드가 라이브러리 코드로 단지 50KB 내외밖에 안 된다는 점에서 고속의 실행 코드가 필요한 고수준 도메인 언어에서 뭔가 아주 쓸모가 있어 보입니다. 그런데, NekoVM은 Parrot보다도 더 고수준으로 올라가 있어서 속도를 위해서는 저수준 VM보다는 약간의 희생이 있고, 런타임 최적화를 수행하지 않기 때문에, 장기간 돌더라도 크게 빨라지지는 않습니다. 게다가, 라이선스가 다른 VM과는 달리 GPL이 적용되어 있기 때문에, 기업 사용자들이나 X11/BSD 계열 라이선스를 쓰는 오픈소스 프로젝트들에게 어필하기가 어렵다는 점이 걸림돌로 작용합니다. 만약 GPL을 감수할 수 있는 환경이라면 특히 웹 애플리케이션의 템플릿용 언어로는 굉장한 효율을 발휘할 수 있을 것 같네요.

이제 VM이 이렇게 점점 늘어감에 따라서, 새로운 언어를 만들거나 독특한 동적 실행환경을 만들기에는 점점 좋아지고 있습니다. DSL(Domain Specific Language)로 프로그램 내부에 스크립팅 기능을 추가하면서도 빠른 속도를 유지할 수 있고, 여러가지 다른 언어들을 하나의 VM 위에서 서로 호출하고 참조할 수 있다는 점에서 옛날 패러다임과는 다른 색다른 시도를 할 여지가 많아지고 있는 것 같아서 기대가 됩니다! 🙂

알림: 이 외에도 GNU Portable .NET이나 여러 오픈소스 JVM들이 있겠지만, 거기는 관심이 없어서 자세히 안 본터라 안 적었습니다. =3=3

Mono CP949 코덱 무려 2년 묵은 버그 수정

2003년 10월에 Mono에 CP949
코덱을 넣고서는 C# 문법도 다 까먹고 그냥 무관심하게 있었는데,
얼마 전에 어떤 한국분이 영어로 잘 안 돌아간다고 메일을 보내셔서
2년만에 오래간만에 C# 코드를 좀 보게 되었습니다.

아직 디버거에 익숙하지 않아서 그냥 System.Console.WriteLine 으로
열심히 돌아다녀보니까, 으하하하. copy & paste 버그를 하나
발견했습니다. Mono CJK 코덱들은 공유 dll에 들어가 있는 정적 바이트
배열 데이터를 가지고 디코드를 하는데, 한국어 코드페이지인 CP949는 데이터를 쓰는 영역이
KSX1001 영역, UHC 레벨 1 영역, UHC 레벨 2 영역 이렇게 3가지로
나뉘어 있습니다. 그런데, UHC 레벨 2 영역이 첫 번째 바이트가
0xA1로 시작하는 것으로 돼 있는데, 코드 안에서는 레벨 1 것을
붙여넣기 해서 수정하다보니 0x81에서 시작하는 계산식이
그대로 남아있어서;; -ㅇ-;;;

아마 그때 테스트해 봤을 때는 인코딩 하는 것은 열심히 다
테스트를 했는데, 디코드는 확장완성형 부분은 글자가 터미널에서
안 써져서 귀찮아서 테스트를 안 했더니만 이렇게 돼 버렸네요;;
흐흐.. 그래서 방금 패치를 제출했습니다.
간단한 문제이니까 Mono 다음 버전에는 아무래도 고쳐지겠죠?

참, 그리고 11월 1일에 지미안의 에노모토 아쯔시씨가 CP949에서
EUC-KR도 제대로 지원하게 수정했더군요~ 다음 버전엔 EUC-KR도
쓸 수 있게 되었습니다. 🙂

공개SW 개발자 경진대회

다음 주 토요일에 공개SW 개발자 경진대회라는 이름으로 지난 대안언어축제 때 인기를 누렸던 코너 코드레이스가 다시 열립니다. 이번에는 코드레이스만 독립해서 하기 때문에, 시간도 넉넉하고 준비도 어느 정도 완결된 상태에서 진행될 것 같아서 손에 땀을 쥐는 대회가 아닐까 합니다. 상금도 많고요~ -O-;

선수 참가 조건은 이렇게 되어 있습니다.

  • 최소 2인 이상 최대 6인 이하 팀
  • 개발시 대회장에서 제공되는 리눅스 환경의 컴퓨터를 사용해야 함
  • 상용 소프트웨어를 개발 도구로 사용할 수 없음

물론 선수 외에 방청객으로도 참가가 가능하고, 방청객이 현장에서 선수로 전환하는 것도 자유로이 가능하니까 얼마든지 즐기러 와 주세요~

저는 이번에 해설로 참가하게 되었는데, 지난번에 얼떨결에 하느라 온게임넷에 비해서 좀 지루한 경향이 있었는데 이번에는 온게임넷에서 흥분만 뺀… (그럼 남는게 있나..) 그런 것을 한번 해 볼까.. 하는 -O- (그 전날과 다음다음날에 시험이 있어서 과연 제 정신에 할 수 있을지는 잘 모르겠군요;;)

참가 신청이 며칠 남지 않았으니 얼른 팀을 꾸려서 신청해 주세용~ (위의 링크 참조)

프로젝트와 발표의 러시

요새 무척 뜸하지용~ 우어 프로젝트와 발표의 러시..
중간고사 끝나고부터 시작된 본격적으로 시작되어.. 이번
주에 극에 달하여.. 매일매일 조모임의 압박이군용.. ㅠ.ㅠ
조모임은 지나고보면 크게 하는 일도 없지만 정작 만날 때는
시간 잡기도 힘들고 시간도 많이 들고 왔다갔다 압박감도 있고..
영 거시기해요.. 한꺼번에 여섯과목이 따로 이런게 나오니
서로 일정이 엉켜서 더 복잡한 듯.. 차라리 2과목 정도씩 해서
계절학기식으로 빡시게 운영하는게 뭔가 더 나을 것 같기도
하다는 생각이.. 으흐흐..

요새 하고 있는 프로젝트 중에 “데이터베이스”라는 과목
프로젝트가 모호한 스펙으로 애들의 원성을 사고 있는데..
그래도 SI 프로젝트를 발주하는 회사들의 RFP보다는 훨씬
친절하고 자세한 것 같아요.. 흐흐.. 그래도 하나 힘든점이
있다면, RFP에 대해서 제안서 작성할 때는 그냥 무조건
맘에 들게만 하면 그 이후는 영업의 일인데, 학교에서는
별 희한한 취향으로 이것 저것 감점을 하고 그러니까 영
거시기 하네요..

이번 프로젝트는 12년 전에 나온 한 데이터마이닝 논문을 갖고, 거기에서 나온 알고리즘으로 텔레마케팅 판매성공/실패 조건 분석을 해 주는 거시기인데.. 문제는 RDBMS를 안 쓰는 것도 아니고 그렇다고 쓰는 것도 아니고.. 영 어정쩡하게 스펙을 만들어서 쓸데없이 프로젝트를 복잡하게 만들어버렸다는 것입니다. 회사에서라면 당연히 이런거는 더 좋은 디자인으로 만들어서 다시 제안하고 제안서에 어려운 말만 좀 써주면 잘 해결이 되는데, 학교 프로젝트는 똑같은 걸로 수십개 팀이 하고 있다보니 괜히 튀면 감점요인이.. -.-;

하여간..

  • 학교 프로젝트는 잘 만들어도 어디다가 쓸 데가 없어서 재미가 없다
  • 설사 재미가 있더라도 다른 과목 숙제하느라 context switching overhead가 많아서 결국은 곧 재미가 없어진다
  • 억지스러운 학교 프로젝트 스펙들을 보고 있으면, 교수들도 얼마나 수업하기가 힘든지 이해가 간다
  • 그래서.. 얼른 졸업해야 정신건강에 좋을 것 같다. -.-

IoLanguage 포트 추가

중간고사도 끝나고, 이제 막 조발표와 프로젝트의 시즌이 다가왔습니다. 원래 바쁠 때 딴짓이 더 많이 생각나는 법이라, 올해가 가기 전에 실용주의 프로그래머 권고안의 “1년에 새로운 언어 1개씩 배우기”를 실천해볼까 하는 생각이 갑자기 들었습니다. -,.-; 그래서 io를 한번 보자하는 생각이 들어서 다운로드를 찾아봤는데, 배포하고 있는 바이너리 중 FreeBSD용이 4.x용에다가 i386용이라 7.0에 amd64인 제 컴퓨터에서는 아무리 호환성 라이브러리를 설치해 봐도 돌아가지를 않아서, 그렇게 난해하다는 io 직접 빌드하기를 한번 시도해 봤습니다.

한참동안 “이야.. 자연으로 돌아갔구나”하는 심정으로 Makefile을 수정해보면서 빌드하고 나니 그냥 다른 사람들 삽질도 줄여줄 생각으로 포트로 만들어 버렸습니다. lang/io로 등록했으니, 혹시 io 빌드의 압박으로 접해보지 못한 분은 한번 설치해 보셔도 좋을 듯~ -O- 기본 타입 튜토리얼만 한번 쳐 봤는데 색다른 맛이 있어서 기분 전환에 많은 도움이 되는군요. 🙂

뭔가 또 인터넷 대란?

약 20분 전부터 뭔가 인터넷 대란 현상이 일어나고 있습니다.
한국에서 구글의 서비스들이 대부분 접속이 안 되기 시작하더니,
몇분 전부터는 미국과 영국에서도 구글에 접속이 안 되고 있군요.
그리고 국내 포탈들도 다들 백본이 가득차서 긴급하게 대책을
강구하고 있는 듯 합니다. 뭔가 타이머가 맞혀져 있던 웜의 대량
공격일까요. 아니면, 중국의 김치 사장들이 고용한? -_-;;
IRC에서 물어보니 다른 나라에서도 대체로 다들 같은 문제가 있는
듯 하니 중국에서 하는 건 아닌 것 같군요~ 무슨 문제인지 무지
궁금하당.. 으흐흐~ 곧 뭔가 뉴스가 뜨겠지요.. @.@

하여간.. 옆에 adsense가 안 떠서 화면이 멈춰 있는 문제 때문에
임시로 adsense를 꺼 뒀습니다. 삽질하고 있을 구글 시스템관리자들
화이팅! -O-

FreeBSD 소식

오랫동안 진행됐던 새로운 FreeBSD 로고 투표 결과가 공식적으로 발표 되었군요. 8월초부터 초기 선정 패널로 참가하면서 800개 정도 되는 후보군에서 고르다보니까 저 로고가 상당히 그래도 예쁘게 보이는데, 처음부터 저 로고를 보는 분들은 좀 맘에 안 드는 경우도 있는 모양입니다. 그래서, 개발자들 사이에서도 로고 싫다 그냥 데몬만 쓰자 하는 사람도 있고.. 흐흐.. 그래도 일단 선정이 된 이상은 웹페이지, CD 디자인 등에서 많이 쓰이게 될 것 같군요. 저도 이제 명함을 붉은색 계열로 바꿔야겠군요 -O-;;

그리고, 방금 FreeBSD 6.0 릴리스 CVS 태그가 완전히 찍혔습니다.
이제 별 이변이 없는 한은 FreeBSD 6.0-RELEASE가 2~3일 안에 나오게 되었습니다. 🙂 5.0이 개발 브랜치에서의 릴리스가 좀 빛을 못 받았던 것을 생각해 보면, 6.0은 그 부분을 만회한 4.0 처럼 성숙하고 사랑받는 릴리스가 되기를 기원합니다.