본문 바로가기

전체 글

(19)
Clean Architecture: Architecture 소프트웨어 시스템의 아키텍처는 그 속의 소프트웨어 시스템이 쉽게 개발, 배포, 운영, 유지보수되도록 만들어져야 한다. 이러한 일을 용이하게 만들기 위해서는 가능한 한 많은 선택지를 가능한 한 오래 남겨두는 전략을 따라야 한다. 시스템 아키텍처는 동작 여부와는 관련이 거의 없고, 배포, 유지보수, 계속되는 개발 과정에 영향을 준다. 즉, 쉽게 이해하고, 쉽게 개발하며, 쉽게 유지보수하고, 쉽게 배포하게 해주는 역할을 하며, 궁극적으로 시스템의 수명과 관련된 비용을 최소화하고 프로그래머의 생산성을 최대화하는 것이다. 개발 시스템 아키텍처는 개발팀이 시스템을 쉽게 개발할 수 있도록 뒷받침해야 한다. 팀 구조가 다르면 아키텍처 관련 결정에서도 차이가 난다. 여러 팀이 시스템을 개발하고 있을 때, 다른 요소를 고..
[Alg] Daily LeetCoding Challenge 22.03.03: 413 Arithmetic Slices 문제: https://leetcode.com/problems/arithmetic-slices/ 입력 배열에서 arithmetic 부분배열을 출력하는 문제! arithmetic이 되기 위해서는 적어도 3개의 원소가 들어가야 하고, 연속되는 두 개의 원소의 차가 2여야 한다. nums가 [1, 2, 3, 4, 5] 라고 가정해보자. 만들 수 있는 arithmetic은 [1, 2, 3], [2, 3, 4], [3, 4, 5], [1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5] 로 총 6개가 된다. 여기서의 규칙은 먼저 [1, 2, 3]과 [2, 3, 4]가 만들어지면, [1, 2, 3, 4]도 만들 수 있다는 것이다. 더군다나 [3, 4, 5]까지 만들 수 있다면, [2, 3, 4..
[Alg] Daily LeetCoding Challenge 22.03.01: 338 Counting Bits 문제: https://leetcode.com/problems/counting-bits/ 0부터 n을 Binary number로 변환한 값에 속한 1의 개수를 배열로 반환하는 문제이다.문제의 난이도는 Easy로 되어있지만, Binary number에 대해 익숙하지 않다면 그닥 Easy~ 하지는 않을 수 있다. Binary number를 쭉 한번 그려보자. 내가 그린... Binary search... 너무 삐뚤빼뚤하지만... ^_^;; n을 Binary number로 변환하면 왼쪽처럼 나올 것이고, k는 1의 개수를 의미한다. 이렇게 보니까 규칙이 한 눈에 보인다! 2의 제곱들은 1이 한 개고, 그 뒤에 있는 애들의 값들은 어떠한 규칙으로 계속 반복된다. 그리고 그 값이 조금씩 커지는데 두개씩 짝지어보면..
[iOS] 앱에서 Microphone과 Bluetooth 연결을 하고 싶은(최소한 연결이 되어있는지 확인이라도 하고 싶은...) 지두리의 여정~ 내 앱에서 Microphone과 Bluetooth 연결을 하고 싶다면 어떻게 해야할까? BLE가 아닌 Bluetooth Classics으로 말이다! 결론부터 말한다면 어려울 수도 있다..... 일단 나는 위에 언급한 그대로 마이크와 블루투스 연결을 하고 싶었기 때문에 열심히 구글링을 해보았다. 그러다가 Stackoverflow 질문글인 iOS: pair a Bluetooth peripheral in my app, instead of using Settings 를 발견했다. 이 질문글에 들어가면 질문자가 아주 친절하게 Sony Application가 어떻게 블루투스 연결을 하는지 스크린샷을 찍어 올린 것을 볼 수 있다. ~예상 뷰~ 간단하게 설명하자면, Sony App에서 디바이스를 연결하면 Picker..
the Christmas Pig 🎄🐷 Summary Chapter 12 Holly bought a christmas pig for Jack but he didn't forgive her. Instead of forgiving, he smashed the pig into the wardrobe and tried to pull his head off. He decided to find DP after everyone fell asleep. Chapter 13 The things in Jack's bedroom got eyes and mouths and started to talk! The reason why they could talk was that night was Christmas eve that is very special night. They sai..
[자바] 참조 타입 - 2 앞에서 참조 타입을 정확히 알기 위해 JVM의 메모리 구조를 살펴 보았습니다. 이제는 진짜 참조 타입에 대해서 알아보도록 하지요! 기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만, 참조 타입 변수는 값이 아니라 힙 영역이나 메소드 영역의 객체 주소를 가지고 있습니다. 그래서 참조 타입의 변수가 생성되면 일단 스택 영역에서 생성되지만, 실제 값은 힙 영역에서 생성이 됩니다. 스택 영역이 가지고 있는 값은 힙 영역의 주소가 저장되는 것이지요. 참조 변수의 '= =', '! =' 연산 '==', '!=' 연산은 변수의 값이 같은지 확인할 때 사용됩니다. 그렇기 때문에 기본 타입의 경우에서만 비교 연산으로써 사용할 수 있습니다. 왜냐하면 참조 타입의 경우 변수에 진짜 값이 저장되어 있는 것이 아니라, 주..
[운영체제] Interrupt의 원리 이 포스팅은 를 참고하였습니다. 프로그램의 구조와 인터럽트 우리의 컴퓨터 프로그램의 내부적인 구조는 항상 함수들로 구성됩니다. 하나의 함수가 수행될 때 다른 함수가 호출되고, 호출된 함수가 종료되면 원래 호출했던 함수의 위치로 되돌아가서 계속 수행합니다. 프로그램이 수행되기 위해서는 프로그램의 주소 영역이 메모리에 올라가 있어야 하는데, 프로그램의 주소 영역 중 스택 영역이 함수 호출 시에 복귀할 주소 및 데이터를 임시로 저장하는 곳으로 사용되고 있습니다. 우리가 작성한 프로그램은 제일 처음 메인 함수에서 실행하며, 메인 함수에서 다른 함수를 호출하면 CPU가 메인 함수의 코드를 수행하다가 다른 함수의 코드로 수행 위치로 이동합니다. 그러면 프로그램은 새로운 함수 위치로 점프해서 그 함수를 실행합니다. ..
[자바] 참조 타입, JVM, 메모리 영역 참조 타입 프로그램이 하는 일은 결국 데이터를 처리하는 일입니다. 그렇기 때문에 우리는 자바를 배우기 앞서 자바의 데이터 타입에 대해 충분히 이해하고 넘어가야 할 필요가 있습니다. 기본 타입에 대해서는 다들 어느정도 많이 알 것입니다. 오늘은 참조 타입에 대해서 자세히 알아보도록 하겠습니다! 자바의 데이터 타입으로 기본 타입(Primitive Type)과 참조 타입(Reference Type)으로 분류됩니다. 기본 타입의 경우 선언된 변수의 값을 변수 안에 저장하는 데에 반해, 참조 타입으로 선언된 변수는 그의 값이 아닌 메모리의 번지를 값으로 가집니다. 즉, 참조 타입은 번지를 통해 객체를 참조하는 데이터를 의미합니다. 아래의 코드를 살펴봅시다! int birth = 2000406; double wei..