Programming/TIL
-
C언어에서의 다차원 데이터 메모리 할당 방법Programming/TIL 2024. 10. 16. 01:02
C언어에서 다차원 데이터, 혹은 다차원 배열의 메모리 동적 할당 방법을 다룹니다.터를 이용한 기초적인 방법부터, 일차원으로 메모리를 할당하는 선형 방식, 선형 데이터에 이차원 배열의 인터페이스([][])를 사용하는 방법, VLA(Variable Length Array)를 사용하는 방법 등 각 방식의 장단점을 이차원 데이터를 할당하는 예시 코드와 함께 설명합니다.개요프로그래밍을 하다 보면 2차원 이상의 데이터 구조를 다뤄야 할 때가 있습니다.게임의 맵 정보나 픽셀로 이루어진 이미지 데이터, 행렬과 테이블 데이터 등이 대표적입니다.이런 다차원 데이터는 컴파일 시점에 크기를 알 수 없는 경우가 많습니다.게임 맵 크기가 실행 중에 결정되거나, 처리할 이미지의 해상도를 사전에 알지 못하는 경우가 대표적이죠.이럴 ..
-
SSH로 원격 서버 안전하게 접속 관리하기Programming/TIL 2024. 9. 4. 17:22
기본적인 ssh 연결 방법부터 보안을 강화하는 방법까지 실제 홈서버를 만들면서 알아본 내용을 초보자 관점에서 설명합니다.비밀번호 인증 대신 ssh 키 인증을 사용해야 하는 이유와 설정 방법, sshd_config 파일을 통한 보안 설정 등 인터넷상으로 ssh 연결이 가능하게끔 설정할 때 필요한 내용을 포함합니다.그리고 Tailscale VPN을 이용한 ssh 연결 방법을 소개합니다.Intro요즘 짬짬이 노노그램 퍼즐 서버를 개발 중입니다. 간단한 REST api 서버입니다.서버는 예전에 쓰던 노트북을 서버 PC로 운용할 예정입니다. 힌지가 박살 나서 제대로 여닫는 데 10분 이상 걸리는 노트북입니다. 작동은 되니까 전원 물려놓고 서버용으로 방구석에 모셔놓기에는 안성맞춤이지요. 한편, 고장 난 노트북 앞에..
-
배열과 포인터의 차이Programming/TIL 2024. 8. 27. 05:09
C언어에서 배열과 포인터의 차이점을 상세히 설명합니다.2차원 배열을 이중 포인터로 전달할 때 발생하는 문제와 배열 붕괴(decay) 현상을 통해, 배열과 포인터가 실제로는 다른 개념임을 설명합니다.Intro배열을 포인터로 넘겨주기가로 x 세로 크기 2차원 퍼즐 게임을 만든다고 해봅시다. 일단 아래와 같이 18줄 정도 코드를 작성했습니다.struct puzzle{ int n_rows; int n_cols; int **board;};void print_puzzle(struct puzzle *p){ for (int i = 0; i n_rows; i++) { for (int j = 0; j n_cols; j++) { printf("%d ",..