먼저 mysql을 설치한다.

# yum install mysql-server mysql mysql-devel


그 후아래 명령어로 보안 설정을 해준다.

# mysql_secure_installation


그리고 아래처럼 root로 접속

# mysql -uroot -p


사용자 계정을 만들어 준다.

CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'PASSWORD';


GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';


flush privileges;



이미지 메직을 설치한다. 이미지 메직은 문서파일의 썸네일을 만들 수 있게 해준다. 그래서 레드마인에서 지원하는 기능을 추가할 수 있다. 하지만 필요없다면 설치하지 않아도 된다.

# yum install ImageMagick

# yum install ImageMagick-devel


루비를 설치한다.

# yum install ruby ruby-devel


루비 gem을 설치한다.

# yum install rubygems


bundler를 설치한다.

# gem install bundler


그리고 redmine 홈페이지에서 최신 파일을 받는다.

http://www.redmine.org/projects/redmine/wiki/Download

현재는 2.3.2 가 최신인 것 같다.


파일을 다운받고 설치할 위치로 이동한 다음 tar로 압축을 푼다. 예를들면 아래와 같다.

# tar zxvf FILENAME


그리고 압축이 풀린 해당 폴더로 이동해서 아래와 같이 bundle로 gem들을 한번 설치한다. 만약 아래 내용이 실패하면 MakdGems이란 파일 내용을 참고해서 source를 바꿔봐도 되고 수동으로 rubygems.org에서 해당버전을 받아서 설치해도 된다. 총 40개 정도 되는것 같다. (정확하지는 않다.)


참, 아래 명령을 실행하기 전에 ./config/database.yml파일을 수정해서 설치한 디비 환경에 맞게 설정한다.

# bundle install --without development test


그리고 아래와 같이 실행해서 디비 테이블을 만들어 준다.

# RAILS_ENV=production rake db:migrate

# RAILS_ENV=production rake redmine:load_default_data


폴더도 만들고 권한도 바꿔준다.

# mkdir -p tmp tmp/pdf public/plugin_assets

# sudo chown -R redmine:redmine files log tmp public/plugin_assets

# sudo chmod -R 755 files log tmp public/plugin_assets


세션의 랜덤키도 만들어 준다.

# rake generate_secret_token


다 설치가 되고 아래 명령을 입력하면 제대로 설치가 완료됬는지 알 수 있다. 테스트 통과되었으면 ctrl + c로 빠져나온다.

# ruby script/rails server webrick -e production -p80


이제 아파치에 연결해 보자. 링크 참고

http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Apache_to_run_Redmine


# 아래와 같이 패키지를 설치한다.

yum install httpd httpd-devel apr-devel apr-util-devel


그리고 passenger 도 설치한다.

# gem install passenger


설치가 되었다면 아래 명령을 실행해보자. 실행하면 httpd 설정파일에 어떤 정보를 넣어야 하는지 예시가 보일것이다. 그것을 httpd.conf나 vhost 파일을 만들어서 설정한다.

# passenger-install-apache2-module


그 후 아래와 같이 httpd 재시작하면 끝

# service httpd restart



http://www.computerhope.com/unix/ucp.htm

 

Copy하는 명령어이다.

다음과 같이 사용이 가능하다.

 

cp [OPTION]... SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... --target-directory=DIRECTORY SOURCE...

 

옵션중에 특히 유용하게 내가 쓰고 있는것은 -R 과 -a 옵션이다. -R은 하위 폴더까지 모두 복사하는 것이고 -a는 권한이나 소유자를 유지해서 복사하는 것이다.

아직 Outlook Express를 쓰는사람이 있는지 모르겠다. 만약 있다면 mailbox의 최대크기를 염두해야 할 것이다. mailbox파일인 .dbx을 최대 크기는 2GB 이다. (http://support.microsoft.com/kb/903095)


따라서 2GB 이상을 초과하게 되면 메일 수신도 안될뿐더러 메일 발송시 보낸편지함에 보관하게 설정되어있다면 발송조차 안된다. 참고하자.

웹 어플리케이션을 테스트할 때 여러 OS에서 여러 브라우저를 테스트할 필요가 있다. 그런데 이런 환경을 모두 만들어서 테스트하기에는 장비도 부족할 수 있고 시간도 너무 오래 걸리는 문제가 있다. 이런것을 해결하기 위한 서비스가 있는데 바로 browserstack이다. 유료이긴하지만 가입하고 30분은 무료로 사용할 수 있고, 설정한 OS, browser버전별로 실시간으로 가상머신을 만들어서 원격으로 접속할 수 있게 해준다. 회사에서 이 서비스를 사용한다면 테스트 시간을 획기적으로 줄일 수 있지 않을까 생각한다.

개인적으로 이 가상머신을 이용하는 방법이 IETester(http://my-debugbar.com/wiki/IETester/HomePage)를 이용하는 방법보다 신뢰도가 높다고 생각한다. IETester는 가끔 오동작을 하기 때문이다.

 

http://www.browserstack.com/

 

 

IE 버전별 실제 다운로드 할 수 있는 사이즈가 다르다. 자세한 내용은 다음과 같다.


이 현상은 Internet Explorer 6에서 2GB보다 큰 파일을 다운로드하거나 Internet Explorer 7에서 4GB보다 큰 파일을 다운로드할 때 발생할 수 있습니다.

참고 이러한 다운로드 파일 크기 제한은 Internet Explorer 8에서 없어졌습니다. 따라서 Internet Explorer 8에서는 이 현상이 발생하지 않습니다.


참고로 FAT32 에서는 파일 1개당 최대 사이즈는 4GB, NTFS는 이론적으로는 16EB, 실제로는 16TB이다.


http://support.microsoft.com/kb/298618

http://ko.wikipedia.org/wiki/NTFS


 

LocalStorage는 HTML5 spec에 따르면 LocalStorage 는 브라우저 앱? 마다 5MB까지 지원한다. 크롬에서는 새 창마다 앱으로 구분되는 것 같다. 같은 창에서 여러탭을 띄우면 같은 앱으로 구분되는 식이다. SessionStorage 는 메모리 제한이 사실 없다. 로컬 메모리 자원 한계까지 쓸 수 있다.

 

https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage

Hotmail에 계정이 하도 여러 개라서 MS에서 지원해주는 한번 로그인하면 다른 계정으로 바로 연동되는 기능을 사용하고 있는데… 이제 중단된단다. 이럴수가~

 

CI(Continuous Integration) 시스템을 사용하면 팀원들이 응용 프로그램 구성 요소를 더 일찍, 더 자주 통합하게 되며, 개발자 한 명이 하루에 여러 차례 통합을 수행하기도 합니다. 그러나 자동화된 빌드를 통해 즉시 각 통합을 확인하고 유효성을 검사하여 모든 오류를 바로 찾아낼 수 있으므로 걱정할 필요는 없습니다. CI의 개념에 익숙해지려면 어느 정도 시간이 필요하지만 일단 익숙해지면 CI는 매우 유용한 시스템입니다.

 

CI 시스템의 기본 원리는 빌드라는 단어를 다시 정의해야 한다는 것입니다. 이전에는 빌드를 단순히 컴파일과 같은 것으로 생각했을 것입니다. 하지만 CI에서는 빌드의 정의에 모든 중요한 유효성 검사 및 테스트 단계가 포함된다는 것을 이해해야 합니다. CI는 테스트에 의존합니다. 테스트를 빼면 연속 컴파일만 남게 됩니다.

 

CI 시스템의 주요 사용자는 개발자이므로 시스템의 성패 여부는 개발자에게 달려 있습니다. 개발자가 정말로 원하는 것은 두 가지뿐입니다. 하나는 5분 이내에 빌드를 완료하는 것이고, 또 하나는 빌드 실패의 원인을 쉽게 찾을 수 있는 방법을 알아내는 것입니다. 성공을 위해서는 여러분의 팀에서도 빌드 에티켓을 지켜야 합니다. 필자는 다음과 같은 간단한 지침을 제안합니다.

 

  • 빌드를 고장 낸 경우 그대로 방치하지 마십시오.
  • 고장 난 빌드에 제출하지 마십시오.
  • 친절해지십시오. 빌드가 고장 난 사실을 발견하면 빌드 보고서를 살펴보십시오. 문제를 해결하는 방법을 알고 있다면 빌드를 고장 낸 개발자에게 연락하여 도와주십시오.

 

http://msdn.microsoft.com/ko-kr/magazine/cc337886.aspx

http://www.python.org/dev/peps/pep-0008/#comments

파이썬 문서에서는 비 영어권 나라의 파이썬 코더들에게 당신의 코드가 당신의 언어를 모르는 사람이 보지않는다는 것을 120% 확신하지 않으면 영어로 작성하라고 한다.

 

Python coders from non-English speaking countries: please write your comments in English, unless you are 120% sure that the code will never be read by people who don't speak your language.

 

(인상적인 문서이다..)

표본데이터 X=(X1, X2, ㆍㆍㆍ, Xn)에서 구성되는 통계량 (X)로부터 미지모수 θ을 추정하는 경우에 θ가 어떤 확률 a로 들어간다고 지정되는 구간. a=0.95의 경우 95% 신뢰구간, a=0.99의 경우 99% 신뢰구간이라고 불린다. 가장 빈번하게 나타나는 신뢰구간으로서는 표본평균 로부터 모평균(母平均) μ를 추정하는 경우로 모집단의 모분산(母分散) σ2를 알고 있다면, μ의 95% 신뢰구간은, 로 주어진다.

[네이버 지식백과] 신뢰구간 [confidence interval, 信賴區間] (간호학대사전, 1996.3.1, 한국사전연구사)

http://terms.naver.com/entry.nhn?cid=1839&docId=495753&mobile&categoryId=1842

 

 

휴…엄청 이해안된다. ㅜㅜ

Javadoc 생성시 다음과 같이 인코딩 에러가 발생할 경우에는..

: unmappable character for encoding MS949

 

다음과 같이 "-encoding UTF-8" 옵션을 설정하면 된다. J

 


참고로 나는 다음과 같이 3가지 옵션을 모두 사용한다.

-encoding UTF-8 -docencoding UTF-8 -charset UTF-8


http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#options


 

EEE 802.11ac는 높은 속도의 근거리 통신망을 제공하기 위하여 현재 개발중에 있는 802.11 무선 컴퓨터 네트워킹 표준 중에 하나이다. 5GHz 주파수에서 높은 대역폭(80MHz~160MHz)을 지원하고, 2.4GHz에선 802.11n과의 호환성을 위해 40MHz까지 대역폭을 지원한다. 2011년 1월 20일, IEEE 802.11 TGac (ac를 위한 Task Group)에 의해 초기 기술 사양 초안 0.1이 확정되었다. 표준의 마무리는 2012년 후기에, 최종 802.11 위원회의 승인은 2014년 초에 예상되고 있다. 연구 자료에 따르면, 802.11ac 사양의 장치들은 2015년에 일반화되어 전 세계에 10억 개 이상 퍼져 나갈 것으로 기대된다.

 

http://ko.wikipedia.org/wiki/IEEE_802.11ac

 

자세한 내용은 봐도 잘 모르겠다. 대역폭이 넓어져서 더 빠른 것이라는 것밖에… 갤럭시4에는 이미 들어가 있는걸로 알고있다.

 

http://unex.com.tw/802-11ac-gigabit-wi-fi

 

http://unex.com.tw/802-11ac-gigabit-wi-fi

아래 내용을 참고해보자.

http://earthcode.com/blog/2006/01/css_floats_programmatically.html

 

요약하면,

IE에서는 styleFloat, 나머지 cssFloat 를 설정해야 한다.

float로 쓸 수 없는 이유는 예약어와 겹치기 때문이다.

 

Programmatically setting the "float" CSS property in Javascript

IE and Firefox have different ways of doing this, and neither one is what you would expect.

 

In IE, it's myDiv.style.styleFloat="left";

In Firefox, it's myDiv.style.cssFloat="left";

 

Here's a full code block, with primitive browser detection included. This will work in both IE and Firefox:

 

if (document.all) { // very basic browser detection

var sFloat="styleFloat"; //ie

} else {

var sFloat="cssFloat"; //firefox

}

var oMyDiv=document.getElementById("myId");oMyDiv.style[sFloat]="left";

 

http://www.emailonacid.com/blog/details/C13/12_fixes_for_the_image_spacing_in_html_emails

CoffeeScript는 자바스크립트를 변환 컴파일하는 프로그래밍 언어이다. Ruby, Python, Haskell에서 영감을 얻은 짧으면서도 가독성이 높은 syntactic sugar와 의미 매칭과 같은 정교한 기능이 추가되어 있다. CoffeeScript는 런타임 성능에 영향없이 약 1/3보다 적은 코드의 작성으로 자바스크립트로 컴파일 된다. 2011년 3원 16일 부터 CoffeeScript는 GitHub에서 가장 많이 주목된 프로젝트가 되었으며 현재까지도 GitHub에서 가장 많이 개발되고 있다.

 

http://jashkenas.github.io/coffee-script/

 

CoffeeScript is a programming language that transcompiles to JavaScript. The language adds syntactic sugar inspired by Ruby, Python and Haskell to enhance JavaScript's brevity and readability, adding sophisticated features like list comprehension and pattern matching. CoffeeScript compiles predictably to JavaScript and programs can be written with less code, typically 1/3 fewer lines, with no effect on runtime performance. Since March 16, 2011, CoffeeScript has been on GitHub's list of most-watched projects, and as of today is the eleventh most popular language on GitHub.

 

Sample 보기: http://coffeescript.org/

 

Sync commit

 

Redo log file에 즉시 sync write한다. server process는 이때 기록이 완료될 때 까지 log file sync를 대기하며 이것이 Oracle의 기본적인 Sync commit방식이다. Write I/O 는 매우 순간적이지만 대량으로 발생한다. Oracle에서 수행하는 normal commit의 절차는 다음과 같다.

  • User begins transaction.
  • While user is issuing DML, Oracle generates redo entries corresponding to the data changes. These redo entries are buffered in memory while the transaction is occurring.
  • When the user issues a COMMIT, Oracle immediately writes this buffered redo to disk, along with redo for the commit. Ie, a disk I/O is forced.
  • Oracle does not return from the commit until the redo has been completely written to disk (to the online redo log).

 

http://www.orafaq.com/node/93

 

ASync Commit

Oracle 10g부터 지원한다. Redo Buffer의 변경 내용을 Redo Log File에 기록할 때까지 server process가 대기해야만 했지만 Redo write한계 극복 파라미터 제공한다. Redo Log File에 Redo Buffer를 쓸때까지 log file sync를 기다리지 않고 트랜잭션 처리한다. 문법은 다음과 같다.

 

COMMIT WRITE BATCH NOWAIT ;

COMMIT [WRITE [IMMEDIATE | BATCH] [WAIT | NOWAIT] ]

 

하지만 바로 disk I/O를 일으키려면 다음과 같이 한다.

COMMIT WRITE IMMEDIATE WAIT;

 

그냥 COMMIT 이라고 쓰는것도 물론 똑같다.

 

COMMIT_WRITE 파라미터로도 설정할 수 있다.

COMMIT_WRITE='{ IMMEDIATE | BATCH } , { WAIT | NOWAIT }'

 

 

그 동안 나는 JavaScript 에디터로 notepad++(http://notepad-plus-plus.org/)를 써왔었는데 Brackets(http://brackets.io/) 이라는 프로젝트를 알게 되었다. Adobe에서 참여하고 있는 프로젝트인데 심플하고 약간 멋져 보이면서.. 에러도 잘 잡아주어서 맘에 든다. 한동안 이걸로 코딩 해봐야겠다.

 

셈플 예시

 

http://brackets.io/

안드로이드는 루팅하면 게임 치트를 사용할수 있군.. 이럴수가..

http://gameguardian.net

 

게임 가디언이라는 프로그램을 이용해서 인 것 같은데, 이 프로그램이 메모리를 수정할 수 있게 해준다. 예를들면 현재 메모리하고 아이템을 사용한 후 메모리를 비교해서 변경된 주소를 찾고 이 부분이 아이템 수량을 가리키는 것이라고 추측하는 방법.

 

뭔가..이런것들이 많이 나오면 안드로이드에서 사업하기 참 어렵겠군요. ㅎ

근데… iGameGuardian 이라고 아이폰 용도 있군~ 아이폰도 역시 jailbroken (탈옥)한 장비에서만 동작.

http://gameguardian.net/forum/files/file/85-igameguardian/

http://gameguardian.net

 

구글 회사 이름과 비슷하다. 하지만 Googol은 큰 수를 말한다. 10^100 (10의 100 승)

그리고 또 다른 수로 Googolplex 가 있다. 이 수는 10^googol (10의 googol 승) 을 말한다.

 

수학자들 아이디어는 참.. 재미있다.

 

http://en.wikipedia.org/wiki/Googol

http://en.wikipedia.org/wiki/Googolplex

 

구글에서 검색하면 바로 계산식도 나온다.

 

헐! 이건 얼마나 큰 수란 말인가? ㅋ

http://www.eakademik.com/zanimljivosti/googol

Comet은 새로 개발된 혁신적인 기술을 의미하지 않고 기존 Ajax 기술을 이용해서 Long-polling하는 방법을 이 용어로 부르기 시작한 것이다.

http://mygony.com/archives/2535

 

대충 이해했으면 Tomcat 에서 한번 만들어보자. ^^

http://corund.net/blog/entry/%EC%9E%90%EB%B0%94-%EC%84%9C%EB%B8%94%EB%A6%BF-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%9D%98-Comet-%EC%A7%80%EC%9B%90-2---Tomcat

 

 

http://books.zkoss.org/wiki/Small_Talks/2012/February/New_Features_of_ZK_6

http://en.wikipedia.org/wiki/Apache_Velocity

 

Apache Velocity is a Java-based template engine that provides a template language to reference objects defined in Java code. It is an open source software project directed by the Apache Software Foundation and aims to ensure clean separation between the presentation tier and business tiers in a Web application (the model–view–controller design pattern).

 

Apache Velocity는 자바 코드에서 선언된 참조객체를 제공하기 위한 템플릿 언어를 제공하는 Java 기반 템플릿 엔진이다. Apache Software Foundation에서 관리되는 오픈소스 소프트웨어 이고, 웹 어플리케이션의 프리젝테이션 영역과 비즈니스 영역의 깨끗한 분리를 목적으로 하고 있다. (모델-뷰-컨트롤러 패턴)

(마소4월호 참고)

  • 맵리듀스 프로그램의 비즈니스 알고리즘을 효율적으로 구성했는가?
  • 맵리듀스 수행을 위한 작업 수, 즉 맵의 수와 리듀스의 수를 효과적으로 설정할 수 있는가?
  • 맵리듀스 프로그램을 수행하기만 하면 과연 빅데이터 성능을 최대한 빠르게 수행할 수 있는가?
  • 과연 기존 SQL 기반 또는 쿼리 기반의 프로그램보다 더 높은 성능을 보장하는가?
  • 맵리듀스가 수행되는 환경인 OS, 네트워크, HW Bios 구성환경은 하둡 처리에 어떤 영향을 줄 것인가?

 

하둡 성능이 영향을 주는 요소는 정말 참 많다. 가장 기본적인 cpu에서부터 hdd, 그리고 네트워크, jvm 등등.. 이런 것들을 모두 감안하고 최적의 성능을 내는 장비를 만들기는 참 어렵다. 이것의 대안은 유명한 벤더들이 제공하는 어플라이언스를 구매하는 것인데.. 이것을 하둡의 가격 경쟁력을 떨어트리게 된다. 하둡을 도입할 때 기존의 방식보다 성능이 나아질 것인지 면밀히 검토할 필요가 있다.

모바일 앱의 버그 리포트 툴 '버그센스' (상용툴)

http://www.bugsense.com

 

많은 기능을 제공하고 있다.

 

"결론부터 말하면 개발조직의 무기력과 팀 간 불화는 온전히 경영진과 개발 총책임자의 능력 부족 때문이다... (후략)"

 

위와 같은 말로 시작하고 있다… 정말일까… 생각해볼 대목이다. 하아~

IE7에서는 아래와 같은 형식은 지원하지 않는다.

var carname1="Volvo XC60";

alert(carname1[0]); // 지원안함!!

 

역시 IE는 고물이다. ㅋ

다행스럽게도 IE8 이상은 잘 동작한다.

 

안되는 이유는 string의 array index 접근은 ECMAScript 3의 표준이 아니란다. ECMAScript 5 표준이란다.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String#section_5

 

하지만 아래와같이 꼼수를 쓰면 가능하다.

var textChars = text.split('');

alert(textChars[0]);

Netsh 를 이용하면된다. 정말 엄청 간편하고 너무 좋다. ^^

아래처럼 써보자.

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

 

참고: http://stackoverflow.com/questions/11525703/port-forwarding-in-windows

 

encodeURI() / decodeURI()

최소한의 문자만 인코딩합니다.

; / ? : @ & = + $ , - _ . ! ~ * ' ( ) #

이런 문자는 인코딩하지 않습니다.

http:// ... 등은 그대로 나옵니다.

 

 

encodeURIComponent() / decodeURIComponent()

알파벳과 숫자 Alphanumeric Characters 외의, 대부분의 문자를 모두 인코딩합니다.

http:// ... 가 http%3A%2F%2F 로 됩니다.

 

escape() / unescape()

예전부터 있던 오래된 함수입니다. encodeURI() 와 encodeURIComponent() 의 중간 정도의 범위로 문자를 인코딩합니다.

 

http://mwultong.blogspot.com/2006/10/encodeuri-encodeuricomponent-escape.html

 

오픈소스를 사용하다보면 라이선스 종류에 따라서 어떻게 어느정도 또는 어떤 의무를 가지는지 헷갈리는 경우가 많다. 사용할때마다 다시 찾아보곤 있지만 다시볼때마다 까먹는다. ^^ 그런데 학국저작권위원회에서 나 같은 사람 편하라고 괜찮은 사이트를 만들어놨다. 오픈소스 라이선스에 대해서 정리가 잘되있고 실수도 미연에 방지할 수 있다.

 

https://www.olis.or.kr

 

또한 사이트에서 배포하고있는 오픈소스SW 라이선스 가이드(https://www.olis.or.kr/ossw/license/open_source_guide.pdf) 도 큰 도움이 되고 있다.

Code Conventions for the JavaScript Programming Language

http://javascript.crockford.com/code.html

 

APA: psychology, education, and other social sciences.

MLA: literature, arts, and humanities.

AMA: medicine, health, and biological sciences.

Turabian: designed for college students to use with all subjects.

Chicago: used with all subjects in the "real world" by books, magazines, newspapers, and other non-scholarly publications.

+ Recent posts