본문으로 바로가기
homeimage

프로그래머

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

    C언어 텍스트 파일 읽기 예제

    C언어 텍스트 파일 읽기 함수 C언어에서 텍스트 파일 읽기에는 fopen() 함수로 파일을 열어서 fgets() 함수를 사용하는 것이 편합니다. open() 함수로 파일을 열어서 read() 함수로 파일을 읽을 수 있지만, 텍스트 파일 읽기는 fopen()와 fgets() 조합이 편한 것은 한 줄씩 읽을 수 있어서입니다. read() 함수와 fgest() 함수 둘 다 파일 내용을 받을 수 있는 버퍼를 지정하고 버퍼 크기까지 알려 주지만, 차이라면 read() 함수는 버퍼 크기보다 파일 사이즈가 크다면 버퍼 크기만큼 읽어서 버퍼에 저장합니다. 이에 비해 gets()는 버퍼 크기만큼 파일의 내용을 읽되 한 줄의 끝을 만나면 거기까지만 담습니다. 텍스트 파일의 경우 줄 단위로 읽어서 처리하는 경우가 많기 때문..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 배열 초기화 함수와 주의사항

    C언어 배열 초기화 함수 두 가지 C언어에서 배열을 초기화할 때 memset()와 bzero() 중 어떤 함수를 사용하시나요? bzero()가 간단해서 편하기도 하지만, 함수 이름이 뭘 하는지 명확해서 소스 코드를 이해하는데 도움을 줍니다. 그러나 이런 장점이 있다고 해도 memset()을 사용하는 것이 좋습니다. 왜일까요? bzero()가 "deprecated 함수"이기 때문인데요, deprecated의 뜻이 "더 이상 사용되지 않는"다는 뜻을 보더라도 하위 호환을 위해 제공되는 것이어서 bzero()보다는 memset()을 사용하는 것을 권합니다. 소프트웨어 기능 중에 "be deprecated"로 언급되어 있다면 더 좋은 것이 나와서 앞으로 이 기능이 없어질지 모른다는 뜻으로 쓰인다는 것을 생각하면..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 크로미움 웹브라우저 만들기

    Lazarus와 CEF4Delphi 프리 파스칼로 윈도우 프로그램을 만들 수 있는 Lazarus 통합 개발 환경 프로그램에 CEF4Delphi 컴포넌트를 설치하면 크로미움 브라우저를 만들 수 있습니다. CEF4Delphi 컴포넌트의 이름에서 알 수 있듯이 Delphi에서도 사용이 가능한데요, Delphi7에는 설치하지 못했습니다. 지원하는 변수 타입 때문인데요, Delphi7 상위 버전이어야 가능한 것 같습니다. Lazarus로 크로미움을 만드는 방법을 알아보겠습니다. Lazarus에 대한 상세한 내용은 여기 링크를 참고하세요. 라자루스(lazarus) 설치 ▲ Lazarus 홈페이지에서 [Download Now] 버튼을 클릭합니다. 페이지가 바뀌면서 잠시 기다리면 컴퓨터 환경에 알맞은 설치 파일을 다운..
  • thumbnail
    컴퓨터/프로그래밍

    라자루스 조건 컴파일 방법(Lazarus Conditional compilation)

    Lazarus Conditional compilation 라자루스에서 디버깅을 위해 DebugSever 툴로 문자열 메시지를 전송해서 출력하는 방법을 소개했는데요, 프로젝트 옵션에서 디버거 옵션을 꺼도 DebugServer로 메시지를 전송하는 SendDebug 함수는 계속 남아서 DebugServer로 전송합니다. SendDebug 함수를 겨우 몇 개 사용했다면 제거하겠지만, 여기저기 많이 사용했다면 삭제하기 어렵죠. uses dbugintf; procedure TForm1.btnCloseClick(Sender: TObject); begin SendDebug( '종료 버튼을 클릭했습니다.'); Close; end; procedure TForm1.btnCopyWindowClick(Sender: TObjec..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 라자러스 이벤트란?

    윈도우 프로그램의 이벤트 이해 오픈 소스 통합 개발 환경 라자루스의 3 번째 글입니다. 이번에는 라자루스 프로그램의 중요한 개념 중에 하나인 이벤트에 대해서 알아 보겠습니다. 이벤트는 매우 중요하지만, 내용은 쉽습니다. 이벤트 뜻 그대로 사건입니다. 이전 글의 예제를 이해하셨다면 이미 이벤트에 대해 알고 계십니다. 다만, 이벤트 단어를 사용하지 않았을 뿐입니다. ▲ 이전 글에서 만든 예제입니다. 1초마다 타이머가 발생하면 현재 시간을 Label3에 입력하도록 했습니다. 또한, Button1을 마우스로 클릭하면 프로그램이 종료됩니다. 여기서 1초마다 발생하는 타이머와 마우스 버튼을 눌러서 발생하는 클릭을 이벤트라고 합니다. 폼 위에 올려 놓은 Label, Edit, Button, Timer를 컴포넌트라고 ..
  • thumbnail
    컴퓨터/프로그래밍

    MODBUS-RTU 프로토콜 쉽게 이해하기

    MODBUS 프로토콜 이 글은 시리얼 통신을 잘 알고 있지만, MODBUS-RTU를 처음 접하는 분을 위해 저의 경험을 바탕으로 작성했습니다. 시리얼 통신을 꽤 오랫동안 다루었지만, MODBUS-RTU를 처음 접했을 때는 지금껏 사용해 오던 프로토콜하고는 느낌이 달라서 왜 이렇게 생겨 먹은 것인 지부터 이해해야 했습니다. 보통 시리얼 통신은 장비에 맞추어 작성합니다. 장비에 어떤 입출력이 있고 무엇을 제어해야 하는지와 구해야 할 정보에 따라서 프로토콜을 설계합니다. 즉, 장비와 프로젝트에 따라서 프로토콜이 바뀌고 그때마다 프로그램을 수정하거나 새로 작성합니다. [내용 추가] 모드버스는 함수에 따라 패킷 구성이 다릅니다. 함수마다 요구하는 내용이 다르기 때문이죠. 그래서 "모드버스 프로토콜 기본구성"이라는..
  • thumbnail
    컴퓨터/프로그래밍

    윈도우 프로그램 만들기 라자루스 컴포넌트 속성이란?

    Lazarus IDE component property 필요한 프로그램을 직접 만들고 싶다면 통합 개발 환경 라자루스를 추천하니다. 이전 글에서 라자루스를 소개하면서 간단한 프로그램을 작성했는데요, 자리를 잠시 비울 때 찾는 분을 위해 메시지를 남겨 놓는 프로그램이었죠. ▲ 제대로 작동은 되지만, 뭔가 어색하죠? 처음 보는 분이라면 뭐가 뭔지 이해가 안 될 것입니다. 기능에 따라서 적당한 문장을 넣어 준다면 좀 더 쉬운 프로그램이 되겠습니다. 예를 들어 Button1 보다는 "종료"라고 쓴다면 눌러보지 않아도 어떤 기능인지 알 수 있습니다. Edit1이 어떤 뜻인지 모르겠지만, 알게 되어도 글을 쓰려면 "Edit1" 글자를 지우고 써야 합니다. 이번 글에서는 라자루스에서 컴포넌트의 속성이라는 것을 이해하..
  • thumbnail
    컴퓨터/유틸리티

    라자루스 디버깅 툴 디버그서버 사용 방법

    Lazarus DebugServer 라자루스로 윈도우 프로그램을 작성할 때 아쉬운 점이 있습니다. 디버깅을 위한 문장을 라자루스의 Messages 윈도우에 출력할 수 있다면 좋겠는데 아직 방법을 찾지 못했습니다. 콘솔 프로그램이라면 가능한 것 같은데 윈도우 프로그램은 Messages 창으로 전송할 방법이 없네요. 대신에 라자루스가 설치된 폴더에 tools 폴더가 있는데, 이 안에 DebugServer라는 프로그램이 있습니다. 이 프로그램을 먼저 실행하고 디버깅을 위한 문자를 전송해서 확인할 수 있습니다. ▲ 라자루스로 lazarus/tools/debugserver 안에 있는 debugserver.lpi 프로젝트 파일을 열기 합니다. ▲ 만일 DebugServer를 컴파일해서 실행했을 때 시작하자마자 "d..
  • thumbnail
    컴퓨터/프로그래밍

    나도 프로그래머 라자루스 통합 개발 환경

    오픈소스 통합개발환경(IDE) 라자루스 윈도우 프로그램을 직접 만들고 싶은 분께 오픈 소스 통합 개발 환경(IDE) 라자루스를 권합니다. 프로그래밍은 전문 지식이 필요해서 매우 어렵게 생각되는데요, 라자루스는 프로그램을 쉽게 만들 수 있는 편리한 기능을 제공해서 프로그래밍의 문턱을 낮추어 줍니다. 라자루스에 대한 자세한 얘기는 밑으로 내리고 과연 라자루스로 어떻게 프로그램을 작성하는지 보겠습니다. 라자루스의 첫 번째 프로그램으로 자리를 잠시 비울 때 나를 찾는 분에게 안내 문장을 보여 주는 작은 윈도우 프로그램을 만들어 보겠습니다. 화면 가운데에 메시지를 입력할 수 있는 입력창을 넣고 그 아래에 종료 버튼을 놓겠습니다. 참고로 이 정도의 프로그램이라면 라자루스 설치에서 만들기까지 10여 분도 채 안 걸릴..
  • thumbnail
    컴퓨터/프로그래밍

    MODBUS-RTU 구현 시 주의 사항

    MODBUS-RTU 경험담 MODBUS-RTU 프로그램을 작성하면서 겪었던 경험담을 올립니다. 좀 당황스러운 일인데, 경험에 따라 생각이 다를 수 있어서 반드시 이래야 한다는 것은 아니지만, rs485 라인에 MODBUS-RTU 통신을 하는 분께 도움이 되지 않을까 해서 올립니다. 사건의 발단은 말 많고 탈 많은 rs485 통신 때문입니다. rs485 통신은 현장에 따라 희비가 극명합니다. 똑같은 시스템을 설치하는데도 어느 곳은 오전에 시작해서 오전에 끝나는데, 어떤 곳은 밤늦게까지 속을 썩입니다. rs485 통신은 장거리 통신이 가능하고 노이즈에 강하지만, 어디까지나 rs232와 비교해서입니다. rs485 통신을 이론으로만 따졌다가는 고생을 많이 하게 되는데요, 노이즈에 강한 통신이어도 현장에서는 통신..
  • thumbnail
    컴퓨터/유틸리티

    이클립스에서 소스 파일을 만들 때 독시젠 주석으로 입력되도록 설정하는 방법

    이클립스에서 소스 파일을 만들 때 독시젠 주석으로 입력되도록 설정하는 방법 이클립스에서 소스 파일을 생성하면 자동으로 파일 주석을 달아 줍니다. 파일 이름과 날짜·시간을 입력해 주어서 좋기는 한데, 항목이 적고 독시젠을 위한 주석이 아니어서 매번 바꾸어 줍니다. 자동으로 입력되는 파일 주석문을 독시젠 형식에 맞도록 수정해 보겠습니다. ▲ 이클립스에서 소스 파일을 생성하면 기본으로 입력되는 주석문입니다. 내용이 너무 빈약하지요? 그래도 날짜를 입력해 주어서 소스 코드를 관리할 때 도움이 됩니다. 날짜와 시간 외에 간단한 설명과 주의 문구를 넣을 수 있도록 주석문의 내용을 키워 보겠습니다. ▲ 메인메뉴>>Window>>Preferences 메뉴를 실행한 후 사용하는 언어별로 있는 Code Style>>Cod..
  • thumbnail
    IT·인터넷/인터넷 서비스

    프로그래머라면 프로그래머를 위한 프로젝트를 진행하고 1000만 원 벌기

    프로그래머의 특성에 맞춘 서비스가 필요 컴퓨터가 신기해서 직업까지 프로그래머가 된지 꽤 되었네요. 지금은 직책이 낮지 않아서 손님을 맞이 하거나 외부로 나가다 보면 한숨 어린 부탁을 받을 때가 적지 않습니다. 어디 괜찮은 사람 없느냐고 말이죠. IT 강국이라는 우리나라에서 사람이 없어 프로젝트 진행에 어려움을 겪는 회사가 많다는 것은 안타까운 일이 아닐 수 없습니다. 앞서도 말씀을 드렸지만, 컴퓨터가 신기하고 IT 분야의 매력에 빠져 프로그래머가 되었지만, 이쪽 일이 힘든 것이 사실입니다. 이런 속사정을 밖에서도 아는지 취업을 앞둔 대학생들도 3D 업종으로 기피 한다는 얘기를 들을 때는 매우 안타깝습니다. 프로그래머를 이상으로 두어도 자바로 몰리는 것을 보면 정말 자바가 훌륭해서인지 아니면 그럴 수 밖에..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

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