사용자 삽입 이미지

제 5회 Daum DevDay


이번에 제주도에 열리는 제 5회 다음 DevDay신청을 하였다.

Jong10님께서 미투데이에 "Daum DevDay 8월 29일(금)~30일(토) -> 저 좀 끼워주실 팀 구합니다!! (초 진지함)"을 올려서 바로 끌렸습니다. 멋모르고 같이 하자고 일을 저질렀는데 이제 실력발휘를 해야할듯 ㄷㄷㄷ

  • 행사명: 제5회 Daum DevDay
  • 일시: 2008년 8월 29일(금)~30일(토)
  • 장소: 제주 Daum GMC

이번 행사는 1박 2일간의 행사로 기획했으며 첫째날은 DevDay를 진행하고 둘째날 제주 투어 프로그램으로 구성했습니다. 지난 행사들과 마찬가지로 직접 프로젝트를 제안하고 다양한 언어를 통해 실제로 현장에서 구현해보는 라이브 코딩 행사입니다. 단, 이번에는 야외에서 바베큐 파티와 함께 개발을 하는 차이가 있지요. ^^ 아울러 이번 행사는 2~4인으로 구성된 팀 단위로만 참가 신청을 받으며 대표 1인만 신청하시면 됩니다. 또한 전체 참가 인원의 20% 이상은 여성으로 선발하는 여성 쿼터제를 적용하고자 하오니 여성 개발자 여러분들의 많은 참여 바랍니다.

참가 신청은 8월 15일(금)까지 가능하며 이 후 추첨을 통해 40명을 선정, 8월 18일(월) 이 곳에 공지하도록 하겠습니다. 많은 신청 바랍니다.

행사 페이지: http://dna.daum.net/devday/

홈페이지에 위와 같이 공지가 되어 있더군요. 저는 제주도가 끌려서 그리고 고수님들과 프로그래밍을 하고 싶어서 참여를 하게 되었습니다.
이 행사에 신청해서 당첨되면 단돈 3만원에 다음에서 밥주고 재워주고 여행까지 시켜준다는 아름다는 혜택을 준다고 하더군요.
Ruby on Rails라는 것으로 매쉬업을 하기로 하고 남들을 어떻게 이길지에 대해서도 의논을 많이 했습니다.

제발 당첨되면 방학 끝무렵에 제주도에 배우면서 거의 공짜로 놀러갈 수 있을텐데, 제 능력이 될지가 의문시;;
Ruby on Rails로 거길 갈 수 있는 기회가 있었으면 좋겠어요 ;ㅁ;
사용자 삽입 이미지

프로그램 진행 순서입니다.

프로그램 진행순서를 보아도 하루는 코딩 하루는 노는 것으로 일정이 잡혀있는데 그 것을 단돈 3만원에 한다는 것이 정말 매력적이다.

'컴퓨터' 카테고리의 다른 글

Tmax Window 발표에 대한 단상  (2) 2009.07.09
노트북 배터리 리필함.  (4) 2009.02.04
정보검색에 대해서  (1) 2008.08.13
Ruby를 이용하여 Egloos에 글쓰기  (0) 2008.08.08
Ruby를 이용하여 Tistory에 글쓰기  (0) 2008.08.08
Buy me a coffeeBuy me a coffee
정보검색(Information Retrieval)에 흥미를 느낀 것은 응용데이터베이스 시간때였다.

응용데이터베이스 수업시간에 김경창 교수님께서 데이터베이스의 응용분야인 정보검색(Information Retrieval)에 대해 설명하시면서 Google의 예를 설명하셨습니다. Google의 성공 이면에는 정보검색(Information Retrieval)에서 나온 이론을 토대로 한 것이라고 한 것에 흥미가 느껴졌습니다.

Page Rank라는 이론이 정보검색이론에서 출발했다는 사실에 흥미가 느꼈죠. 교재에 있는 내용중에서 매우 관심을 끄는 문구가 있었으니

If the pages pointing to this page are good, then this is also a good page.
(만약 홈페이지가 가리키는 페이지가 좋으면 그 또한 좋은 페이지이다. 의역하면 좋은 사이트가 가리키는 사이트는 좋다.)

구글이 인터넷 검색엔진을 휩쓴 것이 바로 정보 검색이론을 바탕으로 한것입니다.

Google같은 검색엔진이 돌아가는 것을 이론적으로 볼려면 정보 검색을 공부하면 나옵니다.


데이터베이스 시스템(3/E) 상세보기
RAGHU RAMAKRISHANA 외 지음 | 한국맥그로힐 펴냄



Modern Information Retrieval(현대 정보 검색)



이번 마지막 4학년 2학기때에는 정보검색을 들을 예정인데, Google 검색엔진이나 Naver, Daum검색엔진의 작동원리나 웹 크롤러인 Googlebot, Naver robot, Daumoa robot이 작동되는 원리같은것을 배울 것 같습니다.

4학년 2학기 컴퓨터공학과 전공인 "정보검색"

마지막 학기에도 공부하는 열성을 가지면서, 12월달 이후로 내년 2월 전까지 Lucene이라는 오픈소스 프로젝트를 가지고 정보검색엔진을 만들어 볼까 생각도 합니다.^^


'컴퓨터' 카테고리의 다른 글

노트북 배터리 리필함.  (4) 2009.02.04
제 5회 다음 DevDay 신청을 했다.  (0) 2008.08.13
Ruby를 이용하여 Egloos에 글쓰기  (0) 2008.08.08
Ruby를 이용하여 Tistory에 글쓰기  (0) 2008.08.08
노트북이 고장났어요.  (2) 2008.08.01
Buy me a coffeeBuy me a coffee
Ruby를 이용하여 Egloos에 글 쓰고 있습니다.

MetaWeblog라는 API를 가지고 Tistory에 글을 쓴 후에 Egloos에 글을 쓰고 올리니깐 재미가 있군요

이번에 제 5회 다음 DevDay에 신청을 한다고 Ruby를 가지고 Test를 하고 있습니다.

여성쿼터제가 있다는데 여성분 모아서 갈 수 있을 것 같기도 하고 아이디어가 시급 ㅠㅠ

Tistory, Egloos를 활용한 API등을 생각을 하다 Flickr API를 사용할까 Daum API를 사용할까 고민중 @.@

2008.8.8

- Written by StudioEgo (성대현)
Buy me a coffeeBuy me a coffee
이번 제 5회 다음 DevDay에 RoR(ruby on Rails)를 이용하는 것으로 참여하려고 준비를 하고 있습니다.

오픈 API를 가지고 프로그래밍을 하려고 하니 Ruby에 대해서 공부를 하게 되면서 metaWeblog에 대해 공부를 하게 되었습니다.

metaWeblog란?
blogger의 단점을 보완하기 위해 Dave Winer 에 의해 2002년도에 만들어진 블로그를 다루기 위한 interface API입니다.
The MetaWeblog API is an application programming interface created by software developer Dave Winer that enables weblog entries to be written, edited, and deleted using web services.
- Wikipedia : metaWeblog

XML-RPC API들
  1. metaWeblog.newPost (blogid, username, password, struct, publish)  
  2. metaWeblog.editPost (postid, username, password, struct, publish)  
  3. metaWeblog.getPost (postid, username, password)  
  4. metaWeblog.newMediaObject (blogid, username, password, struct)  
  5. metaWeblog.getCategories (blogid, username, password)  
  6. metaWeblog.getRecentPosts (blogid, username, password, numberOfPosts) 
metaWeblog API를 가지고 블로그을 쓸수 있고 볼수 있고 수정을 할수 있다고 하는 SPEC입니다.
위의 API를 적용하여 프로그램을 만든 것이 Windows Live writer등이 있습니다.

위의 API를 가지고 Ruby로 tistory에 글을 올려 보게 하였습니다.
여기서는 BlogAPI가 필요합니다. BlogAPI에 대한 것은 [기타설정] BlogAPI 를 활용해봅시다를 참조하시면 됩니다.
사용자 삽입 이미지

관리자 메뉴에서 BlogAPI사용여부를 통해서 외부에서도 글을 쓸수있다.



티스토리 블로그 관리자 페이지에서 'BlogAPI 세팅주소' 와 ' BlogAPI Blog ID'를 얻을 수 있다.
티스토리에서 BlogAPI를 사용할 떄에 인자값으로 주는 username, password, blogid는 아래와 같이 사용하면 됩니다.
  1. username은 티스토리 관리자로 로그인할 때 사용하는 이메일 주소
  2. password는 티스토리 관리자로 로그인할 때 사용하는 비밀번호
  3. blogid는 ' BlogAPI Blog ID'
metaWeblog.newPost (blogid, username, password, struct, publish) 메소드를 이용해서 티스토리에 글을 올릴 수 있습니다.
newPost()에서 인자값으로 주는 것에 대한 설명입니다.
  1. blogid는 'BlogAPI Blog ID'
  2. username은 티스토리 관리자로 로그인할 때 사용하는 이메일 주소
  3. password는 티스토리 관리자로 로그인할 때 사용하는 비밀번호
  4. struct는 새로운 포스트를 작성할때의 구조체
  5. publish는 글을 작성할때 공개인지, 비공개인지를 확인해주는 인자값 (true, false)
metaWeblog.newPost()를 이용하여 ruby로 글을 올리는 테스트를 해보았습니다.

아래는 ruby code입니다.
require "xmlrpc/client"
api_address = '[자신의 BlogAPI 세팅 주소]'

server = XMLRPC::Client.new2(api_address)
post = {
"title" => "Ruby를 이용하여 Tistory에 글쓰기",
"categories"=> ["컴퓨터"],
"description" => "Ruby를 이용하여 Tistory에 글 쓰고 있습니다.<br/>
MetaWeblog라는 API를 가지고 Tistory에 글을 쓰고 올리니깐 재미가 있군요<br/>
이번에 제 5회 다음 DevDay에 신청을 한다고 Ruby를 가지고 Test를 하고 있습니다.<br/>
여성쿼터제가 있다는데 여성분 모아서 갈 수 있을 것 같기도 하고 아이디어가 시급 ㅠㅠ<br/>
Tistory를 활용한 API등을 생각을 하다 Flickr API를 사용할까 Daum API를 사용할까 고민중 @.@
<br/>2008.8.8<br/>
- Written by StudioEgo (성대현)",
}
server.call('metaWeblog.newPost','[BlogAPI ID]', '티스토리 로그인 메일주소','티스토리 로그인 비밀번호', post, true)

여기서 struct로 이용하는 post는 글을 올릴때 사용합니다.
title는 포스트에 넣을 제목
categories는 포스트에 넣을 카테고리, 본인이 만든 카테고리의 이름을 넣으면 됨. 없는 카테고리 쓰면 분류없음으로 나옵니다.
description 은 포스트에 넣을 본문입니다.

티스토리서 제공하는 metaWeblog API를 이용하여 Ruby 코드를 넣어보니 글 올라가는 것에 신기했지요.
그러나 비밀번호를 직접 넣어야 하는 것에 약간은 보안의 위험성이 있는 것 같습니다.
누가 패킷스니핑하여 티스토리 로그인 메일주소와 티스토리 로그인 비밀번호를 알아 내서 주인 몰래 글을 지우고등의 일이 일어날 가능성이 있지요.
이글루스에서는 비밀번호를 직접 넣지 않고 보안에 신경을 쓴 듯 API Key를 제공하여 암호 대신 사용하더군요.

Tistory관계자분게서는 암호를 직접 넣는 것 대신에 API Key를 사용하여 넣는 것이 보안에 좋을 듯한 생각을 해보았습니다.

metaWeblog로 사용하는 Windows Live Writer도 암호를 넣는 문제때문에 갑자기 쓰기가 껄끄러워지더군요.


Referrence
MetaWeblog API specification

ps. Ruby를 이용하여 블로그도 만들어보고 별에 별 기능들을 사용해보니, ruby에 대해서 전반적으로 모르고도 가독성이 좋아서 금방 배울 수 있어서 좋더군요. 제 5회 다음 DevDay에 붙었으면 하는 바람이 있습니다.
Buy me a coffeeBuy me a coffee
Ruby를 이용하여 Tistory에 글 쓰고 있습니다.
MetaWeblog라는 API를 가지고 Tistory에 글을 쓰고 올리니깐 재미가 있군요
이번에 제 5회 다음 DevDay에 신청을 한다고 Ruby를 가지고 Test를 하고 있습니다.
여성쿼터제가 있다는데 여성분 모아서 갈 수 있을 것 같기도 하고 아이디어가 시급 ㅠㅠ
Tistory를 활용한 API등을 생각을 하다 Flickr API를 사용할까 Daum API를 사용할까 고민중 @.@
2008.8.8
- Written by StudioEgo (성대현)

'컴퓨터' 카테고리의 다른 글

정보검색에 대해서  (1) 2008.08.13
Ruby를 이용하여 Egloos에 글쓰기  (0) 2008.08.08
노트북이 고장났어요.  (2) 2008.08.01
마이크로소프트 윈도우즈 7 스크린샷을 보고나서  (2) 2008.05.26
Ruby on rails 설치  (0) 2008.05.10
Buy me a coffeeBuy me a coffee

이번에 근 2년 6개월 이상 사용하던 Fujitsu C1320이 고장나서 용산에 있는 용산고객지원센터에 갔습니다.

약 6월 중순쯔음에 소프트웨어공학 과제를 한다고 계속 끄지도 않고 노트북을 쓰다가 그만 갑자기 스피커에서 지지직거리는 소름이 나와서 뭔가 이상해졌다 싶었습니다만, 결국 여름방학을 넘기지 못하고 수리를 맡기게 되었습니다.

그 이후에는 사운드카드 아니 메인보드에 내장된 사운드칩이 인식이 되었다 안되었다는 문제도 생겼고 그리고는 부팅조차도 버겁더군요. 부팅 자체가 안될때가 있었습니다.

 7월 말에 갑자기 USB인식도 안되고 USB메모리도 망가지고, 사운드카드는 인식 자체도 안되는 상황까지 와버렸습니다.  

결국, 용산터미널전자상가 2층에 있는  후지쯔 용산 고객지원센터에서 노트북 수리를 맡길려다가 구입한지 2년 6개월이 되었길래 수리 견적를 뽑아 보고 새로 노트북을 구입할지 말지를 결정을 하려고 했습니다.

문제의 FUJITSU C1320. 제 노트북입니다.

제가 사운드 칩과 USB가 인식 불가능이라고 말을 하였더니 담당자분게서 "메인보드의 문제네요"라는 말씀을 하시면서 잠시 TEST를 하였습니다.

가격이 얼마 나올지 덜덜덜 하면서 가격을 물어보았더니 의외로 담당자 분의 말씀은 간단하게 "메인보드의 문제라서 무상수리를 해주겠습니다".

제가 알기로는 보증기간이 구매일로부터 1년간이라서 무상이 안될줄 알았는데, 메인보드의 문제라고 무상으로 해주더군요 ㅎㅎ 돈 굳었다!

실제로 후지쯔 홈페이지에 있는 한국 후지쯔 노트북 PC 서비스 규정을 읽어보니 정말 메인보드의 무상보증기간은 3년이더군요.

제4조(무상 보증기간)

후지쯔는 소비자 피해 보상규정을 근거로 하여 무상보증 기간을 정합니다.

  1. 제품의 품질보증 기간은 1년으로 합니다. 단, 핵심부품에 해당되는 메인보드는 3년으로 하며, 메인보드에서 탈착이 가능한 CPU, WLAN 모듈, Modem, Memory 등의 보증기간은 1년으로 합니다.
  2. 무상보증 기간의 산정은 소비자의 구입일자를 기준으로 합니다.
  3. 소비자의 제품 구입일자의 확인은 보증서 또는 구입 영수증(세금 계산서 또는 카드 영수 증)에 의하여 확인합니다.(단, 보증서는 구매시 구매처에서 작성한 것에 한합니다)
  4. 회사와의 계약에 의해 판매되는 제품의 무상보증기간은 판매계약서에 설정한 계약내용 에 준합니다.

 노트북을 구입하면서 후지쯔 노트북을 쓰는 것을 잘 한 선택이라는 생각을 해보았습니다. 보증기간이 1년이라서 수리할때 돈이 장난 아니게 나올줄 알았더니 메인보드는 따로 3년으로 책정하여 소비자의 편의를 봐준 후지쯔의 A/S를 보니 다음에 노트북 살 때에 후지쯔 노트북을 사야겠습니다.

PS. 수리는 다음주 월요일쯤에야 다되어서 다음주 월요일에 찾아가라고 하니, 그 동안 노트북 없이 어떻게 컴퓨터를 사용해야할지 막막하다.

Buy me a coffeeBuy me a coffee

서울특별시청에서 내놓은 글자체인 서울한강체와 서울남산체를 Ubuntu에 설치를 해보았습니다.

이상하게도 무료 폰트를 내놓은 조선일보사(조선일보명조체)나 한겨레신문사(한겨레결체),  네이버(네이버사전체)에서는 Windows나 Mac사용자가 아닌 Linux사용자들에게 배려를 하여 .zip파일이나 .tgz파일로 압축한 폰트파일인 .ttf파일을 제공했습니다. 그런데 서울시측에서는 윈도우즈나 맥용 자동설치파일만 제공해서 Linux에 설정하는데 고생을 했습니다?^^

공개한 글꼴 다운 받는 곳 : http://design.seoul.go.kr/citizen/handwrite_list.php

서울시에서 폰트를 제공하는데 저작권 문제도 없으니 .ttf파일로 배포해도 문제 없을 것 같은데 자동설치용으로 만들어서 황당했습니다.

저는 서울시에서 제공하는 서울한강체와 서울남산체를 윈도우즈에 설치한 후에 복사하여 Linux 폰트 파일들 있는 곳에 넣어서 인식을 했습니다.

/usr/share/fonts/truetype 폴더에 서울시에서 제공한 서울한강체와 서울남산체 ttf파일을 복사해 넣고 나서 아래 명령어를 쳐서 인식했습니다.

studioego@studioego-laptop:/usr/share/fonts/truetype$ fc-cache -r

그리고 나서는 확인차 오픈오피스을 열고나서 서체 확인^^


UBUNTU 8.04, 오픈오피스에서 서체모양을 테스트했습니다.

설치를 해보니깐 예쁘게 설치 되었습니다. ㅎㅎ

Sun사에서 돈주고 사야하는 Starsuit에 포함된 썬바탕체와 조선일보사와 한겨레신문사에서 무료로 제공하는 서체와 서울시에서 제공한 서체를 비교해보았는데 나름대로의 서체의 맛이 있습니다.

이런 무료 서체들이 많은 회사나 단체에서 공개되어서 사용자들이 눈이 즐거운 서체들을 보았으면 합니다. :)


Buy me a coffeeBuy me a coffee
말 그대로입니다.
맥을 쓰는 티내는 것 처럼 테마를 뭔가 부족하게 느껴지는  Ubuntu Theme를 Mac처럼 꾸며보았습니다.
Mac OS

저는 맥북에서 Mac OS를 사용하고 있습니다. (퍽) 진실은 노트북에 깔려진 우분투에 Mac OS Theme를 설정하였습니다.


Ubuntu에서 Mac OS처럼 꾸미고 싶으면 아래의 링크를 보시면서 따라하시면 됩니다.
(번역하고 싶었다만, 할일도 많고 귀찮아서 패스 -_-;;)

위의 링크대로만 따라해도 금방 Mac OS Theme를 설정할 수 있습니다.
Buy me a coffeeBuy me a coffee

MVC Pattern, originally uploaded by Dario Santarelli.

MVC(Model, View, Controller)는 게임 개발, 윈도우즈 프로그래밍 개발,웹 어플리케이션 개발등 여러군데서 많이 사용한다.
MVC패턴을 모르고서는 프로그래밍을 할수 없을 정도로 많은 기업이나 오픈소스프로젝트에서 소스의 유지보수를 위해서, 구현의 효율성을 높이기 위해서 많이 쓴다.

MVC 패턴

MVC패턴은 Smalltalk에서 그래픽 인터페이스와 실제로 동작하는 코드를 분리하기 위해 개발되었다 지금은 다른 객체지향언어에서도 널리 사용되는 패턴 중 하나이다.

웹 어플리케이션에서 사용하는 MVC 패턴
MVC 패턴의 기본 개념은 사용자에게 보일 페이지(View)와 데이터 처리(Model), 그리고 이들 상호간의 흐름을 제어(Controller)하는 모듈을 분리하는 것이다. 이렇게 함으로 더 쉽게 웹 애플리케이션을 확장하고 유지, 보수를 할 수 있다.
(여기서는 JAVA Web 개발에 관한 MVC 패턴을 다룬다)

모델(Model)
모델(model)이란 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보여질지에 대해 신경쓰지 않아도 된다. 모델은 순수하게 public 함수로만 이루어진다. 몇몇의 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정하는 함수이다.

웹어플리케이션에서 모델(Model)은 데이터 영역으로 DAO(Data Access Object), DO(Data Object) 등으로 구분해 구현하기도 한다. 하이버네이트, 아이바티스와 같은 퍼시스턴스 프레임워크를 사용하기도 한다. EJB와 연동할 수 있으며 EJB 3.0의 POJO 기반의 퍼시스턴스 API도 있다.


뷰(View)
MVC에서 모델은 여러 개의 뷰(view)를가질 수 있다. 뷰는 모델에게 질의를 하여 모델로 부터 값을 가져와 사용자에게 보여준다.
웹어플리케이션에서 뷰(View)는 JSP를 기본으로 표현 언어, JSTL, 커스텀 태그 라이브러리 등을 함께 사용하며, 모듈화 된 사용자 인터페이스 모델인 JSF(Java Server Faces)도 이용할 수 있다.


컨트롤러(Controller)
MVC의 뷰는 여러 개의 컨트롤러(Controller)를 가지고 있다. 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다. 컨트롤러는 모델의 mutator 함수를 호출하여 상태를 바꾼다. 이 때 모델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여 준다.
웹어플리케이션에서 컨트롤러(Controller)는 MVC 패턴의 중심이 되는 부분으로, 직접 구현하거나 구현된 솔루션을 이용할 수 있다. 대표적으로 스트러츠 프레임워크(struts Framework)나 스프링 프레임워크(Spring Framework)가 있다.

'컴퓨터 > 프로그래밍' 카테고리의 다른 글

Android SDK 설치  (0) 2008.12.14
오랜만에 만져본 JAVA  (2) 2008.12.02
내가 보아야 할 Ruby 관련 책들  (2) 2008.05.14
Ruby를 맛봅시다.  (2) 2008.04.30
10.Raw Socket  (0) 2008.04.29
Buy me a coffeeBuy me a coffee

KLDP글들을 RSS로 구독하는데 KOHJINSHA(고진샤) K800XE에 Gentoo 사용기라는 글을 보았다.역시나 저의 대학교 선배님이신 cinsk[각주:1]님께서 쓴 글이였다.

고진샤의 K800XE라는 제품에 일부로 Gentoo Linux를 깔았다는 소리이다.

[UMPC/2G메모리 팩]K800XE (인텔A110(800MHz/터치스크린/1G메모리/80G하드]
863,040원 / 컴퓨터/주변기기 > 노트북/pda > umpc/타블렛pc
상세보기관련상품보기

글을 보고 나서는 정말 나도 해보고 싶은 생각이 들어버렸다. 잘 쓰던 노트북에 편하게 깔았던 Ubuntu를 쓰는 저로서는 삽질을 해야하는 Gentoo를 깔기가 껄끄럽긴 해도 예전 대학교 1학년때 리눅스 설치하면서의 삽질의 손맛에 이미 익숙해버린지라 한번 노트북에 Gentoo를 설치해볼까라는 생각을 해버렸습니다.

그런데 노트북에 Gentoo를 쓰기에는 집에서 쓰는 컴퓨터가 노트북밖에 없어서 도전하긴 힘들군요 --;;

umpc의 대명사인 고진샤 제품을 구입하셔서, Windows대신에 젠투를 설치하시다니, 정말 용자같다는 생각이 많이 들었습니다.

나도 저런 용자가 되어야 하는데 ㅎㅎ (전공이 컴퓨터공학인지라 밥벌이 하려면 용자가 되어야 할듯)

  1. 홍익대학교 컴퓨터공학과를 나오셨으며, 현재 삼성 전자에서 임베디드 소프트웨어 개발자로 일하고 있다. Emacs의 고수로 유명하신 분이다. KLDP에서 활동하신다. [본문으로]
Buy me a coffeeBuy me a coffee

+ Recent posts