2월, 2012의 게시물 표시

NODE.JS : 파일 MD5SUM 구하기

기본 모듈 crypto 를 이용해서 파일의 md5sum 을 구하는 스크립트를 만들어보자. 별도로 제공이 안되므로 직접 만들어써야 한다. 일단 아래와 같이 만들어보면 md5 뿐만 아니라 sha1 에 대한 checksum 을 쉽게 구할 수도 있을 것이다. 동기IO를 이용한 방법 (파일을 조금씩 읽어서 처리하는 방법) => Windows 에서는 에러가 발생하고 제대로 실행되지 않는다. 원인을 찾아보려고 했으나, 알 수가 없다. 혹시 누구 아시는분? node.js v0.6.11 에서 문제가 있었으나, v0.6.12 에서 잘 되고 있다. var fs = require('fs'); var crypto = require('crypto'); var filename = 'walk_test.js'; function md5sum(filename) { var genChecksum = null; var checksum = crypto.createHash('md5'); var bytesRead = 1; var pos = 0 var buffer = new Buffer(1024*64); // 64Kbyte var fd = fs.openSync(filename, 'r'); var data = null; while (bytesRead > 0) { bytesRead = fs.readSync(fd, buffer, 0, buffer.length, pos); pos += bytesRead; if (bytesRead === buffer.length) { checksum.update(buffer); } else { data = buffer.slice(0, bytesRead); checksum.update(data); } } fs.closeSync(fd); genChecksum = checksum.di...

nvm 이용하여 여러 버전의 node.js 설치하기

node.js 에도 Ruby 의 rvm 와 비슷한 툴이 제공됩니다. 바로 nvm 이지요. 설치방법은 아래와 같습니다. (FreeBSD에서는 ./nvm/nvm.sh 를 열어서 make 를 gmake 로 바꾸어주고 사용합니다.) $ git clone git://github.com/creationix/nvm.git ~/.nvm $ echo 'source ~/.nvm/nvm.sh' >> ~/.profile; source ~/.profile $ nvm install v0.6.11 $ nvm use v0.6.11 $ nvm alias default v0.6.11 $ node -v v0.6.11 이외에도 아래의 툴들도 고려해볼 만 하니 살펴봐주세요. https://github.com/isaacs/nave https://github.com/visionmedia/n http://pypi.python.org/pypi/nodeenv/

more(less) ANSI Color 제대로 보여주기

이미지
보통 Linux 나 FreeBSD에서 ls 명령어를 이용하면 파일/디렉토리 속성에 따라서 다양한 ANSI Color 로 나오게 되어 있다. 목록이 좀 긴 경우, more (or less) 를 이용해서 한 화면씩 끊어서 보게 되는데, 어떤 경우, ANSI 제어문자가 그대로 나오며, 색깔이 전혀 표시되지 않는 경우도 발생하는데, 보는데 상당히 괴로워진다. 다음은 ls -al | more 를 실행한 화면이다. 이것을 Color가 제대로 나오게 하려면 more (or less) 에 -R 옵션을 추가해주면 된다. ls -al | more -R 과 같이 해주면 다음과 같이 정상적으로 색깔이 잘 나오게 될 것이다.

FreeBSD 9.0 에서 pysqlite 설치

보통 pysqlite 를 설치하려면, pip install pysqlite 명령을 이용해서 쉽게 할 수 있다. 그러나, FreeBSD 9.0 에 pythonbrew를 이용해서 직접 python 을 설치한 경우에는 sqlite3 의 include, library 경로의 문제로 바로 되지 않는다. 이 때문에 직접 소스를 받아서, 올바른 경로를 설정하고 설치해주어야 한다. 설치 순서는 아래와 같다. $ pkg_add -r sqlite3 $ wget http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz $ tar xvfz pysqlite-2.6.3.tar.gz $ cd pysqlite-2.6.3 $ vi setup.cfg include_dirs=/usr/local/include library_dirs=/usr/local/lib $ python setup.py install

JRuby 1.6.6 인코딩 관련 버그

이미지
오랜만에 JRuby 를 PC에 설치해보고 테스트하려고 설치하고 간단히 jruby -v 명령을 실행하는데, 에러를 뱉어낸다. 뭔가 하고 찾아보니, 인코딩 관련 버그라고 한다. 관련 버그에 대한 내용은 http://jira.codehaus.org/browse/JRUBY-6398?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#issue-tabs 에서 찾아볼 수 있으며, 1.6.7 에서는 해결될 것이라고 한다. 조만간 릴리즈한다고는 하던데~ 그 전까지는 1.6.6 을 삭제하고 1.6.5 를 받아서 다시 설치해서 사용해야 할 듯 싶다. 참고로, Linux/FreeBSD 등에서는 기본 인코딩을 UTF-8을 사용하고 있는데, 별 문제 없이 잘 동작되는 것 같다.

FreeBSD 에 Scala 설치하기

이번에는 FreeBSD에 Scala 설치하는 방법을 알아보자. 우선, bash 와 openjdk 가 설치되어 있다고 가정한다. bash 의 Path는 /bin/bash 여야 한다. 직접 다운로드 하여 설치하는 방법 $ cd $ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz $ tar xvfz scala-2.9.1.final.tgz $ mv scala-2.9.1.final scala $ echo 'export PATH=$PATH:$HOME/scala/bin' >> ~/.profile $ source ~/.profile $ scala -version Scala code runner version 2.9.1.final -- Copyright 2002-2011, LAMP/EPFL 패키지로 설치하기 $ pkg_add -r scala $ scala -version Scala code runner version 2.9.1.final -- Copyright 2002-2011, LAMP/EPFL FreeBSD 9.0 에서 패키지로 설치하는 경우 다음과 같이 에러가 발생하지만, 먼저 openjdk 를 설치해 놓으면 문제 없이 실행된다. 찝찝한 생각이 들면 직접 다운로드하여 설치하자. Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-9.0-release/All/jdk-1.6.0.3p4_27.tbz: File unavailable (e.g., file not found, no access)

FreeBSD 에서 Java 사용하기

기존에 Sun JDK 를 사용하려면 많이 불편했었지요. FreeBSD 에서도 OpenJDK 를 사용할 수 있습니다. 설치는 아래와 같이 간단합니다. # pkg_add -r openjdk7 # mount -t fdescfs fdesc /dev/fd # echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab 혹시라도 JAVA_HOME 을 잡아주어야 하는 상황이라면, 아래와 같이 잡아주시면 되겠습니다. export JAVA_HOME="/usr/local/openjdk7" 이제 실행해보면 # java -version openjdk version "1.7.0" OpenJDK Runtime Environment (build 1.7.0-root_2011_12_03_14_00-b00) OpenJDK Client VM (build 21.0-b17, mixed mode) 어때요? FreeBSD 에서도 OpenJDK 덕분에 Java 환경을 쉽게 구성할 수 있어서 좋네요~