[Git] Basic
SW/Git 2021. 6. 8. 00:11

[Git] Basic CLI Command Line Interface 유닉스 shell (sh, zsh, bash 등) CP/M DOS의 command.com cmd(window 전용) bash Git의 GUI로 Git bash가 있습니다. git bash로bash shell terminal 사용 가능해집니다. 명령어 ls : 현재 디렉토리의 내용들을 나열 cd : 현재 작업하는 디렉토리를 변경 mkdir : 새로운 디렉토리 생성 echo : 문자열 출력 rm : 파일 지우기 exit : 터미널 종료 touch : 파일 생성 CLI에서는 항상 자신이 어디에 있는지 주의하는 습관이 필요합니다. git 초기 설정해주기 git config --global user.name "GitHub name" git co..

[Git] Branch 관련 내용 & 명령어
SW/Git 2021. 6. 7. 23:39

[Git] Branch Branch 는 독립적으로 작업을 진행하기 위해 만들어지는 공간입니다. 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다. 기본적으로 초기 Repository 는 main or master branch 로 시작됩니다. Git 명령어 Branch 생성 : name 이라는 branch를 생성합니다. (해당 브랜치로 이동하지는 않습니다.) $ git branch 다른 Branch로 이동 : name 이라는 branch로 이동합니다. $ git checkout Branch 생성 + 이동 : name 이라는 branch를 생성하고 이동합니다. $ git checkout -b 로컬에 생성한 branch 를 remote repository (ori..

[Python] exe 파일 만들기 (PyInstaller)
SW/Python & Django 2021. 6. 4. 19:31

[Python] exe 파일 만들기 (PyInstaller) Python 코드를 실행 가능한 exe 파일로 만드는 방법입니다. (Python 이 설치되어있는 상태에서 가능합니다.) PyInstaller 설치 명령프롬프트 (ex. bash) 에서 pip로 설치합니다. $ pip install pyinstaller exe 파일 만들기 Python 코드가 있는 directory 로 이동한 뒤, pyinstaller 명령어로 exe 파일로 만듭니다. 콘솔창 출력되지 않도록 만들기 실행했을 때 콘솔창이 출력되지 않도록 하려면 명령어에 -w / --windowed 를 추가하면 됩니다. 실행파일 하나만 생성하도록 만들기 명령어에 -F / -onefile 을 추가하면 됩니다. # pyinstaller codefile...

[C#] Callback, Delegate
SW/C# & WPF 2021. 6. 1. 23:04

Callback, Delegate Callback Method 콜백 메서드란 다음과 같이 표현할 수 있습니다. 다른 함수의 인자로써 이용되는 함수. 어떤 이벤트에 의해 호출되어지는 함수. A 라는 메서드에 B 라는 메서드를 인자로 넘겨주면서, A 메서드가 B 메서드를 특정 이벤트에서 호출하도록 한다고 가정해보겠습니다. 이 때, B 메서드가 콜백메서드가 됩니다. 델리게이트 델리게이트란 메소드를 참조하는 변수로 대리자 역할을 하는 녀석입니다. 델리게이트는 다음과 같이 사용합니다. 메소드와 동일하게 델리게이트(대리자) 선언 선언한 델리게이트 타입으로 델리게이트 변수를 생성 생성한 델리게이트 변수에 작업할 메소드를 참조 예제 namespace test{ delegate int testDelegate(int a,..

[WPF] Thread와 Dispatcher를 이용한 멀티스레딩
SW/C# & WPF 2021. 6. 1. 23:02

WPF Thread C# 과 WPF 의 Thread 관리에 대해서 정리한 내용입니다. C# 기본적으로 Main Thread가 존재하며 추가로 System.Threading.Thread 클래스로 Thread를 생성합니다. C#에서의 스레드는 생성자(Constructor)에 실행하고자 하는 method를 delegate로 지정하며, 객체를 생성해 Start() method를 호출하여 만들 수 있습니다. WPF 모든 WPF 프로그램은 최소한의 렌더링을 위한 백그라운드 쓰레드 와 UI 스레드(UI 인터페이스 관리) 두개의 쓰레드로 기동됩니다. UI Thread 는 STA(Single-Threadded Apartment) Main Thread로, UI 관련 작업을 모두 수행합니다. 즉, 사용자 입력을 받고 화면을..

[WEB] 쿠키와 세션
SW/Computer Science 2021. 6. 1. 21:37

쿠키(Cookie) / 세션(Session) 쿠키와 세션은 웹 통신에서 유지하고 싶은 데이터 (ex. 로그인 데이터) 를 저장해두기 위해 사용하는 방법입니다. 이곳 을 참고해서 정리해 보았습니다. 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 약점을 보완하기 위해서 사용합니다. Connectionless 프로토콜 (비연결지향) 클라이언트가 서버에 요청(Request)을 했을 때, 응답(Response)한 후 연결을 끊는 처리방식 HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었습니다. (keep-alive 값으로 변경 가능) Stateless 프로토콜 (상태정보 유지 안함) 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식 클라이언트와 첫번째 통신에서 데이터를..

[C#] HTTP 통신
SW/C# & WPF 2021. 6. 1. 21:09

HTTP 통신 C# HttpWebRequest, WebRequest 클래스를 활용하여 HTTP Request 요청을 보내고 응답을 받는 방법입니다. GET/POST 타입에 따라 request를 다르게 요청합니다. Get Request url/?/ + data 로 구성하여 url로 request를 요청합니다. (GET 방식) string url = "https://url-----/"; string response = string.Empty; // request setting HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.Timeout = 10 * 1000; request.Heade..

[Python] GIL
SW/Python & Django 2021. 5. 31. 21:37

GIL, Global Interpreter Lock 멀티스레드 환경에서는 여러스레드에서 동시에 객체에 접근하려 하는 동기화 문제(Race Condition)가 발생할 수 있습니다. 이를 해결하기 위해 스레드가 객체에 접근하는 것을 막기 위한 Mutex/Semaphore 가 필요합니다. C에서 Thread를 사용할 때, 멀티스레드 환경에서 Race Condition이 일어나지 않도록 하는 것을 개발자에게 맡깁니다. 반면, Python은 GIL를 통해 인터프리터가 한 스레드만 하나의 바이트코드를 실행시키도록 Lock을 겁니다. Python 메모리 관리 Python이 할당된 메모리를 관리하는 기본적인 방식 두 가지가 있습니다. Garbage Collection Reference Counting 이 중 Refe..

[WEB] HTTP의 GET과 POST
SW/Computer Science 2021. 5. 30. 16:06

HTTP HTTP (Hyper Text Transfer Protocol) 은 인터넷에서 데이터를 주고받을 수 있는 규약(프로토콜) 입니다. 이러한 규약 중 데이터를 요청(Request)하는 HTTP의 방식에 GET 방식과 POST 방식이 있습니다. HTTP의 GET과 POST 특정 사이트에 정리해주신 자료 를 바탕으로 작성하였습니다. User는 단순히 작성한 내용을 서버에 요청하고 끝내지 않고, 전달하여 DB에 저장하길 원합니다. GET / POST 방식은 HTTP 프로토콜을 이용해서 서버에 요청할 때 사용하는 방식입니다. 두 방식은 차이점이 있으므로 이해하고 용도에 맞게 사용하는 것이 중요합니다. GET HTTP Request Message 의 Header에 url 이 담겨서 전송됩니다. url에 ? ..

Sorting Algorithm
SW/Algorithm & Data Structure 2021. 5. 29. 18:36

Sorting Algorithm Bubble Sort 서로 인접한 두 원소를 검사하여 순서에 맞지 않은 요소를 인접한 요소와 교환하며 정렬하는 알고리즘입니다. 선택 정렬 과 기본 개념이 유사합니다. 장점 구현이 매우 간단합니다. 단점 모든 케이스에 대해서 O(N^2) 입니다. 하나의 요소가 가장 왼쪽에서 가장 오른쪽으로 이동하는 경우 배열의 모든 다른 요소들과 교환되어야 합니다. 특히 특정 요소가 최종 정렬 위치에 이미 있는 경우라도 교환되는 일이 일어납니다. Pseudo code i = N-1 if i == 0, stop j=0 if j == i, go to 3. if array[j] > array[j+1], swap two values j += 1 and go to the 2-2 i -= 1 and ..