Programmer/Programming
-
poetry 1.2.0의 bash completion 오류와 대응 방법Programmer/Programming 2022. 9. 6. 12:09
poetry version 1.2.0 업그레이드 이후, 터미널을 열면 아래와 같은 오류가 뜬다. line 40: syntax error near unexpected token `clear' line 40: ` (cache clear)' 로그인쉘이 기동할 때, poetry의 bash의 자동 확장 기능 스크립트를 실행하면서 발생하는 오류이다. 문제의 원인부터 말하자면, /usr/local/Cellar/poetry//etc/bash_completion.d/poetry의 bash 자동 확장 스크립트의 case 패턴에 공백이 들어갔기 때문이다. 해결 방법은 이 공백을 처리해주면 된다. 두가지 방법을 제기할 수 있는데, 하나는 패턴을 쌍따옴표(”)로 감싸는 방법과 case "$com" in # ... skip ....
-
언어별 형식 출력 함수 비교Programmer/Programming 2021. 7. 9. 12:50
언어별 형식 출력 함수와 형식 변환 지정자 C Go C++ fmt Rust Python Javascript ES6 Template literals Common Lisp 표준출력 printf( "%d", 3) fmt.Printf( "%d", 3) fmt.print( "{}", 3) print!( "{}", 3) print( "{}".format(3)) let n = 3; console.log( `${n}`) (format t "~d" 3) 파일출력 fprintf( fh, "%d", 3) fmt.Fprintf( fh, "%d", 3) fmt.print( fh, "{}", 3) write!( fh, "{}", 3) print( "{}".format(3), file = fh) let n = 3; fs.write..
-
함수적 프로그래밍 작성하기Programmer/Programming 2019. 12. 3. 16:14
모든 조건과 결과는 함수 내부에서 시작하고 내부에서 끝난다면 함수적(functional)이다. 조건과 결과를 제외하고는 외부에 영향을 받지도 주지도 않는다. 조건은 인자(arguments)로 주어지고 결과를 반환값(return value)으로 돌려준다. 수학에서 함수를 처음 배울 때 위와 아래가 열려있는 상자 그림을 소개한다. 이 상자는 위 구명으로 값을 넣으면 아래 구멍으로 결과가 나온다. 위/아래 구멍을 제외하고 비밀스러운 다른 구멍이 없다. 즉, 출력값은 오직 입력으로만 결정된다. 좀 더 세련되게 표현하면 정의역의 임의의 x에 대해서 사상된 단 하나의 y가 치역에 존재한다. 프로그래밍의 함수는 종종 함수적이지 않다. 위 함수 정의에 부합하려면 인자와 반환값으로만 소통해야 한다. 반면 프로그래밍 함수..
-
러스트(Rust)를 위한 SyntaxHighlighter 3.0 플러그인 개선Programmer/Programming 2019. 2. 14. 18:27
2019년 Rust로 개발을 시작했다. 새롭게 알게 된 내용을 블로그에 기록하고 있다. 러스트 코드를 예쁘게 보여줄 기능이 필요했다. 아쉽게도, 내가 사용하는 SyntaxHighlighter의 기본 패키지는 러스트를 지원하지 않는다. 지난번 리스프 패키지 작성과 마찬가지로 서드파티 패키지를 추가해야했다. 운이 좋게도 누군가 만들어서 공개했다. https://silight.hatenablog.jp/entry/2015/06/18/211724 써보니 그리 나쁘지 않았지만, 부족한 부분이 엿보였다. 이전 글을 작성하면서 발견한 멀티라인을 추가했다. 2019년 2월 14일에 raw string, byte string을 추가했다. 코드는 https://github.com/unipro/shBrushes에 있다. le..
-
러스트와 다른 언어의 멀티라인 처리 비교Programmer/Programming 2019. 2. 12. 14:38
새줄문자가 들어간 스트링 리터럴 출력 Rust fn main() { println!("In the rooom the women come and go, Singing of Mount Abora"); } 결과 : 스트링 리터럴의 새줄문자와 공백문자를 그대로 출력 In the rooom the women come and go, Singing of Mount Abora C #include int main() { printf("In the rooom the women come and go, Singing of Mount Abora"); putchar('\n'); } 결과 : 빌드 실패 cc -Wall -O2 -o prt_nl_str prt_nl_str.c prt_nl_str.c:5:12: warning: miss..
-
러스트에서 문자열을 효과적으로 연결하기Programmer/Programming 2019. 2. 8. 17:41
러스트(rust)에서 문자열을(&String or &str)을 연결(concatenation)하는 방법에는 여러가지가 있다. SliceConcatExt::concat() -> String SliceConcatExt::join(sep: &str) -> String Add::add(rhs: &str) -> String String::push_str(string: &str) -> String write! and writteln! macros SliceConcatExt::concat() -> String 문자열의 슬라이스(slice)에서 concat() 메서드를 호출하면 각 요소를 연결한 문자열을 생성한다. SliceConcatExt::join(sep: &str) -> String 각 문자열 요소 사이에 지정된..
-
파이썬 프러퍼티 사용하여 일관되게 속성에 접근하라Programmer/Programming 2018. 1. 17. 11:56
파이썬의 프러퍼티(property)를 설명한 책과 글은 많음으로 필요성만 살짝 언급하고 지나가겠다. 파이썬에서는 공개 애트리뷰트(public attribute)을 직접 접근(access)하는 것이 관례이다. class A: def __init__(self): self.x = 0 a = A() a.x = 1 print('{}'.format(a.x)) 그런데, 비공개(private) 애트리뷰트가 필요한 경우가 있다. 이들을 외부에서 접근하기 위해서는 엑세스 함수-예를 들면, get_xxx(), set_xxx()와 같은 것-을 사용해야 한다. 문제는 접근 형식이 관례와 달라지는데 있다. 즉, 애트리뷰트가 공개인지 비공개인지 일일이 신경써야 한다. 이럴 때, 프러퍼티를 사용하면 동일한 표현 형식으로 접근이 가능..
-
기본 값(default value)을 언제 사용할까?Programmer/Programming 2018. 1. 2. 18:57
매번 값을 특정하는 것은 꽤 귀찮은 일이다. 가령, ssh 접속할 때 포트 번호 22를 항상 입력하는 것은 불편하다. 기본 값은 이런 불편함을 덜어준다. 이는 곧 개발의 생산성과 사용의 편의성으로 이어진다. 반면, 사용의 편의성은 대게 위험성을 불러들인다. 임의로 기본값을 남발하면 낭패를 볼 수 있다. 컴파일이나 실행 직후 문제없이 돌아가는 코드가 기본값 때문에 문제를 일으키곤 한다. 기본 값에는 명백하고 합리적인 이유가 반드시 있어야 한다. 예를 들면, HTTP 클라이언트를 개발한다면, HTTP 프로토콜의 기본 포트인 80을 기본 값으로 사용할 수 있다. 여기서는 스펙이 합리적인 이유가 된다. 그런데, HTTP 프로토콜의 기본 포트인 80이 아닐 수도 있다. 사내 HTTP API 서버들의 포트가 다양할..