블록체인은 무엇이길래, 그리고 어떤 이점이 있길래, 많은 사람들이 관심을 가지고 

또한 회자되는 것일까?


그리고 그 기본원리 등을 정리하기 위해 이 카테고리를 개설 한다.


물론 100% 확실한 정보만을 전달 하지는 못하겠지만, 그래도 비트코인이 블록체인 이다라는 인식은 깨졌으면 좋겠다.


WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

이 카테고리를 암호화폐를 리뷰하고, 각각 특성을 기록 하기 위하여 개설 하였다.


암화화폐의 종류가 다양해지고, 또 기술적으로 발전함에 따라 기술적인 관점에서 분석 하는 것 이 필요할 것 같다.


암호화폐가 급등할 것인지, 아니면 급락할 것인지는 이 카테고리에서 언급하지는 않을 것 이지만


상당히 비판적으로 접근 할 것이다.


WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

MAC OS 의 기본 MERGE 프로그램인 FileMerge는 심플한 인터페이스에 사용성이 뛰어난 어플입니다.

하지만 UTF-8 파일을 비교시 알렛창이 뜨는 불편함이 있습니다.


해결방법을 찾았더니 명령어를 만들어라 등등 있었지만 가장 편한 방법을 소개 합니다.



FileMerge 의 환경설정 에 Filter에 다음과 같이 등록 합니다.


xattr -w com.apple.TextEncoding 'UTF-8;134217984'  $(FILE)


참 쉽네요.



WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

망하는 사업, 망할만한 사업, 망한 서비스 , 망해가는 서비스..

모두 공통점은 거의 대부분 한가지 이다.


오만함.


대표적인 오만한 서비스인 싸이월드.

한때는 대한민국의 제 1 소셜서비스로 도토리라는 획기적인 싸이버머니 붐을 일으켰었다.

지금은? 근근히 숨만 깔딱대고, 해외로 진출하려던 시도는 모두 먹혔고, 간간이 사용자가 있긴 하지만 이탈하는 중이다.


싸이월드의 오만함은 

대한민국 1위라는 자부심, 선점효과에 의한 무한한 캐시카우 하지만.. 

"Open" 이라는 글자에 뜯기고 잘리고 이탈해 갔다.

나는 싸이월드의 필패가 "주인장만 보는 방명록"에 있다고 본다.

대다수 90%의 사용자가 보기엔 싸이월드는 소통공간이라기 보단 썩어문들어진 샘물 같은 느낌일 수 밖에 없으리라..

아무튼 지금은 망해가고 있는 서비스다..


두번째의 오만한 서비스 네이버 검색 서비스

네이버는 지식인으로 떳고, 검색으로 질거다.

그래서 여전히 서비스를 기획하고 만들지만 네이버만의 폐쇠성은 정말 지독하리만큼 오만하다.

집단지성을 이용한것은 영리한 것 이었으나 , 집단지성의 폐단 (정보의 정확성)은 사라지지 않았고, 

지금은 대한민국 제 1의 검색업체로써 비싼 검색료를 받고 있지만.

실 사용자들은 진실 혹은 정확한 검색에 더 목말라한다.

개발자가 네이버에서 1차로 검색하면 일단 개발자는 아닌거다.

이건 개발자 스스로 자신의 위치를 아느냐 모르느냐 문제이겠지만.

아무튼 네이버의 오만함은 사람들을 돈벌이 수단으로만 보는데 있다.


내가 왜 오만한 서비스를 탓하는 이유는 

우리나라 기획자 풀이 너무 낮아서 그런 것 이기도 하지만 기획을 너무 못한다.

될만한 서비스도 뿌리부터 잘라가 버리는 ( 이 서비스는 무조건 잘 될거야 라는 마인드에서 출발하는 ) 오만함에 진절머리가 나서 그렇다.


좀더 고객친화적인, 펀하고 편한 서비스를 기획하지 못하는 걸까?

갑자기 하나은행의 병맛같은 입력을 하다보니 

하나은행 고객이지만 참 싸이트 오만하게 만들었네 라는 말이 절로 나온다.

특수키 사용은 못하게 막는건 이해가 가나..

계좌번호까지 마우스 키로 입력하는건 너무 오버아닌가?


정말 실망한 사용자는 말을 하지 않는다. 

대안을 찾아 떠나버리지..


하나은행이 월급계좌만 아니면 사용도 하지 않는데.

이번년을 마지막으로 빠빠이 했으면 좋겠다..


오만한 서비스는 망하게 되어있어.. ㅉㅉ



WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

luhn 알고리즘

Programming 2012. 10. 17. 17:54

카드 숫자 체크하는 알고리즘

신용 카드상의 번호 검증을 위해 사용하는 알고리듬. 

1960년대에 개발된 개방형 공식이다. 원리는 


㉠카드 번호의 우측 숫자부터 매 2번째 숫자마다 2를 곱하고,

㉡위 ㉠에서 2를 곱하지 않은 숫자들과 ㉠에서 나온 숫자들을 합한다(㉠에서 나온 수가 2자리 수이면 2개의 숫자를 합한다). 

㉢위 ㉡에서 나온 수와 그 다음으로 큰 10단위 수와의 차이를 구한다(㉡에서 나온 수가 34이면 다음으로 큰 10단위 수 40과의 차이, 6을 구한다). 

㉢에서 나온 숫자가 카드의 점검 숫자와 일치해야 한다.



http://en.wikipedia.org/wiki/Luhn



Java로 간단하게 짜본 소스

	
public void luhnAlgorithm(){
		String cardNum = "123456789";
		int checkNum = 0;
		int sumCheck = 0;
		boolean times = false;
		for(int i =cardNum.length();i>0;i--){
			int charvalue = Integer.parseInt(cardNum.substring(i-1, i));
			if(times){
				charvalue =charvalue*2;
				if(charvalue > 10){
					charvalue = charvalue/10 + charvalue%10;
				}
			}
			times = !times;
			checkNum += charvalue;

		}
		if(checkNum%10 !=0){
			sumCheck = 10 - checkNum%10;
		}
		System.out.println("check : "+checkNum);
		System.out.println("sumcheck : "+sumCheck);
	}




WRITTEN BY
Peter Ryu
Crazy Programmer's World

,
 
1. test 폴더 생성
  프로젝트에서 오른쪽키를 눌러 New->Source Folder 를 차례대로 선택해 줍니다.
     

 

 

     
폴더명을 test (혹은 원하는 폴더명) 으로 만들어 줍니다. 
          
     
2. junit 4.0 Lib 추가
     프로젝트에 라이브러리를 추가하여야 합니다. 프로젝트에서 오른쪽키 클릭후 Properties 선택
     

    
 빌드패스의 라이브러리를 추가합니다.
Add Library 를 선택해 줍니다.

JUnit을 선택후 Next를 눌러 줍니다.

Junit 4를 선택해 주고 Finish 를 눌러줍니다.

라이브러리에 JUnit 4 가 있으면 추가 완료 되었습니다.

3.테스트 소스코드 생성
테스트로 Icafe 내에있는 JSonArrayConverter 를 테스트 하겠습니다.
JSonArrayConverter파일을 열고 상위 메뉴 file 에서 new -> JUnit Test Case 를 선택합니다.


Source folder 를 아래와 같이 전에 만든 cstore/test 를 선택해 주고 finish 해 줍니다.



테스트파일이 생성되면 템플릿으로 제공되는 내용만 있습니다.
-------------------------------------------------------------

 

package net.ion.icafe.util;

import static org.junit.Assert.*;

import org.junit.Test;

public class JSONArrayConveterTest {

     @Test
     public void test() {
          fail("Not yet implemented");
     }

}
---------------------------------------------------------------
다음과 같이 수정해 줍니다.
---------------------------------------------------------------
package net.ion.icafe.util;

import static org.junit.Assert.*;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
import org.junit.Test;

public class JSONArrayConveterTest {

        @Test
        public void jsonConverterTest() {
               Map[] tmap = new Map[]{ new HashMap<String,String>()};
               tmap[0].put("test", "test is good");
              JSONArrayConveter jac = new JSONArrayConveter(tmap);
              String json = jac.getToString();
              
               StringBuffer sb = new StringBuffer ();
              sb.append( "{\"list\":").append(json).append("}" );
              
              JSONObject jsObj = JSONObject. fromString(sb.toString());
              
               assertEquals("test is good", ((JSONObject) jsObj.getJSONArray("list" ).get(0)).getString("test"));
       }
}
---------------------------------------------------------------
내용은 JSonArrayConverter에 데이터를 넣고 결과가 맞는지 확인해 보는 것 입니다.
ctrl+F11 로 실행하시거나 파일에서 오른쪽키 Run As -> JUnit Test 를 선택해서 실행합니다.


실행결과 

녹색이 뜨면 테스트 성공, 빨간색은 테스트 실패입니다.

참 쉽죠?

자세한 내용은 김연아 사원의 TDD 개발 책 을 참고하시면 됩니다.
(왜 JUnit 를 사용하는가? 등등)


 


WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

Linux find 명령

Linux 2012. 2. 2. 14:29
Usage: find [PATH]... [EXPRESSION]

Search for files. The default PATH is the current directory,
default EXPRESSION is '-print'

EXPRESSION may consist of:
	-follow		Follow symlinks
	-xdev		Don't descend directories on other filesystems
	-maxdepth N	Descend at most N levels. -maxdepth 0 applies
			tests/actions to command line arguments only
	-mindepth N	Don't act on first N levels
	-name PATTERN	File name (w/o directory name) matches PATTERN
	-iname PATTERN	Case insensitive -name
	-path PATTERN	Path matches PATTERN
	-regex PATTERN	Path matches regex PATTERN
	-type X		File type is X (X is one of: f,d,l,b,c,...)
	-perm NNN	Permissions match any of (+NNN), all of (-NNN),
			or exactly NNN
	-mtime DAYS	Modified time is greater than (+N), less than (-N),
			or exactly N days
	-mmin MINS	Modified time is greater than (+N), less than (-N),
			or exactly N minutes
	-newer FILE	Modified time is more recent than FILE's
	-inum N		File has inode number N
	-user NAME	File is owned by user NAME (numeric user ID allowed)
	-group NAME	File belongs to group NAME (numeric group ID allowed)
	-depth		Process directory name after traversing it
	-size N[bck]	File size is N (c:bytes,k:kbytes,b:512 bytes(def.))
			+/-N: file size is bigger/smaller than N
	-links N	Number of links is greater than (+N), less than (-N),
			or exactly N
	-print		Print (default and assumed)
	-print0		Delimit output with null characters rather than
			newlines
	-exec CMD ARG ;	Run CMD with all instances of {} replaced by the
			matching files
	-prune		Stop traversing current subtree
	-delete		Delete files, turns on -depth option
	(EXPR)		Group an expression

※ 예제

# 파일의 개수만 표시 
find -type f |wc -l

# 내용으로 파일 검색 

XML 안에서 rainDrop 단어를 검색

find ./ -name '*.xml'  -type f |xargs grep 'rainDrop'




 







WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

유대인과 화교, 우리가 생각하는 돈을 가장 많이 가지고 있는 민족(혹은 집단)들 중 하나이다.

유대인과 화교가 돈에 집착하게 된 계기 자체가 신뢰 할 수 있는 대상이 없었기 때문이 아닐까 생각하게 된다.

무릇 인간이 가장 발전하게 되는 계기가 환경이 혼란스럽고 변화무쌍할 때 이라고 생각한다.

여러 과학 문명이 꽃피우게 된 계기도 전쟁으로 인한 불안감 때문에 발달하게 되었고, 서양의 경제가 발달하게 된 계기도

식민지 전쟁을 통한 자원확보 전쟁으로 인하여 발달하게 되었다고 생각한다. 흐르지 않았단 시기엔 과학도 경제도 문화도

발달의 속도가 더디게 흐른다, 하지만 유대인과 화교들은 태생적으로 한곳에 정착하는 것이 굉장히 어려웠었다.

둘 다 거처할 곳 없이 방랑하여 영원한 이방인의 느낌이지 않을까 생각한다.

그러기 때문에 발전해야 하고 또 발달해야만 낯선 곳에서 살아남게 된다.

그 상황에서 그네들이 살아 남을 수 있었던 방법 자체가 다음과 같은 공통적은 특성이 있었기 때문이라고 본다.

 

첫째로 그들은 가치에 대한 척도에 대해서 다른 민족과 구분된 동일한 시각이 있다.

다이아몬드를 예로 들자면 유대인들은 항상 보석을 가지고 다녔다. 즉 현금화 할 수 있는 자산에 특별한 집착을 하는 것 이다.

현금화를 하려면 거래가능성을 알아야 한다. 그래서 그네들은 보석감정에 특화된 모습을 보여준다.

각 보석에 등급을 부여 하고 등급의 가치를 매기고 '가치 매기는 법'으로 또 다른 가치를 창출하는 모습을 보고 있노라면

그 특별한 시스템에 나지막한 감탄을 하게 된다.

또한 예전부터 그들은 인적 네트워크 자체도 하나의 가치로 판단하는 법을 배우고 본능적으로 깨우치게 된다.

어렸을 때부터 그네들만의 특별한 교육을 하고 잘 발달되어있는 시스템에 자연스럽게 밀어 넣음으로써 다음 세대를 위한 기반을 만들어 주는 것이다.

가치를 정확하게 보는 시각을 본능에 새기는 작업을 하는 것이다.

 

둘째로 그들은 언제나 몸을 가볍게 하는 방법을 터득했다.

유대인의 경우 언제 어디서 살해당할 위협이 있고, 전쟁이 발생할 위험이 있기 때문에 위에서 보는 바와 같이 현금화 할 수 있는 보석들을 항상

보유하고 있었으며 실제로 전쟁이 발발하였을 때 그것들 만을 가지고 전쟁을 피했다.

마치 "누가 내 치즈를 옮겼을까?" 에 나오는 것처럼 변화에 대응할 준비를 항상 하는 것이다.

몸을 가볍게 하여 어떠한 변화에도 대응 할 수 있는 조건을 갖추는 것이다.

당장 누구라도 전쟁이 났을 때 몸을 피한다고 한다면 준비할 수 있을까?

아마도 유대인과 화교라면 돈이 될 수 있는 것들을 모아놓는 준비가 되어있기 때문에 바로 피할 수 있다고 답할 것이다.

하지만 일반적으론 허둥지둥 하다가 중요한 자신의 자산들도 준비하지 못하고 몸만 피하는데 급급 할 것이다.

이러한 차이로 인하여 변화에 반응하는 속도차이가 엄청나게 나는 것이다.

 

셋째로 그들은 그들만의 인맥 네트워크를 만든다.

유대인과 화교의 공통된 특성이 위에 언급된 바와 같이 어렸을 때부터 그들만의 네트워크를 만든다는 것에 있다.

유대인 다큐를 자세히 보면 알겠지만, 어렸을 때 어린아이들끼리의 모임을 지속적으로 하게 만든다.

세계 각국에 살고 있는 유대인들이 모여서 하나의 캠프를 조성하여 서로의 생각을 공유하고 인맥을 형성하며 성인이 된 후에도 서로간의

연대를 끈끈이 만들어 놓는다. 그리하여 필요한 시점에서 적당한 사람들이 필요할 때 그들의 네트워크를 활용하여 문제를 타계해 나간다.

이것들은 다른 민족들이 쉽게 넘볼 수 없는 중요한 자산이다. 오랜 시간에 걸쳐서 지속적으로 만들어진 그네들의 특별한 연대감은

자칫 잘못하면 시기심을 불러일으킬 수 있으나 그네들은 그네들만의 노력으로 이러한 네트워크를 만들어 시기 적절하게 활용할 줄 안다.

 

넷째로 그들은 문화를 지키고 타 문화를 배제하는 습성이 있다.

다른 문화와 융합하지 않는 다는 것은 다른 문화의 사람들이 봤을 때 탐탁지 않은 행동으로 보일 수 있다.

하지만 그들은 그들의 문화를 지키고 계승함으로써 위의 모든 것들에 대한 기반을 만들어 놓는다.

탈무드와 화교의 종교, 가족문화를 소중히 함으로써 연대감과 소속감을 고취시키고 자신의 위치를 자각하게 만든다.

 

내 생각을 옮기는데 그리 익숙하지 않아. 충분치 않을지라도 내가 생각하는 화교와 유대인의 성공학적인 측면에서 봤을 때 공통점은 위와 같다.

함부로 범접할 수 없는 자신만의 리그에 집단의 공동의식을 공유함으로써 더 단단해 지고 더 거대해지는 특성이 있다.

그들에게서 배워야 할 점들은 익히고 실행해야 그들의 리그보다 더 큰 위대함을 발 위 할 수 있을 것이다.


WRITTEN BY
Peter Ryu
Crazy Programmer's World

,

KT_Wlan - 1234567890
헬로우 디 - 534f4b4354
Tbroadnet - 123456789
맥도날드 - 16005252
세븐일레븐 - 2127393302
sk - a123456789
일반 Egg - Password

 

myLGnet, myLG070 : 123456789a , 987654321a ,1234567890 , myLGNetfe07
KT SSID , KT_WLAN : 1234567890 , 123456789a , 1234567890c    //    KT QOOK AP : 1234567890

SK : a123456789

SO070VOIP : 534f4b4354

Tbroadnet : a123456789
      에러 - 신호는 잡혀도 미연결시, MAC 이 원인임
      방법 - http://게이트웨이주소 치면, 관리자 암호 입력에 admin/admin or admin/password 입력.

스타벅스 : 매장별 전화번호 (영수증 참조)   

세븐일레븐 : 2127393302
맥도날드  : 16005252 (매장 배달 번호)
HellowD (헬로우디) : 534f4b4354 
Hellowireless : 534f4b4354  
tobis : 1234

KWI-BxxxxT(택시) : SHOW3382 , password

Egg 택시, 친절콜 와이브로(KWI-B2200T-XXXXX,KWI-2200) : SHOW3382 => 대문자 필수

일반 Egg : Password

디폴트 Egg 뒷번호는 제품 시리얼 넘버와 일치. 이건 디폴트라면 ssid 뒷자리와 동일.
iptime (192.168.0.1), anygate(192.168.10.1), zio : 비번 필요없음. 암호설정시, 주인 임의로 그냥 포기.
admin : password

LINKSYS 설정(192.168.1.1) : 사용자명은 없고, 암호만 admin

 

 SK텔레콤이 연내 전국 1만곳에 설치키로 한 와이파이(WiFi)에 무료로 접속할 수 있는 비밀번호가 공개.
SKT가 정식 오픈하기 이전까지는 비밀번호만 있으면 무료로 무선인터넷을 이용가능.
자사 이용자 및 타사 이용자 모두가 사용 가능
비밀번호는 sktelecom


WRITTEN BY
Peter Ryu
Crazy Programmer's World

,
인간의 상상력은 무한하다.

무한한 상상력을 확장시키고 또 흥미를 유발하는 새로운 놀이

새로운 즐거움을 추구하고 또 제공해줘라.

마음속에 담겨져있는 그 무엇을 위한 놀이들.



WRITTEN BY
Peter Ryu
Crazy Programmer's World

,