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..
Elastic Beanstalk란?AWS 서비스 중 하나인데, Deploy를 도와주는 서비스이다. 이번에 Flask로 진행중이던 웹 프로젝트를 Deploy 할 일이 있어서 beanstalk를 써봤다. 확실히 몇 가지만 빼면 편리하게 쓸 수 있었다. 다른 deploy tool을 써본적이 없어서 비교는 잘 못 하겠다.내가 엄청난 시간을 날린 이유는 바로 bower 때문이다. .ebextensions 내에 .config에 실행할 command 들을 넣을 수가 있는데, 여기에 'bower install'을 넣고 싶었다. 근데 이게 정말 잘 안 되서, 결국 ec2에 바로 ssh로 들어가 직접 설치했다. 다만 ec2의 특성상 instance가 지워질 경우 리셋되기 때문에 좋지 않은 해결 방법으로 보인다. beans..
보통 getchar() 함수를 이용해서 문자를 입력받는다. 문제는 이게 엔터를 누르기 전에는 입력이 바로 되질 않는다는 것이다. 보통은 문제가 안 되는데 현재 콘솔 게임을 만들고 있다보니까 이게 문제가 되었다. 찾아보니 단순히 C 레벨에서의 문제가 아니라 터미널과의 깊은 연관성을 가진 문제라나.... 어쨌든 문제 해결은 해야하니까 찾아보니까 어떤 용자가 함수를 공유해뒀다. 링크 #include #include #include int mygetch() { struct termios oldt, newt; int ch; tcgetattr( STDIN_FILENO, &oldt ); newt = oldt; newt.c_lflag &= ~( ICANON | ECHO ); tcsetattr( STDIN_FILENO,..
웹 개발을 하다보면 비밀번호를 안전하게 저장해야한다. 일반적으로 해싱을 통해 이것을 해결하는데 단순 해싱의 문제점이 있다. 바로 동일한 문자열을 해싱했을 때 동일한 결과값이 나온다는 점이다. 만약 DB가 유출되었을 때 password의 해시값을 통해 원본 값을 얻어내긴 힘들겠지만, 비밀번호가 같다는 것을 알 수 있게 되므로 큰 문제다. Python에서는 암호화를 위해 pycrypto라는 라이브러리를 많이 사용한다고 한다. 실제로 github에서도 많이 starred 되어 있다. 하지만 나는 bcrypt를 추천하고 싶다. 특히 Flask-Bcrypt. 일단 사용법이 정말 간단하고 쉽다. 알아둬야 할 함수는 두 개 뿐일정도다. 하지만 가장 큰 이유는 Flask-Bcrypt를 통해 암호화 된 결과값이 저장하기..
이건 C#에 좀 더 가까운 내용.... C#에서는 기본적으로 EventArgs, EventHandler라는 클래스를 제공한다. 이 녀석을 활용해서 가독성 좋게 Event Driven Programming을 할 수 있다. 게임에서 라운드 개념을 도입한다고 생각해보자. 라운드가 증가될 때마다 오브젝트들이 변경되어야 할 것이다. 이걸 좀 예쁘게 구현하고 싶다.다양한 방법이 있겠지만 위에서 언급한 EventArgs 클래스, EventHandler 클래스를 이용한 방법으로 구현해보자. EventHandler는 List와 비슷한 방법으로 생성할 수 있다. List의 type에는 제한이 없지만 EventHandler에는 EventArgs 클래스만이 들어갈 수 있다. 즉, EventArgs 클래스를 상속받은 클래스를 ..
비행기 도그파이팅 게임을 만들다보면 적 위치에 맞춰서 표적 마크를 보여줘야 한다. 안 그러면 잘 안 보이니까.... 표적 마크가 적의 위치에 따라서 바뀌는걸 여러가지 방법으로 구현할 수 있다. 적 오브젝트의 자식으로 추가해두는 것이 한 가지 방법. 그러나 3D 객체가 자유자재로 움직이는 상황에서 그대로 2D UI가 유지되도록 하는 것은 귀찮기도 하고 또 효율도 별로라서 다른 방법을 생각했다. 필요한건 플레이어의 카메라와 적의 게임오브젝트, UI 정보. 이것들이 있으면 UI가 그려져야 할 위치를 계산할 수 있다. 나는 UI를 그리기 위해 NGUI를 사용하기로 했다. Camera의 WorldToViewport 행렬을 이용해서 Viewport 상에서의 위치를 계산하고 이것을 NGUI의 좌표계로 변환하는 것이다..
Unity에서 AssetBundle을 쓸 일이 생겼는데, 그 중에서도 특히 Scene AssetBundle에 관심이 생겨서 몇 가지 테스트를 해봤다. 원래 Unity에서 Scene을 로드할 때는 Application.LoadLevel을 통해서 하는데, 원래는 Build Setting에서 Scene을 추가해줘야 한다. 그런데 AssetBundle을 이용하여 Scene을 실행할 때는 어떻게 해야하는지에 대한 설명이 빈약하다. 보통 예제들을 보면 AssetBundle을 WWW를 통해 다운로드 받은 뒤, www.assetBundle.LoadAll()을 한다. 그런데 직접 테스트 해 본 결과, LoadAll을 하지 않아도 LoadLevel을 하는데 문제가 없다. Application.LoadLevel의 인자로 넣..
루비 언어도 모르고, RoR은 당연히 모르고, 그 외 사용하는 프레임워크들을 전부다 모르는 상태에서 이걸 하려고 하니 정말 삽질을 많이 했다.사실 코드 자체는 정말 심플한데 구조를 잘 모르다보니 뭐가 어떻게 돌아가는지 몰라서 더 삽질을 심하게 했던 것 같다. 일단 환경은 다음과 같다.RoR로 API 서버가 돌아간다. URL 라우팅 같은건 RoR을 쓰는게 아니라 Grape라는 semi-framework를 사용한다. 파일을 저장할 때 로컬에 저장하는게 아니라 AWS S3에 저장하려고 한다. 0. 라이브러리 추가# Image Uploadgem 'paperclip', '~> 4.2'# AWSgem 'aws-sdk' Gemfile에 위 내용을 추가하고 'bundle install'을 해준다.paperclip 버전..
- Total
- Today
- Yesterday