Programmer
-
Rust에서 `Option<String>`을 `&str`로 변환하기Programmer/Programming 2025. 12. 4. 11:19
더보기나름 설명해보려고 애를 썼지만, 내 생각이 맞는다는 보장이 없다. 말이 된다고 생각되면 적었으니, 참고만 하시면 좋겠다. 설명을 위해 Rust 함수를 하나 만들보았다.fn print_greeting(name: &str) { println!("Hello, {}!", name);} 우선, String을 &str로 변환하는 몇가지 방법을 나열해보겠다.그러자면, 아래와 같이 String 변수 하나를 만들어보자.이후 예제 코드는 name 이라는 변수를 사용하겠다.let name = String::from("Raphael"); 1. 가장 흔한 사용 방법은 아래와 같다.print_greeting(&name);&name이 &str 타입으로 변환되는 과정은 아래와 같다.&name → name.as_ref()..
-
이맥스 멈춤 현상 해결로 알아보는 디버깅 기술Programmer/Emacs 2022. 9. 21. 00:49
이맥스에서 컴파일(M-x compile)이나 검색(M-x rgrep)을 하면 결과를 다른 버퍼(예를 들면, 컴파일 출력은 *compilation* 버퍼)에서 표시한다. 단순히 보여주기만 하는 것이 아니라 오류나 검색 위치로 바로 가기도 지원한다. 오류(또는 검색) 출력 위에 커서를 이동하고 엔터를 누르면 다른 윈도우에 커서가 가르키는 파일을 열고 해당 위치로 이동한다. 문제 없이 잘 동작하는 바로 가기 기능이 갑자기 수 분 동안 멈추는 현상이 발생했다. 이를 해결하지 못하면 개발 생산성에 급격한 저하가 발생할 수 밖에 없다. 따라서 무조껀 이것을 해결하고. 본연의 업무 중 하나인. 개발 업무를 진행해야 했다. 얼마간 멈추고 CPU를 과도하게 사용하는 상황이라면 CPU 프로파일링(profiling)으로 접..
-
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/Etc 2022. 5. 26. 23:25
PKI 암호화의 일반적인 개념은 개발자라면 당연히 알고 있을 것이다. HTTPS 서버 설정에서 DRM 등 여러 분야에서 이 개념을 사용한다. 다만, 실무에서는 개념만으로는 충분하지 않다. 실제로 접하게 될 다양한 파일의 확장자와 형식, 내용을 알고 있어야 한다. 확장자와 형식, 내용에 대한 개별적이고 단편적인 정보는 검색하면 찾을 수 있다. 문제는 이렇게 공부하면 외워야 하는 정보의 양만 많아지고 쉽게 잊어버린다. 전체 목록과 각각의 관계를 알면 이해도 쉽고 잘 잊어버리지 않는다. 아쉽게도 한눈에 볼 수 있도록 설명한 문서를 찾지 못하였다. 그리하여 확장자, 인코딩, 표준을 한 눈에 볼 수 있도록 표 하나에 정리해서 공개한다. .DER .PEM .CRT .CER .KEY .P7B .P7C .PFX .P1..
-
이맥스 버퍼, 윈도우, 프레임 그리고 새로운 기능 탭Programmer/Emacs 2022. 5. 10. 21:04
이맥스 27.1의 다중 편집 UX에 새로운 기능인 탭이 포함되었다. 이 글에서는 이맥스의 기존 다중 편집 UX인 버퍼, 윈도우, 프레임에 대해서 간단하게 설명하고, 탭을 사용해 본 후기와 기존 방법과 비교, 개인적인 추천 방법까지 소개하겠다. 버퍼는 이맥스와 외부 I/O를 연결하는 인스턴스로 편집 중인 텍스트, 열려 있는 파일, 이맥스에서 구동한 프로세스 입출력 등과 연결되어 있다. 이 버퍼는 윈도우를 통해서 사용자에게 보여진다. 버퍼가 윈도우를 통해서 안보이더라도 후면에 여전히 존재하며 자신의 기능을 수행한다. 윈도우는 디스플레이 공간(프레임)을 전부 차지하여 하나만 보여질 수도 있고, 타일처럼 여러 개로 분할된 공간으로 표시될 수도 있다. 요즘 UI 개념으로 보자면 화면 분할과 같다. 프레임은 GUI..
-
깃털처럼 가벼운 Emacs인 mg의 키바인딩Programmer/Emacs 2021. 10. 25. 11:26
기본 키 바인딩 Category Key Binding Command Leaving Mg C-z suspend-emacs C-x C-c save-buffers-kill-emacs Files C-x C-f find-file C-x C-s save-buffer C-x s save-some-buffers C-x C-q toggle-read-only Getting Help C-h C-h help-help C-h a apropos C-h b describe-bindings C-h c describe-key-briefly Error Recovery C-g keyboard-quit C-x u undo C-_ undo C-l recenter Incremental Search C-s isearch-forward C-r i..
-
원자적(atomic) 연산과 순서(ordering) 제약Programmer/Computer Science 2021. 7. 12. 12:37
스푼라디오에 재직하던 시절 작성한 "원자적 연산과 순서 제약"에 관한 글을 소개한다. 멀티코어, 멀티쓰레드 환경의 고성능 병렬(parallel) 프로그래밍에는 여러가지 함정이 있다. 그중에 하나는 프로그래머의 의도와는 상관없는 시스템의 최적화이다. 이 글은 시스템 최적화에 프로그래머의 의도를 전달하는 두가지 기법, 원자적(atomic) 연산과 순서(ordering) 제약을 소개한다. https://medium.com/spoontech/원자적-atomic-연산과-순서-ordering-제약-ed25e39c4646 전체 내용은 원문으로 확인하자.
-
언어별 형식 출력 함수 비교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..