최근 학교에서 그 동안 공부했던 것을 다시 훑어볼 일이 있었다. 공부하는 김에 각 강의에서 어떤 것들을 배웠나 정리해두면 도움이 되지 않을까 싶어서 여러 대학교에서 공통적으로 배울만한 강의명 아래 우리 학교에서는 무엇을 배웠는지 큰 분류상으로 정리해봤다. 세부 내용을 다 정리하자면 너무 복잡해질 것 같아서... 대충 이 강의에서는 저런 내용을 배우는구나 하고 참고할만한 정도로만 썼다. 좀 더 자세히 쓴 부분도 있는데, 그 동안의 경험상 해당 부분을 왜 배우는지 잘 모르는 경우가 많은 것으로 보였던 것에 대해서 약간의 부연 설명을 추가한 것이다. 나름대로 분류를 해서 정리하긴 했는데, 충분히 잘 분류했는지 모르겠다. 소프트웨어 공학 같이 중요하지만 내가 수강하지 않았기 때문에 리스트에 없는 것도 있다. 수..
`The Python ssl extension was not compiled. Missing the OpenSSL lib` Ubuntu 13.04에서 pyenv를 이용하여 python을 설치하려고 할 때, 위와 같은 에러 로그가 나타나면서 설치가 안 되는 문제가 있었다. 이는 pyenv의 문제가 아니라 openssl 개발용 패키지를 찾을 수 없어 발생하는 문제다. 해결 방법 : `libssl-dev`을 설치해주면 된다. `sudo apt-get install libssl-dev`를 실행하면 된다.
node나 react 등을 시작하는데에 앞서 node-gyp 패키지를 설치하게 되는데, 이 때 에러가 발생하는 경우가 있다.pyenv에서 python으로 시작하는 명령어를 다 점유하고 있는 문제일 가능성이 있다. 이 때문에 python2를 찾지 못하게 된다. 이 경우, 해당 프로젝트 디렉토리로 이동 후 pyenv를 통해 python 2 버전대를 설치한 뒤, 해당 버전으로 로컬 버전 세팅을 해주면 된다. ```pyenv install 2.7.11 pyenv local 2.7.11``` 예를 들면 위와 같은 식. local에서 세팅했으므로 외부에 영향을 끼칠까봐 걱정하지 않아도 된다.
systemd를 사용하기 위해 systemctl 커맨드를 이용한다. `systemctl start {{service_name}}` 과 같은 명령어를 통해 미리 추가해놓은 서비스를 시작하는데, 이 때 슈퍼 유저 권한을 요구한다. 내가 경험한 상황은 다음과 같다:1. root 계정에서 처음 user1 유저를 생성했다.2. systemd를 사용하기 위한 슈퍼 유저 권한 사용을 위해 인증 정보로 user1의 비밀번호를 요구한다.3. user1으로 작업을 하다가 나중에 user2 유저를 생성하였다. 4. user2 로 로그인하여 systemd를 사용할 때 계속 user1의 비밀번호를 입력하라고 한다. 해결 방법:user1는 wheel 그룹에 포함되어 있었고, user2는 wheel 그룹에 포함되어 있지 않았다. ..
layout.html 템플릿에서 공통적으로 `util.js`라는 스크립트를 불러오고 싶었다. 그리고 몇몇 페이지에서는 각 view에 해당하는 스크립트도 불러온다.스크립트를 불러오는데에는 requirejs를 이용하고 있었다. http://requirejs.org/docs/api.html#data-main ```If you want to do require() calls in the HTML page, then it is best to not use data-main. data-main is only intended for use when the page just has one main entry point, the data-main script. For pages that want to do inline ..
content에 유니코드가 있는 상태로 response를 그냥 만들어서 return 해버리면 unicode escape sequence(\u로 시작되는 문자열)이 출력되버린다. response를 받는 곳에서 알아서 encoding, decoding을 잘 하면 문제가 없지만 나 같은 경우에는 API 서버에서 return 값이 이런게 나온다는게 굉장히 맘에 안 들어서 해결하고 싶었다. 일단 브라우저에서 테스트하는 경우가 많은데 브라우저에서 볼 때 정상적인 한글 문자열을 볼 수가 없으니 좋지 않다고 판단했기 때문이다. 나 같은 경우에는 json 데이터를 출력해주기 위해 원래 Flask의 jsonfiy 함수를 이용하여 response를 만들어 return 시켰었는데, 이것이 문제였다. 내부적으로 유니코드들을 제..
프로토콜을 짤 때 CRLF 단위로 메세지를 구별하기로 했어서 StreamReader.ReadLine 메소드로 메세지 읽는걸 처리했었다. 인터넷에 검색하다보니까 통짜로 소스 올라와 있던게 있길래 조금 개량해서 썼다. 근데 이게 문제점이 NetworkStream에 메세지가 2개 이상이 왔을 때 발생했다. 동기 방식으로 구현했다보니 읽을 데이터가 있을 때만 ReadLine 메소드를 호출하게 해야해서 NetworkStream.DataAvailable로 ReadLine 메소드를 호출할 때를 확인했다. 그런데 ReadLine 메소드를 호출하면 NetworkStream에 있는 데이터를 일단 StreamReader에 가져와버려서 한 번에 여러개의 메세지가 와 있을 때 ReadLine 메소드 한 번으로 모든 메세지를 읽..
http://www.wisdomandwonder.com/article/6449/installing-jess-71p2-in-eclipse-4-2 위의 자료대로 따라하면 된다. 간단히 요약하면 jess 사이트에서 다운로드 받고, 다운로드 받은 압축파일을 압축해제 한 후 거기에 있는 eclipse 폴더의 내용물들을 eclipse 디렉토리에 추가하면 된다.각각의 압축파일을 풀면 4개는 plugin 디렉토리가 생기고, 1개는 feature 디렉토리가 생긴다. 각각의 폴더 내용물들을 eclipse 디렉토리 안의 해당 이름의 디렉토리 안에 옮겨준 뒤, eclipse를 재부팅하면 된다. 중요한 점은1. Luna 버전에서는 안 된다.2. Java 프로젝트를 만들고 거기서 돌리는데, Run을 할 때는 Java applic..
hypothesis theta의 값을 X * theta로 쉽게 구하기 위해 X = [ones(length(data(:, 1)), 1) data] 로 정의.(쉽게 말하면 X의 맨 왼쪽에 값이 1인 원소의 컬럼을 추가.) function cost = costFunctionJ(X, y, theta) m = length(X(:, 1));h = X * theta;h = h .^ 2; cost = 1 / (2 * m) * sum(h); function [final_theta, history_theta, history_cost] = gradientDescentMulti(X, y, theta, alpha, iteration) m = length(X(:, 1));final_theta = theta;history_thet..
- Total
- Today
- Yesterday