전체 글

과제/우테코 6기 프리코스

우테코 6기 프리코스 안드로이드 - 1주차 미션

숫자 야구 게임 올해 프리코스의 1주차 미션은 숫자 야구 게임 프로그램을 구현하는 것이다. 리드미의 '기능 요구 사항', '프로그래밍 요구 사항', '과제 진행 요구 사항' 세 카테고리의 요구 사항을 만족하며 과제를 진행하면 된다. 과제의 기능 구현은 간단하다. 하지만 코드 컨벤션, 예외처리, 테스트, 클린코드까지 고민하고 학습하다 보면 일주일이 금방 지나간다. 그동안 개발을 하면서 기능 구현에만 집중했던 스스로를 반성했다. 주도적으로 학습하는 개발자, 협업에 능한 개발자가 되기 위한 기본적인 역량을 체감할 수 있었다. 무엇보다 오랜만에 순수하게 개발에만 몰입할 수 있어 즐거웠다. '오랫동안 동료들과 즐겁게 일하며 성장하는 개발자'가 우테코가 지향하는 개발자의 모습이지 아닐까 하다. 짧은 시간동안 모든 ..

프로젝트/마스크 알라미

4년 전 코드 리팩토링하기 (1)

"리팩토링 왜 하는데?" 개발을 하면서 항상 만들기에 급급하여 기술을 적용하면서도 '왜 이 기술을 적용하는지'에 대해 깊게 생각하거나 정리한 적이 없었다. 4년 전 작성한 코드를 리팩토링하는 가장 큰 이유는 내가 무엇을 모르는지 파악하기 위해서다. 기술들을 하나씩 적용해보며 이전과 어떤 차이가 있는지 비교해보고 그 과정과 개념에 대해 정리해보려고 한다. '마스크 알라미' 프로젝트 2020년 코로나 사태로 사람들이 마스크를 구하지 못해 불편을 겪는 것을 해소하고자 진행했던 프로젝트이다. 공적 마스크 오픈 API를 통해 마스크 재고량, 판매처를 알려주는 위치 기반의 서비스이다. 주요 기능 사용자는 특정 위치에서 반경 1km 이내의 판매처 정보를 확인한다. 이 요구 사항을 중심으로 아래의 핵심 기능들을 구현하..

CS/운영체제

운영체제의 역사

초기 컴퓨터 카드리더, 프로세서, 프린터로 구성 천공카드(프로그램)를 카드리더에 넣고, 프로세서가 계산, 결과를 종이에 찍어서 출력 프로그램을 직접 컴퓨터에 입력하는 오퍼레이터가 존재 일괄 처리 시스템 Batch Processing System 여러 프로그램을 등록시켜 놓으면 순차적으로 실행시키는 시스템이다. 긴 작업 시간을 가진 프로세스가 앞에 있다면 뒤의 프로세스들을 한참 기다려야 하는 비효율이 발생하게 되었다. 최초의 운영체제 오퍼레이터가 하는 작업 (컴파일, 링크, 로딩)을 자동화한 시스템 시분할 시스템 Time-Sharing System 하나의 프로세스가 CPU를 차지하고 있을 때, 다른 프로세스는 수행중인 프로세스가 끝나거나 I/O작업이 발생할 때까지 기다려야 했다. 따라서 프로세스의 수행 시..

CS/운영체제

운영체제의 구조와 역할

운영체제는 커널과 인터페이스로 이루어져 있다. 커널 : 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에 인터페이스를 제공하는 역할을 하며 컴퓨터 자원을 관리하는 역할을 한다. 인터페이스 : 사용자가 요청한 명령을 커널(OS)에 요청하고 그 결과를 출력하는 등 사용자와 커널의 의사소통을 도우는 역할을 한다. 커널의 역할 프로세스 관리 : 프로세스에 CPU 자원을 할당해 작업에 필요한 환경을 제공 메모리 관리 : 여러 프로세스들이 효율적으로 이용할 수 있도록 한정된 메모리를 관리 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공 프로세스 간 통신 관리 : 프로세스 간의 통신 환경을 제공 I/O 관리 : 입출력 관리 시스템 호출 System Call 사용자나 프로그램이 직접 ..

Kotlin

수신 객체 지정 람다, with 와 apply

with 함수와 apply 함수는 수식 객체를 명시하지 않고 람다의 본문 안에서 다른 객체의 메서드를 호출할 수 있게 한다. 그런 람다를 수신 객체 지정 람다 lambda with receiver 라 부른다. with 함수 표준 라이브러리의 with 함수를 사용하면 어떤 객체에 대한 참조를 반복해서 언급하지 않으면서 그 객체의 메서드를 호출할 수 있다. EX. 알파벳 만들기 fun alphabet() : String { val result = StringBuilder() for (letter in 'A'..'Z') { result.append(letter) } result.append("\\nNow I know the alphabet!") return result.toString() } println(a..

Kotlin

자바 함수형 인터페이스 활용

코틀린 람다를 자바 API에 활용하는 방법 // Java public class Button { public void setOnClickListener(OnClickListener 1) { ... } } public interface OnClickListener { void onClick(View v); } Button 클래스는 setOnClickListener 메서드를 사용해 버튼의 리스너를 설정 OnClick 메서드만 선언된 OnClickListener 인터페이스를 인자로 전달 // Java 8 이전 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }) 자바 8 이전의 자바는 무명 클래..

minux.
minux.log