본문 바로가기
반응형

프로그래밍

iOS 개발자 되는 방법 2017년, 땡전 한푼 없던 나는 돈을 빌려서 200만원 가까이 되는 맥북 프로를 구매했다. 맥북으로 모바일 앱을 개발해서 광고를 올리고 돈을 벌어보고 싶다는 생각이 문득 들었기 때문이다. 무슨 자신감이었는지 빌린 200만원은 앱 개발만 끝나면 바로 갚을 수 있을 거라 생각했다. 그래서 어떻게 됐냐고? 물론 개발한 앱은 망했다. 하지만 빌린 200만원은 금방 갚았다. 왜냐면 몇 달 후 iOS 개발자로 취업했기 때문이다. 사실 애초에 플랜 A부터 C까지 준비했었다. A. iOS 앱을 개발해서 광고수익으로 부자되기 - 실패 B. 개발한 iOS 앱을 포트폴리오로 활용하여 취업하기 - 성공 C. A랑 B 둘중 하나라도 될 때까지 계속 공부 및 개발하기...? 정말로 운 좋게 플랜B에 따라 약 반년 뒤 홍콩의 F.. 더보기
[Swift] @frozen은 무슨 의미일까? @를 붙이면 자바에서는 Annotation이라고 부르던데, Swift에서는 Attributes라고 한다. 완전히 같은것인지는.. 잘 모르겠지만 비슷한것 같다. 네트워크 서비스를 구현하다가 Result라는 enum의 선언을 봤는데 @frozen이 붙어있었다. 잉 근데 도대체 이게 뭐지? 일단 얼었다는 뜻이니까.. 고정되어 있다는 것을 의미한다고 유추할 순 있었다. 그래서 찾아보니... @frozen을 붙여주면 나중에 새로운 case가 추가되지 않는걸 약속한다는 의미란다. 근데 그걸 왜 약속해야 하지? @frozen이 붙은것과 안붙은 것의 차이 @frozen이 없는 enum의 예시부터 확인해 보자. func example1(_ sizeClass: UIUserInterfaceSizeClass) { switch.. 더보기
Drupal(드루팔)로 웹사이트 구축하기 웹사이트 구축 및 관리를 위해 CMS(Content Management System)를 찾아보던 도중 Drupal이라는 플랫폼을 발견했다. 따라서 지금부터 Drupal로 웹사이트를 구축하는 과정을 기록하고자 한다. Drupal이란? 한마디로 PHP 기반 오픈소스 CMS 서비스다. CMS를 통해 웹사이트 유저를 관리하거나 게시물을 관리할 수 있다. 즉 이를통해 상업적인 웹사이트도 마치 블로그를 관리하듯 편하게 관리할 수 있다. 비슷한 플랫폼으로 워드프레스, Wix 그리고 Joomla 등이 있다. Drupal 공식 사이트 - https://www.drupal.org/ 창립자이자 수석 개발자 - 드리스 보이타르트(https://dri.es/blog)(HTTP Headers Analyzer 제공) Drupal .. 더보기
[iOS] MVC와 MVVM에 대한 생각 현재 회사에서 iOS 앱 8개를 맡아서 업무를 하고 있다. 대부분 넘겨받은 앱들이라 기존 작성되어 있는 패턴에다가 살을 붙이는 작업이 주로 하는 업무인데, 이런 업무를 하면서 가장 문제가 되었던 부분은 단연 디자인 패턴에 있다고 생각이 든다. 앱에서 거의 대부분 MVC 패턴을 사용하고 있는데, 처음 볼륨이 작았을 때는 별로 문제가 되지 않았을지 모르지만 점점 기능들이 추가되는데도 불구하고 MVC 패턴을 유지해왔다. 그러다보니 ViewController의 내용이 점점 길어지고 복잡해져서 가독성도 떨어지고 디버깅을 하는데 아주 큰 어려움이 있다. 개인적으로는 상황에 따라 MVC와 MVVM을 혼용하는게 적절하다고 생각하고 있는데, 앱의 볼륨이 너무 커지다 보니 리팩토링이 엄두가 나지 않는 수준이 되어버렸다. .. 더보기
The escaping cat on Scratch Basic movement - walking to left and right with left and right arrow or touch screen - jumping with space bar or double tap 기본 조작법 - 키보드 좌우 화살표 또는 화면 터치로 좌우 움직이기 - 스페이스바 또는 더블탭으로 점프 더보기
SDK vs API vs Framework vs Library? 개발 1-2년 차에 SDK, API, 프레임워크, 라이브러리에 대한 차이를 구분하지 못해서 찾아본 적이 있다. SDK(Software Development Kit) - 소프트웨어 개발 키트 - 특정 운영 체제용 앱 개발을 위한 소프트웨어 개발 도구 API(Application Programming Interface) - 응용프로그램 개발 인터페이스 - 프로그램 간 상호 통신을 하기 위한 형식 또는 인터페이스 Framework - 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것 Library - 특정 작업을 위해 쓰인 변수, 함수 등의 모음 대충 검색하면 이런 식으로 한두 줄로 정의를 내리고 있다. 근데 도대체 무슨 말인지 아무리 읽어봐.. 더보기
[Xcode] Build Configuration 및 Flag 추가하기(#if DEBUG 처럼..) 목록 #if DEBUG 말고 다른 flag가 필요하다면? Build Configuration 추가하기 Custom Flags 추가하기 #if DEBUG 말고 다른 flag가 필요하다면? Xcode에 기본적으로 DEBUG와 RELEASE라는 Build Configuration이 세팅되어 있다. 보통 DEBUG는 디버그 빌드용으로, RELEASE는 출시용으로 나누어서 구분하여 관리한다. 내가 관리하는 앱 같은 경우 DEBUG와 RELEASE에 따라 API 주소를 변경해줘야 하기 때문에 아래와 같이 사용한다. #if DEBUG var requestURL = "https://dev-...." // development API 주소 #else var requestURL = "https://prod-...." //.. 더보기
커스텀 운영체제를 향한 여정, 그 시작 개인 OS를 만들어보고 싶다는 생각이 불현듯 떠올랐다. 리눅스를 쓰거나 우분투 같은 기타 배포판을 써도 되지만 기존 운영체제의 불필요한 부분들을 전부 배제한 나만의 전용 OS를 통해 내 꿈을 실현하고자 하는 욕망이 생긴 것이다. 욕망은 번지르르했으나 실력은 시궁창. 지금은 커스텀 리눅스는커녕 리눅스를 제대로 운용하지도 못하는 리린이일 뿐. 일단 리눅스에 대한 공부가 시급하다. 커스텀 리눅스 배포를 위한 단계들을 한번 정리해봤다. 기본 리눅스 공부하기 - 리눅스 책이나 인터넷 강의를 통해 공부를 시작하자. 리눅스마스터나 LPIC와 같은 리눅스 관련 자격증을 취득하는 것도 좋을 듯. - 공부자료(https://doc.lagout.org/, https://github.com/q2dg/) 리눅스 오픈소스 분석하.. 더보기