분류 전체보기 850

⑦ 디자인 패턴(Design Pattern) - Factory

팩토리 디자인 패턴은 자바에서 참 많이 구경할수 있는 대표적인 패턴이다. 팩토리는 내부적으로 상품을 하나 찍어내어 전달해주는 역할을 한다. 보통, new를 통해 인스턴스를 생성하는 경우가 대부분이지만, 팩토리에서는 Factory 혹은 이를 구현한 concrete Factory에서 인스턴스를 넘겨주게 된다. 대표적인 팩토리 패턴을 따르는 애들은 사실 Calendar이다. getInstance()를 통해서 객체를 생성하게 되는데 (보통은 create()메서드로 관습화 되어있는데, 칼렌더에서의 getInstance()는 너무 자주쓰다보니 이게 대체로 싱글톤 패턴에서 쓰이는 메서드인것과 혼동이 올때가 있다.) 이는 계속 칼렌다를 만들어 찍어내서 보내준다. new를 쓰는 방법과 다른점은, 추상클래스나 인터페이스를..

mongo db 기본 UI 이용하기

몽고 DB 콘솔은 나름 직관적이지만, 데이터를 관리하는데에 있어서는 GUI툴이 필요하긴하다.일단 기본으로 제공되는 UI를 쓰려면 --rest 명령어로 몽고DB를 가동한다. mongod --rest 그리고 localhost:28017에 접속하면 다음과 같은 화면이 나오게 된다. 하지만 이거가지고는 별 할수있는게 없다. 다음의 express같은 툴은 굉장히 많다. 이용해보도록 한다.처음 8081 접속 아이디는 admin/pass 다.https://www.npmjs.com/package/mongo-expressnpm install mongo-expressnode applocalhost:8081

데이터베이스 2015.08.14

센차터치 네비게이션 뷰(navigationView) 툴바에 버튼달기

툴바에 버튼을 달고싶은데 첫번째 페이지는 뒤로가기 버튼이 없을때가 있다.이때는 수동으로 달아주어야 한다. config {} 이 안에 config:{navigationBar : {items: [{ xtype: 'button', id: 'btn_seller_exit', iconCls: 'arrow_left', handler : function() { //버튼을 눌렀을때 이벤트 담당 }}],}} 굉장히 괄호가 열렸다 닫혔다가 많다. 센차터치의 최악의 단점.

모바일/Hybrid 2015.08.14

⑧ 디자인 패턴(Design Pattern) - Observer

옵저버는 도대체 어떤놈인가? 옵저버는 어떤 객체를 살펴서 그 소식을 전해주는 일종의 정찰병의 느낌이다. 스타크래프트의 옵저버는 이상한 소리나 내면서 그냥 공중에 안들키게 할일없이 떠있는 놈에 불과하지만, 얘는 쪼금더 뭔가 적극적인 느낌이다. 마치 고양이 목에 방울을 다는것과 같은 효과이다. 여기서 방울은 옵저버이며, 고양이는 관찰이 되는 대상이다. 일단, Observer 인터페이스와 Cat 클래스는 다음과 같다. Cat클래스는 옵저버에 관련된 메서드가 있어야 하는데, 이는 마치 고양이에 방울을 달아주는 역할을 한다. Cat 에는 priavet ArrayList //고양이 방울 리스트 public addObserver(Observer observer) //방울을 다는 메서드 public removeObse..

센차터치에서 바로 원격 데이터 뽑아오기

센차터치는 쉬운것 같으면서도 뭔가를 구현하려 하면 항상 2시간동안 삽질을 해야 한다. 참조문서도 많이 없고 튜토리얼도 구려서 그렇다. 보통 아래와 같이 store를 선언하면 원격지에서 데이터를 불러오게끔 세팅이 되어있다.현재는 Express기반으로 한 node.js 에 mongoDB를 붙인 형태이기 때문에 조금 복잡하다. 다만 REST 하게 구현했기 때문에 어느정도 직관적이다. Ext.define('attack.store.ShopStore', { extend: 'Ext.data.Store', requires: [ 'attack.model.Shop' ], config: { autoLoad: true, model: 'attack.model.Shop', storeId: 'ShopStore', proxy: { ..

모바일/Hybrid 2015.08.10

ExecutorService 를 이용한 병렬처리 프로그램

깔깔깔 내일은 직장에서 즐겁게 지내겠다는 마음가짐으로 병렬처리를 해본다. 아무리 어두워도 웃고다니면 절로 기분이 좋아지는법~ 깔깔깔깔깔 일단 참고는 아래의 세 사이트에서 참고했다. http://samse.tistory.com/386 http://suein1209.tistory.com/333 http://javacan.tistory.com/124 별볼일 없으니 보지말고. 모든 놈 위에는 Executor가 있다. 엄밀히 말하면 화살표는 삼각형으로 그려야 하는데 그냥 귀찮다. Executor 를 끌러보면 단 하나밖에 없다. void execute(Runnable command); 그렇지만, 이를 상속받고 있는 놈인 ExecutorService는 꽤나 많은 거시기들을 가지고 있다. 이는 Executor의 라이프..

Annotation 을 이용한 메서드 골라내기

Annotation은 일반 개발을 하게되면 그다지 신경쓰지 않는 부분일수도 있지만, 어노테이션을 이용해 특정 메서드의 실행을 막는다든지 골라낸다든지 할수있기 때문에 유용하게 쓰일 수 있다. 이를 메타 프로그래밍(Meta) 라고 하는데, 스프링과같은 프레임워크는 이 어노테이션을 통해 구성되어있다. new file -> enum 일단 어노테이션에서 사용할 ENUM을 하나 만든다.public enum LangType { KOREAN, ENGLISH, SPANISH } new file -> annotation 그리고 어노테이션도 하나 만든다.@Retention(RetentionPolicy.RUNTIME) public @interface Language { LangType type(); } 이제 모든 준비는 끝났..

JSON Proxy로 센차로 데이터 가져올때 주의점

아 이거지같은 것때문에 장장 5시간을 쓰니까 너무 허무하다. 보통, 몽고디비와 연결되어있는 node.js에서 데이터를 가져오게 되는 구문에서 다음과 같이 설정하게 된다. app.get('/list', function(request, response, error){ Shop.find(function(error, shop) { response.setHeader('Content-Type', 'text/json'); response.send(request.query["callback"] + '({"records":' + JSON.stringify(shop) + '});'); }); });//end list() 또한 Model 과 Store는 다음과 같이 쓰게 되는데, Ext.define('attack.model..

모바일/Hybrid 2015.08.02

express 몽고DB와 연결시 store이름 및 collection이름 주의점

몽고DB는 테이블이 collections이다. 보통 네이밍을, 몽구스에서는 shop이라고 되어있어서var ShopSchema = mongoose.Schema({name:String, desc:String});var Shop = mongoose.model('shop',ShopSchema)위와 같이 생성하게 될텐데, 정작 mongoose.model() 메서드가 내부적으로 만들어내는것은 소문자로 변환시켜버리고 뒤에 s를 붙인 복수형태이다.위와같으면 shops로 만들어서 해당 collection 에서 찾아오려고 할것이다. 설정할때는 DB이름도 중요하다. 몽고DB에서 use DB 로 해당 데이터베이스를 사용하게 되는데, 이때mongoose.connect('mongodb://localhost/myapp');위와같은..

모바일/Hybrid 2015.08.01