분류 전체보기
-
Go with GraphQLTech 2021. 4. 4. 23:31
Golang을 이용하여 graphql API server를 만들고자 여러가지를 찾아보다가 gqlgen이라는 프로젝트를 발견하고, 어느정도 환경 준비를 해보며 느낀 점들을 정리합니다. 일단 필자는 이전에 typescript 기반으로 graphql API server를 구현한 경험이 있었고, 그 과정에서 prisma + Apollo server 조합을 이용했습니다. 해당 구현이 상당히 많은 사람에 의해서 이미 관리가 진행되었고, 대다수의 graphql 예시 코드가 javascript or typescript로 작성되기 때문에 자료가 다수 존재했습니다. subscription, relay에 이르기까지 다양한 기능까지 지원하는 library가 다수 존재합니다. 그러던 와중, Go라는 언어에 흥미를 느끼게 되었고..
-
chrome 확장 앱Tech 2021. 4. 1. 17:27
해당 글은 manifest version 3을 기반으로 작성된 글입니다. 혹여 version 2를 이용하셨다면, version 2에서 version 3로 migration 하면서 제가 적어놓은 글이 있으니 그것을 참고 하시기 바랍니다. Chrome Extension version migration from V2 to V3 최근 3일 정도를 chrome extension version 2에서 version3로 migration하면서 보낸 거 같습니다. ㅠㅠ 현재 side project로 진행하고 있는 내용을 chrome extension store에 배포할려고 하는 순간에 경고창이 뜨.. justlog.tistory.com 1. chrome 확장 앱의 구성 chrome extension에서 manifest..
-
GBN & Selective repeatNetwork 2021. 3. 24. 11:09
Pipelining 이전 Posting에서 정리한 RDT는 여러가지 일을 할 수 있지만, "너무 느리다"라는 문제 상황에 도달합니다. 그 이유는 바로 "stop-and-wait" 방식을 수행하기 때문입니다. packet을 전송하고, 이에 대한 ACK가 올 때까지 그저 기다리는 형태의 RDT는 네트워크의 성능 저하에 큰 원인이 됩니다. 따라서, 우리는 마치 pipe를 따라 흐르는 물처럼 막힘 없이 데이터를 보내고자 하는 방법을 고안해야 했습니다. 이 과정에서 위에서 언급한 바와 같이, 연속해서 데이터를 보내는 방식을 pipelining이라고 하고, 이로 인해 발생할 수 있는 추가적인 문제를 해결하기 위한 방법으로 2가지의 방식을 대표적으로 이해합니다. pipelining의 문제 가장 큰 문제는 데이터가 중..
-
RDF TurtleTech 2021. 3. 23. 13:17
자연어의 복잡한 텍스트 형태로 쓰여진 RDF graph를 datatype과 pattern을 생략 사용하여 표현하는 RDF 문법을 말한다. Example RELATIONSHEEP between Green Goblin and Spiderman. @base . @prefix rdf: . @prefix rdfs: . @prefix foaf: . @prefix rel: . rel:enemyOf ; a foaf:Person ; # in the context of the Marvel universe foaf:name "Green Goblin" . rel:enemyOf ; a foaf:Person ; foaf:name "Spiderman", "Человек-паук"@ru . green goblin은 spiderman..
-
A Tour of GoTech 2021. 3. 16. 19:55
Basics Packages 모든 Go program은 package로 이루어집니다. 그 중에서도 main package를 program의 진입점으로 사용합니다. package 안에서는 다른 package를 import하여 사용하는 것이 가능합니다. 또한, 기본적으로 사용 시에 사용하는 이름은 import한 파일의 마지막 path와 같습니다. import를 수행하는 것은 두 가지 방법이 있습니다. 아래 두가지 방법은 완벽하게 동일합니다. import "fmt" import "math" import ( "fmt" "math" ) 또한, package를 외부에 export하기 위해서 해주어야 할 것은 첫글자를 대문자 표시하는 것입니다. (Pascal) 만약, export를 하기 싫다면 첫글자는 소문자로 표기..
-
RDT ProtocolNetwork 2021. 3. 15. 19:52
Reliable Data Transfer Protocol(신뢰할 수 있는 데이터 전송 규칙)을 수립하기 위한 고민의 과정을 다음과 같이 정리합니다. 각 단계를 거치면서, 가정을 조금씩 걷어내며 신뢰도를 계속해서 높입니다. FSM 모든 예제를 FSM을 이용하여 표기하기 때문에, FSM에 대해서 이해하고 가는 것이 편합니다. FSM(Finite State Machine)이란, 유한한 관계에서 각 상태와 각 상태로 가기 위한 조건과 행동을 명시하는 도표를 말합니다. 기본적으로 다음과 같은 형태로 이루어지는 것이 일반적이다. 시작 지점을 화살표를 통해 명시하고, 어떤 상태에서 각 조건과 이에 따른 행동을 했을 때, 변하게 될 상태를 명시하는 것이다. RDT v1.0 가정 : 하위 통신 channel은 완벽하게 ..
-
Go를 이용한 web application 작성Tech 2021. 3. 14. 21:16
다루는 기술 data structure를 생성하고, 저장과 불러오기. net/http package를 이용해서 web application 만들기 html/template package를 이용해서 HTML template 처리하기 regexp package를 이용해서 input validation 하기 closure를 이용하기 기본 준비 gowiki라는 폴더를 생성하고, 그 안에 wiki.go 파일을 작성합니다. package main import ( "fmt" "io/ioutil" ) data structure 정의 page가 서로 연결되는 wiki는 각 각 title과 body(본문)라는 정보를 포함합니다. type Page struct { Title string Body []byte } Body를 ..
-
Golang 찍어먹어보기Tech 2021. 3. 14. 12:42
심심한 마음에 Go 언어를 한 번 찍어먹고자 합니다. 기본적으로 web backEnd 개발에 자주 쓰이는 언어로 각광받고 있고, Google에서 개발 및 유지보수하고 있으니 안정성이 보장됩니다. 또한, 현재 개발 환경에 많이 도입되고 있는 Docker와 Kubernetes의 기반 언어로 사용되는 만큼 꼭 한 번 써 볼 가치는 있다고 생각됩니다. 장점으로 많이 언급되는 것은 경량 쓰레드를 구축하여, 멀티 쓰레드 기반임에도 가볍다는 점과, 컴파일 속도가 빠르다는 점이 있고, 단점으로는 함수형을 추구하는 만큼 객체 지향과는 멀어지는 감이 있습니다. 물론 이는 package 단위로 관리를 하여 문제없다고 보는 시선도 많습니다. 또한, 국내에서 사용하는 업체가 거의 없다는 것이 큰 단점이라고 볼 수 있을 거 같습..