공부
-
데이터 검증 유의사항공부 2016. 10. 17. 16:14
기존에 짜여진 코드를 새로운 언어로 변경하여 검증을 할 때 신경써야 하는 부분이 정말 많습니다. 이 중에서 우선순위를 두어 순차적으로 문제해결하는 방법을 설명하겠습니다.기존에 진행하면서 애먹었던 경험을 기반으로 작성한 주관적인 글입니다.단계별 중요도1) 이전 코드와 정확한 동작을 하는 프로세스인지 확인가장 기본이 되는 부분입니다. 기존 코드와 변경한 코드가 동일한 동작을 하는 것이 맞는지 확인을 해야 합니다.2) 각 언어의 정책 확인여기서 중요하게 봐야할 점은 데이터 타입, 빌트인 함수의 동작, syntax error 등이 있습니다.이전에 기존 소스를 새로Go라는 언어로 개발하여 데이터를 검증한 경험이 있는데 Go의 경우 그냥 int를 사용하면 os에 영향을 받아 int 32일 수도 있고 int 64일 ..
-
유니코드 BOM(Byte Order Mark)공부 2016. 10. 12. 15:02
BOM이란BOM이란 문서 맨 앞에 눈에 보이지 않는 특정 바이트(byte)를 넣은 다음 이것을 해석해서 정확히 어떤 인코딩 방식이 사용되었는지 알아내는 방법을 나타냅니다. 자세하게 유니코드가 little-endian 인지 big-endian 인지 아니면 UTF-8 인지 쉽게 알 수 있도록, 유니코드 파일이 시작되는 첫부분에 보이지 않게, 2~3바이트의 문자열을 추가하는데 이것을 BOM이라고 합니다. BOM은 텍스트 에디터 화면에서는 보이지 않고, 헥사 에디터(Hex Editor)*로 열었을 때만 보입니다.BOM의 종류인코딩 방식Byte Order Mark(BOM)UTF-8EF BB BFUTF-16 Big EndianFE FFUTF-16 Little EndianFF FEUTF-32 Big Endian00 ..
-
전각문자(double byte)와 반각문자(single byte)공부 2016. 10. 10. 11:48
전각문자와 반각문자 전각문자는 특수문자 기호로 생각하면됩니다. 여기서 말하는 특수문자 기호는 !@#와 같이 shift+숫자가 아닌 123abc?!과 같은 형태로 윈도우 같은 경우 자음+한자로 생성되는 문자입니다. (맥에서 특수문자를 쓰기가 어려워서..)반각문자는 흔히 우리가 쓰는 기호입니다. 유니코드가 등장하기 전의 멀티바이트 문자 인코딩에서는 일반적으로 반각 문자는 1바이트, 전각 문자는 2바이트로 처리되었으나, 유니코드가 등장한 현재는 반드시 그렇다고는 할 수 없습니다. 일례로 유니코드 인코딩 중 하나인 UTF-8에서는 반각 1은 1바이트로 처리되나 전각 1은 2바이트가 아니라 3바이트로 처리되며, UTF-16에서는 반각 1과 전각 1 모두 2바이트로 처리됩니다. 아스키 코드에 속하는 문자는 반각 형..
-
정규 표현식공부 2016. 7. 7. 16:44
정규 표현식이란?정규표현식의 사전적인 의미로는 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어입니다. 주로 Programming Language나 Text Editor 등 에서 문자열의 검색과 치환을 위한 용도로 쓰이고 있습니다. 입력한 문자열에서 특정한 조건을 표현할 경우 일반적인 조건문으로는 다소 복잡할 수도 있지만, 정규표현식을 이용하면 매우 간단하게 표현 할 수 있습니다. 하지만 코드가 간단한 만큼 가독성이 떨어져서 표현식을 숙지하지 않으면 이해하기 힘들다는 문제점이 있습니다.정규 표현식 방법정규표현식은 표준인 POSIX의 정규표현식과 POSIX 정규표현식에서 확장된 Perl방식의 PCRE가 대표적이며, 이외에도 수많은 정규표현식이 존재하며 정규표현식 간에는 약간의 차이점이 있으..
-
IDS와 IPS공부 2016. 7. 7. 14:49
IDS(Intrusion Detection System)IDS는 컴퓨터나 전산망의 비정상적인 사용이나 오남용과 같은 잠재적인 침입 시도 등을 실시간으로 탐지 하기 위한 시스템입니다. IDS는 컴퓨터 시스템에서 발생하는 서비스 거부 공격 등과 같은 네트워크 공격에 대비하여 기밀성, 무결성, 가용성 등을 제공 하기 위해 만들어진 시스템입니다. 공격자는 특별한 목적없이 공격을 수행할 수 있고, 컴퓨터의 사용자가 인지 하지 못한 상태에서 공격에 가담하고 있을 수 있습니다. 네트워크 규모의 확대와 정보시스템들의 통합은 막대한 양의 시스템 로그 및 감사(Audit)자료를 발생시키기 때문에 관리자에게 정형화 된 형태로 필요한 정보만 선택 하여 수용할 수 있어야 합니다. 이 역할을 하는 것이 바로 IDS입니다.IPS(..
-
네트워크 가상화공부 2016. 7. 7. 14:49
네트워크 관리자에게는 며칠, 길게는 몇 주가 걸릴 수 있는 환경 설정 요청들이 마구 쏟아진다. 다행히 네트워크 민첩성을 높여줄 수 있는 여러 가지 방안들이 나오고 있는데, 그 중에서 네트워크 가상화(Network Virtualization), NFV(Network Functions Virtualization, 네트워크 기능 가상화), 그리고 SDN(Software Defined Networking, 소프트웨어 정의 네트워킹(SDN)이 가장 두드러진다.난해한 용어들은 보기만 해도 머리가 지끈거리겠지만 이 접근 방법들은 네트워크 이동성이라는 큰 문제에 있어 각기 서로 다른 부분집합을 해결하기 위한 것이다. 네트워크 가상화와 NFV, SDN이 어떻게 다르고, 각각이 어떻게 프로그래밍 가능한 네트워크를 향한 길..
-
인터프리터와 컴파일러공부 2016. 7. 6. 15:06
인터프리터란?컴파일러와는 다른 방식으로 코드를 기계어로 번역해 주는 프로그램. 스크립트 언어의 사실상 전부가 인터프리터 방식이고 각종 DSL(도메인 특화 언어)의 해석 엔진도 인터프리터로 구현된다. 코드를 한 줄씩 번역하는 방식으로 기계어 번역을 진행하기 때문에 실행 속도는 컴파일 언어보다는 느리다. 그러나 요즘의 인터프리터는 번역 결과를 캐싱하거나 JIT를 사용하는 등의 방법으로 실행 속도를 컴파일 언어에 상당히 근접한 수준으로 따라잡긴 했다. (그래도 컴파일 언어보단 느림)여기까지 읽었다면 그 느린 것을 왜 쓰느냐는 의문에 도달하겠지만, 인터프리터 언어는 프로그램 수정이 간단하다는 장점이 있다. 컴파일러는 소스 코드를 번역해서 실행 파일을 만들기 때문에 프로그램에 수정 사항이 발생하면 소스코드를 수정..
-
JIT(Just-In-Time)공부 2016. 7. 6. 15:06
JIT란?C나 C++에서 하는 것처럼 프로그램을 실행하기 전에 처음 한 번 컴파일하는 대신, 프로그램을 실행하는 시점에서 필요한 부분을 즉석에서 컴파일하는 방식을 말한다.JIT 사용보통 인터프리터 방식의 언어 구현들이 성능 향상을 목적으로 도입하는 경우가 많은데, 같은 코드를 매번 해석하는 대신 실행하기 전에 그 부분만 컴파일을 해 두고 다음부터는 컴파일된 코드를 쓰기 때문에 인터프리터의 느린 실행 성능을 개선할 수 있다. JIT 이전부터 실행 성능 문제 때문에 바이트코드 컴파일을 도입했던 Java와 같은 언어들도 바이트코드를 해석하는 대신 컴파일된 기계어 코드를 직접 실행하는 쪽이 어쨌든 빠르기 때문에 역시 JIT를 도입하고 있다.JIT 단점단점이라면 초기 구동 후 얼마 간은 소스코드(혹은 바이트코드)..
-
MVC패턴공부 2016. 6. 26. 23:36
MVC패턴이란?MVC이란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.Model, View, ControllerController사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. Model일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 ..