분류 전체보기

    Swift 기초 문법 - 클로저 (1)

    Swift 기초 문법 - 클로저 (1)

    Javascript에서도 클로저란 개념이 있는데, Swift 에서도 클로저란 개념이 들어간다. 사실 아직 클로저란 개념이 잘 안잡히고 명확하게 정의를 내리기엔 아직 내 개발 지식이 부족하다.... 클로저는 일종의 메소드의 개념과 유사한데 1급 객체로 전달 인자(Parameter) 변수(Variable), 상수(Constant) 등 저장 및 전달이 가능한 코드 블럭이라고 일단 정의를 내릴 수 있을 거 같다. 지금까지 함수라고 쓰였던 func들 다 클로저의 일종이라고 한다. 다만, 이름이 존재하는 클로저 정도? 그래서 이번 Swift 강의를 들으며 개념을 정확하게 잡으려 한다. 기본적인 클로저 문법 { (매개변수 목록) -> 반환타입 in 실행코드 } 아까 정의 내렸던 1급 객체란 말이 조금 더 와닿을 문법..

    Swift 기초 문법 - 프로퍼티 옵저버, 함수 매개변수, 제네릭

    Swift 기초 문법 - 프로퍼티 옵저버, 함수 매개변수, 제네릭

    프로퍼티 옵저버 변수에 블록 처리를 하여 willSet과 didSet를 선언할 수 있다. willSet은 설정할 값을 먼저 불러와 처리하고, didSet은 설정된 값을 불러와 처리할 수 있다. 함수 매개변수 myFunction 함수에 name이라는 매개변수를 선언하고 String을 반환하도록 선언한다. 이건 일반적인 함수, 메소드 정의이다. 40 line에서 myFunction에서 name이라는 String 값을 호출하고 출력해본다. 이후 myFunctionSecond 함수에는 매개변수를 이름을 선언하고 반환 타입은 String 똑같이 선언해본다. 그리고 만약 클래스 내에 myFunctionSecond 함수에서 받고자 하는 변수명이 myName이다? 그러면 42 line 처럼 함수 매개변수를 myName..

    Javascript - dayjs 라이브러리

    Javascript - dayjs 라이브러리

    회사에서 글로벌 서비스 개발 중 dayjs를 지겹게 사용해서 내가 기록용으로 포스팅하려한다. 각 나라마다 timezone에 맞도록 Datetime을 시간을 변경하고 통계 데이터를 쌓고, 조회해야 해서 기존에 사용하던 moment(이제 개발 중단되서 지원안함)를 사용안하고 dayjs를 활용한다. 그리고 또, Mysql DB 시간도 우리나라 시간 KST와 안 맞는 케이스도 있다(UTC로 들어가는 걸로 앎). 설정에 따라 createdAt 등 시간 조정이 가능하다. UTC 기준 우리나라 시간(KST)이랑 +9시간 차이 나고 EST 같은 경우 -4시간 차이난다. dayjs 공식 사이트 https://day.js.org/ npm install --save dayjs sudo npm install --save da..

    Swift 기초 문법 - for 반복문, 변수 unwrapping, struct와 class 차이

    Swift 기초 문법 - for 반복문, 변수 unwrapping, struct와 class 차이

    이번엔 먼저 nil과 Optional, 반복문이나 함수 내에 _ 정의부터 하고 문법 포스팅을 하려 한다. nil Swift에서 nil은 우리가 흔히 사용한 언어 C나 Java, Javascript에서 사용한 null 대신 사용할 수 있지만 null 과는 조금 다르다. null은 어떠한 값도 가지지 않다는 뜻이고, nil은 특정 타입에 대한 값의 부재를 표현하는 것이다. Objective-c에서는 클래스 객체와 다른 포인터 자료형을 참조할 때 각각 다른 빈 포인터 값을 사용했지만, Swift에서는 아예 유저가 포인터를 통해 객체를 접근하는 것을 막음으로써 null은 필요 없어졌다. 헷갈리면 그냥 null 대신 nil 사용한다~ 라고 생각해도 무방하다. nil은 Golang에서도 사용되고 있다. Option..

    Swift 기초 문법 - 조건문, forEach 반복문, enum case

    Swift 기초 문법 - 조건문, forEach 반복문, enum case

    와! 두 달 반만에 블로그를 쓸 여유가 드디어 생겼다!.! 퇴근하고 집가면 피곤한데 운동도 해야 되서... 사실 블로그 쓰기 커찮았어요 다들 그러잖아요 중간 근황을 설명하자면 회사에서 oauth 프로젝트를 혼자 만들어보고, 새로 API 만들고, Router 뚫고, git 충돌도 해결하고, 이 와중에 ipad도 사고 (ㅋㅋㅋㅋㅋ 12.9인치 너무 달아요 ㅋㅋ 이 썩을듯) 등등 정말 열심히 일하다가 어느 정도 짬이 찼는 지, 일처리하는 속도가 빨라져 현재 null 상태이다. 아 그리고 최근 IOS 에 관심이 생겨 중간중간 짬날 때 클론코딩도 하느라 바빴다. (블로그는 왜...?) 그래서 꾸준히 공부하다가 슬슬 블로그를 써볼까해서 지금 쓰는 중이다. Swift 를 처음 쓰면서 느낀 점은 얘 뭐지..? Gola..

    [Database] Master, Slave DB

    [Database] Master, Slave DB

    지금까지 일반적으로 DB를 사용하는데에 있어서 Replication 기법을 사용하지 않고 프로젝트를 진행했었다. 대규모 프로젝트를 참여하지 않아봐서 그런 것일 수도 있지만 회사도 그렇고, Git에 있는 프로젝트를 보면 이중화 구성으로 되어있는 몇몇 프로젝트들이 master-slave 구조로 되어있다. 이번엔 Master, Slave 이중화(Replication)에 대해 알아볼 것이다. DB Replication 동작원리 Client가 쓰기 작업을 요청한다. 쓰기 쿼리 요청(Insert, Update, Delete)은 Master DB가 받는다. Master는 변경 사항을 Binary log 파일에 기록한다. 이후 DB에 Commit한다. Slave는 현재까지 기록한 event 정보를 가져 다음 이벤트 정..

    [Async] waterfall, parallel로 흐름 제어

    [Async] waterfall, parallel로 흐름 제어

    이전 포스팅한 async 정의에 대해 다뤄봤고 이번엔 async에서 자주 사용하는 메서드를 알아볼 것이다. 1. waterfall waterfall 함수는 비동기 함수를 순차적으로 실행하지만 각 작업의 결과를 다음 작업으로 넘겨주어 최종적으로 결과값을 return 한다. async.waterfall(작업리스트, 완료 콜백) 이 그림은 비동기 함수 asyncfunctionaA, asyncfunctionB,asyncfunctionC 를 순차적으로 실행하고, 각 단계에서 다온 리턴값을 다음 단계로 넘기는 waterfall 흐름의 개념을 표현하고 있다. 각각의 단계에서 처리되는 함수를 async에서는 task라고 정의한다. 이 task가 모두 수행이 끝나면, 맨 마지막에 정의된 callback 함수가 수행된다...

    [lodash] map VS each 알고쓰자

    lodash 라이브러리에서 collection 중에 map과 each가 있다. 일단 map의 간단한 정의를 알아보자 _.map(list, iteratee, [context]) list: colletion으로써, 배열이나 객체가 될 수 있다. iteratee: list의 각 element(value)를 변형시키는 함수이다. [context]: iteratee 함수에서 this로 바인딩 되는 것이다.(생략가능) list의 각 element(value)를 iteratee 함수를 돌려, 값을 변형시키고, 변형된 값을 배열의 형태로 리턴한다. list 내에 데이터 즉, 배열이나 객체 타입 변수가 들어오고, iteratee는 list에 있는 데이터 element를 꺼내와 변형하는 함수다. 코드를 예를 들어서 설명할..