칼리타 돔 밀

구매동기

필자는 커피를 그다지 좋아하지 않았습니다. 마시고 난 후 끝맛이 뭔가 텁텁한 느낌이 나서 그렇습니다. 그런데 그런 생각이 바뀌는 계기가 있었습니다. 이른 아침에 갈은지 얼마 안된 원두를 내린 커피를 마시게 되었습니다. 커피맛을 잘 몰랐지만 ‘맛있다!’ 는 생각이 들었습니다. 싫어하던 텁텁한 느낌도 없었습니다. 계속 먹어보고 싶다는 생각이 들어 커피를 준비해 준 분께 부탁하여 원두를 사게 되었습니다. 지인분이 갈아서 줄수도 있는데 가장 좋은 것은 바로 갈아서 내려 마시는 것이라고 하셔서 원두만 받고 분쇄기를 알아보게 되었습니다.

제품선택

검색을 해보니 참 다양한 분쇄기가 있었습니다. 기계식부터 수동식까지… 그리고 가격대도 참 다양했습니다. 지인분의 조언을 받아 중간 정도의 가격범위에서 찾아보았습니다. 여러가지 제품이 있는데 그 중에 칼리타 제품이 눈에 들어왔습니다. 여러 형태가 있었는데 다른 제품의 후기에서 보니 오픈형 보다는 밀폐형이 좋을 것 같다는 생각이 들었습니다. 오픈형은 가는 도중 원두가 튀어나오는 경우가 있어서 불편하다는 후기가 있었습니다. 또 갈린 원두를 꺼내는 것도 나사식은 매우 불편하다는 후기도 있어서 서랍식으로 범위를 좁히게 되었습니다. 모든 조건에 부합하는 제품이 칼리타 돔 밀 이었습니다.

제품구성

칼리타 돔 밀 상자

칼리타 돔 밀 상자

상자가 크지는 않은데 생각보다 무게가 나갔습니다. 금속으로 된 부분때문에 그런것이라고 생각됩니다.

상자 개봉

상자 개봉

상자를 열어보니 손잡이 부분이 보입니다.

상자 개봉 - 손잡이와 위쪽 부분

상자 개봉 – 손잡이와 위쪽 부분

손잡이 부분을 열어보니 본체의 위쪽 부분이 보입니다.

칼리타 돔 밀 구성

칼리타 돔 밀 구성

위쪽에 원두를 넣을 수 있는 부분이 있고 아래 부분에 서랍식으로 꺼낼 수 있도록 되어 있습니다. 원두를 넣고 닫은 후 돌리면 원두가 분쇄됩니다.

칼리타 돔 밀 손잡이 연결한 모양

칼리타 돔 밀 손잡이 연결한 모양

손잡이를 연결하고 보니 꽤 고급스러운 느낌이 들었습니다.

원두를 간 상태

원두를 간 상태

분쇄 굵기 변경 없이 갈아보니 생각보다 곱게 갈렸습니다. 위쪽의 나사를 조정하면 곱게, 굵게 갈 수 있도록 되어 있습니다. 개인의 기호에 맞게 조절하여 사용하면 됩니다. 크기가 크지 않다보니 딱 한잔정도의 양만 분쇄할 수 있습니다. 계량컵으로 원두를 넣은 후 갈아보니 아래 서랍에 꽉차서 덜어내지 않고 더 갈기는 어려워 보였습니다. 1인용으로 사용하면 적당한데 2인용으로 사용하려면 좀 더 큰 것이 필요할 것 같습니다. 물론 같은 양을 두번 갈면 되므로 번거롭지 않다고 생각하면 사용하는데 문제는 없습니다.

분쇄된 원두가 서랍 안쪽으로 다 떨어지면 좋은데 사진처럼 옆쪽에도 남게 됩니다. 이 부분이 조금 아쉬웠습니다. 사용 후 남지 않게 잘 청소해 주어야 청결하게 사용할 수 있을 것 같았습니다.

원두를 가는 소소한 재미도 있고 그때 맡게 되는 냄새도 참 좋았습니다. 직접 원두를 갈아 커피를 즐기고 싶은분에게 추천하고 싶은 제품입니다.

C#을 이용한 네이버 오픈 API 연동

들어가는 말

요즈음은 포털 사이트에서 Open API를 제공하여 검색의 결과나 다른 정보를 가져와서 필요에 맞게 구성할 수 있게 되었습니다. Open API를 사용하여 그 결과를 가져오는 방법이 언어에 따라 차이가 있는데 C#을 이용한 네이버 오픈 API 연동 에 관하여 알아보도록 하겠습니다.

연동설정 및 대상

먼저 네이버에 애플리케이션을 등록하여야 하는데 이 과정은 아래의 링크를 참고 하시면 됩니다.

https://developers.naver.com/apps/#/register?defaultScope=search

연동에 필요한 기본적인 설정은 되어 있다고 가정하겠습니다. 서비스 API > 검색에서 여러 영역이 있는데 카페글을 대상으로 진행해 보겠습니다. 웹문서, 블로그 등도 비슷한 방식으로 연동하시면 됩니다.

연동방법

C#에서는 WebRequest 클래스를 이용하여 Open API와 연동합니다. 레퍼런스는 아래의 링크에서 확인하실 수 있습니다.

https://msdn.microsoft.com/ko-kr/library/system.net.webrequest(v=vs.110).aspx

연동 자체는 어렵지 않습니다. 다음과 같은 방식으로 결과를 가져옵니다. GetRequestResult 메소드는 네이버 오픈 API URL, 클라이언트 ID와 secret을 전달받아 그 결과를 string으로 반환합니다.

private string GetRequestResult(string openApiUrl, string clientId, string clientSecret)
{
	var requestResult = String.Empty;

	try
	{
		WebRequest request = null;

		request = WebRequest.Create(openApiUrl);

		request.Headers.Add("X-Naver-Client-Id", clientId);
		request.Headers.Add("X-Naver-Client-Secret", clientSecret);

		Stream dataStream = null;

		var response = request.GetResponse();
		dataStream = response.GetResponseStream();
		var reader = new StreamReader(dataStream);
		requestResult = reader.ReadToEnd();
		reader.Close();
		dataStream.Close();
		response.Close();
	}
	catch (Exception ex)
	{
		logger.Fatal("Exception occurred!");
	}

	return requestResult;
}

13, 14행에 클라이언트 ID와 secret를 지정해 주고 openApiUrl은

https://openapi.naver.com/v1/search/cafearticle.json?query=키워드&display=40

와 같은 형태로 지정합니다. 요청 변수 및 출력결과에 대한 설명은 아래의 링크에서 확인하실 수 있습니다.

https://developers.naver.com/docs/search/cafearticle/

결과 반환형식은 XML 또는 JSON으로 지정할 수 있습니다. 사용하기 편한 형태로 지정하여 사용하면 됩니다. 필자는 JSON 형태로 지정하여 결과값을 받았습니다. 그 값을 JSON Parser(Newtonsoft.Json)를 이용하여 parsing 후 값을 가져왔습니다. 예를 들면 다음과 같습니다.

responseJSON = GetRequestResult(openApiUrl, clientId, clientSecret);

var parseJSON = JObject.Parse(responseJSON);

var queryResultCount = Convert.ToInt32(parseJSON["display"]); //검색된 검색 결과의 개수
var totalResultCount = Convert.ToInt32(parseJSON["total"]); //검색 결과 문서의 총 개수

//개별 검색 결과
var cafeTitle = parseJSON["items"][0]["title"].ToString();
var cafeContent = parseJSON["items"][0]["description"].ToString();
var cafeName = parseJSON["items"][0]["cafename"].ToString();
var cafeUrl = parseJSON["items"][0]["cafeurl"].ToString();

5행은 parsing하여 변수에 대입하는 코드이고 나머지는 몇 가지 요소의 값을 가져오는 코드입니다. 위의 링크의 출력 결과 정보와 함께 보시면 됩니다. 링크의 설명에는 개별 검색 결과의 필드가 item 이라고 되어 있는데 실제 결과를 받아보니 items 로 되어 있었습니다. 원하는 값을 가져올 수 없는 경우 반환값의 필드명이 다른 것이 아닌지 확인할 필요가 있습니다.

이상으로 C#을 이용한 네이버 오픈 API 연동 방법에 대하여 알아보았습니다.