본문 바로가기

분류 전체보기894

bulkfilechanger ] 파일 생성 / 수정 / 액세스 날짜 임의로 수정하기 Freeware인 BulkFileChanger 를 다운로드 한다. https://www.nirsoft.net/utils/bulk_file_changer.html BulkFileChanger: Change date/time/attributes of multiple files BulkFileChanger v1.72 Copyright (c) 2010 - 2021 Nir Sofer See Also NK2Edit - Edit, merge and repair the AutoComplete files (.NK2) of Microsoft Outlook. FolderTimeUpdate - Update the 'Modified Time' of every folder according the latest modified t.. 2024. 1. 11.
TCP/IP stack TCP/IP stack TCP/IP 스택이라고 하면 전송 제어 프로토콜인 TCP와 인터넷 프로토콜인 IP, 단일 프로토콜을 말하는게 아니라 이를 포함하여 여러 프로토콜로 구성된 프로토콜 스택이다. OSI 모델과 비교될 수 있으나 OSI 모델이 개념적인 이해를 돕기 위해 사용된다면 현장에서 실제로 사용되는 것은 TCP/IP 스택이다. OSI Model과 TCP/IP stack의 비교 TCP/IP stack은 Application, Transport, Internet, Network Access의 4계층으로 구성되며 위와 같이 OSI Model의 7 layer와 매핑될 수 있다. TCP/IP stack에서 두 호스트 간 커뮤니케이션 시 PDU(Protocol Data Unit)를 주고받게 되는데, PDU 대.. 2024. 1. 10.
CAN 통신의 ISO 표준 CAN (Controller Area Network) 통신의 표준은 주로 ISO 11898 시리즈에서 파생되어 다양한 부분에서 여러 표준이 정의되어 있는데 크게 CAN 트랜시버에 적용되는 물리계층 표준과 CAN 컨트롤러에 적용되는 데이터링크 계층 표준으로 나뉠 수 있다. 물리계층 표준: ISO 11898-2: 고속 CAN(CAN High-Speed)의 물리 계층을 정의한다. 차량 내 통신에서 주로 사용되며, 데이터 전송 속도는 최대 1 Mbps이다. ISO 11898-3: 저속 CAN(CAN Low-Speed)의 물리 계층을 정의한다. 주로 차량의 간단한 네트워크 및 저속 통신에 사용되며 Fault Tolerant(내고장성, 결함 허용) 특징을 가지고 있다. 데이터 링크 계층 표준: ISO 11898-1.. 2024. 1. 9.
Ethernet 물리 계층의 표준 IEEE에서 정의하는 주요 Ethernet 물리계층의 전송속도별 구분 Ethernet (10BASE-T) : IEEE 802.3에서 정의된 최초의 Ethernet 표준으로 10 Mbps의 속도를 지원한다. 4가닥의 UTP (Unshielded Twisted Pair) 케이블을 사용하며, 최대 케이블 길이는 100 미터이다. Fast Ethernet (100BASE-T) : IEEE 802.3u에서 정의된 표준으로 100 Mbps의 속도를 지원한다. 역시 4가닥의 UTP 케이블을 사용하며, 최대 케이블 길이는 100 미터이다. Gigabit Ethernet (1000BASE-T) : IEEE 802.3ab에서 정의된 표준으로 1 Gbps의 속도를 제공한다. Cat 5e, Cat 6, 또는 Cat 6a의 8.. 2024. 1. 8.
StarUML ] 텍스트 줄바꿈(new line) 하는 법 단축키 Ctrl + Shift + W 사용 또는 속성에서 Format - Word Wrap 체크 이렇게 하면 박스의 크기를 flexible하게 조절할 수 있고 텍스트의 경우 박스의 너비를 넘어가는 경우 줄바꿈 된다. 2024. 1. 7.
파워포인트 각주 다는법 각주 달 텍스트를 드래그하여 선택 후 우클릭 - 글꼴 효과에서 위 첨자 체크 후 확인 그럼 아래와 같은 모양으로 각주가 달린다. 단축키는 Ctrl + Shift + = 2024. 1. 6.
파워포인트 4분할 여백없이 꽉차게 인쇄하기 보통은 파워포인트 인쇄하면에서 4슬라이드로 변경후 출력하는데 그렇게 하면 여백이 너무 크다. 파워포인트에서는 반드시 '전체 페이지 슬라이드' 옵션으로 그냥 두고 프린터 속성에 들어간다. 프린터마다 설정방법이 약간씩 다를 수 있지만 대부분의 프린터는 '면당 여러 페이지 인쇄' 기능을 제공한다. 아래는 삼성 프린터 기준 설정 방법이다. 이렇게 인쇄하면 한페이지에 4분할으로 여백없이 꽉차게 인쇄되는 것을 볼 수 있다. 2024. 1. 5.
파워포인트 꺾인 연결선 쉽게 그리는 팁 예를들어 아래 그림에서 파란색선을 그리고 싶다고 할때 그냥 꺾인 연결선을 클릭해 만들기란 쉽지 않다. 이때 사용할 수 있는 두 가지 방법이 있다. 첫번째 방법 연결선 시작과 끝지점에 임의의 사각형을 만들어 둔다. 그리고 꺾인 연결선을 클릭해 그린 다음 사각형을 지워주면 완성 두번째 방법 도형중에 자유형을 클릭한다. 자유형은 그냥 그리면 삐뚤빼뚤하지만 shift를 누른채로 그리면 0도, 45도, 90도 등의 직선을 그릴 수가 있다. 자유형을 클릭한 뒤 shift를 누른채로 시작점과 연결점, 끝점을 찍어 아래와 같은 자유형 선을 만든다. 우클릭해서 도형서식에 들어가면 화살표 머리를 달아줄 수 있다. 그 다음 원하는 위치에 크기를 조절해서 가져다 두면 완성이다. 2024. 1. 4.
배경이 투명한 서명 이미지 만들기 (무료) 아래 사이트에서 배경이 투명한 서명 이미지를 무료로 만들 수 있다. https://www.signwell.com/online-signature/draw/ Electronic Signature Software - SignWell Get your documents signed 40% faster with zero-setup electronic signatures. SignWell helps you cut turnaround time and makes it easy for everyone to electronically sign your documents. www.signwell.com 서명을 그리고 SAVE를 선택한다. 자동으로 필기체를 보정해주는 기능까지 있다. Transparent background를 .. 2024. 1. 3.
Windows ] 오래된 파일을 삭제하는 배치 스크립트 오래된 파일을 삭제하는 배치 스크립트를 만들 때 forfiles 명령어를 사용할 수 있다.  forfiles 명령어 기본 형식forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [date | days]] /P pathname : 파일이 위치한 폴더 경로 지정, 기본적으로 현재 작업 디렉토리에서 검색을 시작하며 절대경로도 올 수 있다./M searchmask : 파일 이름 패턴 지정 (*.*, Log??.txt, *.tmp 등) /S : 하위 폴더 포함 검색 옵션 /C command : 찾은 파일에 실행할 명령 지정, /C "cmd /c 명령어" 와 같이 작성하면 되며, @file, @path, @fname, @ext 등을 사용해 찾은.. 2024. 1. 2.
ARINC 429 waveform ARINC 429 Tx_H, Tx_L 라인을 잡고 파형을 디코딩해보자. 위 사진은 100kbps, odd parity로 Label은 210, SDI는 00, Data 값은 0, SSM은 00인 데이터를 전송한 파형이다. 이전글에도 언급한적 있지만 Label은 MSB first로 전송되고 나머지는 LSB first로 전송된다. Label은 8진수(Octal number)인데 Label 필드가 8 bits이니 2bit, 3bit, 3bit로 끊어읽으면 된다. 즉 여기서 알 수 있는 건 Label의 최대값은 Decimal로 255, Hexa로는 0xFF, Octal로는 377이다. ARINC 429 파형은 RZ 방식이라 스파이크 부분만 보면 되니까 읽기편한 감이 있다. 아무튼 파형에서 Label 필드 부분을 .. 2024. 1. 1.
한글 ] 개요 번호, 새 구역 만들고 새 번호로 시작하기 한글의 개요는 구역이 없으면 새번호를 줄 수 없다. 개요 1 수준으로 새번호를 매기고 싶을 때는 먼저 새 구역을 만들고 새번호로 시작하면 된다. 서식 - 개요 - 개요 번호 모양 '적용 범위'를 새 구역으로 하고 '새 번호로 시작' 체크 작업창 - 개요 보기 로 확인하면 다른 개요 번호 모양으로 새 번호로 시작하는 것을 확인할 수 있다. 2023. 12. 31.
한글 ] 그림/표/개요에 대해 상호참조 기능 사용하기, 상호참조 업데이트 하기 상호참조 기능은 다른 쪽의 그림, 표 등을 현재의 본문에서 항상 참조할 수 있도록 해주는 기능을 말한다. 문서를 편집하다 보면 이런 참조 대상들(그림, 표, 수식, 책갈피, 개요 등)의 위치가 바뀔 수 있는데, 상호 참조를 이용하면 이러한 경우에 쉽게 참조 번호를 한 번에 업데이트 할 수 있다. 예를 들어 아래 상황에서 그림 2에 대한 상호참조 기능을 넣고 싶으면 참조기능을 넣을 곳에 커서를 두고 입력 - 상호참조를 클릭한다. (단축키 Ctrl + K, R) '참조 대상 종류'는 그림을 선택하고 '참조 내용'은 캡션 내용을 선택한 후 '참조 대상 선택'에서 그림 2를 선택한 뒤 넣기를 클릭한다. 아래 그림과 같이 상호참조가 넣어졌다. 그 뒤에 하고싶은 말을 추가해본다. 아래와 같이 중간에 다른 그림을 넣.. 2023. 12. 30.
한글 ] 표, 그림 캡션의 번호 없애기 / 번호 넣기 표 / 그림 캡션에 번호를 매기고 싶지 않은 대상은 우클릭 - 개체 속성 - 기본 탭 - 기타 섹션에서 번호 종류를 없음으로 설정한다. 번호를 매기고 싶은 대상은 번호 종류에서 그림 또는 표를 선택하면 된다. 2023. 12. 29.
TMS320F28388D ] CCS에서 hex 파일 출력하는법 프로젝트 우클릭 - C2000 Hex Utility Enable 'C2000 Hex Utility' 체크 --memwidth, --romwidth 16으로 설정 출력 포맷은 .hex Output Format Options는 Intel hex 선택 만약 hex말고 bin파일로 출력하려면 내가 올린 다른 글을 참고하면 된다. tiobj2bin, mkhex4bin, hex2000 툴을 사용하여 out파일로부터 bin파일을 생성해내는 방법이다. 2023.04.20 - [DSP, MCU/TMS320F2838x (C28x)] - TMS320F28388D ] CSS에서 bin 파일 생성하는 법, filling a hole with 0xFF not 0x00 위 방법 말고 이미 생성된 hex파일을 bin파일로 변경하려면.. 2023. 12. 28.
nssm 사용해서 배치파일을 Windows 서비스로 등록하기 nssm 다운로드 후 압축 해제 https://nssm.cc/download NSSM - the Non-Sucking Service Manager NSSM - the Non-Sucking Service Manager Windows 10, Server 2016 and newer 2017-04-26: Users of Windows 10 Creators Update or newer should use prelease build 2.24-101 or any newer build to avoid an issue with services failing to start. If for some reason you nssm.cc 관리자 권한으로 명령 프롬프트 실행한 뒤 다운로드 받은 nssm.exe 파일이 있는 경로로 .. 2023. 12. 27.
Windows 작업 스케줄러 사용하여 배치파일 자동 실행하기 Windows 작업 스케줄러 사용하여 배치파일 자동 실행하기 작업 만들기 작업 '이름'을 지정하고 '설명'을 추가한다. '사용자의 로그온 여부에 관계없이 실행'에 체크하고 암호를 사용하지 않는다. 권한문제로 실행되지 않을 경우를 대비하여 '가장 높은 수준의 권한으로 실행'에 체크한다. '숨김'에 체크를 하면 배치파일의 콘솔창을 숨긴채 실행할 수 있다. 트리거는 '시스템 시작 시'로 하였다. 동작은 '프로그램 시작'으로 하고 배치파일의 경로를 등록한다. 기타 옵션은 '조건', '설정' 탭에서 설정할 수 있다. 시스템 재시작 후 작업 스케줄러의 작업 목록에서 '마지막 실행 시간'과 '마지막 실행 결과'를 확인할 수 있다. 2023. 12. 26.
윈도우 소켓 ] connect() 함수의 타임아웃은 21초 connect() 함수의 타임아웃 TCP connection은 3-way-handshake에 의해 이루어지는데 클라이언트는 SYN 패킷을 전송한 이후 SYN+ACK를 수신할 때까지 대기하게 된다. 이때, 서버기기가 네트워크에 연결되어 있고 포트가 닫혀있는 경우 서버기기는 SYN+ACK 대신 RST 패킷을 보낼테니 클라이언트는 서버에 연결할 수 없다는 걸 RTT(Round Trip Time)만에 알 수 있다. 로컬네트워크에서 이 시간은 몇 밀리초이지만 인터넷에서는 그 이상이 될 수 있다. 서버기기가 네트워크에 없는 경우 클라이언트는 응답을 받지 못한채 SYN 패킷 전송을 재시도할 것이다. 이 때 재시도 횟수와 타임아웃은 운영체제의 TCP/IP protocol stack 설정값에 따라 달라질 수 있는데 윈도.. 2023. 12. 25.
윈도우 소켓 ] blocking / non-blocking 소켓 사용 시 소켓함수의 리턴 조건 recv() Blocking socket : 수신된 데이터가 없으면 블록되고, MSG_WAITALL 플래그를 사용하면 원하는 크기만큼 도착할 때까지 기다릴 수 있다. Non-blocking socket : 수신된 데이터가 없으면 WSAEWOULDBLOCK으로 즉시 리턴한다. WSAGetLastError() 함수를 사용하여 에러 코드를 확인할 수 있다. TCP / UDP 비교 : 동일하게 Blocking socket에서는 소켓 수신 버퍼에 도착한 데이터가 없으면 블록되고, 소켓 수신 버퍼에 도착한 데이터가 있을 시 이를 응용 프로그램이 제공한 버퍼에 복사한 뒤 리턴한다. send() Blocking socket : 소켓 송신 퍼버에 여유 공간이 없으면 블록되고, 응용 프로그램이 전송 요청한 데이터를 소켓 .. 2023. 12. 24.
IcmpSendEcho IcmpSendEcho 함수는 Windows 운영 체제에서 ICMP 에코 요청을 보내고 응답을 받는 데 사용되는 함수로 주로 네트워크 연결 상태를 확인하거나 호스트의 응답 시간을 측정하는 데 사용됩니다. 📝 ICMP (Internet Control Message Protocol) : 네트워크에서 발생하는 여러 상태 및 오류 메시지를 전송하는 데 사용되는 프로토콜 DWORD IcmpSendEcho( HANDLE IcmpHandle, IPAddr DestinationAddress, LPVOID RequestData, WORD RequestSize, PIP_OPTION_INFORMATION RequestOptions, LPVOID ReplyBuffer, DWORD ReplySize, DWORD Timeout .. 2023. 12. 23.
strchr, strrchr strchr 및 strrchr 함수는 C 표준 라이브러리 함수로 문자열에서 특정 문자를 찾는 데 사용되는 함수들이다. strchr 문자열 앞에서 부터 찾고 strrchr 는 뒤에서 부터 찾는다는 차이가 있다. strchr #include char *strchr(const char *str, int c); 문자열에서 특정 문자 c를 찾아 첫 번째로 등장하는 위치를 반환한다다. 만약 문자 c가 문자열에 없으면 NULL을 반환한다. 사용 예시. #include #include int main() { const char *str = "Hello, World!"; char target = ' '; // 문자열에서 ' '공백문자를 찾기 char *result = strchr(str, target); if (resu.. 2023. 12. 22.
strpbrk strpbrk char *strpbrk(const char *str1, const char *str2); str1: 검색 대상이 되는 문자열 str2: 검색할 문자들로 이루어진 문자세트 반환 값: str1에서 str2에 지정된 문자세트 중 첫 번째로 매치되는 문자의 포인터. str1, str2 둘 다 null terminated string이어야 하고 일치여부 확인시 null 문자는 고려하지 않음. 반환값이 NULL이라면 일치하는 문자를 못찾은 것. 사용 예시 #include #include int main() { // str1에서 첫번째로 나오는 모음문자 포인터를 찾음 const char *str1 = "Hello, World!"; const char *str2 = "aeiou"; char *resul.. 2023. 12. 21.
strcspn strcspn size_t strcspn(const char *str1, const char *str2); str1: 검색 대상이 되는 문자열 str2: 검색할 문자들로 이루어진 문자세트 반환 값: str1에서 str2에 지정된 문자세트 중 첫 번째로 매치되는 문자가 위치한 인덱스, 인덱스는 0부터 시작하며 str1, str2 둘 다 null terminated string이어야 하고 일치여부 확인시 null 문자는 고려하지 않음. 반환값이 strlen(str1)이라면 일치하는 문자를 못찾은 것. 사용 예시. #include #include int main() { // str1에서 첫번째로 나오는 모음을 찾음 const char str1[] = "Hello world!"; const char str2[].. 2023. 12. 20.
loop unroll loop unroll 루프 언롤은 반복문을 효과적으로 최적화하는 기법 중 하나이다. 이 기법은 반복문의 반복 횟수를 줄여 성능을 향상시키는 것을 목표로 한다. 일반적으로 루프 언롤은 컴파일러 최적화에 의해 자동으로 수행되기도 하지만, 때로는 프로그래머가 수동으로 코드를 작성하여 성능을 개선하기도 한다. loop unroll 예시 장점 루프 언롤은 분기체크로 인한 오버헤드를 줄여주고 파이프라인을 더 효과적으로 사용할 수 있도록 하여 연속적인 명령어를 병렬로 처리하는데 도움이 된다. 때문에 특정 상황에서는 성능 향상을 가져온다. 단점 반복문 내의 코드를 복사하므로 코드 크기가 증가로 인한 캐시누락이 발생하여 오히려 성능에 안좋은 영향을 미칠 수 있다. 또한 프로그래머가 직접 루프 언롤을 사용했을 때 코드의 .. 2023. 12. 19.
CPU 구조 CPU 구조 ALU (Arithmetic logic unit) : 각종 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)과 논리연산(AND, OR, NOT)을 수행하는 회로로 이루어진 하드웨어 모듈이다. Register : CPU 내부에 위치한 기억장치로서, 액세스 속도가 컴퓨터의 기억장치들 중에서 가장 빠르다. 그러나 내부 회로가 복잡하여 비교적 큰 공간을 차지하기 때문에 지정된 용도로만 사용되는 특수 목적 레지스터들과 적은 수의 일반 목적용 레지스터들만이 포함된다. Control Unit : 명령어를 해석하고, 그것을 실행하기 위한 다양한 제어 신호를 순차적으로 발생하는 하드웨어 모듈이다. CPU가 제공하는 명령어들의 수가 많아질수록 Control Unit의 내부 회로는 더 복잡해지므로 최근에는 명령어의 수를.. 2023. 12. 18.
리눅스 커널 Kernel 커널 Kernel 커널은 운영체제의 가장 핵심적인 역할을 하는 부분으로 하드웨어와 응용 프로그램 간의 인터페이스 역할을 한다. CPU, 메모리, 프로세스, 파일시스템, 입출력 등 주요 하드웨어 자원을 관리한다.부팅 시 메모리에 로드된다.항상 메모리에 올라가 있으며 하드웨어와 프로세스를 관리하는 소프트웨어이다.  커널의 주요 기능 커널의 주요 기능은 컴퓨터의 하드웨어 자원을 추상화하여 관리하고, 시스템 콜을 통해 사용자 및 응용 프로그램이 하드웨어 자원에 접근할 수 있도록 하는 것이다. 프로세스 관리 : 물리적 자원인 CPU를 추상적 자원인 Task로 제공메모리 관리 : 물리적 자원인 메모리를 추상적 자원인 Page 또는 Segment로 제공파일 시스템 : 물리적 자원인 디스크를 추상적 자원인 파일로 제공.. 2023. 12. 17.
스위치, 허브, 라우터, 공유기 차이점 스위치 리소스 공유를 목적으로 여러 기기를 연결하는 네트워크 장비이다. L2 계층에서 작동하며 MAC 주소를 사용해 물리적 포트에 연결된 기기들의 위치를 식별한다. 한 포트에서 들어온 패킷을 받아 헤더를 읽고, 패킷이 도달해야 하는 기기로 이어지는 특정 포트로만 패킷을 내보낸다. 장점은 목적지 기기로만 패킷을 전달하기 때문에 충돌이 적고 대역폭 활용이 효율적이다. 허브 허브 역시 리소스 공유를 목적으로 여러 기기를 연결하는 네트워크 장비이다. 허브가 스위치와 다른 점은 연결된 기기 중 하나에서 전송된 패킷을 허브에 연결된 모든 기기로 브로드 캐스팅한다. 단점은 대역폭이 제한되어 있고 충돌 가능성이 높다. ❗ 허브는 허브에 연결된 모든 노드가 전체 패킷을 받을 수 있는 구조기 때문에 wireshark를 통.. 2023. 12. 16.
MFC ] 정적 라이브러리에서 MFC 사용 MFC 프로젝트를 생성하면 디폴트가 "공유 DLL에서 MFC 사용"으로 되어있다. 이 설정은 해당 프로그램이 필요로 하는 MFC 라이브러리를 DLL을 사용하여 참조하겠다는 뜻으로 대상시스템에서 Visual C++ 재배포 패키지를 설치하거나, mfc*.dll 파일을 구해 system32 또는 sysWow64 경로에 넣어주어야 정상적으로 동작한다. 반면 "정적 라이브러리에서 MFC 사용" 옵션을 선택하면 실행파일에 필요한 dll이 포함되어 컴파일되기 때문에 실행파일의 사이즈는 커지지만 배포시 별도의 dll을 같이 제공할 필요가 없다. 런타임 라이브러리도 실행파일에 포함시켜 배포하기 위해 /MD가 아니라 /MT 옵션으로 바꿔주는 것도 잊지 않는다. 2023. 12. 15.
MFC ] 컨트롤 색상 변경하기 WM_CTLCOLOR 메시지는 컨트롤이 처음 생성될 때 또는 컨트롤이 다시 그려져야할 필요가 있을 때 컨트롤의 색상을 결정하기 위한 메시지 이다. 이 메시지의 핸들러를 등록하여 컨트롤의 색상을 처리할 수 있다. 파라미터는 다음과 같다. pDC : 윈도우에서 그리기 작업에 필요한 모든 정보를 가지고 있는 디바이스 컨텍스트 구조체 포인터 pWnd : 화면에 그려질 대상 컨트롤에 대한 포인터 nCtlColor : 컨트롤의 종류에 대한 정수값. 예를들어 에디트 컨트롤이라면 CTLCOLOR_EDIT이고 해당 컨트롤이 읽기 전용이라면 CTLCOLOR_STATIC이 된다. 위 파라미터를 활용하여 특정 컨트롤에 대한 색상 처리를 수행하고 변경된 색상을 나타내는 HBRUSH를 반환하면 된다. 반환된 브러시는 실제 해당 .. 2023. 12. 14.
Win32 API ] 윈도우 프로그램의 기본 구조 MFC 프레임워크 안에 숨겨진 윈도우 프로그램의 기본 구조를 이해해보자. Windows에서 실행되는 애플리케이션의 종류 윈도우에서 실행되는 애플리케이션은 크게 콘솔 애플리케이션과 GUI 애플리케이션으로 나눌 수 있다. 콘솔 앱 또는 데스크톱 애플리케이션 만들기 프로젝트 생성 시 콘솔 또는 데스크톱 애플리케이션을 지정하여 생성할 수 있으며, 이미 생성한 프로젝트를 콘솔 또는 GUI 애플리케이션으로 변경하려면 프로젝트 우클릭 - 속성 - 링커 - 시스템 - 하위 시스템에서 변경 가능하다. Windows C/C++ 애플리케이션의 진입점 프로그램이 실행될 때 가장 먼저 호출되는 함수를 프로그램의 진입점(entry point)라고 하고, 이 진입점을 호출하는 함수는 C/C++ 런타임(CRT) 초기화를 담당하는 함.. 2023. 12. 13.