본문 바로가기
반응형

프로그래밍174

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 for문 사용법!! Golang에선 for문 사용법이 좀 여러가지가 있습니다. 그리고 Golang에선 while문이 없죠. 이건 Golang의 정신? 이런 의미로, Golang의 목적이 있죠. Golang은 기능이 비슷한 것들을 모두 지웠습니다. 예를 들면 ,if문과 삼항 연산자, for문과 while문 등.... Golang에선 삼항연산자와 while문이 없죠. 또한 if문과 for문 사용시 반드시 중괄호( { } )를 입력해줘야합니다. 본론으로 돌아와서 for문에 대해 알아봅시다. 1. for 변수; 조건; 연산자 package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println(i) } } //아래와 같은 형식으론 안됩니다. for var i i.. 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.
Ansible Inventory 작성방법 Ansible Inventory에 대해 작성해 볼까 합니다. 우선 Inventory의 문법과 설정파일에 대해 설명 해보겠습니다. 1. Inventory 작성 방법 Inventory는 확장자 명이 따로 없습니다. 따라서 파일 이름은 본인 마음대로 하셔도 되지만, 추후 관리를 위해 Inventory파일은 따로 Inventory라고 명시해 주시는 것이 좋습니다.!! Inventory파일은 확장자가 따로 필요하지 않으며, 기본적인 host 주소들의 묶음이라 생각하시면 됩니다. 추가로 .yml 파일로도 inventory를 작성 가능하지만, 저는 보통 방법으로 설명하겠습니다. mail.example.com//이렇게 하면 Ad-hoc이나 Playbook에서 해당 호스트 네임으로 명령어 실행가능 //호스트 네임과 IP.. 2021. 4. 1.
Ansible(앤서블)에 대하여.... (간단한 설명) 서버를 운용하다보면 셋팅이 필요한 경우가 있습니다. 예를들면 패키지 설치, 응용프로그램 설치 등... 설치가 끝나면 해당 프로그램에 맞게 셋팅도 해줘야 합니다. apache라면 '/var/www/html/' 에 위치해 있어야 겠죠. nginx 라면 '/usr/share/nginx/html' 에 위치하겠죠. 클러스터를 구축한다고 가정해보겠습니다. 즉, 동일한 기능을 하는 웹 서버를 5대 셋팅한다는 뜻입니다. 5대라면 충분히 서버 하나하나에 접속해서 셋팅할 수 있습니다. 시간이 좀 걸리더라도요... 그럼 100대, 200대 라고 생각해봅시다. 또한 위 서버들의 셋팅은 전부 다 다릅니다. 한 그룹은 웹서버, 다른 그룹은 DB, 다른 그룹은 다른 웹서버 등.... 거의 하루 이틀 날잡아서 될 양이 아니죠?? 특.. 2021. 4. 1.
리눅스 파이프(pipe) 에 대한 설명 ( '|' ) 리눅스에서 저희는 파이프( | )를 자주 사용합니다. 이 파이프에 대해 알아보려고 합니다. 그럼 우선 리눅스 명령이 어떤식으로 실행되는지 알아야 합니다. 1. 리눅스 쉘 사용자는 리눅스 커널과 통신하기 위해서 리눅스 쉘이라는 녀석을 사용합니다. 정확히는 커널과 운영체제를 이어주는 녀석입니다. 기본적으로 리눅스를 사용하는 환경은 /bin/bash 라는 쉘을 사용합니다. 일명 배쉬쉘.... 자신이 어떤 쉘을 사용하는지 확인하려면 다음과 같은 명령어를 입력해주시면 됩니다. # echo $SHELL 저희가 이런 쉘을 사용하기 위해서 터미널 창을 열게 됩니다. 이런 터미널은 하나의 프로세스입니다. 그리고 'ls', 'cd', 'cat' 등의 명령어는 이 터미널이 갖고있는 정보를 기준으로 실행되게 됩니다. 2. 리.. 2021. 3. 31.
DNS에 대한 설명(디테일 하게....) DNS란 무엇일까요?? Domain Name System의 약자로 인터넷 주소창에 Host Domain Name을 입력했을 때(ex, naver.com, google.com 등..) 해당 문자를 IP주소로 변환해 주는 시스템을 말합니다. 저는 URL창에 Host Domain Name을 입력했을 때 어떤식으로 해당 IP주소를 받아오는지, DNS서버의 구조는 어떻게 되어있는지, 좀 더 효율적인 방법을 위해 어떤걸 사용하는지 등에 대해 상세히 적어보자 합니다. 1. 기지국 DNS서버 (Local DNS Server) 저희가 URL에 Domain Name을 입력했을 때 해당 IP를 찾기위해 가장먼저 찾는 DNS서버입니다. 기본적으로 컴퓨터의 LAN선을 통해 인터넷이 연결되면, 인터넷을 사용할 수 있게 IP를 할.. 2021. 3. 29.
AWS Lambda 설명 AWS 에서 Lambda라는 기능이 있습니다. 저는 이 Lambda에 대해 알려보려고 AWS 공식 홈페이지에 들어가서 글을 읽어 봤지만.... 도무~~ 지 무슨 소리인지 전혀 모르겠어서 마구잡이로 자료를 찿고 이해하는데 성공했습니다. AWS 공식 홈페이지에서 Lambda는 다음과 같이 설명하고 있습니다. "AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다." 서버를 프로비저닝? 코드를 실행? 어디서 무슨 코드를 실행 한다는거지? 컴퓨팅 서비스? 뭐가 컴퓨팅 서비스지? 이런 것들에 대해 하나하나 짚고 넘어가면서 Lambda가 어떻게 사용되는지 알아보도록 하겠습니다. 1. AWS Lambda 프로그래밍 공부를 하다보면 Lambda 함수에 익숙하신 .. 2021. 3. 22.
AWS T2의 CPU 크레딧이란? AWS에는 CPU Credit이라는 기능이 존재합니다. 기본적으로 EC2에서 인스턴스를 만들 때 tier type 별로 각각 성능이 다릅니다. 이렇게 tier와 type별로 cpu 성능이 다르게 부여됩니다. tier가 올라갈 수록 가격도 올라가지요. 이런 EC2의 CPU에 Boost 기능이 있습니다. 흔히 일반적인 컴퓨터에서 사용되는 인텔 CPU의 부스터 쿨럭을 생각하시면 됩니다. AWS에서는 해당 CPU Boost기능을 제안하고 있는데, 이에 대해 알아보고자 합니다. 1. CPU Credit? AWS에서 CPU Credit은 1분동안 CPU Boost를 해줄 수 있는 갯수를 의미합니다. Credit이 사용되는 원리는 다음과 같습니다. 1개의 CPU의 사용률이 100%가 되었을 때, CPU는 Boost상.. 2021. 3. 22.
반응형

스킨편집 -> html 편집에서