MySQL Multiple rows 를 one query 구현하기

MySQL 에 자료를 갱신할 일이 생겼다. 갱신할 자료를 가져와 배열에 담았다. list = [adm, bay, car, del, ear] 이를 반복하면서 Update 를 했더니 오래 걸린다. 자료가 약 300 ~ 400 개인데 3~4초가 나온다. 검색을 해보니 INSERT INTO tb_temp (a, b, c) VALUES(1, 2, 3) ON DUPLICATE KEY UPDATE c = c + 1 이걸 이용하면 된다고 한다. 뭐 반복문 돌면서 sql 하나의 문자열로 만들었다. 디비 결과는 중복 입력이었다. 다시 검색을 해보니 비교로 사용하는 첫번째 항목은 무조건 Primary 이어야 한다고 한다. 디비의 구조를 변경하였다. 다시 실행해보니 중복 없이 잘 갱신된다. 실행속도도 400개 정도가 1초 이내로 나온다.

swift Kuery mysql Error shim.h & mysql.h 대응 방법

리눅스에서 스위프트로 작성한 앱에서 MySQL 접속할 일이 생겼다. Swift-Kuery & SwiftKueryMySQL 을 추가하면 된다고 하여 추가하였다. Package.swift 파일에 두개의 모듈을 추가하고 $ swift package update 를 한 다음 혹시나 하여 컴파일을 해 본 다음에 진행하자 $ swift build 결과가 에러를 토해 내였다. <module-includes>:1:10: note: in file included from <module-inclues>:1: #include "shim.h> ~~~~ # error: 'mysql.h' file not found 대충 이런식이다. 해결 방법은 mysqlclient 관련 모듈이 없어서 나는 오류이다 $ sudo apt-get install libmysqlclient-dev 설치 한 후 컴파일 하니 오류가 나지 않는다.

Swift Cocoa FileManager 사용시 Operation not permitted 오류 대처

이미지
Swift 에서 파일을 가져와서 수정할 일이 있어서 FileManager 를 이용하여 파일을 가져오는데 Operation not permitted 오류가 나는 것이다. 보통 아이폰에서는 샌드박스 디렉토리 구조라 그런 오류가 나는데 코코아는 컴퓨터에서 파일을 접근하는게 아닌가? 대부분의 검색은 이 오류에 대한 내용이 없다. 내가 찾은 방법은 다음과 같다. 이것도 겨우 찾은 방법이다. Xcode - project - target - Capabilities - App Sandbox - Off 예전에 없는 기능이 추가로 생긴거 같다. 그것도 Default로 On 이 되어 있음.

단독망에서 Kitura 사용하는 방법

외부망이 연결되어 지지 않는 네트워크가 많다. 보통 보안이라는 이름으로 그렇게 구성되어 있다. 그렇다고 저장소(일단 Repository)를 연결해주지 않는다. 해당 업데이트 들은 CD 로 구워서 이동해야 한다. 그러면서 백신 검사는 한다고 한다. 리눅스 바이러스까지 잡는 V3 대단해요..ㅋㅋ 이런 상황에서 Kitura 를 운영하고 싶다면 먼저 걸리는게 있을 것이다. swift package update 를 하면 외부 저장소가 연결되지 않아 관련 모듈 설치가 안된다. 난 이런 경우 이렇게 해결한다. 일단 외부 연결이 되는 곳에서 해당 파일을 추가하고 업데이트를 한다. $ vi Package.swift .package(url: "https://gitbub.com/IBM-Swift/Kitura", from: "2.7.0") 추가한 다음에 하단에 타켓에 해당 내용을 추가해줘야 한다. 보통 이것을 빼먹어서 오류가 난다. .target(name: "app_name", dependencies: ["Kitura"]) 이제 패키지를 업데이트 한다. $ swift package update 뭐라 업데이트를 많이 한다. 관련 모듈까지 하기 때문이다. 이때 나오는 문구를 잘 적어 두어야 한다. 특히 각 모듈의 버전들..... 이것 때문에 설정이 아주 복잡해질 수 있다. 업데이트가 완료되면 $ cd .build $ cd repositories $ ls 방금 업데이트 한 관련 모듈이 이곳에 다 있다. 이 폴더를 통째로 복사하여 단독망으로 이동하면 된다. 나의 경우는 해당 모듈의 뒷부분은 전부 자르고 이동했다. $ mv Kitura--70115644 Kitura 단독망에서는 이렇게 사용했다. $ mkdir app_name $ cd app_name $ swift package init --type executable 폴더가 만들어지면 이곳에 re

swift Kitura 사용 중 CORS 설정 삽질기

서버용 Swift 웹 프레임 워크인 Kitura를 사용중이다. 이중 CORS 를 설정해야 하는 상황인데 일단 Kitura-CORS 라는 미들웨어가 있다. 이를 문서에 있는 대로 설정했으나.... 역시나 안된다. 다른 애들은 어떻게 되었다는 거지? Package.swift 에 해당 패키지를 추가하였다. .package(url: "https://github.com/IBM-Swift/Kitura-CORS.git", form: "2.1.1") 아래 target 에도 추가해야 한다. .target(name: "app_name", dependencies: ["KituraCORS"]) 이제 main.swift 에 임포트 부터 한다 import KituraCORS let options = Options(allowedOrigin: .all, methods: ["GET", "POST"], allowedHeaders: ["Content-Type"], maxAge: 5) let kors = CORS(options: options) let router = Router() router.all("/cors", middleware: cors) 컴파일을 하고 앱을 실행한 다음 웹서버를 테스트하면 오류가 난다. Access-Control-Allow-Origin 어쩌고 저쩌고...블라블라 설정이 잘못 되었는지 각종 설정을 다 바꾸어 보아도 되지 않는다. 이놈들은 되지도 않는 모듈을 왜 올려 놓은거야... 아님 최신 파일과 맞지 않는건가? 그리하여 CORS 에 대한 문서를 다시 처음부터 읽기 시작하였다. CORS란 Cross-Origin Resource Sharing 으로 클라이언트인 브라우저에서 막는다는 내용이며 응답 헤더에 Access-Control-Allow-Origin 에 들어 있는 URL

jQuery + 네이버맵을 Vue 변환 방법

jQuery 를 기반으로 네이버맵을 활용한 서비스가 하나 있다. 지도 위에 각 오브젝트 좌표를 표시하여 모니터링을 보여준다. Vue/Cli 를 설치하여 변환하고자 한다. 먼저 기본 프로젝트를 생성하자 $ vue create my-project 기본 프로젝트 내용을 만들어 준다. 네이버맵을 사용하기 위해서 /public 폴더에서 index.html 파일에 추가한다. < script type = 'text/javascript' src = 'https://openapi.map.naver.com/openapi/v3/maps.js?clientId=testId&callback=initMap' > < / script > 바로 아래에 jQuery 를 추가해준다. < script src = 'https://code.jquery.com/jquery-1.12.4.js' > < / script > 이제 App.vue 파일을 아래와 같이 수정해준다. < template > < div > < NaverMap ></ NaverMap > </ div > </ template > < script > import NaverMap from './components/NaverMap.vue' export default { name: 'App' , components: { NaverMap } } </ script > 이제 /Component 폴더에 NaverMap.vue 파일을 생성한다. < template > < div id = 'wrap' class = 'section' > < div id = &

Mac Mojave node install error

모하비에서 노드를 설치하고 npm install -g @vue/cli 를 설치하고자 하면 나는 오류 조치 방법이다. 일단 노드를 공식페이지에서 다운받아 설치하였다. sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} 권한문제가 생길수 있으니 위 명령어로 권한을 변경 해준다. 이제 노드 모듈이 설치된 위치로 이동 하자 cd /usr/local/lib/node_modules/ 여기에 모듈이 들어가야 하는데 확인해보니 이 아래 /npm/node_modules 에 모듈이 있다. cd npm cd node_modules/ mv * ../../ 이 명령어를 실행해주면 상위 노드 모듈로 현재의 모듈을 이동 해준다. npm install -g @vue/cli npm update 이렇게 설치하니까 오류가 나지 않는다.