개발
-
[iOS/WWDC21] Explore structured concurrency in swift 1
안녕하십니까, 민트입니다. 😈 WWDC21 Explore structured concurrency in swift를 보고 내용을 정리해 보았습니다.양이 많아서 Part1과 2로 분리합니다.구조적 프로그래밍초기에 컴퓨터를 사용할 때는 명령어 시퀸스로 작성되어 제어 흐름을 관리하기 어려웠습니다. 하지만 요즘은 언어에서 구조화된 프로그래밍을 사용하여 제어 흐름을 균일하게 만들기 때문에 이러한 일은 거의 없어졌습니다.예를 들어 if - else문은 구조화된 제어 흐름을 사용합니다. 중첩된 코드 블록이 위에서 아래로 이동하는 동안에만 조건부로 실행됩니다. 이처럼 Swift에서는 해당 블록이 정적 범위인 scoping을 따릅니다. 이에 해당 블록 내에서 정의된 변수들의 생명 주기는 블록을 벗어날 때 끝납니다.이처..
2025.04.01
-
[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.03.25
-
[Flutter] 원하는 위치로 Scroll 하기
안녕하십니까, 민트입니다 😈이번 포스팅은 Flutter 작업을 하며 있었던 일입니다. Swift와 다르게, Flutter는 특정 item으로 Scroll을 해주는 내장 함수가 존재하지는 않더라고요. 때문에 하나의 item 높이를 곱한 오프셋으로 Scroll하는 방식을 사용해 보았습니다. 이때 아래와 같은 두 가지 문제가 있었어요. 📚 작업- SalaryCap 초과해서 구매가 안되는 선수는 skip하고 스크롤해서 구매 가능 선수부터 보여주기1. 다시 돌아가는 Scroll몸값이 낮거나 같은 첫번째 선수의 인덱스를 찾아, player item 하나의 높이를 곱한 오프셋으로 scroll하였습니다. 이때 `shrinkWrap: true`, `NeverScrollableScrollPhysics()`로 인해 스크..
2025.03.23
-
[Network] TLS/SSL
암호화 통신 프로토콜SSL(Secure Socket Layer) / TLS(Transport Layer Security)는 모두 웹 브라우저와 웹 서버 간 통신을 암호화하는 프로토콜이다. SSL은 웹 브라우저 개발사에서 만든 프로토콜로 인터넷 기술 표준화 단체인 IETF가 TLS로 다시 설계하여 인터넷 표준으로 삼았다.📖 장점기밀성(암호화) : 서버와 주고 받는 데이터가 스니핑 되는 것을 방지한다.데이터 무결성 : 패킷 전달 과정에서 데이터가 제 3자에 의해서 악의로 변경되는 것을 방지한다.서버 인증 : 서버가 신뢰할 수 있는 서버라는 것을 확인한다.📖 암호화TLS는 보안과 성능상의 이유로 두 가지 암호화 방법을 혼용해서 사용한다. 암호화를 위해서는 키가 필요하다.이때 암호화와 복호화에 사용하는 키는..
2024.10.28
-
[패러다임] 함수형 프로그래밍
안녕하십니까, 민트입니다. 😈 WWDC Swift Macro를 보다 보니 함수형 프로그래밍의 특징을 많이 살린 것 같아서 한 번 정리해 보았습니다.소프트웨어를 구축하는 패러다임에는 함수형 프로그래밍, 객체 지향 프로그래밍 등이 있습니다. 이때 함수형 프로그래밈은 프로그램의 상태 변경과 가변 데이터 사용을 최소화하고, 순수 함수와 불변 데이터를 강조하는 프로그래밍하는 접근 방식입니다. 한 마디로 사이드 이펙트가 없는 기능을 만드는 것에 집중하는 프로그래밍 방식으로 코드의 가독성과 유지보수성을 높이고, 부작용(Side Effect)을 줄이는 것을 목표로 합니다. 여러가지 특징들에 대해서 좀 더 자세히 알아봅시다.Random 함수는 절대 순수할 수 없다.순수 함수란 무엇일까요? 동일한 Input에는 언제나 ..
2024.10.23
-
[Reject] Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
5.1.1(ii) PermissionApps that collect user or usage data must secure user consent for the collection, even if such data is considered to be anonymous at the time of or immediately following collection. Paid functionality must not be dependent on or require a user to grant access to this data. Apps must also provide the customer with an easily accessible and understandable way to withdraw consent..
2024.09.01
-
[Reject] Guideline 2.3.3 - Performance - Accurate Metadata
2.3.3Screenshots should show the app in use, and not merely the title art, login page, or splash screen. They may also include text and image overlays (e.g. to demonstrate input mechanisms, such as an animated touch point or Apple Pencil) and show extended functionality on device, such as Touch Bar.Issue DescriptionSome or all of the provided screenshots do not sufficiently show the app in use. ..
2024.09.01
-
[Reject] Guideline 2.1 - Performance - App Completeness
(a) Submissions to App Review, including apps you make available for pre-order, should be final versions with all necessary metadata and fully functional URLs included; placeholder text, empty websites, and other temporary content should be scrubbed before submission.Make sure your app has been tested on-device for bugs and stability before you submit it, and include demo account info (and turn ..
2024.08.31
-
[Reject] Guideline 1.5 - Safety
1.5 Developer InformationPeople need to know how to reach you with questions and support issues. Make sure your app and its Support URL include an easy way to contact you; this is particularly important for apps that may be used in the classroom. Failure to include accurate and up-to-date contact information not only frustrates customers, but may violate the law in some countries or regions. Als..
2024.08.31
-
[iOS/Swift] WKWebKit 약관 상세 페이지 전환하여 띄우기
우리는 노션 웹페이지로 두 개의 상세 페이지를 보여준다. ( 페이지는 현재 제외되었다.)같은 형식의 뷰에, title과 WebView의 링크만 바뀐다. 다만 여기서 버튼을 눌렀을 때, 바깥의 약관 선택 페이지에서도 해당 표시가 반영되어야 했다. 구조를 고민하다가, 위의 3개 페이지가 전부 같은 뷰모델을 공유하여 상태 값들을 전달받을 수 있도록 구현했다.WKWebView 사용WebView의 구현 방식에서는 3가지가 있다. 1. WKWebKit2. open safari3. SFSafariViewController나는 이 중에서도 닫기 버튼을 커스텀하고, 따로 웹에서 작업할 것 없이 앱 내에서 보여주기만 할 것이기에 WKWebKit을 사용하였다. 노션으로 약관을 정의했는데, 약관의 내용이 수정되었을 때 굳..
2024.07.07
책 리뷰
-
[혼자 공부하는 컴퓨터 구조 + 운영 체제] 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.03.28
-
[혼자 공부하는 컴퓨터 구조 + 운영체제] 1장 컴퓨터 구조 시작하기
📕 기억에 남는 문장들컴퓨터 구조를 이해하고 있다면 문제 상황을 빠르게 진단할 수 있고, 문제 해결의 실마리를 다양하게 찾을 수 있습니다.성능, 용량, 비용 문제는 프로그래밍 언어의 문법만 알아서는 해결하기 어렵습니다.컴퓨터 구조를 이해하면 입력과 출력에만 집중하는 개발을 넘어 성능, 용량, 비용까지 고려하며 개발하는 개발자가 될 수 있습니다.컴퓨터 구조 지식컴퓨터가 이해하는 정보: 0과 1데이터: 숫자, 문자, 이미지, 동영상과 같은 정적인 정보명령어: 데이터를 움직이고 컴퓨터를 작동시키는 정보컴퓨터의 네 가지 핵심 부품 CPU(중앙처리장치)ALU(산술논리연산장치): 계산기제어장치: 제어 신호라는 전기 신호를 내보내고 명령어를 해석하는 장치레지스터: CPU 내부의 작은 임시 저장 장치, 여러 개가 존..
2025.03.27
-
[오브젝트] 2장 객체지향 프로그래밍 (feat. POP와의 비교)
📕 기억에 남는 문장들진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 프로그래밍 하는 동안 다음의 두 가지에 집중해야 한다.어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라.클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다.객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 객체는 홀로 존재하는 것이 아니다. 다른 객체에게 도움을 주거나 의존하면서 살아가는 협력적인 존재다.훌륭한 협력이 훌륭한 객체를..
2025.03.26
-
[오브젝트] 1장 객체, 설계
📕 기억에 남는 문장들- 프로그래밍 패러다임은 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충동을 방지한다. 또한 프로그래밍 패러다임을 교육시킴으로써 동일한 규칙과 방법을 공유하는 개발자로 성장할 수 있도록 준비시킬 수 있다.- 객체지향 패러다임이라는 용어를 사용할 때 완벽하게 동일하지는 않더라도 어느 정도 유사한 그림을 머릿속에 그릴 수 있도록- 동일한 규칙과 표준에 따라 프로그램 작성- 서로 다른 패러다임이 하나의 언어 안에서 공존함으로써 서로의 장단점을 보완하는 경향을 보인다.- 혁명적이 아닌 발전적코드를 이해하기 어려운 이유- 코드가 상식과 너무나도 다르게 동작하는 경우- 이해하기 위해서는 여러가지 세부적인 내용들을 한꺼번에 기억해야하는 ..
2025.03.14
회고
-
[Prography] 프로그라피 9기 중간 회고
안녕하십니까, 민트입니다 😈어느덧 프로그라피를 시작한지 4개월이 지나갑니다. 팀에서도 회고를 하게 된 김에 가볍게 중간 회고를 해보려 합니다. 이번이 저의 첫 사이드 프로젝트인데요, 팀원 분들이 모두 유능하셔서,, 기획이나 일정을 잡는 부분에 있어서 사이드는 어떻게 해야하는지 많이 배우는 시간이었습니다. 특히 저는 처음부터 모든 서비스들이 유저 친화적으로, 다양하게 나와야 한다고 생각했었는데 마냥 그런 건 또 아니더라구요. 앱을 업데이트 하는 것은 빠르지만, 출시를 하기까지는 시간이 오래걸리기에 우선적으로 MVP를 빠르게 출시한 후 꾸준한 업데이트로 발전시켜가는 것이 회사가 아닌 사이드로 프로젝트를 유지하기에는 더 유리한 것 같아요. 또 저는 사실 앱을 한번 출시까지만 하고나서는 업데이트 과정이니까 그..
2024.07.05
-
[Prography]Unsplash Clone 과제 및 9기 합격 회고
안녕하십니까, 민트입니다. 😈 지원했던 프로그라피 9기 과제에 대한 짧은 후기를 남겨보았습니다.프로그라피 9기에 지원하였다. 그리고 1월 29일 서류 합격에 대한 연락과 함께 과제를 받았다! 처음으로 받아보는 과제는, 그저 막막했다. 그동안 이러한 것도 공부해보지 않고 뭐했니, 나 자신? 놀랍게도 처음으로 사용해보는 collectionView였다. 두비두비두비둡. collectionView의 공식문서, 예제는 뜯어봤지만.. 간단한 구현도 해봤지만... 커스텀해서 프로젝트에 적용한다고 생각하니 심장이 두근거렸다. 일주일 이라는 시간 내로 다 할 수 있을까?! 일단 되는 곳까지는 전부 구현하자! 이번 과제를 시작하면서 스스로 정한 것이 하나 있었다. 외부 라이브러리 사용 없이, 필요하다면 전부 구현하자고...
2024.02.05
-
[야곰 아카데미]커리어 스타터 9기 회고
안녕하십니까, 민트입니다. 😈 야곰 커리어 스타터 9기에 대해 짧은 회고를 적어보았습니다.야곰 아카데미 9기로서의 6개월이 끝났다. 바로 서포터즈를 시작해서 그런지 수료가 별로 와닿지는 않는다. 동기들도 아직까지는 다같이 스터디도 하면서 디코에 남아있어서 그런걸까? 그저 수료를 했으니, 더 열심히 플젝을 해서 서포터즈가 끝날 때 쯤에는 취업을 해야지! 정도의 목표의식인 것 같다. 아니 더 솔직하게 말해보자면 졸업했을 때의 느낌처럼 더 이상 보호받지 못하고 취업 시장에 내던져 진 기분이랄까. 야곰에서의 시간은 여러모로 많은 것들을 배우는 시간이었다. 대부분이 언니오빠들이라 그런지 첫 사회생활 아닌 사회생활에 발을 딛은 느낌이 났다. 다 같이 공부를 하러 와 있기에 완전한 회사에서의 모습들은 아니지만, ..
2023.11.20