본문 바로가기

분류 전체보기

Git 명령어 정리 Pull 명령어 Branch 명령어 Pull 명령어 'origin'은 clone 할시 자동으로 설정되는 원격 저장소의 이름이다. 'master'는 로컬 브랜치 'origin/master'는 원격 저장소 'origin'의 'master' 브랜치를 나타낸다. 위의 경우와 같이 원격 저장소와 로컬 저장소 강의 차이가 발생하는 경우 pull을 실행하여 소스를 병합한다. Branch 명령어 1) Brach 목록 보기 및 관리하기 # 모든 Branch 목록 보기 $ git branch -a # Branch 생성하기 $ git branch # Branch 전환하기 $ git checkout # Branch 생성과 동시에 전환하기 $ git checkout -b # Brach 이름 변경하기 $ git branch -m.. 더보기
Miscellaneous 1) python -m 의 의미 e.g. python -m canmatrix.cli.convert [args] -m 뒤에는 모듈 이름이 온다. -m은 sys.path에서 모듈을 검색하고 모듈을 실행한다. (파일 canmatrix.cli.convert.py 의 __main__ 모듈을 실행 한다) 즉, 인터프리터로 하여금 canmatrix.cli.convert를 모듈 취급하게 한다. 해당 옵션은 빌트인 모듈이나, C로 작성된 확장 모듈 파이썬 모듈 파일을 가지고 있지 않기 때문에 사용할 수 없다. 2) for-else문 - 파이썬에는 for-else문이 있다. - for문을 모두 완수(?) 하고 통과할 경우 else: 구문이 실행된다. - break 등으로 for문이 완료 되지 않았다면 실행되지 않는다. f.. 더보기
수준 높은 회사가 C언어 자료형을 사용하는 방법 Win32, MFC 등과 같은 큰 규모의 시스템 프로그래밍 API 혹은 칩 벤더사의 SDK를 보면 자료형을 예술적(?)으로 사용한다. 본인이 느낀 공통점은 다음과 같다. Base 자료형을 먼저 정의 Base 자료형을 상속받은(혹은 원소로 하는) 새로운 자료형 정의 상황에 맞는 혹은 라이브러리 별 자료형을 새로 정의 이런 식으로 자료형을 만들면, 구조체 형변환을 통해 필요한 부분만을 읽어와서 수정하는 등 자유 자재로 활용이 가능하다. 말로 표현하긴 쉽게 와닿지 않을 것 같아서 예시를 들어 설명을 해본다. 먼저, BaseType typedef struct _BASE { uint16_t ByteAllocated; # 데이터를 표현하는 정보 1 uint8_t Bitlength; # 데이터를 표현하는 정보 2 u.. 더보기
A* 알고리즘(A Star Algorithm) 1. 개념 2. 시각화 3. 코드 1. 개념 최단경로를 찾는 그래프 탐색 알고리즘 중 하나입니다. 다익스트라 알고리즘과 유사하나 차이점은 각 꼭지점 x에 대해 그 꼭지점을 통과하는 최상의 경로를 추정하는 순위값인 "휴리스틱 추정값" h(x)를 매기는 방법을 이용한다는 점에서 차이가 있습니다. (h(x) 값을 정확하게 구할 수 없어도 괜찮습니다) 시작노드와 목적지 노드를 분명하게 정해 놓고, 이 두 노드간의 최단 경로를 파악합니다. 휴리스틱 추정값을 어떤 방식으로 제공하느냐에 따라 최단경로 파악 성능이 결정됩니다. A* 알고리즘은 출발 꼭지점으로 부터 목표 꼭지점까지의 최적 경로를 탐색하기 위한 것입니다. 이를 위해서는 각각의 꼭지점에 대한 평가 함수 f(n)를 정의해야 합니다. $ f(x) = g(x) .. 더보기
입 출력 속도 개선 한 줄 입력 from sys import stdin n = int(stdin.readline()) 리스트 입력 _list = list(map(int, stdin.readline().split())) # 한줄 읽어 들이고, 공백을 기준으로 분할 한뒤, int로 맵핑한다. 2차원 배열 입력 arr = [] for i in range(col_len): arr.append(list(map(int, stdint.readline().split()))) # append를 쓰는 것이 arr[i]로 접근 하는 것 보다 조금 빠르다. [Reference] https://breakcoding.tistory.com/109 더보기
[Data Structure] List ▶ 2차원 배열 생성 3가지 방법 1) arr = [ [0] * cols ] * rows : 하나의 [0] * cols를 모든 rows의 index에서 가리키는 형상이다. : 따라서 하나의 열만 수정한다 하더라도, 모든 열이 다 수정된다. : 추천하지 않는 2차원 배열 생성 법 2) 가장 추천하는 방법 arr = [ [0 for _ in range(cols)] for _ in range(rows) ] 혹은 arr = [ [0] * cols for _ in range(rows) ] 3) arr = [] for _ in range(cols): col = [] for _ in range(rows): col.append(0) arr.append(col) ▶ 2차원 배열 생성시 속도 개선 방법 mylist = [.. 더보기
ARM ToolChain 관련 문서 ※ 본 포스팅은 armlink, armcc 사용자 가이드를 요약 및 번역한 것입니다. 오역이 있을 수 있으며, 댓글 남겨 주시면 수정하도록 하겠습니다. 문서 링크는 아래에 있습니다. 1. 읽어 볼만한 ARM ToolChain 문서 종류 - Armcc User Guide (ARM DUI 0375) : armcc 컴파일러의 특징을 설명 - ARM C and C++ Libraries and Floating-Point Support User Guide (ARM DUI 0378) : ARM C, C++ 라이브러리, ARM C microlib 특징을 설명. - Armasm User Guide (ARM DUI 0379) : armasm, 어셈블러의 특징을 설명 - Armlink User Guide (ARM DUI 0.. 더보기
[JAVA] 디컴파일 및 컴파일 방법 시나리오 : .class가 모여있는 JAVA 플러그인에서 특정 기능을 수정하고 다시 컴파일하려고 한다. 0. Jar 파일 압축 풀기 >>> jar -xvf {jar 파일} 1. jd_gui 실행 파일을 이용해 먼저 .class 파일을 확인한다. 컴파일된 class 파일을 디컴파일해서 보여주는 것이라 수정할 수 없다. e.g. jd-gui-0.3.5.windows 2. JAVA 디컴파일러를 이용해 .java 파일로 만들어 준다. e.g. jad158g.win, 프롬프트 창에서 jad 명령어 이용 >>> jad -o -r -sjava -dsrc tree/**/*.class 3. 컴파일 해준다. 4. jar 명령어 이용하여 하나의 파일로 압축해준다. >>> jar cvf [파일명].jar -C . [압축할 파.. 더보기