단독망에서 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 이렇게 설치하니까 오류가 나지 않는다.

ubuntu 18.04 & swift 4.2.1 & mongoDB

오류가 나지 않도록 설정하는 방법 $ sudo  apt update $ sudo  apt upgrade $ sudo  apt remove openssl $ sudo  apt remove libssl-dev $ sudo  apt install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config libblocksruntime-dev systemtap-sdt-dev tzdata rsync libmongoc-1.0.0 libmongoc-dev libbson-1.0-0 libbson-dev libcurl-dev libcurl4-gnutls-dev openssl1.0 libssl1.0-dev vim wget 기존에 오류나는 모듈은 지우고 필요한 모듈 한꺼번에 설치한 명령어 임

Ubuntu 18.04 swift 4.2.1 Perfect 설치하기

Ubuntu 18.04 환경에서 서버용 swift를 사용하여 webserver를 제작하고자 한다. swift 4.2.1 까지 잘 설치 되었다. Perfect 받고 Compile을 하는데 오류가 난다. 대충 찾아보니 openssl 관련 Module이 Update가 되었는데 이게 Perfect 에서 지원이 되지 않는거 같다. 해결방법은 기존 설치된 Module을 지우고 이전 Module을 설치하면 된다. $ sudo apt remove openssl lissl-dev $ sudo apt install openssl1.0 libssl1.0-dev 이전 버전으로 모듈을 교체하면 오류는 나지 않으나 PerfectMongoDB 를 추가하면 오류가 난다. 다행히 MongoKitten 은 오류가 나지 않으니 MongoDB를 사용하려면 대체방안이 있다. 주말내내 알아낸 사실이 여기까지이다.

swift 용 timer 만들기

순수 스위프트용 타이머 만들기 먼저 타이머 선언을 한다 let total = 0 let timer = DispatchSource.makeTimerSource(queue: DispatchQueue(label: "swiftTimer", attributes: .concurrent)) 이제 타이머를 ViewDidLoad 같은 곳에 설정한다. timer.schedule(deadline: .now(), repeating: .milliseconds(100)) timer.setEventHandler {   self.total += 1   if self.total >= 30 { self.timer.cancel() }   DispatchQueue.main.async {     self.label.text = "\(self.total)"   } } 이제 타이머를 실행 시킬 곳에서 아래와 같이 해야 한다. self.timer.resume()