전체 글

개발 블로그
·CS
개발자가 작성한 소스코드에서 명령어로컴퓨터는 Java나 C/C++, Python, JavaScript 등의 언어로 작성된 소스코드를 바로 이해해서 실행하는 것이 아니다.컴퓨터는 데이터를 재료삼아 명령어를 이해한다. 소스코드는 실행되기 전에 (명령어+데이터)로 변환되어 실행된다.소스코드: 사람(개발자)가 이해하기 편한 언어 -> 고급 언어명령어 & 데이터: 컴퓨터가 이해하기 편한 언어 -> 저급 언어즉, 고급 언어로 작성된 소스코드는 내부적으로 저급언어로 구성된 명령어와 데이터로 변환된다.저급 언어의 두 종류기계어(컴퓨터가 직접 이해하는 언어)어셈블리어C/C++, Java로 작성한 동일한 코드를 기계어나 어셈블리어로 변환했을 때 CPU의 종류나, 컴파일러 종류에 따라 다르게 변환될 수 있다.고급 언어에서 ..
·scrcpy
다음과 같이 여러대의 기기가 연결되어있는 경우가 있다.이런 경우 이전 글에서처럼 단순히scrcpy --always-on-top을 실행하게 되면위와 같은 에러가 나게된다. 이때에는 -s 명령어를 추가해서 하나의 기기만 미러링할 수 있다.scrcpy -s [기기 IP주소:포트번호] --always-on-top
·Git
Git을 사용하면서 작업을 하다가 현재까지 작업했던 내용을 모두 삭제하고 마지막 커밋했던 시점으로 되돌리려면 2가지 방법이 있다.1. Github Desktop을 이용하는 경우위 이미지처럼 changed file에 우클릭하면 'Discard All Changes' 와 'Stash All Changes' 라는 옵션이 있는데 Discard를 하게 되면 하단에 있는 변경 내역들이 모두 삭제된다. 참고로 'Stash All Changes'를 누르게 되면 변경사항들은 모두 임시저장 Stack에 들어가게 되고 변경사항들은 삭제된다.'Stash All Changes'를 선택시 'Stashed Changes'가 나오게 되고 위 사진과 같이 Stash 된 변경사항들을 Restore 할지 Discard 할지 선택하면 된다..
·Git
프로젝트를 진행하다보면 Main branch에 여러 branch를 만들고 작업하는 경우가 있을 것이다. 예를 들어 a branch에서 작업하다가 main branch에서 급하게 수정해서 반영해야하거나, 다른 동료의 코드를 봐주어야할 때 지금까지 작업했던 내용들을 commit하고 branch를 바꾸기에는 애매한 상황이 있을 것이다.(commit 하기엔 애매한 코드라던가..) 그런 경우 git stash 를 통해 지금까지 작업한 내용을 임시저장하고 branch 전환하면 매우 편리하다.1. git stash 로 임시저장하기 위와 같이 a-branch에서 작업하던 내용이 있을 경우 git stash 를 통해 임시저장을 할 수 있다. git stash를 할 때에도 2가지 방법이 있다.- git stashgit s..
·Git
Git을 사용하면서 프로젝트를 진행하다보면 이전에 커밋했던 상태의 코드를 확인해보고 싶을 때가 있다.1. 터미널에 git log를 통해 Commit Id를 확인하자위에서부터 최신 커밋 순으로 나열된다. 커밋기록이 많은 경우 최신부터 일부 commit만 표시되고 터미널 하단에:[커서 깜빡이는 중..]위와 같이 표현될텐데, 더 이전의 기록을 보고싶다면 '엔터'를 치거나, 그만보고 싶으면 'q'를 누르면 터미널 명령어를 누를 수 있는 상태로 돌아오게 된다.2. 원하는 시점의 commit id에서 앞 7자리를 복사하고 git checkout [7자리]그럼 IDE의 코드가 그 시점의 커밋 상태로 돌아간 것을 확인할 수 있다.- Github를 사용하는 경우Repository안에서 Code 탭에서 Commits를 클..
·Git
.gitignore는 프로젝트를 github에 올릴 때 .gitignore에 명시된 파일은 github에 적용되지 않도록 해준다. API key나 Client ID와 같은 개인정보가 담긴 파일을 제외하고 github에 push해야하는 경우 적합하다. 그리고 각 OS 마다 프로젝트를 열 때 생성되는 파일이 달라 충돌이 일어날 수도 있기 때문에 gitignore를 통해서 그런 파일들은 무시해주는 것이 좋다. .gitignore에 들어갈 파일 생성하기 그럼 gitignore에 들어가야하는 파일은 무엇일까? 아래 사이트에서 자신의 OS, 언어, 개발환경(IDE) 등을 입력하면 필요한 gitignore 파일들이 자동으로 생성된다. https://www.toptal.com/developers/gitignore/ g..
·Java & Kotlin
이진탐색(Binary Search)를 하기 위해서는 배열이 정렬되어 있어야한다. 이진탐색은 배열을 계속해서 반으로 쪼개나아가면서 탐색하는 알고리즘이다. 위와 같은 배열이 있을 때 '43'원소의 index를 찾고자 하는 경우 배열의 양 끝의 index를 left와 right로 두고 반복문을 시작한다. 이 경우 mid의 index는 (left + right) / 2 가 된다. mid에 해당하는 원소가 '43'이 아니므로 left를 (mid + 1)로 할당함으로써 기존 mid index를 포함한 왼쪽은 탐색하지 않는다. 그럼 위와 같이 left와 mid가 새롭게 할당된다. 새로운 mid에 해당하는 원소도 43이 아니므로 mid를 포함한 오른쪽은 탐색에서 제외하고 right를 (mid - 1)로 다시 할당해 준..
·Java & Kotlin
기본형 데이터의 경우 간단하게 Arrays.sort() 와 같은 메서드로 정렬이 가능하다. 하지만 특정 객체의 경우 기본형 타입과는 다르게 정렬 기준을 정의해야 하는 경우가 있다. 이때 Java의 Comparable을 이용할 수 있다. Java의 Comparable은 interface이기 때문에 이를 상속받는 class에서는 Comparable interface에 있는 compareTo를 구현해야한다. 위 사진에서 보이듯 compareTo는 비교 결과에 따라 int를 반환한다. 들어온 객체가 자신보다 크면: 음수 리턴 들어온 객체와 자신이 같으면: 0 리턴 들어온 객체보다 자신이 크면: 양수 리턴 이를 이용하여 x, y 좌표를 입력 받고 x 기준으로 오름차순으로 정렬하고 x가 같다면 y 기준으로 오름차순..
·Java & Kotlin
선택정렬 해당 위치에 들어갈 원소를 결정한다. 위와 같은 배열을 오름차순으로 정렬하고자 할 때 i의 index를 0에 고정하고 j의 index를 1부터 끝까지 순회하면서 가장 작은 값을 index 0에 배치한다. 그 다음 i의 index를 1에 고정하고 j의 index를 2부터 끝까지 순회하면서 가장 작은 값을 index 1에 배치한다. 위 과정을 반복하게 되면 배열은 결국 오름차순으로 정렬이 된다. public class Main { public int[] solution(int[] input) { for (int i = 0; i < input.length - 1; i++) { int minIdx = i; for (int j = i + 1; j < input.length; j++) { if (input..
·Algorithm/Java
문제 링크: https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제) 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레..
wbnh09
devAndroid