BLANK, NULL AND BLACK

자바스크립트 지식이 없는 관계로 노가다 코딩 일 듯 하다.

비효율적이고, 주먹구구식이지만 어쩔 수 없다. 허허허


사내시스템 메인화면에서 배너형식으로 이미지 몇개를 돌게해서 직원들에게 보여주고 있다.

요약된 정보를 작은 이미지에서 보여주고 (실제 5초마다 바뀌는 이미지)

관심 있는 이미지를 클릭하면 큰 이미지로 그 내용을 상세하게 보여주는 .... 그런 형식이다.

이미지는 디자이너가 만드니까 신경 쓸게 아니다만,


1. 요약된 정보 이미지

2. 요약된 정보 이미지 클릭 시 큰 이미지를 새창에 띄워서 전체 내용 보여줌.

3. 큰 이미지, 그러니까 전체 내용이 있을 수도 있고, 없을 수도 있음.


3번이 좀 맘에 걸렸다.

1번부터 10번까지 이미지가 있다면, 1~5번은 큰 이미지가 없고 나머지는 있고 이런식도 아니였다.

1,2,5,8 큰 이미지 없음. 나머지 큰 이미지 있음. 뭐 이런식..

언제나 예외와 싸우는게 프로그래밍이라 하지만 짜증이 안날래야 안날 수가 없다.


그래서 만들었는데,,

다시 처음부터 만들라면 할 수 있을지 모르겠다.

완성도도 떨어지고.. 아무튼 그렇다. 허허헣~


대략적인 구조는

1. 파일이름이 제각각 일 수 있으니 폴더에 있는 이미지 파일이름을 먼저 배열에 넣는다.

2. 파일 이름앞에 '파일경로', 파일이름 뒤에 '확장자' 를 붙여서 이미지 주소를 완성 시킨다.

3. 큰 이미지를 가지는, 다시 말해 클릭 했을 때 크게 보여줄 이미지를 가지고 있는 파일이름을 특정 함수 파라미터에 넣는다.

3-1. 특정 함수에 파일이름이 적힌 이미지는 클릭 시 새창으로 큰 이미지 표시, 나머지는 표시안함.

4. setInterval() 과 setAttribute() 를 이용해서 이미지를 지정된 시간 만큼 보여주고 이미지 교체 (현재는 5초)


소스를 다 적긴 좀 거시기 하니까 첨부파일로 올려놔야겠다.

이미지는 사내에서 사용하는 이미지가 아닌, 사이즈만 같은, 동물 이미지로 교체.


이미지에 대해서 간략히 설명한다면

파일이름은 "00","01".. 이런식의 숫자로 돼있다.

어차피 파일이름을 배열에 직접 넣어주니까 추후에 수정이 가능하다.

작은 이미지를 클릭 했을때 띄워질 큰 이미지는 파일 이름은 같지만 뒤에 알파벳 "L" 을 붙였다. 라지의 첫글자.

이 부분 또한 맘대로 바꿀 수 있다. 소스랑 매칭만 시켜주면 뭐....... (예: 00.jpg, 00L.jpg, 01.jpg, 01L.jpg.....)


일단 올려보자.

틈틈히 소스를 보면서 수정도 하고 해야하는데

잘 돌아간다면 그냥 그런가 보다 하니까 잘 안봐진다. 에휴.. 맨날 그 밥에 그 나물..


Rolling.zip



'JAVASCRIPT' 카테고리의 다른 글

Object  (0) 2016.08.18
window.opener  (0) 2016.08.18
Div 를 새창 팝업으로 띄우기  (0) 2016.07.01
setInterval(), setTimeout()  (0) 2016.06.02

우후! 자바스크립트 첫 글이다.


이상하게 빡세다. 될듯 한데, 안되고, 안되겠지 했는데 결과가 나온다! ㅡ_ㅡ

확실히 제이쿼리가 편하긴 하다는걸 느낀다.

VS만 만지다가 sublime 에서 작업을 해보니 여간 갑갑한게 아니다.

오류도 안띄워주고, 되면 된다. 안되면 안된다 말이 없으니.. 크롬 없었으면 어찌했을꼬~


일단은 자주 쓸 일은 없지만

사내시스템 메인화면에서 이미지 몇장을 돌리면서 직원들이 보게 해달라는 요청이 있기 때문에

찾아본거 까먹지 않도록 적어본다.


우선 참고 했던 블로그주소 : http://stove99.tistory.com/56


보고 있지만, 인터벌과 타임아웃의 정확한 차이를 모르겠다.

아직 다른점이 뭔지 정확히 안찾아봤으니 찾으면 나오겠지.


setInterval('함수()', 시간)


저 함수 부분을 왜 문자열처럼(따옴표로 감싸서) 적어야 할까?!

따옴표 안붙였다가 한참 찾았다. 어찌보면 이 포스트는 '저 함수부분이 문자열' 이라는 것을 까먹지 않기 위해 작성하는 것이다!!

시간 부분을 0.1초 정도로 줄여보니 유흥가에서 많이 보던 간판이 생각나서 얼른 다시 원래대로 돌렸다.... (으흠..)


잘되면 재밌는데, 잘 안되면 지독하게 안된다.

'JAVASCRIPT' 카테고리의 다른 글

Object  (0) 2016.08.18
window.opener  (0) 2016.08.18
Div 를 새창 팝업으로 띄우기  (0) 2016.07.01
자동 롤링 이미지  (0) 2016.06.02

앞의 피벗 기능을 활용한 데이터 뽑기의 진화버전(?) 이다.


잠깐 다시 설명해 보자면

정상적인 회사라면 급여지급 정보는 매달 반복될것이고, 직원들 사번(또는 고유 아이디) 또한 매번 반복될 것이다.

그렇다면 자료 요청자가 급여지급 월의 범위를 지정해서 자료요청을 할텐데

그 범위가 이전달 또는 최근 2개월 정도 일수도 있지만

2014년 전체의 정보를 보고싶다던가 (그나마 다행)

2014년 3월 부터 2015년 6월 까지의 데이터를 보여달라는 등의 희한한 요구도 있을 수 있겠다.


그러면 앞의 방법에서는 요청한 급여지급월을 하나씩 SELECT 문에 적어줘야 했었다. (생각만 해도.... )

물론 엑셀이나 기타 프로그램을 이용하여 자동완성 기능을 사용하면 생각보다 시간이 절약되기도 한다.

하지만 목마른 사람이 우물을 파듯이 불편하면 만들어야지 뭐~.



우선 예를 들어 위에서 나온 2014년 3월 부터 2015년 6월 까지의 데이터를 요청 받았다 라고 해보자.

[2014-03], [2014-04], [2014-05], [2014-06] ........ [2015-06] 

급여정보는 위와 같은 식으로 데이터가 나와야 되겠고, 제일 앞에는 사번과, 이름 정도가 나오면 알아보기 쉽겠다.

사번, 이름, [2014-03], [2014-04], [2014-05], [2014-06] ........ [2015-06] 


여기서 생각해야 될 것이 직원이 50명이라면 

2014년 3월에 50명의 급여정보

2014년 4월에 50명의 급여정보.... 처럼 매월*50명의 데이터가 나오게 된다.

같은 [연도-월] 정보가 50개씩 나오니 비효율적이다.


변수를 하나 만들어서 중복되지 않는 데이터만 넣어놓자.


DECLARE @MONTH VARCHAR(MAX) SET @MONTH = ''

SELECT

    @MONTH = @MONTH + A.지급월

FROM

    (

        SELECT

            DISTINCT '[' + 지급월 + '], ' AS 지급월

        FROM

            PAYMENT_TBL

        WHERE

            지급월 BETWEEN '2014-03' AND '2015-06'

    ) A

ORDER BY

    A.지급월


"[ ]" 괄호와 괄호 뒤에 붙어 있는 "," 콤마, ORDER BY(지급월 순서) 는 추후 @MONTH 변수의 내용을 컬럼이름으로 활용하기 위한 방법이다.

SELECT @MONTH 를 해보면 문자열 형태로 쭉 붙어서 들어갔다.


이제 실제로 데이터를 출력할 쿼리를 만들어보자.

변수를 하나 더 만들어서 그 안에 문자열 형태로 쿼리문을 조합하고, EXEC로 실행 시킬 것이다.


DECLARE @SQL VARCHAR(MAX) 

SET @SQL = '

                      SELECT

                          사번, 이름, '

                          + LEFT(@MONTH, LEN(@MONTH)-1) + '

                      FROM

                           (

                               SELECT

                                   사번, 이름, 지급월, 금액

                               FROM

                                   PAYMENT_TBL

                           ) A

                      PIVOT

                          (

                              SUM(금액)

                              FOR 지급월 IN (' + LEFT(@MONTH, LEN(@MONTH)-1) + '

                          ) B

                  '

EXEC (@SQL)


이러하다.

기본적으로 MSSQL의 PIVOT 의 문법을 따르며, 자료요청 시 마다 달라질 수 있는 지급월 정보는 변수로 처리한다.


LEFT() 함수를 사용한 이유는 @MONTH 에 들어있는 데이터 마지막에 "," 콤마가 있는 것을 알 수 있다.

마지막 콤마는 에러를 일으키기 때문에 없애줘야 하고

그 외에는...... PIVOT 이라는 낯선 키워드를 사용한거 말곤 충분히 이해할 수 있는 내용인듯 하다.


추후에는 CASE문을 사용하는 방법을 위와 같은 진화된 방법으로 실습해봐야겠다.

까먹지말자.


'MS-SQL' 카테고리의 다른 글

LOG 파일 용량 줄이기  (0) 2017.08.07
'sa' 계정으로 로그인 안됨  (0) 2017.01.16
ROW ↔ COLUMN (PIVOT)  (0) 2016.04.14
계층구조 쿼리 (CTE)  (0) 2015.10.20
다수의 NULL 컬럼에 순차번호 넣기  (0) 2015.07.01

ROW ↔ COLUMN (PIVOT)

MS-SQL2016. 4. 14. 23:41

요청이 있을때만 두드리니 실력이 늘리가 있나.. 에휴;

초보티를 벗지 못하는 내가 참 밉다.


마치기 직전에 회사에서 요청이 왔는데

피벗기능을 사용해야 하는 요청이었다.


회사의 정보를 여기서 공개 할 순 없고, 

비슷한 가상의 테이블을 만들어서 실습해보자.


까먹지 말자!!!


시나리오) 그동안 회사 직원들에게 지급했던 급여를 살펴보려 한다.


테이블명: PAYMENT_TBL

컬럼명: 사번, 급여지급월(연도-월), 금액


예시) 

 사번

지급월 

금액 

1111

2016-01

100

1112

2016-01

120

1113

2016-01

110

1114

2016-01

100

 1111

2015-12

90

 1111

2015-11

100

 1113

2015-12

120 

 1115

2015-12

200

 1115

2015-10

200

 1115

2015-09

200


세로로 나열돼 있는 데이터를 가로로 나열하기 위한 실습이므로, 데이터의 순서와 급여액수 등의 문제는 그냥 넘어간다. (대충 입력...)


원하는 모양) 

 사번

2016-01 

2015-12 

2015-11 

2015-10 

2015-09 

2015-08 

2015-07 

1111

100

90

100

0

0

0

0

1112

120

0

0

0

0

0

0

1113

110

120

0

0

0

0

0



방법1)

SUM() 과 CASE 문을 사용하여 원하는 모양을 만들어보자.


SELECT 

사번

, 이름

, SUM(CASE 지급월 WHEN '2015-11' THEN 금액 ELSE 0 END) AS [2015-11]

, SUM(CASE 지급월 WHEN '2015-12' THEN 금액 ELSE 0 END) AS [2015-12]

, SUM(CASE 지급월 WHEN '2016-01' THEN 금액 ELSE 0 END) AS [2016-01]

        ..... 바로 위 3줄 처럼 가로로 배열 시키고자 하는 컬럼을 같은 형식으로 만든다.

FROM

PAYMENT_TBL

GROUP BY

사번, 이름

ORDER BY

사번



위와 같이 하면 원하는 모양대로 결과가 나오긴 하지만, 보고 싶어 하는 컬럼을 위와 같이 하나하나 만들어줘야 한다.

예시에서는 몇개 되지 않는 데이터지만, 10년이 넘는 장수 기업에 직원이 300명 가량이라고 생각해보자.

현직원만 300명정도 이고, 퇴사자를 포함하면 더 많은 인원수 일것이다.

이미 퇴사한 사람의 급여 내역을 뭐하러 보냐 라고 하면 할 말은 없지만, 

각 데이터를 DB 에 저장하는 이유가 필요할때 보기 위해서 저장하는 것이니 상황을 완전 배제하진 말자.


설명)

고정이 될 컬럼을 지정하고(사번, 이름), 

그 다음 순서 부터는 컬럼명이 급여의 지급월이 되고, 컬럼의 내용은 금액이 표시되도록 한다.

지급월이 '2015-11' 이면 금액 더하기 한다라고 풀이 할 수 있겠다.

두번째 세번째도 마찬가지로 

지정된 지급월이 맞으면 해당 금액을 SUM() 한다. 

그럴리는 잘 없지만 한달에 두번 급여를 받았다면 두번의 급여가 합산되서 표시 되겠지?

SUM을 사용했으니 GROUP BY 로 묶어주자.


원리를 알면 그리 어렵지 않은데, 백지상태에서는 쉽사리 생각나지 않는다.

에휴....


다음은 MSSQL 에서 제공하는 PIVOT(피벗) 쿼리를 사용해보자.


방법2)

방법1) 과 비슷하지만 조금 다르다.


SELECT

사번

, 이름

  , [2015-11]

  , [2015-12]

  , [2016-01]

  ..... 바로 위 3줄 처럼 가로로 배열 시키고자 하는 컬럼을 같은 형식으로 만든다.

FROM

(

        SELECT

            사번

            , 이름

            , 금액

            , 지급월

        FROM

            PAYMENT_TBL

) A

PIVOT

    (

        SUM(금액)

        FOR 지급월 IN ([2015-11], [2015-12], [2016-01] ..... 위에 지정한 컬럼을 그대로 적어주자.)

    ) B



설명)

먼저 SELECT로 외형을 잡아주자(?)

사번과 이름 그 다음 각 지급월을 컬럼명으로 하고, 컬럼 내용은 금액이 들어가겠지?

제일 상단의 외형을 만드는 SELECT 에서 사용할 컬럼을 모두 여기에 적어줘야 한다. (어찌보면 당연하네..)

그리고 PIVOT 이라는 키워드를 사용해서 위에서 SELECT 한 테이블을 돌려버리는 듯 하다(?)

(이렇게 사용하니까 되긴 된다만, 완벽하게 이해가 가지 않는다. 좀 더 찾아봐야 할 듯 하다.)


아직 생소한 부분이 있다.

FOR 라는 키워드와 PIVOT,

FOR 뒤에 나오는 컬럼명과 IN 뒤에 나열되는 컬럼들 과의 관계 등등

좀 더 찾아봐야겠다.




참고: http://lab.cliel.com/entry/SQL-%ED%94%BC%EB%B2%97Pivot%EA%B3%BC-%EC%96%B8%ED%94%BC%EB%B2%97UnPivot

'MS-SQL' 카테고리의 다른 글

'sa' 계정으로 로그인 안됨  (0) 2017.01.16
ROW ↔ COLUMN (PIVOT) - 두번째  (0) 2016.04.21
계층구조 쿼리 (CTE)  (0) 2015.10.20
다수의 NULL 컬럼에 순차번호 넣기  (0) 2015.07.01
MS-SQL 메모리 점유율  (0) 2015.05.15

타 회사의 데이터를 받아서 회사 DB에 넣을 일이 있는데

언젠가 부터 CSV 파일을 여러개로 나눠서 보내준다.

메일의 용량 제한 때문이라고는 하지만 ...

개당 9메가가 조금 넘는 CSV 파일 10개가 넘게 오곤 한다.


엑셀 파일로 만들기 위해 파일을 하나씩 열어서 복붙하다보면

이게 뭐하는 짓인가 싶기도 하고

하는 중에 전화가 오거나 잠시 자리를 비우고 다시 오면 어디까지 했는지 햇갈릴 때도 있다.


찾아봤다. [CSV 파일 합치기]

왜 그동안 이런 소모적인 행동을 해야했는지 모르겠다.

검색하니 바로 튀어나온다.


옛 말 중에 머리가 나쁘면 손 발이 고생한다는 말이 딱 맞는 상황이다.


참고 : http://blog.naver.com/PostView.nhn?blogId=agney&logNo=60135842491


별도의 프로그램을 사용하는 것도 아니고

간단한 도스 명령으로 가능하다.


시작 > 실행 > CMD

CSV 파일이 있는 폴더로 이동 후

type *.csv > 합쳐질파일이름.csv


[한가지 참고사항]

파일이 여러개이고 순서대로 저장을 해야한다면 파일 이름에 번호를 붙여주자.

한자리 숫자에는 앞에 '0' 을 붙여야 원하는 순서대로 작업을 진행한다.

예)

전: 나뉜파일1.csv, 나뉜파일2.csv나뉜파일3.csv ... 나뉜파일10.csv

후: 나뉜파일01.csv, 나뉜파일02.csv, 나뉜파일03.csv, 나뉜파일04.csv ... 나뉜파일10.csv

'WINDOWS' 카테고리의 다른 글

엑셀 빈칸 채우기  (0) 2016.06.14

계층구조 쿼리 (CTE)

MS-SQL2015. 10. 20. 23:04


SELECT * FROM MENUS;


WITH TREE_MENUS AS

(

SELECT 

PARENT_CD

, CODE

, NAME

, URL

, CONVERT(VARCHAR(255), CODE) AS SORT

, CONVERT(NVARCHAR(255), NAME) AS COL

, URL

FROM

MENUS

WHERE

PARENT_CD = '0'


UNION ALL


SELECT

A.PARENT_CD

, A.CODE

, A.NAME

, A.URL

, CONVERT(VARCHAR(255), B.CODE + ' > ' + A.CODE) AS SORT

, CONVERT(NVARCHAR(255), B.NAME + ' > ' + A.NAME) AS COL

, A.URL

FROM

MENUS A

INNER JOIN

TREE_MENUS B

ON A.PARENT_CD =  B.CODE

)

SELECT * FROM TREE_MENUS ORDER BY CODE




그외 비슷하지만 다른 방법

http://kokun.tistory.com/entry/MSSQL-WITH-%EC%A0%88%EA%B3%BC-CTE-2

'MS-SQL' 카테고리의 다른 글

ROW ↔ COLUMN (PIVOT) - 두번째  (0) 2016.04.21
ROW ↔ COLUMN (PIVOT)  (0) 2016.04.14
다수의 NULL 컬럼에 순차번호 넣기  (0) 2015.07.01
MS-SQL 메모리 점유율  (0) 2015.05.15
뽑아보자. 데이터를.  (0) 2014.12.31

대충 예상은 했었지만

많디 많은 글을 따라 하니 대부분.. 문제가 해결 되지 않았다.

(사실 글은 많았지만 대부분 같은 말을 하고 있었음)


구글링에 구글링,

나는 왜 VS를 영문판으로 설치 해서 사서 고생을 하는가 라는 의미 없는 짜증도 부렸었고..


A potentially dangerous Request.Form value was detected from the client (content="<p>aaa</p>").

클라이언트 (content="<p>ss</p>")에서 잠재적 위험이 있는 Request.Form 값을 발견했습니다.


혼자서 그룹웨어에서 사용되고 있는 전자결재 부분만 구현해 보자! 라는 생각으로

다음에디터를 이식하기 시작했다. (참고 삼아 보고 있는 그룹웨어 데모판에서 다음에디터를 사용하고 있었음)

에디터의 소스는(js) 무척이나 복잡 했지만 작동을 시키는 과정은 그리 어렵지 않았다.


본문 내용을 대충 작성하고 ("aaa") 섬밋을 시키니 위와 같은 오류가 나온다. 휴.... 

사실 오류라기 보단 경고를 해야 하는 상황 같은데 이상하게 다음 진행을 막아버린다.


한글로 번역하니 잠재적 위험이 있는 리퀘스트.폶 어쩌고 저쩌고..


Web.config 파일을 수정하라는 글이 제일 많고

어트리뷰트를 추가해서 해당 컨트롤러만 밸리데이트를 폴스 시키는 등의 글들도 있었다.


나는

닷넷4.0

ASP.NET MVC4


Web.config 파일도 두개다!

프로젝트의 루트 위치에 하나, 뷰 폴더에 하나

여기서 부터 햇갈렸던거 같다.


하나를 건드려 보니 증상은 그대로

다시 원상태로 만들거라고 추가한 부분을 지우고

다른 부분을 건드려보고,

역시나 해결이 안되고.. 반복;

스스로 고민에 빠지고

블로거들은 다 거짓말쟁이라며 자책과 비난을 하다가


Web.config 파일을 수정하고,

컨트롤러에 어트리뷰트도 추가를 해야된다 라는 글을 발견

의심이 많아서 바로 실행해 보진 않고

초점을 이쪽으로 잡고 검색.


https://msdn.microsoft.com/ko-kr/library/dd460533(v=vs.118).aspx (Web.config 수정)


http://cluster1.cafe.daum.net/_c21_/bbs_search_read?grpid=1O5PK&fldid=LTFI&contentval=0000Nzzzzzzzzzzzzzzzzzzzzzzzzz&nenc=&fenc=&from=&q=%C1%A6%C0%DB%C0%DA%C6%F7%B7%B3&nil_profile=cafetop&nil_menu=sch_updw&listnum=

(Web.config, Attribute 추가)


https://social.msdn.microsoft.com/forums/ko-KR/a0547cf4-51ce-4474-a1db-0982e7fb7222/aspnet-4-requestvalidationmode (Web.config, Attribute 추가)


종합해본 결과

두가지 방법을 혼합해 보자 해서 실행.

거짓말 처럼 html 태그 까지 그대로 디비에 잘 들어가네.


휴.. 

에디터를 매일 아니면 주기적으로 땠다 붙였다 하는 것이 아니기 때문에

분명히 다음에 할때 기억이 안날 거 같아서

여기에 이렇게 내 식대로 남겨놓는다.


참, Web.config 파일 수정은 뷰폴더에 있는 파일 말고!

프로젝트 루트에 있는 Web.config 파일임을 명심.



// 2016.05.30 추가 및 수정

Web.config 파일에 위에 나온 부분을 추가 하지 않아도, 

어트리뷰트만 추가하면 컨트롤러의 해당 메서드에 한해서만 유효성 검사를 하지 않고 진행한다.

[ValidateInput(false)]

게시판 글쓰기와 같이 HTML 태그가 포함된 내용을 서버측으로 전송 시키는 메서드에 사용하자.


'WEB' 카테고리의 다른 글

WYSIWYG EDITOR  (0) 2017.12.12
ASP.NET Core minimal template  (0) 2017.11.09
셀 크기 조절  (0) 2017.06.07

http://ppomppu.co.kr/zboard/view.php?id=developer&no=5416

 

http://blog.naver.com/seedkjb/140033247070

 

http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=11&ID=110

 

 

위에서 부터 차례로 힌트를 얻어

링크 파도타기 중.

'OS' 카테고리의 다른 글

{LINUX} 리눅스를 설치해 보자.  (0) 2021.07.12
{LINUX} ubuntu setting  (0) 2018.02.19

..

'MS-SQL' 카테고리의 다른 글

ROW ↔ COLUMN (PIVOT) - 두번째  (0) 2016.04.21
ROW ↔ COLUMN (PIVOT)  (0) 2016.04.14
계층구조 쿼리 (CTE)  (0) 2015.10.20
MS-SQL 메모리 점유율  (0) 2015.05.15
뽑아보자. 데이터를.  (0) 2014.12.31

내년 결혼을 앞두고

뭔가 의미 있는 소비생활을 위해

첫번째 목표인 가계부를 쓰기 시작했다.


어플로...


사실 내가 직접 쓰는건 별로 없고

카드를 긁거나, 돈을 인출하거나 할때

전화기로 날아오는 문자나 어플의 알림을 통해

자동등록 된다.


어디에서 내돈이 새고 있는지 

가끔 열어봤을때 한눈에 확인되긴 하지만

뭔가 모르게 크게 달리지지 않은거 같다.


세상이 너무 편해졌어..

아직도 엄마가 노트에 가계부 적던 때가 생각나는데

이젠 휴대폰으로 그걸 적고

더 희한한건 쓰지 않아도 저절로 써지는 가계부라는거!! 허허 ~


이제 나도 나이가 든건지, 둔한건지

마냥 좋지만은 않은거 같기도 하고

아리송하다.

'Min:D Ctrl' 카테고리의 다른 글

급여: 면접후 결정  (0) 2021.08.04
왜 한국은 Yelp 같은 서비스가 없는걸까?  (0) 2021.07.18
몽골 화폐 50MNT(투그릭)  (0) 2014.10.25
오랜만에 맑음  (0) 2014.10.23
잠이 오지 않는다.  (0) 2014.10.20