본문 바로가기

기타72

[세상 쉬운 파이썬중급] nonlocal? closure? yield? generator? 파이썬 입문 레벨을 즐겁게 공부하신 분들이 상당히 버거워하시는 몇 가지 키워드가 있더라고요. 대표적으로 yield, nonlocal, closure나, 코루틴, 제너레이터, 스레드 같은.. 중요하기도 하고, 이해하고 나면 의외로 간단한데 처음엔 겁이 덜컥 나는 키워드들 있잖아요ㅎㅎ 그래서, 최대한 간단한 예제를 가지고 생소한 키워드나 문법을 차근차근 뿌시는 영상 시리즈를 기획해보았습니다. 20분 내외 x 총 10회 정도로 구상중입니다. 문법을 정리하는 시간도 되고, 요새 심란한 마음이 다소나마 차분해지는 것 같아 개인적으로는 제작이 즐겁습니다. (업무자동화 콘텐츠 소재고갈 때문이기도 하고;;;) 하여튼 첫 영상은 클로저와 제너레이터에 대해 다뤄보았습니다. 파이썬 입문에서 실력이 멈췄다 싶은 분들께 추천드.. 2024. 3. 13.
[리눅스] if문 정리 셸스크립트를 처음 접하고 딱 하루 정도가 지날 즈음 든 생각은, 아니, 셸스크립트는 파이썬보다 막장이잖아? 막연하게나마 저런 생각이 들었다. 변수 타입도 없고, 따옴표도 어떤 땐 있으나마나 하고... sh의 "1 2 3 4 5"는 파이썬의 [1, 2, 3, 4, 5]와 같다는 것도 충격이었다. 우선 콤마란 게 필요없다. 어떤 때는 괄호도 필요없다. 또 어떤 경우에는 따옴표도 필요없다ㄷㄷㄷ 하여튼, 셸스크립트의 if문은 파이썬과 상당히 비슷한 면이 있다. 간단한 if문을 써보면 파이썬은 a = 10 if a == 10: print("equal") elif a < 10: print("less than 10") else: print("greater than 10") 이런 느낌이라면, 셸스크립트는 a=9 # 등.. 2024. 2. 10.
[리눅스] sh파일을 리포매팅해주는 shfmt shfmt shfmt는 인스톨해야 한다. `sudo apt install shfmt`를 실행했다. 파일명 참 맘에 든다. SHell ForMaT 잖아? 사용법을 간략히 알아봤는데 vim으로 이렇게 개떡같이 짜놓았어도 `shfmt ifex.sh`를 실행하면 아래처럼 출력해준다. 단, 파일이 바뀌어 있지는 않고, 그냥 결과물만 보여준다. 원본을 이대로 수정하려면 `shfmt -w ifex.sh`로 실행하면 된다. 아름답게 바뀌긴 했는데, then을 다음 줄로 내려준다든지, 들여쓰기를 네 칸으로 해준다든지 하는 작업은 하지 않았다. 들여쓰기 네 칸을 적용하려면 '-i 4' 옵션을 추가하면 된다. 이제 좀 예뻐졌는데? 다른 옵션은 없나? -s와 -mn을 각각 실행해보니, -s는 스페이스 네 칸을 탭 하나로 만들.. 2024. 2. 10.
[셸스크립트] for문의 스코프를 정하는 do와 done 먼저 파이썬에서는 for문을 통한 반복문의 범위는 들여쓰기로 결정한다.(는 점은 다들 알고 계실 것) #python3 for i in range(5): print(i) print("Keep going!") # 한 번만 출력됨 sh에서는 do와 done 사이에 반복 스코프를 넣으면 된다. #!/bin/bash for i in $* do # 들여쓰기 컨벤션이 궁금하다. echo $i done echo "Keep going!" 갑자기 궁금한 게 생겼다. 파이썬의 range 배열은 sh에서는 어떤 방식으로 만들 수 있을까? ChatGPT에게 물어보자. 이건 뭐, 다른 언어랑 비슷해 보이는 문법이라서 생소하지는 않은데, ...괄호가 두 겹이네. 신기한 건 , `for i in $*` 처럼 사용할 수도 있고, `f.. 2024. 2. 10.
[리눅스] 셸스크립트기초 - 지역변수와 전역변수 자바스크립트 같기도 하고, C 같기도 하면서, 파이썬 같기도 한... (사실 sh가 이들을 닮은 게 아니고, 얘들이 sh를 닮은 거겠지.) 셸 스크립트를 공부하는 중에, 전역변수와 로컬변수라는 개념이 내심 반가웠다. 파이썬에서는 함수 안에서 변수를 정의하면 그냥 자동으로 지역변수가 되는데, sh에서는 local 이라는 키워드를 넣어줘야 한다. #!/bin/bash language="Korean" function learn() { local learn_language="English" # 등호 좌우에 빈칸이 있으면 오류남ㅜ. 지역변수 정의 echo "I am learning $learn_language" # echo는 print와 같음. } function print_() { echo "I can spea.. 2024. 2. 10.
[리눅스] print 함수를 재정의해봤더니 화면이 와장창 깨진다ㅜ 필자는 현재 zsh에 oh-my-zsh를 설치하고 powerlevel10k 테마를 사용중이다. 아래 내용의 myshell.sh를 만들고, (따라하지 말 것ㅜ) #!/bin/bash function print() { echo $1 } print "Hello world!" 터미널에서 `source ~/myshell.sh`를 실행했더니 테마고 프롬프트고, 모든 화면이 와장창 깨지기 시작했다. 근데 터미널을 재시작해도, 리눅스 재로그인을 해도 깨진 화면이 돌아오지 않아서 여기저기 검색하다가 별 수 없이 ~/.zshrc를 템플릿에서 재복사했더니 정상으로 돌아오기는 했다. 무식한 방법일지도 모르지만 내가 시도한 방법은 rm ~/.zshrc cp ~/.oh-my-zsh/templates/zshrc.zsh-templa.. 2024. 2. 10.
[리눅스 문자열 찾기] grep 기본 사용법 grep은 파일이나 출력 등에서 특정 문자열을 찾아낼 수 있는 명령어이며, 리눅스 환경에서 가장 많이 사용되는 명령어 중 하나로 꼽힌다. 다양한 옵션이 있지만 대표적인 사용방법은 아래 세 가지다. 1. grep [패턴] [파일] 패턴에는 따옴표를 넣지 않아도 괜찮지만 패턴 중간에 스페이스가 있는 경우에는 의도한 대로 작동하지 않을 수 있으므로 따옴표를 넣어 주는 것을 추천한다. (작은 따옴표, 큰 따옴표 무관하지만 짝은 맞춰주기) 그리고 패턴에는 일부 정규식이 사용될 수 있다. # ~/.zshrc에서 if문 찾기 grep "if" ~/.zshrc 2. grep [옵션] [패턴] [파일] [옵션]은 수십개라서 한 번에 암기하기에는 많은 양이지만, grep --help 를 통해 천천히 읽어보면서 참고하면 익.. 2024. 2. 9.
opencv와 np.ascontiguousarray 난생 처음으로 파이썬에서 (단 한 번도 써 본 적도 없고, 있는 줄도 몰라서 궁금해 해본 적조차 없었던) np.ascontiguousarray 함수를 사용해서 오류를 해결하는 경험을 했다. 고백하건대 ChatGPT가 아니었으면 새벽까지 삽질하다 나자빠졌을 것ㅜ 해결돼서 기쁘지만 아직도 얼떨떨하다. opencv는 "연속된 메모리 배열"이란 걸 요구하는구나... C 근처에만 가면 나는 너무 작아졌다. 귀한 경험 한 셈 치고 넘어갈 게 아니고 이놈의 CS 공포증을 이제부터라도 극복해야겠다. 고마워, 챗지피티! ========= 부연하면, RGBA 이미지 배열을 RGB로 변환할 때 단순히 슬라이싱으로 img = img[:, :, :3] 으로 A값만 잘라내면 될 줄 알았는데, opencv로 이미지를 조작할 때 자.. 2024. 2. 1.
jupyter notebook을 pdf로 저장할 때 오류가 난다면? 주피터노트북 파일을 PDF로 내보내기 하는 세 가지 방법 1. pandoc, xelatex 설치 후 PDF 내보내기(완전 비추) 주피터 노트북을 PDF로 내보내기할 때에는 기본적으로 pandoc이라는 프로그램을 설치해야 한다. (1) pandoc : Release pandoc 2.2.1 · jgm/pandoc (github.com) 하지만 이것만 설치하고 다시 PDF 내보내기를 해도 유틸을 하나 더 설치해야 한다. (2) xelatex : Windows - TeX Live - TeX Users Group (tug.org) 다운로드 및 설치는 간단하다. 영겁에 가까운 시간이 지난 후, 수 기가바이트의 파일들을 다운받고 나면 PDF 내보내기는 잘 되지만, 굳이 이런 과정이 부담스럽다면, HTML로 저장한 후.. 2024. 1. 31.