분류 전체보기38 [오브젝트] 3장. 역할, 책임, 협력 📕 기억에 남는 문장들객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다.객체지향 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다.객체지향에서 가장 중요한 것은 역할, 책임, 협력이다. 역할, 책임, 협력이 제자리를 찾지 못한 상태라면 응집도 높은 클래스와 중복 없는 상속 계층을 구현한다고 하더라도 여러분의 애플리케이션이 침몰하는 것을 구원하지 못할 것이다.협력객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용객체는 고립된 존재가 아니라 시스템의 기능이라는 더 큰 목표를 달성하기 위해 다른 객체와 협력하는 사회적인 존재다. 협력은 객체지향의 세계에서 기능을 구현할 수 있는 유일한 방법이다.어떤 객체가 다른 객체에게 무언가를 요청하는 것.. 2025. 4. 4. [iOS/WWDC21] Explore structured concurrency in swift 1 안녕하십니까, 민트입니다. 😈 WWDC21 Explore structured concurrency in swift를 보고 내용을 정리해 보았습니다.양이 많아서 Part1과 2로 분리합니다.구조적 프로그래밍초기에 컴퓨터를 사용할 때는 명령어 시퀸스로 작성되어 제어 흐름을 관리하기 어려웠습니다. 하지만 요즘은 언어에서 구조화된 프로그래밍을 사용하여 제어 흐름을 균일하게 만들기 때문에 이러한 일은 거의 없어졌습니다.예를 들어 if - else문은 구조화된 제어 흐름을 사용합니다. 중첩된 코드 블록이 위에서 아래로 이동하는 동안에만 조건부로 실행됩니다. 이처럼 Swift에서는 해당 블록이 정적 범위인 scoping을 따릅니다. 이에 해당 블록 내에서 정의된 변수들의 생명 주기는 블록을 벗어날 때 끝납니다.이처.. 2025. 4. 1. [혼자 공부하는 컴퓨터 구조 + 운영 체제] 2장 데이터 📕 기억에 남는 문장들0과 1을 나타내는 가장 작은 정보 단위를 비트(bit)라고 합니다. 비트는 전구에 빗대어 생각해 보면 이해하기 쉽습니다.1 byte8 bit1 kB1,000 byte1 MB1,000 kB1 GB1,000 MB1 TB1,000 GBword란 CPU가 한 번에 처리할 수 있는 데이터 크기를 의미합니다. 만약 CPU가 한 번에 16 비트를 처리할 수 있다면 1워드는 16비트가 되고, 한 번에 32 비트를 처리할 수 있다면 1워드는 32 비트가 되는 것이죠.정의된 워드의 절반 크기를 하프 워드, 1배 크기를 풀 워드, 2배 크기를 더블 워드라고 부릅니다.이진수의 음수 표현컴퓨터는 0과 1만 이해할 수 있기 때문에 마이너스 부호를 사용하지 않고 0과 1만으로 음수를 표현해야 합니다.가장 .. 2025. 3. 28. [혼자 공부하는 컴퓨터 구조 + 운영체제] 1장 컴퓨터 구조 시작하기 📕 기억에 남는 문장들컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있습니다.성능, 용량, 비용 문제는 프로그래밍 언어의 문법만 알아서는 해결하기 어렵습니다.컴퓨터 구조를 이해하면 입력과 출력에만 집중하는 개발을 넘어 성능, 용량, 비용까지 고려하며 개발하는 개발자가 될 수 있습니다.컴퓨터 구조 지식컴퓨터가 이해하는 정보: 0과 1데이터: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보명령어: 데이터를 움직이고 컴퓨터를 작동시키는 정보컴퓨터의 네 가지 핵심 부품 CPU(중앙처리장치)ALU(산술논리연산장치): 계산기제어장치: 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치레지스터: CPU 내부의 작은 임시 저장 장치, 여러 개가 존.. 2025. 3. 27. [오브젝트] 2장 객체지향 프로그래밍 (feat. POP와의 비교) 📕 기억에 남는 문장들진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 프로그래밍 하는 동안 다음의 두 가지에 집중해야 한다.어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라.클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다.객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 객체는 홀로 존재하는 것이 아니다. 다른 객체에게 도움을 주거나 의존하면서 살아가는 협력적인 존재다.훌륭한 협력이 훌륭한 객체를.. 2025. 3. 26. [Flutter] Uncategorized (Xcode): Command CodeSign failed with a nonzero exit code. 안녕하십니까, 민트입니다 😈플러터 프로젝트를 하는 중 문제가 생겼습니다.Uncategorized (Xcode): Command CodeSign failed with a nonzero exit code.Could not build the application for the simulatorError launching application on iPhone 15 Pro.1. Signing & Capabilities Team제가 처음부터 끝까지 하는 프로젝트가 아니라 다른 메인 개발자 분이 계신 상태이고, 그분이 대부분의 파일을 생성하셨습니다. 때문에 Apple signing & Capabilities의 Team 역시 그분의 것으로 되어 있었고, 이로 인해 빌드가 되지 않았습니다. 때문에 로컬에서 작업하고 .. 2025. 3. 25. [Flutter] 원하는 위치로 Scroll 하기 안녕하십니까, 민트입니다 😈이번 포스팅은 Flutter 작업을 하며 있었던 일입니다. Swift와 다르게, Flutter는 특정 item으로 Scroll을 해주는 내장 함수가 존재하지는 않더라고요. 때문에 하나의 item 높이를 곱한 오프셋으로 Scroll하는 방식을 사용해 보았습니다. 이때 아래와 같은 두 가지 문제가 있었어요. 📚 작업- SalaryCap 초과해서 구매가 안되는 선수는 skip하고 스크롤해서 구매 가능 선수부터 보여주기1. 다시 돌아가는 Scroll몸값이 낮거나 같은 첫번째 선수의 인덱스를 찾아, player item 하나의 높이를 곱한 오프셋으로 scroll하였습니다. 이때 `shrinkWrap: true`, `NeverScrollableScrollPhysics()`로 인해 스크.. 2025. 3. 23. [오브젝트] 1장 객체, 설계 📕 기억에 남는 문장들- 프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충동을 방지한다. 또한 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다.- 객체지향 패러다임이라는 용어를 사용할 때 완벽하게 동일하지는 않더라도 어느 정도 유사한 그림을 머릿속에 그릴 수 있도록- 동일한 규칙과 표준에 따라 프로그램 작성- 서로 다른 패러다임이 하나의 언어 안에서 공존함으로써 서로의 장단점을 보완하는 경향을 보인다.- 혁명적이 아닌 발전적코드를 이해하기 어려운 이유- 코드가 상식과 너무나도 다르게 동작하는 경우- 이해하기 위해서는 여러가지 세부적인 내용들을 한꺼번에 기억해야하는 .. 2025. 3. 14. [Network] TLS/SSL 암호화 통신 프로토콜SSL(Secure Socket Layer) / TLS(Transport Layer Security)는 모두 웹 브라우저와 웹 서버 간 통신을 암호화하는 프로토콜이다. SSL은 웹 브라우저 개발사에서 만든 프로토콜로 인터넷 기술 표준화 단체인 IETF가 TLS로 다시 설계하여 인터넷 표준으로 삼았다.📖 장점기밀성(암호화) : 서버와 주고 받는 데이터가 스니핑 되는 것을 방지한다.데이터 무결성 : 패킷 전달 과정에서 데이터가 제 3자에 의해서 악의로 변경되는 것을 방지한다.서버 인증 : 서버가 신뢰할 수 있는 서버라는 것을 확인한다.📖 암호화TLS는 보안과 성능상의 이유로 두 가지 암호화 방법을 혼용해서 사용한다. 암호화를 위해서는 키가 필요하다.이때 암호화와 복호화에 사용하는 키는.. 2024. 10. 28. 이전 1 2 3 4 5 다음