2016년 11월 17일 목요일

TCPDF 에서 Unicode 기반으로 특수 기호 쓰기

앞에서 작성한 TCPDF 관련한 것에 계속 덧붙여서,
TCPDF를 이용해서 PDF를 만드는데, &#9746 이나 &#9744 같은 유니코드로 된 기호를 html content에 포함해야 하는 일이 생겼다. 이럴 경우, writeHTML()을 이용해 PDF를 생성하면 물음표로 깨져 나오는 현상이 있었다.
여기 저기 뒤져보다 보니, 폰트가 이 문자들을 가지고 있지 않다면, 깨져서 나오게 되는 것이다. 그래서 TCPDF에서 풀 셋으로 가지고 있는 폰트를 쓰면 문제가 해결되는데, 그것이 Dejavu Sans 라는 폰트이다. 이런 식으로 하면 유니코드 문자들이 잘 나온다.

Zend Framework에서 TCPDF를 이용하여 PDF 파일을 생성하는 방법

Zend Framework를 기반으로 하는 시스템에서 TCPDF 라이브러리를 이용하여 PDF를 생성하는 방법은 여러 가지가 있겠지만, 그 중 하나.

내가 보고 있는 울 회사 시스템에서는 이렇게 하는 방법을 썼다.

controller 밑에 놓인 파일에서, Action 함수 내에 이런 부분이 있다.


tcpdf 클라스를 이용해서 $pdf라는 오브젝트를 일단 만들고,
$this->ozView->render()로 html 파일을 만들어서 이걸 $htmlcontent에 저장하고.

tcpdf의 멤버함수 중 writeHTML()을 호출하여 html 컨텐츠를 PDF로 만들고서 output 한다.


2015년 11월 18일 수요일

(HTML,PHP) input type=submit 버튼을 하나 이상 사용할 때, javascript 없이 구분하기.

how to use more than one submit in input type.

웹페이지를 만들때, 하나의 페이지에서 두개의 버튼이 필요한 경우가 있다.
이때 input type=button하여 onclick 사용하면 자바스크립트 연결하여 사용하면 되는데,
자바 스크립트 없이 pdf 파일에서 구분하여 작업하기 위한 간단한 방법이다.



데이터를 보여주는 웹페이지에서,

   
   



a.pdf에서는 이렇게 하면 어떤 버튼이 눌렸는지 구분이 가능하다.

$opr = $_REQUEST['operator'];

if ( $opr == 'pdf' )
{
}
else if ( $opr == 'raw' )
{
}



2015년 11월 15일 일요일

Atollic 에서 최종 아웃풋 파일을 elf 아니고 bin으로 바꾸는 방법.

Atollic을 써보니 맨 마지막에 아웃풋 파일이 ELF로 나온다.

이걸로 디버깅이 되는거 같은데, 나의 경우는 bin 파일을 가지고 STLink로 직접 파일을 로드하는 경우가 많아서 BIN으로 바꾸는 방법을 찾아보았다.

아래와 같이 하면 됨.



STM32CubeMX에서 generate한 코드를 Atollic TrueStudio 또는 Eclipse+GCC 환경에 import하고 compile하기

우리 회사 프로젝트에서 원래 사용하던 FreeScale 8-bit 프로세서 대신 새로운 프로젝트에서는 STM32 보드를 사용하기로 하였다. STM32는 여러가지 보드가 나오는데 내가 지금 써야할 보드는 STM32L152 Nucleo 보드.

프리스케일의 경우, 그 회사에서 파는 개발환경(IDE)을 돈주고 사서 쓰고 있었는데. 이번 것은 개발환경과 컴파일러에 여러 가지 옵션이 있었다.

CooCox CoIDE, AC6 시스템 워크벤치, Atollic, Keil 등이 있다.
옵션이 많은게 좋은 줄 알았는데, 더 복잡하다.

어쨋든 공짜 개발환경을 깔아서 쓰고 있었다: AC6 환경이다.
간략한 인스톨 방법은 이렇다.
1) Eclipse C/C++를 깐다.
2) Eclipse에서 Help>Install New Software 선택.
     Work with: CDT를 선택  / Add 후에 Install.
3) Install GNU ARM plug-ins for Eclipse
     Click Add button
     Fill in - Name: GNU ARM Eclipse Plug-ins
     Fill in - Location: http://gnuarmeclipse.sourceforge.net/updates
4) Install the GCC ARM tool-chain
5) Install Build tool (make etc..)



이렇게 쓰고 있었는데 동료가 Atollic Lite 공짜 버전이 코드 사이즈 제한이 없어졌다고 그걸 써보라고 해서, 다시 Atollic을 깔아보았다. 이것도 Eclipse 기반이다.
위의 Eclipse의 경우 Arm GCC complier를 따로 깔아야 해서 복잡한 과정이 있었으나, Atollic은 싸이트 가서 다운 받아서 그냥 install하면 끝.  그대신 싸이즈가 상당히 크다.


그 다음 정리할 부분은, import하는 부분이다.
STM32 보드를 쓸 때 편리한 부분은 STM32CubeMX라는 프로그램을 통해 하드웨어 세팅을 편하게 할 수 있다는 점이다.  STm32CubeMX에서 보드 선택하고, 클럭 같은거, GPIO 설정하고 나서,

Menu>Project>Settings를 선택하면,

다음과 같은 Project Setting 화면이 뜬다.

Toolchain에서 TrueStudio 를 선택하면, TrueStudio용 코드가 제너레이트되고, SW4SSTM32를 선택하면 Eclipse+GCC 환경 용 코드를 제너레이트할 수 있다.

이렇게 하고 나서, 메뉴 밑에 있는 아이콘 메뉴 중에, 나사 처럼 생긴 것을 클릭하면 코드가 제너레이트 된다.


코드를 일단 제너레이트하고 나면, 다음 문제는 이 코드들을 IDE에 어떻게 import하느냐가 문제다.  두 가지 툴에 대해 정리하면 다음과 같다.


STM32CubeMX에서 코드를 제너레이트하고 나면 아래같은 화면이 나타난다.
여기서 Open Folder를 클릭한다.  탐색기 화면이 나타나는데, 여기서 TrueStudio 폴더를 선택한다.

그러면 하나의 폴더가 더 나타난다. 폴더 이름에 Configuration이 들어간 폴더 하나가 나타난다. 이 폴더를 클릭하면 .settings라는 폴더 있고, 나머지 네가지 파일이 있는 폴더가 나타난다. 이 폴더를 copy하여 기억한다. (로케이션을 기억하라는 의미)


1. Atollic을 연다.
2. File > Import를 클릭한다.
3. General > Existing Projects into Workspace를 선택하고 Next를 클릭한다.
4. Select root directory에 아까 카피해 두었던 폴더이름을 넣는다. 기억하고 있다면 browse 버튼을 눌러서 그 위치로 가도 된다. 그러면 프로젝트가 나타나는데 여기서 선택하고서 Finish를 클릭하면 import 완료.




위의 것과의 차이는 STM32 CubeMX에서 코드를 제너레이트하기 전 세팅화면에서 Toolchain에서 SW4SSTM32를 선택하고서 코드를 제너레이트한다.

임포트하는 방법이 조금 다른데.
IDE를 오픈하고서, File > Import 를 선택한다.

Import 화면에서
General > Existing Projects into Workspace 를 선택하고 Next를 선택한다.

Select root directory에서 위의 Atollic과 다르게, project 가 들어있는 폴더의 바로 상위 폴더를 선택한다. 그러면 하단에 사용가능한 프로젝트들이 찾아져서 나온다. 이중에 임포트할 프로젝트를 선택하면 된다.

2015년 3월 2일 월요일

QT 5.4: 실행파일을 만들어 배포할 때 필요한 DLL 파일 복사하는 방법.

Qt 5.4를 쓰고 있다. Creator를 통해 파일을 생성하였다. Gcc로 컴파일 하도록 설정되어있다.
문제는 내 PC에서 생성한 실행파일을 다른 PC로 옮겨 실행하려고 하면, 실행이 안된다는 것이다. DLL 파일이 없다는 메시지가 나온다.

이를 해결하는 방법.
뒤져보니, static compile하는 방법이 있다고 한다. 필요한 모든것을 함께 넣어 컴파일 하는 방법. 지금 여기서 기록하는 것은 dynamic한 방법.

생성한 실행파일과 함께 필요한 DLL을 같은 폴더에 넣어 배포하면 된다.

1. 빌드한 exe 파일을 다른 폴더로 옮긴다.
    예:  생성한 파일 example.exe를  C:\temp\example\example.exe로 카피한다.

2. 시작 => 모든 프로그램 => Qt 5.4.0 => 5.4. => Mingw 4.9 (32bit) => qt 5.4 for windows (command window) 클릭

3. In the command window, C:\Qt\Qt5.4.0\5.4.0\mingw48_32\bin\windeployqt.exe c:\temp\example\example.exe


이렇게 하면, 필요한 파일들이 해당 폴더에 복사된다.
그 폴더를 복사하여 배포하면 된다.

걱정 끝.


2014년 12월 4일 목요일

옥션 관람기

지난 토요일, 우리 동네에 옥션이 열렸다. 우리 집과 같은 거리이고, 바로 건너편 집은 아니고, 건너편에서 옆옆 집 정도 된다.  이층 창문에서 보면 바로 보이는 집인데, 얼마전 부터 집 판다고 광고가 붙어있었따.

옥션 날짜는 지난 토요일 11시.
올해 멜번 집값이 아주 많이 상승했다고 하는데, 이제 크리스마스가 가까워오면서 약간 누그러졌다고도 하고.. 그래서 분위기가 어떤가 나가보았다.

근처 동네 주민들도 나와서, 지금 시세가 어떤가 바라보는 분위기.
동네 주민들 사이에 섞여서 인사를 나누고, 옥션을 관전했다.

동네는 Vermont South다. 우리도 5월에 집을 사고 8월에 이사를 와서리, 잘 몰랐는데, 집들이 다 사이즈가 크다. 그날 옥션한 집도 사이즈가 790m2인가? 800보다 조금 작았다.  얼마전 인스펙션할 때 시간이 되서 집에 들어가 살짝 구경도 해보았는데, 집은 오래된 집이고, 방이 네개. 방이 다 작았다.
거라지가 없고, 카포트만 있다. 암튼 오래된 전형적인 호주의 집이다. 이 근방은 벽돌집이 많다. 그집도 벽돌집이고, 뒷마당이 무쟈게 넓어 나무도 많고..
그때 집값을 에이전트에게 물어보니, 870,000 이라고 했다.

옥션은 얼마에서 시작하나 보니, vendor's bid라며 800,000부터라했다.  사실 옥션에 사람도 많지 않았고, 800,000부르니 다들 잠잠... 이러다 나가리되나? 했는데, 웬걸 유모차를 끌고 온 한 아시안 부부가 옥션을 주도했다.  800부터 850 860 올라가더니, 에이전트가 잠깐 벤더 보고 온다고 집으로 들어갔다.

벤더가 그값에는 안판다 했는지 더 부르라 다그친다.  누가 더 부르겠느냐..했는데, 어떤 다른 아시안 사람이랑 붙었다. 가격은 천천히 올라가더니 결국 900을 넘어 966,000에서 낙찰되었다.

느낀점..  옥션에 사람이 많이 안와도 살사람만 두세사람 있으면 돈이 자꾸 올라간다. 이날은 아시안계 세팀이 붙었다.  처음부터 적극적으로 사곘다고 한 아시안 부부가 샀다. 나머지는 조금씩 가격을 올려 붙긴했는데, 마지막에 쫓아오지는 못했다.

동네 사람들 반응이 또 웃긴데, 다들 crazy 하면서 못믿겠다는 표정, 그리고 기쁜 표정.  동네 사람들은 다 만족했다........  두세달전과 비교해서도 또 좀더 오른듯하다. 내년은 어떨까?

아마존 7주년, 그리고 퇴사

밑에 보니 아마존 6주년 포스트가 있네. 그 포스트 후 다시 1년 반의 시간이 지남. 시간은 왜 이렇게 빨리 흐르는거야. 지금은 2026년 8월. 2026년 2월말이 아마존 근무 7주년이 되던 때이고, 4월달에 퇴사를 했다. 7년 1개월 정도만에 ...