본문 바로가기

개발 관련 지식

[안드로이드] Linphone 오픈소스 다운받기 * VoIP(Voice over IP) : 흔히 인터넷 전화기를 Voip(Voice over IP)전화기라고도 한다. 인터넷상으로 음성데이터를 보내서 마치 일반 유선 전화기처럼 불편하지 않게 통화를 할수 있도록 만들어주는 인터넷 프로토콜 기술이다. 인터넷 전화기 프로토콜로는 대부분이 SIP프로토콜을 사용한다. SIP프로토콜의 약자는 Session initaion Protocol(세션 개시 프로토콜)이다. 이 VoIP와 관련된 오픈 소스로된 Linphone에 대해 공부해볼 생각이다~!! 먼저, Linphone은 오픈소스로 제공되어 해당 오픈 소스를 다운 받아 볼 생각이다. 다운 받는 방식은 다른 것들과는 조금 다르다. 자, 한단계씩 천천히 나가보자~! * Linphone 사이트 : http://www.li.. 더보기
[안드로이드] GCM 서버 구현 예제(1)_APP 클라이언트 * GCM 서버 구현 예제(1)_APP 클라이언트 * 개요 : 지난 포스팅에서 GCM 신청 방법에 대해 알아보았다. 그렇다면 신청했으면 사용해 보아야 하지 않을까?!! 이번 포스팅에서는 실제로 GCM 을 사용하는 간단한 예제를 구현해볼까 한다! * 구글에서 제공하는 GCM 예제 코드 다운로드 : https://code.google.com/p/gcm/ git 다운로드: git clone https://code.google.com/p/gcm/ * GCM 서버 구현하기 1. Google Play Service SDK 다운로드 1) Android SDK Manager 실행 > Extras > Google Play services 패키지 설치 2) Andoird SDK Manager 실행 > Extras > Go.. 더보기
[안드로이드] 안드로이드 푸시 알림 서비스 사용방법(GCM) * 안드로이드 푸시 알림 서비스(GCM) 사용방법 * 개요 : 이번 포스팅을 하게 된 배경은 요즘 가장 많이 사용하고 있는 메신져 카톡에 대해 궁금증으로 시작되었다. 카톡을 보면 알림 메시지가 오게 되는데 이는 서버 측에서 메시지를 보내 주는 것인지 어플이 서버로 주기적으로 접속해서 확인하는 것인지 궁금하였기 때문이다. 원천적인 질문은 메시지가 어떻게 올 수 있는 것인가?!! 이다.. [참고] 서버에서 공지사항에 새로운 글이 등록되어있을때 앱에서 알림메세지를 확인하는 방식 : 앱을 키지 않고도 알람 메시지를 받아야 한다면 푸시를 이용해야 하고, 그렇지 않고 앱을 켰을 때만 확인하고 싶다면, 앱 에서 주기적으로 웹 서버를 체크하는 방식이 가능할 듯 보인다. * 푸시 알림 서비스란? : 서버에서 앱에 데이터.. 더보기
[오라클] 오라클 9i 시작(Startup) & 종료(Shutdown) * 오라클 9i 시작(Startup) & 종료(Shutdown) 방법 * 시작(Startup) 1. sysdba 계정 접속 sqlplus "/as sysdba" 2. 오라클 기동 startup 3. 리스너 기동 lsnrctl start [참고] 리스너 확인 : cd ~ORACLE_HOME/network/admin/listener.ora * 종료(Shutdown) 1. 리스너 종료 lsnrctl stop 2. sysdba 계정 접속 sqlplus "/as sysdba" 3. 오라클 종료 shutdown immediate [참고] SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABOART]옵션 설명 1. NORMAL - 새로운 데이터베이스 connection 허용하지 않.. 더보기
[자바] 예외처리(exception handling) * 프로그램 오류 : 프로그램이 실행 중 어떤 원인에 의해 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이렇나 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러(compile-time error)'와 '런타임 에러(runtime error)'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램의 실행 도중에 발생하는 에러를 '런타임 에러'라고 한다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러(error)'와 '예외(exception)', 두 가지로 구분하였다. 에러는 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하.. 더보기
[자바] 인터페이스(interface) * 인터페이스(interface) : 인터페이스는 일종의 추상 클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 '기본 설계도'라 할 수 있다. 인터페이스도 추상클래스처럼 완성되지 않은 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. * 인터페이스의 작성 : 인터페이스를 작성하는 것은 클래스를 작성.. 더보기
[자바] 추상 클래스(abstract class) * 추상클래스(abstract class) : 클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느.. 더보기
[자바] 상속(inheritance) * 상속 : 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. class Child extends Parent{ // ... } 이 두 클래스는 서로 상속 관계에 있다고 하며, 상속해주는 클래스를 '조상 클래스'라 하고 상속 받는 클래스를 '자손 클래스'라 한다. 위에 예문에서는 Child 가 '자손 클래스', Parent 가 '조상 클래스'라고 보면 된다. - 조상 클래스 : 부모(parent) 클래스, 상위.. 더보기
[자바] 다형성(polymorphism) * 다형성 : 다형성은 상속과 깊은 관계가 있으므로 학습하기에 앞서 상속에 대해 충분히 알고 있어야 한다. 객체지향개념에서의 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이를 좀 더 구체적으로 말하자면, 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다는 것이다. class Tv1{ // Tv의 속성(멤버변수) String color; //색상 boolean power; //전원상태(on/off) int channel; //채널 // Tv의 기능(메서드) void power() { power = !power; } /* TV를 켜거나 끄는 기능을 .. 더보기
[자바] 제어자(modifier) * 제어자 : 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 제어자는 클래스나 멤버변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. 즉, 하나의 대상에 대해서 public과 private을 함께 사용할 수 없다는 것이다. - 접근 제어자 : public, protected, default, private - 그 외 : static, fianl, abstract, native, transient, synchronized, volatile, strictfp * static(클래스의,.. 더보기