목록컴퓨터 (57)
취미생활
기존에 python만 써보다가 요즘은 백엔드를 go로 많이 짠다는 이야기를 들어 golang을 배워보기로 했다. 프로그래밍 시작은 당연히 hello world! 찍어보기 아니겠는가? package main import "fmt" func main() { fmt.Println("Hello, World.") } 대충 시작하는 입장에서 코드를 보고 드는 생각을 적자면, package는 모듈 단위의 이름 선언으로 추정된다. C++로 따지면 namespace 같은 느낌인듯? import는 말 그대로 import이고 C/C++ 기준으로는 include 로 생각하면 될 듯 하다. func은 말 그대로 함수 즉 위 코드는 모듈 선언, 라이브러리 참조, 실행 코드로 이루어져있다.
C++로 개발하다 보면 프로토콜 관련 코딩을 진행할 때 비트단위 변수 제어가 필요한 상황이 자주 생긴다. 그럴 때 마다 등장하는게 구조체 비트 필드이다. 구조체 비트 필드는 별 거 없다. 구조체의 변수들을 비트 필드로 설정해놓은 것이 구조체 비트 필드다. 비트 필드는 쉽게 말해서 비트 값을 제한해둔 변수라고 생각하면 된다. 예시 코드는 아래와 같다. //비트 필드 예시 코드 unsigned int _data1:8; // 8bit unsigned int _data2:4; // 4bit unsigned int _data3:3; // 3bit 이렇게 비트 필드를 선언할 수 있는데, 정수 자료형은 모두 사용 가능하지만 가급적이면 unsigned int, int, bool을 사용하라고 권장하고 있다. https:..

예시 코드 .text .global _start _start: mov r0, #1 ldr r1, =message ldr r2, =len mov r7, #4 swi 0 mov r7, #1 swi 0 .data message: .asciz "hello world\n" len = .-message * 위 예시 코드는 ARM 리눅스 환경에서만 동작합니다. 빌드 명령어 $as 파일이름 -o 출력파일이름 $ld 출력파일이름 -o 실행파일이름 $./실행파일이름 참고사이트 : http://kerseykyle.com/articles/ARM-assembly-hello-world ARM assembly hello world tutorial How to write a simple hello world program in AR..

작업하다가 이렇게 하는게 아니구나 라는 생각이 들 때가 있다. 지금 작업 중인 파일만 이전 버전으로 되돌리고 싶은데 전체 리셋을 하기 위해 파일을 백업해야 할까? 귀찮아 죽겠는데... 그럴 땐 특정 파일에 이 명령어를 입력해주자 git checkout 파일이름 짜잔! 아주 손쉽게 작업 이전으로 되돌리는데 성공했다. 그런데 문득 든 생각... 특정 지점으로 파일을 복구할 수도 있을까? 해당 파일을 test commit 시점으로 되돌려보겠다. 일단 git log에서 커밋 코드를 복사한 뒤에 아래 명령어와 같이 사용한다. git checkout 커밋코드 파일이름 짜잔! 참고로 HEAD~1, HEAD~2, HEAD^1 를 커밋코드에 넣어서 사용할 수도 있다. 정말로 해당 파일이 이전 커밋 시점으로 되돌린 건지 ..

git merge를 진행하다보면 실수로 merge를 할 경우 되돌리다가 branch가 꼬이는 현상이 생기는데 아래 예시를 보자 해당 상황은 feature에서 시작된 branch인 mistake가 master와 merge 하였다. 이 때 mistake branch에서 commit을 취소하려면 아래 코드를 입력하면 된다. git reset --hard HEAD^ 아주 손쉽게 되돌아 왔다. 그렇다면 mistake branch를 master로 옮기는 방법도 있을까? 당연히 있다. 이럴 때는 HEAD^2를 같이 입력해주면 된다. git reset --hard HEAD^2 짜잔, 아주 손쉽게 branch를 옮겨가는데 성공했다. 참고로 이거 관련해서 좀 찾아보다가 HEAD~2가 HEAD^2와 같다는 해외 블로그를 봤..

[pi@NAS]$ sudo apt-get install youtube-dl 깃허브 주소 GitHub - DJmong/youtube-dl_mp3_script: youtube-dl command option is too long, and I need to make a url list file to download aut youtube-dl command option is too long, and I need to make a url list file to download automation - GitHub - DJmong/youtube-dl_mp3_script: youtube-dl command option is too long, and I need to make a... github.com 중국 출장 중에..

$git reset --hard 가끔씩 모든 걸 되돌리고 싶을 때가 있다. 이럴 때는 git reset --hard 명령어를 통해 모든 코드를 되돌릴 수 있다. 근데 또 그럴 때가 있다. 되돌린 코드를 되돌리기 전으로 되돌리고 싶을 때가 있다. 이럴 때는 git reflog 명령어를 통해 다음과 같은 방식으로 git reset --hard 명령어를 취소할 수 있다. $git reflog --oneline # 되돌릴 commit code 확인 $git reset --hard 아래 예시는 $git reset --hard 명령어를 통해 이전 commit으로 되돌린 상황이다. 이렇게 되면 기존에 작업했던 코드가 전부 날아간 상황이 되버리는데, 당황하지 말고 $git reflog --oneline 명령어를 입력해..

리눅스 시스템에서 디렉토리는 하드 링크를 할 수 없다. 그 이유를 알기 위해서 알아야 할 것이 먼저 3개가 있다. 1. 리눅스 파일 시스템은 트리 구조로 되어있어 순환 방식으로 만들 수 없다. 2. 하드 링크는 똑같은 파일을 호출할 위치가 하나 더 생기는 방식이다. 3. 트리 구조에서 하드 링크를 허용할 경우 트리가 순환 방식이 되기 때문에 문제가 생긴다. 일단 첫번째 이유 부터 설명을 하자면, 리눅스의 파일 시스템은 아래 그림과 같은 트리 구조로 되어있다. 트리 구조는 루트 노드부터 자식 노드까지 위에서 아래로 이어진 계층 구조이며 자식 노드가 부모 노드를 가리킬 수 없는 구조다. 두번째로 알아볼 내용은 링크와 관련된 내용이다. 리눅스 파일 시스템의 구조에 대해 간단히 알아봤으니 다음은 링크에 대해 알..