오늘의 개발

    [MySQL/프로그래머스] 조건별로 분류하여 주문상태 출력하기

    문제 풀이 (1) 문제 분석하기 5월 1일을 기준으로 출고 여부 출력 ⇒ CASE문 사용 주문 ID 기준 오름차순 정렬 ⇒ ORDER BY 주문 ID ASC 예시와 같이 OUT_DATE 형식 출력 ⇒ DATE_FORMAT(OUT_DATE, '%Y-%m-%d') CASE문 -- condition의 boolean값으로 result 실행 CASE WHEN [condition] THEN result [WHEN [condition] THEN result] ... [ELSE result] END condition의 조건을 판단하여 result를 실행한다. WHEN과 THEN은 한 쌍이어야 한다. ELSE 부분이 없는 상태에서 조건이 참이면 NULL을 반환한다. [MySQL] MySQL 조건문, null 함수, 타입..

    [MySQL/프로그래머스] 오랜 기간 보호한 동물(2)

    문제 풀이 (1) 문제 분석하기 보호 시작일은 ANIMAL_INS 테이블에, 입양일은 ANIMAL_OUTS 테이블 ⇒ 두 테이블을 JOIN 보호 기간이 긴 순으로 정렬 ⇒ ORDER BY 보호 기간(입양일 - 보호 시작일) DESC 결과는 동물 2마리만 ⇒ LIMIT 2 (2) 쿼리 구현하기 🔸 DATEDIFF 함수를 이용한 풀이 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_INS I INNER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC -- DATEDIFF 사용 LIMIT 2 가장 먼저 떠올린 건 특정 날짜의 차이를 연산해 주는 DATEDIFF 함수였다..

    [WIL] 3월 5주차 회고ㅣ도커 챌린지와 독서

    이번 주 톺아보기 🐳 도커(Docker) 그게 뭔데? 말로만 듣던 도커를 찍먹 해볼 수 있는 기회가 생겼다. 원티드에서 주관하는 [프리온보딩 백엔드 챌린지 4월]에서 도커에 대해 다룬다. (4월 백엔드 챌린지) Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! 제대로 강의를 듣기 전, 사전 과제를 하면 도커가 무엇인지 살펴보도록 하자. 컨테이너 기술이란? 컨테이너는 운영 체제 가상화의 한 형태로 애플리케이션과 필요한 모든 파일을 하나의 런타임 환경으로 묶는 데 사용하는 기술이다. 서버 또는 머신 가상화 접근 방식과 달리 운영 체제 이미지가 포함되어 있지 않기 때문에 더 가볍고 휴대성이 좋다. Docker(도커)란? 도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이..

    [Books] PSA 일관성 있는 서비스 추상화..요?

    PSA(Portable Service Abstraction) 너 뭔데? 직역하자면 일관성 있는 서비스 추상화! 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화라고 한다. 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것을 서비스 추상화(Service Abstraction)이라 한다. 서비스 추상화(Service Abstraction)로 제공되는 기술을 다른 기술 스택으로 간편하게 바꿀 수 있는 확장성을 갖고 있는 것이 Portable Service Abstraction이다. 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 것을 의미한다. Spring은 Spring Web MV..

    [WIL] 3월 3주차 회고ㅣ커피챗과 기술 면접 그리고 HTTP

    이번 주 톺아보기 📡 HTTP도 모르면서 웹 개발자가 될 거야?! 항해99는 끝났지만 우리의 인연은 끝나지 않았지. B반 동기들과 계속해서 스터디를 하기로 했다. 어떤 주제로 함께 공부하면 좋을까 고민하다가 이전부터 들어보고 싶던 김영한 님의 [모든 개발자를 위한 HTTP 웹 기본 지식]을 함께 듣자고 제안했고 모두 흔쾌히 수락해 주었다. 정해진 시간에 정해진 진도를 함께 공부하고 해당 범위에서 더 공유하고 싶은 내용을 정리해 온 뒤 발표하는 방식으로 진행되었다. 너무 믿음직한 네트워크 전문가 분이 계셔서 강의 내용보다 더 깊이 있게 공부할 수 있었다. 역시 같이 하면 즐거움이 두 배! HTTP 웹 개발 스터디 ✏️ 개요 speckle-apple-b3b.notion.site ☕ 사실 커피는 별로 안 중요..

    [WIL] 항해99 마지막 회고ㅣ이제는 말할 수 있다

    1️⃣ 드디어 수료! 2️⃣ 항해99를 시작하기 전에 3️⃣ 내가 항해99를 선택한 이유 4️⃣ 이제는 말할 수 있다! : 장점 5️⃣ 이제는 말할 수 있다! : 단점 6️⃣ 끝까지 할 수 있었던 이유 7️⃣ 마지막으로.. +) 항해99를 고민하고 계신 분들께 1️⃣ 드디어 수료! 항해99를 작년 11월에 시작했는데 어느새 해가 바뀌고 수료를 하는 날이 오고야 말았다. 누적 학습 시간이 1927시간이니까 주 평균 120시간 이상을 몰입했고, 모든 과정을 성실하게 임했다. 짧다면 짧은 3개월, 그동안의 항해99는 어떤 모습이었는지 솔직한 후기를 적어보려 한다. 2️⃣ 항해99를 시작하기 전에 우선, 나는 코딩과 전혀 관련 없는 예체능을 전공했고, 이전에 국비지원 학원에서 Java 강의를 수료한 상태였다. ..

    [Books] 어댑터요? 돼지코 같은건가? 🐷

    어댑터 디자인 패턴(Adapter Pattern)이란? 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것! (like 휴대폰 충전기) 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 이렇게 함으로써 클라이언트와 구현된 인터페이스를 분리시킬 수 있으며, 향후 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화되기 때문에 클라이언트는 바뀔 필요가 없어진다. 개방 폐쇄 원칙을 활용한 설계 패턴이다. JDBC, JRE도 어댑터 패턴! 어댑터 패턴 호출 과정 클라이언트에서는 타겟 인터페이스를 호출하는 것처럼 보인다. 하지만 클라이언트의 요청을 전달받은 (타겟 인터페이스를 구현한) 어댑터는 자신이 감싸고 있는 어댑티에게 실질적인 처리를 위임한다. 어댑터가 어댑티를 감싸고 있는 것..

    [Books] 하나의 객체는 하나의 책임만 가져야 한다?

    1객체 1책임 == 단일 책임 원칙 SRP(Single Responsibility Principle)란? 하나의 클래스는 단 한 개의 책임을 져야 한다는 의미이다. 만약 하나의 클래스가 하나 이상의 책임이 있다면, 이것은 결합(Coupled)을 불러오게 되며 추후 하나의 책임에 대한 변경이 생겼을 때 결합으로 인해 다른 책임까지 수정을 발생시키게 된다. 책임의 기준이 뭔데? 한 가지 책임의 기준은 뭘 의미하는 걸까? 여기서 말하는 단일 책임은 절대적으로 측정할 수 있는 개념이 아니라 상대적이기 때문에 기준이 모호하다. 어느 정도의 수준으로 추상화를 하느냐에 따라서 ‘단일’로 볼 수도 있고 아닐 수도 있다. 하지만, SOLID 원칙의 창시자인 Robert C. Martin은 단일 책임 원칙에 대해 같이 수..