2020-11-21-TIL
ToDo
- 폭탄을 밟으면 종료할지 물어보고, 종료하지 않는다면 다시 게임을 처음부터 시작 -> process()가 state 코드를 리턴해야할 것임
- 몬스터를 잡으면 몬스터가 랜덤한 위치에 다시 리스폰 되도록
컬렉션과 문자열
ArrayList.remove() - 값 삭제
ArrayList.remove()는 두 가지로 오버로딩되어 있다. remove(int index)는 지정한 위치의 원소를 지우고, remove(Object o)는 지정한 원소가 처음 나타나는 곳을 지운다.
ArrayList 정렬
정렬 조건이 여러개인 경우
정렬 조건이 여럿이면 Comparator를 이어 붙인다. Comparator.thenComparing()은 첫 번째 비교자로 같다고 판단된 원소를 두 번째 비교자로 다시 비교하는, 사전 순서(lexicographic-order) 비교자를 돌려준다.
enum
우아한형제들 글은 enum으로 상태와 행위를 한곳에서 관리하는 예를 보여 준다. 상수마다 계산식을 따로 가져야 할 때 static 메서드를 흩어 두는 대신 enum 상수에 계산식을 함께 둔다. ordinal()에 의존하면 상수가 중간에 추가될 때 숫자가 가리키는 상수가 바뀌므로 피해야 한다는 점도 짚는다.
String immutable 객체
String Javadoc은 문자열을 상수로 설명한다. 한 번 만들어진 String의 값은 바꿀 수 없다.
String 이어붙이기
문자열을 붙이는 방법은 + 연산자, concat(), StringBuilder.append() 세 가지다. 참고한 글에 따르면 대부분은 +를 쓰고, 상황에 따라 append()를 쓴다.
StringTokenizer
StringTokenizer to String
StringTokenizer로 나눈 토큰을 다시 문자열로 합치는 방법을 찾았다.
파일과 입출력
파일입출력
BufferedReader의 readLine()으로 파일을 한 줄씩 읽을 수 있다. readLine()은 줄 끝의 개행 문자를 포함하지 않고 돌려준다.
자바 경로 얻어내기
현재 작업 디렉터리는 시스템 프로퍼티 user.dir에 들어 있어 System.getProperty("user.dir")로 읽을 수 있다.
자바 줄바꿈 문자
줄바꿈 문자는 운영체제마다 다르다. System.lineSeparator()는 시스템에 맞는 줄 구분 문자열을 돌려준다.
자바 키보드 입력
키보드 입력은 Scanner를 쓰거나 System.in을 BufferedReader로 감싸 읽는다. 참고한 글은 두 방식의 차이를 사용 편의성으로 보고, Scanner가 더 나중에 나온 클래스라고 정리한다.
셸과 프로세스
자바 코드로 쉘 명령어 실행하기, 자바 프로세스 생성
Java에서 외부 프로세스는 Runtime.exec()나 ProcessBuilder로 만든다. ProcessBuilder는 운영체제 프로세스를 만드는 클래스다. NAVER D2 글은 서브 프로세스의 표준 출력 스트림을 실행과 동시에 읽어야 한다고 강조한다. 일부 플랫폼은 표준 입출력 버퍼가 작아서, 스트림을 제때 비우지 않으면 서브 프로세스가 멈추거나 교착 상태에 빠질 수 있다.
쉘 만들기
C로 간단한 셸을 만드는 예제와, 리눅스 커널의 init/main.c, MINT64 OS의 콘솔 셸 소스, 고급 Bash 스크립팅 가이드를 모아 두었다.
Git
git push에서 fatal: The current branch master has no upstream branch.가 나면 원격 저장소와 브랜치를 지정해야 한다. 에러 메시지가 안내하는 대로 git push --set-upstream origin master로 업스트림을 설정한다.
좋은 git 사용 습관 글은 git add .와 git commit -m 두 명령으로만 커밋하는 습관을 좋지 않다고 본다. 커밋 전에 git status로 추적 중인 파일과 새로 추가된 파일을 확인하고, 필요 없는 파일은 .gitignore에 넣으라고 권한다.
개발 환경
마크다운
블로그와 README에 쓸 마크다운 문법을 정리한 Gist를 찾아 두었다.
맥북 한글 깨짐
- iterm2한글깨짐
iTerm2에서 한글 자모가 분리되어 보이면 Preferences > Profile > Text > Unicode에서 Unicode normalization form을 None에서 NFC로 바꾼다.
- 파일 내용 한글깨짐
EUC-KR로 저장된 텍스트 파일을 macOS에서 열면 깨지므로 UTF-8로 변환한다.
Zoom
Zoom 화상회의 사용법을 정리한 글을 찾아봤다. 음소거는 Alt + A나 Spacebar, 비디오 중지는 Alt + V다.
그 밖의 메모
팀 사모예드 / htop
스프링 사용목적
참고한 글은 Spring의 특징을 DI(Dependency Injection)부터 설명한다. 한 클래스가 다른 클래스를 직접 생성해 쓰면 둘 사이에 의존성이 생기고, Spring은 이 의존성을 외부에서 주입해 준다.
오버로딩 vs 오버라이딩
메서드 시그니처는 메서드를 구분하는 역할을 한다. 오버로딩은 같은 이름으로 시그니처(매개변수 목록)가 다른 메서드를 여러 개 정의하는 것이고, 오버라이딩은 상위 클래스의 메서드를 같은 시그니처로 하위 클래스에서 다시 정의하는 것이다. 매개변수 이름은 시그니처에 포함되지 않는다.
참고한 자료외부 출처 43
외부 출처
- 마크다운(Markdown) 사용법
- Java ArrayList remove현재 열리지 않음
- ArrayList (Java Platform SE 8)
- ArrayList 정렬(Sort) 하기
- javaComparator 정렬조건 여러개현재 열리지 않음
- Comparator (Java Platform SE 8)
- 자바 파일 입출력 (txt파일 한 문자씩, 한 줄씩, 한 번에 읽기)
- Git 사용 중 자주 만나는 이슈 정리
- git error 해결법 : git push –set-upstream origin master
- Java Enum 활용기
- 자바 Enum 기본 및 활용
- enum을 문자열로 변경하는 방법
- 불변 객체란 Java Immutable Object현재 열리지 않음
- String (Java Platform SE 8)
- [Java] String 문자열 처리 4 - 문자열 붙이기(concat, +, append)룰루랑랑
- Spring - Spring을 왜 사용하나요?(DI) - 1
- [MacOS] 터미널(iTerm2) 한글 깨짐 해결 방법IfUwanna IT
- [macOS 한글 호환성 2편] 한글 깨짐 수정법
- 맥에서 텍스트 인코딩을 euc-kr에서 utf-8로 변경하기
- java-excute-shell-command현재 열리지 않음
- [Java] Java 코드로 CMD 명령어 실행해 결과값 출력하기
- [리눅스 프로그래밍] 간단한 나만의 쉘(Shell) 만들기
- shell.txt
- linux/init/main.c at 6186313d06dfadbfd0cda5e36e485877d6600179 · torvalds/linux
- mint64os-examples/source_code/chap15/02.Kernel64/Source/ConsoleShell.c
- splug.tistory.com/186현재 열리지 않음
- shell/shell.c
- jhnyang.tistory.com/57현재 열리지 않음
- 고급 Bash 스크립팅 가이드
- Java에서 외부 프로세스를 실행할 때
- ProcessBuilder (Java Platform SE 8)
- java processbuilder현재 열리지 않음
- Java 현재 경로 가져오기현재 열리지 않음
- lelecoder.com/79현재 열리지 않음
- System (Java Platform SE 8)
- [Java] 키보드 입력받는 방법
- 자바 StringTokenizer
- How to change Stringtokenizer to String
- keep-uninvited-guests-out-of-your-zoom-event현재 열리지 않음
- Zoom 화상회의 어플 사용법 총 정리(음소거, 화면공유, 녹화, 채팅 등등)
- 좋은 git 사용 습관
- 코딩교육 티씨피스쿨TCP School
- 메소드 시그니처와 오버로딩 오버라이딩나노쏜
댓글
아직 댓글이 없습니다