Java에서 Stream을 이용해서 read, write를 할때 버퍼를 얼마의 크기로 설정해야 할지 고민이 될때가 있다.이럴 때는 다음과 같이 시스템에 최적인 크기를 알아내서 사용하면 최고의 성능이 나온다.아래의 코드는 디스크에서 몇바이트 씩 읽는가를 BufferedXXXStream이 알아내서 사용한다.일반적으로 안드로이드는 8192이다. 인터넷이나 책의 예제는 1024로 설정하는데 8192로 설정하면 가장 적합하다. class IdealBlockSize { // You could alternatively use BufferedInputStream and System.in . private static class MyBufferedOS extends BufferedOutputStream { public ..
Java에서 MySQL을 연동할때 JDBC로 연동을 하느냐, 아니면 MySQL connector로 직접 연동을 하느냐 고민이 많았다. 결론적으로는 JDBC는 MySQL connector library jar가 필요하고 두가지는 똑같다고 할수 있다. 윈도우에서 ODBC냐 아니냐와는 다른 문제였다. 아무튼 다음과 같이 코드를 작성하고 리눅스 서버 콘솔에서 테스트 하면 Java에서 MySQL을 연결할수 있는지 테스트를 할수 있다. MySQL connector가 없으면 ClassNotFoundException이 발생하며, 기타 DB관련 문제는 SQLException이 발생한다. import java.sql.*; /* javac MySQLTest.java java -classpath .:./mysql-connec..
Python 프로그램을 python xxx.py 형태가 아닌 ./src.py로 실행하는 방법에 대해서 알아보자. 스크립트 프로그램 언어인 파이썬은 항상 python xxx.py 형식으로 실행을 시켜야 한다. 파이썬은 이제 대중적 프로그램 언어가 되어서 시스템 관리에도 많이 이용이 되고 있다. 하지만 xxx.sh처럼 ./xxx.sh로 실행하게 하려면 다음과 같이 하면된다. 단, 이 문장은 모든 xxx.py의 최상단에 위치하여야 한다. #!/usr/bin/python 그리고 실행할때는 다음과 같이 실행권한을 준다. chmod +x xxx.py 실행할때는 ./xxx.py로 실행한다.
Python을 사용하다 보면, 소스코드에서 썼던 한글이 깨질 경우가 있다. 이러한 원인은 소스코드 자체는 utf-8로 저장되어 있는데, 실행하는 콘솔이 euc-kr로 실행하거나 혹은 그 반대일 경우이다. 이럴때 명확하게 소스코드 파일 자체가 특정 인코딩으로 저장되었다고 선언을 해주어야 한다. 소스코드 최상단에 다음과 같이 입력하면 된다. #-*- coding: utf-8 -*- euc-kr의 경우 utf-8 대신에 euc-kr을 설정해주면 된다.
Delegate/EventC#은 Java의 interface callback을 쉽게 하기 위한 방법으로 delegate/event를 제공한다. Delegate (위임, 대리자)Delegate는 C의 함수포인터와 같은 방식으로 함수를 저장했다가 파라미터로 전달 또는 호출할수 있는 객체이다. using System; namespace Delegate{ class MainClass { public delegate void Message(string msg); public void Hello(string msg) { Console.WriteLine("Hello "+msg); } public void Run() { Message message = new Message(Hello); message("Delegate..
서버 - index.js const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws, request) { console.log('connection'); ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.on('close', function close(code, reason) { console.log('close ' + code + ':'+reason); }); ws.send('something'); }); 클라이언트 - ind..
Win32에서 IPC(Inter Process Communication)의 하나의 방법인 Pipe에 관한 간단한 Server/Client 예제이다.파이프를 하나만 만들고 단방향 서버 클라이언트이다.서버는 보내기만 하고, 클라이언트는 받기만 한다. // PipeServer2.cpp : Defines the entry point for the console application.//#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]){ // "\\\\.\\pipe\\RenToImaging"라는 이름의 파이프를 생성한다. // 파이프는 항상 \\.\pipe\(이름)에 생성 되어야 한다. HANDLE hPipe = ::CreateNamedPipe(L"\\\\.\\..
- Total
- Today
- Yesterday