Skip to content

Instantly share code, notes, and snippets.

@RyanJeong
RyanJeong / PRINTS_ITSELF.md
Created August 11, 2019 07:57
A program that prints itself
char* me; void main(void) {printf(me); putchar(13); putchar(34); printf(me); putchar(34); putchar(';');} char* me = 
"char* me; void main(void) {printf(me); putchar(13); puchar(34); printf(me); putchar(34); putchar(';');} char* me=";
@RyanJeong
RyanJeong / GITHUB.md
Last active September 19, 2022 01:55
Github 사용법

Github 기본 개념

세 가지 상태

Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리

  • Committed: 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미
  • Modified: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 의미
  • Staged: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미
    워킹 트리, Staging Area, Git 디렉토리

Git의 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결됨

  • Git directory: git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳으로, 다른 컴퓨터에 있는 저장소를 clone할 때 git directory가 생성됨
  • Working tree: 프로젝트의 특정 버전을 checkout 한 것으로, git directory 안에 압축된 데이터베이스에서 파일을 가져와서 working tree 생성
@RyanJeong
RyanJeong / A_WAY_TO_CONVERT.md
Last active January 28, 2024 14:53
A way to convert char[] to/from TCHAR[] in C/C++(WinAPI)

TCHAR -> char

#define SIZE 1024

TCHAR src[SIZE] = L"This string will be char type";
char  dest[SIZE];

WideCharToMultiByte(CP_ACP, 0, src, lstrlen(src), dest, SIZE, NULL, NULL);
@RyanJeong
RyanJeong / CALLBACK.md
Created August 28, 2019 07:49
What is a callback function?

A callback function is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.

/*
 *  meaningOfLife():  The callback method 
 */
function meaningOfLife() { 
  log("The meaning of life is: 42"); 
} 

/*
@RyanJeong
RyanJeong / DELETE_ALL_COMMITS.md
Created August 29, 2019 12:01
A way to delete all commit history
# 1. Create orphan branch
$ git checkout --orphan temp
Switched to a new branch 'temp'

# 2. Add all files to newly created branch
$ git add .

# 3. Commit
$ git commit -m "The first commit"
@RyanJeong
RyanJeong / VI.md
Last active November 19, 2021 03:47
VI default setting

$ sudo apt update && sudo apt install vim-gtk -y

$ vi ~/.vimrc

set number
syntax on
set ts=2
set sw=2
set sts=2
set expandtab
@RyanJeong
RyanJeong / GDB.md
Last active November 14, 2019 07:35
GDB Manual

코어파일 분석하기

  • 코어파일은 충돌할 당시 프로세스의 메모리 이미지를 덤프한 것이다.
    코어 파일을 gdb와 함께 사용하여 프로그램의 상태를 조사하고 실패 원인을 규명할 수 있다.
    어떤 예기치 않은 일이 발생하여 비정상적인 종료가 발생할 때 운영체제는 디스크에 코어 파일을 남긴다.
    메모리에 관한 문제는 Checker 패키지를 사용하여 예방할 수 있으나, 메모리 fault를 일으키는 경우에는 충돌하면서 파일을 덤프한다.
    코어 파일은 일반적으로 프로세스를 실행시킨 현재 작업 디렉토리에 생성되지만 프로그램 내에서 작업 디렉토리를 바꾸는 경우도 있다.

  • 보통 리눅스는 부팅 시 코어 파일을 만들지 않도록 세팅되어 있다. 코어 파일을 만들도록 설정하고자 한다면 셀의 내장 명령을 사용한다.

  1. 만약 C쉘 호환 쉘(tcsh)을 쓰고 있는 경우
@RyanJeong
RyanJeong / MYSQL_UBUNTU.md
Created November 19, 2019 05:57
use mysql.h on Ubuntu
  • mysql.h 없을 경우
$ apt-get install libmysqlclient-dev
  • mysql.h의 위치 반환하는 명령어
$ mysql_config --cflags 
@RyanJeong
RyanJeong / CCMINER.md
Created December 31, 2019 08:16
Litecoin GPU Mining on Linux
  1. Install VGA driver and CUDA
  2. Edit the .bashrc file from the root user and add the following lines at its end.
$ vi /root/.bashrc

...

export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.1/bin:$PATH
@RyanJeong
RyanJeong / SITES.md
Created January 9, 2020 09:36
Programming reference sites