본문 바로가기

분류 전체보기111

[크래프톤 정글] 59일 - Pintos 1주차 끝! 오늘 한 일 👩‍💻 - Pintos Project1 주간 발표 - 알고리즘 문제 풀이(P9996 - 한국이 그리울 땐 서버에 접속하지) - 협력사 채용 설명회(당근마켓) 주간 발표 pintos 주차부터는 매주 코드 리뷰 방식이 아닌 주간발표로 진행된다. 전날에 모든 팀이 마지막까지 발표 자료를 만드느라 반 분위기가 무척 뜨거웠다🔥 우리 팀은 과제 설명과 경험했던 트러블슈팅 위주로 발표를 진행했다. 좋았던 점보다 아쉬웠던 점이 먼저 떠오르는데... 발표 시간을 고려해 발표 준비할 것 전날 컨디션을 조절해서 맑은 정신 상태로 발표할 것 발표 준비 시간을 줄이기 위해 미리 발생한 내용을 정리할 것 과제를 할 때, 고민하는 시간을 늘릴 것 이 정도인 것 같다. 다음 주차에는 이를 잘 반영해서 진행하고 싶다. 더.. 2023. 6. 2.
[크래프톤 정글] 50일 - 즐겁다! 오늘 한 일💪 - 알고리즘 문제 풀이(P15903 - 카드 합체 놀이) - tiny 서버 구현 알고리즘 P15903 - 카드 합체 놀이 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 입력 범위를 확인하자! 파이썬은 범위에 따라 자동으로 형변화를 해주지만 자바는 그렇지 않다. Tiny 서버 구현 https://github.com/Blue-club/webproxy-lab/issues/13 [Feat] Tiny - WebProxy(mywnajsldkf) · Issue #13 ·.. 2023. 5. 24.
[Malloc Lab] 동적 메모리 할당(Dynamic Memory Allocation) - 이론 시작하기 가상 메모리는 mmap와 munmap 함수를 이용해 생성 및 삭제할 수 있다. mmap: 메모리의 내용을 파일이나 디바이스에 맵핑(mapping)하기 위해 사용한다. munmap: 맵핑된 메모리를 해제한다. 하지만 이러한 방식은 프로그램을 실행하기 전에 크기를 할당해야 한다. 만약 가상 메모리를 런타임에 획득하는 것이 필요하다면, 동적 메모리 할당기를 사용한다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다. 힙은 미초기화된 데이터 영역 직후부터 시작해서 위쪽으로(= 높은 주소 방향으로) 커진다. 이때 힙의 꼭대기를 가리키는 변수를 brk(break)라고 한다. 할당기는 힙을 다양한 크기의 블록들의 집합으로 관리하고, 각 블록은 할당되었거나 사용 가능한 가.. 2023. 5. 17.
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.