본문 바로가기

전체 글61

[요약] Contributing to Open Source Can Change Your Life - Here’s How to Do It https://www.youtube.com/watch?v=CML6vfKjQss 요즘의 GitHub은 새로운 형태의 resume이다. 한 번에 엄청난 양의 코드를 작업할 필요가 없다. 심지어 꼭 코드가 아니어도 되고, 문서화에 기여하는 것만으로도 환영받을 것이다. GitHub에서 contribute할만한 repo 찾기 GitHub > Explore에서 둘러보기 여기 등장하는 모든 repo들을 일일이 확인하는 것은 추천하지 않음 Topics에서 'good first issue', 'contribution welcome' 등의 topic 내에서 골라보는 것도 좋다. https://github.com/topics/good-first-issue https://github.com/topics/contribution.. 2023. 5. 1.
Java에서 String은 왜 불변일까? Java에서 String은 불변(Immutable) 객체이다. 불변 객체란 무엇일까? 불변 객체란, 객체가 생성된 후 내부의 상태가 변하지 않고 계속 유지되는 객체를 말한다. 즉, 변수에 객체가 한 번 할당되면, 해당 객체의 참조를 변경할 수도, 내부의 상태를 수정할 수도 없는 것이다. Java에서 String 객체는 immutable, 즉 '불변성'이라는 특성을 가지는데, Java 언어를 디자인한 사람들은 왜 그런 선택을 한 것일까? 크게 5가지 이유를 생각해 볼 수 있다. 1. String Pool String이 불변이기 때문에 String Pool도 존재할 수 있다. 어떤 프로그래밍 언어라도 String 타입은 매우 빈번하게 사용된다. 그래서 Java에서는 String Pool이라는 공간에 Stri.. 2020. 7. 21.
String Constant Pool이란? | Java String Pool Java에서 String 객체를 생성하는 방법은 2가지가 있다. 첫번째는 String literal, 즉 큰 따옴표("")를 사용하는 것이고, 두번째는 new 연산자를 사용하는 것이다. 두 방법에는 어떤 차이가 있을까? 간단한 테스트를 작성해 결과를 살펴보았다. String literal로 생성한 객체는 내용이 같다면 같은 객체, 즉 동일한 메모리 주소를 가리키고 있다. 하지만 new 연산자로 생성한 String 객체는 내용이 같더라도 개별적인 객체임을 알 수 있다. 여기에는 어떤 원리가 숨어있는지, JVM 구조와 함께 이해해 보도록 한다. Java String Pool 흔히 new 연산자로 String 객체를 생성하지 않는 것이 좋다는 말을 볼 수 있다. String literal로 생성하면 해당 St.. 2020. 7. 20.
실수로 clear한 Git Stash 복구하기 퇴근을 얼마 남겨두지 않은 어느 오후, 예전에 작업하던 변경분을 다시 가져오려고 IntelliJ에서 "Unstash Changes"를 열었다. 일단 그 전에! 이미 merge되어 필요 없어진 오래된 stash들을 drop한다는 걸... 정신이 가출했는지, 모르고 clear를 해버렸다. 날려버린 stash들 중에는 꽤 긴 시간 작업했던 코드들이 담겨 있던 터라, 복구가 안된다면 시간 소모가 클 것 같았다. 찾아 보니 다행히 뭔가 방법이 있긴 있다. https://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git How to recover a dropped stash in Git? I frequently use git stash .. 2020. 5. 11.
[Spring/Testing] 단언문에 에러 메시지 포함하기 테스트 코드를 작성할 때, 흔히 아래와 같이 단언문(assertion)을 작성한다. assertThat(owner.getLastName()).isEqualTo(newLastName); owner의 실제(actual) lastName이 newLastName과 같으면 아무 일도 일어나지 않으면서 테스트가 성공하고, 값이 다르다면 빨간 막대가 뜨면서 테스트가 실패할 것이다. 물론 이렇게만 작성해도 테스트가 실패한 이유를 테스트 러너가 제공하기는 한다. "어떤 값을 expect했는데, 실제로는 이런 값이 나왔다"라면서... 하지만 사람이 읽고 좀 더 이해하기 쉽도록 메시지를 넣어준다면 더 좋을 것이다. 《JUnit in Action》에서는 "assert 메서드를 호출할 때는 에러 메시지도 무조건 함께 기입하는 .. 2020. 4. 5.
PostgreSQL 설치하기 (MacOS 기준) MacOS에서 PostgreSQL을 설치하고 설정하는 방법을 정리해본다. terminal에서 Homebrew를 통해 진행한다. brew update brew install postgresDatabase를 생성하기 위해 아래의 명령어를 입력한다. initdb /usr/local/var/postgres아마도 아래와 같은 에러가 발생할 것이다. initdb: error: directory "/usr/local/var/postgres" exists but is not empty If you want to create a new database system, either remove or empty the directory "/usr/local/var/postgres" or run initdb with an ar.. 2019. 12. 17.
Amathon 2019 참가 후기 행사 당일 1주일 전 쯤 지인의 소개로 알게된 Amathon 2019. AUSG(AWSKRUG 대학생 모임)에서 주최하는 해커톤 행사이고, 올해로 두번째라고 한다. 대학생 혹은 주니어 개발자가 참여대상이다. 사실 이 해커톤에 참여할지를 결정하는 데 있어 고민이 많았다. 주된 이유는 " 내 실력이 모자랄까봐 "로 요약할 수 있을 것 같다. 용기내어 참가했지만 가서 아무 것도 못하고 있는 건 아닐까... 라는 걱정이 앞섰다. 하지만 자꾸 그런 생각만 하면서 온실 속의 화초로 있기 보다는, 좀 깨지고 혹여나 창피를 당하는 일이 있더라도 나 자신을 그런 어려운 상황으로 내몰 필요도 있다는 생각을 했다. 그런 경험도 해야 자극도 되고 나의 현주소를 적나라하게 알 수 있으니까. 그래서 고민하지 말고 일단 참가 신청.. 2019. 9. 16.
AWS에 Upsource 세팅 중 에러 Upsource 공식 홈페이지에서 받은 upsource 2019.1 zip 파일을 scp를 이용해서 EC2 인스턴스에 옮기고 압축 풀고, Upsource 문서와 jojoldu님 블로그 글 등을 참고해 configure까지 한 뒤 start 했더니! 다음의 에러가 난다. https://stackoverflow.com/a/53732802/8962314 Getting a whole lot of "scanned from multiple locations" warnings in simple Jersey web app Getting back to Java after some time, and I'm trying to get a simple RESTful API going on with Java 8, Jersey 2.. 2019. 9. 15.