logo

code summary 📂프로그래밍

code summary

LaTeX\LaTeX

줄간격

줄간격패키지: \usepackage{setspace}

  • \singlespacing
  • \onehalfspacing
  • \doublespacing
  • \setlength{\textheight}{600pt}

enumerate

\usepackage{enumitem} 필요함

  • (a), (b), (c), \text{(a), (b), (c), …} : \begin{enumerate}[label=(\alph*)]
  • (A), (B), (C), \text{(A), (B), (C), …} : \begin{enumerate}[label=(\Alph*)]
  • A., B., C., \text{A., B., C., …} : \begin{enumerate}[label=\Alph*.]
  • (I), (II), (III), \text{(I), (II), (III), …} : \begin{enumerate}[label=(\Roman*)]
  • (i), (ii), (iii), \text{(i), (ii), (iii), …} : \begin{enumerate}[label=(\roman*)]
  • (1), (2), (3), \text{(1), (2), (3), …} : \begin{enumerate}[label=(\arabic*)]

itemize

문자 크기

AB\Huge AB \Huge AB

AB\huge AB \huge AB

AB\LARGE AB \LARGE AB

AB\Large AB \Large AB

AB\large AB \large AB

AB\normalsize AB \normalsize AB

AB\small AB \small AB

AB\footnotesize AB \footnotesize AB

AB\scriptsize AB \scriptsize AB

AB\tiny AB \tiny AB

VS Code

  • 다중검색으로 날짜 바꾸기 찾기: (2013)(-04)(.*)(#early) 바꾸기: 2023223

  • 폴더 안열리게 하는 설정 Explorer: Auto Reveal → False

  • 탭창 멀티라인 Wrap Tabs

MarkdownAllinOne

마크다운 표 자동 formatting하는 기능 Shift + Alt + F

  • 파일 열 때 폴더 안펼쳐지게하기: Explorer: Auto Reveal

자동 줄바꿈 옵션

코드 자동 줄바꿈: Editor: Word Wrap

  • Ctrl + Shift + P \to word wrap 검색 후 활성화
  • 토글키는 Alt + z

탭 표시줄 자동 줄바꿈: Editor: Wrap Tabs

스니펫

  • 경로: C:\Users\username\AppData\Roaming\Code\User\snippets\snippets.code-snippets

단축키 설정: keybindings.json

  • 경로: C:/Users/username/AppData/Roaming/Code/User/keybindings.json

  • 마크다운 환경에서 윗첨자 자동 괄호:

    {
      "key": "shift+6",
      "command": "editor.action.insertSnippet",
      "when": "editorTextFocus && editorLangId == 'markdown'",
      "args": {
        "snippet": "^{$0\\}"
      }
    }
    
    • 텍 파일일 때 적용시키려면 editorLangId == 'latex'

HTML

그림

  • 이미지 삽입하고 가운데정렬 <image src="___.png" width="400" style="display: block; margin: auto;"/>

matplotlib

이미지 사이즈

  • 설정한 사이즈로 피규어 만드는 법: plt.figure(figsize=(w,h))

  • 기본 사이즈: plt.figure(figsize=(6.4,4.8))

  • 기본 plot 사이즈 조절:

    import matplotlib
    plt.rcParams['figure.figsize'] = [width, height]
    

tmux

  • tmux attach -t 0: 0번 세션에 연결
  • Ctrl + b + 방향키: 해당 방향의 세션으로 전환
  • Ctrl + b + 숫자: 해당 번호의 세션으로 전환
  • Ctrl + b + d : (세션 살려둔 채) 일반쉘으로 나가기.
  • Ctrl + c + Ctrl + c : emacs 종료

Python

실행 파일의 경로 os.getcwd()

  • main.__file__: 파일 이름과 확장자를 포함한 경로는 얻는다.

  • os.path.dirname(os.path.realpath(__file__)): 파일이 포함된 폴더의 경로를 얻는다. 터미널에서 파이썬 파일 실행시킬 때도 의도한 대로 기능하게 하려면 이걸 써야함.

  • os.getcwd(): 현재 작업 경로를 얻는다. 탐색기에서 *.py파일을 실행할 땐 의도대로 작동하지만, 터미널에서 실행시키면 터미널 경로를 얻음.

>>> import os
>>> import __main__ as main

>>> x = main.__file__
>>> print(x, "\n")
C:/Users/admin/Desktop/Python/test.py

>>> y = os.path.dirname(os.path.realpath(__file__))
>>> print(y, "\n")
C:/Users/admin/Desktop/Python

>>> z = os.getcwd()
>>> print(z)
C:/Users/admin/Desktop/Python

경로가 존재하는지 확인 os.path.exists(directory)

  • os.path.exists(directory): 경로가 존재하는지에 따라 True 혹은 Flase를 반환한다.

폴더 생성 os.makedirs(directory)

  • os.makedirs(directory): 입력한 경로가 없으면 폴더를 만드는 코드.
    def create_directory(directory):
        try:
            if not os.path.exists(directory):
                os.makedirs(directory)
        except OSError:
            print("Error: Failed to create the directory.")
    

폴더 삭제

하위 폴더 탐색하면서 빈 폴더면 삭제하는 코드.

import os

directory = os.path.dirname(os.path.realpath(__file__))

for (path, dir, files) in os.walk(directory):
    try:
        os.removedirs(str(path))
    except:
        print("디렉토리가 비어있지 않습니다.")

실행 파일의 하위 경로의 특정 파일 모두 찾기

실행 파일이 위치한 폴더를 포함한 하위 경로의 파이썬 파일*.py을 모두 찾는 코드이다. 실행 파일이 위치한 폴더도 탐색 범위에 포함되므로 실행 파일 자체도 file_list에 포함된다.

directory = os.getcwd()
file_list = []

for (path, dir, files) in os.walk(directory):
    for filename in files:
        ext = os.path.splitext(filename)[-1]
        if ext == '.py':
            file_list.append("%s\\%s" % (path, filename))

실행 변수 sys.argv

python 이후의 부분foosys.argv = foo.split()으로 받아오는 것.

# 파일 실행
import os 

os.system("python " + "file_directory/foo.py " + argv1 + " " + argv2)

## foo.py 내부 코드
import sys

# sys.argv[0]는 "file_directory/foo.py "임
variable1 = sys.argv[1]
variable2 = sys.argv[2]

파일 읽고 쓰기

읽기와 쓰기를 따로 해아한다. 뒤에 “t"를 붙이면 text, “b"를 붙이면 binary 모드

  • “rt"는 read text 모드, 읽기 전용, 파일 없으면 에러
  • “w"는 write 모드, 파일이 있든 없든 새로 만든다.
  • “a"는 append 모드, 파일이 없으면 새로 만들고, 있으면 기존 파일의 마지막에 내용 추가.
  • “x"는 create 모드, 이미 파일이 있으면 에러.
# 텍스트 파일 열고 내용 가져오기, 그리고 닫기
foo_read = open(file_directory + "foo.txt", "rt", encoding="utf-8")
lines = foo_read.readlines()
foo_read.close()

readlines()는 txt 파일의 각 줄을 리스트의 성분(문자열)으로 받아온다. 줄바꿈이 있으면 마지막에 '\n'도 포함됨. .strip()으로 마지막의 '\n'를 지울 수 있다.

foo_write = open(file_directory + "foo.txt", "wt", encoding="utf-8")

foo_write.write("bar\n") # 한 줄 쓰기

lines = ["bar1\n", "bar2\n", "bar3\n"]
foo_write.lines(lines) # 여러 줄 쓰기
foo_write.close()

문자열

  • strip(): 앞과 뒤에서 문자열 지움. 변수 없으면 (줄바꿈 등을 포함한) 공백을 지움. 따라서 문자열의 시작과 끝의 공백을 지울 때 유용함.
  • sort(): 알파벳 순서로 문자열 정렬. 역순정렬은 reverse=True
  • replace(): 문자열 대체
  • translate(): 문자 대체

    replace와 translate의 차이1

    replace(‘바꿀문자열’, ‘새문자열’) 은 문자열 안의 문자열을 다른 문자열로 바꿉니다(문자열 자체는 변경하지 않으며 바뀐 결과를 반환합니다). 다음은 문자열 ‘Hello, world!‘에서 ‘world’를 ‘Python’으로 바꾼 뒤 결과를 반환합니다. replace는 문자열을 바꿨는데 문자를 바꾸는 방법도 있겠죠? translate는 문자열 안의 문자를 다른 문자로 바꿉니다. 먼저 str.maketrans(‘바꿀문자’, ‘새문자’) 로 변환 테이블을 만듭니다. 그다음에 translate(테이블) 을 사용하면 문자를 바꾼 뒤 결과를 반환합니다. 다음은 문자열 'apple'에서 a를 1, e를 2, i를 3, o를 4, u를 5로 바꿉니다.

    >>> table = str.maketrans('aeiou', '12345')
    >>> 'apple'.translate(table)
    '1ppl2'
    
  • split(): 입력변수를 기준으로 문자열 쪼개서 리스트로 반환
    >>> x.split(',')
    ['1', '3', '4']
    

정리 잘된 사이트

리스트

  • .sorted() : 알파벳 순서로 문자열 정렬. 역순 정렬은 reverse=True

  • 리스트 저장하고 불러오기

import pickle

list = [1, 2, 3, 4]

# 리스트 저장
with open("list.pkl", "wb") as f:
    pickle.dump(list, f)

# 리스트 불러오기
with open("list.pkl", "rb") as f:
    list = pickle.load(f)

Julia

PyTorch and TensorFlow

GPU

GPU확인

  • P: torch.cuda.is_available()

배열

상수

  • P: torch.tensor([1,2,3])
  • TF: tf.constant([1,2,3])

파라매터

  • P: torch.tensor([1,2,3], requires_grad=True)
  • TF: tf.variable([1,2,3])

모델

클래스

  • P: class model(nn.Module)
  • TF: class model(tf.keras.Model)

TF: model.complie()

TF: model.fit(data, label, epochs, batch_size, verbose)

  • verbose: Integer. 0, 1, or 2. (훈련 결과 출력 방식)
    • 0 = silent,
    • 1 = progress bar,
    • 2 = one line per epoch.

TF: model.complie()