'Project/제10회공개SW개발자대회'에 해당되는 글 6건

  1. [The Minimap] 개발일지-4
  2. [The Minimap] 개발일지-3
  3. [The Minimap] 개발일지-2
  4. [The Minimap] 개발일지-1
  5. [The Minimap] 개발 환경
  6. [The Minimap] 개발 개요

[The Minimap] 개발일지-4

라라벨을 설치했다면, 이제 사용하기 위해 환경설정을 해야한다.

앞서 APP_KEY 세팅 때 잠깐 언급했지만 .env 라는 파일이 있다.



config 폴더의 여러 설정 파일들을 보면 env(**) 형식으로 된 것을 볼 수 있는데 env 파일의 값들을 참조하여 세팅이 되는 형식이다.


(config/app.php)

(.env)


이런 구조이기 때문에 일부의 설정을 제외하고 env의 값을 세팅해주면 환경설정이 끝난다.

또한, 설정 값이 바뀔 때 일일히 바꾸지 않고, env의 값만 변경하면 된다는 장점이 있다.


env파일을 수정하기 이전에 우선 env로 설정이 안되는 타임존 등의 설정을 해주었다.


vi /var/www/laravel/config/app.php


어플리케이션 이름
'name' => 'The Minimap',
타임존 설정
'timezone' => 'Asia/Seoul'
한글 로캘 설정
'locale' => 'ko',



그리고 .env 파일에 설정 값들을 넣어 주었다.


vi /var/www/laravel/.env


에러발생시 에러메세지, 스택트레이스 등을 표시하는 여부. 실제 서버로 구동시엔 감추고 log를 통해 에러를 확인하는 것이 안전하다.

APP_DEBUG=false

실제 접속 URL

APP_URL=http://url


다음은 DB환경

DB_CONNECTION=연결할 데이터베이스 엔진(mysql)

DB_HOST=데이터베이스 연결 주소

DB_PORT=데이터베이스 포트

DB_DATABASE=사용할 데이터베이스 이름

DB_USERNAME=데이터베이스 유저 이름

DB_PASSWORD=패스워드



이 외에 건들여야 될 것들은 다른 것을 진행해보면서 수정하기로 하고,

본격적으로 프로젝트 만들기를 시작해보려고 한다.


프레임워크는 처음 사용해보는 만큼, 프레임워크라는 개념이 손에 잘 잡히지 않아서 이해하기가 힘든 부분이 있었다.

처음에는 프레임워크를 sdk 마냥 사용해서 하나의 개인적인 프로젝트를 만드는 거라고 생각했었는데

본격적으로 웹을 만들려고 살펴보니 설치한 laravel 디렉토리 자체가 내가 만들어갈 프로젝트가 되는 것이었다.

그리고 이런 라라벨을 좀 더 잘 사용(?)하기 위해서 개념을 이해하는 과정이 필요했는데

그 중 핵심적인 단어가 라우팅, 컨트롤러, 블레이드 였다.


라우팅은 MVC패턴에 있어 가장 앞에 위치하는 것으로 Front Controller라고도 한다. 웹 어플리케이션에서 이정표 역할을 하며, URL과 요청방식 등에 따라 서버의 처리 방식을 지정해준다. laravel에서 제공해주는 pretty url이라는 기능이 있는데 (url을 간편하고 예쁘게? index.php 같이 뒤에 잡다한 이름이 안붙는다. RESTFul기반 웹서비스를 제공하기 위해서는 필수요소!) 이런 url을 사용하면서 라우팅, 즉 url을 통한 페이지 연결을 가능하게 해준다.


*REST(REpresentational State Transfer) : ROA(Resource Oriented Architecture)를 따르는 웹 서비스 디자인 표준. 웹의 모든 리소스를 URI로 표현하고, 이를 구조적이고 유기적으로 연결하여, 비 상태 지향적인 방법으로, 일관된 method를 사용하여 리소스를 사용하는 웹 서비스 디자인 표준 (출처-http://www.iamcorean.net/22)

*RESTFul : REST 원리를 따르는 시스템


그리고 그냥 .php 파일로도 물론 연결이 되지만 라라벨에서는 .blade.php 파일을 사용하는데, 이런 블레이드 안에서 사용할 수 있는 많은 기능들이 있다. 조건문이나, 변수활용 등 기존의 php문법보다 간결한 문서 작성을 가능하게 해준다.


나는 이런 개념들을 이해하고, 기초 테스트를 통해서 가능한 환경인지 보려고 라우팅과 php, 블레이드 파일을 작성해서 띄워보는데

welcome.blade.php 파일과 그냥 php파일은 잘 띄워지는 반면에 새로 만든 blade 파일은 500 에러를 뿜어내며 뜨지 않는 현상을 보였다. 한참을 헤매다가 검색 끝에 chmod 777 storage/framework/views 커맨드로 해결이 되었다..

분명 저번 포스팅에도 썼다 시피 storage 권한을 775로 다 주었는데 왜 안되었던 건지.. 다른 말대로 777을 했어야 한 것일까

다시 775로 바꿔도 잘 띄워지는 것을 보니 조금 아이러니 하긴 했다.


이 때문에 시간을 많이 소모해버렸지만.. 다시 힘을 내서 컨트롤러까지 정복!


컨트롤러는 MVC패턴에 있어 핵심적이라고 할 수 있는 부분이다. MVC 패턴 정의를 기준으로 말하자면 클라이언트의 요청을 받아서 정보를 처리하고, 모델을 호출하며, 모델의 응답을 바탕으로 뷰를 생성하는 역할을 수행하는 곳이다. 이전에 테스트를 위해서 라우팅 파일에 변수를 적고 했었지만, 이런 부분을 수행하는 곳이 컨트롤러이다. 즉, 라우팅은 간단하게 URL과 컨트롤러를 연결해 주면 된다.

따라서 라우팅에서는 다음과 같은 내용이 들어가게 된다.



Route::[값 전달방식]('[URL]', '[Controller이름]@[함수명]');

ex)Route::get('gwcw/test', 'TestController@name1');



그리고 이런 컨트롤러는 artisan 명령어로 생성할 수 있다.

artisan 명령어는 laravel 루트 경로에서 커맨드로 사용할 수 있다.



php artisan make:controller [컨트롤러 이름]

ex) php artisan make:controller InsertController


생성 후에는 App/Http/Controllers 디렉토리 안에서 만들어진 컨트롤러를 확인 할 수 있다.

그리고 컨트롤러 내부의 함수를 이용해서 라우팅 파일에 있었던 뷰 호출이나 변수 생성, 전달기능 등을 작성하고 사용할 수 있다.


개념을 대충 이해한 후 컨트롤러에 대한 더 자세한 내용은 서비스를 직접 적용하는 과정 때 더 보기로 하고, 그 전에 우선 만들고자 하는 웹 페이지를 구성하는 일부터 시작하였다. 

솔직히 무엇부터 봐야할지, 전체적인 구성을 어떻게 짜야할지 머리가 복잡했지만, 시각적으로 보고 기능을 구성하는 것이 제일이다 싶어서 우선 웹페이지 템플릿을 찾기 시작했다.

무료 html 반응형 템플릿에 대한 자료는 꽤 많았는데, 그 중에서도 html5upstella 테마를 사용하기로 하였다.


템플릿을 입맛대로 바꾸는 작업은 html과 css를 수정하면 되는 간단한 일이다. 

svg 아이콘을 pin 모양으로 바꾸는 데에 조금 애를 먹었지만-결국 일러스트레이터를 사용했다- 바탕 그라데이션과 버튼 색상 등을 바꾸고 텍스트와 입력 폼을 넣어주었다.


  


(수정 전과 수정 후)


그리고 드디어 서버로 옮겨서 잘 구동되는지 확인할 시간이다. index.html 파일을 index.blade.php 파일로 바꿔주고 뷰에 위치하는 곳에 옮겨주었다. 하지만 템플릿대로 뷰와 같이 css/js 폴더를 넣어주니 적용이 안되는 문제가 발생..!

알아보니 라라벨에서의 리소스를 담는 폴더가 따로 있었다. 정보들이 /resources/assets에 넣어야 한다. /public에 넣어야 한다 많이 엇갈려있었는데, 기본 css와 fonts 폴더가 public에 있기도 하고, HTML::style(경로) 명령어가 작동하지 않아서 /public 폴더에 넣어주었다. 이런 경우 웹서버 설정에서 DocumentRoot를 라라벨의 public 폴더로 지정해 놓아야 정상적으로 작동한다고 한다. (이전 설정 때 그렇게 해놨었다.)

그리고 index파일에서 (템플릿의 index.html) css나 image, js 등의 경로를 넣는 부분이 있는데 기존의 경로 대신 {{ asset('[폴더-css/images..]/[파일]') }}을 사용해주면 public 폴더에 있는 해당 폴더의 파일 경로로 연결되게 된다.



laravel/public/css/main.css


.html

<link rel="stylesheet" href="assets/css/main.css">

→ .blade.php

    <link rel="stylesheet" href="{{ asset('css/main.css') }}" />



그리고 라우팅으로 지정한 경로를 통해 웹페이지를 실행시켜보면 

<link rel="stylesheet" href="http://<url>/css/main.css">

html 소스에 위처럼 지정된 경로가 출력되는 것을 확인 할 수 있다.


라라벨에서 사이트가 제대로 뜨는 것을 확인한 후에는 레이아웃을 분리해주었다.

구조가 복잡한 웹 서비스 같은 경우 페이지 수가 많기 때문에 같은 레이아웃을 사용할 때 파일마다 중복된 코드가 있게 된다. 이런 부분을 블레이드 기능을 사용하여 레이아웃으로 따로 나눌 수 있는데, 미니맵 서비스의 경우에는 단순히 정보를 입력하는 페이지라서 복잡한 구조가 아니라 분리할 필요가 크게 없지만 라라벨을 경험하는 셈 삼아서 분리해 보기로 했다. 코드가 길어서 content 부분만 편하게 보고 싶은 이유가 있기도 했고..


레이아웃은 일반적으로 (튜토리얼 사이트에선 다 그러더라) master.blade.php라는 이름으로 헤드 부분과 스크립트 부분을 분리해준다.

이과정으로 css와 자바스크립트 영역이 레이아웃으로 분리되는 것이다.

페이지마다 달라질 부분은 @yield('[string]')으로 표시해주고, 이 달라질 부분이 들어간 자식 블레이드를 만들어 주면 된다.

여기서 @yield는 두번째 파라미터를 통해서 해당 스트링의 자식 레이아웃이 없을 때 기본값을 설정해 줄 수도 있다.

ex)@yield('title', 'The Minimap')

나같은 경우에는 body부분만 분리하는 것이 아닌, 템플릿에서 반복되는 구조인 background, header와 footer부분도 분리해 주었는데, 다음과 같은 구조가 되었다.



-master

<html><head /><body>@yield('header')/@yield('content')/@yield('footer')<script /><body></html>


-header

@extends('master')

@section('header')


-footer

@extends('master')

@section('footer')


-content

@extends('master')

@include('header')

@include('footer')

@section('content')



@extends는 말그대로 부모 레이아웃을 상속 받는다는 뜻이고, @include도 레이아웃을 포함 시킨다는 뜻이다.

그리고 부모 레이아웃에서 @yield에 쓰였던 string을 @section('[string]')으로 사용함으로써 마스터의 빈 부분, 섹션을 작성할 수 있다.

내용을 다 작성한 뒤에는 @endsection으로 섹션이 끝났음을 알려준다. 다른 예제에는 @stop으로 되어있었지만 (이렇게 써도 상관은 없었다) Laravel 5.3 공식 Document 예시에 그리되어 있었으니 @endsection을 쓰기로 하였다.

또한 같은 키워드의 @section을 여러개 작성한 경우 그냥 @section으로만 여러개 쓰면 가장 먼저 선언되는 섹션만 적용이 된다. 

하지만 @section안에서 @parent를 추가해주면 이전의 섹션 내용에 이어서 쓸 수 있다.



ex)@section('script')

1

   @endsection

   @section('script')

      @parent

      2

   @endsection

→결과 : 12



그리고 여태 ssh으로만 작업을 했었는데, ftp를 통해서 파일을 전송하고 옮기고 하는 과정이 은근히 번거롭고 귀찮았다.

에디터를 사용해서 서버와 원격으로 작업을 할 수 없을까.. 찾아보니 아니나 다를까 ssh 통신을 이용해서 php 에디터로 작업을 하는 방법이 있었다. php 에디터의 경우 유명한 phpstorm은 유료이기 때문에 익숙한 eclipse php를 사용했는데, remote 확장 기능을 설치해서 이전보다 수월하게 개발할 수 있는 환경을 만들 수 있었다. 이 부분은 다음 블로그의 글을 참고하였다.



기본적인 틀이 갖춰진 이 다음에는 본격적으로 서버의 데이터베이스와 연결되는 웹페이지를 만들기 위해서 데이터베이스 구성과, 웹페이지의 기능과 구조 설계 등을 다뤄볼 예정이다.

'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-3  (0) 2016.08.24
[The Minimap] 개발일지-2  (0) 2016.08.24
[The Minimap] 개발일지-1  (0) 2016.08.24
[The Minimap] 개발 환경  (0) 2016.08.18
[The Minimap] 개발 개요  (0) 2016.08.18

[The Minimap] 개발일지-3

미니맵 프로젝트에서 웹페이지는 서버에 저장될 이벤트들을 등록할 수 있는 기능을 제공한다.

따라서 데이터베이스에 insert하는 웹페이지를 보여주어야 하는데, 웹을 깊이 공부해본적은 없지만 경험 삼아서 프레임워크를 사용해 보기로 하였다.

여러 프레임워크를 고려하다가 졸업작품때도 사용해서 익숙한 php기반의 프레임워크, Laravel을 사용하기로 하였다.

처음 해보는 것이다 보니 우여곡절이 많을 것으로 예상되지만 이또한 경험이 되리라 생각하며..


우선 Laravel 프레임워크를 서버에 설치해보기로 하였다.

Laravel을 사용하려면 php가 5.5.9 이상 버전이면 되지만,(laravel 5.3기준 php 5.6.4이상) 업데이트를 해보는 김에 php의 최신버전인 php70을 사용하는 것이 좋다고 해서 설치해보기로 했다. 하지만 php70은 yum update php 커맨드로 업데이트가 되지 않는다.



yum 업데이트

yum update


epel, remi 설치 (저장소)

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

php70설치
yum --enablerepo=remi install php70 php70-php php70-php-cli php70-php-common php70-php-gd php70-php-json php70-php-mbstring php70-php-mcrypt php70-php-mysqlnd php70-php-opcache php70-php-pear php70-php-xml php70-php-devel php70-php-imagick php70-php-mysql

php70 디렉토리에 심볼릭링크 생성 (7버전의 기본디렉토리가 php70이므로 php로 바꿔준다)

scl enable php70 'php -v'

ln -s /usr/bin/php70 /usr/bin/php



phpinfo 페이지를 통해 php7버전이 성공적으로 설치되었음을 확인 할 수 있었다.



하지만 이전버전과 다른점이 있었는데, 이전 포스팅에 작성한 것과 다르게 mysql 항목에 mysqlnd가 표시되어 있는 것이었다.

알고보니 mysqlnd(mysql native driver)가 php5.3부터 지원되는 것으로 libmysql의 의존했던 것을 보완한 것이다.

mysql계열의 데이터베이스 변경/버전업 시 php을 재컴파일 할 필요가 없게 만든 것이라고 한다. 


그래도 MariaDB와 연동이 되었는지 확인하기 위해 간단 테스트를 해보았다.


dbtest.php

<?php
header("Content-Type: application/json; charset=UTF-8");
$conn = mysql_connect('-', '-', '-');
if($conn) {
echo "connect success";
} else {
echo "connect fail";
}
mysql_query("SET NAMES UTF8");
$selectquery = "SELECT name FROM minimap.place where id=0";
$result = mysql_query($selectquery);
echo result;
?>


잘 작동하는 것을 확인하였다.


그리고 이제 Laravel 프레임워크를 설치할 차례이다.

Laravel을 설치하기 위해서 우선 Composer를 설치해야 하는데

Composer는 php에서 의존성을 관리하기 위한 툴이다.

php에 관련된 외부 라이브러리나 프레임워크를 편하고 자유롭게 가져다 사용할 수 있게 해준다고 한다.


Composer 글로벌 설치

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer



설치된 Composer를 사용해서 Laravel을 설치한다.


설치 전에 unzip이 설치되어 있어야 한다.

yum install -y unzip

Laravel을 설치할 경로로 이동
cd /var/www

Composer가 글로벌로 설치 된 경우

composer create-project laravel/laravel --prefer-dist

Composer가 글로벌로 설치 되지 않은 경우
php [composer 설치 위치]/composer.phar create-project laravel/laravel --prefer-dist



설치가 완료되면 php artisan key:generate 커맨드가 실행되며 app key가 세팅된다.

(config에 입력할 필요없이 .env에 APP_KEY로 설정된다)

composer로 설치했을 경우에는 이렇게 별도로 지정해주지 않아도 세팅이 된다고 한다.


설치 후에는 혹시나하고 laravel 디렉토리에서 composer로 업데이트를 해주었다.

또한 laravel 디렉토리 안의 storage 권한을 775이상으로 설정해줘야

인덱스 페이지로 Laravel 기본페이지가 뜨는 것을 확인 할 수 있다. //다른 곳에서는 777으로 해야된다는 글도 있는데 775로 해도 잘 되는 것 같다.. 문제가 생기면 바꿔야지



라라벨 디렉토리로 이동

cd /var/www/laravel


업데이트를 해준다

composer update


storage 디렉토리 이하 권한 설정

chmod -R 775 storage



(Laravel Framework 5.3)



일지를 정확하게 적기 위해서 불필요한 커맨드를 구분하고자 라라벨을 여러번 지웠다 깔았는데,

storage의 권한을 줬음에도 bootstrap/cache 관련하여 퍼미션 에러가 나타난 적이 있다.

이때는

>php artisan cache:clear

커맨드를 입력해 주고나니 에러가 없어지고 라라벨 메인 페이지가 나타나는 것을 볼 수 있었다.

만약에 문제가 해결되지 않는다면 bootstrap/cache의 권한도 777 또는 775로 설정해주면 해결될 수 있을지도..

이후에는 별다른 오류가 없었기에 따로 설정하지 않았다.


그리고 Laravel 기본 페이지를 보기 전 마지막으로 아파치 서버쪽에도 설정을 해줘야 하는데

기본 디렉토리를 Laravel으로 바꾸는 설정이다. 본래 httpd의 기본 디렉토리로 설정이 되어 있으므로

DocumentRoot를 변경하거나 VirtualHost를 추가해주거나, 둘 중 하나만 해도 라라벨 페이지가 나타나는 것을 확인 할 수 있었다.

나는 2번으로 설정하였다.


vi /etc/httpd/conf/httpd.conf
1) 설정 중간
DocumentRoot "/var/www/laravel/public"
..
<Directory "/var/www/laravel/public">

2) 맨 끝에 추가
<VirtualHost *:80>
       ServerName 175.126.112.86
       DocumentRoot /var/www/laravel/public
       <Directory /var/www/laravel/public>
             # AllowOverride All
<IfModule mod_rewrite.c>
          Options -MultiViews
          RewriteEngine On
          RewriteCond %{REQUEST_FILENAME} !-f
         RewriteRule ^ index.php [L]
       </IfModule>
       </Directory>
</VirtualHost>

httpd 설정 적용/재시작
service httpd restart


이렇게 라라벨을 설치하는 것 까지 완료했다.

이 다음에는 라라벨 환경설정과 데이터베이스 연동, 프로젝트 생성에 대해 다뤄보아야 겠다.


'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-4  (0) 2016.08.24
[The Minimap] 개발일지-2  (0) 2016.08.24
[The Minimap] 개발일지-1  (0) 2016.08.24
[The Minimap] 개발 환경  (0) 2016.08.18
[The Minimap] 개발 개요  (0) 2016.08.18

[The Minimap] 개발일지-2

내가 프로젝트에서 주로 참여했던 분야는 프론트엔드 쪽인데, 이번 프로젝트에서는 2인 개발이기도 하고, 학부 때의 지식을 최대한 끌어올려서 서버 환경 설정을 담당 하기로 했다.


우선 WAS 환경을 만들고 → 데이터베이스 설정/연동 까지 완료한 후 → 본격적으로 이벤트를 등록할 웹페이지를 만들어야 한다.

또한 이것을 http 통신으로 기어에서 사용 할 수 있게 해야한다.


이를 위해서 우선 아파치 서버를 설치하고 마리아 DB도 함께 설치 했다.


-Apache 설치

yum -y install httpd


-MariaDB 설치

vi /etc/yum.repos.d/MariaDB.repo



# MariaDB 10.1 CentOS repository list - created 2016-08-24 04:52 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1



sudo yum -y install MariaDB-server MariaDB-client


이후에 mariaDB 실행때문에 다시 설치하는 뻘짓을 수행하긴 했지만

이걸로 이미 마리아DB가 설치 된 것이라 생략하도록 하겠다.

아파치 서버 설정 또한 기본적인 것이라서 생략한다. (포트설정, 방화벽설정, user/group nobody, ServerName 등)


php를 깔고 phpinfo페이지를 접속하니 DB가 제대로 설치 된 것을 확인 할 수 있었다.



두번째로는 데이터베이스를 좀더 효율적으로 관리하기 위해서 워크벤치로 접속하게 만드는 것을 해보았다.

MariaDB 버전이 5점대에는 호환이 잘 되었지만 10버전 부터 조금 달라졌다고 해서 워크벤치 접속이 안되는 걸까 했는데

초반에는 접속이 잘 되지 않았지만 DB 접속용 유저를 생성(#권한부여)하고 테이블 등을 구성한 결과, not supported라고 warning메세지가 뜨긴 하지만 삽입 및 수정 작업이 원활하게 되는 것을 확인 할 수 있었다.




이후에는 ftp사용을 위해 vsftp를 설치하고 ftp사용을 위한 유저를 추가하였다. (포트설정, ftp설정 포함)


-vsftp 설치

yum -y install vsftpd




227 Entering Passive Mode (***.**.**.***.**)



하지만 파일질라에서 이러한 오류가 나며 접속이 안되는 현상이 일어났는데

구글링을 해보니 사설 아이피에서 나타나는 증상으로 패시브 모드를 해제하면 해결된다고 한다.



vi /etc/vsftpd/vsftpd.conf (vsftp 설정파일)

pasv_enable=NO (마지막줄 추가, 변경내용 저장)

service vsftpd restart (vsftpd 재시작)



마지막으로 Git을 사용하기 위해 조사를 해보았다. 윈도우에 설치는 해보았지만 github 계정과 이 프로젝트를 업로드 할 페이지만 생성하였다. git에 대해서는 좀 더 알아보아야 할 것 같다.


https://github.com/Bluishyj/minimap



'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-4  (0) 2016.08.24
[The Minimap] 개발일지-3  (0) 2016.08.24
[The Minimap] 개발일지-1  (0) 2016.08.24
[The Minimap] 개발 환경  (0) 2016.08.18
[The Minimap] 개발 개요  (0) 2016.08.18

[The Minimap] 개발일지-1

창업꿈나무과제를 하면서 개발에 있어 문서화는 필수불가결한 존재라는 것을 알 수 있었다.

그리고 힘든 개발 과정을 세세하게 기록하기에는 블로그가 좋다는 생각이 들었다. 

3학년 때 유닉스 과제로 만들었던 텍스트 큐브를 이식한 이 블로그는 여태 죽어있었지만 

다시 살려내어 나만의 포트폴리오 공간으로 만들고자 한다.


------------



공개SW개발자대회는 6월 19일에 접수를 마감하고 9월 30일까지 결과물을 제출하면 된다.

하지만 기어(타이젠)을 만져본적이 없고, 접수 마감에 맞춰 계획서를 작성하고 제출한 우리는 이전에 미리 개발을 한 것이 없었다.

엎친데 겹쳐서 7월말까지 예정되어 있는 창업꿈나무과제 보고서 제출 때문에 개발 시작이 늦어졌다.


공개SW개발자대회는 생각보다 많은 것을 지원해주었다.

우선 클라우드 서버를 제공해 주는데, 대회접수 마감 후 신청을 받아서 7월 7일에 서버를 수령할 수 있었다.

서버는 3학년 유닉스과목과 시스템보안 시간에 충분히 만져보아 익숙한 CentOS로 선택했다.



(클라우드 서버 정보를 메일로 보내주었다.)



그리고 삼성전자 지정과제에 한해서 개발계획서를 보고 기어S2 장비를 제공해주는 공지가 있었다.

총 15대의 기어를 지원해 주는데, 운이 좋게도 선발되어서 7월 16일 수령할 수 있었다.

기어는 새 제품은 아니고 휠 상단 부분에 약간의 흠집이 있는 걸로 봐서 외부 결함이 있는 제품인 것 같았다.

3G 모델이었고, 본체만 뽁뽁이에 싸여져 왔기때문에 충전기는 별도 구매를 해야했다. 



(이렇게 택배로 수령했다)



(별도 구매한 충전기에 도킹한 모습)


이렇게 제공된 기어는 프로젝트 완성 후 스토어에 등록만해도 증정해주기 때문에 최소 프로젝트 완성을 목표로 하고 있는 중이다.


또한 이 두가지 외에도 대회에서 멘토링을 제공해 주는데, 8월이 되어서나 멘토링을 할 수 있었다. 

우리의 멘토는 삼성전자의 김수필 사원님으로, 지역 거리상 오프라인 모임은 힘들어서 온라인 상으로 궁금한 것을 질문하면서 멘토링을 하기로 하였다.


이런저런 과정을 거치며 어느덧 대회기간이 많이 남지 않았는데 8월까지 주요기능을 구현 할 수 있도록 하고,

9월 중순까지는 UI 구현과 세부기능 적용, 부가기능 구현, 그리고 대회 마감일 까지 버그수정과 보고서작성을 하는 것을 목표로 하고 있다.

아래는 멘토님과의 질답 내용


-추세에 맞는 DB엔진 추천 : 편한 것을 쓰면 된다. → 이전에 논의한 대로 MariaDB를 사용하기로 하였다. 서비스 특성상 복잡한 구조의 DB가 필요하지는 않지만, 배워오고 익숙한 것이 MySQL이기 때문.


-타이젠 프로젝트를 네이티브로 만들지, 웹으로 만들지, 백그라운드 서비스 구현에 대해서 : 하이브리드 - 네이티브로 백그라운드 서비스를 하고, 그 외의 기능은 웹으로 구현하는 방법을 사용하면 될 것.


-위젯에서도 백그라운드 서비스를 통해서 데이터 통신과 GPS를 사용할 수 있는가? : 모바일의 값을 가져오면 된다.

 → 위젯 상태에서도 어플리케이션이 살아서 동작할 수 있는 지 궁금한 것이었는데, 시도를 해보아야 알 것 같다. 일단 위젯기능은 부가적인 기능이기 때문에 보류.

'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-4  (0) 2016.08.24
[The Minimap] 개발일지-3  (0) 2016.08.24
[The Minimap] 개발일지-2  (0) 2016.08.24
[The Minimap] 개발 환경  (0) 2016.08.18
[The Minimap] 개발 개요  (0) 2016.08.18

[The Minimap] 개발 환경

Tizen (Gear) - Hybrid (Native-background + Web)


Map API - Daum map - main / T map - 길찾기 기능


Server - Cloud OS : CentOS 6.4 x64

           WAS : Apache 2.2.15, PHP 7.0.9, Laravel Framework 5.3


Database - MariaDB 10.1.16

'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-4  (0) 2016.08.24
[The Minimap] 개발일지-3  (0) 2016.08.24
[The Minimap] 개발일지-2  (0) 2016.08.24
[The Minimap] 개발일지-1  (0) 2016.08.24
[The Minimap] 개발 개요  (0) 2016.08.18

[The Minimap] 개발 개요


More Information : http://project.oss.kr/contest/info.do


제 10회 공개SW개발자대회


사실 8회 때 학교선배로부터 아이디어가 있으니 같이하자는 제안을 받아서 참가신청까지 했었지만 여러가지 이유로 개발하지 못했던 대회. 

우연히 교내에서 설명회가 있어 들어본 후 지정과제-삼성전자 Tizen 부문에 아이디어가 떠올라서 참가 신청을 하였다.


대학 과정 동안 안드로이드 개발을 주로 했었기 때문에 Tizen은 생소했지만 새로운 도전이라 생각하고 대회에 임하려고 한다.


6월 19일까지 참가신청서를 제출하고 실질적으로 개발 할 수 있는 기간은 결과물 제출 마감일인 9월 30일까지..


접해보지 않은 개발 환경이라 힘든 과정이 예상되지만 잘 할 수 있을 것이라 믿으며 개발과정을 기록하고자 한다.



아래는 대회 참가 내용


-지원 부문 : 지정과제-삼성전자 (학생) Tizen Wearable(Gear) Application


-팀 명 : GWCW (Gaming Will Change the World)


-팀 구성 : 윤예지(나, 팀장), 강신혁, 총 2명


-출품작 명 : The Minimap


-출품작 소개 : <게임에서만 보던 미니맵이 내 손목 위에! 게임경험 기반 오픈 지도정보 서비스 'The Minimap'>

RPG 게임에 있어 미니맵은 필수적인 요소이죠. 게임에서의 미니맵은 현재 위치 주변의 지도와 목적지까지의 경로 제공, 주변 퀘스트 알림 등의 역할을 합니다. 

이런 게임 경험을 일상에 적용시키면 어떨까? 하는 생각에서 나오게 된 프로젝트가 지금부터 소개드릴 'The Minimap'입니다.

손목 위의 기어에서는 내 주변 위치를 지도로 보여주며, 목적지의 안내는 물론 주변 장소에 대한 정보 제공, 미리 지정한 할 일에 대한 알림을 제공해 줍니다.

'The Minimap'의 가장 큰 특징은 정보나 할 일을 ‘퀘스트’화 시켜서 보여준다는 것입니다.

지도에 노출되는 퀘스트들은 단순히 개인의 할 일만이 아닌, 사용자들이 직접 참여하여 등록한 정보들로 주변의 행사나 할인정보, 장소에 대한 정보를 포함합니다.

누구나 이벤트 등록용 웹페이지에 접속하면 검색된 장소에 대한 어떠한 정보든지 이벤트로 등록할 수 있으며 이는 지도 사용자들에게 노출됩니다.

가게주인이나 사업자들은 이벤트를 등록해주는 것만으로 쉽게 지도를 이용한 마케팅을 할 수 있으며, 사용자들은 유용한 정보를 얻을 수 있습니다.

게임의 경험이라는 재미를 제공해 주는 것은 사용자에게 있어서 매력적인 요소가 되기 충분하다고 생각합니다. 그 잠재력을 사용자 뿐 만이 아니라 사업체에서도 응용할 수 있게 하는 'The Minimap'은 웨어러블 기기 오픈 지도 서비스로써 OSS정신이 깃든 '즐거운 경험'을 널리 퍼뜨리고자 합니다. 


-시스템 구성 및 아키텍쳐


-화면구성 및 주요 기능



'Project > 제10회공개SW개발자대회' 카테고리의 다른 글

[The Minimap] 개발일지-4  (0) 2016.08.24
[The Minimap] 개발일지-3  (0) 2016.08.24
[The Minimap] 개발일지-2  (0) 2016.08.24
[The Minimap] 개발일지-1  (0) 2016.08.24
[The Minimap] 개발 환경  (0) 2016.08.18