2014년 11월 2일 일요일

Eclipse Navigation Shortcuts

Windows shortcut (Mac shortcut)

1. Ctrl+Shift+R (Command+Shift+R): Open Resource

2. Ctrl+Shift+T (Command+Shift+T): Open Type

3. Ctrl+O (Command+O): Show inherited members

4. Ctrl+L (Command+L): Go to line

5. Ctrl+Q: Go to the last edit location

6. Ctrl+T (Command+T): Go to supertype/subtype

7. Ctrl+E (Command+E): Go to open other editors

8. Ctrl+. (Command+.): Move to the next problem in a file

9. F3 (Fn+F3) or hold Ctrl (Command) down and click the hyperlink: Go to a type declaration

10. Alt+←,  Alt+→ (Command+Alt+←, Command+Alt+→): Go back and forth through files you visited

11. Ctrl+H (Ctrl+H): Search

2014년 9월 13일 토요일

Java does NOT support unsigned type.

ref: http://www.gotw.ca/publications/c_family_interview.htm

You can find the reason why Java does not include unsigned type in the Gosling's comment in the interview with Dennis Ritchie, Bjarne Stroustrup,  and James Gosling:

Gosling: For me as a language designer, which I don't really count myself as these days, what "simple" really ended up meaning was could I expect J. Random Developer to hold the spec in his head. That definition says that, for instance, Java isn't -- and in fact a lot of these languages end up with a lot of corner cases, things that nobody really understands. Quiz any C developer about unsigned, and pretty soon you discover that almost no C developers actually understand what goes on with unsigned, what unsigned arithmetic is. Things like that made C complex. The language part of Java is, I think, pretty simple. The libraries you have to look up.

Failed to load the JNI shared library jvm.dll

ref: http://wiki.eclipse.org/Eclipse.ini

Eclipse may fail to start saying "Failed to load the JNI shared library C:\Program Files ...\jvm.dll."
When this error occurs, you should check the OS, JDK, and Eclipse. The working pairings of OS, JDK, and Eclipse are:

  • 32bit OS - 32bit JDK - 32bit Eclipse
  • 64bit OS - 64bit JDK - 64bit Eclipse
  • 64bit OS - 32bit JDK - 32bit Eclipse

2014년 5월 29일 목요일

Conversion between Uri and file path

1. Conversion of Uri to file path
public String getPathFromUri(Uri uri){
Cursor cursor = getContentResolver().query(uri, null, null, null, null );
cursor.moveToNext(); 
String path = cursor.getString( cursor.getColumnIndex( "_data" ) );
cursor.close();

return path;
}

2. Conversion of file path to Uri
public Uri getUriFromPath(String path)
String fileName= "file:///sdcard/DCIM/Camera/2013_07_07_12345.jpg";
Uri fileUri = Uri.parse( fileName );
String filePath = fileUri.getPath();
Cursor c = getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
null, "_data = '" + filePath + "'", null, null );
cursor.moveToNext()
int id = cursor.getInt( cursor.getColumnIndex( "_id" ) );
Uri uri = ContentUris.withAppendedId( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id );

return uri;
}

2014년 5월 7일 수요일

vi Commands

General Startup
 To use vi: vi filename
 To exit vi and save changes: ZZ   or  :wq
 To exit vi without saving changes: :q!
 To enter vi command mode: [esc]

Counts
  A number preceding any vi command tells vi to repeat that command
 that many times.

Cursor Movement
  h   move left (backspace)
  j   move down
  k   move up
  l   move right (spacebar)
  [return]   move to the beginning of the next line
  $   last column on the current line
  0   move cursor to the first column on the current line
  ^   move cursor to first nonblank column on the current line
  w   move to the beginning of the next word or punctuation mark
  W   move past the next space
  b   move to the beginning of the previous word or punctuation mark
  B   move to the beginning of the previous word, ignores punctuation
  e   end of next word or punctuation mark
  E   end of next word, ignoring punctuation
  H   move cursor to the top of the screen
  M   move cursor to the middle of the screen
  L   move cursor to the bottom of the screen

Screen Movement
  G   move to the last line in the file
  xG  move to line x
  z+  move current line to top of screen
  z   move current line to the middle of screen
  z-  move current line to the bottom of screen
  ^F  move forward one screen
  ^B  move backward one line
  ^D  move forward one half screen
  ^U  move backward one half screen
  ^R  redraw screen (does not work with VT100 type terminals)
  ^L  redraw screen (does not work with Televideo terminals)

Inserting
  r   replace character under cursor with next character typed
  R   keep replacing character until [esc] is hit
  i   insert before cursor
  a   append after cursor
  A   append at end of line
  O   open line above cursor and enter append mode

Deleting
  x   delete character under cursor
  dd  delete line under cursor
  dw  delete word under cursor
  db  delete word before cursor

Copying Code
  yy  (yank)'copies' line which may then be put by the p(put)
     command. Precede with a count for multiple lines.

Put Command
  brings back previous deletion or yank of lines, words, or
 characters
  P   bring back before cursor
  p   bring back after cursor

Find Commands
  ?   finds a word going backwards
  /   finds a word going forwards
  f   finds a character on the line under the cursor going forward
  F   finds a character on the line under the cursor going backwards
  t   find a character on the current line going forward and stop one
     character before it
  T   find a character on the current line going backward and stop
     one character before it
  ;   repeat last f, F, t, T

Miscellaneous Commands
  .   repeat last command
  u   undoes last command issued
  U   undoes all commands on one line
  xp  deletes first character and inserts after second (swap)
  J   join current line with the next line
  ^G  display current line number
  %   if at one parenthesis, will jump to its mate
  mx  mark current line with character x
  'x  find line marked with character x
  NOTE: Marks are internal and not written to the file.

Line Editor Mode
  Any commands form the line editor ex can be issued upon entering
 line mode.
  To enter: type ':'
  To exit: press[return] or [esc]

ex Commands
  For a complete list consult the UNIX Programmer's Manual

READING FILES
  copies (reads) filename after cursor in file currently editing
  :r  filename

WRITE FILE
  :w  saves the current file without quitting

MOVING
  :#  move to line #
  :$  move to last line of file

SHELL ESCAPE
  executes 'cmd' as a shell command.
  :!'cmd'

Installing MySQL on Mac

ref: http://hoyanet.pe.kr/1942

2014년 5월 6일 화요일

Installing Tomcat on Mac OS

Step 1: Download a binary distribution of the core module: apache-tomcat-7.0.53.tar.gz (or apache-tomcat-7.0.53.zip) from here.

Step 2: Opening or Unarchiving the tar.gz (or zip) file will create a folder something like this in your Downloads folder ~/Downloads/apache-tomcat-7.0.53

Step 3: Move the unarchived distribution to /usr/local:
sudo mkdir /usr/local sudo mv ~/Downloads/apache-tomcat-7.0.53  /usr/local

Step 4: To make it easy to replace this release with future releases, we are going to create a symbolic link that we are going to use when referring to Tomcat:
sudo ln -s /usr/local/apache-tomcat-7.0.53  /Library/Tomcat

Step 5: Change ownership of the /Library/Tomcat folder hierarchy:
sudo chown -R /Library/Tomcat

Step 6: Make all scripts executable:
sudo chmod +x /Library/Tomcat/bin/*.sh

Step 7: Now executes the startup.sh and open your Web Browser and goto http://localhost:8080. You should see the following window.

You can use the very simple app Tomcat Controller.


2014년 4월 27일 일요일

Obtaining authorisation credentials and an API Key

App에서 Google에서 제공하는 API들을 사용하기 위해서는 App을 등록하고 API key를 발급 받는 과정을 거쳐야 합니다. 이 과정은 크게 두 단계로 나눌 수 있습니다.
1. 인증서의 SHA1값 생성
2. Google Development Console에서 API key 값 생성



  • 인증서의 SHA1값 생성

애플리케이션을 배포하기 위해서는 정식으로 발급받은 키를 사용해야 하지만, 개발 과정에서는 디버그용 인증서를 사용할 수도 있습니다. 디버기용 인증서를 사용해서 API 키를 발급받기 위해서는 안드로이드 사용자 폴더(Windows인 경우 C:\Documents and Settings\username\.android, Mac OS인 경우 /Users/username/.android)에서 다음과 같이 keytool 명령을 실행합니다
keytool -list -v -keystore debug.keystore -storepass android -keypass android



  • Google Development Console에서 API key 값 생성

1. Google 계정으로 Google Developers에 로그인

2. Google Developers Console로 이동


3. Create Project


4. API & auth -> APIs에서 원하는 API들을 ON

5. Credentials -> OAuth -> NEW CLIENT ID
  Application type: Installed application
  Installed application type: Android
  Package name:
  Signing certificate fingerprint(SHA1):

6. Create Client ID

7. Credentials -> Public API Access -> Create New Key

8. Android Key

9. Create

2014년 4월 25일 금요일

Taking screenshots in Mac OS X

In Mac OS X 10.9

  • Command-Shift-3: Take a screenshot of the screen, and save it as a file on the desktop
  • Command-Shift-4, then select an area: Take a screenshot of an area and save it as a file on the desktop
  • Command-Shift-4, then space, then click a window: Take a screenshot of a window and save it as a file on the desktop

2014년 1월 19일 일요일

2014년 1월 16일 목요일

2014년 1월 15일 수요일

C/C++ 프로그래밍 전문가 과정 중간 평가 문제 해답

C/C++ 프로그래밍 전문가 과정 중간 평가 문제 해답입니다. 참고하세요.
다운로드

C++ 프로그래밍 강의 교재


책제목 : 윤성우의 열혈 C++ 프로그래밍 (윤성우 저 열혈강의 C++ 프로그래밍 개정판)
저자: 윤성우
출판사: 오렌지 미디어

교재의 소스 파일들은 출판사 홈페이지의 자료실에서 다운로드받을 수 있습니다.

C/C++ 프로그래밍 전문가 과정 Day11 강의 소스

C/C++ 프로그래밍 전문가 과정 Day11 강의 소스입니다.
다운로드

2014년 1월 14일 화요일

2014년 1월 13일 월요일

2014년 1월 7일 화요일

C/C++ 전문가 과정 과제 3

<string.h>에 포함된 strcpy(char des[], char src[]) 함수는 src에 저장된 문자열을 des에 복사하는 함수입니다.
예)
scr[100] = "Hello, world!";
des[100] = "";
strcpy(des, src);
printf("%s\n", des);

그 결과는 "Hello, world!"를 화면에 출력합니다.

strcpy()와 같은 동작을 하는 함수 myStrCpy()를 직접 작성해 보세요.

C/C++ 프로그래밍 전문가 과정 Day05 강의 소스

C/C++ 프로그래밍 전문가 과정 Day05 강의 소스입니다.
다운로드

강의 마지막에 실습한 재귀함수(recursive function)들은 반복문(for, while)을 사용해서도 구현할 수 있습니다.
재귀함수를 사용하지 않고 power(b, n)과 factorial(n)을 반복문만을 사용해서 구현해 보는 것도 좋은 연습이 될 것입니다.

2014년 1월 2일 목요일

C/C++ 프로그래밍 전문가 과정 과제 2

369게임을 출력하는 프로그램을 작성하세요.
조건 1) 1 ~ 100 사이의 숫자로 제한
조건 2) 369게임: 자리수 중에 3, 6, 9가 들어가면 숫자대신 *로 표시
조건 3) break;를 적어도 한 번은 사용

출력결과는 다음과 같습니다.
1 2 * 4 5 * 7 8 * 10 11 12 * 14 15 * 17 18 * 20 21 ...

C/C++ 프로그래밍 전문가 과정 Day02 강의 소스

C/C++ 프로그래밍 전문가 과정 Day02 강의 소스입니다.
다운로드

2014년 1월 1일 수요일

C/C++ 프로그래밍 전문가 과정 과제 1

반복문(while, do~while, for)을 이용하여 다음과 같이 출력하는 프로그램을 작성하세요.
(___ 은 공백을 의미)

*
**
***
****
*****

____*
___**
__***
_****
*****


구현 예:
1. for문을 이용한 구현

#include <stdio.h>

int main(void)
{
 int i;
 int j;
 int k;

 for (i = 0; i < 5; i++)
 {
  for (j = 0; j <= i; j++)
  {
   printf("*");
  }
  
  printf("\n");
 }

 printf("\n");

 for (i = 0; i < 5; i++)
 {
  for (j = 5; j > i + 1; j--)
  {
   printf(" ");
  }

  for (k = j; k > 0; k--)
  {
   printf("*");
  }

  printf("\n");
 }

 return 0;
}
2. while문을 이용한 구현

#include <stdio.h>

int main(void)
{
 int i;
 int j;
 int k;

 i = 0;
 while (i < 5)
 {
  j = 0;
  while (j <= i)
  {
   printf("*");
   j++;
  }
  printf("\n");
  
  i++;
 }

 printf("\n");

 i = 0;
 while(i < 5)
 {
  j = 5;
  while (j > i + 1)
  {
   printf(" ");
   j--;
  }

  k = j;
  while (k > 0)
  {
   printf("*");
   k--;
  }
  printf("\n");

  i++;
 }

 return 0;
}