본문으로 바로가기
homeimage

프로그래밍

해당되는 글 302
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 내문서 폴더 위치 구하는 방법

    오픈 소스 윈도우 프로그램 통합개발환경 라자루스에서 내 문서 폴더 위치를 구하는 방법입니다. 라자루스는 델파이 개발환경을 리눅스용으로도 만들자 해서 시작된 프로젝트라서 아마도 최근 버전의 델파이에서도 같은 방법으로 구할 수 있지 않을까 생각됩니다. How to get the "My documents" folder location in lazarus 예제를 위한 폼 디자인은 간단합니다. Button1은 내문서 폴더 위치를 구해서 labDocuments에 출력합니다. 전체 소스는 아래와 같습니다. unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls; type { ..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 사용자 AppData 폴더 위치 구하기

    프로그램을 윈도우 프로그램 폴더에 저장했다면, 권한 문제 대문에 그 위치에 파일을 생성하지 못합니다. 이런 경우 AppData 폴더를 이용합니다. AppData 폴더 위치는 ShGetSpecialFolderPath() 함수에 CSIDL_LOCAL_APPDATA를 인수로 호출하여 구할 수 있습니다. ShGetSpecialFolderPath() 함수를 사용하려면 uses절에 shlobj를 추가해야 합니다. How to get the appdata folder location in Lazarus 라자루스에서 AppData 폴더 위치를 구하는 예제입니다. Button1을 클릭하면 labAppData에 AppData 폴더 위치를 표시합니다. unit Unit1; {$mode objfpc}{$H+} interfac..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 하위 디렉터리까지 생성 디렉터리 만들기 함수

    C언어 하위 디렉터리까지 모든 디렉터리 만들기 함수 C언어에서 mkdir() 함수로 디렉터리를 생성할 수 있지만, 만들려는 디렉터리의 상위 디렉터리가 있어야 생성됩니다. 디렉터리가 없는 곳에 디렉터리를 만들 수 없습니다. 그래서 상위 디렉터리가 없으면 상위 디렉터리를 차례로 만들어 전체 디렉터리를 만드는 함수 force_directory()입니다. force_directory() #include #include #include #include #include void force_directory( char *a_dirc){ char buff[1024]; int sz_dirc; int ndx; sz_dirc = strlen( a_dirc); for ( ndx = 1; ndx < sz_dirc; ndx++)..
  • thumbnail
    컴퓨터/프로그래밍

    리눅스 터미널 ls --color 색상 변경 방법

    리눅스 터미널 ls --color 색상 변경 방법 텔넷으로 리눅스에 연결하고 파일을 목록을 확인하려고 ls를 실행했는데 파일 이름은 하얀색으로 잘 보이지만, 디렉터리는 파란색으로 나와서 잘 보이지 않네요. 텔넷의 배경색을 습관적으로 검은색이나 어두운 색을 사용하거든요. 어떤 서버는 파일이나 디렉터리 모두 흰색으로 나와서 구별이 안 돼 불편하죠. 워드는 흰 바탕에 작업을 하지만, 이상하게 터미널은 어두워야 편합니다. 그래서 새로 연결하는 리눅스에는 ls --color로 색상을 바꾸어 주는데, 어쩌다 사용하다 보니 까먹네요. 그래서 찾기 귀찮아서 정리합니다. 가끔 접속하는 리눅스 서버라면 자주 연결하는 리눅스가 아니어서 임시로 설정하고 싶다면 alias로 간단히 처리할 수 있습니다. $ alias ls="l..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터함수와 콜백함수 예제 설명

    C언어 포인터 이해하기 시리즈 4부입니다. 컴퓨터에 있는 프로그램을 실행하면 프로그램이 먼저 메모리에 올라옵니다. 즉, 변수뿐만 아니라 프로그램도 메모리를 차지하는 것이죠. 당연한 얘기를 입니다만, 함수도 시작 주소가 있을 것입니다. 포인터가 변수의 메모리 주소를 갖는다면, 함수 주소도 역시 포인터로 받을 수 있습니다. 변수의 주소가 아닌 함수의 시작 주소를 담은 포인터 변수를 통해 호출하는 함수를 포인터 함수라고 합니다. 함수 이름을 직접 호출하는 것이 아니라 함수의 주소를 가지고 있는 포인터 변수로 호출하는 것이며, 포인터 변수는 고정이 아니라 코딩에 따라 여러 함수의 주소로 바꿀 수 있습니다. 즉, 함수 이름을 직접 부르는 것을 정적 호출이라고 한다면, 포인터 변수를 통하는 방법을 동적 호출이라고 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터 사용하는 이유

    C언어 포인터 사용한다 vs. 사용하지 않는다 C언어 포인터를 쉽게 이해하는 방법 시리즈 3부입니다. 꽤 오래전에 개발자 커뮤니티에서 댓글 싸움이 심하게 벌어진 적이 있는데요, C언어라고 해서 포인터를 반드시 사용할 필요가 없다는 글에 반박과 찬성 의견이 이어진 것이죠. C언어에서 포인터를 사용하지 않으면 왜 C언어로 코딩하느냐로 시작해서 포인터를 사용하지 않는다면 C언어 개발자라고 어디 가서 떠들지 말라며 다소 과격한 글이 올라왔고, 이에 대해 포인터 없는 언어도 많고 C로 코딩하지만, 포인터 없이도 잘만 작성한다는 공격적인 답글이 서로 엉켜 싸우듯 했습니다. 연산자 []로만 사용했다고 포인터를 안 썼다고? 맞습니다. 포인터 없는 언어도 많은데 C언어라고 꼭 포인터를 써야 할까요? 당연히 포인터 없이도..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터 쉽게 이해하기 2부

    C언어 포인터 이해하기 1부에 이어 2부 글입니다. 이전에는 배열과 비교하여 포인터에 대해 알아 보았는데요, 이번에는 C언어의 포인터에서 아리까리 헷깔리는 부분에 대해서 알아보겠습니다. 이 글도 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 내용입니다. C언어 포인터 변수 타입별 차이 C언어의 포인터는 주소를 갖는 정수형 변수이지만, 다른 변수처럼 char, short, int, long 등으로 선언합니다. 그렇다면 char *ptr1하고 int *ptr2하고 어떤 점이 다를까요? ptr1보다 ptr2의 변수 크기가 더 클까요? C언어는 변수 사용이 다른 언어에 비해 매우 자유로운데요, C언어로 코딩하다가 다른 언어로 바꾸면 한동안 어려움을 느낄 정도입니다. 다른 언어는 문자 변수로 선언..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 포인터와 배열 쉽게 이해하는 방법 1부

    이 글은 C의 포인터를 학습 수준에서 알기는 아는데 정확히 모르는 분을 위한 글입니다. C언어를 학습하다 보면 대부분 포인터가 제일 어렵다고 합니다. 프로그래밍 경력자도 C언어는 자유도가 높아서 불만인 분이 많습니다. 너무 헷갈린다는 것이죠. 오죽하면 읽기 어렵고 이해하기 어려운 C언어 프로그래밍 대회 IOCCC(International Obfuscated C Code Contest)가 열렸겠습니까. 출품 작을 보았는데, 오우~ 도대체 뭔 소리인지. 당연히 포인터가 들어갑니다. 문제 1) printf( "%c\n", 1["badayak.com"+1]); 아주 간단한 코드인데 결과가 예상되시나요? 포인터 없이 배열로 작성되었지만, 포인터를 알아야 쉽게 이해되는 내용입니다. C언어를 학습하시다 보면 포인터는..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 변수 크기 구하기 sizeof()

    C sizeof() 자료형 변수 크기 구하기 함수 인수로 받은 자료형 변수 크기를 바이트 단위로 구한다. 헤더: stdio.h 형태: unsigned long sizeof( 자료형) 인수: 자료형 크기를 구할 자료형 반환: unsigned long 자료형의 바이트 단위 크기 sizeof() 예제 #include int main( void) { char v_char; int v_int; long v_long; char *p_char; int *p_int; long *p_long; printf( "v_char =%ld\n", sizeof( v_char)); printf( "v_int =%ld\n", sizeof( v_int)); printf( "v_long =%ld\n", sizeof( v_long)); p..
  • thumbnail
    컴퓨터/프로그래밍

    윈도우와 리눅스를 함께 사용하는 방법 4가지

    윈도우와 리눅스 함께 사용하는 이유 개발자마다 의견이 다르겠지만, 24시간 돌아야 하는 시스템의 경우 윈도우보다는 리눅스가 더 안전하다고 생각합니다. 요즘은 작은 시스템도 네트워크에 연결해서 전체 시스템을 모니터링하고 관리하는 시대라서 네트워크의 중요성은 더욱 높아졌습니다. 윈도우도 네트워크 기능은 훌륭하지만, 리눅스는 태생부터 멀티 유저 시스템인 유닉스에서 나왔고 오랜 역사 동안 서버로서의 안정성과 네트워크의 강력함을 갖추었습니다. 그래서 24시간 1년 12달 운영하는 시스템은 윈도우보다는 리눅스를 많이 사용하는 것으로 알고 있습니다. 모든 현장을 확인한 내용이 아니고 들은 얘기로만 유추한 것이라서 윈도우 개발자가 들으면 펄쩍 뛸지 모르겠습니다. 윈도우도 계속해서 발전해 왔기 때문에 예전에 비해 안정성..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 rs232 시리얼 통신 프로토콜 주의 사항

    시리얼 통신 패킷에 데이터 길이? 업체로부터 rs232 시리얼 통신 장비를 받았는데요, 프로토콜 문서에 언급된 패킷 구성을 보니 걱정스러운 부분이 있네요. 바로 데이터의 바이트 개수를 알려 주는 길이(Length) 요소인데요, 외부 영향에 약한 시리얼 통신에서 데이터의 크기를 알려 주고 그만큼 받으라는 것은 옳지 않다고 생각합니다. 시리얼 통신에서 길이를 넣어도 문제없다면 ETX를 사용할 이유가 없습니다. 만일 길이는 데이터 검증용이라고 한다면 CRC가 있으므로 이것도 이유가 못 됩니다. 그러나 LEN을 사용하는 시리얼 장비가 의외로 많습니다. 데이터가 모두 텍스트라면 더욱 이해가 안 되는데요, 이런 경우 굳이 LEN을 알려주지 않아도 ETX까지만 받으면 되거든요. 그렇다면 통신에서는 LEN을 사용해서는..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 로그파일 작성 방법

    프로그래머의 방패막이 로그 파일의 중요성 프로그램 실행 중에 생성되는 로그 파일은 디버깅에 매우 중요한 자료가 되고 억울함을 풀 수 있는 단초가 되어서 반드시 로그 생성 코드를 작성해야 합니다. 프로그래머라면 로그의 중요함을 잘 알 텐데요, 그럼에도 소홀하게 되고 기능 작성에만 치중하게 됩니다. 바쁘기도 하고 시간이 없을 수도 있지만, 로그 파일을 만드는 것은 습관과도 관계있지 않나 싶습니다. 부지런한 프로그래머라고 해서 로그 파일을 꼭 만들고, 게으른 프로그래머라서 무시하는 것은 아닌 것 같습니다. 번거롭기도 하고 귀찮기도 하지만, 디버깅하는 수고를 덜고 억울한 경험을 피하기 위해서도 로그 파일은 반드시 작성하는 것이 좋은데요, 개인적으로 사용하는 팁 몇 가지를 소개합니다. 로그 생성은 쉬워야 합니다...
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.