본문 바로가기

전체 글108

AArch64, ARM64 시스템에서 32비트 애플리케이션 컴파일하기 지난번에는 MacOS에서 Docker를 이용해 Ubuntu 개발 환경을 설치하였다. Malloc 과제를 하기위해서는 32비트로 컴파일하는 것이 필요하다. 현재 사용하고 있는 환경은 AArch64 혹은 ARM64 비트 아키텍처로 64비트 환경이다. 잠깐만👋 AArch64는 아키텍처 개발사인 ARM Holdings의 공식 표현으로, ARM과 개발자들은 AArch64라고 부른다. 다만 Apple, Microsoft와 같은 기업 집단은 ARM64라고 표기한다. 원활한 환경 구축을 위해 자신의 개발 환경과 CPU 아키텍처에 대한 기본 개념을 아는 것이 도움되었다. 읽어보면 좋을 글을 함께 공유한다. https://velog.io/@480/이제는-개발자도-CPU-아키텍처를-구분해야-합니다 이제는 개발자도 CPU 아.. 2023. 5. 17.
toString() 메서드 올바르게 사용하기 첫번째 로또 미션을 수행하면서 결과값을 출력할 때 toString()을 재정의하여 구현하였다. 우리가 toString()을 사용한 이유는 1) getter의 사용을 지양하고, 2) 결과값을 쉽게 출력할 수 있기 때문이다. 하지만 이 경우 출력의 요구사항이 바뀐다면, Domain이 View에 의존하기 때문에(즉, View가 바뀌면 Domain도 바뀐다.) 적절하지 않다는 피드백을 받았다. (Update 2022.06.27) 위 피드백에 대한 추가 피드백으로 Domain의 toString()을 구현했을 뿐, View에 의존한다고 보기 어렵다고 한다. View에서는 Domain의 toString()을 받아서 Domain을 변경하지 않고도 출력 형식을 자유롭게 변경할 수 있기 때문이다. 피드백을 반영하며 toS.. 2023. 5. 17.
nextLine() 잘~ 사용하기 로또 미션을 수행하면서 구입 금액과 당첨 번호를 입력받는 기능을 구현하였다. 예상 당첨 번호는 공백을 포함한 문자열로 입력을 받아야 했기 때문에 아래와 같이 nextLine()으로 입력을 받았다. 구입 금액과 당첨 번호는 Enter를 사용해 연속적으로 받을 때 버퍼에 남아있는 개행 문자를 처리하기 위해 각각의 Scanner 객체를 만들었다. public class Main { public static void main(String[] args) { Scanner scanner1 = new Scanner(System.in); Scanner scanner2 = new Scanner(System.in); int money; String winningLottoNumber; System.out.println("구.. 2023. 5. 17.
[Java] 예외처리(exception handling)-1 1. 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동 하거나 비정상적으로 종료되는 경우, 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 컴파일 에러: 컴파일 시에 발생하는 에러 런타임 에러: 실행 시에 발생하는 에러 논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것(ex. 개수가 음수가 나올 때) 컴파일이 성공적으로 마쳤다고 해서 프로그램의 실행 시에도 에러가 발생하지 않은 것은 아니다. 프로그램이 실행 중 동작을 멈추거나, 종료되는 경우처럼 런타임 에러가 발생할 수 있다. 런타임 에러를 방지하기 위해서는 프로그램 실행도중 발생할 수 있는 경우의 수를 고려하여 대비를 하는 것이 필요하고, 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러(error.. 2023. 5. 17.
MacOS에서 Ubuntu 개발 환경 설치하기(Docker) 💡 실습 환경 - MacBook Air Apple M1 - vscode 이번주차부터 C언어 학습을 시작한다. 프로젝트 시작에 앞서 Linux 환경 설정이 필요해 개발 환경을 설치한다. 가상 환경을 설치할 수 있는 방법으로 EC2를 할당받아 사용하는 방법도 있지만, 주변에서 Docker 이야기가 들리길래 전부터 궁금했던 기술이라 사용하기로 결정했다. 이 글은 크게 도커에 대한 소개와 개발 환경 구축 과정에 대해 다룬다. 도커란? 도커는 컨테이너 기반의 가상화 플랫폼이다. 그림의 고래 위에 여러 컨테이너 박스가 존재하는 것처럼 하나의 서버에 여러 컨테이너를 갖을 수 있다. 예를들어, Python, django, node.js, java 등 여러 컨테이너를 올려 독립적으로 관리한다. 소프트웨어 개발에서 컨테이.. 2023. 5. 12.
Hello, ECONO 회고 원글 Hello, ECONO 다시 돌아보는 Hello, ECONO! wnajsldkf.medium.com 지난 2월 19일 에코노베이션 교류 행사인 Hello, ECONO가 진행되었습니다. 그때의 경험을 회고합니다. Hello, ECONO는 에코노베이션 구성원들이 서로의 경험을 공유하고 소통하면서 에코노베이션으로 맺어진 인연을 이어 나가는 것을 목적으로 계획된 행사입니다. 에코노베이션을 애정으로 하는 민주와 종종 동아리에서 얻은 경험을 나눌 수 있는 방법이 무엇일지 이야기하곤 했는데요. 어느 날, 선배 세미나에 대한 이야기가 동아리 주간 회의 안건으로 올라왔습니다. 옆에서 개발하면서 회의 내용을 듣던 저는 솔깃했고 머릿속에 떠오르는 재미난 아이디어에 입이 근질근질했습니다. 쉴 틈 없는 회의 진행 중 잠깐.. 2023. 5. 8.
[YAPP] 첫 기술 면접 회고 2022년 10월 10일에 작성한 글 입니다. 바로 오늘 개발 동아리 면접을 보았다. 기술 질문이 있는 면접은 오늘이 처음이라 생각하게 되는 것이 많아 회고록을 작성한다. 1학년부터 시작한 교내 동아리를 4년 동안 하고 나니 새로운 환경에서 새로운 사람들과 프로젝트를 해보고 싶다는 생각이 들었다. 또한 동아리에서 프로젝트를 할 때, 개발자/기획자/디자이너를 구분하여 역할을 나누기보다 모두 기획하고, 누군가 디자인하고, 또 같이 개발하고 이런식으로 진행하였다.(+ 기획자/디자이너 포지션이 있긴했지만 너무 적었다!) 장점은 협업 경험이 향상되고 다양한 분야를 찍먹할 수 있다는 점, 단점은 디자인이나 기획에서 완성도 있는 결과물을 기대하기 어려웠으며, 하나의 분야에 집중하여 성장하기 어려웠다. 나도 이제는 백.. 2023. 5. 7.
[크래프톤 정글] 33일 - RBTree 오늘 한 일💪 - 알고리즘 문제 풀이(P11659 - 구간 합 구하기 5) - RBTree 개념 정리 P11660 - 구간 합 구하기 5 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 이 앞에 일차원 구간 합 구하기 문제를 풀어서 DP를 사용해야함은 인지했다. 2차원에서 어떻게 할까 고민하다가 누적합을 그리기 시작했다. 구한 누적합으로 구간합은 다음의 방식으로 계산했다. 이번에는 오랜만에 자바로 풀어.. 2023. 5. 6.
[크래프톤 정글] 25일 오늘 한 일💪 - 알고리즘 시험 문제 오답 - 컴퓨터 시스템 교재 읽기(~1.6 저장장치들은 계층구조를 이룬다) WEEK03 테스트 오늘은 3주차 알고리즘 시험을 본 날이다. 이번주는 저번주보다 문제 난이도가 쉬웠고, 3문제 모두 비슷하게 느껴져서 푸는데 평이했다. (+ 이틀동안 우리 반의 교수님들 덕분에 시험 본 것도 도움되었다!) 1388. 바닥 장식 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 일반적인 탐색 형식 문제이다. -와 |을 탐색하기 위한 함수를 각각 만들어서 했다가 시험 끝나고 하나의 함수로 작성.. 2023. 5. 4.