activemq 종료 또는 재시작 할때 아래와 비슷한 로그가 나면서 종료가 안되거나 강제종료가 되는 경우가 있다.


Connecting to pid: 5184

INFO: failed to resolve jmxUrl for pid:5184, using default JMX url

Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

INFO: Broker not available at: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

...............................

INFO: Regular shutdown not successful,  sending SIGKILL to process

INFO: sending SIGKILL to pid '5184'


메세지를 보면 jmx에 관련된 메세지로 보이는데 activemq는 jmx 관련 정보가 있는 tools.jar 파일을 기본적으로 $JAVA_HOME/../lib/tools.jar에서 찾는다.

그러므로 자바 sdk를 설치한 후 $JDK_HOME/jre 디렉토리를 java_home으로 설정해주면 문제가 발생하지 않는다.

그러기 위해서는 activemq_home/bin/env 파일을 열어 최 하단에 JAVA_HOME 변수에 위와 같이 jdk 밑에 있는 jre 경로($JDK_HOME\jre)를 설정해주면 문제가 발생하지 않는다. (env파일은 activemq start를 한번이라도 실행하면 생성된다) 


# ACTIVEMQ_HOME/bin/env 파일 하단에 아래와 같은 형태로 추가해준다

JAVA_HOME="/home/user/jdk1.8.0_131/jre"




License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
파일을 업로드 할 서버가 마땅한 곳이 없어서 티스토리 스킨에 업로드했다.

http://goo.gl/b4qHK 에서 직접 확인 가능!

소스보기를 해보면 알겠지만 어떤 크기의 네모로직도 문제없도록 만들었다.


 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
mysql workbench 사용해서 관리하려는데 Can't connect to MySQL server on '서버IP or 도메인' (10061) 이렇게 10061 에러가 발생하는 경우가 있다.
이는 mysql 설정에서 외부접속 가능한 주소를 지정해주지 않아서 발생한다.
ubuntu 에서 apt-get 으로 설치를 한 경우엔 /etc/mysql/my.cnf 파일을 열어서 bind-address 항목을 찾아 적절히 수정해주자. 윈도우의 경우에는 설치폴더 내에 my.ini파일로 존재하는 경우도 있다고 하니 참고.

수정 후엔 서비스 재시작 하는것을 절대 잊지말것. 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
만약을 위해 기록하는 cloud9 최신빌드 설치하기
cloud9는 node.js기반이지만 github에서 가져올 때 node까지 가져오기때문에 미리 설치할 필요는 없다.

우선 적당한 디렉토리에서 아래 두줄을 실행해 소스파일을 다운

$ git clone https://github.com/ajaxorg/cloud9.git

그럼 두 디렉토리가 생성된다

우선 cloud9를 설치
$ cd cloud9
$ git branch devel origin/devel
$ git checkout devel
$ git submodule update --init --recursive
$ bin/cloud9.sh

여기서 cloud9이 실행되는데 만약 o3 에러가 발생한다면 아래 과정대로 o3를 빌드한다
(o3 설치를 위해선 node.js를 먼저 빌드 해 놓자)
$ cd ..
$ git clone http://github.com/ajaxorg/o3
$ cd o3 
$ ./tools/node_modules_build
$ cp build/Release/o3.node ../cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/
문서에는 default에 있다는데 왜 난 Release에 있지?

이제 node로 cloud9/bin/cloud9.js 를 실행하고 -w 옵션으로 워크스페이스를 -l로 접속 가능 호스트명을 지정해준다.

브라우저로 cloud9에 접속한 모습
원격에서 바로 수정하고 테스트할 수 있는 cloud9의 위엄 대단합니다.
이젠 브라우저만 가능한 넷북이 있어도 얼마든지 IDE환경에서 프로그래밍을 할 수 있는 시대다.


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
cakephp 처음 세팅시 아래와 같은 에러가 발생할 수 있다(경로 일부 생략)

Warning: _cake_core_ cache was unable to write 'cake_dev_ko-kr' to File cache in lib/Cake/Cache/Cache.php on line 306

Warning: _cake_core_ cache was unable to write 'cake_dev_ko-kr' to File cache in lib/Cake/Cache/Cache.php on line 306

Warning: app/tmp/cache/persistent/ is not writable in lib/Cake/Cache/Engine/FileEngine.php on line 320

Warning: app/tmp/cache/models/ is not writable in lib/Cake/Cache/Engine/FileEngine.php on line 320

Warning: app/tmp/cache/ is not writable in lib/Cake/Cache/Engine/FileEngine.php on line 320

Warning (512): _cake_model_ cache was unable to write 'default_blog_list' to File cache [CORE/Cake/Cache/Cache.php, line 306]

Warning (512): _cake_model_ cache was unable to write 'default_blog_list' to File cache [CORE/Cake/Cache/Cache.php, line 306]

Warning (512): _cake_model_ cache was unable to write 'default_posts' to File cache [CORE/Cake/Cache/Cache.php, line 306]

Warning (512): _cake_model_ cache was unable to write 'default_blog_posts' to File cache [CORE/Cake/Cache/Cache.php, line 306]

 
이는 서버가 app/tmp에  쓰기권한이 없을 때 발생한다.
해결방법은 app디렉토리로 이동해서 아래와 같이 입력하면 된다
$ sudo chown -R (서버 유저) tmp

이때 저 서버 유저를 모른다면 아무 php파일에 아래 내용을 추가해서 브라우저로 확인한다
whoami: <?php echo `whoami`; ?>

난 daemon으로 나오기 때문에 아래와 같이 입력했다
$ sudo chown -R daemon tmp

문제 해결!


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License

Missing Database Connection
Error: Mysql requires a database connection

Error: Confirm you have created the file : app/Config/database.php.

Notice: If you want to customize this error message, create app/View/Errors/missing_connection.ctp.

Stack Trace

#0 /home/widyou/www/blog/lib/Cake/Model/ConnectionManager.php(101): DboSource->__construct(Array)
#1 /home/widyou/www/blog/lib/Cake/Model/Model.php(3241): ConnectionManager::getDataSource('default')
#2 /home/widyou/www/blog/lib/Cake/Model/Model.php(1030): Model->setDataSource('default')
#3 /home/widyou/www/blog/lib/Cake/Model/Model.php(3265): Model->setSource('posts')
#4 /home/widyou/www/blog/lib/Cake/Model/Model.php(2483): Model->getDataSource()
#5 /home/widyou/www/blog/app/Controller/PostsController.php(7): Model->find('all')
#6 [internal function]: PostsController->index()
#7 /home/widyou/www/blog/lib/Cake/Controller/Controller.php(473): ReflectionMethod->invokeArgs(Object(PostsController), Array)
#8 /home/widyou/www/blog/lib/Cake/Routing/Dispatcher.php(104): Controller->invokeAction(Object(CakeRequest))
#9 /home/widyou/www/blog/lib/Cake/Routing/Dispatcher.php(86): Dispatcher->_invoke(Object(PostsController), Object(CakeRequest), Object(CakeResponse))
#10 /home/widyou/www/blog/app/webroot/index.php(96): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#11 {main}



 
php를 세팅한 후 Cakephp 예제를 따라하는데 위와같이 아주 이쁘고 사람 미치게하는 에러가 계속해서 발생했다.
아무리 포럼을 뒤져보고 해도 해결되지 않는 문제. 저 문제가 나는 경우가 매우 극소수인듯 한데다가 가끔 달린 답변글은 암호가 다르거나 어쩌구저쩌구..
이것떄문에 하루를 버리다가 끄트머리에서 cakephp도 로그를 남기겠지 하고 로그를 뒤져보았다.
로그는 app/tmp/logs/error.log 에 위치해있었다.
아래로 쭉 내려보니 원인을 추정할 수있는 단서를 찾을 수 있었다.

2012-03-01 23:09:05 Error: [MissingConnectionException] Database connection     "Mysql" is missing, or could not be created.



아니 이게 무슨소리야! mysql연결에 쓰는 객체 자체가 없다니!
cakephp가 곶아라니!
저 에러로 검색을 해보니 cakephp는 pdo라는걸 이용해 db에 연결한다는 걸 알아냈다.
내 php에는 모듈이 하나도 없었으니 혹시나 하는 마음에 php 소스디렉토리에 가서 ext에 pdo로 시작하는 디렉토리를 찾아보니 떡하니 나오는 pdo_mysql...

속으로 온갖 욕을 하며 이전글처럼 모듈을 따로 빌드해다가 php에 넣었더니 무슨일 있었냐는 듯이 잘 연결된다.
으으 그래도 로그에서 저 한줄 찾은게 실마리가 되어서 다행이다.
오늘안에 못돌리면 포기하려고 했는데. 휴~

내일은 튜토리얼대로 간단한거 하나 만들어보고 내가만든 네모로직게임 자바스크립트 라이브러리로 사이드 하나 만들어본 후 잘 돌아가면 가상서버호스팅까지 해봐야겠다.

가상서버호스팅 대비해서 서버도 vmware는 최소화해놓고 후 모든 작업은 putty로 ssh콘솔 열어서 작업하고 있다.
영어채팅이 점점 빨라지는 기분이야!

아무튼 이런 삽질은 나만 하자는 마음으로 기록을 공유해본다.

계속 삽질하니 점점 apache와 php에 대해 알아가고 있는 느낌이 들어 좋다. 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
저번 글처럼 apache와 php를 설치한 후 phpMyAdmin을 설치했는데 아래쪽에 mysqli와 mcrypt를 찾을 수 없다는 경고가 떠서 내 신경을 긁었다. 알아보니 빌드할때 configure 에 --with-mysqli --with-mcrypt 이런 옵션을 붙인 후 빌드를 해야 하는 것이었다. 근데 이제와서 php를 다시 빌드할 수는 없잖아? 그래서 구글링을 열심해 해봤다.

우선 php소스파일이 있던 곳으로 이동해 ext/(모듈명) 디렉토리로 이동한다.
mysqli를 예로 들면
$ cd ext/mysqli

php관련 실행파일이 있는곳의 phpize라는 실행파일을 찾아 실행한다.
php빌드할때 prefix를 줬다면 그 경로의 bin에 있을 가능성이 높다. 나갔은 경우는 기본값으로 빌드했는데 /usr/local/bin에 있었다.

$ /usr/local/bin/phpize

그러면 라이브러리가 부족할경우 에러가 뜨는데 apt-get을 이용해서 가뿐히 설치해주고 해결한다. 난 autoconf가 없다고떠서 설치하니 해결되었다.

phpize가 완료돠면 이제 configure 파일이 생성되게 되는데 mysqli는 아래와 같이 옵션을 주자
$ ./configure --with-php-config=/usr/local/bin/php-config --with-mysqli=/usr/bin/mysql_config
사실 위 옵션을 몰라도 그냥 configure를 해본 후 에러메세지를 본 후 부족한 옵션을 추가하면 된다.

이제 make 까지만 실행 한다(install은 하지 않는다)
$ sudo make

이후 modules 디렉토리를 보면 mysqli.so 파일이 생성되어있을 것이다.
이것을 적당한 공간에 복사한다.
$ sudo mkdir /usr/local/lib/php/modules
$ sudo cp modules/mysqli.so /usr/local/lib/php/modules

이제 php.ini파일을 열어 수정해야한다.
$ sudo vim /usr/local/lib/php.ini

파일을 살펴보면 아래와 같이 모듈 경로 지정하는 부분이 주석처리되어있을 건데 이를 수정한다.
; extension_dir = "./"
->
extension_dir = "/usr/local/lib/php/modules "

그리고 더 내려가면 extension=모듈명 이런 구분들이 쭉 주석처리된 곳이 있는데 아래와 같이 모듈명을 추가해준다
extension=mysqli.so

이제 저장하고 apache를 재시작하면 적용이 된다!
mcrypt모듈도 같은 방법으로 하면 된다. mcryipt는 libmcryipt 를 요구하는데 sudo apt-get install libmcrypt-dev 명령으로 설치 후 그냥 configure & make 하면 된다.
 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
mysql은 apt-get으로 설치하고 이전 글대로 apache2는 최신버전을 직접 빌드했을 때 php 빌드하기

최신버전 다운로드
http://www.php.net/downloads.php 
 
php 사이트에서 제시한 configure는 아래와 같이 하면 된다고 하는데
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
해보면 mysql을 apt-get으로 설치해서인지 헤더 파일을 찾을 수 없다고 나온다

우선 헤더파일 설치
$ sudo apt-get install libmysql++-dev

이후 configure를 아래와 같이하고 make
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/include/mysql
$ sudo make
$ sudo make install

설정파일 넣기
$ sudo cp php.ini-development /usr/local/lib/php.ini

아파치 설정 수정
$ sudo vi /usr/local/apache2/conf/httpd.conf
파일 하단에 아래 3줄 추가
<IfModule php5_module>
AddType application/x-httpd-php .php .phtml .php3 .php5
</IfModule>

아파치 재시작
$ sudo /usr.local/apache2/bin/apachectl restart
또는 이전글처럼 서비스 등록을 해뒀으면
$ sudo /etc/init.d/apache restart

 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
ubuntu 10.04 기준으로 작성

apache2 소스를 받아 configure를 해보면 apr, aprutil, pcre가 각각 필요한데
apr과 aprutil을 apt-get을 이용해 설치를 하게되면 최신버전이 아니어서 그런지 configure는 성공하지만 make할때 에러가 발생하는 경우가 생긴다. (난 apr_file_link 에러가 발생했다)

수동으로 빌드하기로 마음먹었으면 라이브러리도 수동으로 설치하자.

apr & aprutil
http://apr.apache.org/download.cgi 

pcre
http://pcre.org/ 

apr은 간단함
$ ./configure --prefix=/usr/local/apr
$ make
$ sudo make install 

aprutil은 apr경로 지정해줘야함
$ ./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr
$ make
$ sudo make install 

pcre도 간단함
$ ./configure --prefix=/usr/local/apr
$ make
$ sudo make install 


이제 아파치 소스 디렉토리로 가서 아래처럼 경로를 지정해주자
$ ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/aprutil --with-pcre=/usr/local/pcre --enable-module=so --enable-so
$ make
$ sudo make install


빌드가 완료되었으면 테스트
$  /usr/local/apache2/bin/apachectl -k start
netstat -ntl 해봤을때 80번 포트 열리면 성공 

자동으로 시스템 부팅시 실행되도록 서비스 등록
실행 스크립트를 init.d에 복사한 뒤 update-rc.d 이용
$ sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache
$ sudo update-rc.d  apache defaults


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License
이미지 매칭 후 그위에 3D오브젝트를 띄우는데 이게 텍스쳐가 png로 되있다.
근데 opencv는 png를 무조건 1또는 3채널로만 읽어와서 그냥 투명 부분이 흰색으로 나오는 문제가 발생...

 http://blog.developer.stylight.de/2010/05/how-to-load-alpha-channel-pngs-with.html
위 방법대로 하면 png를 rgba 4채널로 읽는다길래 해보니까 그냥 죽더라..
설마 opencv 2.0이라 그런거니? 

다른 라이브러리를 찾아보던중 DevIL이라는 라이브러리를 포착
opencv와는 다르게 완전 c스타일로 코딩해야되는 라이브러리라 별로 끌리지는 않지만 써보기로함

코딩스타일이 opengl의 텍스쳐 로딩 부분이랑 매우 흡사하다.
DevIL로 파일을 불러와서 텍스쳐 세팅하는 방법을 간략히 적어보면

ILuint imgid;
ilGenImages(1, &imgid);
ilBindImage(imgid);
ilLoadImage(buffer);
ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE, ilGetData());
ilDeleteImages(1, &imgid);

이렇게 된다.
음.. 뭔가 맘에 안드는 코딩스타일..

Java가 하고싶다.
어서 이 C의 세계에서 나가야겠어!
프로그래머가 되는것은 맘대로였겠지만 언어선택은 아니란다
이런 젝일 


License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License

+ Recent posts