2023

airflow ExternalTaskSensor 사용 시 고려해야 할것들

지금 하고 있는 프로젝트에서 airflow ExternalTaskSensor 를 사용해서 다른 dag 에서 호출한것을 감지하는 부분이 있다. 이것을 사용할 때 몇가지 고려할 사항이 있었는데 한번 정리해 본다.

Back to Top ↑

2022

(pthon) pandas 처리 속도 개선에 대하여

지금 하고 있는 프로젝트에서 python pandas 와 numpy를 사용해서 데이터를 처리하는 부분이 있다. 그런데 기존에 있던 처리 속도가 느려서 이 부분을 검토하면서, 처리 속도를 높이기 위해 이것 저것 수정해서 테스트 하다 보니 알게 된 것들이 있어서 정리해 본다.

golang 1.18의 workspace mode 알아보기

이번에 1.18 버전이 나오면서 크게 변경된 것 (generic, fuzzing, 성능 향상, workspace 모드) 중에서 나에겐 workspace 의 유용함이 가장 먼저 다가왔다.
실제 프로젝트에서 golang 으로 개발하는 경우에 아주 유용한 기능이라고 생각된다.

Back to Top ↑

2021

macbook pro 2012 mid LCD replacement (맥북 액정 교체기)

지금 사용중인 맥북 프로가 몇달전에 갑자기 화면에 세로줄들이 발생했다. 외부 디스플레이는 문제 없는 상태라서 로직 보드 문제는 아닌거 같다. 새로 살 필요까지는 없는거 같아서 맥북 수명 연장에 좀 투자 하기로 했다.

맥북 배터리 스로틀링

macbook pro 2012 mid 의 배터리를 교체하기 위해 제거하고, 지금 전원 어댑터만 연결해서 사용을 해보니 심각한 속도 저하가 발생하고 있다.

Go 1.16 에서 $GOPATH/src 에서 코드 작성하고 사용하기

Go 1.16 버전 부터는 기본적으로 module 을 사용하게 변경 되었다. 덕분에 GOPATH 와 상관없이 아무 위치에서든 자신의 소스파일을 작성하면 된다. 그리고 모듈을 사용하기 위한 go.mod 파일이 반드시 필요하게 되었다. 하지만 1.16 버전에서도 선택적으로 module 사용을 할지 말지 여부를 결정 할 수 있다. 예를 들어 기존 프로젝트 구조가 GOPATH 내 src 를 사용하는 경우등이 해당될수 있다.

go 에서 proto buffer 사용하기

proto buffer 를 정의 -> go 로 변환하여 모듈을 만들고 -> 이 모듈을 로컬에서 호출해서 사용 하는 간단한 예제를 정리해 본다 (go 1.16 버전을 기준)

Back to Top ↑

2020

Back to Top ↑

2019

template method pattern 에 CRTP 사용하기 (c++)

그동안 개발하면서 template method pattern을 즐겨 사용하고 있는데,
virtual 함수를 이용하여 구현했었다.
그런데 CRTP 를 이용해도 비슷한(동일한건 아님) 처리가 가능하다.

Back to Top ↑

2018

libcurl POST 한글 encoding

curl 프로그램을 사용하여 POST 전송 시, 한글 데이터를 endcoding 해서 전송하는 방법은 다음과 같다.

Back to Top ↑

2017

Back to Top ↑

2016

CumBuffer : accumulating byte buffer for c++

네트워크 TCP 프로그램인 경우에 임의 길이의 작은 데이터 조각을 수신해서 누적(버퍼링)시키다가 일정 길이가 수신되면 완전한 하나의 packet으로 보고 해당 데이터를 처리하는 경우가 꼭 필요하다.

Back to Top ↑

2015

boost c++ library static link 컴파일 방법

막상 필요해서 찾다보니 잘 정리가 안되있어서 나름 정리해본다. boost 라이브러리를 이용해서 작성된 프로그램을 boost 가 설치 안된 환경에서 사용해야 하는 경우, static link 로 컴파일 해서 사용할수 있다.

Disruptor 분석 및 c++ 로 구현해보기

java 하면 일단 좀느리다는 고정관념을 깰 만큼 고성능을 내세우는 Disruptor라는 존재에 개인적으로 관심이 생겨서 잠깐 내부를 살펴보게 되었다.

UltraEdit 한글 버튼 메뉴 수정

업무용으로 주로 사용하는 UltraEdit 에서 프로젝트 메뉴의 파일설정, 한글 메뉴버튼 번역 잘못됐다고 알려줬더니 이번 22.10.0.12 업데이트에서 수정이 됬다. 볼때마다 불만이었는데 이젠 편안하게 메뉴를 볼수 있겠군.

nodejs 호스팅 비추천

c모 사의 node.js 호스팅 절약형 을 신청해서 사용하려 했는데, 결국 내린 결론은 도저히 사용할만한 서비스가 아니란 거다. heroku에서 아무 문제 없이 돌아가던것 간단한 app도 여기서는 안된다. 일단 package.json에 기입한 모듈들이 제대로 설치되는건지 그 로그조차 확인 할수 없다.

Back to Top ↑

2014

AngularJS 게시판

AngularJS(1.3.6)+ Express + mongojs 이용한 간단한 게시판

Effective Object-C 2.0

며칠전 강컴으로 구입한 책이다. 책을 사서 처음 부터 읽지 않고 관심있는 부분부터 보는 습관인데, 지금까지 2개의 아이템만을 읽었을 뿐인데 번역의 질이 실망스럽다. 처음부터 완전 엉망은 아니지만, 100% 번역을 믿고 읽을 수준은 아니라서, 이런책이 원서보다 더 읽기 힘든책이다. 그리고 단지 2개의 아이템을 읽었을 뿐인데 편집상의 심각한 오류도 보인다. 도저히 무슨 내용인지 몰라 고민하다가 인터넷으로 원서내용을 볼수 있는 사이트를 알게돼서 직접 비교해보았다.

ios8 업데이트

어제 애플이 ios8 업데이트를 배포했다고 바로 이런 메일이 도착.

g++ std::thread -pthread option?

std::thread 를 이용한 프로그램을 리눅스 환경에서 g++ 을 이용, 컴파일 하는경우 -pthread 옵션이 필요하다. 다음과 같은 샘플 프로그램이 있다고 해보자.

Back to Top ↑

2013

맥에서 telnet으로 linux 접속후 vi 한글 입력

mac iterm2 에서 linux 로 telnet을 이용한 접근 시 , 한글 입력이 안되는 경우, 먼저 터미널 encoding 을 Korean 으로 설정하고, telnet명령 수행 시 -8 option을 주니 해결되었다.

oracle ACL

oracle stored procedure 등에서 외부 ip address접근 시도시 ACL오류 발생 하는 경우 다음을 확인해본다. sysdba 권한이 필요하다.

Back to Top ↑

2012

JavaScript Allongé eBook 구입

javascript-allonge 얼마 전 Hacker News 에 소개된 전자책인데 leanpub을 통해 구입해서 읽고 있다 . PDF혹은 아이패드나 아이폰에서도 볼수 있는 eBook 형식으로 제공된다. JavaScript Allongé 는 기본 문법을 알고 있는 독자를 대상으로, 각 장마다 자바 스크립트의 함수를 사용하는 새로운 관점들을 소개하고 있다. 그리고 각 장이 끝날 때마다 recipes 항목을 통해서, 앞서 배웠던 항목을 기본으로, 실용적인 활용 법을 소개해주고 있다. 개인적으로 추천할만한 내용이라고 생각한다. 한번 방문해보시길… (Allongé 는 에스프레소와 아메리카노의 중간 정도 되는 커피라고 한다~커피관련 지식은 덤^^)

node.js 의 thread pool(libuv) 부분

node.js 에서의 입출력 동작은 멀티쓰레드(thread pool)로 구현된다. 소스 코드에서 이 부분을 정리해본다.

node.js 분석

Node.js source code analysis (How node executes user code ?)

Linux Asynchronous I/O 예제

지금 프로젝트에서 작성한 프로그램의 개선점을 찾다보니, 비동기 작업 처리를 위해 aio를 이용하면 좋을듯 하다.

python decorator

```python #!/usr/bin/env python

-- encoding:utf-8--

import time

Ruby on Rails 간단 게시판

요즘 취미로 Ruby on Rails 에 대해 공부하고 있는데, 간단한 게시판 예제를 작성 해보자.

Windows 에서 Ruby on Rails (RoR) 3.2.8 + Oracle XE 11g

RoR 은 기본적으로 Sqlite 를 Database로 제공해주고 있다. 나는 Oracle XE를 개발용으로 사용중이라서, 여기에 맞춰서 설정을 해보기로 했다. 개발 환경은 다음과 같다.

Lvalue 와 Rvalue 정리

c++11 의 기능중에 Rvalue references 을 보다 보니, Lvalue 와 Rvalue 의 판단 기준을 다시 한번 정리해야 할것 같다.

Django 게시판 만들기 1 - 설치 및 설정

Python 을 이용한 웹 개발 프레임워크인 django를 이용해서, 간단한 게시판을 만들어 보자. 앞서 스프링을 이용해서 작성된 게시판 과 동일한 기능을 수행하는 간단한 게시판이다.

Spring Remote (RMI) 예제

오늘 살펴볼 스프링 Remote 중에서 RMI 지원은 단순한 POJO 작성만으로도 RMI 서비스를 간편하게 발행할 수 있게 해준다.

Back to Top ↑

2011

const 사용

헷갈리는 const사용시, 전통적인 const의 사용법과는 좀 틀리지만 알아보기 쉬운 스타일을 소개한 내용이다.

protothread

protothred 는 주로 쓰레드 사용의 장점이 필요하지만, 기존 쓰레드 생성시의 부하, 즉 쓰레드별 스택 생성됨으로 인해 메모리 사용양이 문제가 되는 임베디드 시스템등에서 사용할 목적으로 작성되었다.

Feeling Note App 출시

취미삼아 간단한 노트앱을 만들어보자며 손댄지 아주 오랬만에 오늘 앱스토어에 등록됨.

sizeWithFont오류

UITextView 기존내용을 사용자가 터치한 경우, 편집상태로 만들면서 커서를 보이면서 화면을 보이게끔 스크롤이 필요하다.

Back to Top ↑

2010

UIImagePicker Memory Warnning viewDidUnload

UIImagePicker 를 이용해서 사진을 찍어서 일기장 어플에 삽입시키는 로직을 구현중에 골치아픈(그리고 구글에서도 해답을 속시원하게 찾을수없는) 현상을 겪게 되었다.

Back to Top ↑

2009

Member Function Pointers 활용

어떤 변수의 값에 따라서 클래스 멤버함수를 각각 호출해야하는 상황이라면, 아마 다음처럼 코딩을 하게 될것이다.

Expression template

Expression template 은 과학, 수치 계산용 프로그램 같은, 고도의 성능이 중요시되는 코드를 작성하기 위한 방법으로 C++의 템플릿 을 활용한 것이다.

RtlpNotOwnerCriticalSection

Exception code: C0000264 {응용 프로그램 오류} 응용 프로그램이 소유하고 있지 않은 리소스를 해제하려고 했습니다. 응용 프로그램을 마치려면 [확인]을 클릭하십시오.

Back to Top ↑

2008

Onions in the Varnish

이 뜻의 유래는 , 이탈리아계 유대인 작가·화학자였으며, 나치의 유태인 대학살에 대한 회고록으로 널리 알려진 Primo Levi 가 varnish (니스)를 생산하는 화학 공장에서 일할 무렵으로 거슬러 올라간다.

Back to Top ↑