* 다음 환경을 사용하였습니다. 환경이 다를 경우, 일부 API가 동작하지 않을 수 있습니다. [OS: Ubuntu 14.04.1 LTS] [Qt Version: 5.4] QFontMetrics 클래스를 이용하면 된다. 단, 딱 정확한 크기를 구하기 때문에, margin값을 따로 주어야 한다. int QFontMetix::width(QChar ch) const; int QFontMetix::width(const QString &text, int len, int flags) const; int QFontMetix::width(const QString &text, int len = -1) const; 함수 이름: width함수 역할: 입력받은 글자의 Pixel 사이즈를 구한다.함수 설명: 각 글자의 logi..
리눅스에서 개발하실 때 vim(vi)을 많이들 사용하실텐데요. vim은 개발자가 어떻게 사용하느냐에 따라 세상에서 가장 멍청한 에디터가 될 수도, 세상에서 가장 똑똑한 에디터가 될 수도 있습니다. :) 오늘은 vim에서 주석을 단축키로 달 수 있는 방법을 알려드리겠습니다.구글에 검색해서 여러 글들을 보셨다면 아시겠지만, 다양한 방법들이 있는데 이것은 제가 사용하는 방법입니다! vim의 편리한 기능중 하나인 Key Mapping을 이용한 방법입니다. 먼저 vimrc에 입력해야 될 스크립트를 말씀드리고 간략한 설명을 하겠습니다. vi를 이용해 vimrc를 열어줍시다.$ vi ~/.vimrc 그리고 아래의 스크립트를 적당한 곳에 입력합니다."============== 주석 매크로 ==============fu..
리눅스의 메뉴얼은 상당히 방대합니다. (방대해서 참 읽기 싫기도 하지요.. 오죽하면 RTFM ; Read The Fucking Manual 이라는 단어가 생겼겠나요) 하지만 조금만 익숙해지면 메뉴얼 페이지 만큼 많은 정보를 얻을 수 있는 것도 없습니다~ 사용에 참고할 예제가 부족하다는게 유일한 단점이라면 단점일까요. 리눅스의 메뉴얼 페이지에는 번호가 붙어있습니다. 예를 들어 쉘에서 printf의 메뉴얼을 찾으려고 $ man printf 하게 되면 우리가 원하는 C 라이브러리인 printf에 대한 메뉴얼 페이지가 나오는게 아니라 조금은 낯선 printf의 메뉴얼이 등장합니다. 상단에 보시면 printf(1) 이라고 숫자가 적혀있네요. 다음과 같이 쳐보시기 바랍니다. $ man -a printf -a는 pr..
우분투를 부팅하려 했는데 위와 같은 오류가 떴을때의 난감함이란 뭐라 표현할 길이 없습니다... 저는 어떤 상황에서 저 오류가 생기는지 정확히 인지를 했음에도 도저히 해결할 방법이 보이지 않아서 고생을 하고 있었는데요. 특정 작업을 위해 우분투 12.04 LTS 버전에서 xorg-dev 패키지를 설치할 필요가 있었는데, 이 패키지만 설치하고 재부팅을 하면 위와 같은 오류가 뜹니다. 어떻게든 복구해보려고 ctrl+alt+f1~f6 (그래픽 모드가 아닌 콘솔모드)를 눌러봐도 아무 반응도 없고 그야말로 먹통이 되버립니다. - 추가사항 : 해당 오류의 원인은 정확히 말하자면 잘못된 그래픽 드라이버의 사용이기 때문입니다. 언급한 xorg-dev 패키지 이후 생기는 이유는 xorg-dev가 맘대로 그래픽 드라이버를 ..
우분투 13.10을 사용하다가 14.04 LTS 버전이 나올때까지 잠시 12.04로 내려왔습니다. 그리고 기존에 작성중인 코드를 컴파일 하려다 보니까, g++의 옵션중 하나인 -std=c++11 (c++11 버전의 컴파일러를 사용하는 것)가 정상적으로 작동하지 않았습니다. 원인은 g++ 버전이 낮은 것 때문이었습니다. apt-get install build-essential 로 설치되는 버전은 gcc, g++ 모두 4.6 버전입니다.(자신의 컴파일러 버전을 확인 하는 방법은 gcc --version 입니다.) 13.10을 사용할 땐 몰랐는데, 4.7 이상의 버전이 설치되어 있어야 저 위의 옵션이 사용가능한 것 같습니다. 컴파일러의 버전업을 시키기 위해서 먼저 레퍼지토리(저장소)를 추가해야합니다. $ su..
atoi(), itoa() 함수에 대하여.. 블로그 유입로그를 보다보니 위의 함수에 관련된 유입이 많아서 위 함수에 관련된 포스팅을 합니다. 이 함수들은 stdlib.h 파일에 선언되어 있습니다. 다만, itoa 함수의 경우 비 표준함수입니다. C99/C11규격에서 정의되지 않고, MS 컴파일러에서만 이용가능한 함수입니다. 즉, Linux/macOS 등 비 마이크로소프트 운영체제(컴파일러)에서는 stdlib.h 헤더파일을 include 한다고 해도 itoa 함수를 사용하지 못합니다. 따라서 저는 itoa함수 대신에 다른 방법으로 문자열 전환을 권유해 드렸습니다. c/c++ sprintf, snprintf 함수 - 해당 포스팅을 보고 싶으시면 이곳을 클릭하세요 1. 문자열을 정수형으로 변환 이때 사용하는 ..
가변인자 함수가 있듯이, 매크로도 가변인자 매크로가 있습니다. 가변인자 매크로 역시 ... 의 매개변수를 받는데요. 매크로의 경우 가변인자 함수보다 훨씬 사용하기 간편하게 되어있어 자주 사용하는 편입니다. #define VA_PRINT(fmt, ...) printf(fmt, __VA_ARGS__) 위와 같이 사용할 수 있습니다. 가변인자 함수 때처럼 va_startf나 vnprintf 따위의 매크로를 이용할 필요가 없습니다. __VA_ARGS__ 를 넣어주면 알아서 포맷으로 변환하여 출력해 줍니다. C코드 예제를 하나 만들어보았습니다. #include #define VA_PRINT(fmt, ...) fprintf(stdout, "결과: " fmt "\n", __VA_ARGS__) int main() { ..
1. # 연산자 매크로에서 # 연산자는 문자열로 변환(치환) 시켜주는 연산자 입니다. 아주 단순한 예를 들어보았습니다. 아래의 예제를 한번 살펴보도록 하겠습니다. #include #define PRINT(s) printf(#s) int main() { PRINT(THIS IS TEST CODE); return 0; } 만일 PRINT 매크로에서 s앞에 붙은 #이 빠지게 되면 오류가 발생하게 됩니다. 왜냐하면 매크로변수 s는 THIS IS TEST CODE를 받게 되는데, c 문법에 따라 따옴표가 없기 때문에 이것들을 하나의 '변수'로 인식하게 됩니다. #을 빼주고 "THIS IS TEST CODE" 라고 앞뒤로 따옴표를 붙여주면 잘 실행이 됩니다. 즉, #은 받아온 매크로변수를 문자열로 바꿔주는, 더 쉽..
옛날에 언젠가 printf의 원형이 궁금했던적이 있었다. 비주얼스튜디오 6.0인가.. 오래된 비주얼스튜디오 버전을 사용하고 있었을 때, stdio.h 문서파일을 열어서 처음 printf의 원형을 마주하게 되었다. int printf (const char* Format, ...); 그때 기억으로 printf는 위와 같이 아주 단순했는데.. 2013 버전에 있는 표준입출력 문서로 찾아보니 아래와 같이 나와있다.. 매크로의 향연. _Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...); 솔직히 의미는 잘 모르겠지만, 매크로를 잠깐 살펴본 내 생각을 적어보자면 sal.h 라는 헤더파일..
bsearch 라는 함수는 특정 배열안의 값을 찾고자 할 때, 이진 탐색의 방법으로 빠르게 찾아주는 함수입니다. 단, 이진탐색이라는 특징 상 배열은 반드시 정렬(sorting)되어 있어야 합니다. * 이진탐색이란? - 가운데에서부터 탐색을 시작하며 오름차순으로 정렬되어 있는 배열의 경우, 찾는 값이 비교대상의 값보다 작으면 왼쪽에, 비교대상의 값보다 크면 오른쪽에 위치하게 됩니다. 배열을 계속 반씩 잘라가며 탐색을 하며, 따라서 배열의 개수 n에 대하여 O(log n)의 속도로 탐색이 가능합니다. 배열의 개수가 많아질수록 더욱 효과적이게 됩니다. 아래는 이진탐색의 예제입니다. 1부터 100사이의 임의의 숫자 10개가 배열안에 정렬되어 있습니다. 86을 찾고자 할때, 이진 탐색의 경우 아래와 같이 이루어집..
- Total
- Today
- Yesterday
- 폰트 조정
- lua table
- Rx.js
- 안시 컬러
- ZONES
- 챗봇
- itoa
- angular2
- QT
- C언어
- Swift
- NgZone
- Angular
- ECMA2015
- git 설정
- JavaScript
- 리눅스 터미널 색상
- vim
- 우분투 16.04
- terminal 색
- Zone.js
- 안시 색상
- git proxy
- typeScript
- 타입스크립트
- zone
- ansi color
- qemu linux arm
- 스위프트
- observable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |