전체 글

전체 글

    [바미] JAM Stack이란 무엇일까?

    JAM Stack 개념 정리하기 SSR 도입위해 NextJS 를 검토하던중 JAM Stack 개념을 알게되어 이를 정리 해보고자 한다. JAMstack WTF JAM stack 은 Javascript, Api, Markup Stack 의 약자이다. 약자에서 알수 있듯 Javascript 와 API 그리고 Markup(HTML) 만으로 이루어진 웹의 구성을 이야기하는 것인데, 우리가 알고 있는 SPA 과는 비슷하지만 다르다. SPA (Single Page Application) 와 CSR (Client Side Rendering) 웹은 보통 완성된 Static HTML 와 CSS 를 네트워크로 전달 받아서, 화면을 보여준다. 서버가 동적으로 HTML을 생성할 수 있게 되면서 Server Side Rende..

    [바미] 오픈 프로필 등록 방법

    1. 먼저 해당 버튼을 터치 해줍니다. 2. 그러면 다음과 같은 버튼? 들이 뜰 텐데 오픈채팅을 선택해줍니다. 3. 그 후 오픈프로필을 선택 한 뒤 만들기 버튼을 눌러줍니다. 4. 그럼 다음과 같은 화면이 뜹니다. 사진, 닉네임을 써 준 뒤 완료 버튼을 눌러줍니다. 톡 프로필로만 참여 허용은 체크 해제 해주세요. 5. 그러면 오픈프로필이 정상적으로 생성되는데 오픈 톡방으로 들어온 뒤 자신의 프로필을 선택합니다. 6. 아까 만들었던 오픈 프로필을 선택해주면 됩니다.

    [바미] PS에 대해 알아보자!

    ps ps 는 프로세스의 상태를 확인하는 명령어이다. 현재 특정 프로세스가 실행되고 있는지 실행되는 프로세스가 어떤 pid를 갖고 있는지 등을 확인하는데 많이 쓰이며, 옵션을 통해 CPU와 메모리 점유율등의 상세 정보도 확인할 수 있다. ps [옵션] [root@localhost ~]# ps PID TTY TIME CMD 1340 tty1 00:00:01 bash 1500 tty1 00:00:00 ps 옵션 옵션 내용 -A 모든 프로세스를 출력한다. a (BSD계열) 터미널과 연관된 프로세스를 출력하는 옵션이다. 보통 x 옵션과 연계하여 모든 프로세스를 출력할 때 사용한다. -a 세션 리더(일반적으로 로그인 셸)을 제외하고 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력한다. -e 커널 프..

    [바미] 프로세스와 커널에 대해 알아보자!

    프로세스와 커널 프로세스(Process) 는 커널의 관리하에 현재 시스템에서 동작중인 프로그램으로 커널은 프로세스를 관리하기 위해 각 프로세스에게 PCB를 할당하고 init프로세스는 부팅 시 가장 먼저 실행되어 시스템에 설정을 하는 초기화 프로세스 입니다. PCB(Process Control Block)는 프로세스 고유번호(PID)입니다. 프로세스 종류 프로세스에도 종류가 있는데 아래의 표와 같습니다. 프로세스명 설명 데몬 프로스세스 사용자에게 특정기능이나 서비스를 제공하는 프로그램입니다. 부모 프로세스 부모 프로세스는 다른 프로세스를 생성하며 init을 제외한 모든 프로세스는 부모 프로세스를 가지고 있습니다. 고아 프로세스 자식 프로세스보다 부모 프로세스가 먼저 종료가 되었을 때 자식프로세스는 고아 프..

    [바미] Go - Tree에 대해 알아보자!

    안녕하세요 오늘은 Tree에 대해 알아보려 합니다. Tree란 말 그대로 나무라는 의미인데 위 그림처럼 줄기가 있고, 가지가 뻗어 있고, 가지 끝에 나뭇잎이 달려있는 형태를 가지고 있는 자료구조 라고 해서 Tree라고 합니다. 하나에서 시작해서 여러 갈래로 나뉘어 가는 형태가 Tree입니다. Tree의 형태를 보면 나무를 뒤집어 놓은 형태인데 아래와 같습니다. 맨 위에서부터 시작하는데 맨 처음 시작하는 노드를 Root 노드(node)들과 노드들을 연결하는 하는 부분을 간선(edge) 각 간선 끝에는 노드가 연결 되어 있는데 이 노드를 자식노드(Child Node) 자식노드 상위에 있는 노드를 Parent Node 라고 합니다. 이건 상대적인 개념인데 Root 노드는 모든 노드의 항상 부모가 되고, 자식노..

    [바미] Go - Packaging 과 Stack, Queue에 대해 알아보자!

    안녕하세요. 오늘은 Go의 Packaging 과 Stack, Queue에 대해 알아보겠습니다. 패키지(Package)라는 것은 어떤 모듈, 기능 등을 묶어 놓은 것을 의미 합니다. Go 자체가 가지고 있는 "fmt"라는 패키지가 있는데 "format"의 약자인데 이것은 출력과 관련된 것들을 묶어놓은 것이고, "math"라는 패키지가 있는데 수학과 관련된 함수들을 묶어 놓은 패키지 입니다. 이런 관련된 기능들을 묶어 놓은 것을 패키지(Package)라고 합니다. 이전에 Linked List를 만들었었는데 그 외에도 Stack, Queue, Tree, Heap들을 하나의 패키지로 만들어서 dataStruct라는 것으로 만들어 늘려가볼까 합니다. 먼저 지난 시간에 만들었던 Linked List를 패키지로 분리..

    [바미] 테스팅을 잘하자!

    데이터 입력 문제를 해결하니 또 다른 문제가 발생했다. 무한정의 데이터를 받으면 서버부하는 물론이고, 공격을 받았을 때의 서버 상태를 생각해보니 제한을 걸어야 했었다. 아무래도 회사일이다 보니 이런 부분은 나 혼자 독단적으로 결정하는 게 아니기 때문에 타 부서와의 조율이 필요했다. 그렇게 해서 나온 값은 64KB였다. 64KB이상이면 데이터를 받지않고, 내부에서 따로 관리하는 log파일에만 표시하기로 했다. 원래는 이렇게 하려 했었으나 아래와 같이 하면 어떤 값을 보냈었는지 조회할 수 없기 때문에 // body값 가져오는 함수. func bodycheck(w http.ResponseWriter, r *http.Request) ([]byte, int) { getlength := r.ContentLength..

    [바미] r.Body.Read()와 ioutil.ReadAll()의 차이점.

    log수집 서버에서 invalid character '\x00' in string literal라는 에러가 빈번하게 발생하여 원인을 찾아보니 r.body에서 읽어오는 값의 크기가 특정 크기보다 커지면 저 에러를 발생시킨 것입니다. 그래서 JSON Data가 짤리게 출력 되는 모습을 보여주어서 현재 보다 더 많은 Data를 받아 올 수 있도록 수정해 주어야 했습니다. 먼저 얼마만큼의 데이터를 받아 오는지 확인하기 위해 length값을 조회했더니 저 에러가 나지 않는 범위가 length값이 3836이였을 때 였습니다. 그 때 썼었던 코드는 다음과 같습니다. func bodycheck(w http.ResponseWriter, r *http.Request) []byte { getlength := r.Conten..

    [바미] Go - 묻고 더블로 가는 Double Linked List에 대해 알아보자!

    안녕하세요. 오늘은 Double Linked List에 대해 알아보고자 합니다. 우선 Double Linked List를 만들기 전에 지난 시간에 했었던 코드를 정리해보죠. AddNode와 RemoveNode를 따로 했었는데 이거를 하나의 struct를 정의해서 그 struct안에 몰아넣도록 해줍니다. 현대 프로그래밍 언어에서는 결합성을 올리고 의존성을 내리는데요. 관련되어 있는 것들은 하나로 묶어서 하나의 모듈로 만들고, 관련 없는 것들 끼리는 서로 의존관계가 생기지 않도록 의존성을 끊는다는 의미입니다. 그래서 AddNode와 RemoveNode는 서로 관련이 있기 때문에 하나의 struct로 묶겠습니다. type LinkedList struct { root *Node tail *Node } func ..