2016년 12월 25일 일요일

이집트발 마소 대란에 이어 베네수엘라 발 마소 대란.. 동참 실패.


요즘 마이크로 소프트사의 정품이 불티나게 팔리고 있다.

국내에서는 생각도 못하는 가격이다보니 원래 이렇게 많은 사람들이 정품을 쓰고 싶어 했구나 란 생각이들정도다.

이집트발 마이크로 소프트 windows 10 pro

windows8.1 pro 를 마소 업그레이드 끝나기전 FPP로 24만원에 구매 했던 나는 마음이 아팠다.

그 반가격에 구매 할 수 있다니.. 헐...

그래서 생각 안하고 있다가 Office2016이 뒤늦게 생각 났다.

어? pro 까지는 필요 없고 home & business 정도면 되겠다. 싶어

크롬의 시크릿창을 통해 링크 얻어서 구매 완료.

자 이제 설치 해볼까? 다운로드 받아야 되니까. 하면서 인증 시도를 했다.

해당 지역에서 설치 불가라는 메시지가 나온다.

몇번을 시도 해도 안된다. 포기란 업다는 생각을 포기 하게 만들었다.

집에가서 잘 자고 일어났더니 베네수엘라발 대란이 또 있었다.

여긴 말도 안되는 가격. window10pro 가 4천원대.

office 2016 pro 가 8천원대. 와.. 시도를 해봤으니 이미 막혔으니....

US 달라로 표시 된다.

베네발은 취소 환불 중이란다.

하나 둘 인증이 잘려 가고 있는듯하다.

근데 아직 이집트발은 계속 진행이 가능해 보인다.

물론 인증에서는 vpn이 필요 하다.

2016년 12월 20일 화요일

기어 S2 클래식.. 드디어 재고처리...


처음에 정말 갖고 싶었던 기어S2 클래식 3g 모델..

기어 S3 클래식 모델도 갖고 싶었는데.

나의 선택은 역시 기어 S3 프론티어 LTE 였다.

지금 기어S2 클래식 3g 모델 재고 처리중인가 보다.

기계는 공짜로 받고 2년 쓸 요금 11,000은 통신요금 자동이체 카드 만들어서 이체 할인 받고..

파손 보험 들어서 ( 1,800 원 ) 2년 잘쓰다 파손 되면 수리 하고.

머 2년 못쓰겠는가...

2년이 끝난 후에 블루투스로 써도 되고...

워치 페이스를 바꿀 수 있어서 좋고....

기어 S3 이 부담 스러우면 재고처리중인 S2를 갈아타도 좋을거 같아 보인다.


2016년 12월 14일 수요일

GearWatchDesigner 기워디 GWD 그리고 타이젠 카페.

구글을 잘 뒤져 보면 열심히 만든 Gear Watch Faces 를 무료로 올려 놓으신 분들이 있다.

http://www.watchfaces.be/
(다운 받으셔서 확장자 zip 를 gwd 로 바꾸면 됩니다.)
이쁜것도 있고 머 그냥 그런것도 있지만.

기어를 첨 접해 본 사람은 아 정말 좋은 분이라고 생각 들게 된다.

네이버의 타이젠 카페에도 훌룡한 분들이 많이 있다.

유료로 올려 놓고 코드 줘서 무료로 물론 카페 활성화가 목적이겠지만.

훌룡하신 분들이다.

재능 기부도 한다.

그 타이젠 카페에 해당 url 을 정보랍시고 올려 놨다가 계정 정지 먹었다.

난 훌룡한 사람이 아닌데 쯥. 등업이 되지 않은 상태라 다른 훌룡한 분들이 올려 놓은 기워디 파일을 못받는다.. 슬픈 현실..

하여 직접 만들어 봤다.

삼성이 보고 배우라고 만든 동영상도 있고 여튼 그거 보고 만들어 보았다.

http://developer.samsung.com/gear/design/watch-designer


GearWatchDesigner 다운로드 받고

동영상 보고

노가다구나.. 음.. 생각 하고.

1차 버전 완성.


와우.. 심플하다. 역시 노가다는 예술이다. 

근데 먼가 좀 맘에 안든다.

그래서 노가다 추가.



아직 무언가 맘에 들지는 않지만..

어차피 디자이너가 아니기 때문에 더 이쁘게는 불가능 할 지도..

하루 하루 쓰면서 필요 하다 싶은거 배치 하고..

터치 하면 해당 앱으로 이동하는 수준만 만들어 봤다.

무언가 더 기능을 넣으려면 타이젠 IDE 를 이용해 개발해야 되나보다..

이제 당분간 안만지겠지. ㅎㅎ



폰트는 미생 폰트 적용 - 미생 폰트 제공 해주신 분들 고마워요 ~ !!

2016년 12월 11일 일요일

갤럭시 기어 S3 프론티어 LTE? 클래식?

아 머가 하나 눈에 들어오면 멈추질 않는다.

갖고 싶다는 욕망과 갖고 나서 해결 해야 하는 문제들에 대한 고민.

이것이 결정장애가 아닌가 싶다.

클래식의 아름다움이냐. LTE의 편리함 이냐를 고민하다.

LTE  공시지원금 172500 원을 받고 카드 하나 만들어서 구매 하는 시나리오를 만들었다.

기어 S3 프론티어 LTE 구매 완료.

SKT LTE Watch 공유 요금제.

아직 폰케어 가입은 안했지만 좀 있다 할 예정이긴 하지만 공유 요금제 말고

데이터 함께쓰기로 가입 하는 방법도 있었던거 같다.

이 부분에 대한 자세한 가이드는 찾아봐야겠지만 반듯이 처음 가입 할 때만 설정 가능하단다.

역시 멀 하려면 제대로 알아봐야 하는데 빼먹은 부분이다.

공시지원금이 24개월 쓰라고 주는 요금이라 생각 하고 편하게 마음 먹기로 한다.

구매 후 몇일 사용 해본 결과.

LTE의 필요성을 거의 느끼지 못한다.

항상 휴대폰가 같이 하는 인생이었다 보니 휴대폰이 몸을 벗어 날 일이 없다.

운동을 열심히 해서 폰을 놓고 뛰어다니는 행동을 하지 않는 사람은 별로 필요 없어 보인다.

그냥. 클래식 이 훨씬 좋은듯 하다.

아. 캐스터네츠가 필요하면 상단 돌리는 부분 두두리면 소리 난다.

이걸 불량이라고 하긴 그렇고 원래 그 모냥인거 같다.

2016년 12월 8일 목요일

재미 있는 하나SK Dream 24 T 카드 15,000원 할인? 페이백?

기어 S3를 보면서 통신비 할인을 받을 수 있는 카드가 있나 확인 해보았다.

여러가지 카드들이 통신비 할인이 된단다.

장기 할부 카드 할인도 된단다.

와.. 대단한데? 라고 생각 하면서 검색을 해보니.

엠마켓에서 12월 31일 까지 하나SK카드로 구매를 하면 25% 청구 할인이 된단다.

근데 곁다리로 하나SK 1Q Shopping Dream 24 T 카드를 쓰면 24개월 무이자도 된단다.

라이트 할부 카테고리 인줄 알았는데 알고보니 장기 할부 카테고리 였다.

SKT 상품 24개월 무이자 지원 해주는거다.

그럼 무엇을 사든 24개월 무이자 지원 해준다는거..

그럼 실적 조건 충족 15,000원 할인은???? 라이트 할부가 아니란 말인가???

말인 즉

하나SK 1Q Shopping Dream 24 T 카드 실적 조건만 채워지면 15,000 원 다음달에 차감 결제 된다는 말이다.

자동이체를 하든 장기 할부를 하든 그런건 관계 없고.

그냥 조건만 맞으면 15,000원 할인 해준댄다.


삼성카드V2 노트7 사면서 50,000원 라이트 할부 36개월 했는데

이건 이자 나간다 5만원에 대한 이자. 그리고 실적 만족 하면 15,000원 할인 해준다.

반듯이 통신사 자동이체 걸어야 한다.

그리고 실적은 거의 가리는거 없다 상품권류도 가능 하다.

근데 이건 무조건 라이트 할부 들어가야 가능하다.


그러나 하나SK 1Q Shopping Dream 24 T 카드는 라이트 할부 개념이 아니다.

카드를 쓰면서 딱 한번 SKT 상품 24개월 무이자 해주는거다.

실적 충족 되면 라이트 할부를 하든 장기 할부를 하든 통신사 자동이체를 하든 말든..

관계 없이 15,000원 24개월도 아니고 24번 할인 해주는거다.

그럼 결과적으로 하나SK 1Q Shopping Dream 24 T 카드가 제일 좋은 편이다.

단. 실적 제외조건이 좀 된다. 그래서 보험만 자동이체 연결 할 예정이다.

하나SK 1Q Shopping Dream 24 T 카드 아주 재미있는 카드가 맞다.

SKT에서 타사기기를 이용한 삼성페이 티머니 사용기.

노트 7을 사용하던 중 환불을 하던가 교환을 해야 한다는 그 엄청난 사태에 빠졌다.

정가 주고 구매하기 싫은 갤럭시 7..

인터넷에 널리고 널린 중고 물품 갤럭시 7 중에 KT로 출시된 갤럭시 7 엣지를 가지고 왔다.

갤럭시 7 시리즈 이후에 나오는 단말기들은 모든 구성이 같다고 한다.

단지 뒷판에 로고에 들어 있는 모델명에 S나 K 나 L 이 다를 뿐.....

KT 모델에 오딘을 이용해서 SKT용 롬을 올린다.

잘 올라가고 사용에 아무런 이상이 없다.

우려 스럽던 HD Voice 도 잘 된다.

오랜만에 대중교통을 이용하다 보니 카드 들고 다니기 귀찮다.

대중교통 카드 할인 이고 모고 귀찮고 어차피 되는 NFC 이용해서 삼성페이 티머니를 사용하려고 하다가 막혔다.

인터넷에 검색해 이것 저것 해본 결과 안된다가 대부분의 답변이다.

SKT에 문의 하니 제조사별로 스펙이 다르기 때문에 안된다고 말한다. 후불 충전되는 먼가 쓰면 된단다.

헐 웃긴다.

유심이동하고 단말기 자급제 시행된지가 언젠데... 아직도 IMEI는 우리 통신사꺼라고.

타 단말기는 유심을 이용한 처리가 안되게 막아 놓는단 말인가.

여기 까지는 잡설이고.

실제 적용해서 지금 잘 사용하고 있는 단말기 사용법을 적어 보겠다.

우선 SKT 공기기를 준비 한다. - 갤럭시S3 3G SKT 모델.

현재 쓰고 있는 단말기에서 유심을 뺀다. - 갤럭시 S7 엣지 KT모델

1. S7에서 유심을 뺀다.(티머니는 설치 된 상태, WIFI 상태, 기기 끄지 않은 상태.)

2. S3 공기기에 유심을 이동한다. 이동 되었다는 메시지가 도착 한다.

3. S3에 티머니를 설치 한다.

4. 티머니에 후불제 교통카드를 등록 한다.

5. S7로 유심을 옮긴다. ( 여기가 제일 중요한데 기변 메시지가 오면 안된다. )

6. S7에 티머니를 실행한다. ( 잘된다.)

7. 삼성페이 티머니에 접속 해본다. 여기어 아마 암호 설정하는데서 키보드가 안나올 수 있다.

8. 기기를 재부팅 한다.( 기변메시지가 안온다.)

9. 삼성페이 티머니 등록을 완료 한다.

이 이후로 금융도 안되고 T전화도 안된다.  순간 멘붕에 빠진다.

그러나 ... 유심 뽑았다 넣었다 반복 하다 보면 기변 메시지가 온다.

이 이후로는 삼성페이 티머니를 이용해서 사용이 잘 된다.

이 번호가 쓰는 단말기가 SKT 꺼면 티머니 사용 가능이란 옵션이 따로 존재 하는 듯 하다.

그걸로 인해 티머니 인증을 받게 되면 유심에 무엇인가 기록이 되는듯 하다.

유심에 기록만 되면 그 이후로는 사용이 가능해지는듯 하다.

최초 인증 부분만 막혀 있다는 이야기 인데 SKT에 이 문제에 대해 문의를 해봐야.

해당 지식이 없는 상담원만 죽을 지경이 된다.

SKT 측 개발자가 문제인지 정책을 변경하지 않는 SKT가 문제인지 답이 안나온다.

소비자의 사용권을 제약하는 대기업의 횡포에 놀라움을 금치 못한다.

하긴 머. 그냥 개 돼지 쯤으로 알고 있을테니......

2016년 3월 14일 월요일

for map

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println("Key : " + entry.getKey() +  " Value : "+ entry.getValue() + " : " + entry.getValue().getClass().getName());
}

Tree Dirty Record filter

/*store dirty records 반환*/
dirtyRecords : function () {
    return Ext.Array.filter(Ext.Object.getValues(this.byIdMap),function(item) {return item.dirty === true;});
}

actioncolumn

{xtype: 'actioncolumn',width:30,sortable: false,
    items: [
            {iconCls : 'icon-delete' ,tooltip: 'Delete Plant',
            handler: function(grid, rowIndex, colIndex , item , e , record) {
            Ext.MessageBox.show(
            {title: '삭제?',msg: '정말로 삭제하시겠습니까?',buttons: Ext.MessageBox.YESNO,
            fn:  function (  button ) {
            if ( button == "yes") {
            grid.getStore().removeAt(rowIndex);
            };
            console.log( arguments );
            } ,
            animateTarget: grid ,
            icon: Ext.MessageBox.QUESTION
            }
            );
            }
            }
    ]
}

Grid Itemcontextmenu

itemcontextmenu: function(view, record, htmlItem, index, event) {
    var me = this,
        menu = me.menu;

    // prevent default right click behaviour
    event.stopEvent();

    if (!menu) {
        menu = me.menu = Ext.create('Ext.menu.Menu', {
            items: [
                { itemId: 'delete', text: 'delete',
                    icon: 'resources/css/images/tree/drop-yes.gif',
                    handler: function() {
                        me.getStore().remove(menu.contextRecord);

                    }
                }
            ]
        });
    }

//                            menu.contextRecord = record;

    menu.showAt(event.getXY());
},
itemclick: function ( grid, record, item, index, e, eOpts ) {
    console.log('argumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsargumentsarguments==>'+arguments);
    this.fireEvent('itemcontextmenu', grid, record,item, index, e, eOpts);
}

JavaScript HashMap

var HashMap = function() {
    this.map = new Array();
};

HashMap.prototype = {
    put: function(key, value) {
        this.map[key] = value;
    },
    get: function(key) {
        return this.map[key];
    },
    getAll: function() {
        return this.map;
    },
    clear: function() {
        this.map = new Array();
    },
    getKeys: function() {
        var keys = new Array();
        for(i in this.map) {
            keys.push(i);
        }
        return keys;
    },
    /* 구성된 key 값 존재여부 반환 */
    containsKey: function (key) {
        return key in this.map;
    },
    /* 구성된 value 값 존재여부 반환 */
    containsValue: function (value) {
        for (var prop in this.map) {
            if (this.map[prop] == value) {
                return true;
            }
        }
        return false;
    },
    /*  key에 해당하는 데이터 삭제 */
    remove: function (key) {
        delete this.map[key];
    },
    /* 배열로 value 반환 */
    values: function () {
        var arVal = new Array();
        for (var prop in this.map) {
            arVal.push(this.map[prop]);
        }
        return arVal;
    },
    /* Map에 구성된 개수 반환 */
    size: function () {
        var count = 0;
        for (var prop in this.map) {
            count++;
        }
        return count;
    }
};