Marshal structs the right way: Golang 

많은 Golang 초보자들이 struct를 json으로 마샬링하면서 실수를 하곤한다. 이 문서는 이 문제를 어떻게 해결했는지를 담고 있다. golang에서 정의된 필드를 사용하지 않는 비어있는 struct를 json으로 마샬링하면, 각 필드가 기본 값을 가진체 마샬링 된다. 때때로 이는 개발자를 혼란스럽게 한다. 아래 코드를 보자. package main...

Mysql에서 JSON 활용 

은 인터넷 상에서 서로 다른 애플리케이션 간에 데이터를 주고 받기 위해서 사용하는 오픈 파일 포맷이다. XML과 비슷하다고 볼 수 있다. 그렇다면 이미 널리 사용하고 있었던 XML 대신 JSON 이라는 새로운 포맷이 나온 이유가 뭘까 ? 참고로 XML은 1998년 표준 권고안이 나왔고 JSON은 2013년 ECMA-404를 통해서 표준이 만들어졌다. (물론...

TDD 세미나 문서 

코드는 매 빌드마다 테스트 코드를 중복해서 실행한다. 빌드를 성공하기 위해서는 테스트를 통과해야만 한다. 따라서 "테스트를 성공했다면" 이전의 품질목표는 달성했다는 것을 보장 할 수 있다. 기능이 많아질 수록 문제를 찾기가 점점 힘들어진다. 프러덕트화 될 수록 문제 해결이 힘들어진다 품질을 예측 할 수가 없다. 빈번한 빌드와 통합 빌드의 자동화 통...

Spring boot 설치 및 개발환경 설정 

$ uname -aLinux yundream 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00$ java -versionopenjdk version "11.0.5" 2019-10-15OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.119.04)OpenJDK ...

Go는 C를 대체 할 수 있을까 ? 

원문 그렇지 않다. 애초에 Go는 C/C++를 대체하기 위한 목적으로 디자인하지 않았다. Go는 구글의 네트워킹 인프라스트럭처를 유지하던 C++ 의 엄청난 복잡성과 긴 컴파일 시간을 해결하기 위한 C++의 대체폼으로 설계됐다. 여기에서 중요한 점은 프로그래머들은 구글러이며, 연구자들이 아니란 것이다. 그들은 일반적으로 매우 젊고, 이제 막 학교를 졸업했으...

Dart Class 

다트는 클래스와 믹스인(mixin)기반의 상속을 사용하는 객체지향언어다. 모든 객체는 클래스의 인스턴스이며 모든 클래스는 객체로부터 파생된다. 믹스인은 부모 클래스로부터 상속받아서 메서드를 사용하지 않고, 다른 클래스를 "포함"하는 방식으로 사용한다. 다중상속에서 발생하는 다이아몬드 문제(diamond problem)를 해결 할 수 있다. 믹스인은 "구현된...

첫번째 Flutter App 만들기 

Flutter 관련 문서를 찾아다녔는데, 초반에는 문서를 따라서 첫번째 앱을 만들어보기로 했다.이 문서는 첫번째 flutter 앱을 만드는 기본 안내서다. 루프, 조건, 객체지향등의 기본 프로그래밍 개념을 가지고 있다면, 이 자습서를 쉽게 완료 할 수 있을 것이다. Dart 혹은 모바일 프로그래밍에 대한 사전 경험은 필요하지 않다.스타트업 이름을 만들어주는...

NeoVim 기반 개발환경 설정 

NeoVim과 CoC를 이용해서 개발 환경을 만들기로 했다. 개발 환경을 vi 기반으로 해보려고 하다가 결국 문서를 정리하게 됐다. 운영체제 사용언어 software-properties-common은 apt 레포지토리 관리를 위한 툴들을 제공한다. 이 툴을 이용해서 배포판을 관리를 쉽게 할 수 있다. # sudo apt-get install softwar...

Dart function 

다트는 순수 객체지향 언어(True object-oriented language)이므로 함수도 유형이 Function인 객체로 다룬다. 즉 함수를 변수에 할당하거나 다른 함수에 인자로 전달 할 수 있다. Dart 클래스의 인스턴스를 함수처럼 호출 할 수도 있다. 아래는 함수 구현 예제다.main() { print("Factorial ${factorial(1...

VSCode 기반의 Flutter 개발환경 만들기 

을 만들기는 했지만, 인간적으로 너무 무겁다. 그렇다고 작업을 못 할 정도라거나 그런건 아니고, 그동안 vim만 사용하다보니 적응하기가 쉽지 않았다. 키보드 입력 속도를 간당간당하게 따라가는 느낌. 이것 저것 너무 산만한 느낌. 그래서 VSCode로 환경을 구축하기로 했다. Vim 기반 개발환경도 찾아보긴 했는데, 좀 무리인 것 같았다. 설치 운영체제는 우...