본문 바로가기

전체1128

[클린코드] 오류처리 오류처리 오류 코드보다 예외를 사용하라. - 논리와 오류 코드가 뒤섞이지 않게 하라. Try-Catch-Finally 문부터 작성하라. 미확인 예외를 사용하라(런타임 익셉션을 사용하라.) - checked 익셉션이 제공하는 장점보다는 단점이 더 많다. 예외에 의미를 제공하라. 호출자를 고려해 예외 클래스를 정의하라. - 외부 API를 이용할 때 래퍼(Wrapper) 클래스를 이용하여 의존성을 줄여준다. 정상 흐름을 정의하라. - 특수 사례 패턴을 이용하여 예외적인 상황을 캡슐화해서 처리하도록 한다. n 반환할 값이 없을 때 익셉션을 던지지 않고, 기본값을 가진 객체를 반환하도록 한다. null을 반환하지 마라. - null 을 반환하기 보다는 예외를 던지거나 특수 사례 객체를 반환한다. null을 전달하.. 2015. 7. 2.
[클린코드] 객체와 자료 구조 객체와 자료 구조 자료 추상화 - 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. - 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. - 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다. God Bad public interface Point { double getX(); double getY(); void setCartesian(double x, double y) double getR(); double getTheta(); void setPolar(double r, double theta ) public class Point { public double x; public double y; } public interface Veichl.. 2015. 7. 2.
[클린코드] 형식 맞추기 형식 맞추기 형식을 맞추는 목적 - 코드는 의사소통의 일환이다. 적절한 행 길이를 유지하라. 신문 기사처럼 작성하라. - 제목(함수명)만 보고 내용을 상상할 수 있도록 개념은 빈 행으로 분리하라. 팀규칙에 따르라. 어쩌면 돌아가는 코드'가 전문 개발자의 일차적인 의무라 여길지도 모르겠다. 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. 2015. 7. 2.
[클린코드] 주석 주석 주석은 나쁜 코드를 보완하지 못한다. 코드로 의도를 표현하라! 좋은 주석 - 법적인 주석 - 정보를 제공하는 주석 - 의도를 설명하는 주석 - 의미를 명료하게 밝히는 주석 - 결과를 경고하는 주석 - 중요성을 강조하는 주석 나쁜주석 - 주절거리는 주석 - 같은 이야기를 반복하는 주석 - 오해할 여지가 있는 주석 - 의무적으로 다는 주석(javadoc의 모든 변수에 다는 주석) - 이력을 기록하는 주석 - 있으나 마나 한 주석 - … 2015. 7. 1.
[클린코드] 함수 함수 작게 만들어라. 한 가지만 해라. - 함수는 한 가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한가지 만을 해야 한다. 함수당 추상화 수준은 하나로!(추상화 수준이 동일하여야 한다.) - getHtml() 은 추상화 수준이 높다. - String pagePathName = PathParser.render(pagepath); 는 추상화 수준이 중간 - str.append(“\n”) 는 추상화 수준이 낮다. 위에서 아래로 코드 읽기 - 코드는 위에서 아래로 이야기처럼 읽혀야 한다. switch 문은 추상화해서 사용 - 길어진 switch 문은 추상 팩토리 패턴으로 대체하는 방법을 연구 서술적인 이름을 사용하라. 함수 인수는 작을수록 좋다. 부수 효과를 일으키지 마라. - 한가지 작업만 하라. 명령.. 2015. 7. 1.
[개념] NPAPI 크롬의 NPAPI 지원종료 구글에서 아래와 같이 NPAPI를 지원하지 않는다고 한다. Chrome 버전 42 이상에서 NPAPI 플러그인이 작동하지 않음 플러그인을 사용하면 추가적인 기능을 브라우저에 추가할 수 있습니다. 예를 들어 특정한 유형의 동영상을 시청하거나 웹페이지에 있는 게임을 즐길 수 있습니다. NPAPI 지원 종료 예전에는 NPAPI라는 오래된 시스템을 사용하여 많은 플러그인이 개발되었습니다. 오늘날 NPAPI 플러그인을 사용하는 사이트는 점차 줄어들고 있으며 이러한 플러그인은 웹사이트에 보안 위험을 일으킬 수도 있습니다. Chrome 검색의 안전성, 속도, 안정성을 개선하기 위해 Google은 Chrome 버전 42에서 NPAPI 플러그인에 대한 지원을 종료합니다. 지원되는 플러그인 Ad.. 2015. 7. 1.
[linux] gzip, gunzip 명령어 gzip gzip 은 파일의 압축을 위한 명령이다. gzip 은 하나의 파일만 압축을 할 수 있다. 여러 개의 파일이나 디렉토리를 압축하기 위해서는 tar 로 먼저 묶어주어야 한다. tar –zcf test.tar.gz file1 file2 … 옵션 설명 v 압축 관련 정보를 출력 d 압축을 해제, gunzip 과 동일, decompress 명령어 # 파일 압축 gzip target gzip -v target # 압축 해제 gzip -d target.gz gzip -dv target.gz gunzip target.gz 2015. 7. 1.
[클린코드] 의미 있는 이름 클린코드(로버트 C.마틴) 요약 의미 있는 이름 의도를 분명하게 밝혀라 Bad Good int d; int elapsedTimeInDays; int daysSinceCreation; 그릇된 정보를 피하라 의미 있게 구분하라 - sourceFile, destinationFile 등 발음하기 쉬운 이름을 사용하라. 검색하기 쉬운 이름을 사용하라. - i, j, k 등과 같이 search 힘든 이름은 피하라. 자신의 기억력을 자랑하지 마라. 클래스 이름은 명사, 명사구로 메소드 이름은 동사, 동사구로 기발한 이름은 피하라. 한 개념에 한 단어를 사용하라. - fetch, retrieve, get 등 제각각 부르면 혼란스러움 2015. 6. 30.
[linux] tar 명령어 tar tar 명령어는 여러 개의 파일을 하나의 파일로 묶기 위한 명령어 이다. 자주 사용하는 옵션은 다음과 같다. 옵션 설명 c tar 파일 압축 생성 x tar 파일 압축 해제 t tar 로 압축된 파일의 리스트 확인 v 처리과정을 출력(t 옵션과 사용하면 파일의 상세정보 확인) f 압축 파일명, 압축 해제 파일명을 지정 z gzip 압축을 tar 압축과 동시에 처리 명령어 # tar -cvf [생성할 tar 파일명] [압축대상 파일1] [압축대상 파일2] tar -cvf file.tar 1.txt 2.txt # tar -tvf [목록을 확인할 tar 파일명] tar -tvf file.tar # tar -xvf [해제할 tar 파일명] tar -xvf file.tar # tar 과 동시에 gzip 압.. 2015. 6. 30.
[스크랩] 영화 연평해전 - 김대중 대통령에 대한 오해와 진실 알아야 반박을 할 수 있다. 연평 해전의 진실 (디시 주갤) -링크 연평 해전의 진실 (루리웹)-링크 그만 거짓된 선동에서 벗어나길 바랍니다 1. 김대중은 연평해전을 무시하고 축구에나 참석했다 - 김대중은 사건 발생 직후 긴급 nsc 소집, 당연히 참석 예정이던 대한민국 VS 터키 4강전 불참 - 다음에 참석한 월드컵 폐막식도, 일본총리와의 정상회담을 위한 것. 오히려 이를 통해 사건과 아무런 상관이 없는 일본과의 공조를 이끌어냄 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 일본을 방문중인 김대중(金大中) 대통령은 1일 오후 도쿄 총리공관에서 고이즈미 준이치로(小泉純一郞) 일본총리와 정상회담을 갖고 `포스트 월드컵' 대책과 북한의 서해 무력도발 사태에 대한 대처방안.. 2015. 6. 30.
[영화] 인셉션 인셉션 (2010)Inception 8.7감독크리스토퍼 놀란출연레오나르도 디카프리오, 와타나베 켄, 조셉 고든-레빗, 마리옹 꼬띠아르, 엘렌 페이지정보SF, 액션 | 미국, 영국 | 147 분 | 2010-07-21 꿈을 이용하여 사람의 감정을 움직인다는 독특한 설징이 아주 좋음.. 완전 재미있어씀놀란 감독의 영화는 기본 이상은 해주는 것 같음 나무위키 --> https://namu.wiki/w/인셉션 영화를 보고 나서 위키를 한번 읽어보면 내용이 새롭게 다가 온다. 그리고 엔딩...이걸 보면 엔딩을 보고 궁굼했던 것이 해결됨엔딩을 보지 않았다면 실행하지 말것 ㅎㅎ 2015. 6. 28.
[spark] 아파치 스파크 아파치 스파크 실시간 분산형 컴퓨팅 프로젝트이다. 스트림 지향형 프로세스를 지원한다. 기존 하둡 클러스터에서 실행시킬 수 있다. 스칼라로 작성이 되어 있지만, 스칼라, 자바, 파이선 API를 지원한다. In-Memory 방식으로 처리를 하기 때문에 하둡에 비해 처리속도가 빠르다. 하둡에 비해 100배정도 빠르다고 한다. 예제 코드 # /spark/bin/pyspark 를 실행후 콘솔에서 입력 # README.md 파일은 hdfs 상에 업로드 되어 있어야 함 # hdfs://user/name/README.md 에 위치 # README.md 파일을 입력하여 라인 카운트 확인 lines = sc.textFile("README.md") print lines.count() # README.md 파일의 문장을 공백.. 2015. 6. 24.
[linux] crontab 사용방법 crontab 크론탭은 리눅스에서 주기적으로 반복되는 작업 처리를 위해 제공하는 서비스이다. 크론탭으로 실행되는 프로그램은 환경변수(JAVA_HOME, PATH 등의 정보)를 설정해주어야 한다. 스케줄러 설정 # 크론탭에 걸려 있는 스케줄 정보 확인 crontab -l # 크론탭에 신규 스케줄 추가 # 스케줄 추가후 저장하고 종료하면(vi 편집기 종료) 자동으로 스케줄에 추가된다. crontab -e # 크론탭에 스케줄 걸기 예제 분 시 일 월 요일(0:일요일, 1: 월요일) 명령어 # 5분 마다 program.sh 실행 */5 * * * * /home/user/program.sh # 4-10 시 사이에 1시간마다 program.sh 실행 0 4-10/1 * * * /home/user/program.sh.. 2015. 6. 24.
[Python] http 리퀘스트 처리하기 HTTP 리퀘스트 처리하기 파이선에서 http 리퀘스트를 처리하는 방법에는 urllib, urllib2 모듈을 이용하는 방법이 있다. urllib 모듈은 http, ftp, file 등의 처리도 동시에 가능하다. urllib2 모듈은 리퀘스트 시점에 헤더 정보를 입력하는 것이 가능하다. requests 모듈은 파이선의 기본 모듈이 아니라 추가적으로 설치하여 사용하는 모듈이다. 예제 #!/usr/bin/python # -*- coding: utf-8 -*- import urllib import urllib2 import requests # urllib - Open arbitrary resources by URL # urllib2 - extensible library for opening URLs -> 파이.. 2015. 6. 23.
[python] time, datetime, timedelta time, datetime, timedelta datetime – basic date and time types time : time access and conversions 파이선에서 날짜 관련 객체는 datetime, time 가 있다. 둘다 날짜를 처리하는 객체이지만 사용 가능한 메소드들을 확인해 보면 time은 지역화 설정 등의 메소드들을 제공하고, datetime 객체는 날짜, 시간을 조작하는 기능을 제공한다. 그리고 날짜간의 연산을 위해 timedelta 객체를 제공한다. 현재부터 하루전, 한시간후 등의 시간을 구하거나, 시작시간과 종료시간 사이에 걸린 시간 등을 구하는데 사용한다. 예제코드 #!/usr/bin/python # -*- coding: utf-8 -*- import time fro.. 2015. 6. 19.
[스크랩] 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.
[python] 문자열 치환 방법 파이선의 문자열 치환법 파이선의 문자열 치환은 format() 메소드를 이용하거나, % 를 이용하여 딕셔너리나 튜플을 이용하여 치환하는 방법이 있다. #!/usr/bin/python # -*- coding: utf-8 -*- # format 이용(3.x 버전에서는 사용 안됨) sentence1 = 'I am a {}' print sentence1.format("boy") # format 및 번호 이용 sentence2 = 'I am a {0}' print sentence2.format("boy") # format 에 리스트와 dict 를 이용한 방법 sentence3 = "I am a {0} and {x}" print sentence3.format("boy", x="girl") # % 와 dict 를 이.. 2015. 6. 12.
[python] subprocess 모듈을 이용한 명령어 실행 파이선으로 외부 명령어 실행 파이선으로 외부 명령어를 실행하는 방법은 subprocess 모듈을 사용한다. subprocess 모듈은 2.4 버전부터 추가 되었으며 기존에 사용하던 다른 모듈을 대체한다. os.system os.spawn* os.popen* popen2.* command.* subprocess.Popen() subprocess 의 Popen() 메소드를 이용하여 로컬 프로그램, 명령어를 사용한다. Popen()의 shell 파라미터는 기본이 False이고, 명령어를 문자열로 쉘에 전달하려면 True로 설정해야 한다. #!/usr/bin/python # -*- coding: utf-8 -*- import subprocess import shlex # 문자열 명령어 실행 def subproc.. 2015. 6. 11.
[스크랩] 리눅스와 유닉스 유닉스 AT&T 벨 실험실에서 개발된 운영체제이다. 간결하면서도 우연한 명령어 구성으로 이루어졌으며, 이식성이 강한 개방형 시스템이다. 시분할 시스템에서 멀티유저의 접근을 허용하며, 멀티 태스킹 시스템으로 동시에 여러프로세스를 처리할 수 있다. 리눅스 리눅스는 유닉스와 거의 닮은 운영체제 이지만, 유닉스의 장점을 포함하면서 새로운 여러기능들이 적용되어 현존하는 어느 운영체제보다도 강력하고 뛰어난 운영체제이다. 핀란드 헬싱키 대학의 리누스 토발즈가 대형 컴퓨터에서 사용하는 유닉스 소스 코드를 수정하여 개인 PC 에서도 사용할 수 있는 공개 운영체제로 개발하고 자신의 이름을 따서 리눅스로 정했다. 즉, 유닉스를 개인 컴퓨터에서 사용할 수 있도록 한 것이 리눅스이다. 유닉스는 하드웨어와 함께 제공되는 경우가 .. 2015. 6. 11.
[JDK8] Date, Calendar, LocaDateTime 날자 관련 객체들 사용법 Date, Calendar 자바에서는 날짜 관련 처리를 지원하기 위해서 Date, Calendar 객체를 제공한다. Date는 JDK 1.0, Calendar는 JDK 1.1 버전에서 지원되었다. Date 가 좀더 간단하고, 이전 버전과의 호환성을 위해 계속 제공하고 있다. Calendar는 Date 객체의 추상화 버전이라고 할 수 있고, Calendar객체를 이용하는 것을 권장한다. 특정 날짜를 지정하거나, 날짜 연산을 할 경우 Calendar를 사용한다. 또한 Calendar를 사용하여 지역화 처리를 할 수 있다. * JDK8 이전의 Date 객체에는 몇가지 문제점이 존재한다. (http://d2.naver.com/helloworld/645609) - 불변 객체가 아니기 때문에 스레드에서 문제가 발생.. 2015. 6. 9.
[자료구조] 힙과 힙소트 힙 힙은 자료구조의 하나로 최대값, 최소값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로한다. l 최대힙 : 부모노드의 값이 자식노드보다 크다. l 최소힙 : 자식노드의 값이 부모노드보다 크다. 부모와 자식 노드간의 대소관계만 정해지고, 자식 노드간의 대소관계는 정해지지 않는다. 힙정렬 힙을 구성하여 정렬을 수행하는 것을 힙정렬이라 한다. 최대힙을 이용하여 정렬을 수행하는 방법은 다음과 같다. 1. 최대힙을 구성한다. 2. 최대힙의 루트값을 배열의 맨뒤로 보내고 배열의 사이즈를 하나 줄인다. 3. 변경된 배열에 대해서 최대힙을 다시 구성한다. 4. 2 ~ 3의 과정을 배열의 길이가 1이 될때까지 반복한다. 소스코드[Java] public class MaxHeapSort { public.. 2015. 6. 8.
[어노테이션] 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력하기 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력 클래스에 PrintTime 어노테이션이 설정된 메소드를 찾아서 실행 시간을 출력한다. 어노테이션 @Target 은 어노테이션이 적용될 타입을 설정한다. Method, Filed 등을 설정할 수 있다. 한번에 여러 개를 적용하는 것도 가능하다. @Retention 은 어노테이션이 적용될 시점을 설정한다. Source, Runtime 등을 적용할 수 있다. 적용 시점에 따라 어노테이션 정보가 안 보일 수도 있다. 리플렉션 Class.forName() 메소드를 이용하여 데이터를 생성한다. 메소드와 메소드의 어노테이션 정보를 확인하여 @PrintTime 어노테이션이 적용된 메소드를 실행하고 실행시간을 출력한다. 테스트로 스트림을 이용한 버전과 for 문을 이용.. 2015. 6. 4.
[자료구조] 배열과 링크드 리스트 배열과 링크드 리스트 배열 - 데이터를 논리적 순서에 따라 순차적으로 데이터를 입력하며, 물리적 주소 또한 순차적이다. - 인덱스를 가지고 있어서 원하는 데이터를 한번에 접근이 가능하기 때문에 접근 속도가 매우 빠르다. - 그러나 배열은 데이터의 삽입/삭제에는 취약하다. n 배열의 특성상 데이터 삽입/삭제가 이루어지면, 다음 위치의 모든 데이터의 위치를 변경해야 하기 때문이다. 링크드 리스트 - 데이터를 논리적 순서에 따라 데이터를 입력한다. 하지만 물리적 주소는 순차적이지 않다. - 현재 위치 이전 및 다음 위치를 기억하고 있다. n 따라서 한번에 데이터에 접근할 수 없고, 순차적으로 링크를 따라가야만 접근이 가능하다. - 링크드 리스트의 종류 n 링크드 리스트(Simple Linked List) u .. 2015. 6. 4.
[스크랩] 경력 개발자 역량 평가 경력 개발자 역량 평가 EBvi 원본 위치 - https://github.com/EBvi/dev-matrix Programmer-competency-matrix - http://sijinjoseph.com/programmer-competency-matrix/ EBvi 에 정리 되어 있는 것을 다시 정리 해 보았다. 경력 개발자라면 이정도는 알아야 다음 면접에 나갈 수 있지 않을까? 전산학의 이해 1. 자료구조 2. 알고리즘 3. 시스템 프로그래밍 소프트웨어 엔지니어링 1. 소스코드 버전 관리 2. 빌드 자동화 3. 테스트 자동화 프로그래밍 1. 프로그램 분해 2. 시스템 분해 3. 의사소통 4. 파일 내의 코드 구성 5. 파일 간의 코드 구성 6. 코드 가독성 7. 방어적 코딩 8. 에러 핸들링 9. I.. 2015. 6. 4.
[영화] [조선명탐정2 - 사라진 놉의 딸] 조선 레오나르도 다빈치 김명민, 오달수의 호흡만 보고 보는 영화 이야기의 흐름에 너무 허점이 많고, 뻔한 클리쉐의 남발 거기에 과하게 웃음을 유도하려고 하는데 별로 안 웃김 OTL 조관우씨는 그렇게 등장할 줄 몰랐는데 오호 괜찮았음 [김석윤 감독] KBS를 대표하는 스타PD인 김윤석 감독은 ‘캠퍼스 영상가요’, ‘공포의 쿵쿵따’, ‘윤도현의 러브레터’, ‘개그콘서트’, ‘달려라 울엄마’, ‘올드 미스 다이어리’등 손대는 것마다 ‘대박’을 터뜨렸다. 2006년, 동명의 시트콤을 영화화 한 의 감독으로 충무로에 데뷔하여 언론과 평단의 호평을 받으며 방송과 영화를 넘나드는 탁월한 재능을 증명했다. 조선명탐정 : 사라진 놉의 딸 (2015) 6.9 감독 김석윤 출연 김명민, 오달수, 이연희, 최무성, 조관우 정보 코미디, 어드벤처 |.. 2015. 6. 4.
[알고리즘] 퀵정렬 퀵 소트 퀵소트는 비교정렬의 한 종류이다. 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 데이터 양이 크고 섞여 있을 경우 가장 빠른 속도를 낼 수 있다. 알고리즘 1. 리스트 가운데서 하나의 원소를 고른다. (이 원소를 피벗이라 한다.) 2. 피벗 앞에는 피벗보다 작은 원소들이 오고, 피벗 뒤에는 큰 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다. 이렇게 피벗의 위치가 정해진다. 3. 피벗의 앞쪽 리스트와 피벗의 뒤쪽 리스트에 대하여 1, 2 를 반복한다. 소스코드[Java] package sdk.java.example.sort; import java.util.Random; public class QuickSort { /** * 퀵 소트 처리 * * @param array * @param.. 2015. 6. 1.
[영화] [어바웃 타임] 오늘에 충실하자 감독이 러브 액츄얼리, 노팅힐 감독이라 달달함 연인 사이에 보기에 좋은 영화임. 실제 크리스마스 시즌에 개봉해서 우리나라에서는 흥행도 했고. 시간여행이라는 소재로 복잡하지 않게 잘 풀어나간다. 보통 시간여행이라 하면 타임 패러독스로 인한 혼란이 주된 소재가 되는데 이 영화는 그렇지 않음 결론은 오늘에 충실하자.^^ PS. 레이첼 맥아담스가 매력적오로 나오네^^ 어바웃 타임 (2013) About Time 8.7 감독 리차드 커티스 출연 레이첼 맥아담스, 빌 나이, 돔놀 글리슨, 톰 홀랜더, 마고 로비 정보 로맨스/멜로, 코미디 | 영국 | 123 분 | 2013-12-05 글쓴이 평점 2015. 5. 31.
[하둡] 기본명령어 사용 팁 하둡의 기본 명령어 사용 팁 mkdir 지정한 디렉토리를 만들어 주는 mkdir 명령에는 –p 옵션이 있다. -p 옵션을 사용하면 주어진 경로의 디렉토리를 만들 때 상위 디렉토리부터 하위 디렉토리까지 모두 만들어 준다. mkdir 의 옵션 hadoop fs [generic options] -mkdir [-p] ... Hadoop fs –mkdir –p /dir1/dir2/dir3 명령어 사용시 mkdir: `/dir1/dir2/dir3: No such file or directory 오류가 발생하면 –p 옵션을 사용하여 디렉토리를 생성하도록 하자. 2015. 5. 27.
[문법강조] 온라인 소스코드 문법 강조처리기(Syntax Highlighter) 블로그나 카페에 소스코드를 올릴 때 그냥 플레인 텍스트를 올리는 것 보다 에디터에서 제공하는 것 처럼 문법을 강조해서 올리면 보기가 더 편하다. 이때 문법 강조를 도와주는 방식이 여러가지가 있는데, 하나는 자바스크립트를 이용해서 올려진 코드를 후처리해서 보는 방법이 있고, 다른 하나는 코드를 HTML 로 변환하여 적용하는 방법이 있다. 자바스크립트를 이용한 처리는 , 등의 태그로 코드를 감싼후 코드가 로딩되는 시점에 사용자 단에서 처리해서 보여주는 방식이다. 가장 많이 사용되는 코드가 다음 링크의 코드이다. Alex Gorbatchev - http://alexgorbatchev.com/SyntaxHighlighter/manual/installation.html installation 의 코드를 따라가면 .. 2015. 5. 26.
[알고리즘] 시간 복잡도 - 프로그램을 실행시켜 완료하는데 걸리는 시간 - 알고리즘의 일반적인 시간 복잡도는 명령어의 실행 횟수를 고려한다. 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.