옛글
프로그래밍 Design Pattern 이해하기 - 10 스테이트 패턴
스테이트 패턴 오늘은 실제로 사람들이 쓰는 기계를 자바로 만들어보려고 한다. gumball machine(우스꽝스러운 기기)를 생각보다 높은 기술력을 가지고 있다. gumball machine 이란 동전넣고 돌리면 껌이 나오는 기기다. 아래 다이어그램을 보자! 한글로 번역하면, 이것은 검볼머신 컨트롤로가 필요로 하는 다어그램이다. 우리는 미래에 어떤 행동이 추가 될것인지 미리 생각을 해야 한다. 그래서 최대한 유동적이고 유지가 쉽도록 구조를 만들어야 한다. 위를 잘보면 동전을 투입한 후, 손잡이를 돌린다. 돌리면, 알맹이가 있으면 판매를 하고 알맹이의 갯수를 확인한다. 알맹이의 갯수가 0이라면, 매진처리가 된다. 이 다이어그램은 스테이트 다이어그램으로 볼 수 있다. 각각의 동그라미가 State가 된다. ..
크롬(윈도우, 맥)에서 안드로이드 앱 실행시키기!
작년 크롬의 수장이였던 선다피차이가 안드로이드의 수장이 되면서(그리고 픽셀크롬북을 보면서) 안드로이드가 크롬OS로 통합되지 않을까란 이야기가 있었는데, 크롬북에서 안드로이드 앱을 손쉽게 돌릴 수 있게 되었습니다. 그리고 크롬북뿐만 아니라 크롬 익스텐션을 이용해 맥과 윈도우에서도 역시 동일하게 안드로이드 앱을 실행시킬 수 있게 되었습니다! 이런 걸 보면, 이전에 있었던 루머가 진실인지 여부는 알 수 없지만 오히려 안드로이드를 중심으로 흘러가는 느낌이네요 :) 정확한 구동 방법은 알 수 없지만, Archon Runtime을 통해 안드로이드 앱을 구동시키는 듯 합니다. 가상 머신에 안드로이드를 띄워서 앱을 동작시킬 수 있지만, 보다 원활하게 시스템 자원을 사용하면서 구동이 됩니다. APK를 Chromeos-a..
기계식 키보드의 끝판왕 "마제스터치2 이탈리안 레드 청축" 사용기
개발자를 업으로 삼으면서도 키보드에 전혀 관심이 없었다. 그러던 차에 덱 키보드 87 (불빛 들어오는 거에 반함) 을 보고 우연찮게 키보드에 관심을 가지게 되었다. 처음엔 덱키보드에서 시작해서 지인분께 해피해킹 프로페셔널2 를 처음으로 쳐보게 된다. 쭉 써오던 키보드들이 저렴한 (3만원 이하짜리) 기계식 키보드나 애플의 블루투스 키보드였기에 첫 해피해킹의 키감은 황홀하기 짝이 없었다. 그 황홀함에 물들어 한 일주일을 키보드에 대한 정보를 엄청 탐닉했다. 해피해킹 2 프로페셔널은 써본 결과 키감은 너무 좋으나, 화살표에 익숙해지기가 너무 힘들었다. 굳이 이렇게까지 익혀야 하나 라는 생각에 리얼포스쪽을 둘러보았다. 타건은 해보지 못했으나 해피해킹의 키감에 비해 치는 느낌이 적다는 평을 보고 조금 시야를 넓혔..
프로그래밍 Design Pattern 이해하기 - 9 이터레이터 패턴 & 컴포지트 패턴 <2>
저번 Iterator pattern에 이어 이번엔 컴포지트 패턴(Composite Pattern)이다. 맞다. 다른 패턴으로 문제를 푸는 방법에 대해 알아보려고 한다. Iterator도 문제법 중 하나이지만, 이제 이야기할 '컴포넌트 패턴'도 또다른 문제를 푸는 하나의 방법이다. 복합 패턴은 부분 - 전체 계층을 표현하기 위해 트리 구조로 개체를 구성 할 수 있습니다. 복합 클라이언트가 균일 개별 개체와 개체의 조성물을 처리 할 수 있습니다. The composite pattern allows you to compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individua..
프로그래밍 Design Pattern 이해하기 - 9 이터레이터 패턴 & 컴포지트 패턴 <1>
컬렉션을 잘 관리하자! - 이터레이터 패턴 & 컴포지트 패턴 컬렉션에는 굉장히 많은 객체들이 들어있다. 그리고 종류도 다양하다. List, Hashtable, ArrayList 등등...'루'와 '멜'은 저녁 요리사와 아침 팬케이크 요리사이다. 그들은, 둘이 메뉴를 합쳐 점심식사를 제공하기로 했다. 다음 MenuItem 클래스를 보자! 위 클래스는 MenuItem Contructor로 이름과 설명, 가격, 채소를 먹는지 여부에 대해 넣을 수 있으며, get함수를 통해 각각의 값을 가져올 수 있다. 위 클래스를 이용해서 아래와 같이 PancakeHouse 와 DinnerMenu 를 만들어보자. PancakeHouseMenu.java DinnerMenu.java 위 두 클래스를 보자. PancakeHouse..
[안드로이드앱추천] 여행갈 때 필수앱! "투어플랜비" - 1
오늘 추천드릴 안드로이드 앱은 바로 "투어플랜비! (TourPlanB)" 여행을 가기 전에 항상 설레는 마음에 다양한 앱과 인터넷 자료를 뒤지는데요~! 필수 앱으로 사용해보시길 바랍니다 :) 상단의 메뉴를 살펴보면, "내정보", "도시"," 지도", "트래블로그" 그리고 "예약"이 있습니다 :) 위 사진 처럼 내정보를 통해 로그인과 정보 수정이 가능합니다. 도시 탭을 누르면, 이렇게 투어플랜비에서 제공하는 도시들이 있습니다! 현재 지원되는 도시는, 군산, 서울도쿄 런던 로마 바르셀로나 방콕 산타바바라 상하이싱가포르 파리 홍콩도시에 대한 오프라인 지도와 다양한 맛집, 숙박 등의 정보가 제공됩니다 :) 군산 정보를 보니까 참 여행을 훌쩍 떠나고 싶은 마음이 드는 군요 :) 고화질의 사진과 별점을 통해 여행가..
프로그래밍 Design Pattern 이해하기 - 8 템플릿메소드패턴
템플릿 메소드 패턴 (Encapsulating Algorithms - 알고리즘의 캡슐화) 커피없이 못사는 사람들이 있다. 그러나 몇몇 사람들은 차 없이 못산다. 그것들의 공통점은 뭘까?바로 카페인이다! 티와 커피는 만들어지는 방법이 유사하다. 다음을 보자! 스타버즈 바리스타 트레이닝 메뉴얼이다. 커피를 만드는 방법- 물을 붓는다 - 커피를 뜨거운 물에 붓는다- 컵에 내린다- 설탕과 커피를 넣는다. 차를 만드는 방법- 물을 붓는다- 차를 뜨거운 물에 넣는다- 컵에 붓는다- 레몬을 첨가한다 Coffee 와 Tea Class들을 보자"coding baristar"를 해보자! 커피와 차를 만드는 코드들을 작성해본다. 이번엔 차를 만드는 클래스다 BeverageTest.java 를 보자 자 그런데 곰곰히 보니 두..
프로그래밍 Design Pattern 이해하기 - 7 어댑터패턴&파사드패턴
어댑터 패턴 & 퍼사드 패턴 만약 미국에서 만든 랩탑을 유럽에서 쓰려고 한다면, AC Power Adapter가 필요하다. 아답터가 어떤 역활을 하는지 우린 알고있다. 랩탑의 플러그와 유럽의 콘센트와 연결을 하기 위해 필요한 것이다. 코드 상에서 이 실제세계의 어댑터를 적용해보면, interface와 클라이언트단의 어떤 것과 연결을 해주는 것이다. 즉, 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환할 수 있다. OO Adapter(Object oriented adapter) 는 새로운 벤더클래스를 이미 구현되어 있는 곳에 붙일 때 사용된다. 어댑터는 클라이언트의 요청을 벤더클래스로 전달할 때 사용된다. 그렇게 되면, 기존에 있는 코드들은 수정을 하지 않아도 되며, 벤더클래..