전체 글 19

[객체지향의 사실과 오해: 마무리] 07 함께 모으기 / 부록 A

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 객체지향 설계 안에 존재하는 관점이 있다.개념 관점(Conceptual Perpective): 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 이 관점은 사용자가 도메인을 바라보는 관점을 반영하고, 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점(Specification Perspective): 사용자 영역인 도메인을 벗어나 개발자 영역인 소프트웨어로 초점이 옮겨진다. 실제 소프트웨어 안 객체들의 책임에 초점을 맞추게 된다. (객체의 인터페이스) 명세 관점에서 프로그래머는 객체가 '무엇'을 할 수 있는가에 초점을 맞춘다. 구현 관점(Implemenation Perspective)은 실제 작업을 수..

Book 2024.11.20

왜 우리는 CORS를 알아야 할까?

우리는 CORS 에러가 나타나면 머리가 지끈지끈 합니다. 저는 CORS를 '에러'의 한 종류라고 생각했어요. 그런데 CORS는 에러가 아니라 '정책'이라는 사실 아셨나요? 오늘 이 글을 읽고 여러분이 CORS에 대한 오해를 풀 수 있었으면 좋겠습니다. 자신도 모르게 많은 미움을 받았을 CORS에게 이 글을 바칩니다! Porpose CORS를 확실히 이해한다. CORSCORS는 Cross-Origin Resource Sharing의 약자로 W3C에서 내놓은 정책입니다.W3C (World Wide Web Consortium)W3C 의 규약 중 CORS 관련 규약이 존재합니다. 이것을 각 브라우저 벤더들(크롬을 만드는 구글, IE를 만드는 마이크로소프트, 파이어폭스를 만드는 모질라, 사파리를 만드는 애플 et..

Etc 2024.11.09

[객체지향의 사실과 오해] 06 객체 지도

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. 길을 물어 직접 알려주는 방법이 '기능적이고 해결 방법 지향적인 접근법'이라면 지도를 이용하는 방법은 '구조적이고 문제 지향적인 접근법'이다. 지도는 길을 찾는 데 필요한 구체적인 기능이 아니라 길을 찾을 수 있는 '구조'를 제공한다. 그리고 지도는 범용적이다. 지도를 제작한 사람들이 지도를 만들 때는 사용할 사람들이 구체적으로 어떤 목적으로 지도를 사용할지 알지 못한다. 지도를 사용하는 사람들의 요구사항은 계속 바뀐다. 마을까지의 길을 찾을 수도 있고 기차역으로 이동하는 길을 찾을 수도 있다. 지도는 이 모든 요구사항을수용할 수 있는데, 지도는 기능에 비해 상대적으로 잘 변하지 않는 안정적인 지형 정보를 기반으로 하고 있기 때문이다. 지도 은유의..

Book 2024.10.30

왜 'a'는 String type이 될 수 없을까? feat. SCP

char을 큰 따옴표로 묶거나 String을 작은 따옴표로 묶으면 type 에러가 발생합니다. char c = "a"; // errorString s = 'a'; // error 🤓 왜 'a'는 String type으로 쳐주지 않는 걸까요?왜 리터럴 타입으로 받을 때 따옴표로 둘을 구분해야하는지 의문을 가져보신 분들이 있을 것 같습니다.해당 글에서는 둘을 구분해야하는 이유를 알아보고, String의 동작 방식을 정리해보려고 합니다. feat. char vs String 'a'와 "a"가 달라야 하는 이유char은 Primitive 타입이고 String은 Reference 타입입니다.Primitive 타입은 기본 데이터 타입으로 값을 직접 저장합니다. 반면 Reference 타입은 이름과 같이 메모리 주..

Language 2024.10.27

[객체지향의 사실과 오해] 05 책임과 메시지

✏️, 💡,❓ 해당 이모지는 저의 생각임을 나타냅니다. '책임감 분산' 현상과 관련된 실험이 있다.음성 대화방에서 누군가 발작을 일으켰을 때, 자신 말고도 도와줄 학생이 있다고 믿으면 아무도 도움을 요청하지 않고, 자신과 발작을 일으킨 학생 단 둘만이 있다고 믿었을 때는 참가자의 85%센트가 도움을 요청했다.사건에 대한 목격자가 많으면 개인이 느끼는 책임감은 적어진다는 것이다. 자율적인 책임객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다.  적절한 책임의 선택이 전체 설계의 방향을 결정한다. 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. => 협력에 참여하는 객체..

Book 2024.10.23

스트림은 느긋하고 싶다

Stream API는 2014년 Java8과 함께 혜성처럼 등장했습니다. ☄️그리고 현재까지 자바 개발자들의 사랑을 듬뿍 받고 있죠. 스트림은 병렬처리, 무한 데이터 등 많은 것을 지원해줍니다. 하지만 누군가가 그 중 꼭 알아야 할 스트림의 특징이 뭐야?라고 묻는다면 전 딱 이렇게 말할 것 같습니다. 스트림은 느긋하다고. Streams are lazy. computation on the source data is only performed when the terminal operation is initiated, and source elements are consumed only as needed. purpose지연 연산의 특징을 알아보고 Stream의 동작 방식에 대해 이해합니다.  어느날, 개발자 A..

Language 2024.10.13