주제별로 살펴보기 47

자바에서의 객체 관리 1: 인자 전달

데이터를 주고받는 데에는 값으로 전달(Call by value), 포인터로 전달(Call by pointer), reference로 전달(Call by reference)이 존재한다. C 언어에서는 값으로 전달하거나 포인터로 주고받는 방식을 구현할 수 있다. 또한 C++에서는(추가로) 참조 자료형을 int&, double&과 같이 기본 자료형에 &를 붙여서 참조 자료형으로 사용할 수도 있다. 자바에서는 모든 것이 객체이므로(객체 지향 언어는 객체간의 상호작용을 중시한다.) 이 객체를 모조리 복사해서 전달하는 것은 비효율적이다. 따라서 기본적으로 메서드에 인자를 전달하거나 리턴 값을 받을 때에 대부분 reference로 전달하는 방식으로 인자가 전달된다. 자바에서 메서드를 호출할 때 매개변수로 지정한 값을..

Programming/Java 2023.11.22

Java의 Switch: 14 이후 추가된 기능

들어가기 전에 JDK 14에 들어서면서 Switch Expression이라는 표현이 추가되었다. Switch Statement는 전통적인 switch 구문으로, 여러가지 경우를 검사하고 지시를 수행하는 동작을 수행한다. 값을 반환하지 않고 주로 프로그램의 흐름을 제어한다. 반면 14에서 추가된 switch expression은 각 case 값을 반환하며, 이 값을 변수에 할당할 수 있다: Expression과 statement의 차이점은 다른 문서에서 살펴보자. 1. Arrow Labels 원래 java의 switch는 case문의 종료를 break를 통해서 진행했어야 했다: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println..

Programming/Java 2023.11.22

WSL 2(Windows) C/C++ 개발환경(VS Code + GDB)

Krafton Jungle과 KRISS에서 배운 알고리즘과 자료구조, CS 관련 내용의 실습을 위해 C/C++ 개발환경 구축 한 내용을 정리하였다. Windows 11, WSL2 , Ubuntu 22.04, Visual Studio Code, GDB 사용. Windows에서 1.Visual Studio를 사용하거나 2.AWS EC2 서비스를 개발환경으로 사용할 수도 있지만 의 경우, 무거운 VS를 사용하기 싫었고, 윈도우 시스템 엔지니어가 될 것도 아니고, 아무래도 보편적으로 서버로 사용하는 Linux 환경의 개발을 하는 것이 나아보인다. 나는 지금 나가는 AWS나가는 돈도 아까운데... 나한텐 커피값이 더 귀함....ㅎ GDB의 사용이 아직 익숙하지는 않지만 그런대로 빌드하고 사용하는데에는 크게 문제는..

Programming/C & C++ 2023.11.21

우테코 프리코스 4: java-christmas

우테코 프리코스 4: java-christmas를 구현하며 생각해본 내용을 정리하였습니다. https://github.com/dearmysolitude/java-christmas-6-dearmysolitude 이 단계에서는 문제 해결을 위해 1단계부터 지금까지 피드백 받은 내용을 적용하고 문제 해결에 초점을 맞추어 구현하였습니다. MVC 모델에 대해서는 정식으로 적용하지는 않았으므로 감안하고 보시면 감사하겠습니다. 주어진 입력 라이브러리만 사용할 것 Output View 와 Input View를 나누어서 구현할 것 단위 테스트 코드를 적용할 것 메서드는 하나의 기능만 하도록 구현할 것 3항 연산자와 else 예약어를 사용하지 말 것 클래스에서 getter로 필드값을 가져와서 처리하지 말고, 되도록이면 클..

우테코 프리코스 3: java-lotto

우테코 프리코스 3주차 미션을 진행하면서 학습한 내용을 정리한 문서입니다. https://github.com/dearmysolitude/java-lotto-6/tree/dearmysolitude 게임 기능 1. 로또 번호의 숫자 범위는 1~45 까지이다. 2. 1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다. 3. 당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다. 4. 당첨은 1등부터 5등까지 있다. 당첨 기준과 금액은 아래와 같다. - 1등: 6개 번호 일치 / 2,000,000,000원 - 2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원 - 3등: 5개 번호 일치 / 1,500,000원 - 4등: 4개 번호 일치 / 50,000원 - 5등: 3개 ..

우테코 프리코스 2: java-racingcar

왜 다 MVC 모델로 하는건데ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 다시 짤 수도 없고... 테스트 코드나 공부해봅시다 https://github.com/dearmysolitude/java-racingcar-6 여러 차의 이름을 입력받고, 모든 차에 대해 각각 주사위를 굴려 4 이상이 나오면 전진하도록 하여 입력된 횟수대로 n번 수행하여 우승자를 출력하는 어플리케이션. 과제는 간단하지만, 추가적으로 테스트 코드를 작성하고, 메서드를 간략화하여 indentation을 2 이하로 하는 요구사항이 추가되었다. 구현하고 보니 테스트 코드를 작성하면서 구현하는게 나았을지도 모르겠다는 생각을 했다(하지만 테스트 코드를 작성해 보는게 처음이다보니 먼저 손 대기가 쉽지 않았다😂). ** 구현 기능마다 커밋하라는 지시사항을 읽..

우테코 프리코스 1: java-baseball

우테코 프리코스 미션을 진행하면서 배운 내용들을 정리하였습니다. https://github.com/dearmysolitude/java-baseball-6 구현 0. Application public class Application { public static void main(String[] args) { // TODO: 프로그램 구현 int button = 1; AnswerBox answerBox = new AnswerBox(); List numGenerated; System.out.println("숫자 야구 게임을 시작합니다."); while (button == 1) { // 게임: 종료 버튼(2) 안눌리면 계속 진행됨 numGenerated = NumGen.generate(); answerBox.s..

올리면 안되는 파일을 공개 리포지터리에 올려버렸다!

공개 레포지터리에 올리지 말아야하는 파일을 push한 경우에는 어떻게 해야하지? 문제 발생 프로젝트를 다시 빌드해보는 과정에서 application.yml을 파일이 업로드하고 말았다. 당황한 나머지 해당 파일을 삭제하고 다시 push 했지만 저장소 커밋 로그에는 그대로 남아 있는 상황. roadmap 브랜치에서 PR 후 머지까지 해 버린 것이다. 상황 1. application.yml에는 db 접속 키와 gpt api 키가 있었는데, Github에서 제공하는 submodule 기능을 사용해서 공개 리포지터리에서 분리시켜 보조 리포지터리(당연히 private)에 저장하여 해결하였다. 2. 팀프로젝트로 진행할 때는 resources 디렉터리를 전부 submodule로 등록하여 빌드 시에 해당 디렉터리를 su..

Programming/Git 2023.10.22