-
[Clean Code] 독후감 및 정리 - 2
[Clean Code] 독후감 및 정리 - 1들어가기 앞서 (다시 읽기에 앞서)며칠 전 한 면접을 보게 되면서, "좋은 코드 가독성이라는 것을 어떻게 생각하세요 ?" 라는 질문을 받았습니다. 평소에 지키는 클린 코드라고 생각한 방법들(좋chanhhh.tistory.com지난 편 정리 및 결론 링크입니다.들어가기 앞서 (다시 읽기에 앞서) 이전에 1-3 장에 대해서 클린 코드를 읽고 주변의 프로그래머 지망생 동료와 책에 대한 얘기를 해봤습니다. 호불호가 많이 갈리는 책이다라고 얘기를 해주더라고요. 무조건적인 맹신은 지양하는 게 좋겠다는 뻔한 그런 얘기를 나눈 것 같습니다. 그래도 한 번쯤은 읽어서 좋은 인사이트를 가져가는 게 좋을 거 같다는 뻔한 얘기로 마무리되었습니다. 😊끊임없이 "왜"라는 질문을 문제..
2024.11.13 18:52 -
[Clean Code] 독후감 및 정리 - 1
들어가기 앞서 (다시 읽기에 앞서)며칠 전 한 면접을 보게 되면서, "좋은 코드 가독성이라는 것을 어떻게 생각하세요 ?" 라는 질문을 받았습니다. 평소에 지키는 클린 코드라고 생각한 방법들(좋은 함수 명명법, 변수명, 보기 좋은 코드...등등) 만 주욱 나열하고 "네 뭐 그런 클린코드에 나온 방법들입니다." 라는 말로 그대로 끝난 경험이 있습니다. 🥲 사실 클린 코드 책을 읽은지 오래되기도 했고, 아마 이 책을 처음 접했던 날은 2020년쯤이었던 것으로 기억합니다. 생각처럼 명쾌하지 못하게, 기억나는 대로 더듬더듬 이야기했던, 그런 유쾌하지 못한 경험을 하게 되었네요. 역시 기억보다는 기록인가 봅니다. 그래서 이젠 제대로 정리하여 명쾌하게 이야기할 수 있도록 글로 남기고자 합니다.이 책을 통해 좋은 코..
2024.11.02 21:34 -
[Xcode / Swift] 빌드 시스템에 대한 이해 / 증분 빌드 / 병렬 처리 / Eager Linking / Incremental
이 글을 쓰게 된 이유.. 웅장해진다... [Architecture] Modular Architecture VS Clean Architecture어느날 문득 Modular Architecture와 Clean Architecture에 대한 생각을 하게 되었습니다. 모듈화나 클린이나 결국엔 개념적으로 레이어를 나누고 개발자들의 상황에 맞춰 선택적으로 사용할텐데, 둘은 어chanhhh.tistory.comModular Architecture와 Clean Architecture는 의존성 관리 방식에서 차이를 보입니다.Modular Architecture에서는 모듈 간 의존성이 명시적으로 설정됩니다. 즉, 하나의 모듈이 필요한 경우 다른 모듈에 의존성을 가지며, 이를 통해 기능별로 독립된 모듈들이 서로 필요한 부..
2024.10.29 19:12 -
[Architecture] The Composable Architecture(TCA)를 사용해 보기 앞서 고려해야할 점은 뭐가 있을까
들어가기 앞서...오늘은 SwiftUI에서 가장 인기있고 맛있다고 소문난 TCA를 경험해보려고 합니다. 아키텍쳐를 사용해보기 이전에 먼저 이 아키텍쳐는 어떤 이점이 있고, 어떤 점이 중점적으로 다뤄지고 있고 무슨 기저를 가지고 아키텍쳐를 구성했는지에 대해서 생각해보려고 합니다.혹시 잘못 이해하고 있거나 글에 잘못된 점이 있으면 피드백 부탁드리겠습니다. 🙇♂️더보기 GitHub - pointfreeco/swift-composable-architecture: A library for building applications in a consistent and understandable way,A library for building applications in a consistent and underst..
2024.11.07 05:02 -
[Architecture] Modular Architecture VS Clean Architecture
어느날 문득 Modular Architecture와 Clean Architecture에 대한 생각을 하게 되었습니다. 모듈화나 클린이나 결국엔 개념적으로 레이어를 나누고 개발자들의 상황에 맞춰 선택적으로 사용할텐데, 둘은 어떤 공통점이 있고, 어떤 차별화된 점이 있는지에 대해서 생각해 보려고 합니다.개념과 목적 Modular Architecture나 Clean Architecture나 모두 레이어를 분리하여 코드의 가독성을 높이는 구조를 갖고 있어서, 둘 다 코드 가독성 면에서는 비슷한 장점을 공유하고 있습니다. 그렇다면 각 접근이 iOS개발의 어떤 필요성을 충족하는지, 특히 협업과 코드베이스 관리에 얼마나 유리한지, 유연성과 유지보수성이 어떻게 앱 품질에 기여하는지에 대해서 생각해 보게 되었습니다.우선..
2024.09.18 23:55 -
[Clean Architecture, SwiftUI] SwiftUI를 위한 클린 아키텍처
SwiftUI를 위한 클린 아키텍처에 대한 고찰팀 프로젝트를 준비하며, SwiftUI에서의 클린 아키텍처에 대해 고민하게 되었습니다. SwiftUI 관련 아키텍처를 검색하던 중 가장 먼저 눈에 띈 아티클이 바로 "SwiftUI Clean Architecture"였습니다. 다행히도 이 아티클은 한국어 번역본도 제공하고 있어, SwiftUI의 클린 아키텍처에 대해 조금 더 깊이 이해할 수 있는 좋은 기회가 될 것 같아 천천히 읽어보았습니다. 이번 글에서는 아티클의 주요 내용을 요약하고, 제 개인적인 생각도 함께 나눠보고자 합니다.아래 링크는 해당 아티클의 한국어 번역본 링크입니다. SwiftUI를 위한 클린 아키텍처들어가기에 앞서gon125.github.ioUIKit과 SwiftUI, 그리고 아키텍처 패턴의..
2024.09.07 07:32 -
[Clean Architecture] Presentation(MVVM), Domain, Data
Clean Architecture and MVVM iOS에서 가장 유명한 Clean Layered Architecture and MVVM 클린 아키텍쳐에 대해서 얘기해 보려고 합니다. 여태까지 UIKit으로 진행한 프로젝트들은 거의 MVVM으로 진행 했었고 나름 이정도면 MVVM에 대해서 잘 알고 있다고 생각했었는데요. 그냥 우물안의 개구리였을 뿐이라는 것을 깨달았습니다. 여태까지 한 프로젝트들은 Presentation의 MVVM 까지 구현하고 VM에서 Business 로직을 실행하고 있었습니다. 도메인과 데이터는 Clean Layered가 아닌 그냥 제가 편한대로 구현하고 있었는데요. 이번에 개인 프로젝트를 진행하면서 정리를 해볼겸, 설명을 좀 쉽게 해서 이해해볼 겸 작성합니다.iOS 개발자라면..
2024.08.30 18:38 -
[MacOS, iOS] Cocoa Fundamentals Guide / 코코아 기본 사항
코코아란 무엇인가요?Cocoa는 OS X 운영 체제와 iOS를 위한 애플리케이션 환경입니다.iOS는 iPhone, iPad, iPod touch와 같은 멀티터치 기기에서 사용되는 운영 체제를 뜻합니다.객체 지향 소프트웨어 라이브러리, 런타임 시스템 및 통합 개발 환경으로 구성되어 있습니다.이 글에서는 이 정의를 확장하여 두 플랫폼에서 Cocoa의 목적, 기능 및 구성 요소에 대해 설명합니다.Cocoa 환경Cocoa는 OS X 및 iOS에서 실행되는 애플리케이션을 위한 런타임 환경을 제공하는 객체 지향 프레임워크의 집합입니다. Cocoa는 OS X을 위한 탁월한 응용 프로그램 환경이며 iOS를 위한 유일한 응용 프로그램 환경입니다. (Carbon은 OS X의 대체 환경이지만 기존 OS X 코드 기반을 지..
2024.05.01 23:23 -
[Github] Sponsor
스폰서 기능이 어떻게 이뤄져있는지 궁금해서, 그냥 한번 해봤습니다. 스폰했다고 자랑하라고 해서 블로그에 올립니다 😂Tuist는 iOS, macOS, tvOS, watchOS 프로젝트의 관리와 빌드를 자동화하는 오픈 소스 도구입니다. Xcode 프로젝트와 workspace 파일을 자동으로 생성해주고, 프로젝트 구성을 코드로 정의할 수 있게 하여 협업과 유지보수를 쉽게 할 수 있게 도와줍니다.너무 잘 사용하고 있어서 타겟을 이곳으로 정했습니다 ☺️그냥 결제하면됩니다. ㅋㅋ결제하면 스폰서에 이름을 띄워주고, 깃허브 프로필 밑에 스폰서링이라고 뱃지가 달립니다. 축포와 함께 옥토켓이 저를 반겨줍니다.
2024.10.10 18:05
-
[삼체] 1부: 삼체문제 독후감
이 글은 스포일러가 포함되어 있지 않습니다.한동안 준비해 왔던 취업 준비가 마무리되고, 오랜만에 여유를 찾았습니다. 이를 계기로 잠시 멀리했던 책 모임에 다시 참여하기로 했습니다. 이번 모임에서 다룰 책은 바로 류츠신의 ‘삼체 1부: 삼체문제'입니다. (이하 삼체문제)2015년 아시아 최초 휴고상 최우수 장편상 수상작인 삼체문제는 가상현실 게임, 천체물리학 등 우리가 일상에서 접하기 어려운 주제를 다루면서도 현실과 교묘하게 연결된 장치들을 통해 독자를 깊이 몰입하게 만듭니다. 번역본임에도 불구하고 표현력이 뛰어나 더 몰입할 수 있었습니다. 원서로 읽었다면 어떨까 하는 아쉬움도 들었지만, 번역의 완성도는 취향 저격이었습니다.오랜만에 읽는 문학이기도 하고, SF 장르 특유의 흥미로움 덕분에 한 문장 한 문장..
-
정보처리기사 합격 후기
들어가면서안녕하세요. 오늘은 정보처리기사에 대해서 이야기해보려고 합니다. 필기 합격하고 후기를 쓰려다가, 실기까지 끝내고 쓰자! 합격하면 써야지!라는 마음으로 미루다 보니 이렇게 시간이 흘러버렸네요. 합격한 지는 조금 됐지만, 누군가에게는 도움이 될 것 같아 이렇게 글을 작성하게 되었습니다. 정보처리 ?정보 처리(情報處理, Information processing)는 기존의 정보를 가공하는 것으로, 보다 높은 부가 가치 정보를 새로 만들어 내는 것이다.더보기일반적으로 정보 처리는 "정보를 가공하는 공정"이라고 하며, 자료를 포함하는 어떠한 정보를 집어넣은 뒤, 그 집어 넣은 정보를 가공 처리하여 만들어진, 높은 부가 가치의 정보를 활용하는 것이다. 많은 정보를 빠르게 얻을 수 있을 뿐 아니라, "정보를 ..
-
멀티미디어콘텐츠제작전문가 실기 후기
산업기사 산기자격인 멀티미디어콘텐츠제작전문가(Specialist-Multimedia Contents Producing)입니다.실기를 치르고나서 글의 초안을 작성했다가, 나중에 실기 발표되고 합불까지 같이 올리고 싶어서 글을 좀 미뤄뒀습니다.어제(11/20)가 실기 발표날이었고, Q-Net 합격자 발표에서 조회할 수 있었습니다.합격총 합격자는 244명이었고, 저는 87점으로 합격하였습니다. 후기일요일인 10/27에 실기를 보고 왔습니다. 오전 08:30 시험이라 집에서 이동하기에 조금 빠듯했습니다.시험은 4시간입니다. 4시간 내로 제출까지 해야 합니다.시험장은 나눔디지털디자인학원이었습니다. 구로디지털단지역, 남구로역과 가산디지털단지역 사이에 있었습니다.저는 구로디지털단지역에서 따릉이 타고 갔는데, 도착할..
-
삼성 2024년 하반기 신입사원 공채 후기
글을 작성해 두고 한 동안 올릴지 말지 고민하다가, 이 글 보고 도움이 되실 분들도 있으실 것 같아서 작성합니다.궁금하신 점 있으시거나 도움이 필요하신 분들은 편하게 연락주세요. 삼성 에스원 연구개발(SW)지난 삼성 하반기 공채에서 삼성 에스원 연구개발(SW) 직무에 지원했습니다.지원 동기는 무엇보다도 모바일 앱 개발에 자신 있기도 하고, CI/CD에 관심이 많아 클라우드(AWS) 환경에도 관심이 많고 AI기반 영상처리와 얼굴인식 알고리즘이 정말 재밌어 보이기도 해서였습니다.그리고 무엇보다 에스원이 서울에 있어서 그게 제일 끌려서 지원한 것도 있습니다. 😊 서류 후기우선 서류는 3문항이 나왔습니다.1. 입사동기 + 이후 계획2. 성장과정3. 사회이슈1번은 수행업무와 그에 따른 제 역량에 관해 연관 ..
-
[Clean Code] 독후감 및 정리 - 2
[Clean Code] 독후감 및 정리 - 1들어가기 앞서 (다시 읽기에 앞서)며칠 전 한 면접을 보게 되면서, "좋은 코드 가독성이라는 것을 어떻게 생각하세요 ?" 라는 질문을 받았습니다. 평소에 지키는 클린 코드라고 생각한 방법들(좋chanhhh.tistory.com지난 편 정리 및 결론 링크입니다.들어가기 앞서 (다시 읽기에 앞서) 이전에 1-3 장에 대해서 클린 코드를 읽고 주변의 프로그래머 지망생 동료와 책에 대한 얘기를 해봤습니다. 호불호가 많이 갈리는 책이다라고 얘기를 해주더라고요. 무조건적인 맹신은 지양하는 게 좋겠다는 뻔한 그런 얘기를 나눈 것 같습니다. 그래도 한 번쯤은 읽어서 좋은 인사이트를 가져가는 게 좋을 거 같다는 뻔한 얘기로 마무리되었습니다. 😊끊임없이 "왜"라는 질문을 문제..
-
TIL: Today I Learned
TIL은 Today I Learned입니다.'오늘 내가 배운 것'이라는 뜻입니다. 개발자들에게는 익숙한 단어지만, 처음 들어보시는 분들도 있을 것 같습니다.그동안 프로젝트하느라 바빠서.. 자격증 공부하느라 바빠서라는 변명으로 기록하는 일들을 미뤄온 것 같습니다. 무엇을 하고 있는지, 또 무엇을 하고 싶은지 점점 목적을 잃어가고 있다는 생각이 들기도 했습니다. 🤔그래서 이제는 기억보다는 기록을 위해서 TIL을 작성하자라는 마음이 생겼습니다. 요즘 하루에 하나씩 꾸준히 포스팅하고, 백준 문제를 매일 한 문제씩 푸는 것도 그렇고, 매일 꾸준히 공부하는 습관을 TIL을 통해서 차근차근 잘 쌓아가고 있습니다.결론적으로 제가 하고 있는 것을 제대로 보여줄 수 있는 기록이 필요하다는 생각이 들어서 TIL을 꾸준히 ..
-
[Clean Code] 독후감 및 정리 - 1
들어가기 앞서 (다시 읽기에 앞서)며칠 전 한 면접을 보게 되면서, "좋은 코드 가독성이라는 것을 어떻게 생각하세요 ?" 라는 질문을 받았습니다. 평소에 지키는 클린 코드라고 생각한 방법들(좋은 함수 명명법, 변수명, 보기 좋은 코드...등등) 만 주욱 나열하고 "네 뭐 그런 클린코드에 나온 방법들입니다." 라는 말로 그대로 끝난 경험이 있습니다. 🥲 사실 클린 코드 책을 읽은지 오래되기도 했고, 아마 이 책을 처음 접했던 날은 2020년쯤이었던 것으로 기억합니다. 생각처럼 명쾌하지 못하게, 기억나는 대로 더듬더듬 이야기했던, 그런 유쾌하지 못한 경험을 하게 되었네요. 역시 기억보다는 기록인가 봅니다. 그래서 이젠 제대로 정리하여 명쾌하게 이야기할 수 있도록 글로 남기고자 합니다.이 책을 통해 좋은 코..
-
멀티미디어콘텐츠제작전문가 필기 후기
Specialist-Multimedia Contents Producing 스페셜리스트 ㄷㄷ.. 간지 나 보인다..국가자격 종목별 상세정보 | Q-net국가자격 종목별 상세정보www.q-net.or.kr한국산업인력공단에서 시행하는 영상 편집 전문가 시험입니다. 사실 이런 건지 몰랐습니다. 아래 pdf 출제 기준에 HTML, CSS 이런 게 있길래 이런것도 멀티미디어콘텐츠로 껴주나 싶은 그런 국가공인자격증인 줄 알고 신청했습니다. 출제기준이 25년에는 변경되는 거 같습니다. 출제기준 자료실에서 찾아보세요.정보처리기사 준비하면서 필기시험이 겹치는 부분이 좀 있어서 디자인, 멀티미디어 쪽 공부를 추가로 더 해서 보게 되었는데, 합격해 버려서 멀콘전 실기를 보러 갑니다. 😂 정보처리기사 실기 준비한다고 2회에서 ..
-
[iOS / macOS] Swift 면접 질문 2
문제 리스트 가져온 곳 GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.github.com 레벨 2Swift의 동시성(Concurrency) 프로그래밍에 대해 설명해주세요.Grand Central Dispatch(GCD)의 주요 개념과 사용 방법을 설명해주세요.OperationQueue와 DispatchQueue의 차이점은 무엇인가요?동시성 프로그래밍에서 발생할 수 있는 문제(Race Cond..
-
[iOS / macOS] 내 맥북에서 서버를 만들고 내 아이폰과 소켓 통신을 해보자
들어가기 앞서iOS의 소켓 통신에 대해서 궁금해서 찾아보다가 정보들이 부실하기도 하고, SocketIO에 대한 정보가 많아서 First-party Framework인 Network를 통해 직접 소켓 통신을 해보고 정리해 보기 위해서 이 글을 작성합니다.사전 지식이전에 c++98(POSIX) KQueue로 http 서버를 만들어 본 적이 있습니다. (대략 소켓 통신과 fd, tcp/ip, udp에 대해서 알고 있다는 뜻) GitHub - MyLittleWebServer/webserv: Web server made with C++98Web server made with C++98 . Contribute to MyLittleWebServer/webserv development by creating an acc..
-
[iOS] 데이터를 저장하는 방법들 / 간단 예제
간단한 예제들과 함께 알아보는 iOS에서 데이터를 저장하는 방법1. UserDefaultsNSUserDefaults에 저장되어 키-값 쌍으로 앱이 삭제되기 전까지 영구적으로 저장됩니다.간단하고 사용이 쉽습니다만 대규모 데이터나 민감한 데이터에 적합하지 않습니다.import Foundationclass UserDefaultsHelper { static let shared = UserDefaultsHelper() private let launchCountKey = "launchCount" private init() {} // 실행 횟수 읽기 func getLaunchCount() -> Int { return UserDefaults.standard.intege..
-
[iOS] 코드베이스 프로젝트 세팅 / Codebase Project
1. Main.storyboard(Main) 삭제(move trash) 2. Info.plist에서 Storyboard Name 삭제- 를 눌러 삭제하자 3. UIKit Main Storyboard File Base Name 삭제Module > TARGETS > Build Settings > filter(story)delete 키를 눌러 삭제하자 4. SceneDelegate의 willConnectTo 파라미터 함수 수정func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as..
-
[iOS] 에러 처리 / Error Handling
Swift의 에러 처리 방법Swift에서는 안전하고 명시적인 방식으로 에러를 처리하기 위해 에러 처리 기능을 제공합니다. Swift의 에러 처리는 에러를 발생시키고(throw), 전파하고(throws), 처리하는(catch) 방식을 기반으로 합니다.throws, try, catch 키워드의 사용 방법throws에러를 발생시킬 가능성이 있는 함수나 메서드에 사용합니다.throws를 선언한 함수는 호출할 때 반드시 try 키워드를 사용해야 합니다.enum NetworkError: Error { case invalidURL case noResponse}func fetchData(from url: String) throws -> String { guard url.starts(with: "http..
-
[iOS / macOS] Swift 면접 질문 1
문제 리스트 가져온 곳 GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.github.com 레벨 1Swift에서 옵셔널(Optional)이란 무엇이며, 언제 사용해야 하나요?옵셔널 바인딩과 강제 언래핑의 차이점은 무엇인가요?옵셔널 체이닝의 동작 원리는 무엇이며, 어떻게 사용하나요?암시적 언래핑 옵셔널(Implicitly Unwrapped Optional)은 어떤 경우에 사용해야 하나요?더보기..
-
[iOS] Delegate Pattern / 델리게이트(위임) 패턴
1. iOS에서 Delegate 패턴이란?Delegate 패턴은 객체 간의 통신을 구현하는 데 사용되는 디자인 패턴으로, 한 객체가 다른 객체의 행동을 위임할 때 사용됩니다.역할:A 객체가 특정 이벤트나 작업을 처리할 권한을 B 객체에게 위임(delegate)합니다.위임받은 객체는 정의된 프로토콜을 준수하여 해당 작업을 수행합니다.주요 특징:1:1 관계: 한 객체는 하나의 delegate만 가질 수 있음.타이트한 결합: 위임받은 객체를 명시적으로 지정해야 함.유연성: 이벤트나 작업 처리 로직을 외부 객체에 위임하여 재사용성과 코드 분리를 향상.2. Delegate 패턴 사용 사례Delegate 패턴은 1:1 이벤트 처리가 필요한 상황에서 사용됩니다.사용 사례UITableView, UICollectionV..
-
[Swift] 접근 제어자(Access Control Levels)
접근 제어자(Access Control Levels)Swift의 접근 제어자는 코드 내에서 접근 가능한 범위를 정의하여 모듈성과 코드의 캡슐화를 향상시키는 데 사용됩니다. Swift에서는 다섯 가지 접근 수준을 제공합니다:1. open특징: 모듈 외부에서 접근 및 재정의 가능.사용 위치: 클래스 및 클래스 멤버에만 사용 가능.목적: 해당 클래스를 다른 모듈에서 확장(상속)하고, 메소드를 재정의하도록 허용.예시: 외부 모듈에서 상속과 오버라이드를 지원해야 하는 경우.open class Car { open func horn() { print("honk") }}open class Morning: Car { override open func horn() { print("..
-
[iOS] Protocol / 프로토콜 / 개념 의미 요구사항 확장 POP
프로토콜 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다.구조체, 클래스, 열거형은 프로토콜을 채택해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있습니다.어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다고 표현합니다.타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야합니다. 즉 프로토콜은 기능을 정의하고 제시할 뿐이지 스스로 기능을 구현하지는 않습니다.공통 인터페이스 정의:서로 다른 타입에 동일한 동작을 강제.의존성 역전:코드의 유연성과 확장성을 증가.추상화:구체적인 구현이 아닌 동작에 집중. 프로토콜의 의미: 구현자와 사용자의 관점1. 구현하는 입장에서의 프로토콜프로토콜..
-
[iOS / macOS] apple OS, CS, Network 면접 질문
문제 리스트 가져온 곳 GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리👨🏻💻👩🏻💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.github.com 레벨 0컴퓨터 시스템에서 CPU, RAM, 저장 장치의 역할과 이들이 어떻게 상호 작용하는지 설명해주세요.CPU와 메모리 간의 데이터 교환은 어떻게 이루어지나요?버스(Bus)란 무엇이며, 어떤 종류가 있나요?더보기CPU(Central Processing Unit)컴퓨터의 핵심 처리 장치, 명령어를 해석..
-
[iOS] Auto Layout
1. iOS에서 Auto Layout을 사용하는 이유와 장점Auto Layout은 다양한 디바이스 크기와 화면 비율을 가진 iOS 환경에서, 반응형 레이아웃을 구현하기 위해 사용됩니다.이유디바이스 다양성 대응: iPhone, iPad, 다양한 화면 크기 및 방향(가로/세로) 지원.유지보수 용이성: 레이아웃을 코드로 설정하는 것보다 직관적이고 수정이 쉬움.애니메이션 지원: 뷰 크기와 위치를 변경할 때 자연스러운 애니메이션 처리 가능.다국어 지원: 텍스트 길이가 달라지는 다국어 환경에서도 레이아웃 유연성 제공.장점유연성: 부모/자식 뷰 간 상대적 크기와 위치를 설정 가능.가독성: Storyboard에서 시각적으로 제약 조건을 확인 가능.코드 재사용성: 다양한 화면 크기에서 동일한 레이아웃 재사용.Dynami..
-
[Swift] Singleton Multithread Strategy / 싱글톤 멀티스레드 전략
안전한 Singleton Pattern을 위환 Thread-Safe 관리우리는 앱에서 전역적인 리소스 공유, 앱 상태 관리, 네트워크 요청, 로깅 및 분석 등과 같은 곳에서 싱글톤 패턴을 활용합니다.이때 어디서든 동일한 인스턴스에 접근하게 되고, 앱이 복잡해질수록 데이터 레이스가 발생할 가능성이 높아질 수 있습니다. 이때 사용할 수 있는 방안에 대해서 몇 가지 예시를 제시합니다. 1. DispatchQueue를 활용한 데이터 동기화final class Singleton { static let shared = Singleton() private let queue = DispatchQueue(label: "com.singleton.threadsafe", attributes: .concurr..
-
암호화와 보안의 기본 개념, 그리고 iOS 앱 보안을 위한 방안
암호화와 보안의 기본 개념1. 암호화 (Encryption)암호화는 데이터를 특정 알고리즘을 사용해 변환하여, 인가된 사용자만이 읽을 수 있도록 보호하는 기술입니다.데이터를 암호화하면, 제3자가 데이터를 읽거나 해석할 수 없게 됩니다.핵심 용어:평문 (Plaintext): 암호화 전의 데이터.암호문 (Ciphertext): 암호화된 데이터.키 (Key): 암호화 및 복호화에 사용되는 값.복호화 (Decryption): 암호문을 평문으로 변환.2. 암호화의 유형대칭 키 암호화 (Symmetric Encryption):암호화와 복호화에 동일한 키를 사용.예: AES, DES.장점: 빠름.단점: 키를 안전하게 공유하는 것이 어려움.비대칭 키 암호화 (Asymmetric Encryption):암호화에 공개키(P..
-
[iOS] 운영체제의 구조 / iOS Layer
[MacOS, iOS] Cocoa Fundamentals Guide / 코코아 기본 사항코코아란 무엇인가요?Cocoa는 OS X 운영 체제와 iOS를 위한 애플리케이션 환경입니다.iOS는 iPhone, iPad, iPod touch와 같은 멀티터치 기기에서 사용되는 운영 체제를 뜻합니다.객체 지향 소프트웨어 라이chanhhh.tistory.com위 포스팅에서 iOS에서 다뤄졌던 내용입니다.iOS 운영체제의 구조iOS 운영 체제의 구조는 계층 기반입니다. Core OS Layer(Kernal & Device Drivers Layer)iOS 커널은 시스템 리소스, 프로세스, 메모리, 보안 및 장치 상호 작용을 관리합니다. 하드웨어와 소프트웨어 사이의 중개자 역할을 합니다. Mach 또는 Darwin이 계층에..
-
수병아... 니가 밉다... (미지의 공간 탈출 c++)
삼성 SW 역량테스트 2024 하반기 오전 1번 문제 복기입니다. 문제는 아래 링크에서 보실 수 있습니다. 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 다시는 이런 문제를 틀리지 않기 위해 복기 하였습니다... 🙃빡센 구현 문제 입니다. 산 부분을 어떻게 처리하느냐가 핵심입니다. 더보기 #include #include #include #include using namespace std;#define FASTIO ios_base::sync_with_stdio(0), cin.tie(0)#define MAXN 20#define MAXM 20#define..
-
[Xcode Cloud] 토이프로젝트에 CI / CD 적용하기
현재 진행하고 있는 토이프로젝트에 Xcode Cloud를 적용해 보려고 합니다.이번 포스팅에서는 Xcode Cloud를 하나씩 차근차근 진행하는 것에 대해 다룹니다.이전에 진행한 Tuist + Fastlane + Github Action을 Xcode에서 진행하는 거라고 생각하시면 됩니다. command +9를 누르거나 좌측 상단에 있는 report navigator 버튼을 선택 합니다.선택하게 되면 Xcode Cloud 설명이 나오고 아래 Get Started 버튼이 나오는데 이걸 선택해줍니다.쭉쭉 Next를 선택하여 지나가면, GitHub와 Xcode Cloud를 연결하라고 하는데, 연결해주면 됩니다. Xcode Cloud 범위를 해당하는 레포로만 잡아줍니다. 나중에 필요하다면 깃허브에서 변경해주면 ..
-
31796 c++ - 한빛미디어 (Easy)
기본적인 그리디문제 [Swift 이코테] Greedy / 그리디 / 탐욕 알고리즘그리디 알고리즘이란? Greedy algorithm은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으chanhhh.tistory.com 정렬을 사용해서 풀었다. 문제 보기https://www.acmicpc.net/problem/31796 #include #include #include using namespace std;int n;int main() { cin >> n; vector books(n); for (int i = 0; i > books[i]; } sort(books.begin(), books.end())..
-
21608 c++ - 상어 초등학교
구현 문제첫 접근은 요소에 관해서 구조체로 후보지를 선정하여 풀었는데, 코드를 보다보니 너무 복잡해지고 조건 처리가 까다로워져서 각 자리에 맞춰서 후보자를 선정 후 조건에 맞춰서 넣어서 풀었습니다. 더보기https://www.acmicpc.net/problem/21608 #include #include #include #include using namespace std;int dx[] = {1, 0, -1, 0};int dy[] = {0, 1, 0, -1};struct SittingInfo { int r, c, emptyCount, favCount; bool operatorfavCount == o.favCount) { if (this->emptyCount == o.emptyCount) { ..
-
30049 c++ - 영업의 신
더보기요즘은 백준에서 랜덤 마라톤 문제를 풀고 있습니다. 그중 오늘은 G번 문제인 30049번 문제를 풀도록 하겠습니다. 구현 문제입니다. 더보기https://www.acmicpc.net/problem/30049 시간복잡도를 상수시간에 맞춰서 코드를 작성해야합니다. #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int marketBestSeller[10000];int bestSellerCount[300];int salesTable[10000][300];int maxSales[10000];int countBestSeller(int employeeCount, int chargeCount) { int count =..
-
20920 c++ - 영단어 암기는 괴로워
[C++] map / multimap / unordered_map / unordered_multimap맵(map)맵은 키-값 쌍을 저장하고 키를 기반으로 데이터를 검색하는 데 사용됩니다. C++에서는 각 맵 타입의 동작 방식, 특징, 사용 목적에 따라 차이가 있습니다. 주요 map 타입들과 그 차이점을 정chanhhh.tistory.com map으로 접근해서 vector로 끝냈습니다.기본적으로 c++의 map은 ordered와 unordered로 나뉩니다. 자동 정렬이 되는 맵이 있고, 해쉬 맵이 있습니다.자주나오는 단어를 찾기 위해서 상수로 인덱싱이 가능한 unordered_map을 사용해서 카운트를 처리하였고, 정렬을 위해서 ordered한 map 을 고려해보다가가 multimap으로도 풀 수 있을..
-
6987 c++ - 월드컵
어떻게 풀까 고민하다가. 데이터가 적어서 그냥 조합으로 풀었습니다. [C++] 순열, 조합표준 라이브러리로는 next_permutaion 과 prev_permutaion 이 있습니다.next_permutaion : "오름차순의 배열"을 기반prev_permutaion : "내림차순의 배열"을 기반#include using namespace std;template void pa(t T) { for (auto p : Tchanhhh.tistory.com가능한 모든 조합을 combi로 찾아서 matches 를 만들고, 해당 matches부터 재귀적으로 찾아 모든 게임이 끝났을때 result의 승,무,패가 0이 아닌경우를 찾아서 반환하는 경우로 처리하였습니다. #include #include using nam..
-
10827 c++ - a^b
큰 수 string 계산 c++ 버전. cmath 함수인 pow를 사용하지 못하는 이유는 부동소수점 연산을 사용하여 근사값을 계산하기 때문입니다.부동소수점은 IEEE 754 표준을 따르며, C++의 double 타입은 약 15~17자리 십진수 정밀도를 제공합니다.테스트 케이스를 보면 소수점들이 들어가 있는데 이를 부동소수점으로 저장하면 이진수로 근사 처리되어 미세한 차이가 발생합니다.부동소수점 연산은 각 단계에서 오차를 누적시킵니다. 거듭제곱 연산은 반복 곱셈을 포함하므로, 결과에 포함된 오차가 더 커집니다.#include int main(void) { double s; double p; cin >> s >> p; cout.precision(20); cout 그래서 해당 문제에서는 고정 소수점..
-
9414 c++ - 프로그래밍 대회 전용 부지
간단한 정렬 문제이다. (그리디)pow의 헤더를 포함 안해줘서 컴파일 에러가 났다. cmath를 이용하면 된다.두번째 틀린 이유는 sum의 오버플로우 이슈 때문이었다.long long으로 고쳐서 제출하니 통과 되었다.https://www.acmicpc.net/problem/9414#include #include #include #include #define INIT_MONEY 5 * 1000000#define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int main() { FASTIO; int t; cin >> t; for (int i = 0; i p; while (1) { cin >> m; if (m ..
-
7453 c++ - 합이 0인 네 정수
이분탐색 문제입니다. 처음엔 해시로 접근했었습니다. 더보기해시 적용첫 풀이. -> 시간초과map을 사용해서 AB의 합을 먼저 구하고, 이후 CD의 합으로 unordered_map으로 접근 O(1) -> N^2 + N^2의 시간으로 풀 수 있을 거라 판단 최악의 경우 4000^2 + 4000^2으로 32,000,000번의 연산으로 충분히 풀 수 있을 거라 생각했습니다.시간초과의 이유 : 캐시히트의 시간까지 고려가 되어야함.더보기#include #include #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int main() { FASTIO; int n; cin >> n; vector A(n), B(n), ..
-
1655 c++ - 가운데를 말해요
우선순위 큐를 사용하는 문제.처음에는 우선순위 큐, vector의 정렬 중간값을 사용해서 풀이를 진행했는데, 시간초과가 났습니다.그래서 우선순위 큐 두개를 사용하여 최대힙, 최소힙을 사용하여 풀었습니다.더보기 더보기vector v; for (int i = 0; i > t; v.push_back(t); sort(v.begin(), v.end(), less()); cout 더보기#include #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0)using namespace std;int n;int main() { FASTIO; cin >> n; priority_queue, greater> pq; queue q; for (int ..
-
30469 c++ - 호반우가 학교에 지각한 이유 2
소수찾기 문제의 심화버전이다. 알고리즘 분류는 애드 혹이다.체를 사용하여 최적해를 구할 수 있도록 하였다. 더보기 c++ 코드#include #include #include using namespace std;bool prime[100];void savePrime() { memset(prime, true, sizeof(prime)); prime[0] = prime[1] = false; for (int i = 2; i = 10 && c & number) { number[0] = a / 10; number[1] = a % 10; for (int i = 2; i > a >> b >> n; if (!prime[a] || !prime[b]) { cout number(n, 0); if (fin..
-
25511 c++ - 값이 k인 트리 노드의 깊이
문제 제목이나 분류를 보면 트리로 되어있지만, 굳이 트리로 풀지 않아도 됩니다.결국 깊이를 찾는 문제이므로, 부모의 정점을 기억하여 0으로 고정되어있는 root를 찾아서 거슬러 올라가면 찾을 수 있습니다.기본적인 그래프 문제. 트리로 풀려다가 이진 트리가 아니면 부모의 인덱스로 찾기가 어려워질것 같아서 부모만 잡아서 풀었습니다. 자료구조를 편협하게 정해서 "무조건 이걸로 풀어야해"하면서 문제에 덤비게 되면 눈 뜬 장님이 되어버리는 경우가 생기는 것 같습니다. 이런 문제도 그렇고 bfs도 그렇고.. 그래서 좀 시각을 넓게 보고 이게 '확실한가 ?', '이게 최적인가 ?' 하는 의심을 계속해서 해보고 더이상 의심이 들지 않을때 문제를 풀어내는 습관을 들이는 중입니다.뭐 많이 의심해도 그게 잘못된거면, 아직은..
-
21735 c++ - 눈덩이 굴리기
백트래킹 문제입니다. 또는 DP로도 풀 수 있습니다. [Swift] BackTracking / 백트래킹 / 퇴각검색BackTracking / 백트래킹 / 퇴각검색 여러 후보 해 중에서 특정 조건을 충족시키는 모든 해를 찾는 알고리즘. 해를 찾는 도중 막히면 돌아가 다시 해를 찾아간다. 1. 해를 찾아가는 과정은 '루트'에서chanhhh.tistory.com [종만북] Dynamic Programming / DP / 동적 계획법Algorithmic Problem Solving Strategies 개인적으로 읽고 정리한 요약입니다. 아래 링크에 문제 풀이 예제가 있습니다. GitHub - chanheki/AlgorithmicProblemSolvingStrategies: Algorithm Book Stu..
-
2623 c++ - 음악프로그램
위상정렬을 사용해서 풀었습니다. 처음에는 조금 헤맸습니다. 뒤에 나오는 값들을 들고있게 만들어야 하나 해서, reverse로 뒤집어 보기도 했는데 그냥 바로 뒤에 있는 값만 들고 있으면 된다는 사실을 깨닫고 풀었습니다. [그래프/정렬/유향] 위상정렬 / Topological Sorting위상정렬 / Topological Sorting 유향 비순환 그래프(Directed Acyclic Graph, DAG) 에서 각 노드들을 선형 순서로 나열하는 방법입니다. 여기서 유향 비순환 그래프란, 방향이 있는 그래프 중에 사이클이 없chanhhh.tistory.com 문제보기 #include #include #include #include #include #define FASTIO ios::sync_with_stdi..
-
2239 c++ - 스도쿠
간단한 백트래킹 문제이다. queue를 사용해서 0의 좌표값들을 저장해서 사용했는데, 이런식으로는 처음 사용해봐서 애를 좀 먹었다. /* ************************************************************************** *//* *//* ::: ::: ::: *//* Problem Number: 2239 :+: :+: :+: *//* ..
-
1005 c++ - ACM Craft
위상정렬을 사용하면 쉽게 풀 수 있습니다. [그래프/정렬/유향] 위상정렬 / Topological Sorting위상정렬 / Topological Sorting 유향 비순환 그래프(Directed Acyclic Graph, DAG) 에서 각 노드들을 선형 순서로 나열하는 방법입니다. 여기서 유향 비순환 그래프란, 방향이 있는 그래프 중에 사이클이 없chanhhh.tistory.com1516번 문제와 거의 동일한 문제. 단 w의 값을 출력해주면 됩니다.#include #include #include #define fastio ios::sync_with_stdio(0), cin.tie(0)using namespace std;int main() { fastio; int t; cin >> t; for (i..
-
5619 c++ - 세 번째
세번째 작은 수 찾는 프로그램. 우선 처음 접근을 next_permutation을 통해 찾으려고 했는데, 해당 함수는 1,1,1 과 같은 중복된 숫자에 대해서 순열을 찾지 않는다는 것을 깨달았습니다. 이는 모든 요소가 동일하기 때문에 사전 순으로 더 이상의 다른 순열이 존재할 수 없기 때문입니다. int i = 0; do { if (i == 2) { cout 그래서 dfs로 변경해서 풀었는데, 갯수가 10^8개가 되면서 dfs로 전부 찾으려고 하니까 시간 초과가 났다.생각해보니, 가장 작은 수 4개만 찾으면 세번째로 작은 수를 찾을 수 있을거라 판단하고 코드를 작성하여 해결했다. 정답 코드.#include #include #include #define fastio ios::sync_..