전체 글1068 [디자인 패턴의 아름다움] 3. 설계 원칙 - 3.1~3.5 정리 (SOLID) 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. CHAPTER 03. 설계 원칙 설계 원칙에 대한 이해가 충분하지 않으면, 불필요하게 독단적이고 엄격한 사용으로 이어져 결국 역효과를 낳을 것이다. ☆ 이전에 TDD 스터디 때 TDD와 SOLID 관점에서 생각하며 리팩토링 해보는 라이브 코딩을 스터디에 진행해본 적 있다. 해당 내용은 'TDD, Mock, SOLID 얘기 - 도시 가스 요금 계산' 에 있다. 3.1 단일 책임 원칙 (SRP) single responsib.. 2024. 4. 13. [릴리즈의 모든 것] 3장. 시스템 안정화 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 Release의 모든 것(마이클 나이가드 지음) 책 입니다. 3장. 시스템 안정화 엔터프라이즈 소프트웨어는 냉소적이어야 한다. 나쁜 일이 일어날 것이라고 예상하고 그런 일이 일어나도 절대 놀라지 않는다. 자기 자신조차 믿지 않기 때문에 내부에 장벽을 세워 장애로부터 자신을 지키고, 다른 시스템과 지나치게 친밀해지는 것을 거부한다. 안정성이 부실하면 상당한 수익 손실이 발생한다. 또 신임을 잃는다. 홍보를 위한 수십억 원이 불량 하드 드라이브 때문에 몇 시간 만에 의.. 2024. 4. 11. [릴리즈의 모든 것] 2장. 사례 연구: 항공사를 멈추게 한 예외 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 Release의 모든 것(마이클 나이가드 지음) 책 입니다. 2장. 사례 연구: 항공사를 멈추게 한 예외 작은 프로그래밍 오류로 만들어진 눈덩이가 언덕 위에서 굴러 내려오고 있다. 눈덩이의 속도가 빨라지고 문제의 규모는 조금씩 커진다. 한 대형 항공사에 이런 사고를 겪어 수십만 달러의 손해를 본 사례이다. ☆ 이하 사례가 상세히 설명되어 있는데, 다 적기 뭐해서 매우 많이 축약했다. ☆ 대충 엄청 잘 구성된 시스템이었다는 얘기들. 고질라도 대비! ☆ 아무튼 db를 .. 2024. 4. 11. [릴리즈의 모든 것] 1장. 운영 환경의 현실 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 Release의 모든 것(마이클 나이가드 지음) 책 입니다. 1장. 운영 환경의 현실 개발에는 단순히 모든 기능을 추가하는 것 외에도 훨씬 더 많은 작업이 포함된다. 운영 조직이 개발자의 도움 없이 몰려드는 대규모 현실 사용자를 상대할 수 있을까? 프로젝트 팀은 자주 운영 상황에서 발생할 문제대 대비하는 대신 QA부서의 테스트를 통과하는 것을 목표로 삼는다. 테스트 만으로는 충분하지 않다. 할 수 있는 만큼의 조치를 취하고 예방하면서, 정말 심각하고 예상치 못한 피.. 2024. 4. 11. [자바] 백준 14728 - 벼락치기 (java) 목차 문제 : boj14728 필요 알고리즘 DP, 냅색 (배낭 문제) DP로 해결 가능한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 dp[x]를 x시간을 사용해 얻을 수 있는 최대 점수라고 해보자. 그렇다면 현재 단원에 대한 K와 S가 주어졌을 때, x시간을 사용해 얻을 수 있는 최대 점수는, '현재까지 파악한 x시간을 사용해 얻을 수 있는 최대 점수', 'x-K 시간까지 얻을 수 있는 최대 점수에 이번 단원.. 2024. 4. 8. [디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.8~2.9 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. 2.8 인터페이스 기반 프로그래밍 인터페이스 기반 프로그래밍: 모든 클래스에 대해 인터페이스를 정의해야 할까? 인터페이스를 이해하는 다양한 방법 구현이 아닌 인터페이스에 대한 프로그래밍(Program to an interface, not an implementation) 이해할 때 특정 프로그래밍 언어를 떠올리면 안된다 (사고가 해당 언어의 인터페이스 관련 문법에 갇혀 버리기 때문) 인터페이스 : 상위 수준의 추상적인 이.. 2024. 4. 6. [자바] 백준 23128 - Math (java) 목차 문제 : boj23128 필요 알고리즘 수학, 브루트 포스 (brute force) 약간의 수학적 직관으로 범위를 좁히면, 그냥 브루트 포스로 다 대입해보면 답을 구할 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 찾고자 하는 내용을 수식으로 나타내보면 다음과 같이 나타낼 수 있다. A와 B는 각각 a_i와 a_j를 뜻한다. C는 임의의 정수이다. 여기서 A, B의 범위는 [1, 1000000.. 2024. 4. 6. [디자인 패턴의 아름다움] 2. 객체지향 프로그래밍 패러다임 - 2.5~2.7 정리 스터디 메인 페이지 목차 - ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한대로 적어놓은 것으로, 책에 나오지 않는 내용입니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다. - 모든 이미지의 출처는 디자인패턴의 아름다움(왕정 저) 책 입니다. 2.5 객체지향 프로그래밍처럼 보이지만 실제로는 절차적 프로그래밍 오해 : 객체지향 프로그래밍 언어를 개발에 사용하고 모든 코드를 클래스에 넣기만 하면 그것이 바로 객체지향 프로그래밍이라고 생각하는 것 getter, setter 메서드 남용 클래스의 모든 속성에 대한 getter 메서드와 setter 메서드를 정의 -> 캡슐화 특성을 위반한다. 사실상 private로 선언된 속성들도 getter와 setter가 둘 다 있.. 2024. 4. 5. [자바] 백준 14786 - Ax+Bsin(x)=C ② (java) 목차 문제 : boj14786 필요 알고리즘 수학, 이분 탐색 이분 탐색으로 답의 범위를 좁혀가며 상대 오차 10^-9 이하로 찾아주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 처음에 문제보고 일단 수식이 나오니 무서웠는데, 어차피 y=x랑 y=sin(x) 합친 형태라 대충 그래프 형태가 상상이 되기도 하고, 입력값 범위도 좁아서 도전해보니 생각보다 어렵진 않았다. 풀고보니 '뉴턴-랩슨법' 이라는걸로 풀면 바로 .. 2024. 4. 5. [세미나] 스프링부트 필드 주의점 스프링부트 필드 주의점에 대해 짧게 세미나를 진행했다. 라이브코딩으로 진행한 세미나라 별도의 자료는 없는데, 진행한 내용을 글로 써둔게 이하의 글이다. '스프링(부트)에서 final이 아닌 필드(인스턴스 변수, 클래스 변수)가 있으면 안됩니다.' 세미나의 결론은 아래와 같다. 스프링 혹은 스프링부트로 만든 프로젝트에서 @Component, @Controller, @Service, @Repository 와 같이 스프링 컨테이너에 등록되는 클래스에 Bean 주입 이외 용도의 필드(인스턴스 변수, 클래스 변수)가 있으면 안됩니다. 혹시 들어가야 한다면 final이어야 합니다. final 이더라도 그게 객체라면 불변임이 보장되는게 좋습니다. 2024. 4. 4. 이전 1 2 3 4 5 6 7 ··· 107 다음