본문 바로가기

개념59

[데이터 통신] 패리티 비트 패리티 비트는 정보의 전달 과정에서 오류가 생겼는지 확인하기 위해 추가하는 비트이다. 8bit 데이터 구조에서 7bit는 전달하는 데이터(ascii는 7bit로 모두 표현가능)를 표현하고, 마지막 1bit로 데이터에 오류가 있는지 확인하는 것이다. 최종적으로 덧붙이는 비트에 따라, 짝수 패리티, 홀수 패리티로 구분된다. * 패리티는 오류의 발생여부를 알 수 있지만 수정할 수는 없다. https://ko.wikipedia.org/wiki/%ED%8C%A8%EB%A6%AC%ED%8B%B0_%EB%B9%84%ED%8A%B8 2016. 6. 14.
[Java] 큐(Queue) 자료구조에서 큐는 FIFO(First In First Out) 구조의 자료이다. 처음 들어간 데이터를 출력한다. 구현방식에 따라 다양한 종류가 존재한다. 자바의 util 에는 기본적으로 큐를 제공하기 때문에 해당 부분을 이용하면 된다. ArrayDeque 를 이용하면 되는데 주의할 점이 하나 있다. * 데이터를 입력하는 방법에 offer(), push() 두가지 메소드가 있는데 push는 데이터를 앞으로 입력하고, offer는 데이터를 뒤로 입력한다. push 만을 이용하여 데이터를 입력하면 스택처럼 동작하고, offer 만을 이용하여 데이터를 입력하면 큐로 동작한다. 따라서 데이터를 입력할 때 메소드를 잘 선택하여 입력해야 한다. import java.util.ArrayDeque; public clas.. 2016. 6. 10.
[JAVA] 스택(Stack) 스택은 자료구조에서 LIFO(Last In First Out) 구조를 가지는 자료구조이다. 구현하는 방식에 따라 종류가 많이 있다. 자바의 util 에 기본적으로 스택을 제공해주기 때문에 따로 구현하지 않고 이 클래스를 사용하면 된다. import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack stack = new Stack(); // 데이터 입력 stack.push(5); stack.push(4); stack.push(3); stack.push(2); stack.push(1); // 데이터 출력 System.out.println("마지막에 넣은 데이터부터 출력.."); System.ou.. 2016. 6. 10.
각 정렬 알고리즘별 속도 확인 각 알고리즘의 속도를 확인할 수 있다. http://www.sorting-algorithms.com/ http://m.todayhumor.co.kr/view.php?table=bestofbest&no=200940 2016. 5. 18.
기계학습, 딥러닝, 알파고, 텐서플로우 [알파고] - AlphaGo, Go는 일본어로 바둑을 뜻함 - 딥러닝(Deep Learning) 기술을 이용하여 바둑을 학습, 현재는 프로 5단의 실력을 가지고 있다고 함 - 구글에 인수된 인공지는 연구 업체 딥마인드가 개발 알파고 (바둑 인공지능)의 작동 원리 from Shane (Seungwhan) Moon [머신러닝(기계학습)] - 컴퓨터가 스스로 학습해 패턴을 찾고, 최적을 판단을 하는 알고리즘 - 알고리즘을 3가지 분류로 구분할 수 있음 -- 확률기반 -- 기하기반 -- 인공 신경망 --- 딥러닝 머신러닝의 한가지 임 새로운 개념은 아님 인공신경망 개념에 발달한 H/W 성능으로 최근 대두되기 시작 [텐서플로우]- 구글에서 공개한 머신러닝을 위한 오픈소스- giHub 에 공개되어 있음- 파이썬 A.. 2016. 3. 10.
인터넷 광고의 다운로드 속도 100Mbps의 실제 다운로드 속도 컴퓨터 데이터의 단위는 bit 이다. 보통 컴퓨터의 용량을 표기할 때 아래와 같이 표기한다. 8bit = 1Byte 1024Byte = 1KByte 1024KByte = 1MByte 1024MByte = 1GByte 1024GByte = 1TByte 이를 이진법 표기라고 한다. 일반적 인터넷 다운로드 속도를 100Mbps 라고 표기하는 데 이는 십진법 표기를 따른다. 1K = 1,0001M = 1,000,0001G = 1,000,000,000 과 같이 표기가 된다. 즉 이진법 표기와 십진법 표기에 따라서 생각하는 다운로드 속도가 다를 수 있다는 것이다. 100Mbps = 1,000,000 bps --(이진법 변환)--> 1,000,000/8/1024/1024 = 11.92MBps 가 된다. 1byte는 .. 2016. 2. 17.
C10K 문제(C10K problem) C10K는 다수의 클라이언트를 동시에 처리할 수 있는가에 대한 의문이다. (1만개의 소켓을 열게 된다면 하드웨어가 충분한데도 불구하고 I/O 처리방식의 문제때문에 프로세스가 제대로 처리하지 못한다는 것) 소켓을 처음 설계할 당시에는 10K의 클라이언트를 처리할 하드웨어 여력이 되지 않았기 때문에 생기는 의문이었다. 현재는 이를 해결하는 방법으로 Unix 계열에서는 select(), opll(), kqueue(), 윈도우 계열에서는 ICP 등을 이용하여 처리한다. 이를 해결하기 위해, NGINX, node.js 에서는 이벤트 드리븐방식의 비동기 처리를 통해 해결한다. 참고 http://openwiki.kr/tech/c10k_problemhttps://en.wikipedia.org/wiki/C10k_prob.. 2016. 1. 22.
[개념] REPL REPL - Read-eval-print loop - Read-Evaluate-Print loop - 하나의 입력을 받아서(Read single input), 처리하고(Evaluate), 결과를 반환하는(Print result) 환경으로 구현된 프로그램을 REPL 이라고 한다. - 즉, 커맨드라인 인터페이스를 가지는 프로그램이다. - 보통 js, python 같은 스크립트 언어를 말한다. https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop 2015. 7. 20.
[패턴] 전략 패턴(Strategy Pattern) 전략 패턴, 스트래티지 패턴(Strategy Pattern) 전략 패턴에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 클래스안에서 동작하는 것들을 멤버함수로 설정하지 않고, 클래스로 별도로 생성하여 처리하는 것 * 알고리즘(메소드) 부분만 변경하여 하나의 클래스가 여러가지 행동을 할 수 있도록 설정하는 것 예제코드import java.util.ArrayList; import java.util.List; public class StrategyPatternWiki { public static void main(String[] args) { Customer a = new Customer(new Norma.. 2015. 7. 6.
[개념] NPAPI 크롬의 NPAPI 지원종료 구글에서 아래와 같이 NPAPI를 지원하지 않는다고 한다. Chrome 버전 42 이상에서 NPAPI 플러그인이 작동하지 않음 플러그인을 사용하면 추가적인 기능을 브라우저에 추가할 수 있습니다. 예를 들어 특정한 유형의 동영상을 시청하거나 웹페이지에 있는 게임을 즐길 수 있습니다. NPAPI 지원 종료 예전에는 NPAPI라는 오래된 시스템을 사용하여 많은 플러그인이 개발되었습니다. 오늘날 NPAPI 플러그인을 사용하는 사이트는 점차 줄어들고 있으며 이러한 플러그인은 웹사이트에 보안 위험을 일으킬 수도 있습니다. Chrome 검색의 안전성, 속도, 안정성을 개선하기 위해 Google은 Chrome 버전 42에서 NPAPI 플러그인에 대한 지원을 종료합니다. 지원되는 플러그인 Ad.. 2015. 7. 1.
[스크랩] GMT, UTC, KST GMT, UTC, KST AWS를 이용하여 서버 개발을 진행하다 보면 지역별로 시간이 달라서 GMT를 기준으로 이야기를 많이 한다. 그러다 보니 KST는 한국시간인 것을 알겠는데, GMT, UTC 가 헷갈리는 경우가 있었다. 그래서 확인해 보니 GMT = UTC 이다. KST는 GMT +9 시간 이다. 협정 세계시(Coordinated Universal Time, UTC) 1972년 1월 1일부터 시행된 국제 표준시이다. UTC는 그리니치 평균시(Greenich Mean Time, GMT)로 불리기도 하는데, UTC와 GMT는 초의 소수점 단위에서만 치이가 나기 때문에 일상에서 혼용되어 사용한다. 즉 GMT = UTC 이다. 참고 https://ko.wikipedia.org/wiki/%ED%98%91%E.. 2015. 6. 18.
[스크랩] 리눅스와 유닉스 유닉스 AT&T 벨 실험실에서 개발된 운영체제이다. 간결하면서도 우연한 명령어 구성으로 이루어졌으며, 이식성이 강한 개방형 시스템이다. 시분할 시스템에서 멀티유저의 접근을 허용하며, 멀티 태스킹 시스템으로 동시에 여러프로세스를 처리할 수 있다. 리눅스 리눅스는 유닉스와 거의 닮은 운영체제 이지만, 유닉스의 장점을 포함하면서 새로운 여러기능들이 적용되어 현존하는 어느 운영체제보다도 강력하고 뛰어난 운영체제이다. 핀란드 헬싱키 대학의 리누스 토발즈가 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여 개인 PC 에서도 사용할 수 있는 공개 운영체제로 개발하고 자신의 이름을 따서 리눅스로 정했다. 즉, 유닉스를 개인 컴퓨터에서 사용할 수 있도록 한 것이 리눅스이다. 유닉스는 하드웨어와 함께 제공되는 경우가 .. 2015. 6. 11.
[자료구조] 힙과 힙소트 힙 힙은 자료구조의 하나로 최대값, 최소값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로한다. l 최대힙 : 부모노드의 값이 자식노드보다 크다. l 최소힙 : 자식노드의 값이 부모노드보다 크다. 부모와 자식 노드간의 대소관계만 정해지고, 자식 노드간의 대소관계는 정해지지 않는다. 힙정렬 힙을 구성하여 정렬을 수행하는 것을 힙정렬이라 한다. 최대힙을 이용하여 정렬을 수행하는 방법은 다음과 같다. 1. 최대힙을 구성한다. 2. 최대힙의 루트값을 배열의 맨뒤로 보내고 배열의 사이즈를 하나 줄인다. 3. 변경된 배열에 대해서 최대힙을 다시 구성한다. 4. 2 ~ 3의 과정을 배열의 길이가 1이 될때까지 반복한다. 소스코드[Java] public class MaxHeapSort { public.. 2015. 6. 8.
[자료구조] 배열과 링크드 리스트 배열과 링크드 리스트 배열 - 데이터를 논리적 순서에 따라 순차적으로 데이터를 입력하며, 물리적 주소 또한 순차적이다. - 인덱스를 가지고 있어서 원하는 데이터를 한번에 접근이 가능하기 때문에 접근 속도가 매우 빠르다. - 그러나 배열은 데이터의 삽입/삭제에는 취약하다. n 배열의 특성상 데이터 삽입/삭제가 이루어지면, 다음 위치의 모든 데이터의 위치를 변경해야 하기 때문이다. 링크드 리스트 - 데이터를 논리적 순서에 따라 데이터를 입력한다. 하지만 물리적 주소는 순차적이지 않다. - 현재 위치 이전 및 다음 위치를 기억하고 있다. n 따라서 한번에 데이터에 접근할 수 없고, 순차적으로 링크를 따라가야만 접근이 가능하다. - 링크드 리스트의 종류 n 링크드 리스트(Simple Linked List) u .. 2015. 6. 4.
[알고리즘] 시간 복잡도 - 프로그램을 실행시켜 완료하는데 걸리는 시간 - 알고리즘의 일반적인 시간 복잡도는 명령어의 실행 횟수를 고려한다. n for 문을 반복한 횟수, 일반 연산을 처리한 횟수 등의 합에서 상수는 제외하고 최고차항만 생각 시간 이름 bit 별 처리 시간 1 상수형 1, 1, 1, 1, 1, 1 log n 로그형 0, 1, 2, 3, 4, 5 n 선형 1, 2, 4, 8, 16, 32 n log n 선형 로그형 0, 2, 8, 24, 64, 160 n^2 평방형 1, 4, 16, 64, 256, 1024 2^n 지수형 2, 4, 16, 256 n! 계승형 1, 2, 24, 40326 - 로그형 < 선형 < 선형 로그형 < 평방형 순으로 갈수록 복잡해진다. - 빅오[O(N)]: 알고리즘 실행시간의 상한을 나타내는.. 2015. 5. 26.
[용어] 서비스 수준 협약 - SLA(Service Level Agreement) 서비스 수준 협약 - SLA(Service Level Agreement) 서비스를 제공함에 있어서 제공 서비스에 대한 측정지표와 목표에 대한 협약서이다. 서비스될 수 있는 시간 비율, 동시 사용자수, 사용량 통계 등의 정보를 정의한다. 협의한 지표에 대한 수행결과로 계약의 수행여부를 판단한다. 참고 - 아마존 AWS EC2의 SLA 계약 (월별 가동시간 비율에 따라 금액 산정) http://aws.amazon.com/ko/ec2/sla/ 2014. 12. 29.
NoSQL NoSQL 이란? No SQL 또는 Not Only SQL의 약자이다. 기존의 RDBMS와 다른 형태의 데이터 저장 방법을 통칭한다. MongoDB, Casandra 가 가장 유명하다. RDBMS와의 차이 관계를 정의하지 않는다. RDBMS의 외부키를 이용한 다른 테이블과의 관계가 없다. 대용량의 데이터를 저장한다. 분산형의 구조이다. 고성능 머신 하나에 데이터를 저장하지 않고, 다수의 컴퓨터에 데이터를 저장한다. 스키마를 고정하지 않는다. RDBMS 는 칼럼의 데이터 타입을 지정하면 해당 형태의 데이터만 입력해야 하지만, NoSQL은 데이터 형식을 고정하지 않는다. 다양한 종류(http://nosql-database.org/)가 있기 때문에 사용을 고려 한다면 자신이 사용해야 하는 상황에 맞는 종류를 .. 2013. 8. 14.
BI(Business Intelligence) BI 비지니스 인텔리전스란 포괄적인 개념으로 기업의 의사결정에 도움을 주는 시스템, 프로세스를 말한다. DI로 데이터를 집적해서, DW로 정보를 묶어 놓으면 이를 분석해서 요청자가 원하는 정보를 분석하고 예측해서 결과를 내어 놓는 시스템을 말한다. 다시 말해서 DW가 과거의 데이터의 집약체고, OLAP는 과거의 데이터를 분석해서 보여주는 것이고, BI는 이 자료들을 활용하여 미래의 데이터를 예측하는 것이다. 참고자료 실시간 기업과 BI, DW의 역활 - http://allen222.egloos.com/5001839 BI와 OLAP의 차이 - http://k.daum.net/qna/view.html?qid=3SjAV 차세대 BI 시스템 구축전략 - http://blog.naver.com/PostView.n.. 2013. 8. 14.
하둡 하둡이란? 하둡은 클러스터 환경에서 대량의 자료를 처리할 수 있는 자바로 작성 된 오픈 소스 프레임워크 이다. 구글의 분산처리 시스템인 구글 파일 시스템(GFS)의 영향을 받아서 하둡 분산 파일 시스템(HDFS)과 파일 분석을 위한 맵리듀스를 구현하였다. 하둡의 특징 로그, 텍스트, 이미지 등의 비정형 데이터를 다루는데 유리하게 되어 있다. 실시간 처리보다는 배치처리에 적합하다. 하둡의 구조 하둡의 분산 파일 시스템은 네임노드(Namenode), 데이타노드(Datanode)로 구성된다. 네임노드가 마스터이고 데이타노드가 슬레이브이다. 네임노드가 데이타노드의 위치를 메타데이터로 관리하고 있으며, 네임노드에 이상이 생길 경우 시스템에 문제가 발생 할 수 있기 때문에 세컨더리네임노드(Secondary Name.. 2013. 8. 13.
아마존 AWS, EC2, EMR, S3 소개 아마존 AWS(링크) Amazon Web Services에서는 사용자가 엔터프라이즈 애플리케이션 및 빅 데이터 프로젝트에서 소셜 게임 및 모바일 앱에 이르는 클라우드의 거의 모든 곳에서 실행할 수 있는 다양한 인프라 및 애플리케이션 서비스 집합을 제공합니다. 클라우드 컴퓨팅의 주요 이점 중 하나는 초기 기본 인프라 비용을 비즈니스에 맞춰 조정되는 저렴한 가변 비용으로 대체할 수 있는 기회가 된다는 점입니다 아마존 EC2(링크) Amazon Elastic Compute Cloud(Amazon EC2)는 클라우드에서 컴퓨팅 파워의 규모를 자유 자재로 변경할 수 있는 웹 서비스입니다. 이 서비스는 개발자가 웹 스케일 컴퓨팅을 쉽게 사용할 수 있도록 설계되었습니다. Amazon EC2의 간단한 웹 서비스 인터페.. 2013. 7. 2.
[개념] OLTP, OLAP, Data Warehouse, Data Mart http://blog.daum.net/marae/3861068 Batch Processing 작업을 몰아두었다가 한번에 처리하는 시스템. 예:선거투표결과 추출, 게임 이벤트 아이템 일괄 지급 등 OLTP: OnLine Transaction Processing Batch 와 반대되는 개념으로 실시간으로 db의 데이터를 트랜잭션 단위로 갱신/조회하는 처리방식. 은행, 증권사 등에서 씀. 기존과 달리 다수의 client가 거의 동시에 이용할수 있도록 송수신자료를 트랜잭션단위로 압축한것이 특징. DW: Data Warehouse 수년간 발생한 데이터를 모아서 주제별로 합쳐 분석할 수 있게 하는 통합시스템. 예) 운영데이터, 분산데이터, 시장데이터를 추출하여 DW를 구축하고 그걸 DSS나 OLAP로 분석 ※Dat.. 2013. 6. 19.
Apache vs Tomcat 지금까지 아파치와 톰캣을 같은 웹애플리케이션서버(WAS)라고 생각 했었는데 둘 사이에는 차이가 존재한다.지금 부터라도 둘의 차이를 잘 알아둬야 겠다. 위키피다아 - 톰캣위키피디아 - 아파치 아파치는 웹서버(Web Server) 이고, 톰캣은 웹 애플리케이션 서버(Web Application Server)이다. 톰캣은 자바로 구현된 Jsp, 서블릿을 처리하는데 특화된 애플리케이션 서버이고, 정적 구성요소(html, 이미지, css, js) 등의 처리는 웹 서버가 더 빠르다.아파치는 perl, ruby, php 등의 처리도 가능하고 톰캣보다 빠른 성능으로 정적 구성요소 처리가 가능하다. 아파치가 톰캣보다 큰 형태의 웹서버가 되겠다. 상세한 내용은 Stack Overflow 의 내용을 보면 된다. * 아파치는.. 2013. 6. 19.
SSH 터널링 SSH 터널링의 이해(http://www.hanb.co.kr/network/view.html?bi_id=547)* 아주 좋은 글이다. 꼭 읽어 보자. SSH 터널링에 대하여 완벽한 이해가 가능하게 해준다. * 터널링(or 포워딩)은 통신 채널을 외부 공격으로 부터 안전하게 보호해 준다. * SSH 프로토콜을 이용한 터널링이 가장 대중적이고 많이 사용되어 진다.* Local, Remote의 두가지 종류가 있다. SSH(Secure Shell) 시큐어 쉘 시큐어 셸은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 기존의 rsh, rlogin, 텔넷 등을 대체하기 위해 설계되었으며, 강력한.. 2013. 6. 19.
웹페이지 구현에서 파라미터 처리할 때 마우스의 뒤로가기 버튼으로 인한 동작 처리하기 웹페이지를 구현할 때 화면에 세션의 정보를 이용하여 처리하는 로직을 넣을때 보통 JSP EL 로는 다음과 같이 처리를 생각할 것이다. //jsp EL 처리 var rcvParams = '${h_move_param}'; 그런데 이렇게 구현하고 마우스의 뒤로가기 버튼이나 백스페이스 버튼을 이용하여 돌아가면 웹브라우저는 서버에 요청을 처리하지 않고 높은 확률로 로컬의 히스토리 파일을 읽어서 처리한다. 따라서 내가 생각하는 처리방식과 다르게 동작할 수 있다. 이럴때는 jQuery를 이용하여 post 로 세션의 정보를 그때 그때 받아와서 처리하는 방식을 사용하는 것이 더 정확하다. $.post('${pageContext.request.contextPath}/com/getSessionData.json', funct.. 2013. 4. 30.
IE8의 Textarea 의 스크롤링 버그 IE8의 Textarea는 width를 %로 지정했을 때 textarea 안의 내용이 많아지면 스크롤이 더이상 진행되지 않는 오류가 존재한다. (참고링크) 이는 textarea의 change 이벤트 처리시 width와 col 속성을 제대로 가져오지 못해서 발생하는 버그라고 한다. 이문제를 해결하는 방법은 width, height 를 %로 주지말고 px 로 설정하는 방법과 textarea의 col, row 속성을 설정해주는 방법이 있다. 나는 이문제를 다음과 같이 해결하였다. .editor { width: 99.5%; padding-top: 3px; } // cols 속성을 width 보다 넉넉하게 설정 2013. 4. 26.
BASE 64 인코딩 Base 64란 8비트 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 문자로 이루어진 6비트 데이터로 변환하는 것이다. 8bit 데이터 3개가 6bit 데이터 4개로 변환되는 것이다. 이 6bit 데이터는 ASCII 코드로 변환이 되고, 이를 이용하면 이기종간 문자코드가 달라도 데이터 처리가 가능하게 된다. 위키, 참고1, 참고2, 참고3 Java에서 Base64 인코딩을 처리하려고 하면 sun.misc.BASE64Decoder 를 이용하게 되는데 Java에서 sun 의 하위폴더에 들어있는 패키지를 이용하는 것은 권장하지 않는다고 한다. 따라서 되도록 이면 apache 등에서 제공해주는 라이브러리를 이용하는 것이 좋을 것 같다. (apache common 의 codec 참조) 일단 sun의 라이브.. 2013. 4. 15.
IE, FF, Chrome 에서 렌더링이 다른 이유 알아보기. 웹페이지를 개발하고 있다. 그런데 동일한 소스코드임에도 FF, IE, Chrome 가 렌더링하는 모양이 모두 다르다. 어떤 느낌이냐면 IE랑 Chrome 이 대충 알아서 잘 그려준다면, FF는 내가 설정한 대로 정확하게 그려 주는 느낌... 분명히 동일한 코드 임에도 FF 에서만 다르게 그려주기 때문에 크로스브라우서 설정을 위해서 모두 깔아두고 테스트 할 수 밖에 없다. 거기다 IE8, IE9 의 동작 차이도 있기 때문에 지금 컴퓨터에 깔려 있는 브라우저만 Chrome, FF, IE8, IE9 4개 이다. 그래서 도데체 왜 이렇게 다르게 그려주는 것인가를 한번 알아보기로 했다. 참조 페이지 링크Ethanjoh 님 블로그 => http://ethanjoh.tistory.com/196브라우저 렌더링 엔진 위.. 2013. 3. 12.
IT 회사 관련 정보 - 잉여개발자의 꿀 위키 링크 => 꿀위키 심심할때 한번씩 읽어보면 재미있을 것 같다. 역시 자기회사에 대한 뒷 이야기가 ㅎㅎ 2013. 2. 18.
기업에서 페이스북 제대로 활용하는 법 링크 => http://mushman.co.kr/2691862 소셜시대가 가속화 되고 있는 만큼 나 개인적으로도 페이스북을 어떻게 활용할 것인지를 생각해 보자. 2012. 11. 28.