전체 글

전체 글

    [바미] 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 ..

    [바미] Go - Linked List에 대해 알아보자.

    안녕하세요. 이번에는 Linked List에 대해 알아 봅시다! Linked List는 연결된 리스트를 의미하는데 요소들을 서로 연결했다고 보면 되는데요. 배열은 하나의 통 메모리를 할당해서 그것을 나눠 쓰는 것인데 그것이 붙어 있다고 생각하면 되는데 Linked List는 붙어있는게 아니라 연결을 해놓은 것입니다. 배열은 한 덩어리로 존재하지만 Linked List는 서로 떨어져있는 메모리들을 한 줄로 연결해 놓은 것이라고 생각하면 됩니다. 연결하는 방법은 포인터를 이용하는 방법입니다. Linked List의 한 요소를 Node라고 하는데 이 Node에서 다음 Node로 포인터를 가지고 서로 연결을 시킬 수가 있습니다. 그러면 포인터를 가지고 어떻게 연결을 하는지 알아보겠습니다. 먼저 Struct를 하..

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

    이번에는 Instance에 대해 알아보죠. Struct의 복사에 대해 알아 봤었었는데요. 예를 들어 Student라는 struct가 있다 가정하에 type Student struct { name string age int grade int } 이렇게 구성되어 있는게 Student일 때 이것이 복사가 된다 했는데 a라는 애를 만들어서 name이 "aaa", age가 20, grade가 10일 때 마찬가지로 메모리 공간에 a라는 애가 있을 것입니다. 그런데 이 때 b = a를 해버리게 되면 b라는 공간을 만들어서 a의 값을 복사하게 됩니다. 코드 상으로 보겠습니다. package main type Student struct { name string age int grade int } func main() {..

    [바미] Go - Slice를 심도있게 알아보자.

    먼저 슬라이스 하나를 만들어 줍니다. package main import "fmt" func main() { var s []int s = make([]int, 3) s[0] = 100 s[1] = 200 s[2] = 300 fmt.Println(s) }

    [바미] Go - Slice가 왜 Slice인지 알아보자

    Slice가 왜 Slice인지 알아 보도록 해봅시다. Slice는 어떤 일부를 잘라내서 덜어내는걸 말하는데 Golang의 Slice는 일부를 잘라낼 수가 있습니다. 그럼 어떻게 하는지 살펴보죠. a [10]int 10개짜리 배열이 있다 가정하고 []를 이용해서 배열의 요소를 접근하는데 a [10]int a[3] 이렇게 하면 a의 4번째 배열요소를 가져올 것이다. 그래서 a가 1~10까지 10개의 요소를 가지고 있다고 하면 a[3] == 4 가 될 것 입니다. Slice도 마찬가지 입니다. a []int a[4:7] Slice는 []안에 ':'을 붙여서 숫자 2개를 적습니다. 이 뜻은 첫번째 부분은 시작 index이고 두번째 부분은 마지막Index 부분인데 5~6번째까지 가져옵니다. a[StartIndex..

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

    대부분의 현대 언어들은 동적 배열들을 하나씩 가지고 있는데 C++에서는 Vector, Java에서는 ArrayList, C#에서는 List, Python은 Golang과 똑같은 Slice, Golang도 마찬가지 입니다. 그렇다면 동적배열이 무엇일까요? 동적배열의 반대가 정적배열인데 정적배열(Fixed size array)은 길이가 바뀌지 않는 배열입니다. [10]int이렇게 사용합니다. 반대로 동적배열은 [] int 이렇게 표시하는데 길이가 변하는 배열이라 생각하면 됩니다. 그래서 처음에 하나가 되었다가 두개가 되었다가 세개가 되는 배열입니다. 그럼 이걸 어떻게 만들었는지 생각해보죠. 메모리가 늘어날 수는 없습니다. 메모리는 처음 할당받은 사이즈가 있으면 그 사이즈를 그대로 써야지 그 사이즈를 넘어서 ..

    [바미] Typescript jwt_로그인 구현하기.

    Web에서 로그인을 구현하는 방법에는 여러 가지가 있습니다. 일반적으로 Session과 Cookie를 통한 로그인 구현 방식을 떠올릴 수 있는데요. JWT는 앞의 두 가지와 약간 다른 것으로 최근에 많이 사용되는 인증(Authentication) 방법 중 하나 입니다. 특히 Web Application이나 Mobile Application에서 사용자 인증하기 편한 방법으로 많은 서비스에서 사용하고 있습니다. JWT가 무엇인지 아래에서 알아보겠습니다. JWT란 무엇입니까? JSON Web Token (JWT)은 JSON 객체로서 당사자간에 안전하게 정보를 전송할 수있는 작고 독립적 인 방법을 정의 하는 공개 표준 ( RFC 7519 )입니다. 이 정보는 디지털로 서명 되었기 때문에 검증되고 신뢰할 수 있습..

    [바미] TypeScript를 사용하여 실시간 채팅 앱 작성

    reference 참고 사이트 참고 사이트 Releasing v1.0.0 of a Socket.io-TypeScript Chat Project Some months ago I implemented a simple chat version using TypeScript language only. This project was presented in a local conference. luixaviles.com 위 사이트 들을 바탕으로 작성된 글입니다. TypeScript를 사용한 실시간 앱 : Web Sockets, Node & Angular 및 통합. 얼마 전에 TypeScript 언어 만 사용하여 간단한 채팅 응용 프로그램을 구현했습니다. 주요 목표는 클라이언트 측과 서버에서이 프로그래밍 언어를 사용하는..

    [바미] Date.now()에 대해 알아보자!

    Date.now() 메소드는 UTC 기준으로 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리 초를 반환합니다. 문법 var timeInMs = Date.now(); 설명 now() 메소드는 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리 초를 Number 형으로 반환합니다. now()는 Date의 정적 메소드이기 때문에, 항상 Date.now()처럼 사용하셔야 합니다. Polyfill 이 메소든는 ECMA-262 5판에서 표준화되었습니다. 아직 이 메소드를 지원하도록 갱신되지 않은 엔진들은 이 메소드의 미지원에 대한 차선책으로 다음 코드를 활용하실 수 있습니다. if (!Date.now) { Date.now = function now() { return new Date().g..