'server'에 해당되는 글 3건

  1. 2016.10.18 [Perfect] Dependency 추가 (2)
  2. 2011.08.12 FIFO (named PIPE) 를 이용한 리눅스 콘솔 채팅 (3)
  3. 2010.03.10 [Java Communication] 버그 수정
Programming/Backend2016.10.18 23:14

프로젝트도 생성했으니 이제 뭔가 해보자. 


음.. 아무래도 Backend 이고 하니... DB가 있어야 겠다. 많이 쓰는 Mysql 로 해보자.


MySQL 을 사용하려면 MySQL용 Database connector 를 추가해야 한다. 


package.swift 의 dependency로 추가 가능하다.

import PackageDescription
 
let package = Package(
    name: "FirstPerfectProject",
    dependencies: [
        .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2, minor: 0),
        .Package(url:"https://github.com/PerfectlySoft/Perfect-MySQL.git", majorVersion: 2, minor: 0)
    ]
)


Xcode에서 build를 해보자. (xcode에서 실행하는 방법은 이전 글에서 생략했다.... 실수로..)




왜.. 오류지?!


음.. 그럼.. 처음에 했던 swift build를 해보자.

$ swift build
Cloning https://github.com/PerfectlySoft/Perfect-MySQL.git
HEAD is now at 53ef1af Fixes ISS-269 - numRows always returns 0
Resolved version: 2.0.1
Cloning https://github.com/PerfectlySoft/Perfect-mysqlclient.git
HEAD is now at 60a82d5 A little cleanup
Resolved version: 2.0.0
Compile Swift Module 'MySQL' (1 sources)
Compile Swift Module 'PerfectLib' (10 sources)
Compile Swift Module 'PerfectHTTP' (9 sources)
Compile CHTTPParser http_parser.c
Linking CHTTPParser
Compile Swift Module 'PerfectHTTPServer' (5 sources)
Compile Swift Module 'FirstPerfectProject' (1 sources)
Linking ./.build/debug/FirstPerfectProject

오!! 빌드했더니 Perfect-MySQL 을 다운로드 받는다~!


이제 run 할 수 있겠다.  Xcode에서 실행해보자.





또 같은 오류!!!!!!


무엇이 문제일까?  Xcode에서 실행하지 말고 터미널에서 실행해볼까?

$ swift build Compile Swift Module 'MySQL' (1 sources) Compile Swift Module 'PerfectLib' (10 sources) Compile Swift Module 'PerfectHTTP' (9 sources) Compile Swift Module 'PerfectHTTPServer' (5 sources) Compile Swift Module 'FirstPerfectProject' (1 sources) Linking ./.build/debug/FirstPerfectProject

오! MySQL이 빌드 되었다. (역시 내 잘못이 아니야... Xcode.. 망할)


MySQL 이 잘 되는지 확인하기 위해 기존 코드에서 MySQL 을 import 해보자.

import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
import MySQL
 
// Create HTTP server.
let server = HTTPServer()
 
// Register your own routes and handlers
var routes = Routes()
routes.add(method: .get, uri: "/", handler: {
        request, response in
        response.setHeader(.contentType, value: "text/html")
        response.appendBody(string: "<html><title>Hello, world!<title><body>Hello, world!</body></html>")
        response.completed()
    }
)
 
// Add the routes to the server.
server.addRoutes(routes)
 
// Set a listen port of 8181
server.serverPort = 8181
 
do {
    // Launch the HTTP server.
    try server.start()
} catch PerfectError.networkError(let err, let msg) {
    print("Network error thrown: \(err) \(msg)")
}

직접 사용하지는 않지만 import 했으니 오류 없이 잘 실행 되어야 겠지? MySQL이 제대로 연결 안 되었다면 오류가 뜰거야. (아마도..)


빌드 후 실행해 보자.

build/debug/FirstPerfectProject
[INFO] Starting HTTP server on 0.0.0.0:8181 with document root ./webroot

오오오오... 성공!


이렇게 package.swift 에 dependency 를 추가하고 빌드만 하면 잘 된다.


그럼 xcode 에서는 왜 안 될까?


Xcode 프로젝트는 구성이 좀 까다롭다. project 파일을 지우지 말고 다시 생성해 보자.

$ swift package generate-xcodeproj
generated: ./FirstPerfectProject.xcodeproj

프로젝트 재생성도 했으니 실행을 해보자~



많은 삽질 끝에 방법을 찾았다.



문서를 읽으면 한번 봤을 내용입니다. Xcode 프로젝트를 생성하고 target이 아닌 project 의 build setting 에 추가로 설정을 해줘야 한다.

Library Search Paths 에 $(PROJECT_DIR) recursive 로 설정한다.



이제 빌드하면 성공적으로 완료한다. 


문제는 이게 dependency 를 추가하고 xcode project를 생성할 때마다 설정해줘야 한다는 것이다.

왜 저 설정을 default로 넣지 않는지 모르겠다..


잊지 말자 $(PROJECT_DIR)



dependency 설정 끝~




Getting Started From Scratch https://www.perfect.org/docs/gettingStartedFromScratch.html


Building with Swift Package Manager https://www.perfect.org/docs/buildingWithSPM.html

신고
Posted by 초프(초보 프로그래머)
Linux Server2011.08.12 03:18
FIFO 로 채팅도 가능하지 않을까 라는 쓸때없는 생각에서 시작하여 만들게 되었습니다.
채팅이라고는 하나 네트워크 통신이 들어가지 않았습니다. 
여러 프로세스를 실행하여 통신하는 프로그램입니다.
실제로 쓸일은 절대! 없을 것이라고 생각합니다.

 
 위 이미지는 우분투에서 컴파일하여 실행한 모습입니다. 
정상 동작하나... 서버가 꺼져버리면 버그가 발생합니다;


 
대충 흐름도를 그림으로 그려 보았습니다.
아이패드로 처음 그려보는 거라....;;;;;
이번 연습으로 다음에는 더 잘 그릴 수 있겠지요..

연수원에서 새벽에 작업한 것이여서 문제가 많아요....
그래도 소스를 같이 올려 봅니다.

 
신고
Posted by 초프(초보 프로그래머)
Project2010.03.10 23:20



만든지 얼마 지나지 않아... 혼자 테스트중 버그들이 발견되어 수정하였습니다.

  • 클라이언트 번호 할당 방식
  • MSGConnectServer 클래스 추가

 

신고
Posted by 초프(초보 프로그래머)