라즈베리파이에서 Visual Studio를 이용하여 C#을 올릴 경우 UWP(Universal Windows Platform)을 사용하게 됩니다.  아쉬운 점은 많은 기존 API들을 아직 지원하지 않는 점입니다. 이에 간단한 Client Sample을 하나 공유합니다.

아래는 동작 코드가 아니며, 프로그램 코드의 일부로 Socket 및 Class를 닫거나, 수신을 정지하는 상태 등은 임의로 만드시면 될 것 같습니다.

감사합니다.

This code is a sample code of the UWP for Windows IOT which does not support many previous APIs.

The sample code is a part of the whole-code and cannot be compliled thus please refer it and write your own code for closing class and sockets, and receiving conditions.

Thank you


Posted by kkckc
,
웹에서 사전 검색을 하다가, 간단하게 하면 좋겠다는 생각에
정말 간단한 사전검색 스크립트를 만들어 보았습니다.
(웹 사전은 네이버의 영영사전을 사용하였습니다.)

스크립트는 다운받으셔도 되고 간단하게는 아래를 붙여넣으셔도 됩니다

사용법 예 (precious라는 단어를 검색)
shell)  edic precious

 영영사전 ("cat > edic" 후 다음을 붙여넣기 하셔도 됩니다.)

#!/bin/bash
# all right reserved to kkckc
echo "$1 : "
wget -q -O - http://eedic.naver.com/small.naver?query=$1 | grep 'dnum' | sed 's/&nbsp;/ /g' | sed 's/<span class="dnum">/\n<span class="dnum">/g' | sed 's/<\/span><br>/\n\t<\/span><br>/g' |  sed 's/<[a-zA-Z!\/\s][^>]*>//g'  | grep -v "//" | more

다운로드 :

스크랩시 출처를 밝혀주시기를 부탁드립니다. ^^
Posted by kkckc
,
linux에서 다른 계정에 접속할때 주로 사용하는 ssh에서 패스워드 없이 로그인이 되도록 설정하는 방법입니다.

다음은 pound (username:ezra) 가 eliot (usename:tom) 에 접속하는 과정을 패스워드없이 설정되도록 하는 방법입니다.

1. pound에서 ssh authentication key를 만들어야 합니다.

$ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ezra/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ezra/.ssh/id_dsa.
Your public key has been saved in /home/ezra/.ssh/id_dsa.pub.
The key fingerprint is:
30:a5:15:13:3f:30:d6:ba:3e:71:c4:a2:19:93:19:0d ezra@pound

엔터키를 눌러서 키값이 기본 위치에 저장되도록 합시다. 기본값 대로라면 private key는 ~/.ssh/id_dsa에 저장되고 public key는 ~/.ssh/id_dsa.pub 에 저장됩니다.

2. 다음은 public key를 pound에서 eliot으로 전송해야 합니다.(private key가 아님) public-key를 복사하는 방법은 다음의 명령으로 간단하게 수행될 수 있습니다.

$ssh-copy-id -i ~/.ssh/id_dsa.pub tom@192.168.0.25

이제 ssh 'tom@192.168.0.25' 로 접속한 다음, .ssh/authorized_keys 파일을 보고 혹시나~ 우리가 추가하지 않은 값이 추가되어 있는지 검사해봅니다.

3. 자 이제 pound에서 eliot으로 접속해봅시다.

$ ssh tom@192.168.0.25
Linux eliot 2.6.12-10-386 #1 Mon Jan 16 17:18:08 UTC 2006 i686 GNU/Linux
Last Login: Mon Feb 6 22:40:31 2006 from 192.168.0.15

자 이제 우리가 기대한대로 패스워드를 물어보지 않는지 확인해봅니다.

참고 : Linux Phrasebook - Scott Granneman
Posted by kkckc
,
다음은 오라클 아카이브 파일을 자동으로 지우기 위해서 만들었던 스크립트입니다.

이 스크립트는 디렉토리의 특정한 확장자를 가진 N-1개의 화일을 삭제합니다.
삭제되지 않는 1개의 파일은 현재 가장 최근의 파일입니다.

oracle archive 삭제 및 로그화일 삭제에도 활용할 수 있습니다.

유용히 사용하시길..


Posted by kkckc
,
리눅스에서 C, C++ 관련 프로그래밍시 늘 이야기가 나오는 부분이 메모리릭(memory leak)입니다.
메모리릭을 잡는 툴로는 현재 valgrind, insure, purify 등의 소프트웨어가 나와있는데요.

회사 업무 관계로 한 소프트에 3가지를 모두 돌려보았습니다.

ibm의 purify는 정말 어이없는 성능을 보여줍니다.
insure는 좋은 인터페이스와 성능을 보여주지만, 유료입니다.
valgrind는 무료임에도 불구하고 좋은 성능을 보여주더군요.

하지만, 이런 메모리릭잡는 좋은 툴로도,
멀티쓰레드 환경과 라이브러리가 엉켜있는 환경에서는
100% 메모리릭 체크를 하지 못할 수 있습니다.

다음은 메모리를 모니터링하기 위한 제가 알고 있는 방법들입니다.

1) top 을 이용한 방법
top은 가장 보편적인 메모리를 보는 방법입니다. 문제는 top의 경우 메모리에 대한 정보를 로그로 남기기가 쉽지 않습니다.  다음은 탑을 사용한 메모리 감시 스크립트입니다.

2) ps -p
ps 역시 메모리를 볼 수 있습니다. 다음은 ps를 이용한 메모리 감시법입니다.

3) free -m -s10
free는 시스템 전체의 메모리를 감시합니다. 이 방법은 한 바이너리가 한 시스템에 올라갈때만 유효합니다. 뒤의 s옵션은 시간을 나타냅니다. 위의 3번 예는 10초를 간격으로 시스템의 메모리를 감시합니다.

4) 그 외 방법들
(a) sar -r 1
(b) vmstat 1 1

개인적으로는 1번을 선호합니다.
Posted by kkckc
,
어려운건 아니지만,
혹시 필요한 사람이 있을까봐 올려봅니다 :)

tar를 사용할 때 특정 디렉토리의 특정 확장자만 압축하고 싶을때의 방법은 다음과 같습니다.
(You can make a "tar file" with some specific extension. that could works in linux system)

예) 확장자가 c*, h 인 화일을 모두 src0503.tar 로 압축하기
Ex) cpp, c, cxx file compress to a tar file
shell> find . -name "*.c*"  -o -name "*.h" | xargs tar rvf src0503.tar

설명하자면 다음과 같습니다.

1) find . -name 은 특정 화일을 찾는 커맨드입니다. "*.c*" 라고 하면 모든 c, c++, cxx 등의 c파일을 찾아줍니다.

2) -o 를 붙이고 -name을 추가하면 다른 확장자나 파일명도 검색이 가능합니다.

3) xargs 는 파이프를 통해 앞의 커맨드의 결과를 뒤 명령문 파라메터로 넣어줍니다 :)

4) tar rvf 는 tar압축의 append 모드라고 합니다. 이렇게 압축하게 될 경우에는 파일이 많아도 모두 압축할 수 있는 장점이 있습니다.

5) 필요에 따라서 한번 더 압축합니다.
예) src0503.tar  -> src0503.tar.gz 로 변환하여 압축
Ex) make compless to tar.gz
shell> gzip -f src0503.tar


Posted by kkckc
,
1. This Class is used for various export (HTML, XLS, PDF) in JasperReport

2. You can use this class as Free. But you should mention of the source and site and Author.

3. For more detail... plz, read the comments in the source :)

4. Thanks for iReport, Jasperreport... etc Teams.

Made by kkckc(kkckc@nablecomm.com)

Posted by kkckc
,
This code may used for make automatically fit A4 size print in POI Excel Export
-----------------------------------------

HSSFSheet sheet = workbook.createSheet(name); // get the sheet

HSSFPrintSetup printsetup=  sheet.getPrintSetup(); // get print setup
printsetup.setFitWidth((short)1); // 1 page assigned for width
printsetup.setFitHeight((short)printsetup.A4_PAPERSIZE); // set A4 size code
sheet.setAutobreaks(true); // Option Button Move

------------------------------------------

POI로 Excel화일을 만들때,
Excel 프린트 설정에서
폭(Width)이 한페이지가 넘어가지 않게 자동으로 셋팅하는 방법입니다.
퍼가시는것은 자유지만, 출처를 밝혀주시기 바랍니다. :)
Posted by kkckc
,

This file is tested on POI3.0-alpha1 version.

Step. 1
Get the JFreeChart and POI from the Web.

Step. 2
Edit your net.sf.jasperreports.engine.export.JRXlsExporter.java file
--
// edited by kkckc
protected ExporterElements getExporterElements()
{
//  return JRGridLayout.NO_IMAGES_EXPORTER;
         return JRGridLayout.UNIVERSAL_EXPORTER;
}

// added by kkckc
protected HSSFPatriarch patriarch =null;       

// edited by kkckc
protected void createSheet(String name)
{
     sheet = workbook.createSheet(name);
     patriarch = sheet.createDrawingPatriarch();
}

// added by kkckc
protected void exportImage(JRPrintImage image, JRExporterGridCell gridCell, int colIndex, int rowIndex) {
         short forecolor = getNearestColor(image.getForecolor()).getIndex();
         HSSFFont cellFont = getLoadedFont(getDefaultFont(), forecolor);
         HSSFCellStyle cellStyle =
                 getLoadedCellStyle(
                         HSSFCellStyle.SOLID_FOREGROUND,
                         forecolor,
                         HSSFCellStyle.ALIGN_LEFT,
                         HSSFCellStyle.VERTICAL_TOP,
                         (short) 0,
                         cellFont,
                         gridCell
                 );
         //createMergeRegion(gridCell, colIndex, rowIndex, cellStyle);           
         /*
          x1 - the x coordinate within the first cell.
          y1 - the y coordinate within the first cell.
          x2 - the x coordinate within the second cell.
          y2 - the y coordinate within the second cell.
          col1 - the column (0 based) of the first cell.
          row1 - the row (0 based) of the first cell.
          col2 - the column (0 based) of the second cell.
          row2 - the row (0 based) of the second cell.           
         */
        HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, image.getWidth(), image.getHeight(), (short) colIndex, rowIndex,
                (short) (colIndex + gridCell.colSpan), rowIndex + gridCell.rowSpan);
        try {
            patriarch.createPicture(anchor, workbook.addPicture(image.getRenderer().getImageData(), HSSFWorkbook.PICTURE_TYPE_JPEG));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
}

---
You can use this code with Free License.
But you must mention the source auther(kkckc) and site before you use it.
----

회사에서 JFreeChart를 사용하고 있던 중 Excel에서 이미지가 Export되지 않는 부분을 고친 것입니다.
배포는 가능하지만 원저자와 출처를 반드시 밝혀주시기 바랍니다. :)



Posted by kkckc
,

JFreeChart 이야기

기술문서 2006. 4. 16. 22:34
요즘은 회사에서 레포팅과 관련해서 JFreeChart라는 녀석을 만지고 있습니다.
JFreeChart가 무엇을 하는 물건이냐 하면...
JAVA를 사용해서 만든 그래프(차트)를 그려주는 API입니다.

어쩌다가 이녀석을 만지기 시작했냐면..

이번에 K모 기업에 들어가게 될 EMS(Element Management System:조금 풀어 말하면 SNMP를 이용한 관리죠) 시스템에 시스템 통계 모듈을 만들게 되었는데..

PDF도 되야 하고, EXCEL도 지원을 해야 된다더군요.. 이런..

물론 상용 리포팅 툴에서는 기본적으로 지원하는 기능들이지만..
잘못하면 배보다 배꼽이 더 커질수 있으므로,
OpenSource 레포팅툴인 JasperReports 를 이용하기도 했습니다.

JasperReports는 XML로 레포팅 내용을 만들고, 이를 HTML, PDF, XLS등으로 변환시켜주는 강력한 녀석이죠 :)

이 JasperReports의 레포팅을 만들기 위해 iReport라는 툴을 사용하기 시작했는데..
막상 차트 만들기가 상당히 어렵습니다. 그래서 파라메터(java.awt.Image)로 이미지를 넘기는 방법을 선택했는데...

차트 이미지를 생성하기 위해 JFreeChart라는 API를 이용하게 되었습니다.
(JapserReports는 기본적으로 JFreeChart API를 이용해서 차트를 생성합니다.)

JFreeChart는 무척 강력하지만, 개발자의 마음(?)을 담아 만든거라. 친절하게도

" 네 맘대로 요리해서 쓰고 싶으면 오버라이딩 하렴~ "

이라는 제약조건이 존재합니다... ;;

더 마음아픈건, iReport, JasperReports, JFreeChart 모두가 오픈소스이지만, 메뉴얼은 상용으로 제공됩니다. 그리하여 구글을 아무리 뒤져도 별 자료가 없답니다.

그래서!! 앞으로 조금씩 약간의 팁 및 삽집의 결과들을 이곳에 조금씩 끄적거리려고 합니다.
시간을 조금씩 내서 올리는 만큼 상당히 내 맘대로이며..
별 내용 없잖아! 하실지 모르지만..

사실 메뉴얼 사도 별 내용 없습니다~

정말이라구요 ;;
Posted by kkckc
,