[학.알.17.실.개.기] 1장 문자열 인코딩~5장 범용 고유 식별자

Chaejung·2022년 2월 7일
0
post-thumbnail

<이기곤, 학교에서 알려주지 않는 17가지 실무 개발 기술_문자열 인코딩부터 웹 필수 지식까지, 한빛미디어

1장 문자열 인코딩

p.27 Tip 개발 환경에서는 실제 문자열 길이와 컴퓨터가 할당하는 버퍼*크기를 동일하게 취급해 생기는 버그가 생각보다 많습니다. 문자열을 취급할 때는 어떤 문자열 인코딩 방식을 쓰는지 반드시 알아야 하고, 가능한 같은 문자열 인코딩을 사용하는 것이 좋습니다.

버퍼 ?

컴퓨팅에서, 버퍼(buffer)는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼링(buffering)이란 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐(Queue)'라고도 표현한다. (출처: 위키백과)

더 읽어보기
모두의 코드-씹어먹는 C 언어-<15-2. 일로와봐, 문자열(string)-버퍼에 관한 이해>

2장 다국어 처리

p.44 ~아직 PO 파일*과 MO 파일*을 만들지 않아서 이 코드를 그대로 실행하면 다음과 같은 에러를 출력합니다.

PO 파일(Portable Object) ?

프로그래머와 번역자는 GNU gettext의 도구를 이용해 번역 파일을 만들고, 새로 고치고, 사용한다. 이 번역 파일은 텍스트 형식이고, 직접 편집할 수 있는 PO 파일이다. (출처: PO 파일과 PO 모드의 기본)

소프트에어 개발을 위한 텍스트 기반 개체 파일. Java 프로그램. GNU gettext 또는 기타 소프트웨어 프로그램에서 속성 파일로 참조할 수 있습니다. 텍스트 편집기에서 볼 수 있는 사람이 읽을 수 있는 형식으로 저장합니다. (출처: Scriptcult)

참조할 만한 블로그
Java에서 PO파일로 다국어 처리하기

MO 파일(Machine Object) ?

프로그램에서 참조하는 개체 데이터를 포함하는 이진 데이터 파일. 일반적으로 프로그램 코드를 번역하는데에 사용됩니다. GNU gettext 프로그램으로 로드하거나 가져올 수 있습니다. MO파일은 본질적으로 바이너리이기 때문에 .PO파일처럼 읽을 수 없습니다. 그러나 텍스트 편집기에서 인식할 수 있는 일부 데이터가 포함될 수 있습니다. (출처: Scriptcult)

정리를 하자면,
gettext 프로그램으로 문장을 추출해 PO 파일을 생성한다.
PO 파일은 번역될 텍스트과 번역된 텍스트가 함께 있는 파일이다.

문장을 추출하기 위해 gettext 프로그램 실행 전에 초기화 과정이 필요하다.
MO 파일은 PO 파일에서 생성되는데, 번역 프로그램이 실행되면 gettext.translation의 transition 오브젝트를 초기화하는 역할을 한다.

구체적인 코드나 작동 방식이 궁금하다면


p.52 다국어를 지원할 시 언어 변경 기준을 확실히 정해야 합니다. 이 책에서는 운영체제의 언어를 기준으로 삼았지만 웹 서비스는 요청마다 언어가 다를 수 있습니다. 그래서 페이지를 요청한 브라우저의 언어 설정(HTTP 헤더의 Accept-Language 값)을 기준으로 삼되, 상황에 따라 IP 대역을 추가하는 방법도 있습니다.

3장 날짜와 시간

p.59 real_time.py 실습해보기

서버시간?

p.65 실무에서는 서비스 발견 기능을 사용해 여러 서버가 같은 타임 존을 사용하는지 확인할 수 있습니다. 서버 개발자라면 ETCD*나 주키퍼Zookeeper*를 사용해보는 것도 좋습니다.

ETCD ?

etcd('엣시디'로 발음)는 머신의 분산된 시스템 또는 클러스터의 설정 공유, 서비스 검색 및 스케줄러 조정을 위한 일관된 오픈소스, 분산형 키=값 저장소입니다. etcd는 더욱 안전한 자동 업데이트를 지원하고, 호스트에 스케줄링되는 작업을 조정하며, 컨테이너에 대한 오버레이 네트워킹 설정을 지원합니다. (출처: etcd란?)

주키퍼 ?

분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트
주키퍼는 직접 애플리케이션 작업을 조율하지 않고 조율하는 것을 쉽게 개발할 수 있도록 도와주는 도구이다. API를 이용해 동기화나 마스터 선출 등의 작업을 쉽게 구현할 수 있게 해준다.
분산 코디네이션 서비스란?- 분산 시스템에서 시스템 간의 정보 공유, 상태 체크, 서버들 간의 동기화를 위한 락 등을 처리해주는 서비스 (출처: [🧙Kafka] 카프카 정리 - 주키퍼(ZooKeeper)란?)

4장 정규 표현식

p.82 정규 표현식은 크게 두 가지로 POSIX(또는 POSIX 확장), 펄 호환 규칙(PCRE)이 있습니다. 두 규칙은 비슷하나, 일부 다르게 동작하는 메서드가 있습니다. 만약 프로그래밍 언어나 소프트웨어 프레임워크에서 처음 정규 표현식을 사용한다면 어떤 표준을 사용할지 알아두는 게 좋습니다.

POSIX

PCRE


p.73 그 외 유용한 패턴들
• \w: 특수 문자. 공백을 제외한 글자 1개를 찾을 때 사용합니다.
• \W: 특수 문자와 공백만 찾을 때 사용합니다. 위 패턴과 반대로 동작합니다.
• 대괄호 안 캐럿(^): NOT을 뜻하며 캐럿(^) 이후에 오는 패턴을 제외한 모든 글자를 찾습니다. 예를 들며 [^A-Z] 패턴은 대문자를 제외한 모든 글자 1개를 찾을 때 사용합니다. 캐럿 글자를 검사하고 싶다면 역슬래시를 추가해야 합니다.
• 대괄호 밖 캐럿(^): 가장 처음에 오는 대문자를 찾는 패턴입니다. ^[A-Z]는 주어진 문자열의 첫 번째 문자가 대문자로 시작할 경우 대문자를 찾는 패턴입니다.
• 대괄호 밖 달러($): 캐럿과 반대의 의미로 가장 마지막 글자를 검사합니다. 마지막 글자에 달러를 추가합니다. 예를 들어 [0-9]$ 패턴은 가장 마지막에 오는 글자가 숫자인지 검사합니다. 달러가 대괄호 안에 있으면 달러 글자 1개만 찾는 패턴으로 인식하며, 달러 글자를 찾을 때는 역슬래시가 필요하지 않습니다.
• 대괄호 밖 점(.): 점은 모든 글자를 포함하는 패턴으로 공백을 포함한 모든 글자가 이 패턴과 일치합니다. 만약 대괄호 안에서 점을 사용하면 점 문자 1개만 검사하며, 역슬래시가 필요하지 않습니다.

더 알아보기
점프 투 파이썬-07-2-정규 표현식 시작하기
위키백과-정규 표현식

5장 범용 고유 식별자

p.85
• 맨 뒷부분 12글자를 맥 주소*로 사용하는 경우
(맥 주소가 12:34:56:78:90:AB인 경우)
15581597-4800-1234-1234-1234567890AB

MAC 주소 ?

MAC 주소(Media Access Control Address)는 네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자이다. MAC 주소는 이더넷과 와이파이를 포함한 대부분의 IEEE 802 네트워크 기술에 네트워크 주소로 사용된다. (출처: 위키백과)


p.86 하지만 맥 주소과 타임스탬프 값으로 서버를 식별하는 건 한계가 있습니다. 마이크로 서비스 아키텍처*는 맥 주소가 달라도 같은 서버로 인식해야 하고, 도커*와 같은 가상 서버는 같은 맥 주소를 가진 여러 서버를 동시에 생성할 수 있기 때문입니다.

마이크로 서비스 아키텍처 ?

도커 ?

profile
프론트엔드 기술 학습 및 공유를 활발하게 하기 위해 노력합니다.

0개의 댓글