일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- union find
- SQL
- two pointer
- String
- DP
- Stored Procedure
- binary search
- Brute Force
- 다익스트라
- 그래프
- MYSQL
- 이진탐색
- Dijkstra
- Hash
- Two Points
- Trie
- 스토어드 프로시저
- Today
- Total
목록분류 전체보기 (418)
codingfarm
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dtMbse/btqMdUNLQCm/VKNvUG078fB4kJybgmCOYK/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/touch.1posix.html 빈 파일을 새로성생하거나 파일의 마지막 접근 시간 또는 수정시간을 변경한다. 인자로 지정한 파일이 존재하지 않으면 내용이 없는 빈 파일을 생성한다. 파일이 존재하면 현재 시간 또는 옵션에 지정한 시간으로 파일의 관련 시간을 변경한다. 옵션 -a : 접근 시간만 변경한다. -m : 수정 시간만 변경한다. -t : [[CC]YY]MMDDhhmm[.ss] : 시간을 집적 입력한다. touch file_name 비어있는 파일이기에 크기가 0으로 설정된다. 시간표시 형식 : [[CC]YY]MMDDhhmm[.ss] CC : 연도의 첫 두자리 YY : 연도의 마지막 두자리 MM : 달(01~12 범위) DD ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RUkVA/btqMhtg5hV7/WzBCfktjSsafGpqafQPJkK/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/ln.1posix.html 링크를 생성한다. 옵션 -s : 심벌릭 링크 파일을 생성한다. ln test lntest ln -s test lntest 하드링크 만들기 : -l 옵션 리눅스에서는 하드링크 기능으로 파일에 여러개의 이름을 붙일 수 있다. 이때 붙이는 파일명을 하드링크라 한다. ln 명령으로 실행파일 a.out의 하드링크인 a_ln.out을 만들었다. a.out과 a_ln.out의 inode값이 같은것을 볼 수 있다. 3번째 열의 숫자가 1에서 2로 바뀌었음을 확인하라. 결국 a.out과 a_ln.out은 이름만 다르지 같은 파일이다. cp 명령어로 완전 독립적으로 복제하는 것과는 달리 심벌릭 링크는 원본 파일이 변경되..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rNwGj/btqMdV0asdx/GzexYohVpm4qS87MMyY9G0/img.png)
기존 파일에 새로운 이름을 붙이는것 복잡한 디렉터리 계층 구조를 포함하여 파일명이 복잡할경우, 짧게 줄인 다른 이름을 붙여 원하는 디렉토리에 두게끔 한다. 하드링크와 심벌릭 링크가 있다. 하드링크 : 기존 파일에 새로운 파일명을 추가로 생성 파일에 여러개의 이름을 붙인다고 볼 수 있음 심벌릭 링크 : 원본 파일을 가리키는 새로운 파일을 만드는것 윈도우의 바로가기 기능과 유사 리눅스 파일 구성 우선 리눅스에서 파일이 어떻게 관리되는지 알아본다. 리눅스에서는 파일이 '파일명 + inode + 데이터블록'으로 구성된다. 파일명 : 사용자가 파일에 접근할 때 사용하는 파일의 이름 inode : 파일에 대한 정보를 가지고 있는 특별한 구조체 외부적으로는 번호로 표시된다. 내부적으로는 파일의 종류와 크기, 소유자,..
manpages.ubuntu.com/manpages/focal/en/man1/rm.1fun.html remove의 줄임말 파일을 삭제하는 명령이다 옵션 -r : 디렉터리를 삭제한다. -i : 파일을 정말 삭제할 것인지 물어본다. rm file rm -r directory
manpages.ubuntu.com/manpages/focal/en/man1/mv.1.html move의 줄임말이다. 파일을 다른 디렉토리로 이동하거나 파일명을 바꿀때 쓴다. 옵션 -i : file2가 존재하면 덮어쓸 것인지 물어본다. mv file1(directory1) file2(directory2)
manpages.ubuntu.com/manpages/focal/en/man1/cp.1.html 파일(디렉토리 포함)을 복사할때 쓰는 명령어 copy의 줄임말이다. 옵션 -i : file2가 존재하면 덮어쓸 것인지를 물어본다. -r : 디렉터리를 복사할 때 지정한다. cp file1 file2 cp f1 f2 f3 dir1 cp -r dir1 dir2
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lvfB5/btqMdVlowKD/jByOKzqOuZKcSROFugkaA1/img.png)
Git은 파일을 Untracked와 Tracked(Unmodified, Modified, Staged)상태로 분류한다. Untracked : Git에 의해 관리받지 않는 상태 Tracked : Gitd에 의해 관리받는 상태 Unmodified : 마지막 커밋 이후 수정이 이루어지지 않음 Modified : 마지막 커밋 이후 수정이 일어남 Staged : 커밋을 하기위해 사전에 거치게 되는 상태 파일의 상태 확인하기 git status를 통해 파일의 상태를 확인할 수 있다. 현재 작업중인 branch, 파일 상태를 보여준다. 프로젝트에 README 파일을 새로 만들고 git status를 실행하면 Untracked files에 들어있음을 확인 가능하다. README파일이 Untracked files에 속해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yivEG/btqLFontGri/N7w35Ky3k41gmJnChgkD01/img.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include #include #include using namespace std; int main(void) { int m, n; cin >> m >> n; vector mat; mat.assign(m, vector(n, 0)); for (int row = 0; row mat[row][col]; string ret; ret = "\\begin{bmatrix}"; for (int row = 0; row
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kBlvT/btqLBNWKsvz/CMVpZG3mdBK7k8KkgSrBtK/img.png)
0. 개요 소켓을 이용하면 인터넷의 복잡한 하부구조에 대한 세부 지식 없이 손쉽게 네트워크 프로그램을 개발할 수 있다. 이번장에서 배울 내용 소켓이란 무엇인가? 네트워크와 네트워크 프로그램의 관계 네트워크 프로그램을 작성하기 위해서 알아야 하는 네트워크의 특성 네트워크 프로그램과 소켓과의 관계 1. 소켓 소개 기존의 TCP/IP 4계층과 OSI 7계층은 세분화를 통해 전문화를 이끌어내도록 의도되었다. 하지만 계층을 나누어 전문화하고, 다시 통합하여 단순화 했음에도 여전히 네트워크 프로그램 개발 과정은 복잡하다. 이를 위해 '네트워크 프로그램 개발을 위한 새로운 계층'을 만들었으며 이것이 소켓이다. 소켓의 계층구조는 TCP/IP 계층에서 응용계층 바로 밑에 위치한다. 소켓계층은 개발자들이 응용계층에만 집중..
Git의 기초적인 사용방법 들에 대해서 배운다. Git에서 자주 사용하는 명령어들을 이곳에서 전반적으로 배울 예정이다. 저장소를 만들고 설정하는 방법 파일을 추적하거나(Track) 추적을 그만두는 방법 변경 내용을 Stage하고 커밋하는 방법 파일이나 파일 패턴을 무시하도록 Git을 설정하는 방법 실수를 쉽고 빠르게 만회하는 방법 프로젝트 히스토리를 조회하고 커밋을 비교하는 방법 리모트 저장소에 Push하고 Pull 하는 방법 Git 저장소 만들기 Git 저장소를 만드는 방법은 2가지다. 기존 프로젝트나 디렉토리를 Git 저장소로 만드는 방법 다른 서버에 있는 저장소를 Clone 하는 방법 1. 기존 디렉토리를 Git 저장소로 만들기. Git 저장소로 만들 디렉토리로 이동한다. cd /home/user/..
gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95 vi 대신 편리하게 쓸 수 있는 vim 설치 및 설정에 대해 다룬다. 설치 sudo apt-get install vim 설정 아래 명령어를 입력한다. 그러면 $home 루트에 .vimrc 파일이 생성되면서 편집기가 열린다. vi ~/.vimrc 그리고 아래의 내용을 복붙한다. set number " line 표시 set ai " auto indent set si " smart indent set cindent " c style indent set shiftwidth=4 " 자동 공백 채움 시 4칸 set tabstop=4 " tab을 4칸 공백으로 set i..
Git을 사용하기 위해 설치하는 방법을 알아보겠다. 이는 Linux 사용자 기준이다. Linux에서 패키지로 Git을 설치할 때는 각 배포판에서 사용하는 패키지 관리 도구를 사용하여 설치한다. Fedora에서는 아래와 같이 한다. sudo yum install git-all Ubuntu 등의 데비안 계열 배포판에서는 apt-get을 사용한다. sudo apt-get install git-all 최초 설정 'git config'라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git은 이 설정에 따라 동작한다. 설정에 사용하는 설정파일은 세가지가 된다. /etc/gitconfig 파일 : 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nDxF1/btqK84cFMkE/0diih9BwYGRu22QJxsZm6k/img.png)
Git의 목표 빠른 속도 단순한 구조 비선형적인 개발(수천개의 동시 다발적인 브랜치) 완벽한 분산 Linux 커널 같은 대형 프로젝트에도 유용할것(속도나 데이터 크기 면에서) Git은 2005년 탄생하고 나서 아직도 초기 목표를 유지 하고 있다. 그러면서 갈수록 개선되고있다. Git 기초 Git의 핵심은 무엇일까? 이 질문은 Git을 이해하는데 매우 중요하다. Git이 무엇이고 어떻게 동작하는지 이해한다면 쉽게 Git을 효과적으로 사용할 수 있다. Git은 Sugversion이나 Perforce 같은 다른 VCS들과 인터페이스는 유사하지만 정보를 취급하는 방식이 다르다. 차이가 아니라 스냅샷 Subversion과 Subversion 비슷한 놈들과 Git의 가장 큰 차이점은 데이터를 다루는 방법에 있다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bODnN9/btqK7cQfvRr/9MZQeQiKznIbqnRnFd0H3k/img.png)
버전관리란? VCS는 파일변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. VCS를 사용하면 각 파일을 이전상태로 되돌릴 수 있고, 프로젝트를 통째로 이전상태로 되돌릴 수 있다. 시간에 따라 수정내용을 비교해 볼 수 있다. 수정자의 정보가 남아, 누가 문제를 일으켰는지 볼 수 있다. 누가 만든 이슈인지 볼 수 있다. 소프트웨어 소스코드를 넘어서서 모든 컴퓨터 파일의 버전을 관리할 수 있다. 그래픽 디자이너나 웹 디자이너도 VCS를 사용할 수 있다. VCS를 쓰면 위와같은 장점들을 큰 노력없이 이용할 수 있다. 로컬 버전 관리 버전관리를 위한 제일 원시적인 방법은 디렉토리로 파일들을 통째로 복사하는것이다. 이는 간편하면서도 매우 확실하다. 하지만 작업하던 디렉토리를..
manpages.ubuntu.com/manpages/focal/en/man1/tail.1posix.html 해당파일 뒷부분의 몇행을 출력한다. 기본값은 10으로 뒷부분의 10행이 출력된다. tail [option] file 옵션 +행번호 : 지정한 행부터 끝까지 출력한다. -숫자 : 화면에 출력할 행의 수를 지정한다. -f : 파일 출력을 종료하지 않고 주기적으로 계속 출력한다.
manpages.ubuntu.com/manpages/focal/en/man1/less.1.html more 명령은 지나간 내용을 다시 볼 수 없다는 단점을 가지고 있다. 이런 불편함을 개선한것이 less 명령이다. less file j : 한줄씩 다음행으로 스크롤 k : 한줄씩 이전행으로 스크롤 spacebar, ctrl + f : 다음화면으로 이동 ctrl + b : 이전 화면으로 이동 q : 종료
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/k7TER/btqLep1kbB5/4RBDRpd0kmBYhbIa0zTfq0/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/more.1posix.html cat 명령은 파일 내용을 연속적으로 출력하므로 간단한 내용의 확인에는 무리가 없다. 내용이 많을경우 스크롤되므로 화면단위로 내용을 출력하는 more가 유용하다. more [option] file spacebar : 다음화면 출력 enter : 한줄씩 스크롤 /문자열 : 해당 문자열을 찾아 이동 q : 종료 b : 1페이지씩 앞으로 이동
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7Eu2F/btqK7ZQlzQJ/ixcRj1GvIgVZ4fkdHMJ750/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/cat.1plan9.html 파일의 내용을 출력하는 명령어 텍스트파일에 주로 쓰이며 바이너리파일에 쓰면 화면이 깨진체 나올것이다. cat [option] file [other_files...] 옵션 -n 출력시 앞에 행 번호가 붙어서 출력된다. 이 행번호는 원래 파일에 없다. 파일 복사 cat orgfile > copiedfile orgfile의 내용을 copiedfile에 그대로 덮어쓴다. cat 명령어로 파일만들기 cat > filename 위와 같은 명령어로 파일을 만들 수 있다. 파일 병합 cat file1 [file2...] > otherfile >를 기준으로 왼쪽에 있는 파일들의 내용을 합쳐서 오른쪽에 있는 파일로 합..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sx8no/btqLcThhNXn/IKkpPZjVjLpDpxcl72YEnk/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/rmdir.1.html 디렉터리를 삭제한다. rmdir [option] directory rmdir 명령어로 디렉터리가 삭제되었음이 확인됨 주의 rmdir명령어로 디렉터리를 삭제하려면 해당 디렉터리가 비어있어야 한다. ls -R 명령어로 from 디렉터리가 비어있지 않음을 확인 rmdir 로 from이 삭제가 되지 않음이 확인됨 비어있지않은 디렉터리의 삭제는 rm명령어로 해야한다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n7ZkD/btqLf6ApWk8/CBgENVFr8IH4d0goGRMWnK/img.png)
manpages.ubuntu.com/manpages/focal/en/man1/mkdir.1posix.html 리눅스에서 사용자가 디렉터리를 생성하는데 쓰이는 명령어이다. 해당 디렉터리에서 사용자가 쓰기권한이 있어야 파일이나 디렉터리를 생성 할 수 있다. mkdir [option] directory [other_directory...] 사용예 동시에 여러개의 경로를 만드는것도 가능하다. 옵션 자주 쓰이는 옵션들에 대해 알아본다. -p 생성할 디렉터리로 지정한 경로 중 중간 단계의 디렉터리가 없을 경우 자동으로 생성한다. -p를 빼먹었을때 오류가 발생함을 확인가능 ls -R 명령어로 확인결과 중간 경로들이 정상 생성되었음이 확인되었다.