[Java] Ant, Maven, Gradle
·
프로그래밍/기타
자바 빌드의 어려움 프로그램을 개발하다보면 여러 라이브러리를 쓰게된다. 그러다 보면 빌드 순서나 라이브러리 버전 등 고려할 사항이 많아지며 빌드가 복잡해진다. 개발자가 개발에 집중하지 못하고 빌드 매뉴얼에 더 신경써야 한다는 것이다. 또, 환경에 따라 빌드가 달라질 수 있어서 이것도 고려를 해야 한다. 유닉스에서 사용되던 C언어 빌드 스크립트 대표주자인 Makefile을 사용할 수도 있지만, 빌드가 더 복잡해짐에 따라 새로운 빌드 툴이 등장하게 된다. Ant 처음 등장한건 아파치에서 만든 Ant 였다. Ant는 당시 막 뜨던 XML을 설정파일로 사용했고, Make와 비슷하다. 근데.. 워낙 유연해서 빌드 과정을 하나하나 XML파일에 정확히 구성해야 했다. 그러다 보니 프로젝트가 진행됨에 따라 XML파일이..
[kubernetes] Error: unknown flag: --image
·
프로그래밍/기타
❗ Error: unknown flag: --image 아래에 있는 미니큐브 예제를 실행하려 했는데, 다음과 같은 오류가 떴다. Hello Minikube 이 튜토리얼에서는 Minikube와 Katacoda를 이용하여 쿠버네티스에서 샘플 애플리케이션을 어떻게 실행하는지 살펴본다. Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다. 참고: 로컬에서 kubernetes.io hello-node 라는 deployment를 생성하는 코드인데, Docker 이미지를 기반으로 컨테이너를 만든다. PS C:\WINDOWS\system32> minikube kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 Error: unkno..
[PostgreSQL] Heap, Block, Tuple
·
프로그래밍/DB
📌 Heap/Heap File Heap 혹은 Heap File은 테이블 하나의 모든 정보를 저장하는 파일이다. 여러개의 block으로 구성되어 있다. 시스템 내부에 바이너리 파일 형태로 저장되어 있는데, 아래 쿼리문을 실행하면 SHOW data_directory; 데이터가 저장되는 디렉터리 경로를 알 수 있다. 그리고 해당 디렉터리에 들어가 보면, 여러 파일들이 있는데, 그 중 우리가 봐야 할 것은 base 폴더다. 들어가 보면.. 다음 과 같이 이상한 숫자들만 나온다. 또 아래 쿼리를 실행해서 이 숫자들이 뭔지 알아보자 SELECT oid, datname FROM pg_database; 이 폴더들은 데이터 베이스 별로 나눠둔 것이였다. 그럼 하나를 무작위로 들어가 보자. 😲 헉! 이번에도 이상한 숫자들..
[pgAdmin] Utility file not found. Please correct the Binary Path in the Preferences dialog 오류
·
프로그래밍/기타
❗ Utility file not found. Please correct the Binary Path in the Preferences dialog pgAdmin에서 [DB오른쪽클릭] -> Restore... 기능을 사용하려던 중, 다음과 같은 오류가 떴다. 유틸리티 프로그램을 못 찾고 있다고 한다. bin 디렉터리를 못 찾아서 생긴 오류다. 🛠 해결 방법 postgreSql이 설치된 곳을 찾고 bin 폴더 경로를 복사한 뒤, File -> Preferences -> Paths -> Binary paths 에서 버전 찾아서 넣어주면 끝! 끝! 아래와 같이 잘 나온다!
색다른 연결리스트들
·
프로그래밍/알고리즘
『디버깅을 통해 배우는 리눅스 커널의 구조와 원리』 책을 보다 색다른 연결리스트들을 보게 되었다. 1. 꼬리 비우기형 보통 연결리스트 라고 하면 아래의 코드를 떠올렸다. struct list_head = { struct list_node *head; struct list_node *tail; }; new_node->next = NULL; list_head->tail->next = new_node;// 마지막 노드에 새로운 노드를 연결한다. list_head->tail = new_node;// 새로운 노드가 tail로 대체됨. 그런데 tail 맴버를 수정하면 다음과 같이 tail을 항상 비워두는 것으로 할 수 있다. (코드를 보면 알겠지만 실제로 빈 공간이 생기는건 아님) struct list_head =..
direct mapped cache / set associative cache
·
프로그래밍/기타
캐시란? 캐시는 일종의 메모리로, CPU에서 메모리에 접근하는데 드는 시간을 줄이기 위해 만들어졌다. 캐시를 사용하는 다양한 방법이 연구되어 왔으며 이 글에서는 direct mapped cache와 set-associative cache를 알아볼 것이다 아래의 글을 읽기 앞서, 캐시와 메모리의 차이점에 대해 조금 알아보자 메모리 VS 캐시 DRAM vs SRAM 하드웨어적으로 SRAM이 DRAM보다 더 빠르기 때문에 캐시는 SRAM, 메모리는 DRAM을 사용한다. 여기서 이 글을 읽으시는 분들은 메모리를 모두 캐시처럼 SRAM으로 대체하면 안될까? 라는 생각이 들것이다. 하지만 SRAM이 더 비싸서.. 그렇게는 할 수 없다. . Address 단위 vs Block 단위 메모리는 byte단위로 주소를 매핑..
CKEditor 5에서 Plugin을 설치할때 주의점
·
프로그래밍
CKEditor에서 Plugin을 설치해도 반영이 안될 때가 있다. typeerror: cannot read property 'getattribute' of null 와 같은 오류나 CKEditorError: ckeditor-duplicated-modules: Some CKEditor 5 modules are duplicated 와 같은 오류가 나온다. 이런 오류가 발생하는 이유는 CKEditor5에서는 Plugin을 설치한 후, 프로젝트 빌드와 상관없이 따로 빌드 과정을 거쳐야 해서 그렇다. (npm run build로 빌드가 되지 않는다.) 아무튼 해결하고 싶다면 2가지의 방법이 있다. 본인은 블로그를 개발하면서 결국 1번째 방법을 쓰게 되었고 한글 문서가 많이 없길래 작은 도움이 되고자 글을 쓰게 ..
뱀게임 인공지능을 만들어보자.(2)
·
프로그래밍/머신러닝
뱀 게임 인공지능을 만들어보자(1) 이전의 결말대로, 이동방향에 대한 뱀 머리, 몸통을 따로 레이블을 매칭 시켜서 답을 보려 했다. 그런데, 이게 잘 안되었다. 뱀이 계속해서 도는 것도 못하고 오른쪽 벽으로 박으면서 학습이 안되고 있었다. 그래서 다른 방법을 고민해 보았다. 입력 크기를 줄이는 것이다. 난이도가 엄청 쉬워지겠지만, 이왕 잘 안되는 거 쉬운 것부터 해보고 싶다. 입력은 8개로, 뱀 머리를 기준으로 먹이가 있는 위치를 입력으로 전달해줬다. (위 사진의 빨간색 테두리로 강조한 것) 모델의 형태는 아래와 같이 구성했다. (중간은 relu, 마지막은 sigmoid, 학습은 Adam) 모델이 먹이를 먹으면 1점을 보상으로 주고, 벽에 박거나 자신의 꼬리에 박으면 -100점을 보상했다. 대략 500 ..
2jun0
'프로그래밍' 카테고리의 글 목록 (11 Page)