일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Pointer
- 구조와 원리
- FreeBSD
- 포인터
- Programming
- Symbol
- Preprocessor
- TiDB
- Golang
- 커널
- UNIX Internals
- 컴퓨터 강좌
- bash
- 함수포인터
- 약어
- kernel
- UNIX
- 한빛미디어
- 긴옵션
- TiKV
- DBMS 개발
- getopts
- 전처리기
- 포인터변수
- Windows via c/c++
- DBMS
- SQLite
- go
- OS 커널
- newSQL
- Today
- Total
목록분류 전체보기 (127)
sonumb
$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables package-id: com.apple.pkg.CLTools_Executables version: 12.4.0.0.1.1610135815 volume: / location: / install-time: 1628821834 groups: com.apple.FindSystemFiles.pkg-group
개요 결론을 말하자면, '다차원 배열'을 '참조에의한호출'로 다른 함수에서 참조할 수 있다. 그러나, 배열 대신 슬라이스를 이용하는 것을 가장 추천한다. (코드가 간단해지므로) 다차원 배열을 선언할 때, 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..
개요 배시 쉘 스크립트 내에서, 동적으로 변수를 지정하고 싶은 경우가 있다. 예를들어, pid에 따라 특정 값을 저장하고 싶은 경우가 그런 경우다. export pid_1112_cmd_str="ls -al" 그러나 위 경우에는 pid값이 항상 변하므로, 쉘변수의 이름도 항상 변할 것이다. 이에 따라 해당 변수의 값참조도 난해해진다. 변수의 배열을 이용할 수 있다. 그러나 고정된 크기만큼 선언된다. 또한, 변수들은 sparse하게 이용될 확률이 높다. 또한 배열의 인덱스는 항상 숫자이므로, 문자열 기반 동적 선언은 불가능하다. export var_arr=({1..36000}) # 36,000개 크기를 갖는 배열 선언 및 각 변수를 1~36000 값으로 초기화 echo ${#var_arr[@]} # 배열 크..
문자열 부분제거 이용하는 방법 $ 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에 대해 간단히 설명하자면, 빌드시, 빌드모드를 소스코드에 기록하기 (실제로는 하드디스크의 파일의 내용을 바꾼다는 의미가 아니라, 파일 내용을 메모리로 로딩 후, 메모리 내에 변수를 수정한다는 것이다.) 코드에 기록된 ..