분류 전체보기(864)
-
Swift 3에서 UserDefaults 사용 방법
https://swifter.kr/2016/12/31/swift-3-0%EC%97%90%EC%84%9C-userdefaults-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/ 2) 저장[이전]12NSUserDefaults.standardUserDefaults().setBool(true, forKey: "boolKeyName")NSUserDefaults.standardUserDefaults().setInt(1, forKey: "integerKeyName")[Swift 3.0]12UserDefaults.standard.set(true, forKey: "boolKeyName")UserDefaults.standard.set(1, forKey: "integerKeyName")저장관련 메소드는 ..
2018.01.01 -
Alamofire를 이용한 이미지 파일 업로드 구현
Swift에서 쉽게 multipart/formdata 형식으로 이미지 파일을 업로드(POST 방식)할 수 있는 라이브러리가 있어서 적용해보니 생산성이 무척 좋다. import Alamofire Alamofire.upload(multipartFormData: { (multipartFormData) in multipartFormData.append(UIImageJPEGRepresentation(UIImage(named: "1.png")!, 1)!, withName: "image", fileName: "swift_file.jpeg", mimeType: "image/jpeg") for (key, value) in parameters { multipartFormData.append(value.data(using:..
2018.01.01 -
MongoDB 타임 존 관련 이슈
Elasticsearch에 저장된 한국/서울 기준의 시간 정보를 MongoDB에서 조회하려니 뭔가 맞지 않는다. 그래서 이유를 찾아보니 MongoDB의 타임 존이 UTC로 고정되어 있기 때문이란다. 그래서 다음과 같이 조치를 하니 정상적으로 처리된다.db.logs.count({type:1234,created_at:{$gte:new Date("2017-12-28T00:00").getTime()-(9*3600000)}}) MongoDB의 Timezone은 UTC로 고정되어있다.MongoDB 공식가이드는 이를 Application Layer에서 설정하라고 안내한다. UTC와 차이가나는 9시간을 더해서 사용하라는 것이다. (https://docs.mongodb.com/v3.2/tutorial/model-time..
2017.12.29 -
Elasticsearch 관련 레퍼런스
range filter와 match 조건을 함께 쿼리하는 방법GET index12345678/_search{ "query": { "bool": { "should": [ { "match": { "type" : 1234 } } ], "minimum_number_should_match": 1, "filter": { "range" : { "created_at" : {"gte":1514386800000} } } } }} https://stackoverflow.com/questions/44306569/malformed-query-expected-end-object-but-found-field-name-error-in-kibana-elastGET _search { "query": { "bool": { "should"..
2017.12.29 -
Elasticsearch에 Insert 되는 데이터를 주기적으로 MongoDB 저장하는 방법
모든 raw 데이터를 Elasticsearch에 저장하고 있는 시스템에서, 가급적 Elasticsearch 자체를 건드리지 않는 방법으로 새로 Insert 되는 데이터에 대해서만 MongoDB 샤딩 시스템에 저장하는 방법을 검토해보았다.가급적 구현하기 쉬우면서 Elasticsearch에 부하를 주지 않는 방법이 필요해서, Elasticsearch에서 Trigger를 제공하는지 알아 보았다. Elasticsearch에서는 Insert 이벤트가 발생하면 바로 동작하는 트리거를 제공하지는 않고, 주기적으로 스케쥴링 되는 Watcher를 제공하는 것으로 보인다.https://www.elastic.co/guide/en/watcher/current/trigger.html 그래서, Node.js를 이용하여 사용할 수..
2017.12.26 -
구글 빅쿼리 (Google Bigquery) 관련 정리
1. 장점- 데이터의 양에 상관 없이 일정한 속도를 유지한다. (평균 1~2초대)- AWS S3보다 상대적으로 저렴한 비용으로 저장할 수 있다(고 한다). 2. 단점- 비정형 데이터를 정형 데이터 스키마 형식으로 관리를 해야하기 때문에, 오리지널 비정형 데이터를 수용하기 위해 스키마를 정의하는 것이 복잡하다.- 한번 만들어진 테이블의 스키마 변경이 불가능하다. --> 데이터 구조의 유연성은 떨어지는 것으로 보인다.- 한번 저장한 데이터의 삭제가 불가능하다. --> 로그성 데이터의 경우에는 문제가 없기는 한데, 수정 뿐만 아니라 삭제까지 막혀있는 것은 처음 본다.- 쿼리문을 사용할 수 있다고 하지만 100% 호환은 아닌듯 하다. (Hive처럼 Query문으로 입력 받아서 별도의 로직으로 변환하여 처리하는 ..
2017.12.20