본문 바로가기
반응형

hwan121

Go언어 Restful을 위한 패키지 gin 설명 이번에 Toy 프로젝트로 go언어를 선택했고, 이를 가지고 restful 서버를 만들기로 했다. 찾으면서 나온 패키지들은 여러가지가 있는데, 가장 많이 사용하고, 내가 사용함에 있어 필요한 기능들을 제공해주는 프레임 워크를 선택하게 되었고 gin을 사용하기로 결정했다. gin framework https://github.com/gin-gonic/gin gin-gonic/gin Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself s.. 2021. 7. 4.
DNS Record란? 1. DNS Record DNS는 인터넷의 모든 사이트에서 IP 주소, 도메인 이름, 호스팅 및 기타 등록 정보를 포함하는 대규모 정보 시스템을 말합니다. 이 시스템이 만들어지기 전에 사람들이 웹 사이트에 액세스 할 수있는 유일한 방법은 IP 주소를 입력하는 것입니다. DNS Record는 DNS서버가 해당 패킷을 받았을 때 어떤식으로 처리할지를 나타내는 지침을 말합니다. DNS 레코드에는 서버가 요청에 응답하는 방법에 대한 다양한 구문과 명령이 포함되어 있습니다. 2. 일반적인 Record A record : 이 레코드는 도메인과 연결된 실제 IP 주소를 나타냅니다. CNAME record : 이 레코드는 현재 도메인 아래에 나열되거나 현재 도메인과 연결된 하위 도메인을 나타내는 데 사용됩니다. MX .. 2021. 6. 28.
Golang Array, Slice 사용법. (append) Golang에는 Array와 Slice가 있습니다. Array는 정적 배열, Slice는 동적 배열로 표현됩니다. 사실 이 둘의 차이는 선언할 때 배열의 길이를 정해주느냐, 정해주지 않느냐의 차이입니다. 하지만 이 차이가 정적과 동적 배열을 결정하게 됩니다. 1. Array package main import "fmt" func main() { var arr1 [5]int = [5]int{1, 2, 3, 4, 5} var arr2 = [3]int{1, 2, 3} arr3 := [4]int{1, 2, 3, 4} fmt.Println(arr1) //output : [1, 2, 3, 4, 5] fmt.Println(arr2) //output : [1, 2, 3] fmt.Println(arr3) //output.. 2021. 6. 27.
ARP통신에 대해서... 1. ARP (Address Resolution Protocol) ARP는 통신 프로토콜중 하나 입니다. ARP 통신의 목적은 MAC 주소를 알아내기 위해 사용되는 프로토콜 입니다. 사진에서 보는것과 같이 OSI 7 Layer중 2계층에 속한 프로토콜로 라우터 통신이 아닌, 브릿지, 허브, L2 스위치에서 사용되는 로컬 통신 입니다. 2. ARP?? IP?? ARP통신은 상대방의 IP주소는 아는데, MAC 주소를 모를때 사용합니다. 일반적으론 IP주소만 알면 통신이 가능하다고 생각을 하지만, 컴퓨터는 기본적으로 MAC주소를 가지고 통신하게 됩니다. 그럼 왜 IP주소가 아니라 MAC주소를 보고 통신을 할까?? IP주소는 유동적으로 변하고, MAC주소는 고정(static)이기 때문입니다. MAC주소는 NIC.. 2021. 6. 16.
Golang interface에 대한 설명.... Go는 기본적으로 상속을 지원하지 않습니다. 단, interface를 제공함으로써 추상화를 돕고, 객체들을 서로 연결시켜주는 역할을 해줍니다. 단, 상속이 아니기 때문에 dependency가 낮으며, 느슨한 관계가 됩니다. 이는 Go언어의 설계목적에 있는것이죠. 1. interface 선언방법 type Calculator interface {...} Golang의 guideline을 보면 interface를 선언할 때 시작문자는 대문자로, 단어 끝에는 -er로 끝나도록 만들라고 합니다. 즉, 어떠한 일을 하는 행위자를 표현하는것이 좋습니다. 기본적으로 golang의 struct는 상속이 없기때문에, insterface안에 선언된 함수들을 사용하려면 리시버라는 기능을 통해함수를 따로 정의해야 합니다. 2... 2021. 6. 6.
V8 Engine에 대해서....(메모리구조, 컴파일방식) 1. V8 Engine이란?? Google에서 만든 JavaScript 컴파일러로 C++언어를 기반으로 만들어 졌습니다. 때문에 독립적으로 실행이 가능하며, 다른 웹 브라우저 없이 JavaScript, Node.js 코드를 컴파일 할 수 있습니다. 2. JIT Compiler (Just-In-Time) V8은 JIT Compiler을 지원합니다. 일반적인 Compiler에는 동적 컴파일(인터프리터)와 정적 컴파일(Compiler)가 있습니다. JIT Compiler는 이 두개를 합친 것으로 실행시점에서 인터프리터 방식으로 바이트 코드를 생성합니다. 그 후 V8 Engine은 바이트 코드를 기계어 코드로 만들고, 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지합니.. 2021. 5. 31.
JavaScript 탄생 과 ECMAScript에 대해서 1. JavaScript 탄생 첫 탄생은 브랜든 아이크가 10일만에 설계한 것으로부터 시작합니다. 처음에는 Mocha라는 이름이었지만, 4달 만에 LiveScript라는 이름으로 개명하고 다시 3달 후에는 JavaScript라는 이름이 되어 오늘날까지 이어지고 있습니다. JavaScript라고 지은 이유는 Java의 유명세를 타서 묻어가려고 의도적으로 만들었다고 합니다. 해당 언어는 웹 브라우저 내에서 주로 사용되며, node.js를 통해 Backend도 만들 수 있게 되었습니다. 뿐만아니라 라즈베리파이에도 사용이 가능하며, 여러곳에서 사용될 수 있는 언어로 발전했습니다. 2. ECMAScript ECMA International 이라는 국제 표준화 기구가 있습니다. 표준화 시킨 대표적인 것들은 JSON.. 2021. 5. 31.
Golang의 fmt.Print는 heap으로 간다? Golang에는 fmt라는 패키지가 있습니다. 그리고 fmt.Print 를 사용하여 사용자에게 출력해주죠. 하지만 fmt를 사용하여 변수를 출력하면 해당 변수는 stack에서 heap으로 가버리게 됩니다. 다음 예시를 봅시다. package main import "fmt" func main() { i := 10 fmt.Println(i) } $ go build -gcflags '-m' struct.go # command-line-arguments .\struct.go:7:13: inlining call to fmt.Println .\struct.go:7:13: i escapes to heap .\struct.go:7:13: []interface {}{...} does not escape :1: .this.. 2021. 5. 23.
Golang Closure(클로저)란? (인라인과 메모리 할당 설명) Golang 에서는 JavaScript에 있는 클로저의 기능이 존재합니다. 우선 클로저에 대해 설명하자면.... 클로저는 함수가 종료되도 함수 안에 있는 변수가 사라지지 않고, 계속 존재하며 사용할 수 있도록 해주는 것이 클로저입니다. 이렇게 읽어보면 정말 쓸대없고, 왜 사용하는지, 왜 존재하는지 이유를 모릅니다. 천천히 설명해보겠습니다. 1. Golang Closure package main func closure() func() { var i int = 0 return func() { i++ println(i) } } func main() { next := closure() next() next() next() } //output : 1 2 3 클로저는 기본적으로 일급함수(람다함수)랑 같이 사용됩니다.. 2021. 5. 23.
Golang 함수, 익명함수 사용법. Golang의 함수, 익명함수 사용법입니다. Golang은 Lambda라는 표현을 사용하지 않습니다. 뭐.... 익명함수나 Lambda나 결국 같은 놈이니깐요..... 1. 함수 package main import ( "fmt" ) func add(a int, b int) int { return a + b } func main() { var a int = 10 var b int = 20 fmt.Println(add(a, b))//output : 30 } 이런식으로 함수를 정의할 수 있습니다. Golang의 함수는 이런식으로 구성되어 있습니다. 별거 없죠..... 하지만 Golang의 특징중 하나는 return 값을 여러게 줄 수 있다는 것입니다. 2. 함수 리턴 여러개 package main import.. 2021. 5. 16.
Golang 구조체 설명 Golang에는 class 개념 대신 struct개념이 있습니다. 쉽게말해 C나 C++에 있는 struct입니다. 하지만 Golang에는 다른 OOP와는 다르게, class의 역할중 생성자, 맴버변수 선언을 하지 못합니다. 또한 private, public이라는 개념이 따로 없으며, pirvate과 public이라는 선언대신 해당 struct를 외부에서 가져다 사용하거나 내부에서 사용할때의 기준을 정할 수 있습니다. 선언 방법은 다음과 같습니다. 1. 스택에 구조체 선언 package main import "fmt" type A struct { name string num int } func main() { a := A{} a.name = "hwan" a.num = 10 } 위와 같이 선언하면 사용할 수.. 2021. 5. 2.
Go "fmt" 패키지의 사용법과 Print, 내장함수 println 차이 Golang 에서는 "fmt" 라는 기본적인 패키지를 제공해줍니다. 처음 Golang을 접하게 되면 당연 출력하는 것이 "Hello warld"라고 생각합니다. 다음 예제를 보시죠. package main import "fmt" func main() { println("hi") fmt.Println("fmt") } //Output hi fmt fmt 패키지를 사용해 Println이라는 메소드를 호출하여 흔히 문자열을 출력합니다. 그럼 println 은 뭘까요?? fmt.Println()은 stdout 으로 표준 문자열 출력을 제공하는 함수입니다. println()은 내장된 함수로 stderr를 출력해주는 내장함수 입니다. 때문에 println()은 주로 디버깅 할때 유용하다고 합니다. 그럼 fmt 패키지.. 2021. 4. 18.
AWS S3에 대한 설명 1. AWS S3란? Simple Storage Service의 약자로 (S가 3개) Paas 방식의 서비스 플랫폼입니다. 쉽게 말해서 NoSQL 데이터 베이스인데, 해당 데이터 베이스의 관리를 AWS에서 해주고 기능만 제공해주는 서비스입니다. 2. S3의 동작 방식 S3는 기본적으로 버킷(Bucket)이라는 공간에 데이터를 객채 형태로 저장합니다. 이게 무슨말이냐...... 이런식으로 AWS S3는 사용자 요청에 bucket이라는 하나의 저장공간을 제공해줍니다. 쉽게 생각해서 하나의 디렉토리? 하드디스크? 라고 생각하면 됩니다. 용량이 무제한인..... 그리고 이 bucket의 관리는 S3가 해주는 것이죠. user는 해당 bucket으로 데이터를 저장하고, 저장된 데이터를 꺼내쓰면 됩니다. 3. S3.. 2021. 4. 8.
Ansible로 CentOS 7 wordpress, mysql 설치하기 예제 코드는 제 깃에 올려놨습니다. github.com/dnfwlq8054/Ansible dnfwlq8054/Ansible Contribute to dnfwlq8054/Ansible development by creating an account on GitHub. github.com 1. 구상도 2. OS및 계정 셋팅 Master node OS : CentOS 7 IP : 192.168.0.18 User name : hwan User group : wheel Hostname : master WebServer OS : CentOS 7 IP : 192.168.0.19 User name : hwan User group : wheel Hostname : node01 DBServer OS : CentOS 7 IP.. 2021. 4. 7.
Go lang 시작하기(VSCode 셋팅) Go lang 셋팅을 해보자. 1. 패키지 다운 golang.org/ The Go Programming Language Download Go Binary distributions available for Linux, macOS, Windows, and more. // You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") } Hello, World! Conway's Game of Life Fibonacci golang.org 해당 공식 홈페이지에서 다운로드를 누른 후 운영체제 환경에 맞게 설치해줍니다. 그 후 설치파일을 실행시켜 설치를 완료합니다.. 2021. 4. 5.
반응형

스킨편집 -> html 편집에서