반응형

블로그 하시는 분들 네이버 C-Rank 알고리즘에 대해서 한번 쯤 들어보셨을 겁니다.

C-Rank 알고리즘에 대해 알기위해 많이 노력들 하시는 걸 봤는데요.

뭔가 편법으로 내 글이 검색 상위에 노출될 수 있도록 하기 위해서이죠. 내 글을 상위에 노출 할 수 있는 방법만 있다면 그 활용 용도는 무궁무진하니까요

하지만 그런 편법이 있다면 누가 방법에 대해 공유를 하려고 하겠습니까?

자신의 유료강의를 들으면 블로그 글등에 대해 상위에 노출시킬 수 있는 방법을 가르쳐주겠다는 블로그 강사들의 마케팅이라고 저는 생각합니다.


오히려 네이버의 상위노출 알고리즘을 알려면 어딘가 존재할 지 안할지 모르는 그런 편법을 찾을 게 아니라

네이버가 공식적으로 제공하고 제시하는 C-Rank 알고리즘에 대해 깊이 이해하는 것이 더 유용할 것입니다.


네이버에서 공식 블로그나 카페에서 종종 공지하는 글들을 보면 많은 정보가 들어 있습니다.


며칠 전 공지된 내용으로 이제 네이버 카페에서도 C-Rank알고리즘을 적용시킨다고 합니다.

카페 검색에도 C-Rank 알고리즘이 적용되었습니다~!

[출처] 카페 검색에도 C-Rank 알고리즘이 적용되었습니다~! (네이버 카페팀 공식카페) |작성자 카페양

http://cafe.naver.com/cafesupport/115209


■ C-Rank란?

UGC( User Generated Contents )를 찾아주는 알고리즘이며, 

좋은 Creator에 대한 순위를 매겨주는 알고리즘입니다.

결국 C-Rank알고리즘에 의해 블로그글, 카페글 같은 컨텐츠들이 1등부터 쭉 순서가 나열이 될 것입니다. 

그것이 검색결과 페이지로 표시되는거죠.


공식카페에서 밝히는 C-Rank의 기술은 다음과 같습니다.

 * C-Rank의 2가지 중요한 지표

   - Creator 저자의 인지도와 

   - 주제의 전문성

이를 판단하기 위해 저자가 카페 안팎에서의 활동 패턴, 글쓰는 패턴, 인용 패턴 등을 빅데이터분석을 통해 수치화 합니다.

그리고 딥러닝 기술을 이용해 특정 주제에 대한 전문성이 있는 글을 지속적으로 써왔는지를 판단해 가중치를 부여하는 방법을 사용합니다.



그 딥러닝 기술을 짐작해본다면  

머신러닝의 종류로서 아마도 특정 공식을 알고리즘에 입력을 하게 되겠죠

그러면 알고리즘을 학습한 S/W가 웹을 돌아다니면서 글들을 수집하고 분석을 하게 될겁니다.

글들의 단어나 문장 등을 통해 주제별로 분류를 할거고 

해당 글의 유사성 분석을 통해 웹상에 같은 자료가 복제된 것이 아닌 독창적인 컨텐츠인지를 판단해낼 겁니다.

이렇게 카테고리별로 데이터를 수집해 놓은 커다란 집합을 만들어 둘겁니다.

그러면 사용자가 검색을 했을 때 빠르게 검색어와의 관련성, 상관관계 등을 분석하여 점수를 매기고 그 순서를 나열해줄 겁니다.


결국은 진짜 양질의 컨텐츠를 먼저 보여줄 것이고

양질의 자료가 아닌데 편법을 동원해서 양질의 자료인 척하기 어렵게 하는 알고리즘인 것입니다.


여기에서 딥러닝 기술을 사용한다는 것으로 미루어 보건데 이 알고리즘은 학습을 통해 계속 강화될 것이고, 데이터가 쌓일 수록 점점 더 복잡화되고 정교해 지게 될 것입니다. 

알파고가 바둑계를 평정한 것도 같은 기술입니다. 딥러닝 알고리즘이 사람의 기보를 가지고 학습을 하다가 결국 알고리즘끼리 대국을 해서 학습을 하게 되고, 나중에는 기보를 제외한 알고리즘끼리의 학습해서 성장한 버전으로도 인간을 다 이겨버렸죠.


■ 딥러닝 기술을 통해 C-Rank 알고리즘이 발전하는 방법

검색에 대해 상위노출해주는 알고리즘도 여러 루틴이 있을 겁니다.

사용자가 검색을 하고 C-Rank 의 특정 루틴으로 순위가 나열된 검색결과에서

상위에 노출되어있는 자료들이 진짜 양질의 자료라면 클릭률이 올라갈 것이고

클릭을 해서 들어간 해당 컨텐츠에서 머무르는 시간이 길어지겠죠.

그러면 C-Rank 알고리즘은 자기가 찾은 이 방법이 옳았다고 판단할것이고 해당 루틴은 강화될 것입니다.

반대의 경우로 있을겁니다.

C-Rank가 더 높은 점수를 줘서 상위에 노출시켰던 컨텐츠임에도 불구하고 클릭률이 저조한 경우도 있을 수 있을 겁니다.

또한 클릭해서 들어갔다 하더라도 머무르는 시간이 짧다면 C-Rank알고리즘 스스로 해당 루틴은 뭔가 잘못된 부분이 있다고 판단해서 해당 루틴은 약화할 겁니다.

C-Rank 자신의 알고리즘을 평가하는 알고리즘이 한 겹 씌워지게 되는것이죠

결국 검색이 계속 이루어질수록 C-Rank 스스로 발전하는 형태로 이해할 수 있을 것입니다.

데이터가 쌓여갈수록 해당 알고리즘이 발전되므로 점점 더 편법은 불가능해지게 될 것입니다.


그러면 우리같은 블로거들이 할 수 있는 일은?

정보공여자가 필요한 컨텐츠인지를 잘(?) 생각해서 잘(?) 만드는 것이 필요하겠죠

정답이면서도 어쩌면 가장 무책임한 말인 잘(?) 하면 된다는 말로 마무리하겠습니다.

오늘 포스팅은 여기까지~

끝.  

 


 



반응형
반응형
Visual Studio 6.0을 설치해야 할 일이 생겨서 이게 과연 될까 하는 의문이 들었다.
거의 20년이 된 지금 바야흐로 windows10 시대에 20년전 프로그램인 Visual Studio 6.0(이하 vs60)이 설치가 될까?
결과적으로는 설치가 가능했다. 

간략한 히스토리를 좀 읇어보겠다.
 
얼마전 대학 알고리즘 강의를 들으며 만들었던 오목 프로그램을 다시 실행해보려고 폴더를 뒤져보니 다행히 자료가 있었다. 다만 소스만 가지고 있고 빌드해 놓은 exe파일이 없는 것이다. 그래서 다시 빌드하려고 하니 Visual Studio가 필요한 것이다.

오목프로그램 관련포스팅:

최신툴로 설치하기 위해 MS홈페이지에서 Visual Studio Community 2017을 설치해보았다.



이렇게 Visual Studio 2017을 설치하고 실행을 한 후

십수년전에 만들어졌던 vs60 실행파일인 dsw, vcs 파일을 실행시켜 보았는데 변환실패.

visual studio 2008 정도였다면 변환 성공했을 지도 모르겠다는 생각을 잠시 했지만


지금 사용하는 Windows 10에 98년도 쯤에 나온 옛날옛절 프로그램인 Visual Studio 6.0 버전을 설치해보기로 한다. 


탐색기에서 vs60실행파일을 우클릭해서 호환성 문제 해결 눌러보았는데 별다른 거 없어 종료했고
일단 한 번 깔아보았다.


설치가 중간에 멈춰버렸다. 거의 다 된 것 같은데 윈도우가 응답하지 않는다는 메시지가 뜨면서 이후 과정이 진행이 안되는 것이다.
이대로 실패하는 것인가 했지만
또 Program Files폴더에 들어가서 보니 실행파일은 있어서 실행해 보니 실행은 또 되는 것이다. 
음... 실행은 되는 걸 보니 거의 된 것 같은데 싶어 다시 재도전
 
PC를 리부팅 한 후 다시 설치를 시도한다.
두번째 시도에서는 문제없이 성공 !!

설치가 문제 없이 되었으니 이번엔 서비스팩6를 설치해준다.

VS60을 사용하려면 서비스팩6를 반드시 설치해 줘야 한다.
서비스팩 설치 안하면 뭐 몇가지가 문제가 있는 것으로 예전에 알았는데 지금은 기억이 안난다.
STL문제하고 뭐 소수점 계산 문제랑 뭐 뭐 있었던걸로 기억하는데
각설하고 설치한다.

VS60 sp6도 설치 성공

이제 빌드만 성공하면 되는데...

빌드도 해 보니 빌드도 성공하고
생성된 실행파일 실행이도 문제 없군.
OK

MS를 찬양하지 않을 수 없다.
아이패드1 을 가지고 있지만 이무런 app도 깔리지 않고 있고 또 그게 당연하다고 인정하고 있는 요즘 시대에 20년 전 프로그램을 잘 설치해서 기능도 잘 동작하는 거 보면 참 대단함

불현듯 떠오른 고인돌 게임의 이스터에그.
아스테리크 라는 이름의 게임, 한국어로 고인돌 게임의 이스터에그가
게임 실행 년도를 보여주며 아직도 나 게임이 돌아가고 있다니 참 놀랍군 식의 메시지를 보여준다고 한다는데

암튼 Visual Studio 6.0도 아직 사용 가능하다. 
 
설치기 끝.



반응형
반응형


누구나 조금만 방법을 익히면 간단한 안드로이드 Application을 만들 수 있습니다.

Android Studio를 설치가 다 되어있으시다는 전제로 시작하겠습니다.

아직 Android Studio가 설치가 안되어있으시다면 아래 링크를 클릭해서 Android Studio를 설치하시기 바랍니다.


 1. 누구나 할수있는 간단한 안드로이드 App 개발, 1편 Android Studio 설치

      http://happycode.tistory.com/347


Android Studio를 실행하고 Start a new Project를 선택합니다.

(기존에 프로젝트를 수행했던 파일을 가지고 있다면 아래의 적절한 메뉴를 찾아서 실해하면 됩니다.)

프로젝트의 이름을 정합니다. SimpleApp으로 정하겠습니다.

플랫폼을 설정합니다. minimum SDK를 Android 4.0.3으로 정하면 그 이전 버전에서는 동작이 보장되지 않습니다.

프로젝트의 기본틀을 내가 만들 App의 모양과 가장 유사한 걸 골라줍니다. 

기본코드들이 자동으로 생성이 되어 여기에 확장을 해나가는 방식으로 개발을 합니다.

일단 Empty Activity로 정합니다.

Activity Name은 기본설정으로 MainActivity로 그냥 두고 Finish버튼을 클릭


여기까지 하고 나면 이제 IDE 통합개발환경이 나타납니다.

여기에서 소스도 확인할 수 있고, 수정및 Activity등을 추가하고 할 수 있는 화면입니다.

일단 처음 프로젝트를 만들 때 가장 먼저 확인해야 할 중요한 파일은 세가지,

간단한 예제로 몇가지 앱을 만들어보다보면 아래 세가지의 설정등에 익숙해질 필요가 있습니다.


1. manifests : 앱이 필요한 권한등 애 설정을 관리

2. java MainActivity파일 : 여기에서 앱실행 후 동작을 정의 

3. Layout : 화면구성을 디자인, MS의 MFC디자인과 비슷함



이제 프로그램을 실행시켜 보겠습니다.

새로 만든 건 따로 없이 기본소스에 Hello World TextBox를 화면에 표시하도록 소스가 코딩되어 있습니다.

Run메뉴에서 Run 'app'을 클릭, 위 툴바의 녹색삼각형을 눌러도 됩니다.

실행을 위해 컴파일을 하고 프로그램 실행파일 apk를 생성한 후에 타겟에 올려서 확인을 해야 합니다.


여기서는 실제 안드로이드 폰에 올려서 실행하지 않고 가상의 Virtual Device인 Android Emulator를 설치해서 PC에서 확인을 하도록 하겠습니다.

Create New Virtual Device를 선택한 후 설치를 해야 합니다.


적당한 Device를 선택합니다.

계속 동의할 것 동의하고 Next를 하면 Virtual Device가 설치가 됩니다. 

그러면 Android Emulator가 PC에서 실행이 되고 폰을 대신해 결과물 확인이 가능해집니다.


Virtual Device를 설치하기 위해서는 아래의 HAXM을 설치해야 한다고 합니다. 쿨하게 설치를 같이 해줍니다.


세팅을 마치면 아래와같이 화면에 폰이 나오면서 부팅이 됩니다.

이렇게 부팅이 완료되고 나면


지금 만든 프로그램이 실행이 되고 SimpleApp이란 프로그램이 뜨며 화면에 Hello World라는 Text가 나타납니다.


다음 번에는 간단한 프로그램에 웹브라우저 기능을 넣어보겠습니다.



반응형
반응형


오목 알고리즘을 만들면서 학과 수업시간에 공부한 내용 일부 발췌 및 정리

https://ko.wikipedia.org/wiki/%EC%95%8C%ED%8C%8C-%EB%B2%A0%ED%83%80_%EA%B0%80%EC%A7%80%EC%B9%98%EA%B8%B0

https://en.wikipedia.org/wiki/Alpha%E2%80%93beta_pruning

한글 위키 페이지보다 영문위키페이지가 더 자세하게 잘 설명되어있는 듯하다. 궁금하거나 필요한 분은 영문위키페이지를 보길 바랍니다.

알파베타 가지치기 알고리즘은 분기한정법(branch and bound)의 한 종류이며 두 사람이 두는 게임, 예로 틱택토, 오목, 바둑 등에 많이 적용하는 알고리즘이다. 미니막스 알고리즘을 기반으로 하여 응용된 것이 알고리즘으로 이름붙여진 것이다. 미니막스 알고리즘은 깊이우선 검색(Depth First Search)로서 모든 노드를 다 계산해야 하는 무식한 Brute Force 방법이라고 할 수 있다. 이런 단점을 보완하기 위해서 더이상 검색해봐야 의미없는 노드의 가지들을 잘라내어서 검색속도를 획기적으로 빠르게 만들 수 있는 알고리즘이다. 

오목알고리즘에서는 알파베타 가지치기 (Alpha- Beta Pruning)알고리즘이 오목의 결과를 평가해주는 것은 아니며, 평가함수가 수행할 노드들을 전체 경우의 수를 다 평가하는 것이 아닌 가지치기 한 나머지의 노드들만을 평가할 수 있도록 도와주는 알고리즘 기술이다. 결국 오목 알고리즘의 성능 자체가 알파베타 가지치기(Alpha-Beta Pruning)알고리즘에 의해 오목의 지능이 높아지는 것은 아니며 결국은 평가함수를 어떻게 만드느냐에 따라 오목의 지능이 달라지게 되는 것이다. 다만 노드 검색을 위해서 불필요한 검색을 방지해주어 검색 성능을 끌어올려주는 데에 기여를 하는 알고리즘이라 할 수 있다.  

아래 수도 코드를 참고하자 

1. MiniMax Search Algorithm

Mini-Max(node, depth) 
{ 
     if (depth == 0) 
          return value(node); 
     else { /* depth is greather than 0 */ 
          if (node is black's move) { 
               max = -infinity; 
               for (each child c-node of node) 
                    max = max{max, Mini-Max(c-node, depth-1)}; 
               return max; 
          } 
          else { /* node is white's move) 
               min = +infinity; 
               for (each child c-node of node) 
                    min = min{min, Mini-Max(c-node, depth-1)}; 
               return min; 
          } 
     } 
} 

2. Alpha-Beta Pruning Algorithm  

/*Initially Alpha-Beta is called with alpha = -infinity, beta = +infinity */
Alpha-Beta(node, depth, alpha, beta) 
{ 
     if (depth == 0) 
          return value(node); 
     else { /* depth is greater than 0 */ 
          if (node is black's move) { 
               for (each child c-node of node) { 
                    v = Alpha-Beta(c-node, depth-1, alpha, beta); 
                    alpha = max{alpha, v}; 
                    if (alpha >= beta) 
                         return alpha; 
               } 
               return alpha; 
          } 
          else { /* node is white's move */ 
               for (each child c-node of node) { 
                    v = Alpha-Beta(c-node, depth-1, alpha, beta); 
                    beta = min{beta, v}; 
                    if (alpha >= beta) 
                         return beta; 
               } 
               return beta; 
          } 
     } 
} 


반응형
반응형

알파고 와 커제9단의 대국이 3:0으로 알파고의 승리로 끝난 가운데, 알파고는 바둑 대전에서 은퇴를 선언했다. 지금까지 바둑을 통해 컴퓨터 인공지능 AI의 가능성에 대해 시험해 보았고, 성과를 어느 정도 이루었다고 판단하였고, 센세이션을 일으킨만큼 지금까지 수행한 챕터는 마무리하고 다음 단계로 나아가기 위한 준비를 하겠다고 한다. 바둑에서 벗어나 보다 넓은 의미에서 컴퓨터 인공지능 AI가 인간의 삶의 실용적인 영역에가지 확대를 할 수 있도록 챕터2를 향해 나아가겠다고 하는 것이다. 이런 알파고의 행보가 무척이나 관심이 가고 궁금하기도 하다.

알파고 이야기를 조금 더 하자면 작년 이세돌 9단 , 올해 커제 9단과의 대국에 대해 혹자는 이렇게 재밌게 비유한다. 바둑의 신 알파고가 신선놀음에 지루해 미천한 인간들과 접바둑을 두기 위해 세상에 내려왔고, 혹시나 재미있는 경험을 할 수 있을까 싶어 인간세상에서 인간고수들과 바둑을 두며 유희를 즐기려 왔는데 역시 인간이군 하는 실망으로 인간과의 접바둑을 두지 않겠노라며 다시 돌아갔다고 한다. 인간과 앞으로는 바둑을 둘 의미가 없다며 돌아갔다고... 바둑은 이제 안한다고 했지만 혹시 인간들이 너무 졸라대면 가끔 이벤트로 접바둑 한두판씩은 둬줄지 모르니 열심히 바둑실력을 갈고닦아야겠다고.

이런 이야기들이 돌 정도로 최근 일주일 정도 알파고에 대해 이러쿵 저러쿵 이야기들이 많았다. 아무래도 중국기사 커제와의 대국인 만큼 작년 이세돌9단과의 대국처럼 핫이슈는 아니었지만 관심있는 바둑 동호인이나 인공지능 관심있는 사람들에게는 그래도 좋은 떡밥이 되었던 것이다.

오래 묵혀두었던 블로깅을 다시 하게 되면서 이 시점에 알파고 뉴스들을 보며 떠오르게 되는 것들이 내 관심사와 덧붙여져서 포스팅 하고싶은 주제가 생기는 게 자연스러운 현상이다. 바둑 알고리즘으로 이름을 날린 알파고를 보며 학창시절 오목 알고리즘을 만들어 게임을 만들었던 경험이 떠오르는 것은 자연스러운 현상이다. 

서론이 길었다.

2002년 제대후 복학하자마자 학과 수업 과제로 수행했던 오목 알고리즘 개발에 대한 이야기를 시작한다. 서론은 길었지만 본론은 매우 짧은 글이 될 것 같다. 과제를 수행하면서 그 과제에 푹 빠져 학교생활이 전체적으로 활력있고 재밌게 만들었던 기억이다. 하지만 15년이 지난 지금은 정말 개략적인 몇몇 내용만이 기억날 뿐이기 때문이다. 디테일하게 이야기를 적고 싶은 마음은 잠시 내려놓고 몇가지 history와 결과물을 첨부하는 것으로 마무리 하겠다.

 

첨부파일

Omok.7z


첨부파일을 받아서 실행해 보면 아래와 같이 오목판이 나온다.

오목 알고리즘은 평가함수를 만드는 게 사실상 전부이다. 각 좌표값에서 돌을 놨을 때의 점수를 계산해서 가장 높은 점수인 좌표값에 돌을 놓으면되는 것이다. 말은 굉장히 간단하다. 하지만 이런 평가함수를 만들기 위해서는 몇 가지 게임알고리즘 기술이 필요한데 가장 기본적으로 사용하는 알고리즘은 minimax 알고리즘이다. 

miniman 알고리즘은 이름대로 수많은 경우의 수에 대한 각 노드마다 유리한 정도를 최소, 최대값을 가지고 평가해서 그 값을 가지고 검색을 하는 알고리즘이다. 하지만 게임에서 경우의 수는 정말 어마어마하게 많을 수도 있다. 심지어 무한대일 수도 있다. 이 알고리즘은 모든 노드를 방문해서 다 계산을 하기 때문에 최적의 경우를 찾는 데 가지 시간이 많이 걸리고 불필요한 노드까지 계산을 하는 일이 많다. 이런 점을 휴리스틱으로 보완한 알고리즘이 Alpha-Beta Pruning 알고리즘이다.

Alpha-Beta Pruning 알고리즘은 가지치기 알고리즘이라고 한다. 특정 노드에서 가능한 경우중의 최대값과 최소값을 각각 이용해서 그 노드 아래로는 나올 수 없는 최대값이 옆 노드의 최소값 보다 작다면 구지 그 아래의 노드를 검색할 필요가 없고, 이런 경우는 노드를 가지치기를 해서 검색할 경우의 수를 줄여주는 알고리즘이다. 이 정도의 가지치기만 하더라도 경우의 수는 획기적으로 줄어들게 되고 결국 평가함수의 속도가 빨라지게 되는 것이다. 대략의 알고리즘에 대한 설명은 이 정도만 설명하기로 한다.


시작하자마자 바둑판을 클릭하면 검은돌이 놓이면서 자동으로 컴퓨터와 대국이 시작이 된다.


참고로 학과 수업이었고, 오목 알고리즘을 라이브러리 형태로 인터페이스를 맞춰서 개발을 하여서 과제를 수행한 다른 동료들의 알고리즘과도 대국을 수행할 수 있었다. 알고리즘 끼리 누가누가 잘하나 경쟁도 할 수 있도록 해서 더 재밌었었던 과제였던 것이다.

알고리즘의 성능 평가를 위해 기준점을 교수님이 제공한 오목 알고리즘으로 삼았고. 프로그램에서 비교테스트하기 위해 우리 오목알고리즘과 교수님 알고리즘을 대결하는 메뉴를 넣어놨다.

교수님(선) vs 우리꺼는 교수님 오목 알고리즘이 흑돌로 시작하는 것을 의미한다.

그리고 두번째 메뉴의 (스페이스바)라고 붙인 것은 컴퓨터끼리 워낙 빨리 휘리릭 하고 오목을 끝내버리지 말고 과정을 하나하나 보고싶을 때 스페이스바를 클릭해야 다음 수를 놓는 메뉴이다.

우리꺼(선) vs 교수님은 우리 알고리리즘이 흑돌로 시작하는 것을 의미한다.

메뉴에 난이도 조절이 있는데 초급, 중급, 고급으로 의도하고 만들었지만 사실상 중급, 고급에서 어이없는 실책을 자주 하는 것이 보인다. 난이도 구현을 위해 초급은 3수 앞까지 파악한다면 중급은 4수앞, 고급은 5수앞까지 파악하는 알고리즘을 만들려고 했는데 생각했던 것처럼 동작하지 않아서 결국은 원인은 파악 못한채 마무리 되었다. 난이도 조정가지 완성하고 싶었지만 결국은 못하고 그 이후 손을 대지 않은 상태이다.

그냥 초급으로만 두는 것을 추천한다. 

포스팅을 위해 대국을 몇 번 수행했는데, 간만에 오목을 두니까 번번이 컴퓨터에게 패배해서 그냥 컴퓨터가 이긴 화면을 캡쳐했다. 

포스팅을 하며 과거 학창시절에 재밌었던 기억이 새록새록 기억이 나서 기분좋은 경험이었다. 이 알고리즘은 추후에 2008년인가 2009년에 윈도우모바일폰 App만드는 연습을 하면서 윈모바일용 게임으로도 재탄생시켰던 적이 있었는데 아쉽게 그 소스는 지금 잃어버려서 찾을 수가 없다.

자료를 잘 정리해놓는 습관이 참 필요한 것을 다시금 깨닿는다.

하지만 학교때의 자료들은 다 남아있어서 간만에 레포트도 몇 개 열어봤는데..... 한가지 또 놀라운 걸 발견했다.

학교 수업 과제 제출 때 만든 보고서가 생각보다 엄청 정성을 들여서 제출했던 걸 보고 아 예전에 열심히 했었나보구나 하는 걸 다시금 발견하게 되었다.

사실 열심히 했다는 생각은 나면서도 얼마나 열심히 했는지까지는 잘 기억이 안났는데, 레포트를 보니 아 내 기억보다 조금 더 열심히 했었구나 하는걸 발견하게 되었다. 과거를 훑으면서 나도 기억 못했던 것들을 다시 되살려주고 있다.

기념이니 그 때의 레포트를 캡쳐해서 첨부해본다. 아래와같은 목차로 11장을 빽빽하게 채워넣었었구나.. 그 때 참 뭘 할 짬도 안나고 당구도 끊고, 게임도 끊고 그랬었는데 20학점 꽉꽉 채워들으면서 이렇게 하느라 그랬구나 ㅎㅎㅎㅎㅎ  

참 옛날생각에 잠시 감성적이 되어본다. 


 

 




반응형
반응형

누구나 조금만 방법을 익히면 간단한 안드로이드 Application 정도는 만들 수 있습니다.

예제를 따라서 하다보면 자연스럽게 안드로이드 앱이 탄생하는 것을 볼 수 있습니다.


안드로이드 개발을 위해 구글에서는 통합개발환경 IDE툴인 Android Studio 안드로이드 스튜디오를 내놨습니다.

그러면 쿨하게 Android Studio를 설치하도록 합니다. 

아래의 링크를 따라가서 안드로이드 스튜디오를 다운로드 받습니다. 

(아주 예쩐에는 SDK, NDK를 Eclipse에 addon했던 기억이 나는데 바뀌었구나)


Android Studio및 SDK도구 다운로드 | Android Studio

https://developer.android.com/studio/index.html

링크를 따라 들어가서 DOWNLOAD ANDROID STDIO를 받습니다. 

1.8GB정도 크기라서 시간이 꽤 걸립니다.

동의하고 받아서 설치한다.

설치화면이다. NEXT만 쭉 누르면 된다. 설치되는 데에도 시간이 꽤 걸린다. 나름 빠른 PC인데 20분 정도는 걸리는 듯하다.



설치가 끝났으면 이제 Android Studio 를 실행합니다.

지금부터는 익숙한 IDE통합개발툴의 모습을 보여줍니다. Eclipse하고 비슷하게 만들어놨겠지 하는 생각이 드는데요 과연 그렇습니다.

사실 MS의 Visual Studio를 많이 써보신 분이시라도 금방 익숙해질 수 있는 툴이며

초보자 분이시라거나 처음 프로그래밍으 배우시는 분이라면 백지상태이니 그냥 눈으로 익혀두시면 좋습니다.

사실 다른 프로그래밍도 다 이런 비슷한 환경에서 개발을 하고 있으니까 한가지만 익숙해지면 다른 것에서도 쉽게 익숙해질 수 있습니다.

설치가 끝났으면 이제 App을 만들어 볼 예정입니다. 다음 포스팅에 올리겠습니다.


반응형
반응형


단체문자나 반복문자등을 보내야 할 때 문자를 컴퓨터 PC에서 편한 키보드로 쉽게 타이핑 해서 보낼 수 있는 방법이 있어서 소개한다.


간략히 앱에 대해 설명

1. 안드로이드 폰에 App설치 (PC에서 제어하기 위한 gate역할)

2. PC에서 구글계정의 안드로이드 조작가능 권한 획득

3. PC에서 웹페이지로 폰의 통신기능을 이용해서 SMS를 보내고 받기 수행


주의사항

안드로이드 전용임. 

(구글 계정을 통한 안드로이드 조작 권한 필요때문)


  

MightyText

https://mightytext.net



안드로이드폰에서 Play스토어 마켓에 들어가서 mightytext로 검색하면 아래와 같이 앱이 나온다.


앱을 설치한다.


앱 설치가 다되고 실행시키면 PC에서 안드로이드 계정에 대한 권한을 획득할 때까지 대기한다.

PC에서 권한 획득하고 나면 connected라고 바뀜


이번에는 컴퓨터 PC에서 작업이다.

폰에 안내한 것처럼 http://mightytext.net/app 입력하면 구글 안드로이드 폰 계정권한획득을 요청한다.

쿨하게 허용을 해준다.



허용을 하고 나면 잠시 로고화면이 나오면서 기다린다.


mightytext서비스 접속 완료

접속이 되면 구글주소록을 사용했다면 주소록이 동기화되면서 PC에서도 다 볼 수 있도록 나열된다.

이제 SMS를 보내보도록 하자


SMS를 보내본다. 일단 테스트를 해야 하니 나에게 보내본다.

참고로 내 번호를 '나'로 저장해놨다 그래서 캡쳐화면에 '나'라고 보이는 거다.


테스트해보는 메시지는 mightytext에서 적혀있는 기본 문구다. 

보내보니 잘 간다. 실제로 폰에도 똑같이 문자가 왔다.

폰에 문자가 와도 컴퓨터 PC에서 그대로 동기화되서 보여준다.


영어로만 테스트 하면 한글이 안갈까 걱정이 되어서 한글로도 테스트를 해본다.

한글도 잘 가고 잘 받아진다.


구글 크룸을 사용하고 있으니 크롬 확장프로그램을 사용해보라고 제안하길래 

쿨하게 해보기로 한다.


크롬 확장프로그램 설치완료하니 오른쪽 위에 작은 아이콘이 생긴다.

이걸 누르면 웹에서 MightyText에 바로가기가 되며, New Message등의 간단한 기능을 수행해준다.

특이한건 폰의 배터리 상태도 보여준다.


SMS메시지뿐만 아니라 몇 가지 유용한 기능들이 더 있다.

Message보내기, Photo/Videos 보내기, 달력 스케쥴 보내기, 전화하기, 주소록 보기 등의 기능이 된다.


한가지 주의할 것은 무료버전에서는 몇 가지 제약이 있다.

기본적인 기능은 다 되는데 기능을 다 사용하려면 유료버전을 사용해야 한다.

유료버전 Pro는 메뉴 옆에 PRO라고 이미지가 마킹되어있다. 

필요하신 분들은 결재를 하고, 쿨한 나는 무료버전을 사용하기로 한다.


아래 내용을 보니 한 가지 주의사항이 더 있다.

무료버전 사용자는 한달에 200개의 메시지 제한이 있다.

무제한을 사용하려거든 한달에 $4.99를 내라고 하니

쿨하게 무료버전을 사용하기로 한다.

컴퓨터 PC앞에 앉아서 업무중에는 폰으로 문자 확인하고 보내고 하는 것보다 컴퓨터에서 처리하는 게 편리할 때가 많다.

키보드의 편리함도 그렇고, PC에 있는 Excel이나 자료 등등에서 Copy & Paste해서 처리하는 경우 등등

이런 때 유용하게 잘 사용할 수 있다.

쿨하게 추천한다

끝.

반응형
반응형

ARM9 KIT로 이국지(二國志, Two Kingdoms) 게임 제작 및 시연


2006년 2월 ARM 2주짜리 교육인데 지금생각해도 참 알차게 진행한 교육이었다.

2주짜리 교육과정 전체가 참 알차고 빡빡하게 진행되었다. 

처음 5일은 ARM프로세서 다루는 중고급 과정이고 기본적인 Periperal 등에 대해  교육을 진행한다.

그리고 나머지 5일은 프로젝트이다.

마지막날은 발표로 마무리하는 일정이니 프로젝트는 4일동안 진행하는 것이다.


프로젝트 주제는 자유다. ARM키트를 사용해서 할 수 있는 건 다 해보라는 컨셉이다.

다른 조들은 모터를 활용해서 움직이는 로봇을 만들기도 하고, SW를 주로하는 팀중에는 키패드 알고리즘 개발도 하는 등 이것 저것 다앙한 주제의 프로젝트를 진행했다.


우리 조는 게임으로 결정한다.

처음에는 짧은 시간 안에 이걸 다 구현할 수 있을까 싶었다. 그래도 도저~언.

결국 4일 작업을 해서 결과물로 이국지(二國志, Two Kingdoms) 게임을 완성했다.


턴 방식의 시뮬레이션 게임 삼국지를 패러디했고,

시간상 2명의 플레이어만 가능하도록 만들어서 이국지라고 이름 붙였다. 




완성도를 더 높이고 싶어서 마지막에는 거의 밤샘 작업을 했었다.

거의 마지막 3일 통틀어 72시간 중 2시간 정도 잤던 기억이...

이렇게 잠을 아잤는 데도 목표가 뚜렷하게 잡히니까 잠이 오지 않고 계속 각성되어있었던 기억이 난다.


나는 게임 전체틀과 사운드, 터치, 경영모드, 턴모드 등을 구현하고

같은 조에 병진이가 전투신 위주로 구현했었는데 

정말 이 때는 열정으로 불태웠다.  


마지막 날 발표 후에 집에 운전하고 갔다가는 운전 중에 졸다가 죽을 수 있겠다는 생각으로 집에 안가고 잠을 자고나서 갔었다.


휴대폰으로 촬영했던 동영상을 우연히 발견해서 플레이해보니

10년전의 추억이 아롱아롱, 

그 때 같이 했던 동기들 생각이 나는구나 

그리고 또 아쉬운건 이 때의 결과물, 발표자료 등 다 잃어버림,

유일하게 남은 게 시연 전에 촬영했던 동영상이다.

자료로 남길 생각이었으면 좀 더 촬영을 신경쓸껄...

촬영했던 핸드폰도 워낙 구형이어서 동영상 품질이 좀 엉망이다.

기술의 변천을 보여주는 역사인건가.


반응형
반응형

유플러스 홈페이지에서 문자보내기를 찾으려고 정말 30분은 낑낑 된 것 같다.

예전에는 첫 화면에 바로 문자보내기 항목이 있어서 바로 문자를 보내곤 했는데

오랜만에 들어와서 PC에서 로그인해서 문자를 보내려고 하니까 정말 못찾겠는 거다.


정말 숨은그림 찾기 하는 마음으로

못찾겠다 꾀꼬리를 여러번 외친 후 겨우 겨우 찾아낸 문자보내기 페이지를 공개한다.


이게 팁이 될 수 있을까 싶지만

최소한 나는 이걸 네이버, 다음, 구글 검색에서는 찾아내지 못했다 

다들 예전 홈페이지에서 바로 문자보내기가 있을 당시의 글만을 안내하고 있다.


암튼 2017년 현재 바뀐 유플러스 홈페이지에서 문자보내기 페이지 찾는 법을 겨우 찾아서 공유한다.


유플러스 홈페이지 첮 화면이다. 디자인 예쁘고 좋다.

그런데...

내가 필요한 기능인 문자 보내기가 어디있으까?

숨바꼭질을 시작해보자


아마 모든 메뉴를 다 들어가봐도 못찾았을 것이다. 그런데 비밀은 여기에 있었다.

설정으로 들어간다.


문자보이기가 보일 것이다.

눙물이 앞을 가린다. 30분만에 찾아낸 것이다.

그리고 희망차게 설정완료한다.

그런데...

그런데...

안보인다.

설정한 메뉴가 7개밖에 안보인다. 문자보내기는 9번째인데

다시 설정하기로 들어간다.

7개 안에 들어가게 하기 위해서 2개 삭제를 한다.

그런데...

그런데...

9개가 안되면 설정완료가 안된다.

이건 뭐지 하는 생각으로 또 시간을 보낸다.

이것 저것 눌러보다가 

드디어 찾았다.

즐겨찾기를 클릭한다.



즐겨찾기 별표를 누른다.

아~

드디어 찾았다.

아래에 문자보내기가 보인다.

정말 눙물이 앞을 가린다.




드디어 문자보내기 페이지 도착

정말 이게 뭐라고 이렇게 어렵게 찾았나 싶다.

다른 분들은 저처럼 이렇게 고생하지 않기를 바라는 마음에

포스팅을 마칩니다.

정말 유용한 정보일 듯 

왜냐하면...

 내가 곧 잊어버릴 거기 때문에...


 그 때 이 포스팅을 찾아서 다시 복습할거다

끝.



반응형
반응형

netstat -at 

으로 네트워크 상태 알아보기 가능


네트워크 프로그래밍을 하다보면 network server, client를 만들어놓고 에러 발생할 때 디버깅을 위해 유용하다

연결을 했단 끊었다 다시 연결을 했다가 끊었다가 하는 일이 많을텐데

이 때 이전의 연결이 끊어지지 않았는지

새로운 연결이 이전 연결 끊어진 후에 된 게 맞는지

새로운 연결에서 pending이 되어있는지를 확인하기 위해 활용 가능


client가 connect를 하고

server가 accept를 했을 때 established되는지를 주로 확인한다.

그리고 disconnect했을 때 다시 대기상태에 있는지 확인한다.

반응형

+ Recent posts