Aspect Oriented Programming 관점 지향 프로그래밍
Spring Framework의 특징 중 하나
API라는 것은 Application Programming Interface 의 약자로 운영체제가 응용프로그램을 위해 제공하는 함수의 집합으로 응용프로그램과 디바이스를 연결해주는 역할을 한다.
앱을 개발하기 위한 규칙.
앱에서 사용할 수 있도록, 운영체제나 프로그래밍언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스.
개발자를 위한 인터페이스.
앱 간에 연동의 개념이 많아지자 서로 다른 앱 간 기능을 공유할 수 있도록 개발한다.
SDK와 거의 같은 뜻으로 쓰인다.
호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있으면 NonBlocking이다.
그렇지 않고 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 Blocking이다.
크로미엄 임베디드 프레임워크.
크로미엄 임베디드 프레임워크는 크로미엄 기반의 레이아웃 엔진을 포함한 오픈 소스 프레임워크다. C++ 로 개발되었으며 윈도, 리눅스, 맥 OS X에서 실행되는 데스크톱 응용 프로그램을 만들수 있다.
여러 대의 컴퓨터 들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말한다.
클러스터의 구성 요소들은 일반적으로 고속의 근거리 통신망으로 연결된다. 서버로 사용되는 노드에는 각각의 운영 체제가 실행된다.
▶ 작업 부하 분산 (Load-Balancing)
클러스터는 시스템의 전반적인 성능을 향상시키기 위해 계산 부하량을 여러 노드에서 분담하여 병렬 처리하도록 구성 하는 방식이다.
웹서버 클러스터의 예를 들면, 각기 다른 종류의 요구들을 각기 다른 노드에서 처리하도록 할당함으로써 전반적인 응답시간을 최소화 할 수 있다.
그렇지만 애플리케이션에 따라 작업 부하를 분산하는 방법은 크게 다를 수 있다. 단순히 라운드 로빈 방식을 사용하는 웹 서버와 과학 계산을 하는데 사용되는 클러스터 시스템과의 방식은 다르다.
▶ 높은 가용성 (High-availability, HA)
클러스터는 시스템의 가용성을 높이기 위한 방법중 하나이다. 하나의 노드에 장애가 생겼을 때 연결된 다른 노드의 컴퓨터가 서비스를 이어받아(Failover) 계속해서 서비스되도록 한다.
CUG(씨유지)란 특정 단체의 정보교류 및 의사전달을 위한 서비스로서, 대개 CUG를 관리하는 관리자가 있고, 승인된 회원들만이 이용할 수 있다.
CUG는 주로 자체 시스템과 전국적인 네트웍을 유지할 여력이 없는 중소규모 회사나 단체 및 동호회 등에서 이용하는 게 보통인데, 대형 온라인 서비스 업체들로부터 일정량의 공간을 할당받아 서비스하게 된다.
용어의 앞부분에 있는 "Closed"라는 단어는 시스템에 접속한 사용자 모두에게 개방된 것이 아니라, 일부 사용자들에게만 폐쇄적으로 운영된다는 의미로 붙은 것이다. PC 통신 서비스 등에서 흔히 볼 수 있는 동호회 등도, 손님(guest) ID를 통해 들어가는 것조차 원천 봉쇄되어 있는 동호회라면 그것을 CUG라고 볼 수 있다.
?
Cross-Origin Resource Sharing의 약자. Cross Domain 이라고 부른다.
보안상의 이유로, 브라우저들은 스크립트 내에서 초기화되는 cross-origin HTTP 요청을 제한하는데, 이 때 발생하는 에러 메세지.
기준 URL: http://store.company.com/dir/page.html
| URL | isSame | Why? |
|--|--|--|
| http://store.company.com/dir2/other.html | True | Path만 다르기 때문에 |
| http://store.company.com/dir/inner/another.html | True | Path만 다르기 때문에 |
| https://store.company.com/page.html | False | 프로토콜이 다름 |
| http://store.company.com:81/dir/page.html | False | Port가 다름 |
| http://news.company.com/dir/page.html | False | 호스트가 다름 |
Data Injection 데이터 주입
Spring Framework에서 지원하는 IoC의 형태
더블 바이트 문자 집합(double-byte character set , DBCS)
2바이트로 된 개별 문자가 포함된 문자 집합이다. DBCS는 특별한 문자나 기호를 포함하는 국가 언어를 지원한다. (한국어, 중국어, 일본어 등)
도커는 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.
디지털 텔레비전(Digital Television, DTV)은 기존의 텔레비전에서 아날로그 신호를 사용했던 것에 반해, 디지털 신호를 이용하여 동영상과 소리를 방송 및 수신할 수 있는 방송 시스템을 말한다. 디지털 텔레비전은 디지털 방식으로 압축되고 변조된 데이터를 이용하므로, 디지털 텔레비전용으로 설계된 텔레비전 수상기나 셋톱박스를 통해서만 시청할 수 있다.
디지털 텔레비전은 기존의 텔레비전에 비해 몇 가지 장점을 가지는데 가장 중요한 것은 채널이 차지하는 대역폭을 줄일 수 있다는 점이다. 또한 멀티캐스팅(한 채널에 여러 프로그램을 동시에 방송하는 기능), 전자 프로그램 가이드(EPG), 대화형 텔레비전 등의 특수한 서비스들도 가능하다.
Dialog System Technology Challenge?
데이터베이스와 애플리케이션을 효율적으로 연결하는 커넥션 풀(connection pool) 라이브러리는 웹 애플리케이션에서 필수 요소입니다. 웹 애플리케이션 서버로 상용 제품을 사용하다면 보통 제조사에서 제공하는 커넥션 풀 구현체를 사용합니다. 그 외에 오픈소스 라이브러리로 Apache의 Commons DBCP와 Tomcat-JDBC, BoneCP, HikariCP 등이 있습니다.
커넥션 풀 라이브러리를 잘 사용하면 데이터베이스와 애플리케이션의 일부분에서 발생하는 문제가 전체로 전파되지 않게 할 수 있고, 일시적인 문제가 긴 시간 이어지지 않게 할 수 있습니다. 반대로 값을 적절하지 못하게 설정해서 커넥션 풀이 애플리케이션에서 병목 지점이 되는 경우도 있습니다. 웹 애플리케이션의 요청은 대부분 DBMS(database management system)로 연결되기 때문에 커넥션 풀 라이브러리의 설정은 전체 애플리케이션의 성능과 안정성에 영향을 미치는 핵심입니다.
?
?
전자 프로그램 안내 또는 IPG는 텔레비전 방송 프로그램의 편성표를 텔레비전 화면 상에 표시하는 것으로, 텔레비전을 시청하는 사람은 이 편성표를 통해 원하는 프로그램을 선택하거나 시간, 제목, 채널, 장르 등의 기준을 통해 원하는 프로그램을 검색할 수 있는 서비스를 말한다.
Environmental, social and corporate governance
ESG는 환경(Environment)·사회(Social)·지배구조(Governance) 등 3가지 측면에서 건전한 기업에 투자를 해야 한다는 개념.
아마존 일래스틱 컴퓨트 클라우드는 아마존닷컴의 클라우드 컴퓨팅 플랫폼 아마존 웹 서비스의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다.
펌웨어(firmware)는 컴퓨팅과 공학분야에서 특정 하드웨어 장치에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나, 수정되는 것도 가능한 장치를 뜻한다.
펌웨어는 ROM이나 PROM에 저장되며, 하드웨어보다는 교환하기가 쉽지만, 소프트웨어보다는 어렵다.
현대의 시스템에 들어가는 대부분의 장치들은 저들만의 소프트웨어를 실행하는 특수 목적의 컴퓨터들이다. 이 장치들 가운데 일부는 장치 안에 있는 ROM 안에 소프트웨어 (펌웨어)를 저장한다. 그러나, 여러 해에 걸쳐, 제조업체들은 호스트 시스템에서 펌웨어를 불러내는 것이 값이 싸면서도 유연성이 있다는 사실을 알아 냈다. 그 결과, 현재의 많은 하드웨어는 호스트 컴퓨터가 필요한 펌웨어가 채워질 때까지 어떠한 방법으로도 기능을 할 수 없다. 이러한 펌웨어 로드는 장치 드라이버에서 구현된다.
많은 장치들의 펌웨어는 추가 하드웨어를 설치하지 않고, 보통 판매업체가 제공하는 소프트웨어를 통해 업데이트할 수 있다.
함부로 펌웨어를 수정할 경우 때때로 제작자가 의도치 않은 결과를 가져올 수 있다. 일례로 DVD 플레이어의 지역 코드를 지웠을 경우를 들 수 있다.
스마트폰, PDA, DMB, 내비게이션, 디지털 카메라, USB, 전기밥솥 등
간트 차트(Gantt chart)는 프로젝트 일정관리를 위한 바(bar)형태의 도구로서, 각 업무별로 일정의 시작과 끝을 그래픽으로 표시하여 전체 일정을 한눈에 볼 수 있다. 또한 각 업무(activities) 사이의 관계를 보여줄 수도 있다.
게이트웨이는 컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어, 즉 다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트이다.
?
고효율 비디오 코딩는 H.264/MPEG-4 AVC의 성공에 힘입어 개발에 착수한 차세대 동영상 부호화 기술이다.
CATV 등 방송 시설에서 주전송장치(분배센터) 라고 하며,
일반적으로 주 간선에 방송 신호를 송출하기 전까지의 방송국 관련의 모든 설비를 말함
?
HAProxy는 여러 서버에 걸쳐 요청을 분산시키는 TCP 및 HTTP 기반 응용 프로그램을위한 고 가용성로드 밸런서 및 프록시 서버를 제공하는 무료 오픈 소스 소프트웨어이다. C로 작성되었으며 빠르고 효율적임.
HVM ( Hardward Virtual Machine) 완전가상화
AMI의 완전 가상화의 형태로 다른 guest와 완전히 독립되고 OS 수정이 없이 사용이 가능
Hardware 자체가 완전가상화기능(CPU의 VT)을 지원해야 하기 때문에 퍼포먼스가 PV에 비해 떨어진다고 알려져 왔음
하이퍼바이저는 호스트 컴퓨터에서 다수의 운영 체제 (operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)을 말한다. 가상화 머신 모니터 또는 가상화 머신 매니저 (virtual machine monitor 또는 virtual machine manager, 줄여서 VMM)라고도 부른다.
하이퍼바이저는 일반적으로 두 타입으로 나뉜다. 아래 그림 참조.
TYPE 1은 하드웨어에서 직접 실행되고, TYPE 2는 호스트 OS 위에서 실행된다.
인터내셔널 데이터 그룹은 미국 매사추세츠주에 본사를 둔 IT 분야에 특화된 미디어 조사 서비스, 전시회 / 이벤트 운영, 벤처 캐피털 사업을 다루는 기업이다
??
사물인터넷은 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술. 즉, 무선 통신을 통해 각종 사물을 연결하는 기술을 의미한다.
Java Transaction API
자바 트랜잭션 API는 XA 리소스 간의 분산 트랜잭션을 처리하는 자바 API이다. JTA는 자바 커뮤니티 프로세스중 JSR 907로 개발된 규격이다. JTA는 다음과 같은 것을 제공한다.
젠킨스는 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다.
JNDI(Java Naming and Directory Interface)는 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API다.
JNDI는 일반적으로 다음의 용도로 쓰인다:
Java Native Interface
자바 네이티브 인터페이스는 자바 가상 머신 (JVM)위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들) 그리고 C, C++ 그리고 어샘블리 같은 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다.
쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다.
단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 한다. 서버리스, CI/CD, 머신러닝 등 다양한 기능이 쿠버네티스 플랫폼 위에서 동작한다.
Kernel-based Virtual Machine. 커널 기반 가상 머신은 Linux에 구축되는 오픈소스 가상화 기술이다.
KVM을 통해 Linux를 하이퍼바이저로 전환하여 호스트 머신이 게스트 또는 VM(가상 머신) 등 독립된 가상 환경 여러 개를 실행할 수 있게 한다.
Key Signing은 자신의 키를 사용하여 다른 사람의 공개 키를 디지털 서명하는 것을 말한다. 실제 키 자료가 서명 프로세스에 의해 변경되지 않으므로보다 정확한 용어는 Certificate Signing 입니다.
패킷의 MAC 주소를 읽어 스위칭하는 스위치. MAC이 OSI 계층 중 2계층에 해당하기 때문에 Layer 2 스위치라 한다.
가장 흔히 볼 수 있는 스위칭 방식이며, 다른 방식에 비해 저렴하다.
기본적인 동작은 브릿지나 스위칭 허브는 모든 자료를 보내는 곳으로 수신 번지를 전송한다.
브릿지는 어떤 포트에서 받은 데이터를 다른 모든 포트로 전송하나, L2 스위치 허브에서는 여러 개의 포트 중 특정 포트로만 전송한다.
장점
단점
프로토콜 기반으로 스위칭하며, 프로토콜의 패킷 IP나 IPX 주소를 읽어 스위칭하는 스위치. IP, IPX 주소가 OSI 7계층 중 3 계층에 해당하기 때문에 Layer 3 스위치라 한다.
부팅 시 각 포트로 연결된 노드의 상태를 확인하고 노드의 주소를 테이블의 메모리에 적재하여 패킷이 전달될 때 이 정보를 바탕으로 스위칭한다. - 통신 경로를 한 번만 설정한다.
L3는 기본적으로 스위치 자체에 IP주소를 할당한다. 각 포트별 IP 주소 할당 내역 등을 설정하여, 스위칭 할 때 이용한다.
장점
단점
프로토콜 기반으로 스위칭하며, 어플리케이션 별로 우선 순위를 두어 스위칭하는 스위치. 여러 대의 서버를 1대로 묶어 사용할 수 있는 부하 분산 기능(Load Balancing)을 제공한다. - 많은 양의 트래픽을 여러 서버로 분산 가능
L3와 유사한 구조, 동작 원리를 갖고 있지만 가상 랜 기능, 그룹화, 부하 분산 등 고급 설정이 추가로 포함되었다.
TCP/IP 프로토콜 기반으로 동작하는 것이 대부분이며, 포트 번호를 이용한 스위칭 까지도 가능하다.
포트 번호는 수신 컴퓨터에서 IP 패킷의 형태로 결정하여 상위 계층으로 전달된다.
장점
단점
로그(log)를 기록하는 행위.
?
리눅스 컨테이너 Linux Container
LXC는 단일 컨트롤 호스트 상에서 여러 개의 고립된 리눅스 시스템 (컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법이다.
라이브 패치.
시스템을 재부팅하지 않고도 중요한 Linux 커널 보안 업데이트를 설치 및 적용할 수 있는 것을 말한다.
라이브 패치 서비스를 이용하면, 재부팅으로 인한 서비스 중단을 방지할 수 있는 장점이 있다.
실제 객체를 만들어 사용하기에 시간, 비용 등의 Cost가 높거나 혹은 객체 서로간의 의존성이 강해 구현하기 힘들 경우 가짜 객체를 만들어 사용하는 방법이다.
실 제품이 나오기 전 모형을 만들어 보는 것을 말한다.
mockup을 만드는 이유는 실제 비용을 아끼기 위해서 최소한의 비용으로 실제 제품의 대략적 모습을 보고 사전에 손보고 검토하고 개선까지 고려하여 최소한의 비용으로 최대한 완성품의 완성도를 높이기 위해서이다.
MPEG transport stream, TS, TP, MPEG-TS.
오디오, 비디오 데이터 전송을 위한 통신 프로토콜이다. PES( Packetized Elementary Streams ) 와 기타 데이터를 포함하는 디지털 컨테이너 포맷의 일종이다.
멀티플렉서(muptiplexer, mux). 여러 아날로그 또는 디지털 입력 신호 중 하나를 선택하여 선택된 입력을 하나의 라인에 전달하는 장치이다.
이와 반대로, 디멀티플렉서(demultiplexer, demux)는 하나의 입력 신호를 받아서 수많은 데이터 출력선 중 하나를 선택하는 장치를 말하며 단일 입력으로 연결된다. 수신을 받는 쪽에서는 멀티플렉서라는 용어가 보완 관계인 디멀티플렉서와 번갈아가며 사용되기도 한다.
미들웨어
유지 관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기 위한 비동기식 이벤트 기반 네트워크 애플리케이션 Framework 이다.
Old I/O, Blocking I/O
Java 공식 명칭은 아니고, Netty document 페이지에서 사용된 용어. NIO (New I/O) 와 구별을 주기위해 사용되었다.
출처: https://netty.io/3.8/guide/#architecture
자바 바이트코드를 위한 오픈 소스 최적화 도구
ProGuard 는 자바 바이트코드의 최적화를 위해 가장 많이 사용되는 도구이다. ProGuard로 자바나 안드로이드 앱을 최대 90퍼센트까지 작게 만들수 있으면 최대 20퍼센트까지 더 빠르게 수행될 수 있다. ProGuard 는 클래스나 필드 및 메소드 함수등을 난독화함으로써 최소하게 리버스 엔지니어링을 막을수 있다.
SDK, Software Development Kit (소프트웨어 개발 도구 모음)
SDK 안에는 개발에 도움이 될 개발 도구 프로그램, 디버깅 프로그램, 문서, API 등이 있다.
Set Top box, 셋탑 박스의 약자
subversion의 약어, subversion 명령 접두어
깃허브 이전의 프로젝트 형상관리 프로그램
호출되는 함수에게 callback을 전달해서, 호출되는 함수의 작업이 완료되면 호출되는 함수가 전달받은 callback을 실행하고, 호출하는 함수는 작업 완료 여부를 신경쓰지 않으면 Asynchronous다.
호출하는 함수가 호출되는 함수의 작업 완료 후 리턴을 기다리거나, 또는 호출되는 함수로부터 바로 리턴 받더라도 작업 완료 여부를 호출하는 함수 스스로 계속 확인하며 신경쓰면 Synchronous다.
허브의 확장된 개념으로 기본 기능은 허브와 동일하지만 전송 중 패킷의 충돌이 일어나지 않도록 패킷의 목적지로 지정할 포트를 직접 전송한다.
스위치에서 패킷의 목적지 주소를 기준으로 보내는 곳과 받는 곳을 계산하여, 해당 포트로 1:1 연결한다: Switching
스위칭은 정보 전달 수단과 회선의 효율적 운용을 위해 입출력 사태를 감시하며, 전송로의 장애 발생 시 현재 상태에서 예비 상태로 전환한다.
어떤 주소를 가지고 스위칭 하는 가에 따라 L2, L3, L4 스위치로 구분된다.
L2는 MAC 주소, L3는 프로토콜 주소, L4는 세션 프로토콜을 이용하여 스위칭할 수 있다.
JAVA GUI 중 하나인 Swing 의 Event Dispatch Thread 는 스윙 관련 이벤트들을 일렬로 줄세워서 여러개의 이벤트가 동시에 하나의 스윙 컴포넌트에 접근해서 데이터 조작을 하는 것을 막아준다.
즉, UI가 한순간에 하나의 원하는 작업을 하게끔 해주는 Thread 이다.
invokeLater
는 전달된 Runnable
객체가 이 Event Dispatch Thread에서 실행되도록 큐에 넣고 곧바로 리턴한다 (비동기적).
테스트베드(testbed)는 과학 이론, 계산 도구, 신기술에 대해 엄격하고 투명하고 재현 가능한 테스트를 수행하기 위한 플랫폼이다.
WAR 파일은 소프트웨어 공학에서 자바서버 페이지, 자바 서블릿, 자바 클래스, XML, 파일, 태그 라이브러리, 정적 웹 페이지 및 웹 애플리케이션을 함께 이루는 기타 자원을 한데 모아 배포하는데 사용되는 JAR 파일이다
xrdp는 Microsoft Windows 이외의 운영 체제에서 완전한 기능을 갖춘 RDP 호환 원격 데스크톱 환경을 제공 할 수있는 Microsoft RDP 서버의 무료 오픈 소스이다.
Xlet 은 DTV 수신기에서 실행되는 자바 application을 말한다.
DTV에서 자바 application이 동작하기 위해서는 xlet manager(application manager)가 필요하다. xlet manager는 수신기 안에서 동작하는 모든 xlet의 정보를 가지며, 이들을 컨트롤한다.
xlet에는 네 가지 state가 있다.
1. Loaded
-xlet 인스턴스가 새로이 생성되었지만, 초기화 되지 않은 상태
2. Paused
-xlet 인스턴스가 초기화 된 상태
-실행 대기 상태
3. Started / Active
-xlet이 정상적으로 작동하고, 서비스를 제공하는 상태
4. Destroyed
-xlet이 모든 자원을 놓고 종료가 된 상태