lizolv-blog1
Lizolv's Space
13 posts
학생 초보 개발자의 공간
Don't wanna be here? Send us removal request.
lizolv-blog1 · 7 years ago
Text
커널의 교훈, 패킷 분석
저번에 하던 커널 과제를 끝냈다. free day를 무려 이틀이나 쓰면서. 추석 연휴 시작하자마자 붙들었으니 정말 시간을 많이 쏟았다. 그냥 한달을 커널에 바친거나 다름없다. 시험기간에도 정리/암기하고 남는 시간에 커널 소스를 만지작거렸으니..
정말 시간낭비였다는건 동아리 선배로부터 어떻게 했는지 대충 들으면서 실감했다. 그리고 코드를 수정하면서 겪은 에러를 모두 제거하기 위해 VM을 몇번이나 On/Off 했는지..
그로부터 얻은 결과는 참 단순하다. 이미 있는 코드를 수정할 때는 그 코드가 어떻게 동작하는지 미리 알아둘 필요가 있다는 것. ��로 보이는 함수의 의존성에만 관련한 문제가 아니다. 파일 시스템이 로드될 때 그 이전에 로드되는 드라이버가 있는 것처럼, 서로 관련이 없어 보여도 실행 순서에 따른 ���계는 분명히 존재한다는 것이다. 그리고 항상 방어적 프로그래밍을 해야 한다는 것. 알고보니 submit_bio 함수 내부에서 항상 슈퍼 블럭이 referenced인건 아니었다. 그래서 null값 체크를 했더니 안 터졌던 것이다.
커널 과제를 끝냈다고 모든 과제가 끝난 것은 아니다. 계속해서 과제의 파도가 밀려온다. 한 주에 과제가 몇 개나 겹치는지...
지금 하고 있는 과제는 PPP를 조사하고 직접 PPP 연결을 시도한 후 패킷 dump를 떠서 이를 분석하는 것이다. 이 과목서 내 시험 점수가 평균보다는 높다지만, 내 생각에는 너무 쉬운 편이었으므로 학점 방어를 위해서는 과제에 많은 정성을 쏟을 수 밖에 없다. 사실 이미 지각이지만, 지각 제출도 받고 있었으므로 열심히 분석중이다.
사실, 와이어샤크 하나면 일반적인 패킷 분석은 다 한거다. 하지만, 각각의 수열이 무슨 의미인지를 세밀하게 설명해주진 않는다. 결국 디테일을 알고 싶다면 RFC 문서를 읽을 수 밖에 없다.
RFC 문서를 읽고 dump에 있는 각 바이트가 무엇을 의미하는지를 해설하고, 프로토콜의 구조에 따라 분절 표시를 하면서, ‘저게 다 그렇게 해석되는구나’ 하고 느끼게 되었다. RFC 문서에는 내가 대학 오기 전 잡다하게 찾아보던 이쪽 분야 관련 단어가 많이 보였다. 그래서 저걸 더 깊게 파지 않아도(=RFC에 설명되지 않은걸 따로 찾아보지 않아도) 어떤 식으로 동작하는지 알 수 있었다.
하지만 보람찬건 보람찬거고, 힘든건 힘든거다. 그 dump에 수많은 분절 표시와 해석을 적는건 쉬운 일이 아니다. 종류에 따라 색 구분도 해야 하고, dump와 해설과 execution result도 매핑시켜야 한다. 이걸 noccp, noaccomp, nopcomp, asyncmap 옵션을 줄 때와 default일 때를 각각 해야 하므로 못해도 두 개의 dump에 대해서 이 짓을 해야 한다. 시간이 남았다면 sender/receiver 양 쪽을 다 했겠지만, 지각 제출 확정이므로 생략할 것이다. 어차피 양쪽은 순서만 조금 다를 뿐 같은 내용이다.
1 note · View note
lizolv-blog1 · 7 years ago
Text
리눅스 커널 소스 수정의 고충
과제 때문에 리눅스 커널 소스를 만지게 되었다. 내부 소스의 수정을 최소화하기 위해 따로 내부 폴더를 만들어 거기에 소스코드를 작성했다. 내부 작동에 대한 api를 노출시키고 EXPORT_SYMBOL 및 extern을 사용했다. 그런데, 그 API를 내부에서 호출하는 코드를 작성하면 커널이 터지더라...(submit_bio 함수에서 호출함)
진짜 어이가 없어서 구글링도 좀 해봤으나, 제대로 된 질문/답변이 없었다. 역시 커널을 건드리는 사람들은 그런 문제를 잘 겪지 않는구나...
어쨌건 그런 이유 때문에 왜 터지는지 그 이유를 알 수 없어서 몇 가지 실험을 했다. 먼저, 호출부를 지우면 당연히 안터진다. 그 다음에 void test_func(void) 라는 아무것도 안하는 함수를 만들어서 호출했더니 안터진다. 리턴형을 int로 바꿔도 안터졌고, 인자를 int로 바꾸자 마침내 터졌다. 구조체를 따로 만든 후 인자로 구조체 포인터로 바꾸자 안터졌다. 배열이 넘겨진다고 가정하고 인자에 길이를 나타내는 int형을 추가했더니 터졌다.
이쯤되면 뭐가 뭔지 모르겠다. 전혀 융통성이 없더라...
0 notes
lizolv-blog1 · 7 years ago
Text
개인적으로 생각하 웹 브라우져에서 꼭 필요한 애드온/부가기능
어떤 브라우져를 쓰나 꼭 필요하게 되는 기능들이 있다. 대부분 기본 기능으로 지원하지 않기 때문에 애드온이나 부가기능으로 설치해야 하는 것들이다.
우선은 광고 차단. 요즘 웹에 수익 창출 방법으로 광고가 각광받고 있는건 알지만, 정도가 지나치다고 생각한다. 끌 수도 없게 닫기 버튼을 없애버리질 않나, 웹페이지를 광고로 도배해서 로딩 속도가 느려지질 않나, 광고 때문에 악성 소프트웨어가 같이 딸려오질 않나..
추천하는건 애드블록, 애드가드, 유블럭 이 세 종류로, 그 중에서도 유블럭이 제일 나은 것 같다. 애드블록은 요즘에 애드블록을 블록하는 JS가 나와서 골치가 아프다. 애드가드는 솔직히 세세하게 설정할 수 있는 점이 좋다. 하지만 난 귀찮으므로, 유블럭을..
그 다음으로는 탭/세션 저장. 불의의 사건(?)으로 인해 웹 브라우져가 강제로 종료되고 복구가 안되는 ���우가 있기도 하고, 용도별로 탭/세션을 저장해놓고 필요할 때 불러오고 싶을 때도 있다.
마지막으로 브라우져 자원관리. 정확히는 메모리 점유율 관리. 정말로 서버처럼 돌릴게 아닌 이상,  단순한 개인 컴퓨터에 서버 정도의 성능을 맞추는 사람은 없을거라고 본다. 그리고 위의 탭/세션 저장과 연동되는 문제이기도 하다. 나는 탭을 많이 켜놓고 쓰는 타입에 속한다. 이 탭들을 용도별로 관리할 필요가 있을 정도로 많이 켜놓으려면, 당연히 자원관리가 필요하다.
0 notes
lizolv-blog1 · 8 years ago
Text
포스팅 거리를 찾았다
원래는 자료구조와 알고리즘을 기초부터 포스팅할까 했는데, 지금 과제하면서 더욱 절실한 자료가 너무 많았다. 유니티, 언리얼부터 시작해서 WPF, UWP 같은 것들이라던가. 너무나도 중요한 라이브러리 사용법이나 어플리케이션의 배포라던가. 네트워크 프로그래밍과 DBMS 프로그래밍도 있다.
프로그래밍 처음 하는 사람들도 그렇지만, 이미 프로그래밍을 하고 있던 사람들도 이쪽을 완전히 처음 접하는 사람들은 이런 자료들이 너무 절실하다. 그러나, 너무나도 불친절한 문서들이 많다. MSDN이라거나...(한국어 페이지의 자료가 영어 페이지와 비교했을 때 너무 부실하다. 그리고 데모 예제를 만드는 방법도 설명되어있지 않다.)
프로그래밍 언어에 관한 문서들은 이미 웹상에 수없이 많이 있고, 매우 고품질의 문서들도 많다. 하지만 그것들을 활용해서 만들어내는 것들에 대한, 어플리케이션 제작의 각 요소들에 대한 문서는 정말 없는 것 같다.
내가 앞으로 포스팅할 방향이 바로 이런 것들인 것 같다. 언제까지 시간은 없는데 이런 기본적인 것들에도 박치기를 할 건가. 이젠 정말 싫다.
0 notes
lizolv-blog1 · 8 years ago
Text
과제,과제,시험,과제,과제.
DB 수업을 하는 교수가 4차 산업혁명에 꽃혔다. 매일 과제가 나오고, 텀 프로젝트로 그것과 관련된 것을 한다. 거기다 시험에도 나왔다..
시스템을 설계하고, 구현하고, 시연해야 한다. 물론 학생이 직접 만들기 힘든 수준에서는 데모버전으로 할 수 있는 부분만 하는 것이지만..
사실 이 것은 강의계획서에는 없었던 내용이고, 강의 평가에는 교수가 DB 수업을 했다는 정보가 없었다. 교수가 한 다른 강의의 평가에는 좋게 되어 있었다. 그걸 보고 듣게 되었지만...
덕분에 학기중에는 시간이 너무 없어서 죽을 맛이 되었다ㅠ
2 notes · View notes
lizolv-blog1 · 8 years ago
Text
일거리
알바를 그만두고 근로장학으로 근무하면서, 시간이 많이 남아서 뭔가를 할 수 있을 시간이 생기긴 했는데, 천성인지 노는걸로 때워버렸다. 그리고 과제폭탄이 터졌다. 그것도 전공만. 그야 이번 학기에는 전공만 신청했으니 당연하지만.
물론 긍정적인 점도 있다. 공부량이 강제로 늘어나게 되면서 지식습득을 하게 되었다는 것. 어차피 공부해야 할, 필요한 지식이었으니 습득하는게 나쁜게 아니다. 오히려 좋다.
하지만 부정적인 면도 있는게 문제다. 나는 천성이 나태해서인지 몰라도, 쉬운것도 질질 끌면서 한다. 지겨움 + 피곤함 = 마감 직전까지 딴짓하며 질질 끌기라는 패턴이 정착된 것이다. 덕분에 과제만으로는 그다지 바쁘지 않을 수 있었음에도 불구하고, 체감시간은 너무 빨랐다.
이제 슬슬 시간이 많이 남아돌게 될 시기가 찾아온다. 중간고사 기간이다. 물론 과제를 많이 내주는 과목은 얄짤없겠지만, 그런 예외를 고려하지 않는다면 시험에 집중하는라 과제가 나오지 않는 편이다. 남는 시간을 함부로 버리지 않고 효율적으로 사용하도록 습관화시키자.
0 notes
lizolv-blog1 · 8 years ago
Text
요즘 포스팅이 늦은 것에 대한 변명 + 최근 일상
안 그럴줄 알았는데, 개강하니 너무 바빠졌다. 월/화는 편돌이 + 과제 때문에 포스팅할 엄두도 안난다. 주마다 과제가 2개씩 새로 나오는 수준이라 갑자기 벅차진 느낌이다. 나머지 평일은 동아리에서 오랫동안 머무르고 집에 돌아오면 피곤해서 바로 잠에 들어버려서 그런 것 같다. 주말은 할 말이 없다; 그냥 놀다가 포스팅을 까먹은 내 잘못인걸로.
갑자기 기대도 안한 근로장학생에 선발되고, 또 그 일정을 변경 가능하게 되었다는 점에서 이제 편돌이를 때려치우고 학교생활을 만끽할 수 있게 되었다. 물론, 저녁시간 이전에는 자유시간 따위는 꿈도 못 꾸겠지만..
근로장학생 선발로 인해 저절로 시간이 남게 된다. 그 여유를 통해서 이전에는 엄두도 못내던 일을 도전해볼 기회로 사용해야겠다.
더불어민주당이 경선을 시작했고, 현장투표 결과가 유출되었다. 그 결과는 모두의 예상대로. ARS에서 역선택 장난을 넘어서는 투표가 이어진다면 그 결과 그대로 가져가게 될 것이다.
드디어 세월호 인양을 한단다. 이렇게 금방 할 것을 3년동안 박근혜 정부는 도대체.. 동시에 정말 다행이라고 생각한다. 거기에 지금이 인양에 적합한 타이밍이라고 하니, 마치 신이 도운 듯 하다. 세월호에 갖힌 시신들을 모두 찾아내서 유가족들의 품으로 돌려주고, 관련 진실들을 찾아내서 박근혜의 잘못에 대한 명확한 증거를 제시할 수 있게 되길 기원한다.
1 note · View note
lizolv-blog1 · 8 years ago
Text
블로그 포스팅에 관해
지금까지는 하루 1개의 포스팅을 했다. 근데 요일별 일정이 달라서 주제별로 포스팅하기 좋은 요일이 있는 것 같다. 그래서 포스팅 원칙을 하나 정해두기로 했다.
월요일, 화요일은 대학에서 집으로 온 후엔 시간이 거의 없고, 알바가 끝난 후 비로소 시간이 난다. 그리고 이 때 늦게 자면 그 다음 날에는 잠을 보충할 수 없다. 정확히는, 보충하는 만큼 손해다. 그러므로 별로 준비가 필요하지 않은 주제로 포스팅을 하는 것이 좋을 것이다. 그러므로 일상, 그 중에서도 할 말이 그렇게 많지 않은 주제(내가 그 쪽 활동을 안해서 할 말이 없는게 아닌, 말 자체를 간단하게 할 수 있는 것)로.
수목금은 학교는 나가지만 쓸 수 있는 시간이 많다. 그러므로 알고리즘 설명 같은 주제로.
토, 일은 쉬는 날. 그런 만큼 다른 날에는 안하는 활동을 할 것이므로 그것에 관한 포스팅으로.
0 notes
lizolv-blog1 · 8 years ago
Text
동아리 게임 프로젝트가 끝났다
드디어 저 지겨운 프로젝트에서 손을 땔 수 있게 되었다. 물론 “일”로서의 의미다. 회사 프로젝트 같은 물건도 아니니 프로젝트 작업물을 고대로 가져다가 쓸 수 있다. 저걸 써서 내 코딩 실력 신장에 써야 되는건 당연한 거 아닌가.
프로젝트가 끝났으니 이제는 새로운 시도를 할 차례이지만.. 대학에 재학중이기 때문에 과제를 해야 한다. 것도 영화 감상문으로. 계산이론 수업인데 왜 영화감상문을 쓰라는건지.. 목요일까지니 또 귀찮아졌다. 월화는 알바이고 수요일에 귀찮은 짓을 해야 된다니.
2학년 때 귀찮은걸 미리 해두면 확실히 3학년 이후로 편해질 것이다. 근데 그 귀찮은걸 편하게 하려면 갖은 꼼수를 부려야 한다. 그 중 최고봉이 수업에서 진도 느리게 나가는 동안 미리 학습하는거다. 예습? 방학동안 스터디, 프로젝트 하느라 그런거 할 시간은 없었다.
이런 학습방식의 문제점을 극복하기 이해서는 근본부터 다시 차근차근 쌓아야 한다. 그걸 위해 따로 체계적인 독학을 해야 하는데, 그럴 시간이 날지는 모르겠다. 근데 독학을 하는 만큼 실력도 늘고 기억도 길게 가기 때문에 선택이 아닌 필수다.
반드시 독학해둬야 할 건 수학이다. 밥줄은 프로그래밍이지만, 생각하는 능력을 키우는 데에도 좋고 쓸 수 있는 툴이라는게 늘어난다. 것도 방법론적 툴이.
프로그래밍은 알고리즘 꾸준히 문제 풀고 고급 알고리즘도 머리에 집어넣고, 언어나 엔진, 기술 같은걸 익혀놔야지. 그리고 이런게 좋은 포스팅거리가 될거다.
다른 취미로 삼고 싶은건 글쓰기, 그림, 작곡, 영상인데 시간이 나야 말이지.. 그래도 꾸준히 시간 내면서 해야 미루질 않을 것이다. 여태까지 그랬으니까.
인생 전체에 도움이 될만한 공부도 해야지. 정치라던가 경제라던가. 할 것이 참 많다.
0 notes
lizolv-blog1 · 8 years ago
Text
패턴이라는 건 신기하구나
오늘도 유튜브를 탐방하다 꽤 재미있는 유튜버를 발견했다. 정치 관련이긴 한데, 정치로 국한되지 않고 기술, 경제 등을 모두 다룬다. 이번 탄핵 정국 관해서도 재미있게 해설하기도 하고, 예측도 잘 맞는 편이긴 했다. 음모론도 “그냥 음모론이니까 다루지 않고 넘어갑니다” 또는 “이것은 문자 그대로 사실입니다” 수준이 아닌, 어느 정도의 사실과 정당성을 가지고 분석하는게 좋았다. 덕분에 음모론을 바라보는 자세도 배웠고, 프리메이슨 음모론이 어디에서 기초하는지도 알게 되었다(정말 의외였다. 화폐 발행권 문제였다니).
이 유튜브에서 설명하길, 정치는 회사에서의 인간 관계랑 똑같다고 했다. 임명권을 가진 사람에게 줄을 서고, 인맥이 정치의 핵심이고. 다 회사에서의 패턴을 그대로 적용할 수 있다는 거다.
동아리 게임프로젝트 소스를 보완하면서(기획 및 PM 맡은 놈이 지원금 받아야 된다고 자꾸 갈군다. 기획은 구체적이지도 않아서 내가 코딩전에  일일히 물어가며 구체화 시켜가면서 했고, PM 역할은 마감만 독촉하면 되는 줄 알고 있으니 속이 터진다!) 코드를 정리했다.마감 직전에 막 날코딩으로 짜서 알아보기도 힘들고, 보수작업도 어렵다. 그걸 리팩토링 하는 중 깨닫게 되었다. 이런 방식으로 고치는거 어디서 많이 본 거 아닌가. 나도 모르게 디자인 패턴을 적용중이었다. 의식하지도 않았는데! 이래서 객체지향의 원칙과 리팩토링 원칙을 적용하면 저절로 코드 품질이 좋아지나 보다.
0 notes
lizolv-blog1 · 8 years ago
Text
한국에서 프로그래밍 관련 진로를 희망하는 대학생에 관하여
주변에서 취업 잘하려면 알고리즘 잘하면 된다는 이야기를 좀 듣는 편이다. 실제로도 실력 있는 개발자는 알고리즘을 생각하고 구현해내는 능력이 뛰어난 사람들을 말하는 것 같다.
난 ���6에 정보올림피아드에 처음 도전하면서 알고리즘이라는 것을 처음으로 학습했다. 그 때는 C 기본 문법(메인함수, 조건문, 반복문, 함수)만 가지고 기초적인 알고리즘(욕���쟁이 기법, DFS, DP 등)을 구현했다. 중학생일 때는 STL이라는 것을 도입하고 알고리즘도 정렬, 자료구조, 트리 및 그래프, 기하 등을 공부하고 온라인 저지 사이트에서 문제도 많이 푼 것 같다.
고등학생이 되면서 C++이라는 언어에 관심이 많아졌다. STL이라는게 작동방식이 신기해서 그랬기도 하고, 중3때 헤더파일을 들여다보게 되면서 저 내용이 도대체 뭔 뜻인가 여러 차례 구글링 하면서 읽어본 내용들이 흥미롭기도 해서다. 클래스와 객체지향이라는 개념이 얼마나 쩌는 내용인지, 감명을 받아서 심심할 때마다 구글링을 했다.
알고리즘도 좀 더 심도있는 내용을 공부하게 되었다. 중3때 국제정보올림피아드 교육생이 되고 교육생 여름/겨울 캠프에서 여러가지 개념들을 배우기도 했다. 그 때는 거기 있던 사람들이 워낙 넘사벽이기도 했고 나도 처음 배우는 알고리즘들을 잘 구현하지 못하기도 해서 1년만에 떨어졌다.
고등부문 정보올림피아드는 정말 장난이 아니었다. 지역 예선이야 언제나 그렇듯 대충 풀어도 통과지만, 지역 본선, 전국 본선은 하나같이 문제가 어려웠다. 지금 생각해보면 풀어볼만한 문제들이지만, 그 때는 아직 알고리즘을 생각해내는 능력이 부족했던 것 같다. 뭐, 그래도 정보올림피아드 덕분에 대학 오기가 쉬웠다. “특기자 전형”은 자신의 특기 관련된 점을 자기소개서에서 물었다. 그리고 그 때 입시제도에서는 교과목의 이름이 들어간 대회 관련된 정보를 적을 수 없었지만, “정보”라는 과목은 일반계 고등학교(정확히는 과학 중점 학교)에서 찾아볼 수 없었다!
대학생이 되면서, 취업에 관한 고민이 현실적으로 다가왔다. 개발자들의 블로그나 선배들 이야기에는 온갖 기술들과 엔진, 프로그래밍 언어들에 관한 이야기만 가득했다. 거기에 알고리즘은 없었다. 그러면 어떻게 해야 되는가. 게임 개발 동아리에 들어가 겨울방학에 게임 프로젝트를 진행했다. 처음 써보는 툴, 언어, 익숙하지 못함으로 인해 발생하는 버그들과 찾을 수 없는 관련 정보들. 특히나 유니티 센서에 관련된 내용이나 모든 객체의 모든 함수들의 실행 순서, 물리 엔진의 타이밍적 정확성에 관한 내용은 정말 나를 골치아프게 했다. 역시 알고리즘 만으론 안되는구나. 절실히 깨달았다.
알고리즘은 중요하다. 프로그램에 적용된 알고리즘에 따라 그 프로그램의 품질이 달라지니까. 그런데 다른건 알고리즘보다 더 개발자로서의 특성에 어울리는 느낌이다. 알고리즘만 할 줄 알면 회사 가서 코드의 알고리즘 부분만 손댈건가? 일단 보이는 결과물(게임 클라이언트, 서버, 그래픽, 물리, 웹 등)을 만들어 낼 줄 알아야 개발자 아닌가. 일단 그것부터 되어야 알고리즘을 잘 한다는 강점이 비로소 효력을 발휘하는 것이다. 애초에 그런건 회사 공고만 봐도 알 수 있다.
의도하진 않았지만, 우물안의 개구리 꼴이 되었다. 씁쓸하기도 하고, 다른 사람들만큼 하려면 얼마나 걸리려나 걱정도 된다. 내년에 병특을 넣을 생각인데(신검 4급이기도 하고), 거기 들어가서 민폐 안끼치고 공부하고 경험하려면 지금부터 어떻게 해야 하는 걸까.
0 notes
lizolv-blog1 · 8 years ago
Photo
Tumblr media
오늘 오전 11시 22분, 헌재의 만장일치로 박근혜가 파면되었다. 작년 9월 20일부터 시작해서 지금까지 노력한 jtbc, 특검, 헌재분들께 정말 고생하셨다는 말을 전하고 싶다.
그렇지만, 탄핵이 인용되었다고 해서 박근혜-최순실 게이트가 끝난 것은 아니다. 두 명의 영향은 아직 모든 분야에 남아있고,  처리해야 할 사안은 많이 남았다.
이번에는 물갈이 시즌이다. 대한민국에 고여 썩은 물을 빼내고 맑은 물로 가득채워지길 기대한다.
1 note · View note
lizolv-blog1 · 8 years ago
Text
쉽지 않은 결정
이전에도 블로그를 하려는 시도는 몇 번 했지만, 2~3일 내로 그만뒀던 걸로 기억한다. 그런 끈기 없던 나에게 이 글(https://hyunseob.github.io/2017/02/26/blog-for-developers/)은 동기를 부여했다. 저번처럼 금방 손을 놔버리긴 싫어서 다른 사람들이 어떻게 했는지를 많이 살펴본 것 같다.
첫 블로그 플랫폼 결정부터가 어려웠지만, 텀블러가 지원하는 여러 기능이 탐나 이렇게 첫 글까지 오게 되었다. 나중에 다른 플랫폼도 쓸 날이 올 수도 있겠지만 그건 아직 먼 이야기.
일단 동기가 동기인 만큼 주로 포스팅될 주제는 프로그래밍 관련이고, 아직 초보이므로 기초적인 내용 위주로 포스팅할 것 같다(그렇다고 구구단 프로그래밍 레벨의 초보는 아님..). 응용기술 및 최신 트렌드에도 관심이 많으므로 ICT 분야 전체적으로 포스팅하게 되겠지만 말이다. 물론 그 외의 주제가 포스팅 될 수도 있다.
사실, 블로그를 개설한 목적은 더 있다. 그저 즐겨찾기 목록에 링크를 추가하기 보다는 나중을 위해 상세한 내용을 포스팅하는 것이 도움이 되기도 하고, 다른 사람들이 나처럼 삽질하지 않았으면 하는 마음 있어서다.
아무튼, 이번 블로그는 제발 오래 살아있길 바라는 바이다.
0 notes