간혹 네트웍이 몇초간 접속 안하면
세션이 끊어지도록 구축된 경우가 있다.
이런 경우 네트웍이 끊어지지 않도록 계속 연결을 물고 있으면 편하므로
아래와 같은 sell script를 만들어 연결을 유지하곤 한다.
#!/bin/sh
while sleep 2; do
telnet server_ip server_port << EOF
quit (서버에서 결종료 명령어.. 없으면 안써도 될듯)
EOF
done
간혹 네트웍이 몇초간 접속 안하면
세션이 끊어지도록 구축된 경우가 있다.
이런 경우 네트웍이 끊어지지 않도록 계속 연결을 물고 있으면 편하므로
아래와 같은 sell script를 만들어 연결을 유지하곤 한다.
#!/bin/sh
while sleep 2; do
telnet server_ip server_port << EOF
quit (서버에서 결종료 명령어.. 없으면 안써도 될듯)
EOF
done
vrrp가 A/B 서버간에 메시지를 broadcating하는데
근래 OS들이 이 broadcast들을 default로는 막는 경우가 존재한다.
조치:
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
<<
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
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
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를 쓰면 된다. (자동 재구동)
|
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페이지
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 /
와 같은 형태로 다대다 매핑이 가능하다.
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: 부가서비스만 별도로 빼서 작게 관리하기도 함.
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없이 설치 가능.