목록알쓸전컴 (343)
알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
Datatable Merge 하기 public static DataTable DataTableColumnMerge(IList tables, string pkColumnName) { DataTable result; try { if (tables == null || tables.Count == 0) { throw new ArgumentException("Table must not be empty.", "tables"); } if (string.IsNullOrWhiteSpace(pkColumnName)) { throw new ArgumentException("PK Column must not be empty.", "PK Column Name"); } if (!string.IsNullOrWhiteSpace(pk..
Datatable 을 csv (엑셀)출력 하는 소스 아래 소스를 사용하여 csv 로 만듭니다. public static void ExpoetToCSV(DataTable dtDataTable, string strFilePath) { StreamWriter sw = new StreamWriter(strFilePath,false, System.Text.Encoding.Default); //headers for (int i = 0; i < dtDataTable.Columns.Count; i++) { sw.Write(dtDataTable.Columns[i].ToString().Trim()); if (i < dtDataTable.Columns.Count - 1) { sw.Write(","); } } sw.Write..
QThread 안에서 Event 동기화 코드 QThread 의 Run 코드 안에서 가끔 evnet 을 받고 나서 다음 로직을 처리해야 할때가 있습니다. 다음은 그럴때 사용하는 방법입니다. 보면 QThread 는 run void class:run(){ while(!isInterruptionRequested()){qDebug()
mono linux 최신 버전 build 하기 우분투에서 mono 를 apt-get mono-devel 을 받아 보면 버전이 예전 것이다. 그래서 최신 버전의 mono 을 사용하기 위해서는 직접 build 해줘야 합니다. 직접 빌드는 2가지 방법이 있습니다. http://www.mono-project.com/docs/compiling-mono/linux/ 에 가보면 상세하게 나와 있지만 정리해 보겠습니다. 여기서 git Source 는 시도 해 봤는데 잘 안됩니다. 그래서 release pakage 을 다운 받아서 build 방법을 선택 했습니다. 먼저 빌드 패키지는 위의 사진의 빨간색 박스의 링크를 따라가면 있습니다. https://download.mono-project.com/sources/mono/..
telegrambots (java api) 텔레그램의 봇은 https://core.telegram.org/bots 에 나와 있는 기능을 할수 있습니다. 하지만 해당 bot 을 프로그램 하기 위해서는 https://core.telegram.org/api 에 있는 통신을 프로그램으로 작성 하여야 합니다. 예를 들면 http의 post 와 get 등을 통해서 말이죠 그런데 이러한것을 보다 쉽게 사용하기 위해서 사람들이 open source 로 만들어 놓은 라이브러리중 java 로 잘 만들어 져있는것이 있어서 샘플 코드와 학습 및 정리 목적으로 글을 정리 합니다. https://github.com/rubenlagus/TelegramBots 해당 프로젝트 github 주소 입니다. 일반적으로 쉽게 설치하는 방법은..
C# 직렬화(Serializable) 통신 구조 맞춰 주기 C# 에서 직렬화중에 Binary 직렬화를 사용하는 것들이 있습니다. 해당 Serializable 는 C#의 어셈 블리 정보와 네임 스페이스 클래스 이름 변수 이름 까지 맞춰줘야 deSerializable 이 됩니다. 안 그러면 직렬화 라이브러리 에서 에러를 보냅니다. 그래서 이것만 맞춰 줘서 통신을 하면 됩니다 . 어셈블리 설정 정보 입니다. 일단 어셈블리가 맞지 않으면 $exception {"'oolon.BaseLibrary, Version=2.1.6591.16683, Culture=neutral, PublicKeyToken=null' 어셈블리를 찾을 수 없습니다."} 같은 에러가 뜨게 됩니다. 기존에 사용중인 직렬화의 페킷을 보고 이를 파일..
QVector QList 등의 자료 구조를 쓰다 보면 포인터 type 을 탬플릿으로 사용할 때가 있다 이럴때 메모리 관리를 위해서 해동 자료 구조에서 사용한 포인터 변수들을 메모리 관리를 해줘야 하는데 일일이 delete 하는것보다 qDeleteAll 메소드를 사용하는것이 좋다. QList list; list.append(new Employee("Blackpool", "Stephen")); list.append(new Employee("Twist", "Oliver")); qDeleteAll(list.begin(), list.end()); list.clear(); 예제는 다음과 같다. 참고 사이트 : http://doc.qt.io/qt-5/qtalgorithms.html#qDeleteAll
QPrinter for QTextEdit QTextEdit text(table) // I checked "table" and it is complete. // If I send it to the clipboard and paste it in excel it looks fine. QPrinter printer(QPrinter::HighResolution);printer.setFullPage(true);QPrintDialog printDialog(&printer);printDialog.setEnabledOptions(QAbstractPrintDialog::PrintPageRange);printDialog.setPrintRange(QAbstractPrintDialog::AllPages);if (text.tex..
https://github.com/unosquare/embedio 해당 오픈 소스를 사용중에 linux mono 에서 사용할때 다소 충돌되고 시행 착오가 있었기에 게시물을 남깁니다. 먼저 mono project 에서 패키지를 떠블 클릭 하면 Adding EmbedIO... Downloading EmbedIO 1.13.2... 'EmbedIO' already has a dependency defined for 'Unosquare.Swan.Lite'. 그럼 다음과 같은 에러가 뜹니다. Adding Unosquare.Swan.Lite... Downloading Unosquare.Swan.Lite 0.32.1... 'Unosquare.Swan.Lite' already has a dependency defined..
UPX packing 과 unpacking (2) 이번에는 UPX 로 패킹된 파일을 디버거로 열어 보겠습니다. UPX 로 패킹된 파일 원래 notepad 파일 많이 다릅니다. upx 패킹된 파일은 압출된 코드를 압축 해제 하는 코드 부터 시작 되게 됩니다. 여기서 우리가 원하는 코드의 디버깅을 하기 위해서는 notepad 의 원래 실행 코드까지 접속 해야 합니다. 그럴려면 UPX 에서 압축이 해제 되고 실제 코드가 실행 되는 부분을 잡아 내야 됩니다. 그러한 부분을 잡는 공부 하고자 합니다. 일단 압축이 풀리는 부분을 보겠습니다. ctrl + F8 을하면 자동으로 step over 트레이싱이 일어 납니다. 그러면 계속 해서 반복되는 LOOP 를 만날수 있습니다. 그럴때는 반복 되는 코드가 무엇을 의미하는..