전체 글

Paint the World
· 회고
재미있는 이야기를 하나 알고 있습니다. 암흑물질이라는 것을 아십니까? 천문학자들이 정의한 우주에 존재하는 수수께끼의 물질입니다. 암흑물질의 대표적인 특징은 눈에 보이지 않는 것입니다. 현존하는 어떠한 장비로도 관찰할 수 없다고 합니다. 그런데 어떻게 천문학자들은 암흑물질을 존재를 알 수 있었던 걸까요. 그 이유는 바로 암흑물질은 중력 렌즈를 통해 관측할 수 있다고 합니다. 눈으로 볼 수 없고, 오로지 중력에 의한 상호작용을 통해서 관측할 수 있는 겁니다.  이 이야기를 들은 지 꽤 오랜 시간이 흘렀지만 여전히 좋아하는 이야기 중 하나입니다. 암흑물질의 존재를 알기 위해서는 눈으로 보는 것이 아닌, 중력에 의한 서로의 끌어당김을 통해서 느낄 수 있다는 점이 재미있지 않습니까?  베일에 싸인 천문학에서 일어..
가끔씩 다양한 언어의 빌드를 지원하는 사이트를 보면 자바스크립트라는 언어로 코드를 작성하고 싶은데, 자바스크립트는 안 보이고 node.js라고 쓸 때가 있다. 예를 들어서 repl.it이 그렇다. 처음에는 어째서 자바스크립트가 아닐까 생각했는데, node.js 생태계에 익숙해지면서 node.js라고 적는 이유를 알 것 같게 되었다. 그 외에도 다양한 언어를 통해서 서버를 만들면서 자바스크립트의 작동 원리는 굉장히 신기했다. 자바스크립트 싱글 스레드 기반이며 논 블로킹 패러다임의 비동기적인 동시성 언어입니다. 라는 한 줄에 담긴 심오한 작동 원리가 있다. 그 외에도 웹 브라우저를 위해 태어난 언어인 자바스크립트를 높은 퍼포먼스로 작동시키기 위해 C++로 짜인 node.js의 모듈이 돕는다거나, 이벤트 루프..
필자가 평소에 가장 많이 사용하는 데이터베이스는 postgreSQL이라고 부르는 데이터베이스이다. 무료로 사용할 수 있는 데이터베이스이며, mysql과 함께 많이 사용하는 관계형 데이터베이스이다. 보통 일반적으로는 pgAdmin이라고 불리는 데이터베이스 툴을 통해서 GUI 환경에서 DB를 관리할 수 있으나, 필자는 젯브레인즈 학생 라이선스 인증을 통해서 datagrip을 사용하기 때문에, Terminal의 psql 명령어를 통한 CLI 조작 + datagrip을 통한 GUI 조작을 통한 개발 환경을 갖추고 있다. 이번 포스팅에서는 기본적인 데이터베이스 생성 방법에 datagrip을 통해 모니터링하는 과정까지를 포스팅하려고 한다. MAC 환경을 기준으로 설명한다. 본론postgresql 설치먼저 postg..
백엔드 개발을 하면서 몇 년간 JSON으로 데이터를 옮기는 작업을 하거나 서버를 띄우는 작업만 했었는데, 만들어보고 싶었던 것도 있었고 간단한 프런트엔드 개발에 대해서 공부하고 싶어서 이번에 개인 프로젝트를 레일즈를 써서 만들게 되었다. MVC 패턴 프레임워크를 선택하는 과정에서 쟝고를 쓸지 레일즈를 쓸지 고민했었는데, 파이썬 프레임워크로는 이미 플라스크를 써본 적이 있었고, 루비 생태계가 궁금했기 때문에 루비 온 레일즈를 써서 프로젝트를 진행했다. ruby를 세팅하는 과정이 초반에 생각보다 많이 난잡했는데, 루비를 설정하는 기본적인 설정하는 방법과 rails를 사용하는 방법을 포스팅하여 남기도록 한다. 본론ruby 설치먼저 루비를 먼저 설치해야한다. 맥을 사용하는 경우에는 이미 루비가 설치되어 있는 경..
· Developer
이번 포스팅에서 다룰 내용은 리눅스 계열 운영체제의 기본 텍스트 에디터인 vi이다. vi는 1970년대 UNIX 계열 운영체제에서 쓰이는 문서 편집기이다. vi를 모르는 사람이라면 터미널에서 작업하다가 vi를 사용해 모든 키보드 입력이 안 먹혀서 당황한 적이 있을 것이다. 편집기를 CLI으로 사용할 수 있게 해주는 vi에 대해서 알아보자. 미리 보기 사진으로 Vim의 이미지를 가져왔는데, 현재는 대부분 vi와 vim을 같이 사용한다. 대부분의 유닉스와 리눅스 배포판에서 vi 명령어를 쓰게 되면 자동으로 vim을 사용하도록 연결해 주게 된다. 따라서 이번 포스팅에서는 vi라고 부를 것이지만 내부적으로는 vim을 쓰고 있는 것이 된다. vim을 쓰고 있는 것인 지 키보드 화살표 키를 통해서 확인할 수 있다..
· CS/network
인터넷의 다양한 웹사이트를 살펴보면 도메인을 입력하면 웹사이트에 연결된다. 이러한 당연한 기능을 막상 구현하려고 하면 생각보다 다양한 부분에서 의문이 생기게 된다. 예를 들어 node 프로젝트를 클라우드 서버(AWS EC2, GCP VM 등)에서 3000번 포트로 실행시키면 IP와 PORT를 통해서 접근해야 한다 ( http://127.0.0.1:3000와 같이 ) 이렇게 기본적인 서버 실행만 시킨다면 AWS 및 GCP 등 클라우드 서비스나 온프레미즈를 통해 웹 프레임워크를 실행시키면 깔끔한 도메인을 갖지 못하는 것을 알 수 있다. ( 뒤에 포트를 붙이거나, http로 연결된다거나 등 ) 이러한 것들을 해결해 줄 수 있는 것이 Nginx과 같은 웹 서버이다. nginx(엔진엑스)는 웹 서버로 HTTP와 ..
앞의 포스팅을 통해 라즈베리파이의 운영체제 설치 및 쿠버네티스 클러스터 환경 세팅이 끝났다. 이제 배포 지점이 될 클러스터의 세팅을 끝내고 본격적으로 CI/CD를 구현할 차례이다. 이번 포스팅에서는 깃허브에서 제공하는 Github Actions를 쓸 예정이다. 중간에 도커라이징하는 부분이 들어가는데, Dockerfile을 작성하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 관련하여 포스팅을 작성한 부분을 참고 링크로 달아두기만 하겠다. 참고 : https://marsboy.tistory.com/5 본론CI/CD란?CI/CD (Continuous Intergration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법을 ..
저번 포스팅에서는 라즈베리파이에 OS를 깔고 기본적인 네트워크 세팅을 마쳤다. ssh를 통해서 다양한 호스트에 접속할 수 있게 되었을 것이다. 이번 포스팅에서는 각 라즈베리파이 호스트에 K8s의 경량화 버전인 K3s를 설치한다. 노드로 쓸 컴퓨터의 스펙은 라즈베리파이 4 4GB이다.  이번 포스팅에서는 K3s의 설치 과정에 대해서 마스터 노드와 워커 노드를 구분하여 포스팅할 예정이다. 본론Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100MB K3s는 쿠버네티스와 완전히 호환되며 결과적으로 가볍게 쿠버네티스를 사용할 수 있게 하기 위해 만들어졌다. Kubernetes가 10글자이기 때문에 절반으..
marsboy
marsboy blog