일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- TiDB
- bash
- TiKV
- 긴옵션
- DBMS
- 포인터
- Windows via c/c++
- 전처리기
- OS 커널
- Golang
- DBMS 개발
- UNIX
- 커널
- 함수포인터
- getopts
- kernel
- Symbol
- newSQL
- 한빛미디어
- Preprocessor
- go
- 포인터변수
- Programming
- 구조와 원리
- SQLite
- FreeBSD
- Pointer
- UNIX Internals
- 컴퓨터 강좌
- 약어
- Today
- Total
목록개발자 이야기 (97)
sonumb
개요 결론을 말하자면, '다차원 배열'을 '참조에의한호출'로 다른 함수에서 참조할 수 있다. 그러나, 배열 대신 슬라이스를 이용하는 것을 가장 추천한다. (코드가 간단해지므로) 다차원 배열을 선언할 때, var arr [5][2]int처럼 배열 크기를 명시하거나, var arr [...][2]int와 같이 ...을 기입해주어 해야 배열로 선언되고, var sliece [][2]int와 같이 크기가 없거나, slice := make([][2]int, 0)와 같이 make()를 호출해야 슬라이스로 선언된다. 그렇다면, 다차원 배열을 함수에 인자값으로 넘길 때, call-by-reference를 하고 싶다면? 참고로, C 언어 같은 경우 void foo( int arr[][2] ); // 혹은 void ba..
문자열 부분제거 이용하는 방법 $ str=" abc efg " $ echo ${#str} 25 # 좌측 공백 모두 제거 $ trimed_str=${str##+( )} $ echo ${#trimed_str} 16 # 우측 공백 모두 제거 $ trimed_str=${trimed_str%%+( )} $ echo ${#trimed_str} 7 $ echo $trimed_str abc efg echo 를 이용하는 방법 $ str=" abc efg " $ echo ${#str} 25 $ echo $str abc efg $ trimed_str=`echo $str` $ echo $trimed_str abc efg $ echo ${#trimed_str} 7
개요 배시 스크립트에서 builtin 명령어인 "getopts" 를 사용해서 실행 옵션을 처리할 수 있다. https://systemdesigner.tistory.com/17 쉘 스크립트의 인자를 보다 세련되게 (getopt) 쉘 스크립트를 사용하다 보면 사용자 입력을 받아야 되는 경우가 많습니다. 그 때 보다 세련되고 있어??? 보이게 끔 받을 수 있는 방법을 소개하고자 합니다. getopt라는 명령어 인데 먼저 ... 샘플 systemdesigner.tistory.com 그러나, "--special-example=true"와 같은 긴 옵션은 처리하지 못한다. getopts 말고 getopt(1) 명령어를 이용해서 처리한다. https://man7.org/linux/man-pages/man1/getop..
개요 테스트 목적으로 심플한 php 스크립트를 구동하고 결과를 알고 싶은데, WAS나 웹서버를 설치하고 설정하는 것은 번거롭다. go에서 "net/http"를 이용해 간단한 http 서버를 작성/구동할 수 있다. https://jeonghwan-kim.github.io/dev/2019/02/07/go-net-http.html Go net/http 패키지 웹 어플리케이션을 개발하려고 Go 언어를 살펴보기 시작했다. 앞서 정리한 몇 가지 기본 패키지는 net/http 패키지를 사용하기 위한 준비 과정이라 생각하자. 이번에는 네트웍 프로그래밍을 위한 n jeonghwan-kim.github.io 그렇다면, php와 같은 스크립트 파일의 실행하며, 그 결과를 출력하는 httpd도 만들 수 있을까? 답은 그렇다이..
개요 애플리케이션의 CPU 사용률을 낮추고자 한다면, 솔루션으로 대개 sleep() 혹은 select() 호출를 생각할 것이다. 하지만, 이 함수들을 사용할 수 없는 경우도 있다. 예를 들어, 특정 라이브리가 포함된 애플리케이션을 작성하였는데, 이 라이브러리의 함수 호출 시 CPU 사용률이 높다고 가정하자. 또한, 이 함수의 CPU 점유 시간도 길다고 한다. 어떻게 해야 할까? 만일 라이브러리를 수정한다면 해결할 수 있겠지만, 라이브러리 소스 코드가 없다면 해결책이 될 수 없다. (⛔️ "라이브러리 직접 수정"이 가능하더라도, 절대로 하면 안된다. 나의 애플리케이션 외에, 다른 애플리케이션이 사용하기 때문이다.) 그렇다면, 라이브러리를 호출하는 코드쪽에서 CPU 사용을 제어하는 방법이 있을까? → 리얼타..
개요 gRPC 개념은 아래 글들에서 찾아보자. https://corgipan.tistory.com/6 http://m.blog.naver.com/alice_k106/221617347519 https://devjin-blog.com/golang-grpc-server-1/ https://blog.banksalad.com/tech/production-ready-grpc-in-golang/ https://medium.com/naver-cloud-platform/nbp-%EA%B8%B0%EC%88%A0-%EA%B2%BD%ED%97%98-%EC%8B%9C%EB%8C%80%EC%9D%98-%ED%9D%90%EB%A6%84-grpc-%EA%B9%8A%EA%B2%8C-%ED%8C%8C%EA%B3%A0%EB%93%A4%E..
개요 빌드 시, 릴리즈 모드에 따라 호출되는 함수의 기능을 달리하고 싶을 때가 있다. "모드에 따른 다른 빌드"를 구현하는데, 두 가지 방법이 있다. 두 방안에 대해 알아보고, 두 방안의 성능차이도 실제 측정하여 기록하였다. (이 주제의 두번째 게시물 마지막) 방안들 1. 빌드 시, 태그(-tags) 옵션을 이용하는 방법 파일을 두 개 동일하게 생성하되 그중 하나가 디버깅이라면 // +build debug을 맨 윗줄에, 디버깅이 아닌 것은 // +build |debug 을 소스코드 파일 맨 윗줄에 추가한다. 태그 옵션을 이용하여 모드에 따른 빌드는 가능하다. ⛔️ 주의 그러나 시스템 종속족인 기능과 같이, 빌드 시 "내용이 파일에서 분리가 되어야 하는 것"들인 경우 이를 이용하는게 가장 좋다. 왜냐하면,..
개요 https://sonumb.tistory.com/124 Go - release/debug 모드 빌드하기 - 1 개요 빌드 시, 릴리즈 모드에 따라 호출되는 함수의 기능을 달리하고 싶을 때가 있다. "모드에 따른 다른 빌드"를 구현하는데, 두 가지 방법이 있다. 방안들 1. 빌드 시, 태그( -tags ) 옵션을 이용하 sonumb.tistory.com 개요 및 전반적인 이야기는 윗 글을 참조하고, 전편에 이어 방안 2에 대한 소스코드를 보여주려한다. '모드에 따른 빌드하기'의 방안 2에 대해 간단히 설명하자면, 빌드시, 빌드모드를 소스코드에 기록하기 (실제로는 하드디스크의 파일의 내용을 바꾼다는 의미가 아니라, 파일 내용을 메모리로 로딩 후, 메모리 내에 변수를 수정한다는 것이다.) 코드에 기록된 ..
출처: https://stackoverflow.com/questions/25927660/how-to-get-the-current-function-name How to get the current function name For tracing purpose, I'd like to print out current function name, like the __FUNCTION__ macro in gcc. So that when I have a function func foo () { trace() } it will automatically print out En... stackoverflow.com // 반환: 파일이름, 현재라인, 함수이름 func trace() (string, int, string, err..
개요 및 문제 상황. Go언어에서 동기화 툴로 제공하는 것중 하나가 채널이다. 다만, 채널의 특성으로 인해, 사용할 때 문제 혹은 불편한 사실들이 있다. 다른 누군가가 쓰기 전까지, 읽는 것은 반환되지 않는다.(단, 채널 용량에 따라 반환여부가 결정 된다) 다른 누군가가 읽기 전까지, 쓰는 것은 반환되지 않는다. close(ch)을 하면, 위 두가지 문제(반환되지 않음)이 해결되는가 싶어서, 이를 시도한다. 닫힌 채널에 쓰는 행위는 panic이 발생한다 그런데, 닫힌 채널을 읽는 행위는 잘 실행된다(!) 해결방법 3-1번 상황을 해결하기 위해, 채널을 구성할 때는 full-duplex로 구성한다. 즉 쓰기/읽기를 전용 채널을 각각 선언하고, 닫히는 시점을 잘 정의해야 한다.(대개 다수의 생산자 쓰레드가 ..