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 ..
종종 blur 효과를 쓰고 싶을 때가 있다. 예를 들면 다이얼로그의 뒷 부분을 blur 처리하고 싶을 때 등... 일단 blur라는게 어차피 수식으로 이미지를 필터링하는 것인데, 여기서는 RenderScript를 활용한 방법을 소개한다.https://futurestud.io/blog/how-to-blur-images-efficiently-with-androids-renderscript/위 링크에서 이미 코드가 다 나와있는데 조금만 부연 내용을 추가하자면, RenderScript는 support library에 추가되어 있으므로 v8까지 커버 가능하다. 클래스들을 import할 때 패키지를 맞춰서 import 해주도록 신경써주면 된다. 그리고 Android Universal Image Loader 라이브러..
ListView에 header, footer가 있다는 것을 최근에 알았다. 이걸 몰라서 ScrollView 안에 있도록 작업하느라 상당히 곤란했었는데.... 어쨌든 원래 header, footer를 만들어 넣는 방법 자체는 어렵지 않다. 직접 View를 만들어서 ListView에다가 set 해주면 된다. 문제는 이런 방식이 개인적으로 별로 마음에 들지 않는다는 것이었다. 그냥 원래 레이아웃(ListView가 포함된)을 inflate할 때 자동으로 다 해줬으면 했다. 여기저기 분산되어 있는게 좀 맘에 안 들기도 했고... 아쉽게도 기본적으로는 불가능했다. 대신 ListView를 상속받아 확장된 커스텀 View를 만드는 것으로 가능하다. HeaderFooterListView라고 대충 이름 지었다. 소스는 g..
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..
Elastic Beanstalk란?AWS 서비스 중 하나인데, Deploy를 도와주는 서비스이다. 이번에 Flask로 진행중이던 웹 프로젝트를 Deploy 할 일이 있어서 beanstalk를 써봤다. 확실히 몇 가지만 빼면 편리하게 쓸 수 있었다. 다른 deploy tool을 써본적이 없어서 비교는 잘 못 하겠다.내가 엄청난 시간을 날린 이유는 바로 bower 때문이다. .ebextensions 내에 .config에 실행할 command 들을 넣을 수가 있는데, 여기에 'bower install'을 넣고 싶었다. 근데 이게 정말 잘 안 되서, 결국 ec2에 바로 ssh로 들어가 직접 설치했다. 다만 ec2의 특성상 instance가 지워질 경우 리셋되기 때문에 좋지 않은 해결 방법으로 보인다. beans..
- Total
- Today
- Yesterday