모바일 서비스를 하게 되면 다양한 환경(제한된 램, 불안정한 네트워크, 저장공간부족등)에서 플레이가 되다 보니 크래시가 빈번하게 일어납니다. 예를 들어 모바일게임을 하는 유저가 자기 폰에서 크래시가 난다고 항의했을 시 개발사에서는 그 사람 계정을 복제하여 플레이한다고 해서 반드시 크래시가 나지 않습니다. 이런 문의를 받으면 참 난감합니다. 당당하게 크래시 안 나니깐 유저발 버그라고 할 수도 있고.....크래시 지레짐작하여 허송세월을 보내기도 합니다. 물론 크래시 덤프가 존재한다고 해서 크래시를 항상 완벽하게는 대응하지 못합니다. 하지만 더 빠르고 더 정밀한 대응을 할 수 있습니다.
그래서 크래시 덤프를 외부 서버로 전송을 해서 클라이언트 개발자가 분석을 할 수 있게 만들어야 합니다. 이 것이 크래시 레포팅 시스템입니다.
왜 외부서버이냐?
개발자만큼 플랫폼을 잘 알고 거기다가 매우 친절한 유저가 많으면 이런거 안 만들어도 됩니다. 그 사람들이 친절하니깐 크래시덤프를 메일로 보내줄수도 있으니..
일반적인 사용자가 크래시가 나서 보고서를 제출하겠냐고 하는 문구에 확인을 누르는 사람은 1000명 중에 한명꼴이라는 통계를 본적이 있습니다. 그래서 크래시가 나면 크래시 레포팅시스템에 의해서 개발사가 준비해놓은 서버로 전송해야 합니다.
이걸 다 개발해야 되는건 아닙니다. 이런 서비스를 무료로 제공하는 곳도 있고 유료도 있습니다.
CPU는피연산자를저장하는위치에따라레지스터기반 프로세서(register-based processor)와 스택 기반 프로세서(stack-based processor)로
나눌 수 있다. 레지스터 기반 프로세서는 레지스터를 사용하여 연산하는 방식이고 스택 기반 프로세서는 피 연산자를 스택에 저장하고 나서 연산을
수행하면 피 연산자를 꺼내어 연산 후에 그 결과를 다시 스택에 넣는 방식이다.
임베디드 시스템에서 자주 사용되는 스택 기반 프로세서는 함수
호출 시 인자를 스택에 넣어줘야 하는 레지스터 기반 프로세서와 달리 이미 스택에 인자가 저장되어 있기 때문에 추가적인 작업이 필요하지 않다.
또한 컨텍스트 스위치(context switch)가 일어날 경우 레지스터 기반 프로세서는 모든 레지스터의 상태를 저장해 줘야 하지만, 스택
기반 프로세서는 각 프로세스마다 스택을 할당하기 때문에 단지 스택만 변경시킴으로써 간단히 해결할 수 있다.
반면 레지스터 기반 프로세서의 가장 큰 장점은 속도가 매우 빠르다는 것이다. 레지스터가 CPU 내에 존재하기 때문에
레지스터의 참조가 무척 빠른 반면 스택 기반 프로세서는 대부분의 스택을 메모리에 두기 때문에 값을 읽고 쓰기 위해선 메모리를 액세스해야 한다.
또한 레지스터 기반 프로세서는 인스트럭션이 가독성이 있으므로 디버깅에 유리하다.
레지스터 기반 프로세서의 대표적인 예는 인텔 x86이 있고,
스택 기반 프로세서는 RTX32P가 있다.
뮤텍스 :
뮤텍스는 화장실에 들어가기 위한 열쇠로 비유할 수 있습니다. 즉 화장실에 들어갈 수 있는 열쇠를 한 사람이 갖고 있다면, 한 번에 열쇠를 갖고
있는 그 한 사람만이 들어갈 수 있습니다. 화장실에 열쇠를 갖고 있는 사람이 들어가 볼일을 다 본 후에는 줄을 서서 기다리고
있는(대기열-큐) 다음 사람에게 열쇠를 주게 됩니다.
공식적인 정의(심비안 개발자 라이브러리에서
발췌) : 뮤텍스는 한 번에 하나의 쓰레드만이 실행되도록 하는 재 입장할 수 있는 코드 섹션에 직렬화된 접근이 가능하게 할 때
사용됩니다. 뮤텍스 객체는 제어되는 섹션에 하나의 쓰레드만을 허용하기 때문에 해당 섹션에 접근하려는 다른 쓰레드들을 강제적으로 막음으로써 첫
번째 쓰레드가 해당 섹션을 빠져나올 때까지 기다리도록 합니다.
뮤텍스는 값이 1인 세마포어입니다.
세마포어: 세마포어는 빈 화장실 열쇠의
갯수라고 보면 됩니다. 즉, 네 개의 화장실에 자물쇠와 열쇠가 있다고 한다면 세마포어는 열쇠의 갯수를 계산하고 시작할 때 4의 값을 갖습니다.
이 때는 이용할 수 있는 화장실 수가 동등하게 됩니다. 이제 화장실에 사람이 들어갈 때마다 숫자는 줄어들게 됩니다. 4개의 화장실에 사람들이
모두 들어가게 되면 남은 열쇠가 없게 되기 때문에 세마포어 카운트가 0이 됩니다. 이제 다시 한 사람이 화장실에서 볼일을 다 보고 나온다면
세마포어의 카운트는 1이 증가됩니다. 따라서 열쇠 하나가 사용가능하기 때문에 줄을 서서 기다리고 있는 다음 사람이 화장실에 입장할 수 있게
됩니다.
공식적인 정의(심비안 개발자 라이브러리에서
발췌): 세마포어는 공유 리소스에 접근할 수 있는 최대 허용치만큼 동시에 사용자 접근을 할 수 있게 합니다. 쓰레드들은 리소스 접근을 요청할
수 있고 세마포어에서는 카운트가 하나씩 줄어들게 되며 리소스 사용을 마쳤다는 신호를 보내면 세마포어 카운트가 하나 늘어나게 됩니다.
// If batchnode, then texture id should be the same
CCASSERT(! _batchNode || texture->getName() == _batchNode->getTexture()->getName(), "CCSprite: Batched sprites should use the same texture as the batchnode");
// accept texture==nil as argument
CCASSERT( !texture || dynamic_cast(texture), "setTexture expects a Texture2D. Invalid argument");
DROP TABLE IF EXISTS `sosi`.`sosi`;
CREATE TABLE `sosi`.`sosi` (
`idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sosiname` varchar(45) NOT NULL,
`height` int(10) unsigned NOT NULL,
`blood` varchar(45) NOT NULL,
PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `sosi` (`idx`,`sosiname`,`height`,`blood`) VALUES
(1,'윤아',166,'B'),
(2,'수영',170,'O'),
(3,'효연',160,'AB'),
(4,'유리',167,'AB'),
(5,'태연',162,'O'),
(6,'제시카',163,'B'),
(7,'티파니',162,'O'),
(8,'써니',158,'B'),
(9,'서현',168,'A');
②. Flex Project 'ZendAmfTest'를 만듭니다. 머드초보님은 Application server type을 php으로 하셨는데 저는 서버가 외부에 있어서 None/Other로 하였습니다. 로컬이라면 php를 선택하신 다음에 아파치나 iis가 돌아가는 폴더를 지정하면 됩니다. 지정하게 되면 SWF가 서버로 바로 위치하게 되므로 테스트하기 편합니다.
③. 그런 다음 system>application>libraries에 sosimember.php라는 파일을 만듭니다. CI특성상 파일명은 소문자로 만드셔야합니다.
④. 다음은 DB에서 데이터를 가져오고 반환하는 모델을 만듭니다. system>application>models에 sosimodel.php를 생성하시고 아래 코드입력합니다.
RIA에서 Data Loading은 중요한 요소입니다. 대부분이 서버와 데이터연동을 통하기 때문입니다.
어떤 Data Format이 좋을까 고민할 수도 있습니다. HTTP, SOAP, XML, Dojo, JSON, AMF3등 중에서도 자주 쓰이는 방식은 HTTP, XML, JSON, AMF3등이 있습니다. 지금 알아볼려고 하는 벤치마크도 이 4개의 데이터포멧을 가지고 진행될 예정입니다.
브라우저별로 렌더링엔진, 스크립트엔진이 틀리기때문에 벤치마크에 대한 결과도 틀립니다.
그래서 제가 자주 사용하는 브라우저 3개만 벤치마크해보았습니다.
-벤치마크를 마치며
벤치마크프로그램 시간내서 만들 생각을 하고 있었는데 마침 Server Exec Time, Transfer Time, ParseTime, RenderTime까지 나오는 친절한 벤치마크를 발견했습니다. 위 그림을 보시면 한눈에 브라우저 별로 데이터처리속도가 틀린것을 알 수 있습니다. 특히 IE8은 타브라우저보다 훨씬 느립니다.ㅎㄷㄷ.
데이터 처리건수
500건
5,000건
데이터 처리속도
XML>AMF3>JSON>HTML
AMF3>>XML>JSON>HTML
데이터 크기(작은순)
AMF3>JSON>XML>HTML
AMF3>>>JSON>XML>HTML
IE8에서는 데이터크기가 커지니 XML ParseTime이 매우 늘어나 느려지는 것을 확인할 수 있습니다. 데이터 처리건수가 커질 수록 AMF3는 XML보다 월등한 처리속도를 보여줍니다(XML의 ParseTime은 처리건수에 비례). 또한 AMF3 데이터크기는 JSON의 1/10정도밖에 되질 않는 것도 확인이 되었습니다. 이러한 벤치마크결과들이 제 고민을 해결해주었습니다.
-한마디로 말해서 서버와 SWF(플래시)의 통신이 AMF라고 불리는 Binary형식의 프로토콜을 사용하여 이루어지며 서버상에 있는 원격지 객체를 호출합니다.
-가장 작은 패킷 크기에 데이터 통신에 필요한 거의 모든 옵션을 넣을 수 있는 바이너리 메세징 프로토콜
-HTTP(80포트), HTTPS(443)를 통해 통신하기 때문에 방화벽을 무시할 수 있습니다.
-AMF는 플래시 플레이어가 인식 가능한 기본 메세징 포맷이므로 클라이언트에서 데이터 직렬화와 역직렬화가 자동으로 처리되며 속도도 빠릅니다.
-게이트웨이는 HTTP(80포트), HTTPS(443)를 통해 AMF패킷 송수신, AMF직렬화/역직렬화, 적절한 서비스에 요청위임 등을 수행할 수 있는 게이트웨이 라이브러리가 필요합니다. 이러한 게이트웨이 라이브러리 여러 종류 중에 우리는 여기서 ZendAMF라는 것을 사용할 것입니다.
QR코드(QR code)는 흑백 격자 무늬 패턴으로 정보를 나타내는 매트릭스 형식의 이차원 바코드이다. QR코드는 주로 일본에서 많이 사용되며 명칭은 덴소 웨이브의 등록상표 Quick Response에서 유래하였다. 종래에 많이 쓰이던 바코드의 용량 제한을 극복하고 그 형식과 내용을 확장한 2차원의 바코드로 종횡의 정보를 가져서 숫자외에 문자의 데이터를 저장할 수 있다. 보통 디지털 카메라나 전용 스캐너로 읽어들여 활용한다.
이렇듯 바코드보다 훨씬 많은 정보를 저장할 수 있다고 합니다. 저도 알고는 있었지만 갤럭시S를 통해 사용하게 되었습니다.
스마트폰이 대중화되면서 QR코드의 대중성도 차츰 형성이 되고 있습니다.
QR코드의 장점이라고 하면 URL를 입력하고 텍스트로 검색할 필요 없이 QR코드 스캐너어플(이건 받으셔야합니다)로 그냥 찍기만 하면 알아서 프로그램(해당프로그램 선택도 QR코드에 포함됨)이 실행됩니다. 인식률도 매우 빠릅니다.
이 코드는 일반 사용자들이 생성할 수도 있습니다. 자기가 원하는 정보나 URL를 QR코드로 생성해서 배포할 수 있다는 것입니다.
위에 QR코드는 저의 블로그주소로 만든 것입니다. QR스캐너로 스캔하시면 스마트폰에서 제 블로그가 뜨는 것을 확인할 수 있습니다.
위 그림은 왼쪽부터 IE, 파이어폭스, 크롬, 오페라, 사파리를 재미있게 표현한 그림입니다. 서로 사이 좋게 손을 잡고 있는데요. 그럴일은 없겠지만 5개의 브라우저 제작업체들이 힘을 모아서 완벽한 표준을 만들고 지킨다면 웹프로그래머들이 고생하는 일은 많이 줄어들텐데 말이죠. 그런 의미에서 이러한 재미있는 그림으로 표현한거 같습니다.
트라이던트(Trident)
트라이던트(MS HTML이라고도 합니다)는 마이크로소프트 윈도우즈에 탑재되는 브라우저인 인터넷 익스플로러의 코어(속칭 IE 코어)입니다. 이 엔진은 1997년에 인터넷 익스플로러 4부터 처음으로 사용되었으며, 이후에 지속적으로 신기술이 추가된어 인터넷 익스플로러와 같이 업데이트됐습니다. 트라이던트는 실제로는 오픈 소스 코어이며, 트라이던트 엔진은 모듈 방식의 소프트웨어이기 때문에 다른 소프트웨어 개발자들이 쉽게 웹 브라우저 기능을 자신이 만든 어플리케이션이 추가할 수 있습니다. 그 포트 코어 설계가 매우 안정적이라서 IE 코어를 사용하지만 인터넷 익스플로러는 아닌 브라우저(예를 들면 Maxthon, GreenBrowesr, 중국의 메신저 번들 브라우저 등)가 많지만, 트라이던트는 윈도우즈 플랫홈만 지원합니다.
인터넷 익스플로러의 시장 독점은 트라이던트 코어가 오랜 시간동안 독점적인 위치를 차지할 수 있게 해주었습니다. 이것 때문에 마이크로소프트는 상당히 긴 시간 동안 트라이던트 코어의 업데이트를 하지 않았고, 그 결과 트라이던트 코어는 W3C 표준과 거의 맞지 않게 되었을 뿐만 아니라, 트라이던트 코어 내부의 대량의 버그와 보안 문제가 해결되지 않고 누적되게 되었습니다. 현재 마이크로소프트는 트라이던트의 배포 엔진에큰 변화를 주어, 새로운 기술 외에도 웹 페이지 표준의 지원을 추가하기 시작했습니다. (그래서 인터넷 익스플로러 6이 오랜 시간 사용되었던 것에 비해, 7, 8, 9로 이어지는 변화 속도는 매우 빠르지요). 하지만 이런 변화는 다른 엔진-게코, 웹코어, KHTML, 프레스토 등에 비해 많이 떨어진 편입니다.
게코(Gecko)
게코는 오픈 소스 코드이며, C++로 짜여진 웹 페이지 렌더링 엔진입니다. 현재 모질라에서 제작하는 웹 브라우저(파이어폭스)와, 넷스케이프 6 이후 버전에서 사용하고 있습니다. 이 소프트웨어의 원 코드는 넷스케이프에서 개발하였으며, 지금은 모질라 기금이 유지-보수를 담당하고 있습니다. 게코의 특징은 코드가 완전히 공개되어 있다는 것인데, 따라서 개발 수준이 매우 높고 전 세계의 프로그래머들이 이 코드를 사용하여 기능을 추가할 수 있습니다. 오픈 소스이기 때문에 게코 엔진을 사용하는 브라우저도 매우 많습니다. 이것은 게코 코어가 수년 동안 시장 점유율을 유지해 왔던 원인이기도 합니다.
게코 엔진은 풍부한 어플리케이션 인터페이스와 커뮤니케이션 어플리케이션을 제공하고 있습니다. 이를 사용하여 인터넷 브라우저, HTML 에디터, 클라이언트/호스트 등을 만들 수 있습니다. 비록 처음에는 넷스케이프 네비게이터와 모질라 파이어폭스 정도였지만, 현재에는 많은 프로그램들이 이 엔진을 사용하고 있습니다. 그 밖에 게코는 확장성을 지닌 코어로서 윈도우즈, BSD, 리눅스, 맥 OS X에서 사용할 수 있습니다.게코는 트라이던트 다음으로 많이 사용되는 엔진입니다. 게코 엔진을 사용한 브라우저는 파이어폭스, 넷스케이프 네비게이터 6~9, SeaMonkey, Camino, Mozilla, Flock, Galeon, K-Meleon, Minimo, Sleipni, Songbird, XeroBank가 있습니다. 구글 가젯 엔진도 게코 엔진을 사용한 것입니다.
프레스토(Presto)
프레스토는 오페라 소프트웨어가 개발한 랜더링 엔진으로, 현재 오페라 7~10 버전이 이 엔진을 사용하고 있습니다. 프레스토의 특징은 렌더링 속도의 최적화입니다. 프레스토는 지금 공개된 브라우저 중에서 제일 빠른 속도를 자랑하지만, 그 댓가로 호환성을 일부 희생했습니다.
프레스토는 하나의 동적인 코어입니다. 트라이던트나 게코와 제일 큰 차이는 스크립트의 처리에 있습니다. 페레스토는 선천적인 장저으로 웹페이지의 전부 혹은 일부에서 스크립트를 만나면 이에 알맞는 상황에 따라 새로 해석을 합니다. 그 밖에도 이 코어는 자바스크립트를 실행할때 속도가 아주 빠릅니다. 동일한 조건에서 테스트를 할 경우, 프레스토는 자바스크립트를 실행하는데 걸리는 시간이 트라이던트와 게코 엔진의 1/3밖에 되지 않습니다. 하지만 프레스토는 상업용 엔진이라서 프레스토를 사용하는 제품이 오페라 외에 NDS 브라우저, 노키아 770 정도밖에 없어, 프레스토의 발전을 크게 가로막고 있습니다. 오페라 위젯 엔진 역시 프레스토 엔진입니다.
웹킷(WebKit)
웹킷은 오픈 소스 웹 브라우저 엔진이며, 웹킷의 시조는 KDE의 KHTML과 KJS입니다(이들은 모두 오픈 소스 코드로서 GPL 라이센스를 사용합니다). 따라서 웹킷 역시 오픈 소스입니다.
사파리 브라우저 외에도 맥의 옴니웹(OmniWeb), Shiira 등의 브라우저들이 웹페이지를 사용하고 있으며, 구글의 크롬 역시 웹킷입니다. 웹킷은 핸드폰에서 비교적 널리 사용하고 있는데, 구글 안드로이드, 애플 아이폰, 노키나 S60의 브라우저들이 전부 웹킷 엔진입니다. 또한 위젯 엔진에서도 그 사용율이 높아, 차이나 텔레콤의 BAE, 애플의 대쉬보드, 노키아 WRT가 전부 웹킷 엔진입니다.
Action Message Format 이라불리우는 방식을 사용하게되면 객체를 그대로 전달하고 받을수있다.
서버로부터 객체를 전달받은후에 인코딩과정을 거치게되면 완전한 형식의 데이터가 뽑혀나온다.
근데 왜 이런짓(?)을 하는가.
xml로 그냥 보내면 될것을 말이지.....
일단 xml은 보안이 되지 않는다. 사람의 눈으로 그대로 보이니 보안관련 내용부분을 암호화 인코딩 한다하여도 노출되는것은 마찮가지다.
하지만 amf방식은 프로토콜이 전용이므로 보이지 않는다. 포트는 80포트를그대로 쓰기때문에 거의 왠만한 방화벽은 통과할수있다.
그뿐아니라 데이터 량이 많을경우 이진데이터로 변환해서 전송하기에 상당한 효율을 가져온다. 이것을 이용하면 파일 전송,채팅,게임까지도
플래시에서 구현하는데 많은 잇점이 생긴다.
플래시 플레이어에 이미 이 기능이내장되어있다. 플래시 8에서는 단지 이기능을쓰기위해 별도의 컴포넌트를 받아 플래시를 업데이트 해서 써야했다.
AMF 방식은 플래시 응용프로그램과 원격 서버간의 효율적인 통신을 한다. amf는 원격 프로시져 호출을 압축된 이진 표현으로 인코딩하여 플래시 미디어서버(Flash Media Server)에서 현재 사용되고있는 프로토콜(http,rtmp) 프로토콜형식으로 변환해서 전송한다. 그형식은 액션스크립트 객체와 데이터의 값을 이진형식으로 직렬화시키기 때문에 텍스트인 xml보다 엄청난 양을 압축할수있다.
xml을 압축전송한다고생각하면된다. 이방법을 썼을때 효율적인것은 바로 트래픽관리이다.
플래시로 제대로된 게시판이나 , 기타 대중화 어플리케이션이 상용화 되지 않는이유중 하나도 xml의 양날의 검때문이다.
개인사이트가아닌 상용사이트에서 xml로 구성된 데이터를 주고받는다면 일반 html로 만드는 어플리케이션보다 수배는 더많은 트래픽과 서버의 부하를 주게된다. 그러므로 이를 해결하기위해 장비를 늘리므로해서 더 많은 비용발생이되며 이것은 운영자에게는 별로 매력적이지 않은 부분이다. amf를 사용하면 그부분을 많이 줄일수있다. amf는 플래시가 쓸수있는 최상급의 리아 기술중 하나이다.
amf의 규격>
amf는 amf0과 amf3가 현재 사용되고있다.
플래시 8까지와 as2.0 까지는 amf0 이 지원되고
as3.0부턴 amf3를 쓸수있다.
amf3는 플래시9와 플렉스2 부터 지원한다.
--------AMF3 에서 추가된 사항 -------
1.int , uint 객체를 정식으로 지원해서 정수로 제대로인식할수있게됨.
2.ByteArray,XML,IExternalizable 의 데이터 유형을 그대로 인식함.
3.ByteArray, NetConnection, NetStream, SharedObject, Socket 및 URLStream 클래스에는 ObjectEncoding 클래스로부터 상수가 할당되는 objectEncoding 속성이 포함되어 있는데 objectEncoding 속성의 비헤이비어는 객체에 따라 달라진다.
웁쓰 그럼 또 NetStream은 어따쓰는거지? 지난번에 파일 읽어낼때 한번 본적이 있으나 구체적으로 살펴보면 아래와같다.
NetStream 클래스는 NetConnection 객체에 의해 설정된 연결을 통해 Adobe의 Macromedia Flash Media Server 2 (현재 3 까지 나왔음)또는 Adobe Flex 등의 서버와 Flash Player 사이, 또는 로컬 파일 시스템과 Flash Player 사이에 단방향 스트리밍 연결을 연다.
양방향이 아닌 단방향스트리밍이다. 이녀석의 속성과 메서드들은 플래시미디어서버,플렉스 서버등에 사용되도록 만들어져있다.
위에서 AMF가 이들용으로 http,rtmp 프로토콜을 사용해서 데이터를 주고받는다고언급했을때 이 netstream클래스가 해당 프로토콜을 제어하는것으로 마찬가지로 amf도 해당된다.
또한가지 살펴볼 녀석은 NetConnection이다. 이녀석은 주로 NetStream과 함께쓰이는데 서버에 존재하는 명령을 실행할때쓴다.
제가 트위터를 시작한지 한 3주정도 되었는데요. 정확히 트위터에 적응하기까지 2일정도 걸렸습니다. "RT, DM 이게 뭠미"하면서 시작했는데...
어느덧 이 트위터 없는 하루는 상상할 수 없습니다.
현재 제 트윗에 댓글을 다는 사람은 회사사람들을 제외하고 몇몇 없습니다. 하지만 굴하지 않습니다. 저를 follow(제 말을 듣는 사람들)하는 수십명의 사람들은 제 말을 듣거든(보거든)요.
이것이 트위터의 첫번째 힘 "단순함 속의 개방성"입니다. 짧은 글이지만 제가 쓴 글이 수초만에 수십명에게 보여지는 파급효과.. 안 해본 사람은 모릅니다.
그 짧은 글에 제 차칸 트윗 친구들은 가끔 댓글을 달아줍니다.ㅠㅠ 좋은 글이면 RT를 달아 아는 사람들에게 전파시킵니다. RT(ReTweet)라고 하는 옮길 가치가 있다고 생각하는 글을 원문 그대로 올리는 트위터의 핵심기능으로서 RT 뒤의 글을 내가 아는 사람에게 권장한다는 뜻입니다.
이러한 기능은 저의 아는 사람들에게 쭈욱쭈욱 퍼지고 또 저의 아는사람들의 아는사람들, 또 저의 아는사람들의 아는 사람들의 아는사람들.헉헉..ㅡ_ㅡ;
이렇게 다단계(피라미드)처럼. 그 피라미드가 꼬리에 꼬리를 물고 초거대한 피라미드가 형성되어 순식간에 수천 수만명의 사람들에게 글이 전파되는 초절정의 파급효과. 트위터의 두번째 힘 "초빠른 전파력"입니다
이것만 보더라도 트위터의 힘은 막강하다고 봅니다. 그 외의 많은 힘들은 몸소 체험을 통해 느껴보시기 바랍니다. 후후
그럼 진정한 트위터의 매력은 무엇일까요??
사람들은 왜 트위터를 하는 것일까요??
우리가 자주하는 네이트온, 싸이월드는 SNS지만 수직적인 면을 가지고 있습니다. 즉 자신들의 주변 인맥 생각등은 알 수 있으나 그 외 사람들에 대해 알고 싶다면 싸이월드 파도타기를 열심히 타야합니다.
하지만 이도 '일촌미공개'라는 난관에 부딪칩니다. OTL
훗훗...트위터는 다릅니다. 최강국가의 미쿡 대통령 오바마씨도, 최고부자 빌게이츠씨도, 우리의 간G남 MB씨도 한 명의 트위터에 불과합니다. 원하는 사람의 트위터에 접속해서 보시면 됩니다. 즉 트위터 안에서 만들어진 수평적인 관계라는 것이지요.
그냥 무작정 follow하면 되는 것입니다. 쌍방향적인 대화는 힘들더라도 그 사람들의 생각이나 말들을 듣고 댓글도 달 수 있으니 훗... 말 다했지요. 저는 지금 당장 빌게이츠씨에게 말 걸 수 있습니다.
"당신 돈 0.001%만 국제송금해달라"고.. 하지만 리댓글은 없겠죠 ㅋ
이렇게 모두가 평등하고 모두에게 기회가 주어지는 땅. 트위터. 자신이 좋아하고 원하는 사람들의 말들을 언제 어디서든 듣고 말할 수 있는 트위터.