[Swift3]Protocol Extension(1) – 클래스 또는 구조체가 Protocol Extension에 같은 이름을 갖는 메소드나 계산 속성을 가질 때 어떻게 될까?
Swift로 코드를 작성하다보면 Protocol Extension에 구현된 메소드 또는 계산 속성과 클래스 또는 구조체에 구현된 메소드와 계산 속성 이름이 같으면 어떻게 동작하지 라는 고민을 하게 됩니다. A라는 프로토콜에 foo라는...
Swift로 코드를 작성하다보면 Protocol Extension에 구현된 메소드 또는 계산 속성과 클래스 또는 구조체에 구현된 메소드와 계산 속성 이름이 같으면 어떻게 동작하지 라는 고민을 하게 됩니다. A라는 프로토콜에 foo라는...
최근에 구현한 부분에서 이상한 경험을 했는데 같은 db 프로시저를 호출하는 코드를 쓰고 테스트를 했는데 어떤 조건으로는 데이터가 순서에 맞게 잘 나오고 안나오고 하는 경우였다. 데이터는 mssql 저장 프로시저에서...
Name Mangling은 단어 그대로 이름을 조각조각냄으로써 고유한 이름을 가짐 여부 문제를 해결합니다. 컴파일러로부터 만들어진 코드는 링커를 통해 다른 부분과 연결되는데, 링커는 각 프로그램 개체의 많은 정보가 필요합니다. 이는...
JSON API 스팩 문서를 다시 번역하면서 꽤나 긴 markdown 문서를 작성해야되는 경우가 발생했다. 그러다보니… 코멘트로 나눔이 필요한 경우가 발생! 구글에서 간단하게 검색하니 Comments in Markdown - Stackoverflow 라는 글이...
요즘 작업하는 환경이 상당히 오래된 코드를 접할 수 있는 환경이라서 코드를 정리하는 일이 많은데 최근 버전에서도 돌아갈 수 있도록 코드를 정리하는 김에 패키지로 관리하고 테스트도 작성하도록 팀에 권하고...
이 글에서는 Rails 5.1에서 도입된 System Test를 Headless Chrome를 사용하여 실행하는 방법에 대해서 알아보고, 이를 Travis CI에서 동작시키는 방법에 대해서 알아봅니다. 소개 Rails System Test Rails 5.1부터, 프레임워크...
들어가기 전에 Ruby 2.4.x에서 동작하는 코드입니다. 아마 1.9까진 잘 돌아갑니다. 싱글톤 클래스에 대한 이해가 필요합니다. 이해하시는 분은 이 글을 읽을 필요가 없겠지만… include 우선 문서를 봅시다. Invokes Module.append_features...
PHP에서도 다른 타입 언어처럼 함수 인자에 타입을 지정할 수 있도록 타입 선언(Type declaration)을 지원한다. 1 동적 타입 언어에서 왜 이런 문법을 사용해야 하는가에 대한 이야기는 여전히 많지만 타입...
본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것...
스핀락에 대해 어렵게 생각하시는 분들이 많으시더군요. 실제 구현은 간단합니다. static inline void arch_spin_lock(arch_spinlock_t *lock) { unsigned long tmp; /* * 스핀락의 ARM 아키텍쳐 구현입니다. * 1. lock->lock의 값을...
API 상에서 JSON 으로 응답을 내보내기 위해서는 데이터를 Json Serialize(직렬화)를 해야한다. 그런데 json 에서 표현할 수 있는 데이터는 한정이 되어 있어서 각 프로그래밍 언어에 있는 모든 타입을 지원하지는...
Ruby style guide와는 다른 부분이 보여서 읽고 신경쓰이는 부분을 정리해보았습니다. 전체는 여기에서 확인하실 수 있습니다. 긴 메소드 체인의 마지막 부분이 블럭인 경우 이런 경우에는 앞 부분과 뒷 부분을...
본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것...
본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것...
본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것...
PHP를 사용하면서 가장 아쉬운 부분은 인터페이스다. PHP는 인터페이스를 지원하고 있고 이 인터페이스를 활용한 타입 힌트, 의존성 주입 등 다양한 방식으로 적용 가능하다. 하지만 제네릭 타입이 존재하지 않아서 타입...
본 글은 Toptal에 올라온 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 글을 보고 공부하면서 쓴 글이다. 번역 + 개인의 공부내용이라고 생각하면 될 것...
상황: 모바일에서 사이드 네비게이션이 열린 상태에서 스크롤시 body는 스크롤 되지 않게 하고싶다 Solution A: CSS html, body { overflow: hidden; position: relative; height: 100%; } PC에선 문제 없이...
Google Chrome 58 에서 정책 EnableCommonNameFallbackForLocalAnchors의 기본 설정이 변경되었다. 이 변경으로 개발 환경에서 https에 사용하는 사내 자가서명 인증서에 missing_subjectAltName 문제로 접근이 차단되었다. 보안상 이 설정을 변경하지 않는 것이...
인터페이스빌더(interface builder) 혹은 스토리보드(storyboard)에서 디자이너간 준 색상 코드를 입력했는데 이상하게 코드로 입력한 색상과 다르게 보이는 현상이 있었습니다. 코드로 입력한건 잘되는데 인터페이스 빌더에서 직접 지정한 색상의 경우에만 원하는 색상이...
viewDidAppear는 화면이 완전히 나타났을 때, 호출됩니다. 하지만 처음으로 호출되었는지를 알기 위해 일반적으로 변수를 통해 상태를 관리합니다. 하지만 iOS 5.0 이후 버전부터는 isBeingPresented, isBeingDismissed, isMovingToParentViewController, isMovingFromParentViewController를 사용할 수 있습니다....
Swift에서는 프로토콜 지향 프로그래밍을 지원하는 언어로, Protocol에 변수, 함수를 규약합니다. protocol A { var name: String { get set } mutating func set(name: String) } 위의 A라는 프로토콜은...
오늘 회사에서 코드리뷰를 하다가 나온 내용을 하나 올려본다. 대단한 내용은 아니고 어떻게든 포스팅 하나정도 해야할 것 같아서.. 메소드에 인스턴스를 하나 넘겨주는데 값을 먼저 확인해서 null일 경우 NullPointerException을 던지는...
기존에 팝업 호출, 인증, 알럿 등을 사용할 때 Delegate 또는 Closure를 사용해서 처리합니다. 하지만 이러한 방식은 코드를 읽는데 흐름이 끊어집니다. 예를 들어, 인증 Delegate 메소드를 찾으러 화면을 이동하거나,...
[Wordpress] 타사이트 사용자 정보를 통해 회원 생성 후 로그인하기 A사이트의 회원 정보 그대로 B사이트에서 로그인 정보를 받아 회원으로 자동 등록 해주고 싶을 때가 있습니다. 이런 경우 보통 SSO로...
앱을 만들다가 Debug 에서 잘 실행되는것을 확인하고 TestFlight 에 올려서 테스트 하는데 앱을 시작하자 마자 크래시가 발생하는 문제가 발생했습니다. 발생한 에러는 다음과 같았습니다 2017-04-03 15:12:19.049 daangn[48068:1047076] Unknown class...