분류 전체보기
[PHP] 상수 목록 / Super globals
[PHP] 상수 목록 / Super globals
2017.06.07상수상수 정의는 ``php define("name", "value");``로 하고, global scope다.클래스 내부에서 상수를 정의할 때는 ``php const``를 사용하는 편이 좋다.```phpclass Member{ const MaxAge = 20; function printMaxAge( ) { print self::MaxAge; //$this->가 아니라 self::를 사용한다. }}``` 유용한 상수``PHP_VERSION``, ``PHP_OS````php __LINE__``, ``__FILE__``, ``__DIR__````__FUNCTION__``, ``__CLASS__``, ``__METHOD__````__TRAIT__``, ``__NAMESPACE__`` global전역 변수 참조는..
[PHP] 문자열, 배열
[PHP] 문자열, 배열
2017.06.06문자열PHP는 기본적으로 문자열을 이루는 각 문자를 `` 1 byte``로 간주한다.멀티바이트 문자를 다룰 때도 이를 `` 1 byte`` 단위로 다루기 때문에 오류를 방지하기 위해 ``php mb`` prefix가 붙은 함수를 사용해야 한다.`` mb`` 함수는 기본으로 설치되지 않기 때문에 undefined function Error가 발생할 수 있다.``bash apt-get install php-mbstring``해주고 아파치 재시작해주면 된다. 좋은 문법``php echo``가 ``php print``보다 아주 약간 빠르다.`` .``으로 잇는 것 보다 그냥 `` ,``으로 출력하는게 더 빠르다.```phpecho 'Hello', ' ', 'World';``// is better than ech..
Encoding 정리. Unicode, ANSI, UTF, CP949
Encoding 정리. Unicode, ANSI, UTF, CP949
2017.06.05Unicode유니코드 자체는 특정 encoding 방식을 가리키는 말이 아니라, 순서(U+????)와 문자를 1:1로 매핑해놓은 하나의 코드표를 가리킨다. ANSI와 달리 전세계 글자를 하나의 코드표에 표현하기 위에 만들어졌기 때문에, Unicode 코드표 안에 전세계 글자가 모두 들어있다. UTF(Unicode Transformation Format)은 유니코드 표를 보고 문자를 bytes로 변환하는 encoding 방식이다. ex, (U+C548, 안) 이라는 문자가 있을 때, 이 문자를 어떤 바이너리 데이터로 변환할 것인가?를 결정하는 것이 UTF-8이니 UTF-16이니 하는 Encoding이라는 것이다.(U+C548, 안)은 UTF-8의 경우 0xec9588으로, UTF-16의 경우 0xc548로..
[JS] char <> code <> hex / unicode 공백 / Unpack
[JS] char <> code <> hex / unicode 공백 / Unpack
2017.06.04hex(65).toString(16) // 41 "A".charCodeAt().toString(16) // 41code to charString.fromCharCode(0x41) // "A" JS는 유니코드가 16bit charset이었을 때 개발되었기 때문에 JS에서 한 문자는 기본적으로 2 bytes 유니코드다.그러나 `` \x??``로 직접 입력하는 경우 1 byte 씩 문자로 인식한다. 2 bytes 유니코드 문자를 사용하려면 `` \u``를 사용해야 한다.```js"\uc548""안""\xc5\x48""ÅH"``` BMP를 넘어가는 경우(U+10000 이상) surrogate halves가 총 4 bytes이므로 ``length``를 2로 인식한다.그래서 UTF-16이라기 보다는 UCS-2에 가..
[JS] memoization, currying
[JS] memoization, currying
2017.06.02memoization동일한 계산을 반복해야 할 때 이전 계산 결과를 저장해놓음으로써 효율을 높이는 것. 관례상 변수는 ``js memo[]`````jsvar fibonacci = function ( ) {var memo = [0, 1];var fib = function (n) {var result = memo[n];if (typeof result !== 'number') {result = fib(n - 1) + fib(n - 2);memo[n] = result;}return result;};return fib;}( );```* 클로저를 이용해 ``js memo[]``를 감췄다. recursive를 사용하지 않고 iteration으로 짜면서 memo하려면 별도의 ``stack`` 변수를 하나 선언하고 거기..
재귀, recursion
재귀, recursion
2017.05.31효율을 위해 memoization과 함께 사용하면 좋다. [Languages & Frameworks/JS] - [JS] memoization, currying 재귀 호출은 어떤 문제가 유사한 하위 문제로 나뉘어지며 각각의 문제를 같은 해결 방법으로 처리할 수 있을 때 사용할 수 있다. 일반적으로 하위 문제를 처리하기 위해 자기자신을 호출한다. ``` 전체 - Level 1 - Level 2 - ... - Level n ``` 위와 같은 경우 call stack은 이런 식이다. ... Level2 Level1 전체 주의할 점은 recursive function 내에서 자기 자신을 호출하는 것이 두 번 이상일 경우 각 작업 단위가 순차적으로 증가하지는 않는다는 점이다. 예를 들어 다음과 같이 Level n까..
[JS] 함수 #2. Call pattern, 생성자 대안(함수형 패턴), 상속
[JS] 함수 #2. Call pattern, 생성자 대안(함수형 패턴), 상속
2017.05.31함수 객체 함수도 객체이기 때문에 다른 값들처럼 배열에 저장하거나 인수, 반환값으로 사용할 수 있다. 함수 객체는 ``js Function.prototype``에 연결된다. ( ``js Function``이 ``js Object.prototype``에 연결되어 있다. ) 모든 함수는 두 개의 숨겨진 속성 ``context``과 ``code``를 가지고 있다. 또한, 모든 함수 객체는 ``prototype`` 객체를 속성으로 가지고 있다. 이 객체는 다시 함수 자기 자신(``this``) 자체를 값으로 갖는 ``constructor``라는 속성을 가지고 있다. * 함수 객체가 만들어질 때, 함수를 생성하는 Function 생성자는 다음과 같은 코드를 실행한다. ```js this.prototype = {c..
[JS] 함수 #1. 유효범위(scope), callback, 클로저(closure), 접근 제어
[JS] 함수 #1. 유효범위(scope), callback, 클로저(closure), 접근 제어
2017.05.31함수선언식 vs 함수표현식 함수선언식 ```js functino foo( ) {} ``` 함수표현식 ( 함수리터럴 ) ```js var foo = function ( ) {}; ``` 일반적으로 함수 표현식을 사용하는 것이 좋다. JS를 잘 사용하기 위해서는 함수도 값이라는 것을 이해하는 것이 중요하기 때문. 이라고 "자바스크립트 핵심 가이드"에서 얘기하고 있음 일반적으로 함수를 선언 할 때, 선언식으로 하냐 표현식으로 하냐 관점에서는 hoisting 정도가 차이점이고, JS가 함수표현식을 지원하기 때문에 = 함수는 값 = [클로저, 일회용 함수(즉시eval), 함수를 인자로 전달]이 가능 hoisting 규칙 ``js let/const`` 변수는 hoisting 되지 않는다. ``js var`` 변수는..
Best Practices for Applying Deep Learning to Novel Application 정리
Best Practices for Applying Deep Learning to Novel Application 정리
2017.05.31Phase 1: Getting prepared딥러닝을 적용하는 것이 가치있는 일인지 생각해본다.state-of-the-art의 퍼포먼스가 충분히 높다면 굳이 성능을 향상시키기 위해 딥러닝을 적용하는 것이 가치있는 일일지 고려해야 한다.단순히 최신 기술이고, 방법론적으로 좋아보여서 딥러닝을 사용하게 되면 어려움에 직면할 수 있다.그 다음은 성공적으로 구현했을 때 human level performance보다 잘 나오는지 예상해보아야 한다.computer resource도 고려해야 하는데 이는 AWS 등으로 해결할 수 있으므로 큰 문제는 안된다.evaluation metrics도 정의한다. 이는 loss function design으로 이어진다. Phase 2: Preparing your datatraini..
[JS] 객체, 프로토타입, 기본 타입에 기능 추가
[JS] 객체, 프로토타입, 기본 타입에 기능 추가
2017.05.29JS에서 단순 데이터 타입인 숫자, 문자열 등을 제외하면 배열, 함수, 정규표현식 등이 모두 객체로 이루어져 있다. 숫자, 문자열 등은 메소드가 있기 때문에 유사 객체라고 할 수 있지만 이들은 immutable이다. JS에서 객체는 변형 가능한 속성들의 집합이라고 할 수 있으며 이름과 값이 있는 속성들을 포함하는 컨테이너다. JS에는 객체 하나에 있는 속성들을 다른 객체에 상속하게 해주는 프로토타입(prototype) 연결 특성이 있다. 프로토타입을 잘 활용하면, 객체를 초기화 하는 시간과 메모리 사용을 줄일 수 있다. JS에서는 클래스가 따로 없고, ``js new``와 ``Constructor``를 사용할 수는 있지만, 프로토타입과 클로저를 활용한 함수형 패턴으로 객체를 정의한다. 2017/05/31..
[Front-end] Ajax
[Front-end] Ajax
2017.05.28Ajax : Asynchronous JavaScript and XML 프레임워크나 언어를 지칭하는 것이 아닌, 대화식 웹 어플리케이션 제작 기법을 의미 페이지 전환 없이 JS단에서 서버에 데이터를 요청하는 것이 Ajax Ajax 예? 자동완성 기능. 페이스북. 페이지 이동을 하지 않고 데이터를 불러오고, 댓글이 새로고침되니까 F12의 Network탭을 보면 주고받는 데이터를 확인할 수 있음 JSON ( JavaScript Object Notation ) 자바스크립트에서 사용하는 객체 형태로 데이터를 표시하는 형식이다. json data는 ``js eval()``을 이용해 바로 js 객체로 만들 수 있다. (``$.extend``를 사용해도 가능할 것 같다.) ```js let json = eval('('..
[Regex] JS
[Regex] JS
2017.05.28JS Regexregex에서 "또는 or"을 표현하기 위해 ``js [(bar)(foo)]`` 처럼 사용하면 ``()``로 묶어도 한 char 씩 잘라서 인식하기 때문에 ``js ((bar)|(foo))``를 사용해야 한다.()가 추가되기 때문에 캡쳐링 그룹 인덱스가 틀려질 수 있다는 점에 주의한다. JS에서 정규 표현식은 보통 같은 문자열에 대해 반복해서 연산을 수행할 때 주목할 만한 성능상의 이점이 있다. 그래서 ``indexOf``를 쓰는 것 보다는 정규 표현식을 쓰는 것이 좋다. 정규식은 inline 보다는 변수에 저장해서(stored) 사용하는 것이 좋고,RegExp 객체를 사용하는 것 보다 literal을 사용하는 것이 좋다.또한, 반복문 안에 넣으면 계속 컴파일 되는 경우가 있으므로 반복문 ..