반응형

프로그래밍 135

[Java] Java Build Tools 발전과정 - (3) Gradle

05. Gradle ( 2012 - ) Gradle은 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합해 만든 오픈 소스 빌드 도구 프로젝트다. 기존 도구들이 xml과 같은 마크업 언어로 프로젝트를 관리했던 것과는 달리 Groovy기반의 DSL(Domain Specific Language)를 이용해 프로젝트를 관리한다. 최근에는 Kotlin DSL을 사용할 수 있게 되어서 Groovy기반 DSL의 아쉬운 부분(예를 들어 자동 완성 안됨)도 보완되었다. 또한 Gradle Wrapper를 이용해 Gradle이 설치되어 있지 않은 시스템에서도 프로젝트 빌드가 가능하다. 뒤늦게 개발된 빌드 도구라서 그런지 기존 도구를 대체할 많은 장점을 가지고 있다. Maven, Ivy같은 기존 저..

[2] 우테코 과제 제출 및 IntelliJ로 IDE 교체

2023년 10월 25일 (수) 우테코 1주차 과제를 제출했다. 테스트 코드도 전부 통과했고 나름 열심히 코딩해서 이쁘게 제출했다. 과제 소감을 적는 공간이 함께 있어서 주저리주저리 적는 대신 간단하게 과제에 대한 소감만 정리해서 제출했다. 최대 5000자라고 하는데 소감 길이가 길다고 좋은 건 아니라고 생각한다. 이번 과제로 배운 점이 많았다. 과제를 클론하니 우테코에서는 빌드 관리 툴로 Gradle을 사용하는 걸 알았는데, Gradle이 뭔지도 잘 몰라서 어떻게 해야할 지 감도 안 잡혔다. 처음에는 그냥 gradlew로 실행하면 빌드가 된다고 해서 그 기능만 사용해서 과제를 제출했는데 이후 자바의 빌드 관리 툴을 공부하면서 왜 Gradle이 기존 빌드 툴에 비해서 장점이 많은지도 알게 되었고, 어떤 ..

[Java] Java Build Tools 발전과정 - (2) Maven

04. Apache Maven ( 2004 - ) Maven은 "전문가"라는 뜻의 이디시어에서 따온 Ant의 대안 프로젝트다. Maven 프로젝트는 자바 기반 오픈소스들을 모아서 지원하기 위한 아파치의 자카르타 프로젝트 중에서 Servlet기반의 자바 웹 프레임워크인 터빈의 빌드 과정을 단순화하기 위해 시작되었다. 초기 터빈에는 몇 개의 Ant 빌드 파일이 존재했는데, Ant의 빌드 파일에는 어떠한 기준이 없으므로 서로 조금씩 달라서 어려움이 있었다. 따라서 이를 해결하기 위해 어떤 기준, 즉 프로젝트를 빌드하는 방법, 프로젝트 구성에 대한 명확한 정의, 프로젝트 정보를 게시하는 쉬운 방법, 그리고 여러 프로젝트에 걸쳐 jar파일을 공유하는 방법에 대한 기준이 필요했다. 그리고 그 결과가 Maven이다...

[Java] Java Build Tools 발전과정 - (1) Make vs Ant

자바를 빌드할 때 여러 가지 빌드 도구들을 사용할 수 있다. 현재는 Maven과 Gradle을 대표적으로 많이 사용한다. '둘 중 어느 것을 사용하는 것이 좋을까'에 대한 궁금증을 해소하기 위해 Google Trends를 이용해 두 단어의 검색량 추이를 비교해봤다. 절대적인 수치는 아니지만 사람들의 관심도를 통해 간접적으로 위 질문에 대한 해답을 얻을 수 있을 것 같다. 전세계를 상대로 검색량을 조사한 결과 2012년 Gradle 1.0이 발표된 이후 꾸준히 검색량이 증가하다가 현재는 주춤하는 모습이다. 2002년 발표된 Maven도 발표 이후 꾸준히 증가하다가 현재는 어느 정도 Gradle과 비율을 맞추고 있다. 아직까지 전세계에서는 Maven이 Gradle에 비해 3배 정도 관심도가 높은 것으로 보인..

[1] 우테코 프리코스 시작

2023년 10월 19일 (목) 우테코 프리코스가 시작됐다. 2시부터 3시까지 우테코 프리코스 오리엔테이션이 유튜브에서 있어서 틀어놓고 간단한 백준 문제를 풀면서 들었다. 한 1500명 이상의 시청자가 있었다. 같은 목표를 가진 사람 1500명이 모여 있으니 벌써 내적 친밀감이 들었다. OT 내용을 요약하자면 프리코스를 하면서 4주 동안 몰입한 경험이 이전 기수들에게 큰 도움이 됐다는 피드백을 받아, 지원자 전체에게 프리코스를 경험할 수 있도록 선발 절차를 구성했다고 한다. 또, Q&A 중에 답변으로 이번 기수 지원자는 저번 기수보다 약 50% 늘어난 4500명이라고 한다. 이 중 150명, 그 중에 백엔드는 100명 내외로 선발된다고 하니 나태해지지 말고 열심히 해야겠다. OT가 끝난 직후 미션 메일이..

[Java] Java기초 - (2) 기초 문법 - 연산자

연산자도 마찬가지로 파이썬과의 차이점에 주안점을 두어 살펴본다. 파이썬 말고 다른 언어에는 대부분 있는 증감 연산자가 자바에는 있고, 자료형이 있으므로 연산 시 형변환이 중요하게 여겨진다는 게 큰 차이점이다. 01. 연산자 자바의 연산자는 위 그림에 나와 있는 연산자가 전부다. 대부분 타 언어와 비슷한 부분이 많지만, 세부적으로 들어가면 조금 복잡해질 수 있다. 예를 들어 연산 시 피연산자에 (byte) a > b와 같이 형변환 연산자가 붙어 있는 경우, 결과가 어떻게 처리되는가와 같은 문제에 봉착할 수 있으니 차근차근 알아보자. 1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다. 2. 단항 > 이항 > 삼항. 단항 연산자의 우선순위가 이항 연산자보다 높다. 3. 단항 연산자와 대입 ..

[Java] Java기초 - (2) 기초 문법 - 변수와 리터럴

파이썬에 대해 어느 정도 알고 있는 상태이므로 이를 확장해서 자바의 기초 문법을 정리해보고자 한다. 우선 생각보다 전반적으로 엄청 다른 부분은 없었다. 둘 다 각 언어만의 가상 머신을 이용해 프로그램을 실행한다거나, 프로그래밍 언어가 으레 그렇듯 배열, 조건문, 반복문 등의 문법이 있고 구문도 거의 비슷하다 (자바스크립트랑 더 비슷하긴 함). 또한 둘 다 객체 지향 언어라는 점 또한 비슷하고 중요하다. 다만 파이썬은 코드를 한 줄씩 읽어서 실행하는 인터프리터 언어, 자바는 전체 코드를 바이트 코드로 컴파일한 뒤 JVM으로 실행하는 컴파일 언어라는 점이나 자바는 C/C++계열 언어처럼 변수 자료형이 존재한다는 점 등이 주요한 차이점이다. 01. 변수 (Variable) 자바는 변수 타입이 존재한다. 파이썬..

[Java] Java기초 - (1) 역사

01. 자바란? 자바는 1991년 6월 썬 마이크로시스템즈(Sun Microsystems)에서 제임스 고슬링(James Gosling)에 의해 만들어졌다. 개발된 이유는 원래 토스트기 같은 가전제품에 들어가는 임베디드 소프트웨어를 만들기 위해서다. 현재까지도 가전제품에 들어가는 소프트웨어에는 저비용, 고효율을 위해 C/C++ 계열의 프로그래밍 언어가 사용되지만, 당시 C++프로그램은 OS와 CPU에 따라 다른 C++ 컴파일러가 필요했다. 이에 제임스 고슬링과 다른 직원들은 OS나 CPU에 구애받지 않고, 다양한 환경에서 실행할 수 있는 언어를 만들었고 이것이 자바다. 02. WORA (Write Once, Run Anywhere) 위에 기술했듯 자바는 어떠한 플랫폼에도 구애받지 않고 실행될 수 있는 언어..

[ADsP] 데이터 분석 기획 Section 01. 데이터 분석 기획의 이해(2) 분석 방법론

2. 분석 방법론 05. 빅데이터 분석방법론 가. 빅데이터 분석의 계층적 프로세스 1) 단계(Phase) 프로세스 그룹(Process Group)을 통해 완성된 단계별 산출물이 생성됨. 각 단계는 기준선(Baseline)으로 설정되어 관리되어야 하며, 버전관리(Configuration Management) 등을 통해 통제가 이루어져야 함 2) 태스크(Task) 각 단계는 여러 개의 태스크(Task)로 구성됨. 각 태스크는 단계를 구성하는 단위 활동이며, 물리적 또는 논리적 단위로 품질 검토의 항목이 될 수 있음 3) 스텝(Step) WBS(Work Breakdown Structure)의 워크 패키지(Work Package)에 해당되고 입력자료(Input), 처리 및 도구(Process&Tool), 출력자..

[OOP] 객체 지향 설계의 다섯가지 원칙: SOLID

SOLID란? 객체 지향 프로그래밍에서 항상 등장하는 SOLID원칙은 개발 및 보수를 하는 데 있어, 소스코드를 읽기 쉽고 확장이 원활하도록 만드는 다섯가지 원칙이다. SOLID는 각 원칙의 첫번째 글자를 합친 것으로 각각 Single Responsivility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle이다. SOLID 원칙을 사용하지 않더라도 객체 지향적인 프로그래밍은 가능하지만, 원칙을 지키면 동료들과의 협업이 원활해지며, 추후 소프트웨어를 확장할 때도 실수를 미연에 방지할 수 있다. 단일 책임 원칙(Single R..

반응형