간혹 네트웍이  몇초간 접속 안하면

세션이 끊어지도록 구축된 경우가 있다.

 

이런 경우 네트웍이 끊어지지 않도록 계속 연결을 물고 있으면 편하므로

아래와 같은 sell script를 만들어 연결을 유지하곤 한다.

 

#!/bin/sh

while sleep 2; do
telnet server_ip server_port << EOF
quit   (서버에서 결종료 명령어.. 없으면 안써도 될듯)
EOF
done

Posted by yongary
,

vrrp가 A/B 서버간에 메시지를 broadcating하는데

근래 OS들이 이 broadcast들을 default로는 막는 경우가 존재한다.

 

조치:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Posted by yongary
,

Scala 특징

scala 2015. 6. 8. 15:52

<<

JAVA:  bytecode는 interpre언어이나.. 실행시 JIT Compiler가 기계어로 바꿔서 실행하므로 compile언어라고 본다.

Scala는 이와 동일하게 javabytecode로 바꾸는 방식을 그대로 따르며, 완전한 java bytecode를 이용한다.   >>

 

 

이름에서 나와있듯이 scalable한 언어이다.

 

아래 1번 scalable이 6번 안전성과 관계를 좀 더 살펴봐야 할 것 같은데

어쨌던 Functional 언어의 등장 자체가

multi-core에서 안전성을 가지기 위해서 이므로..

6번의 안전성을 기반으로 1번 확장성도 가지게 된다고 개인적으로 보고 있다.

 

 

 

<Scala의 특징>

 

1. scalable

 

2. pure Object-Oriendted  (java는 primitive가 Object가 아님)

3. Functional 언어

- Assignment를 없애서, 참조투명성(REFERENTIAL TRANSPARENCY) 을 확보.

참고사이트:

4. Java 호환.

5. 함수도 객체.

 

6. future-Proof

 

7.Fun 

참고사이트:




한글 튜토리얼


< 기본 문법>

def : function이나 method를 선언할때 사용 

val : reasign이 불가능한 상수를 선언할때 사용 

var: reasign이 가능한 변수를 선언할때 사용 


exam )

    def helloWorld = println("hello world.") 

    val foo: Int = 1 

    var bar = "test" 


<case Class>

new 없이 쓸 수 있고,  getter필요없이 바로 .value 로 access.

 

Several Example : http://alvinalexander.com/scala/ 

 

<Flat Map>

http://alvinalexander.com/scala/collection-scala-flatmap-examples-map-flatten 

Posted by yongary
,

You can use the following command to find out the defaults on the system where your applications runs.

java -XX:+PrintFlagsFinal -version

Look for the options MaxHeapSize (for -Xmx) and InitialHeapSize for -Xms.

On a Unix/Linux system, you can do

java -XX:+PrintFlagsFinal -version | grep HeapSize

Posted by yongary
,

Service onStartCommand

Android 2015. 6. 2. 09:12

android로 간단한 서비스 구현시 필요한 건 다음 2~3가지 정도이다.

  1. extends Service

  2. onStartCommand  (return START_STICKY)

  3. onBind {return null;} ==>Bind형 서비스 용도  : AIDL과 함께 사용하는 참고 사이트

  4. onDestroy

 

서비스에서 제일 중요한 함수는 onStartCommand라고 할 수 있는데

최초 실행시에는 onCreate->onStartCommand순으로 호출되고

실행중 재호출시에는 onStartCommand로 바로 호출되기 때문이다..

 

 

서비스의 onStartCommand에는 3가지 return type을 가질수 있다.

 

보통은 특정파라미터가 없다면, START_STICKY를 쓰면 된다. (자동 재구동)

 

 

참고사이트:

 


START_STICKY : Service가 강제 종료되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 null로 초기화 시켜서 재시작 합니다.

Service 실행시 startService(Intent service) 메서드를 호출 하는데 onStartCommand(Intent intent, int flags, int startId) 메서드에 intent로 value를 넘겨 줄 수 있습니다. 기존에 intent에 value값이 설정이 되있다고 하더라도 Service 재시작시 intent 값이 null로 초기화 되서 재시작 됩니다.

START_NOT_STICKY : 이 Flag를 리턴해 주시면, 강제로 종료 된 Service가 재시작 하지 않습니다. 시스템에 의해 강제 종료되어도 괸찮은 작업을 진행 할 때 사용해 주시면 됩니다.

START_REDELIVER_INTENT : START_STICKY와 마찬가지로 Service가 종료 되었을 경우 시스템이 다시 Service를 재시작 시켜 주지만 intent 값을 그대로 유지 시켜 줍니다. startService() 메서드 호출시 Intent value값을 사용한 경우라면 해당 Flag를 사용해서 리턴값을 설정해 주면 됩니다

 

Posted by yongary
,

GC

java core 2015. 6. 1. 11:39

GC(Garbage Collection)에는 serial방식과 Parallel방식이 있는데

single thread (32bit window)등 특수환경에서만 serial방식이 쓰이고, 대부분 Parallel 방식이 쓰인다.

serial방식의 경우, 어플리케이션을 freezing시켜 버린다.



GC의 중요한 2가지 기능별 분류:


CMS GC(concurrent-mark-sweep) :

  - 동시에 여러Thread를 이용해서 mark하고 sweep.

  - 일반적으로 STW(Stop-The-World)를 유발하지 않지만 아래2가지 경우 STW 발생가능..

       a. Initial Root 마킹

       b. 동작중에 앱의 heap 상태 변경으로 재구동 필요시



G1 GC(Garbage first Collector - JDK1.7u4 에서 4GB 이상 heap을 우선처리하기 위해 등장 함) 

 - JDK1.8u20 에서는 string dup제거 로직도 추가됨



추가로,

Java8에선 PermGen (class 메타데이타 저장소)가 없어짐. OOM을 많이 유발하던 부분임.


참고사이트:



CMS GC의 버그는 1.7에서 해결되었으며, 
G1 GC의 버그는 1.8에서 해결됨. :  슬라이드 30페이지

Posted by yongary
,

USIM

IMS 2015. 5. 20. 10:54

USIM = SIM + UICC

 

참고사이트

Posted by yongary
,

PuID, PrID

IMS 2015. 5. 20. 09:45

Public User ID: 국제적으로 통용하기 위한 ID로서, 공용ID인 만큼, 명함이나 출판물에 찍어서 교환해도 되는 고유Id이다.

tel Uri 혹은 Sip Uri로 표시한다. 

- tel:+821012345678

- sip:john.doe@ims.korea.com

 

Private User ID: 통신사 내에서 쓰기위한 용도이다.

 

 

< Puid와 Prid의 관계 >

 

PuID는 폰마다 하나씩 존재해야 하지만,

PrID는 하나를 만들어 여러개의 폰에 공용으로 사용할 수 있다.

 

PrID는 sip:joe@mytelecom.com 형태로 쓰면 된다.

 

 

<GRUU>

폰을 위해 GRUU(Grobally Routable User agent URI)를 사용할 수 있으며

GRUU를 여러개 만들어서 폰하나에 GRUU 2개를 할당할 수도 있다.

 

즉 Phone1- GRUU1  - Puid1

               - GRUU2  - Puid2 

    Phone2 - GRUU3  /

 

와 같은 형태로   다대다 매핑이 가능하다.

Posted by yongary
,

HSS

IMS 2015. 5. 20. 09:28

 

 

IMS의 기본 Invite Flow를 보면 다음과 같다.


  Phone1-----> P-CSCF --> S-CSCF   --> I-CSCF-->  S-CSCF  --> P-CSCF --> Phone2

                                                                |

                                                                |

                                                               V

                                                      HSS (레지된 S-CSCF 조회)

 

이 그림에서 HSS의 용도를 보면

I-CSCF가 HSS를 통해서 Phone2가 등록된 S-CSCF를 찾는다.

 

 

HSS: 사용자 마스터 DB이며, 사용자 인증/보안용 암호화, 호제어, 세션관리 등 모든 기능을 한다.

 

HLR: HSS의 일부로서 CS/PS도메인을 제공하는 역할.

-> VLR은 로밍전용 HLR이라고 보면 된다.

 

User Profile: 부가서비스만 별도로 빼서 작게 관리하기도 함.

 

 

 

참고 사이트:


Posted by yongary
,

커널 upgrade

Linux 2015. 5. 20. 09:02

CentOS 6.3을

 

커널 2.6.32-279에서 2.6.32-358.14.1 로 update해보았다.

 

일단 binary를 받을 수 있는 URL은

 

-기본 버전:  http://vault.centos.org/6.4/os/x86_64/Packages/    kernel-xx-.14.1.el6.x86_64.rpm

-update 버전:  http://vault.centos.org/6.4/updates/x86_64/Packages/    kernel-xx.el6.x86_64.rpm

 

최초에 기본버전이 나오고 마이너 update버전이 나오게 되므로

보통 update버전을 많이 설치하는 것으로 보인다.

 

kernel은 간단하게 rpm -ivh xx.rpm으로 설치가 된다.

하지만 dependecy문제가 발생하게 되므로

 

1. kernel-firmware-xx.xx 먼저설치

2. kernel-devel-xx.xx 설치

3. kernel rpm 설치.. 옵션을   --nodeps를 주면 dependency없이 설치 가능.

 

 

참고 사이트:

Posted by yongary
,