일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- resttemplate
- 리눅스
- 처음 만나는 AI수학 with Python
- 서버설정
- 자바편
- 구멍가게코딩단
- d
- iterator
- /etc/network/interfaces
- 스프링부트핵심가이드
- 처음 만나는 AI 수학 with Python
- 이터레이터
- 자료구조와 함께 배우는 알고리즘 입문
- 자료구조와함께배우는알고리즘입문
- ㅒ
- network configuration
- 알파회계
- 네트워크 설정
- 스프링 시큐리티
- 선형대수
- 코드로배우는스프링웹프로젝트
- 코드로배우는스프링부트웹프로젝트
- 데비안
- Kernighan의 C언어 프로그래밍
- GIT
- baeldung
- 목록처리
- 티스토리 쿠키 삭제
- 친절한SQL튜닝
- 페이징
- Today
- Total
목록분류 전체보기 (406)
bright jazz music
이전에 엔진엑스 로그를 정리하는 스크립트를 작성하고 크론탭을 사용하였다. 당시에는 바쁘다는 핑계로 정리하지 않았다. 이번에 DuckDNS를 사용해 동적 DNS 를 적용해보는 과정에서 정리의 필요를 느껴 여기에 적는다. 참고로 아래 링크는 DuckDNS 사용관련 포스팅이다.동적DNS(DDNS) 적용하기 (with DuckDNS)DuckDNS는 도메인과 공인 IP를 매핑하는 서비스이다.사설망에 존재하는 하나의 기기에서, 같은 망에 존재하는 다른 기기로 접근하기 위해 사용하는 방법이 아니다.왜냐하면 duckdns에 업데이트 되는catnails.tistory.com 1. 크론크론(Cron)은 리눅스 시스템에서 주기적인 작업을 자동화하기 위한 시간 기반 작업 스케줄러이다. 크론은 시스템 데몬(daemon)..
DuckDNS는 도메인과 공인 IP를 매핑하는 서비스이다.사설망에 존재하는 하나의 기기에서, 같은 망에 존재하는 다른 기기로 접근하기 위해 사용하는 방법이 아니다.왜냐하면 duckdns에 업데이트 되는 아이피는 공인아이피이기 때문이다. 따라서 NAT를 사용하는 사설망에서 적용하는 것은 무의미하다. (포트포워딩을 사용하지 않는 한. 그러나 카페나 도서관 이용자가 임의로 포트포워딩을 할 수 있는 것도 아니고...) 그래도 사용하려면 아래와 같이 사용할 수 있다. 서브도메인이 xxx.duckdns.org라고 할 때, 클라이언트가 xxx.duckdns.org:3306 접속 시도 (xxx.duckdns.org를 변수처럼 사용하는 것이다)이 요청은 먼저 DuckDns의 DNS로 들어간다.DuckDNS가 이를 실제 ..
라즈베리파이에 ssh로 접근하는 과정은 생략도커 컨테이너를 사용할까 했지만 우선은 네이티브로 설치한다. 1. 패키지 목록 업데이트coffee@coffee-rasp:~$ sudo su[sudo] password for coffee: root@coffee-rasp:/home/coffee# apt updateHit:1 http://ports.ubuntu.com/ubuntu-ports noble InReleaseGet:2 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease [126 kB]Hit:3 http://ports.ubuntu.com/ubuntu-ports noble-backports InReleaseHit:4 http://ports.ubuntu...
개요여기서는 라즈베리파이와 맥북을 유선으로 연결하고,라즈베리파이의 무선랜 사용을 설정하고,다시 맥북과 라즈베리파이를 무선으로 연결하여 사용하는 방식을 다룬다. 1. LAN 연결 설정 (맥북과 직접 연결)우선 맥북 세팅부터 완료하자.맥북과 직접 연결하기 위해서는 설정 - 네트워크 메뉴로 진입한 뒤, 이더넷(유선랜)을 사용하는 서비스의 설정을 변경해줘야 한다.아래 스크린샷에서 USB 10/100/1000 LAN이라고 쓰여진 것이 이더넷(유선) 인터페이스이다. (사용하는 방식에 따라 다르게 표시될 수도 있다. 여기서 USB 10/100/1000)이라고 표시된 것은, 랜선을 맥북과 연결하기 위해 사용한 LAN to C 젠더가 일반 젠더가 아닌 외장 네트워크 인터페이스 카드(NIC, 속칭 랜카드)였기 때문이다. ..
1. CRUD 제너레이터로 CRUD 파일 생성아래 방법을 사용하는 이유는 공식적으로 권장하는 방식을 이해하고 이를 참고하여 auth 기능을 만들어 내기 위함이다.굳이 참고할 필요 없으면 바로 2번 auth기능 구현으로 건너 뛰어도 된다. https://docs.nestjs.com/recipes/crud-generator Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines eleme..
1. 들어가며프론트 앱에서 접근할 api 서버가 필요했다. 스프링 부트로 만든 앱이 있지만 이번에는 사용하지 않기로 했다.nestjs를 사용해보기로 했다. JS/TS 언어 자체와 그 쓰임에 대해 좀 더 깊게 공부하고 활용해보기 위해서다. 공식 문서를 읽어보니 스프링과 유사하면서도 일면 다르다. nestjs도 스프링처럼 MVC를 사용한다. 스프링에서 애노테이션을 사용하는 것처럼 nestjs에서는 데코레이터를 사용한다. 그리고 무엇보다도 의존성 주입을 사용한다. 생각보다 다른 점도 꽤 있다. 스프링에서는 빌드 시 자동적으로 컴포넌트(@Component)를 인식하고 추가하는 데 반해, nestjs에서는 모듈에 명시적으로 등록을 해줘야만 인식한다. 애노테이션과 데코레이터도 미묘하게 다르다. @Controll..
그래프와 이진 힙을 사용한 우선순위 큐를 알아야 한다. 다익스트라 알고리즘의 목적은 그래프의 두 정점(vertex) 사이에 존재하는 최단 경로를 찾는 것이다.- 서울에서 부산으로 가는 최단경로(GPS)- 인간 사이의 바이러스의 감염 경로- 목적지까지의 가장 저렴한 경로 이를 위해 선행되어야 하는 작업은 두 정점 사이에 가중치(예를 들면 거리) 가 존재하도록 해야 한다는 것이다. 이전 포스팅에서는 양방향 무가중치 그래프만을 다뤘다. 그래프(Graph)무방향 그래프를 인접 리스트로 구현한 예시.class Graph { constructor() { this.adjacencyList = {}; // 인접리스트 생성 } /* 정점(노드) 추가 */ addVertex(vertex) { // 인접리스트에 입력한 정점..
무방향 그래프를 인접 리스트로 구현한 예시.class Graph { constructor() { this.adjacencyList = {}; // 인접리스트 생성 } /* 정점(노드) 추가 */ addVertex(vertex) { // 인접리스트에 입력한 정점이 없으면 빈 배열 생성. 이미 존재한다면 아무 작업도 수행하지 않음. if(!this.adjacencyList[vertex]) this.adjacencyList[vertex] = []; } /* 간선 추가: 두 정점 사이에 간선 추가. 정점이 가진 리스트에 상대 정점을 추가해 주는 방식*/ addEdge(vertex1, vertex2) { this.adjacencyList[vertex1].push(vertex2);..
해시테이블은 키-값 쌍을 저장하는 데 사용된다.해시 테이블의 키는 순서를 가지지 않는다.값을 찾고, 추가하거나, 제거하는 속도가 빠르다. 많은 프로그래밍 언어가 해시 테이블 자료구조를 기본적으로 제공한다.- 파이썬: Dictionary- 자바스크립트: Object, Map (오브젝트의 경우 string 타입만을 키로 설정할 수 있다.)- 자바&고 : Map- 루비: Hash 이 포스팅에서는 기본적으로 제공하는 해시 테이블 자료구조를 사용하지 않고 직접 간단한 해시테이블을 만들어 보았다. 충돌처리에는 Separate Chaining 방식을 사용하였다. 이는 해싱을 통해 동일한 값을 가지게 된(충돌한) 키-값 쌍이 해당 원소의 이중 배열에 추가되는 방식을 의미한다. 이 방식 외에 선형 조사법(Linear ..
우선순위 큐(Priority Queue)우선순위 큐는 각 요소가 우선순위를 가지며, 우선순위가 높은 요소가 먼저 처리되는 자료구조다.다른 자료구조를 사용해도 되지만 이진 힙을 사용하는 것이 효율적이기 때문에 이진 힙으로 우선순위 큐를 구현하는 경우가 일반적이다. 아래 링크는 이진 힙 관련 포스팅:https://catnails.tistory.com/537 필수 구현 메서드:enqueue(value, priority) - 우선순위와 함께 새로운 요소 추가dequeue() - 가장 높은 우선순위의 요소를 제거하고 반환peek() - 가장 높은 우선순위의 요소를 반환isEmpty() - 큐가 비어있는지 확인 시간 복잡도:삽입(enqueue): O(log n)삭제(dequeue): O(log n)조회(peek)..