Posts
먼저 상기의 화면이 Acme 에디터이다!! 사전에 설명할것이 너무나 많은 에디터중 하나이며, 필자가 가장 좋아하는(?) 에디터이기도 하다. 데니스리치, 켄톰슨, 롭
Github에서 제공하는 Pages기능을 이용해서, 블로그를 무료(??)로 이용하는 방법에 대해서 설명합니다. 최초 설치 github.com 에서 컨텐츠를 생성할 계정을 생
Snorkel Embedded Web Compile on x64 Linux Snorkel Library는 32bit 이므로, 필수 라이브러리 설치 yum install glibc.i686 glibc-devel.i686 libzip.i686 libzip-devel.i686 gcc -m32 -lsnorkel32 -lrt -lm -lnsl -lpthread src.c 로 컴파일!! Snorkel Example #include <stdio.h> #include <stdlib.h> #include <snorkel.h> void syntax(char *pszProg) { fprintf(stderr, "Syntax Error:\n"); fprintf(stderr, "%s [-i <index_file_directory>] [-p
Install BMC Control-M Minimal 설치(개발툴 모두 설치: 추가적으로 Java Developement는 설치) /etc/hosts 파일 생성(반드시!!) groupadd dba useradd -g dba -s /bin/csh ctmuser useradd -g dba -s /bin/csh emuser chmod 755 /home/ctmuser chmod 755 /home/emuser /BMC/setup.sh
HUGO Server Mode Start & Option cd /root/Hugo/xenostream nohup hugo server --baseURL=http://192.168.0.10/ --port=8088 --bind=192.168.0.10 & (192.168.0.10서버에서 실행중이며, 포트는 8088로 실행하며 기본 URL은 http://192.168.0.10/ 작동) HUGO Post Add /xenostream/contents/post 디렉토리에서
diskpart로 부팅 USB만드는 순서 윈도우에서는 모든 디스크 관련 작업을 내장된 diskpart 툴로 처리할 수 있습니다. 과거 fdisk + format툴의 합체본이라고 생각
Go Oracle Driver Setting How To Go - Lang : Oracle Access used by go-oci8 on Linux Official URL #1. Instant Client 설치 instantclient-basic-linux.x64-11.2.0.4.0.zip instantclient-sdk-linux.x64-11.2.0.4.0.zip unzip 으로 모두 압축해제 ( tar xvpf ) #2. root권한으로 심볼릭 링크 생성 cd /home/pjkwon/Go/instantclient_11_2 ln -s libclntsh.so.11.1 libclntsh.so #3. root권한으로
Go언어로 웹 프로그램 만들기 Perface Go언어를 학습함에 있어서 주제를 하나 정한 후, 여러가지 기술을 사용해서 학습하는 방법이 가장 효율적이라 생각되며, 이에, 웹 응
Intro 먼저, Go언어의 세계로 오신걸 환영합니다!! 21세기 C언어라고 불리는 Go언어는 빠른 컴파일 시간과, 실행파일 내에 가베지 컬렉터를 내장하고 있으며, 동
Installation 3가지 설치 방법 개발자의 컴퓨터에 Go언어를 위한 개발환경을 구축하는 방법에는 여러가지가 존재합니다. 그중 대표적인 3가지 방법에 알아보도록 하겠습니다.
$GOPATH 및 작업 디렉토리 $GOPATH Go 명령어를 이용할 경우 대부분의 작업은 $GOPATH라는 환경변수에 절대적으로 의존하게 됩니다. 설치시 사용했었던, $GOROOT 환경변수와는 별
Go Command Go 명령어 Go 언어는 명령어로만 모든 작업을 할 수 있는 환경을 제공 합니다. 바로, go 명령어로 수행합니다. 명령창에서 go 명령을 입력하면 다음과 같습니다. &l
Go Development Tools
01_Summary
Basic Knowledge Go 언어는 C언어를 매우 닮은 시스템 프로그래밍이 가능한 컴파일형 언어 입니다. 컴파일 속도가 C언어보다 빠르며, 언어에서 사용하는 키워드도 겨우 25개뿐 입
Hello, Go!! Go언어를 이용해서 응용 프로그램을 작성하기 전에 먼저 기본이되는 프로그램으로 시작 하도록 하겠습니다. 집을 짓기 전에 건물의 기초를 알아야 하듯이, 프로그
Go Foundation 이 장에서는 변수, 상수, 기본타입과 Go 프로그램의 여러가지 기본적인 기법에 대해서 소개 합니다. 변수 Go 언어에서 변수는 여러가지 방법으로 선언될 수 있습니다
Control Statements and Functions 이 절에서는 Go 언어의 흐름 제어및함수`에 대해서 설명 합니다. 흐름 제어 흐름 제어는 프로그래밍 기능중에서 가장 중요한 기능입니다. 왜냐하면 흐름제어를
Struct Go 언어는 C나 다른 언어와 마찬가지로 서로 다른 형태의 속성이나 필드의 컨테이너로 새로운 형태를 선언 할 수 있습니다. 예를 들어, 개인의 엔티티를 나타내는 person 형을
Object Oriented 앞의 두 장에서 함수와 struct를 설명 했습니다. 함수를 struct의 필드로 처리할 수 있습니다. 이번장에서는 함수의 또 다른 형태에 대해서 설명 합니다
Interface interface Go언어에는 아주 섬세하게 설계된 interface라는 것이 있습니다. 이 기능은 객체지향 프로그래밍과 효율적인 프로그램 구성시에 매우 편리하게 사용 됩
Concurrency Go언어를 21세기의 C언어라는 사람도 있습니다. Go 언어는 설계가 간단하고, 21세기 환경에서 가장 중요한 것은 멀티 스레드이기 때문 입니다. Go는 언어차
Summary
Web Foundation Web 프로그래밍의 기초를 공부하는 것이 이 책을 읽는 주요 목적입니다. 사실 Go언어를 사용해서 Web 응용 프로그램을 프로그래밍하는 것이 책의 목적입니다. Go언
Web working Principles 일반적으로 웹페이지를 방문할 경우 웹 브라우저를 열고 해당 주소를 입력한 후 엔터키를 누르면, 당신이 보고 싶은 콘텐츠가 브라우저 화면에 표시 됩니다. 이러한
Build a Simple Web Server 앞 절에서 Web은 http 프로토콜에 기반한 서비스라고 설명 했습니다. Go 언어에서는 net/http 패키지를 통해서 웹에 대한 전반적인 기능을 제공하고 있습니다. http 패
How Go Works with Web 앞 절에서는 Go 언어를 이용해서 Web 서비스를 작성하는 방법에 대해서 설명했습니다. 바로 net/http 패키지를 사용하면 쉽고 간편하게 작성 할 수 있을을 알게 되었습니
Get Into http Package 앞 절에서 Go 언어에서 Web 작업환경을 제공하는 것과 개발 흐름에 대해서 설명했습니다. 이 절에서는 http 패키지에 대해서 좀더 알아보도록 하겠습니다. net/http 패키지
Summary 이 장에서는 HTTP 프로토콜과 DNS 이름 확인 과정 어떻게 처리하고, go언어를 이용해서 간단한 web server를 구현 하는 방법에 대해서 설명했습니다. net/http 패키지의 소
HTTP Form Form은 Web 응용 프로그램을 작성할 때 가장 자주 사용되는 도구 입니다. Form을 통해서 편리하게 사용자가 서버와 데이터를 교환 할 수 있습니다. 만약 Web 개발
Process form inputs 먼저 사용자가 입력한 양식 전송의 예를 살펴 보겠습니다. 다음과 같은 양식의 내용이 있다고 가정 합니다. 다음의 내용을 login.gtpl파일로 생성합니
Validation of inputs 사용자가 입력한 어떤 정보도 믿지말라!! Web 개발시에는 상기와 같은 원칙이 있습니다. 따라서 사용자가 입력한 정보를 검증하고 필터링하는 것은 아주 중요한 작
Cross Site Scripting 현재의 홈페이지는 대량의 동적컨텐츠를 포함해서 사용자의 반응에 민감하게 처리할 수 있도록 되어 있습니다. 예전에 비하면 아주 복잡하게 처리되고 있는 실정입
Sublime Text3 3101 Portable ctrl +` (Tilde)터미널 오픈 패키지컨트롤 설치 import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h))
Vim Go Plugin Installation Guide vim-go 기능 syntax highlighting gocode를 이용한 자동완성 gofmt를 이용한 자동 포멧팅 godoc를 이용한 go 언어 도움말 GoRUN, GoBuild등의 명령을 이용해서
권필진의 개인적인 블로그 입니다. 본 블로그는 별도의 메뉴가 없습니다. 먼저 사이트 상단의 아이콘으로 조작합니다. 먼저 상단 그림에서 3개의 아이콘이 존재합니다
Go by Example - Kor Edition Go언어는 프로그램을 단순하게 작성하고, 빠르고, 안정적인 오픈소스 프로그래밍 언어입니다. Go by Example(영문)은 예제를 통해서 빠르
Hello World 첫 번째예제는 화면에 Hello world메세지를 출력하는 예제입니다. 다음은 코드입니다… package main import "fmt" func main() { fmt.Println("Hello world") } 프로그램을 실행하려면, 상기
Values Go언어는 다양한 데이터값을 다룰수 있습니다. 문자열, 정수형, 실수형, 불 등을 지원합니다. 몇가지 예를 통해서 알아보겠습니다. package main import "fmt" func main() { fmt.Println("go" + "lang") //
Variables Go언어에서는 반드시 명시적으로 변수를 선언해서 사용해야 합니다. 또한 선언만 하고 사용하지 않는다면 컴파일 에러가 발생합니다. 번거로울 수 있겠지만, 이것
Constants Go언어에서는 문자열, 불, 숫자에 대하여 상수형 변수를 지원합니다. 상수는 선언시에 초기화 해야하며, 한번 값을 지정하면 값을 변경할 수 없는 변수를 의미합니
For for 키워드는 Go언어에서 제공하는 유일한 반복문입니다. 3가지 형식으로 사용할 수 있습니다. package main import "fmt" func main() { i := 1 for i <= 3 { // [1] fmt.Println(i) i = i + 1 } for j := 7;
If / Else Go에서는 다른 언어와 같은 방법으로, if문과 else문으로 분기를 수행할 수 있습니다. 하지만, 다른언어와는 향상된 방법으로 사용할 수 있습니다. 예
Switch switch문장은 여러개의 조건 분기를 처리할 경우에 사용하면, 읽기도 편하고 이해하기도 쉽습니다. package main import "fmt" import "time" func main() { i := 2 fmt.Print("write ", i, " as ") switch i { // [1] case
Arrays Go언어에서 배열은 크기가 정해진 동일한 타입의 변수의 집합니다. package main import "fmt" func main() { var a [5]int // [1] fmt.Println("emp:", a) a[4] = 100 // [2] fmt.Println("set:", a) fmt.Println("get:", a[4]) fmt.Println("len:", len(a)) // [3] b := [5]int{1, 2, 3, 4, 5} // [4] fmt.Println("dcl:", b) var twoD[2][3]int
Slices Go언어에서는 슬라이스라는 특수항 데이터 타입이 존재합니다. 배열과 유사하지만 좀더 유연하게 데이터를 처리할 수 있습니다. package main import "fmt" fucn main() { s := make([]string, 3) // [1] fmt.Println("emp:",
Maps 맵(Map)은 Go언어에서 기본적으로 제공하는 연관된 데이터를 다룰 수 있는 자료구조입니다. 이 자료형은 다른언어에서는 해쉬(hash)값이나 사전(D
Range range키워드는 복합데이터구조(배열,슬라이스, 맵등)의 데이터를 나열할때 유용하게 사용할 수 있는 키워드입니다. 이미 배운 이러한 데이터구조의 항목
Functions 함수는 Go언어의 핵심중의 핵심 입니다. 몇가지 예제를 통해서 간단하게 함수에 대해서 알아보도록 하겠습니다. package main import "fmt" func plus(a int, b int) int { // [1] return a + b // [2] } func
Multiple Return Values Go언어에서는 다수개의 결과값을 리턴 할 수 있는 기능을 기본적으로 제공합니다. 이 기능이 Go언어를 특징짓는 기능 중 하나이기도 합니다. 예를들면, 특정
Variadic Functions 가변함수라는 것은, 함수를 호출할때 불특정 다수개의 인자를 전달할 수 있는 기능입니다. 대표적인 것이, 지금까지 무심코 사용해왔던, fmt.Printl
Closures Go언어는 익명함수를 지원하며, 이것을 클로저(Closures)라고 부릅니다. 익명함수는 함수 내부에서 이름없는 1회용 함수를 임시로 만들어서 사용하
Recursion Go언어는 재귀함수(Recursive Function)를 지원 합니다. 고전적인 예제인 팩토리얼값을 구하는 예제로 설명하겠습니다. package main import "fmt" func fact(n int)
Pointers Go언어는 c/c++언어와 같이 포인터를 언어차원에서 지원합니다. 프로그램에서 값이 저장된 실제 주소값(Reference`)을 전달할 수 있으며, 함
Structs Go언어에서는 필드의 집합체인 구조체(struct)를 지원합니다. 레코드 단위로 데이들을 한개의 단위로 다뤄서 처리할 경우 아주 유용한 자료 구조입니다.
Methods Go언어에서는 객체지향 프로그래밍언어에서 지원하는 메소드를 구조체와 함께 사용해서 처리할 수 있도록 지원합니다. package main import "fmt" type rect struct { width, height int } func (r *rect) area() int {
Interfaces 인터페이스(Interfaces)는 메소드 집합에 붙여진 이름이라고 생각하시면 됩니다. package main import "fmt" import "math" type geometry interface { // [1] area() float64 perim() float64 } type rect struct { // [2] width, height float64 } type
Errors Go언어에서는 에러또한 명시적으로 사용하는 하나의 형태입니다. 암시적으로 함수의 반환값으로 포함되기도 합니다. Java / Ruby와 같은 언어의 예외와 C언어
Goroutines goroutine은 경량적인 실행 스레드이며, Go언어차원에서 지원하는 병렬실행 기능입니다. package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() {
Channels 채널(Channels)은 동시 실행중인 두개의 고루틴사이에 연결된 통신용 파이프라고 생각하시면 됩니다. 특정값을 채널을 통해서 동시 실행중인 고루틴간에
Channel Buffering 기본적으로 채널은 버퍼를 사용하지 않습니다. (unbuffered) 이말은 특정값을 채널에 보낸 후(chan <-), 정상적으로 수신할때만(<- chan) 다른 메세지를 전송할 수 있
Channel Synchronization 고루틴들 간에 동기화를 채널을 통해서 제어할 수 있습니다. 다음예제는 특정 고루틴이 작업을 완료할때까지 대기하는 방법에 대해서 설명합니다. package main import "fmt" import "time" func
Channel Directions 함수의 인자로 채널을 전달할때는, 채널로부터 메세지를 받는 용도인지 보내는 용도인지를 정할 수 있습니다. 이것은 프로그램의 용도를 분명하게하고 보다 안전하
Select Go언어에는 채널이라는 고루틴간의 통신수단이 제공됩니다. select문은 이러한 채널에서 어떤채널에 어떠한 메세지가 오면 처리할 수 있는 채널전용 분기문
Timeouts Timeouts은 외부자원에 접근하거나 특정시간을 대기할 경우에 중요하게 사용됩니다. Go언어에서 Timeouts은 select와 channel
Non Blocking Channel Operations 기본적으로 채널에 데이터를 보내고 받는 행위는 블럭모드(Blocking Mode)로 작동합니다. 그러나, select문과 default절을
Closing Channels Closing Channels은 더이상 채널을 이용한 작업을 하지 않는다는 표시를 하는 것입니다. 이 기능은 채널 수신자에서 더이상 채널통신을 하지 못하게 할때 유용하게
Range Over Channels for 및 range 장에서 기본적인 데이터 구조에서 요소를 반복적으로 나열해서 처리하는 것을 배웠었습니다. 이제는 같은 기술을 채널에서 사용하는 방법에 대해서 설명하
Timers 프로그램을 작성하다 보면, 간혹 특정 시간 이후에 Go Code가 실행되길 원할때가 있습니다. 또는, 특정시간 대기 후에 계속적으로 실행할 경우도 존재합니다. G
Tickers Timer는 특정시간 뒤에 무엇인가를 처리할때 사용하는 자원입니다. 이에반해 Tickers는 특정 시간차를 두고 계속적으로 무엇인가를 처리할때 사용하는
Worker Pools 다음의 예제는, channel과 goroutine을 이용해서 Worker Pool을 구현하는 예제 입니다. package main import "time" import "fmt" func worker(id int, jobs <-chan int, results chan<- int) { // [1] for j := range jobs
iptables로 국가별로 차단 Linux iptables 환경에서 다음의 스크립트를 생성후 실행 아프카니스탄과 중퀴벌레를 차단하고 있습니다. /root 디렉토리에서 하기의 내용을 Bl
+++ tags = [“tools”] title = “Xeno Markdown Editor “ date = “2017-09-19T13:18:23+09:00” +++ XME [ Xeno Markdown Editor ] 먼저 마크다운(Markdown)에 대한 사항은 건너띄고 시작하겠습니다. http://plan9.tistory.com/14 <== 마크다운 문법 가이드를 참고 하시기 바랍니다. 간단히, 일반텍스트에 HTML과 같은 최소한의 서식을 적용할 수 있는 문서화 시스템을 마크다운 문서라고 부르며, 의미는 없지만 확장자 .md 나 .markdown 으로 끝나는 문서를 뜻합니다. 마크다운으로 문서를 작성 할려면 메모장이나 전문 편집기등으로 작성할 수 있습니다. 하지만 결론적으로는 일반 텍스트형태로 저장된 마크다운 문서를 웹브라우저에서 서식이 적용된 상태로 보여주어야할 시스템이 필요합니다.