The Pursuit of Happyness

반응형


https://www.whatismyip.com/

http://www.whatsmyip.org/

http://www.whatsmyip.net/

http://www.ipchicken.com/

http://www.myipaddress.com/show-my-ip-address/

https://www.iplocation.net/find-ip-address

http://www.findip.kr/

https://www.google.co.kr/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&q=what+is+my+ip

http://checkip.dyndns.org/


반응형

반응형

드디어 Windows 10 이 출시되었습니다.

예전에는 마이크로소프트 사에서 새 소프트웨어를 출시하면 설레이는 마음으로 설치해보곤 했었는데,

언젠가 부터는 맥으로 넘어와서 잘 안쓰게 되었네요..


하지만 저는 서피스를 쓰는 관계로 윈도우와의 인연은 계속 이어가고 있습니다.

기존의 Windows 7 이상의 버전을 사용중인 일반 유저라면 무료로 업그레이드가 가능하며, 

출시일로부터 1년 이내에 업그레이드를 하는 경우 무료로 계속해서 사용이 가능합니다.


일반 설치는 업그레이드 예약을 통해 가능합니다.

자세한 내용은 아래 링크를 통해 마이크로소프트 홈페이지에서 확인 가능합니다.

http://www.microsoft.com/KO-KR/windows/windows-10-upgrade


이번에 새롭게 윈도우10이 출시되자 재미있는 관련 기사가 있어서 링크를 걸어 봅니다. 
http://www.newdaily.co.kr/news/article.html?no=264691 (한눈에 알아보는 업그레이드 변천사)
윈도우 2000대신 ME가 있어야 할거 같고, 각 버전에 대한 자세한 설명은 없고 간략한 소개와 함께 각 버전별로 시작 화면을 기사로 올리셨네요.


한국 마이크로소프트에 있는 윈도우10 관련 Q&A 글입니다.

1. 무료 업그레이드 안내
http://answers.microsoft.com/ko-kr/windows/forum/windows_10-win_upgrade/windows-10%EC%9C%BC%EB%A1%9C-%EB%AC%B4%EB%A3%8C/9a832103-feba-4bee-83f7-b45cccefa5b2?tm=1434942767953

2. 업그레이드 이후 재설치 안내
http://answers.microsoft.com/ko-kr/windows/forum/windows_10-win_upgrade/%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C/689f4b13-ab79-446a-8299-ad4b2a7297a6?tm=1434949979274

----

아래 내용에 대해서는 라이센스를 확인한 후에 업데이트 하도록 하겠습니다.
업그레이드가 아닌 클린 설치의 경우 ESD 파일을 다운로드 받아서 ISO로 변경해서 사용하면 됩니다.
이번에 출시된 RTM 버전 윈도우의 빌드 넘버는 10240.16384.150709-1700 이며, 프로 64비트 한국어 버전의 다운로드 링크를 통해서 다운로드가 가능합니다.ESD 파일명은 다음과 같습니다. 
10240.16384.150709-1700.th1_CLIENTPRO_RET_x64fre_ko-kr_7E98F3B91FFE7C6D70F328119CB91CFF7148D98A.esd

ESD 파일을 부팅이 가능한 ISO로 변환하기 위해서는 다음의 과정이 필요합니다.

마이크로소프트 홈페이지 Q&A에 등록되어 있는 것으로 보아 불법은 아닌것 같습니다.

http://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_install/instructions-create-a-bootable-iso-file-using-esd/d2768b51-221a-436e-af4e-d3b9118a8864?page=1&auth=1


요약해보면 ESD 파일을 받아서 ESD decrypter 를 이용해서 부팅이 가능한 ISO 파일로 변환하는 것입니다.

아래 링크에는 한글로 된 설명이 있습니다.

http://archwin.net/244


위의 설명이 정식 출시 이전에 작성된 것이라서 decrypter 4.7 버전으로 되어 있는데, 새로 출시된 10240 빌드 윈도우 10의 경우 decrypter 6.7 버전을 사용해야 하는 것 같습니다.

아래 링크에서 다운로드가 가능합니다. (바이러스 체크를 안해봤습니다. 혹시나 문제될수 있으니 주의하세요!!)

http://files.fm/down.php?i=uqtmaal&n=esd-decrypter-wimlib-6.7z

프로그램 실행시 가급적 한글명 경로가 없는 곳에서 실행하시는 것이 좋을 것 같네요.. (ex c:/tmp)


변환후에는 자동으로 각 언어에 맞는 파일명으로 iso 파일이 생성되며 한글 윈도우10 프로 64비트 버전의 경우 아래와 같이 파일이 생성되었습니다.

ko_windows_10_pro_10240_x64_dvd.iso


UPDATE : 윈도우10 ISO 파일은 다음 링크에서 다운로드 받으실 수 있습니다.

https://www.microsoft.com/en-us/software-download/windows10ISO


Select edition 에서 Windows 10을 선택하시고 Confirm

그리고 Select the product language 에서 Korean을 선택하시고 Confirm


32-bit or 64-bit 중 필요한 것을 선택하시면 다운로드가 시작됩니다.

참고로 64-bit 를 선택하면 설치시 32-bit 버전을 선택하실 수도 있습니다.



반응형

반응형

데이터 무제한 요금제를 사용하시거나 인터넷 속도가 빠른 환경에서 이용하시는 분들은 필요 없을지 모르겠지만..

스마트 폰에서 검색시에 불필요한 것들을 너무 많이 로딩해서 속도도 느리고 검색페이지가 데이터도 추가로 사용하는 것이 짜증이 났던 경험이 있었던 분들을 위한 텍스트 기반의 심플 웹페이지를 소개합니다.

http://hyperurl.co/surl

(에스 유알엘)


일단 접속해 보시면, 아주 심플한 텍스트 기반의 페이지가 뜹니다.

텍스트 필드에 검색 키워드 넣고 "naver" 버튼 누르면 네이버 검색 결과 페이지로 갑니다.

자동 완성 등의 기능도 지원하지 않기 때문에 키워드 검색 도중에 추가 데이터를 사용하는 것도 없습니다.


그 외에 한국 프로야구나 메이저리그 점수 페이지에는 광고가 있어서 약간의 데이터를 사용합니다.

추후에 지하철 노선도 혹은 버스 정보 등을 추가할 예정인데, 그 외에 유용한 서비스가 있다면 아이디어 부탁드리겠습니다.


감사합니다.

반응형

반응형

실행환경 Ubuntu 14.04 LTS


root 권한으로 실행한다고 가정

eth0 를 고정 IP로 설정한다고 가정

설정은 다음과 같다고 가정

IP 10.0.0.10 

gateway 10.0.0.1 

netmask 255.255.255.0 

dns-nameservers 8.8.8.8 8.8.4.4


/etc/network/interfaces 파일을 편집한다.


파일에서 아래와 같은 부분을 찾는다.

# The primary network interface 

auto eth0 

iface eth0 inet dhcp


다음과 같이 수정한다.

# The primary network interface 

auto eth0 

iface eth0 inet static 

address 10.0.0.10 

gateway 10.0.0.1 

netmask 255.255.255.0 

dns-nameservers 8.8.8.8 8.8.4.4


수정 후 다음의 두 명령어를 차례로 실행하여 eth0 리로드 한다.

ifdown eth0

ifup eth0 


혹은 다음의 명령어를 이용해서 전체 네트워크를 리로드 해도 된다. 

(네트워크 카드가 여러 개 설정 된 경우 전체가 리로드 되어 서비스가 잠시 중단될 수 있으니 주의!)

 service networking restart



반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


이번에는 events 모듈을 이용한 채팅서버 코드이다.

events 모듈을 이용하여 원하는 명령어에 대한 동작을 다음과 같이 구현하면 된다.

event를 전송하는 channel 객체를 생성하고, 채널 객체에 clients 에는 소켓들을, subscriptions 에는 각 클라이언트에 전달하는 메써드를 지정한다.

클라이언트 연결시에는 'join' 이벤트가, 연결 종료시에는 'leave' 이벤트가 처리된다.


var events = require('events');
var net = require('net');

var channel = new events.EventEmitter();
channel.clients = {};
channel.subscriptions = {};

channel.on('join',
        function(id, client) {
                this.clients[id] = client;
                this.subscriptions[id] = function(senderId, message) {
                        if (id != senderId) {
                                this.clients[id].write(message);
                        }
                }
                this.on('broadcast', this.subscriptions[id]);
        }
);

channel.on('leave',
        function(id) {
                channel.removeListener('broadcast', this.subscriptions[id]);
                channel.emit('broadcast', id, id + " has left the chat.\n");
        }
);

var server = net.createServer(
        function(client) {
                var id = client.remoteAddress + ':' + client.remotePort;
                channel.emit('join', id, client);
                client.on('data',
                        function(data) {
                                channel.emit('broadcast', id, data.toString());
                        }
                );
                client.on('close',
                        function() {
                                channel.emit('leave', id);
                        }
                );
        }
);
server.listen(3000);


반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


이번에는 유저가 정의한 모듈을 사용하는 예제이다.

살펴볼 예제는 세율을 설정하고 아이템 가격을 입력하면 세금을 포함한 가격을 계산해 주는 모듈이다.


먼저 lib 라는 폴더를 만들고 거기에 tax.js라는 파일을 생성하여 다음과 같이 코딩한다.

var _taxRate = 0.10;

function roundTwoDecimals(amount) {
        return Math.round(amount*100) / 100;
}

exports.getTaxRate = function() {
        return _taxRate;
}

exports.setTaxRate = function(taxRate) {
        _taxRate = taxRate;
}

exports.calcTotalAmount = function(price) {
        return roundTwoDecimals( (1 + _taxRate) * price );
}

tax 라는 모듈을 이용해서 실행할 예제이다. moduletest.js 라는 파일을 만들어서 다음과 같이 코딩하자.

var tax = require('./lib/tax');
tax.setTaxRate(0.09);

var itemPrice = 10.00;
console.log("Tax Rate     :  " + (tax.getTaxRate()*100).toFixed(2) + "%");
console.log("Item Price   : $" + itemPrice.toFixed(2));
console.log("Total Amount : $" + (tax.calcTotalAmount(itemPrice)).toFixed(2));


nodejs moduletest 라고 실행하면 결과가 출력된다.

모듈을 만들 때 외부에서 접근이 가능하게 하기 위해서는 "exports" 로 정의해야 하며,

exports를 사용하지 않고 정의된 function 은 외부에서 사용이 불가능하다.

반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


다음은 node.js 로 작성한 채팅 서버 코드.

chat.js라는 파일에 다음과 같이 코드를 작성해서 저장.

var net = require('net');
var sockets = [];

var server = net.createServer(
                function(socket) {
                        socket.name = socket.remoteAddress + ":" + socket.remotePort;
                        sockets.push(socket);
                        socket.write("Welcome " + socket.name + "\n");
                        broadcast(socket.name + " joined the chat\n", socket);

                        socket.on('data',
                                function(data) {
                                        broadcast(socket.name + "> " + data, socket);
                                }
                        );

                        socket.on('end',
                                function(data) {
                                        sockets.splice(sockets.indexOf(socket), 1);
                                        broadcast(socket.name + " left the chat.\n");
                                }
                        );
                }
);

function broadcast(message, sender) {
        sockets.forEach(
                function (socket) {
                        if (socket === sender) return;
                        socket.write(message);
                }
        );
}
server.listen(3000);

실행은 nodejs chat 이라고 입력하면 된다.

코드를 살펴보면, 이 채팅 서버는 3000번 포트로 작동한다.

클라이언트에서 접속하면 소켓 IP와 Port를 아이디로 할당하여 sockets 에 저장.

그리고 새로 접속한 클라이언트에게는 서버 Welcome 메시지를 전송하고, 기존의 클라이언트에게는 새로운 유저가 들어왔다는 메시지를 broadcast로  전송.

클라이언트가 끊고 나가는 경우 sockets에서 해당 소켓 정보를 삭제하고 남은 클라이언트 들에게 유저가 나갔다는 메시지를 전달.

 

테스트를 위해서 telnet 을 이용해서 접속을 한다.

telnet [서버IP] 3000

 

텔넷 창을 여러개 띄워서 상대방이 보낸 메시지가 제대로 오는지 확인한다.

반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


다음은 클라이언트가 입력한 값을 그대로 돌려주는 Echo Server를 Node.js 스타일로 작성해 보겠다.

이번 예제에서는 소켓 연결을 위해서 net 모듈을 사용했으며, 3000번 포트로 동작하도록 하였다.

echo.js 라는 파일을 생성하여 아래와 같이 작성한다.

var net = require('net');
var server = net.createServer(
                function(socket) {
                        socket.on('data',
                                function(data) {
                                        socket.write(data);
                                }
                        );
                }
);
server.listen(3000);

실행은 nodejs echo 로 하면 되고, 확인을 위해서 telnet 등을 이용해서 서버에 3000 포트로 접속하면 입력한 값을 되돌려 주는 것을 확인 할 수 있다. 

여기서 socket.on 대신 socket.once 를 사용하면 한번 응답후에 연결을 종료시키도록 할 수 있다.

반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


다음은 8080 포트로 작동하는 Node.js 로 작성한 http 서비스 코드이다.

Node 의 http, fs 서비스를 사용하였고, 요청한 파일이 있으면 내려보내주고, 아니면 간단한 에러를 출력하는데,

실제는 http 서비스의 header 등을 제대로 설정해 주는 것이 좋지만, 예제를 간단히 만들기 위해서 생략하고 파일만 전달하게 작성했다.

Node.js 에서는 많은 코드가 아래와 같이 callback 함수를 등록하는 형식으로 작성된다.

httptest.js 라는 파일을 생성하여 아래와 같이 입력하고 저장한다.


var http = require('http');
var fs = require('fs');

var server = http.createServer(
        function(req, res) {
                var filePath = './public';
                if (req.url == '/') {
                        filePath += '/index.html';
                } else {
                        filePath += req.url;
                }

                fs.exists(filePath,
                        function(exists) {
                                if (exists) {
                                        fs.readFile(filePath,
                                                function(err, data) {
                                                        if (err) {
                                                                res.end('Server Error');
                                                        } else {
                                                                res.end(data);
                                                        }
                                                }
                                        );
                                } else {
                                        res.end('File Not Exists');
                                }
                        }
                );
        }
);
server.listen(8080);


httptest.js 가 실행되는 위치에 public 이라는 이름의 폴더를 만들고 그 안에 필요한 파일들 (index.html 등) 을 넣어 두면 http 서비스가 작동한다. 

서버의 실행은 nodejs httptest 라고 입력하면 된다.

확인은 웹브라우져를 하나 열고 http://[서버 IP]:8080 식으로 입력하면 된다.


반응형

반응형

실행환경 Ubuntu 14.04 LTS / node v0.10.25


프로그래밍 책을 보면 대부분 시작은 Hello World 이다.

Node.js 는 수많은 모듈들을 이용해서 상당히 간결한 코드로 구현하는 경우가 많은데, 

Hello World는 정말 말 그대로 한 줄로 끝난다.

hello.js 라는 파일을 만들어서 다음과 같이 한줄 적고 저장하자.

console.log("Hello World");

긴 설명이 필요 없을 것 같은데, console.log 는 서버쪽에 로그를 남기는 명령어라고 생각하면 된다.

Ubuntu 서버에서는 다음의 명령어로 실행한다.

nodejs hello

확장자가 붙어 있지 않은 경우 자동으로 js 파일로 인식하므로 nodejs hello 라고만 입력하면 된다.





반응형