On-ly 2.0이 릴리즈 되었다. 프로젝에 참여하면서 경험하고 느낀 점이 많기에  그동안 느꼈던 것들을 회사 블로그에 써 보는 것이 어떻겠냐는 본부장님의 제안이 있었고, On-ly 2.0 프로젝트 진행 과정 정리도 할겸 글을 쓰게 되었다. 

따듯한 봄날 외부업체에 파견을 나갔다 친정 같은 본사로 복귀한 나는 새로운 프로젝트에 참여 하게 되었다. 

그것은 On-ly 2.0 프로젝트! 

사용자 수를 늘리고,사용자들이 건강한 게임라이프를 즐길 수 있도록 의미있는 컨텐츠를 집어 넣고자 On-ly 2.0 프로젝트가 시작되었고, 난 이 프로젝트에 참여 한다는 것에 완전 신나 있었다.



본격적인 기획에 앞서 회사 사람들과 함께 모여 아이디어 회의를 했다. 

새로운 On-ly 2.0에 추가했으면 하는 기능들을  생각해 마음껏 의견을 내주셨는데  그 열기가 무척 뜨거웠다.


 (On-ly 2.0 아이디어 중 일부)

 

각자 의견을 낸 것을 문서로 정리해 보는 시간을 가졌고, 우리가 추구 했던 목표에 부합하는 아이디어를 모두 반영해 본격적인 기획을 시작 하였다.학교 다닐때 팀프로젝트를 할 때 주로 개발만 하고 기획문서는 작성해 보지 않았기 때문에 기획문서를 처음 만들게 된 나는 어디서 부터 시작해야 할 지 막막했다. 

 

다행이도 박본부장님께서  1차적으로 information architecture를 작성해주셔서 좀 더 쉽게 기획안을 작성해 나갈수 있었다.



 (On-ly 2.0 information architecture중 일부)


하지만 On-ly 기획안 작업을 하면서 나의 발목을 붙잡았던 것은 포토샵 작업이었다. Mockup작업을 하면서 포토샵으로 이미지 작업을 해야 했기 때문이다.포토샵 잘 하는 사람들을 보면 우와 하면서 엄지척 했었는데 직접 포토샵으로 작업 할일이 생기니 삽질이 따로 없었다.

  

디자이너한테는 비교적 쉬운 일이겠지만 개발자인 나는 내가 생각하고 있는 것을 포토샵을 이용해 이미지로 나타낸 다는 것은 무척어려운 일이었다. 다크써클이 점점 내려오기 시작했다. 


(작업한 이미지를 부장님께 보여드릴때 )


하지만 초긍정적인 마인드를 발휘하였고  드디어 기획안을 완성하게 되었다.

완성된 기획안은 다음과 같다. 중간중간에 빠진 내용은 아직 공개하기에 민감한 내용들이라 항목에서 제외시켰다.




삽질하며 만들었었는데 최종적으로 바뀌게 된 Mockup중 일부가 다음과 같다



 게임 CD느낌을 살려볼려고 했으나 음악 CD느낌이 난다

 그래서 기본 책장이 들어간 이미지로 변경했다.




사용자별 게임랭킹을 표현하고 싶었지만 총체적 난국이 되어버렸다 

그래서 단순하게 flat한 이미지로 변경했다.


기획안 작업은 시행착오를 많이 겪었던 과정이었고 부족했던 점도 있지만 우리가 추구하는 컨텐츠를 녹여내기 위해 회사 사람들과 함께 치열하게 고민했던 작업이었다.  또한 기획안을 최종 검토 하면서 과감히 기획을 쳐내는 작업이 있었는데  그 때는  정말 아쉬웠다.  정말 열심히 작업했기 때문이다.


기획안이 완성 된 후 개발 단계로 넘어가게 되었고, 이제 본격적인 개발을 시작하게 되었다. 

직접 기획했기해 순조로울 것 만 같은 개발단계는 결코 순조롭지 못했다. 그 이야기는 다음 포스팅(주니어 개발자의 On-ly 2.0 프로젝트 경험기-개발편)에서 써 내려갈 것이다. 기대해도 좋다. 

다사다난했던 주니어 개발자의 On-ly 2.0 프로젝트 경험기-기획편은 이것으로 마무리 한다.


-끝-  

Posted by 알 수 없는 사용자
,

최근 누구나 한번쯤은 드론(Drone), 웨어러블 디바이스 (Wearable Device) 와 더불어 사물 인터넷 (IoT : Internet of Things) 이라는 것을 들어보았을 것이다.

드론이나 삼성의 갤럭시 기어, Fitbit이 바로 사물인터넷을 기반으로한 제품들이다.

그렇다면 사물인터넷 (IoT : Internet of Things) 이란 무엇일까?


Internet of THINGS (사물 인터넷)


The Internet of Things (IoT) is the network of physical objects or "things" embedded with electronics, software, sensors and connectivity to enable it to achieve greater value and service by exchanging data with the manufacturer, operator and/or other connected devices. Each thing is uniquely identifiable through its embedded computing system but is able to interoperate within the existing Internet infrastructure.

사물 인터넷(Internet of Things, 약어로 IoT)은 물건들 또는 전자제품, 소프트웨어, 센서 그리고 연결된 장치의 양쪽 혹은 어느 한 쪽의 가공, 연산된 데이터를 교환 함으로써 더 큰 가치와 서비스를 달성하기 위한 연결을 가능케하는 사물들의 네트워크이다. 각 사물은 각각의 임베디드 컴퓨팅 시스템을 통해서 고유하게 식별하지만 기존에 존재하던 상호연동이 가능한 인터넷 인프라에서도 가능하다.

[출처 : Wikipedia]


Wikipedia에 따르면 '사물들의 네트워크' 라고 정의 하고 있다. 네트워크로 연결되어 상용화된 첫 기기는 바로 컴퓨터 였다. 이후 Smart Phone 을 거쳐 현재 'Things' 즉, 특정 되지 않은 각종 사물에 도달한 것이다. 

이런 IoT 활용 기기가 어떤 것들이 있는지 우선 드론(Drone)인 Lily와 웨어러블 디바이스(Wearable Device)인 Fitbit의 제품에 대한 아래 영상을 통해 살펴보자.


[동영상] LILY 소개 영상 (출처 : https://www.lily.camera/)


[동영상] Fitbit surge 소개 영상 (출처 : https://www.fitbit.com/kr/surge )


두 영상을 보고 필자는 신기함, 흥미로움과 같은 감정과 함께 2002년 개봉 했던 마이너리티 리포트 라는 영화의 한 장면이 뇌리를 스쳤다. 영화를 보면 주인공인 톰 크루즈가 광고판 앞을 지나가자 광고판이 톰 크루즈를 알아보고 맞춤형 광고를 보여주는 장면이었다. 이는 IoT 기술을 표현 할만한 좋은 예가 되는 장면이라고 생각한다. 우리는 지금 영화의 내용이 그저 상상이 아닌 현실이 되는 시대에 살고 있는 것이다. 그렇다면 IoT(Internet of Things : 사물인터넷)는 꼭 필요한 것일까?

누군가는 "저런거 없어도 살수 있다." 혹은 "저런게 꼭 필요한가?" 라고 말할 것이다. 시장조사업체인 IHS 테크놀러지는 인터넷에 연결된 사물은 2014년 기준 200억개에 달하고 있고 10년뒤인 2024년에는 약 800억개에 달할 것으로 전망하고 있다. 또한 Apple사는 2015년 6월에 있을 발표를 겨냥해 'Home-kit을 주목해주세요.' 라고 했다. IoT에 대해 '없어도 살 수 있다?' 맞는 말일 수 있다. 하지만 있으면 삶의 질은 향상될 것이다. Internet of Computer에서 Internet of IPhone을 넘어 이제는 Internet of Things의 시대가 올것이다.

그렇다면 이제 IoT 기술에 대해 조금더 자세히 알아보자.

현재 IoT 기술을 이용한 제품은 어떤 것이 있을까?

http://iotlist.co/ 링크된 곳은 IoTList라는 사이트로 아래와 같이 IoT 기술을 이용한 다양한 제품을 소개 및 판매하고 있다.

 

[사진] iotlist의 다양한 제품들 (출처 : http://iotlist.co/)

IoTList에서 소개 하고 있는 제품들을 분류 해보면 다음과 같다.

 1. Home

 

 3. Etc

 - Environmental factor

 

 - Art screen

 - Air condition

 

 - Cooking

 - management

 

 - Media

 - Thermostat

 

 - Plants garden

 - Electrical usage

 

 - Sprinkler

 - Bulb

 

 - Fuel gauge

 - Remote control

 

 - Computer mouse

 - Security

 

 - Payment

 - Door lock

 

 - Fish finder

 - Security 

 

 - Glasses

 2. Healthy

 

 - Chromecast

 - Temperature

 

- Pet tracker 

 - Blood pressure

 

 

 - Scale

 

 

 - Breathalyzer

 

 

 - Sleeping

 

 

 - Heart beat

  

 - Brainwave

  

 - Fitness tracker

  

우리 생활에 밀접한 관계가 있는 제품들이 많은 것을 볼 수 있다. IoT는 우리 생활에 많이 다가와 있는 것이다. 

위의 제품분류에서는 IoTList 사이트의 제품군만 분류 해놓았지만 이 밖에도 다양한 제품들이 많이 출시되어 판매되고 있고 

각국에서는 관련 사업도 추진되고 있다. 


그렇다면 IoT 개발에 필요한 것들은 무엇이 있을까?


우선 IoT가 어떤 기술 요소들로 구성 되어있는지 알아보자.

1. Machine & Module

- Sensor

- Embedded

2. Network

- 근거리 : NFC, Bluetooth, Beacon, Zigbee

- 원거리 : HTTP, MQTT

- Security

3. Data processing

- Event processing & Messaging Middleware

- Data processing & analysis

4. Service

- Cloud computing


sensor와 embedded 단말을 통해 data를 수집 하고  취합 및 전송하기 위한 Machine 과 module

센서와 임베디드 혹은 단말과 서버 사이의 통신과 데이터 전송을 위한 근거리/원거리 네트워크

전송된 데이터의 분석 및 필요한 정보 추출을 위한 Data processingCloud computing서비스 부분으로 나누어 볼 수 있다.

IoT의 기술 요소의 구성에 대해 알아 보았다. 


그렇다면 이번에는 IoT 관련 오픈 소스들에 대해 알아보자.

    1. Development Tools

      1. Arduino

        • 데스크탑 컴퓨터 보다 더 많은 물리적인 것들을 제어 및 감지할 수 있는 컴퓨터를 만들기 위한 Tool이다.

      1. Eclipse IoT Project

        • Eclipse 에서 지원하는 IoT 관련 프로젝트이다. 프로젝트는 application framework와 IoT의 프로토콜 구현관련 오픈소스, Lua에서 작업하기위한 tool과 같은 서비스를 포함하고있다.

      1. Kinoma

        • javascript로 된 smart device와 모바일 app개발을 원하는 개발자 및 전문 디자이너를 위한 tool(software & hardware)과 device app 플랫폼이다.

      1. M2MLabs Mainspring(Machine to machine)

        • 원격 모니터링, 차량 관리나 Smart grid 와 같은 응용프로그램 머신 (M2M)의 시스템 구축을 위한 application framework 오픈소스 이다.

      1. Node-RED

        • Hardware devices의 연결 관계를 나타내는데 사용되는 Tool이다. Raspberry Pi에서 실행할 수있다.


    1. Hardware

      1. Arduino Yun

        • Arduino의 microcontroller board의 한 가지로 linux OS 를 지원한다. 또한 Ethernet, Wifi 장치, usb-a 포트와 micro-SD카드 슬롯, 20 digital 입출력 핀을 지원한다. IoT에 사용 되는 기판 컴퓨터이다.

      1. BeagleBoard

        • BeagleBoard는 Open Source Computing 을 위한 기판 컴퓨터를 제작하는 회사로 대표적인 제품은 BeagleBone Black이 있다.

      1. Flutter

        • Arduino 기반의 board에 호환되는 무선 통신을 위한 장치 hardware 이다.

      1. Local Motors Connected Car

        • 자동차 회사인 Local Motors에서 IBM & Intel via Joe Speed가 협력해 만든 Open Source 하드웨어 이다.

      1. Microduino

        • Arduino  ¼ 크기의 축소판인 microcontroller board 이다.

      1. OpenPicus

        • IoT 장치들의 통신을 위한 Kit와 모듈을 만드는 회사로 Wi-fi, GPRS(General Pack Radio service), Ethernet을 이용할 수 있는 시스템 모듈인 FlyportPRO이 있다.

      1. Pinoccio

        • Arduino의 축소판인 Open Source hardware 이다. Arduino IDE (통합 개발 환경)와 Arduino의 라이브러리를 사용해 프로그래밍 할 수 있다.

      1. RasWIK

        • Raspberry Pi Wireless Inventors Kit 으로 Raspberry pi에 연결해 wi-fi 기능을 이용할 수 있도록 해준다

      1. SODAQ

        • Solar-Powered Data Acquisition의 약자로 plug-in module과 같은 Lego를 함께 제공하는 Arduino 기반의 board이다.

      2. Tessel

        • 10-pin Module 로 Accelerometer(가속도계), Ambient (소음측정), Relay(계전기), Climate(기후), Infrared(적외선), servo, RFID, GPS, DIY와 관련된 Open source Library를 제공 한다.

        • USB Modul로는 Bluetooth, Cellular, MicroSD, Camera, Audio를 제공한다.

        • Community-Created Module로는 Distance, Color Sensor, Keypad, Lights/LED, Motion, Motors, Pulse, Screen, Button/Switch를 제공 한다.

      1. UDOO

        • 안드로이드와 Linux 두가지에서 사용이 가능하고 Arduino-compatible 프로세서를 장착한 single board computer 이다. 소프트웨어 개발과 디자인을 위한 강력한 prototyping board이다.

    1. Home Automation System

      • home에서 사용하는 IoT 기기를 제어 할 수있도록 도와주는 소프트웨어이다.

      1. OpenHAB

      2. TheThing System


    1. Middleware

      1. IoTSyS

        • 장치간 통신을 위한 미들웨어로 IPv6, oBIX,6LoWPAN, 제한된 응용 프로토콜과 같은 다양한 표준과 프로토콜을 지원한다.

      2. OpenIoT

        • 센서 cloud로 부터 얻은 정보를 다루기위한 오픈소스 미들웨어이다.


    1. Operating Systems

      1. AllJoyn

      2. Contiki

      3. Raspbian

      1. RIOT

      2. Spark

    1. Monitoring

      1. Freeboard

        • Air Quality, Distillery, Humidor, Residental과 관련된 widget을 제공한다.


    1. Printing

      1. Exciting Printer

        • Small Internet-connected Printer 이다.

    1. Platform and Integration Tools

      1. DeviceHive

      2. Devicehub.net

      3. IoT Toolkit

      4. Mango

      5. Nimbits

      6. OpenRemote

      7. SiteWhere

      8. ThingSpeak


[자료] IoT를 위한 35 가지 Open Source 

(출처 : http://www.datamation.com/open-source/35-open-source-tools-for-the-internet-of-things-1.html )



위의 Open Source들에 대한 자세한 내용은 (출처 : http://www.datamation.com/open-source/35-open-source-tools-for-the-internet-of-things-1.html )에서 각 항목의 사이트 링크를 통해 살펴볼 수 있다.

IoT와 관련된 오픈소스는 이밖에도 많이 있다. 이러한 오픈소스들은 IoT관련 개발을 손쉽게 접하도록 도와준다. IoT 개발에 관심이 있다면 Arduino 혹은 Raspberry Pi의 홈페이지에서 제공하고 있는 Project Example을 활용 하면 좋을 것이다.


마무리

지금 까지 IoT에 대해 전반적으로 살펴 보았다. 

오래전부터 인간은 도구를 사용해 왔다. 도구를 사용하지 않았어도 인간은 살아갈 수는 있었을 것이다. 하지만 도구의 사용은 인간의 삶의 질을 향상 시켜 주었고, 생활의 편리함을 제공해 주었다. 더불어 더욱 편리해 지기위한 필요에 의해 도구는 발전을 거듭해 왔다. 

IoT 기술도 마찬가지이다. IoT 기술이 없어도 살아갈 수 있지만 이 기술을 활용 하면 인간은 지금보다 더 좋은 환경에서 생활 할 수 있을 것이다. 또한 IoT 기술이 생겨나고 발전 할 수 있었던 것은 사람들이 필요로 했기 때문이다. IoT 시대는 이미 시작 되었다. IoT는 무궁무진한 발전 가능성을 가지고 있고 관련 자료들이 지금도 쏟아져 나오고있다. 위에서 소개한 IoT 관련 Open Source 및 기타 자료들은 IoT의 극히 일부에 불과하다. 

하지만 이번 포스팅을 통해 IoT 가 무엇인지 알고 싶어 하는 사람들에게 조금이라도 도움이 되었길 바란다.

IoT 에 입문하기 위한 혹은 IoT가 어떤 것인지 알고 싶은 사람들을 위한 이번 'IoT(Internet of Things : 사물인터넷) ?' 에 대한 포스팅을 마치겠다.









Posted by 알 수 없는 사용자
,

이번 포스팅은 IoT를 위한 오픈 소스 개발 툴중에 하나인 Kinoma를 소개하고자 한다.

Kinoma는 Marvell Technology Group소유의 소프트웨어 플랫폼으로써 각기 다른 세개의 오픈소스 프로젝트를 포함하고 있다.

1. Kinoma Create은 프로토타입의 전자 기기를 위한 DIY키트이다. 

2. Kinoma Studio는 Kinoma Create과 Kinoma Platform Runtime에서 사용할 수 있는 개발 툴이다. 

3. Kinoma Connect는 스마트폰 또는 타블렛과 IoT 기기를 연결해주는 무료 iOS, Android앱이다.


이중에서 우리는 두번째에 있는 Kinoma Studio를 살펴보도록 하겠다.


Kinoma Studio



Kinoma Studio는 어플리케이션 프로그래밍 툴이다.

자바스크립트와 XML로 어플리케이션 작성을 할 수 있다. XML API 옵션은 유저인터페이스와 데이터 바인딩을 간단하게 해 준다고 한다. Node.js가 자바스크립트를 사용하지만 "웹" 부분을 서버로 사용하기 위한 프레임워크로 바꿔서 사용하듯이, Kinoma Platform Runtime(KPR)은 Kinoma Create, iOS, Android에서 사용될 고성능 앱을 구축하기 위하여 프레임워크를 최적화 한다.

Eclipse open source IDE에 Built-on된 Kinoma Studio는 개발자에게 친숙한 환경을 제공한다. 

Built-in 시뮬레이터가 있어서 키트가 없어도 즉시 코딩 가능하다. 또한, 수많은 예제들을 제공하여, 개발하고자 하는것과 관련된 예제들은 바로 테스트 가능하다.

Kinoma Stydio는 Kinoma Create App이나 iOS App, Android App으로 쉽게 Export 할 수 있다. 


설치

설치는 http://kinoma.com/studio/ 에서 각 OS에 맞는 버전을 설치하면 된다.


좀더 들여다 보기

이번에는 간단한 프로젝트를 실행해 보겠다.

버튼을 클릭(터치)할때마다 "Hello!"와 "World!"가 번갈아가면서 나오게 하기

1. 프로젝트를 생성하고, main.xml파일을 다음과 같이 작성해 준다.


main.xml


<?xml version="1.0" encoding="utf-8"?>

<!--

 Copyright 2011-2014 Marvell Semiconductor, Inc.

 Licensed under the Apache License, Version 2.0 (the "License");  you may not use this file except in compliance with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software  distributed under the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and  limitations under the License. -->

<program xmlns="http://www.kinoma.com/kpr/1">

<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ --> <!-- ASSETS --> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<skin id="MainSkin" color="#FFFFFF"/>

<skin id="ButtonSkin" color="#707070"/>

<skin id="ButtonSkinPressed" color="#4E4E4E"/>


<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<!-- STYLES -->

<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<style id="ButtonStyle" color="white" font="bold 36px Helvetica, sans-serif"/>

 

<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<!-- LAYOUTS -->

<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++ -->  


   <container id="MainContainer" top="0" left="0" bottom="0" right="0" skin="MainSkin" active="true">    

       <container top="100" left="100" bottom="100" right="100" skin="ButtonSkin" active="true">

           <label top="0" left="0" bottom="0" right="0" string="'Hello!'" style="ButtonStyle"/>    

           <behavior>

               <method id="onTouchBegan" params="container, id, x, y, ticks"><![CDATA[

                   container.skin = ButtonSkinPressed;

                   /* Turn led on/off and switch the button's label */

                   if ( ledState ) {

                container.first.string = "Hello!";                

                } else {

                container.first.string = "World!";

                }

                   ledState = !ledState;                    

               ]]></method>

               <method id="onTouchEnded" params="container, id, x, y, ticks"><![CDATA[

                   container.skin = ButtonSkin;                      

               ]]></method>

           </behavior>       

       </container>

   </container>

   

   <script><![CDATA[

        

    /* Global Variables */

var ledState = false;

/* Start application */

      var main = new MainContainer();

       application.add( main );       

/* Same as

application.add(new MainContainer());       

*/

         

   ]]></script>

</program>


2. 실행하기 
프로젝트의 Run Configuration에서 원하는 프로젝트 경로와 시뮬레이터를 선택 후 실행해준다. 시뮬레이터는 application.xml에서도 지정 가능하다.

<이미지 1. applicaiton.xml>


<이미지 2. 세가지의 시뮬레이터를 선택할 수 있다.>

<이미지3. 실행 설정>

3. 각 시뮬레이터에서 실행 된 모습.

<이미지 4. Desktop Application 시뮬레이터>

<이미지 5. Kinoma Create 시뮬레이터>

<이미지 6. Nexus One 시뮬레이터>

마무리

IoT에대한 관심이 높아지는 요즘, Kinoma Studio는 가상 시뮬레이터를 제공해 주기때문에 실제 키트가 없더라도 IoT관련 개발을 손쉽게 접할 수 있을것 같다. 더구나 개발 언어가 자바스크립트와 XML이기 때문에 웹을 하던 사람들도 익숙하게 개발 할 수 있을것 같다. 또, eclipse IDE환경을 제공하여 친숙한 환경에서 개발 할 수 있어 진입장벽이 낮은것 같다. 

IoT 입문자 또는 관련 앱을 개발하고 싶은사람에게 적극 추천해주고 싶은 Kinoma Studio에 대해 이번포스팅을 마치겠다.

Posted by 알 수 없는 사용자
,

Google Analytics 데이터를 사용한 엠비안 블로그 분석 보고서.

012345678910111213141516171819202122

SlideShare: http://www.slideshare.net/JungKim12/20150424-48080561


'Newbie's Log' 카테고리의 다른 글

IoT(Internet of Things : 사물인터넷) ?  (0) 2015.05.21
IoT 오픈소스 개발 툴 - Kinoma  (0) 2015.05.20
spring camp 2015 참가 후기  (0) 2015.04.13
naver pinpoint  (0) 2015.03.07
데이터 분석이 게임 성패를 가른다.  (0) 2015.03.01
Posted by 알 수 없는 사용자
,

2015년 4월 18일 spring camp가 양재 AT센터에서 열렸습니다. 


2013년부터 참가했던 기술 세미나라서 요번 년도에도 먼가 등록해야 할 거 같은 의무감이 생기더군요. 


물론 세미나에 좋은 세션들이 많아서 그렇습니다.  ^^ 




3개의 Track 중에서 오픈소스를 다루고 있는 Track B를 선택해서 들었습니다.  


Track  B에 세가지 세션을 들었는데 아래와 같습니다.  


첫번째, XSS는 네가 맡아라, XSS 공격 방어 라이브러리 소개


두번째, 내가 써본 nGrinder


세번째,대규모 분산 시스템 추적 플랫폼 Pinpoint 


세션에 대한 간단한 소개를 해볼까요?


1. XSS는 네가 맡아라, XSS 공격 방어 라이브러리 소개 


XSS에 대해서는 처음 들어봤던 저는 바로 구글신에 검색을 해봤는데요. 아래와 같습니다. 


웹 애플리켜이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 


더 알아보고 싶으면 위키에서 더 보실수 있습니다. 


이 세션에는 악의적인 XSS 코드의 위험으로부터 웹 애플리케이션을 보호 하는 작업을 간단한 XML설정만으로 XSS공격을 방어해주는 Java 필터 라이브러리  lucy - xss filter를 소개하는 시간이었습니다. 




2 . 내가 써본 nGrinder

nGrinder는 성능테스트를 할때 쉽게 설치하여 무료로 테스트 할 수 있는 거기다가 UI가 이쁘기 까지 한 솔루션입니다. 
nGrinder를 잠깐 써봤던 저는 다른 사람은 어떻게 nGrinder를 쓸까 궁금해서 들었던 세션입니다. 



3,대규모 분산 시스템 추적 플랫폼 Pinpoint




Pinpoint 는 대규모 분산 시스템의 성능을 분석하고 문제를 진단,처리하는 플랫폼입니다. 


Embian 내에서 Pinpoint 이야기가 나와 들었던 세션입니다. 



Github: https://github.com/naver/pinpoint


이렇게 세션에 대한 간단한 소개를 해 보았습니다. 


2013년 학생 시절 부터 Spring Camp에 참가했었는데요. 


처음 학생 시절 참가 했을 때 보다 주니어 개발자가 된 지금 세션에 대해 전 보다 많은 내용을 이해 할 수 있게 되었습니다. ^^


2016년 Spring Camp 에서는 이번 세미나보다 더 많은 내용을 이해하고 또 좋은 질문을 할 수 있도록 성장하도록 노력해야겠습니다.


그리고 Spring Camp 2016에 자원 봉사자로도 활동 해 보고 싶네요 :)


이상 Spring Camp 2015  참가 후기였습니다. 

















Posted by 알 수 없는 사용자
,

naver pinpoint

Newbie's Log 2015. 3. 7. 19:04

 

 

얼마 전 Naver pinpoint 오픈 소스가 공개 되었다.

pinpoint는  어플리케이션 성능 측정 (Application Performance Management: APM) 도구로서 java로 쓰여진 대규모 분산된 어플리케이션 에서 수행괴는 트랜잭션을 추적하여 프로파일링 데이터를 제공한다. 현재 인프라에서 어플리케이션까지 다양한 네이버 내부 시스템의 장애 분석 및 성능 개선에 사용되고 있다고 한다.

pinpoint는 Google의 Dapper paper를 모델로 하였으며, 시스템의 전체 구조를 분석하고 그 안의 분산 어플리케이션 구성 요소를 통해 트랜잭션을 추적함으로서 어떻게 상호간에 연결되는지를 보여주는 솔루션을 제공한다.

단 한줄의 코드를 변경하지 않고 agent를 설치할수 있으며, 성능에 미치는 영향을 최소화 (자원 사용량이  약 3% 증가) 한다고 한다.

 

Overview

요즘 서비스들은 자체 통신 뿐만 아니라 외부 서비스에 대해 API를 호출하는 서로 많이 다른 구성요소들이 존재한다. pinpoint는 이런 구성요소들 사이의 트랜잭션이 흘러 문제가 생기는 영역과 병목 현상을 볼 수 있는 명확한 뷰를 제공하고 있다.

제공하는 뷰들에 대해 알아보자.

 

ServerMap

각 구성 요소가 어떻게 상호 연결 되어있는지 시각화 함으로서 분산된 시스템의 Topology를 이해하며, 각 노드를 클릭하여 현재 상태, 트랜잭션 수 등과 같은 구성요소에 대한 세부 사항을 확인할 수 있다.

Request/Response Scatter Chart

Request 수, Response 패턴을 시각화 해주며, 트랜잭션은 차트를 드래그 함으로서 상세 정보를 확인할 수 있다.

 

CallStack

분산 환경에서 모든 트랜잭션 코드 수준의 가시성을 얻을 수 있으며, 하나의 뷰에서 병목지점, 실패 위치를 볼 수 있다.

 

Inspector

CPU 사용량, Memory/GC, JVM arguments와 같은 어플리케이션 상세 정보를 제공한다.

 

Architecture

pinpoint의 전반적인 구조는 아래 그림 하나로 한번에 이해할수 있다.

 

우측 상단의 Host JVM이 사용자가 구현한 어플리케이션이 돌가가는 웹 어플리케이션 서버(WAS)이다. 바로 여기에 pinpoint의 agent가 올라가며, collector와 web UI는 HBase를 보고 있다.

 

Supported Modules

pinpoint가 지원하는  모듈들은 다음과 같다.

  • JDK 6+
  • Tomcat 6/7
  • Spring
  • Apache HTTP Client 3.x/4.x, JDK HttpConnector
  • MySQL, Oracle, MSSQL, CUBRID, DBCP
  • iBATIS, MyBatis
  • Arcus, Memcached, Redis

 

pinpooint에 다한 자세한 사항은 여기를 참조하길 바라며, 설치는 여기를 참조하면 된다.

다운받으면 안에 quickstart도 있어 간편하게 사용해볼수 있다. quickstart 사용에 대한 내용은 여기를 참조하길 바란다.

 

 

참조

 


Posted by 알 수 없는 사용자
,

친구가 본 "micro Software" 라는 정기적으로 받아 볼수 있는 잡지를 쭉 살펴 보던중 요즘 하던일과 살짝 관련있는 제목이 눈에 띄어 소개해 볼까 한다. 발행 일이 2014.06로 좀 지났지만 꽤 흥미있어 보여 읽어보았다.

 

제목은 위에도 써놨듯이 "데이터 분석이 게임 성패를 가른다로 5Rocks대표 겸 CTO 이창수씨가 쓴 글이다.

먼저 5Rocks로 말할것 같으면, 발음 그대로 오락으로 게임을 위한 데이터 분석 및 운영 플랫폼이며 기업과 기업간의 거래(B2B)를 하는 업체이다.

홈페이지는 그림을 클릭하면 바로 이동 가능하다.

 

스타트업--

5Rocks는 스타트업 업체들에서 좀처럼 찾기 힘든 B2B 서비스 업체 이다. 그것도 스마트폰 게임 관련 데이터 분석 서비스 겸 시각화 업체.

5Rocks의 개발팀은 코어 개발자 4명과 인턴등의 개발자들을 포함 8명으로 구성되어 있다. 특히 코어 개발자들을 중심으로 멀티 플레이어를 수행하고 있는 것이 인상적이다.

개발 업무를 들여다 보니 유니티 SDK를 하는 사람이 동시에 안드로이드 SKD를 개발하며 전체 서버를 보고있다. 또한 IOS SDK를 하는 사람은 하둡 MR 작업도 하고 있다.

이들이 다루는 데이터 양도 어마어마하다. 대용량 데이터 처리 플랫폼인 하둡을 사용하는데, 하둡 노드를 기준으로 평소에 20노드를 사용하다가 과부하가 걸릴 경우 50노드까지도 확대해 사용 한다고한다.

 

유니콘 개발자--

여느 스타트업이 그렇듯 5Rocks역시 개발자 구인난에 시달리고 있다. 인턴도 찾기 힘들다는 것이 엡계의 전언이다. 심지어 스타트업이 필요로 하는 개발자는 찾는 것이 불가능하다는 뜻에서 전설의 동물의 이름을 붙여 '유니콘 개발자'라고 부른다.

5Rocks는 유리판에 코드를 쓰게 하는 방식으로 개발자를 뽑는다. 겉으로 볼땐 쉬워보이지만, 제대로 못쓰는 지원자들이 태반이었다고..

"면접을 볼떄 코드를 짜게 하면서 가이드를 줍니다.

자바의 경우 10by7 매트릭스를 다이어고날(대각선)로 접근할 경우 그 사이에 들어가는 코드를 제일 편한 언어로 짜보라고 합니다. 그런식으로 문제를 주고 가이드를 제시하는데, 얼마나 잘 따라오는지를 중심적으로 봅니다.

 개발하는 분들 중에 특정 사이트에서 검색해 그대로 붙여쓰는 작업만을 해오시던 분들은 바로 실력이 들통납니다."

 

유료화 --

'유료화 고수'라는 점도 특이 했다. 아무리 유료 서비스라 해도 베타 서비스를 할때는 무료로 진행하는 것이 보통이다. 하지만 5Rocks는 클로즈 베타 때도 약간의 할인을 했을 뿐, 유료화를 포기하지 않았다.

이 대표는

 "클로즈 베타 때 무료로 서비스를 배포할 경우 중요한 테스트를 할 수 없기 때문에 유료화를 강행했습니다.

무료와 유료 사이의 간극이 상당히 큽니다. 클로즈 베타 때야말로 돈 받고 쓰게 할 것인지,

무료로 뿌리고 비즈니스 모델을 찾아야 하는지 결정해야 하는 중요한 시점이기 때문에 유료화를 포기할 수 없었습니다."

라고 강조했다.

 

게임 데이터 분석 --

이창수 대표는 왜 게임에 분석을 도입했을까. 여기에서 비즈니스적인 성과를 거둘 수 있단 말인가.

요즘엔 하루에도 수많은 게임들이 풀시되고, 사라진다. 이용자 데이터 분석이 게임의 흥망성쇠에 영향을 미칠 수 있다면 어떨까?

그의 설명에 따르면, 알푸(ARPU: 가입자당 평균 수익)가 최고점과 최저점을 기록하는 것만으로는 매출의 증감 여부를 알 수 없다. 매출이 최고점에 올라도 알푸가 오르지만, 이용자 숫자가 최저치를 쳐도 알푸는 올라가기 때문이다.

하지만 이용자의 게임 캐릭터 레벨별 알푸를 나눠서 보면 성공과 실패 여부를 판단 할 수 있다.

가령, 레벨1의 알푸가 0.3달러, 레벨3은 0.2달러, 레벨10은 0.1달러를 기록하면 이 게임은 곧 망한다. 하지만 레벨1이 0.3달러, 레벨3은 0.4달러, 레벨10은 0.5달러라면 이 게임은 성공한다.

 

과거에는 이용자의 데이터를 분석하는 게 큰 의미가 없었다. 돈을 주고 게임 CD를 사는 것이 전부 였기 때문이다. 온라인 게임의 경우도 마찬가지였다. 가입자의 수가 중요했다. 데이터 처리의 결루 서버로 몰려오는 트래픽을 잘 견디는 것이 지상 과제일 뿐이였다.

하지만! 스마트폰의 등장이후 그 기반의 게임 시장은 데이터를 바라보는 관점을 180도 바뀌에 했다. 분석을 통해 게임 이용자들이 어떤 레벨에 도달할 때 지갑을 여는 지 파악할 수 있게 됬다. 그리고 분석을 통해 게임사가 가입자를 더 유치하거나 구매율을 높이는 사례도 속속 등장하기 시작했다.

데이터 분석의 가치가 인정받는 생태계가 만들어진 것이다.

 

자체 로그 분석 서비스 개발 --

로그 분석 서비스 하면 따오르는 것은 대표적으로 구글 애널리틱스와 플러리 이다. 온라인 서비스를 하는 업체라면 누구든 빼놓지 않고 사용하는 서비스이기도 하다. 하지만 이 대표에게는 불편했다.

"앱으로 들어오는 데이터를 분석 할 경우 구글 애널리틱스와 플러리는 많이 불편합니다. 예전에 앱을 운영했을 때에도 의도했던대로 전혀 쓸수 없었습니다.

그러던 어느날 친한 지인이 데이터 분석 시스템을 게임에도 활용하면 좋을 것 같다고 조언을 했고, 이를 받아 들여 2013년 02월 부터 개발에 들어갔습니다."

그해 5월부터 국내 한두 회사가 5Rocks에 관심을 보이더니, 6월에는 5개 회사를 추가로 계약했다. 일본의 경우 9월부터 고객사가 하나 둘씩 생겼다. 그리고 2014년 04월 고객사는 400여곳에 이른다.

 

전 세계를 강타하고 있는 작은 거인 5Rocks의 1년 뒤가 더욱 기대 된다.

 

Posted by 알 수 없는 사용자
,

친구와 이야기를 하는 도중 데이터 마이닝이란 단어가 나왔다. 문득 "데이터 마이닝이 뭐지?"란 의문이 들어 알아보고자 한다.

 

데이터 마이닝이란 사전적 의미로는 다음과 같다.

 " 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아 내는 것이다.

다른 말로는 KDD(데이터베이스 속의 지식 발견: Knowledge-discovery in databases)라고도 일컫는다. "

잘 모르겠다면 단어를 따로 따로 떼어서 살펴보자.

 

데이 (Data)   : 우리가 알고있는 그 데이터이다. 보통 연구나 조사 등의 바탕이 되는 재료를 말한다.

마이닝 (Mining) : 채굴, 채광, 채광 산업을 말한다. 채광이란 광산에서 광석을 캐내는것을 의미한다.

즉, 데이터마이닝이란 광산에서 광석을 캐내는 것에 비유한 것으로, 금광석에 극히 미량으로 포함된 금을 여러 단계를 거쳐 추출하듯이 "수 많은 데이터의 산에서 가치있는 유용한 정보를 찾아 내는 것" 이다.

 

그러면, 이런 데이터 마이닝은 왜 필요한 걸까?

 

요즘은 빅데이터의 시대라고 하여 정말 상상도 할수 없을 만큼의 많은 데이터가 만들어 지고 있다. 흔히들 사용하는 SNS중 하나인 Facebxxx만 해도 하루 평균 25억개의 컨텐츠 공유 및 500TB이상의 데이터를 처리한다고 한다. 그야말로 어마어마한 데이터 이다.

이렇게 데이터도 많아져 가며, 기업의 업무 또한 복잡해져 가면서 업무 전문가의 통찰력에도 한계가 오게 되고, 수 많은 데이터 속에서 유용한 지식을 찾아 내는 것을 사람의 손으로 하기엔 이미 너무 벅찬 일이 되었다.

그래서 데이터 마이닝 기술이 탄생하였다.

 

데이터 마이닝 기법은 전적으로 데이터에 기반하여 지식 패턴을 추출하기 때문에 사람이 간과해 버릴 수도 있는 지식 패턴들까지 모두 찾아낼 수 있다. 

데이터 마이닝의 기법으로는 OLAP, 군집 분석, 연결 분석, 사례기반 추론, 연관성 규칙 발견, 인공 신경망, 의사 결정 나무, 유전자 알고리즘 등이 있다.

이 기법들에 대한 자세한 설명은 넘어가도록 하겠다.

 

데이터 마이닝의 절차는 다음과 같다.

 데이터 추출 → 데이터 정제 → 데이터 변경 → 데이터 분석 → 데이터 해석 → 보고서 작성

 

마지막으로 데이터 마이닝의 활용 분야 에 대해 3가지 정도만 알아보고 마치도록 하겠다.

1. 데이터 베이스 마케팅

데이터를 분석해 얻는 사람들이 원하는 정보를 이용하여 마케팅 전략을 구축한다.

그 예로는 목표 마케팅, 고객 세분화, 고객 성향 변동 분석, 교차 판매, 시장 바구니 분석등이 있다.

 

2. 신용 평가

특정인의 신용 상태를 점수화 하는 과정으로서 신용거래 대출 한도를 결정하는 것이 주요 목표이며, 이를 통해 불량 채권과 대손을 추정하여 최소화 한다.

그 적용 분야로는 신용카드, 주택 할부 금융, 소비자 대출, 상업 대출 등이 있다.

 

3. 통계적 품질 관리

불량품을 찾고 그 원인을 밝혀서 궁극적으로 이를 예방하는 것을 목적으로 한다.

그 예로는 의료 보험 조합에서는 불필요한 장기 입원이나, 보험료 과다 청구를 탐지하려 SPC를 사용하며, 제조 업체에서는 불량품 감소를 통한 이윤 증가를 추구하는 것들이 있다.

마무리 하며..

글쓴이는 간단하게 데이터 마이닝이 무엇인지 정리하였지만, 데이터 마이닝에해 더 깊이 알고 싶다면 강좌 또는 논문을 읽어보는 것을 추천한다.

 

 

참고할만한 블로그

(강좌) 데이터마이닝 (Data Mining) 소개

 

Posted by 알 수 없는 사용자
,

몇개월전, 우분투를 사용하고 있었을 당시, 플로우 차트를 그려야할 일이 있었다. 리눅스계다 보니, 사용하기 편하면서 결과물이 예쁘게 나올 수 있는 프로그램을 찾기 어려웠다. 이리저리 찾아보던중, 나의사랑 크롬 웹스토어에서 검색해보았더니 Gliffy Diagrams라는 앱이 있길래 설치를 해 보았다. 오늘은 Gliffy Diagrams를 리뷰해 보겠다.

Gliffy Diagrams 사용해보니 무료임에도 불구하고 고퀄리티의 플로우차트를 뽑을 수 있었다. 제공해주는 색상 스키마도 깔끔하고 자주 사용하는 색상 위주로 제공해 주기때문에 색상 선택으로 고민하는 시간을 줄여주는 느낌이다.

뿐만아니라 다양한 다이어그램을 그릴 수 있다. UML이나 Entity-Relationship등 간단하고 예쁘게 그릴 수 있다. 공식홈페이지(http://www.gliffy.com)에 따르면, 다음과 같은 목적으로 사용 가능하다고 나와있다.

Use Gliffy As

Flow chart software

Network diagram software

Floor plan software

Org chart software

SWOT analysis

Wireframe software

Site map software

UML software

Business process modeling software

Venn diagram software

또한, Jira와 Confluence에서 사용할 수 있는 Plug-in도 제공을 하고 있다고 한다.


시작을 하게 되면 다음과 같은 화면이 뜬다.

<그림.1 시작>

가이드 라인이 나와서 쉽게 정렬이 가능하다.

<그림2. 플로우 차트 그리기>

<그림3. 플로우 차트>

<그림 4. 색상스키마 선택>

그 외의 다이어그램을 그릴때도 유용하다.

<그림 5. 다이어그램>

구글 드라이브와 연동도 가능하다.

<그림 6. 구글 드라이브와 연동>

프로그램이 죽거나 실수로 끈 경우 백업파일을 불러와서 계속 편집이 가능하게 해 준다.

<그림 7. 백업파일로부터 시작>


정리해보면 Gliffy는 다음과 같은 기능을 제공한다.

1. 가이드라인 보여주기, 그리드 보여주기, 그리드에 자동붙이기 기능등 기본적이면서 가장 필요한 기능을제공한다.

2. 그룹단위로 묶어서 이동 및 축소/확대가 가능하다.

3. 컬러테마를 제공하여 색상 스키마 변경을 원클릭으로 가능케 한다.

4. 로컬에 .gliffy확장자로 저장 및 불러오기가 가능하다.

5. PNG/JPG파일로 저장 가능하다.

6. 구글 드라이브에 저장이 가능하다. (https://www.gliffy.com/go/gdrive/open?code=4/JlD5UUAPZNzHKlWHPPb1BsNDLH_dNiidcTWdsSBtqIA.UvhDJGSm_nwYgrKXntQAax0staSwlwI)

7. 만약 실수로 저장하지 않고 프로그램을 종료한 경우에, 다음번 실행시 자동백업된 파일을 불러와서 계속 편집할것인지 물어본다.

 크롬 브라우저에서 지원하는 문서편집 툴들이 그러하듯, 내 컴퓨터에서 굳이 프로그램을 설치할 필요가 없다는 점이 장점이라고 본다. 또한 간단하면서 직관적인 UI를 제공하여 사용자로 하여금 친숙하게 접근할 수 있는 프로그램이다. 그동안 크롬 브라우저 웹스토어에서 사용한 프로그램들을 돌아보면, 주로 간단하면서 사용하기 직관적인 프로그램들이 오랫동안 살아남는것 같다. 

 



Posted by 알 수 없는 사용자
,

phpMyAdmin은 MySQL을 웹 상에서 관리할 목적으로 PHP로 작성한 오픈 소스 도구이다. 데이터베이스, 테이블, 필드, 열의 작성, 수정, 삭제, 또 SQL 상태 실행, 사용자 및 사용 권한 관리 등의 다양한 작업을 수행할 수 있다. PHP로 작성되어있기 때문에 코어파일들을 적절하게 튜닝하여 사용 가능하다. 

phpMyAdmin은 다음과 같은 기능을 제공한다.

직관적인 웹 인터페이스

MySQL 데이터베이스 관리

테이블 관리

일반사용자와 특정 권한 이용자 관기

CSV와 SQL로부터 데이터 가져오기

데이터를 다양한 형식으로 내보내기: CSV, SQL, XML, PDF (TCPDF 라이브러리를 통해), ISO/IEC 26300 - 오픈도큐먼트 텍스트 및 스프레드시트, 워드, 엑셀, LaTeX 등

다중 서버 관리

데이터베이스 양식의 PDF 그래픽 작성

쿼리별 조회(QBE)를 이용한 복잡한 쿼리 작성

데이터베이스 및 하부 집합 전역 검색

미리 정의된 함수 집합을 사용하여 저장된 데이터를 원하는 형식으로 변형 (BLOB 데이터를 다운로드 링크나 이미지로 표시 등)

쿼리 모니터 (프로세스)

현재 공식버전은 4.3.11.1이며 Alpha버전은 4.4.0까지 나와있다. 설치에 사용된 버전은 4.2.13.2버전이다.

그러면, phpMyAdmin을 설치해보자. 

1. 먼저 공식 사이트에서 zip파일을 다운로드한다. [phpMyAdmin 공식홈페이지]





2. 다운받은 zip파일 압축을 푼다.

3. phpMyAdmin 루트 폴더에 config.sample.inc.php파일을 복사 및 붙여넣기 한 후, config.inc.php로 변경한다.


5. 설정 변경을 원하는 필드를 변경 후 config.inc.php파일에 추가한다.

$cfg['McryptDisableWarning'] = true;

$cfg['PmaNoRelation_DisableWarning'] = true;

$cfg['ExecTimeLimit'] = 60;

$cfg['CheckConfigurationPermissions'] = false;


6. 서버에 폴더를 전송한다. 이때 웹서버가 phpMyAdmin을 띄워줄 경로에 폴더를 통째로 올려주면 된다.
(폴더 경로 예시:  /var/www/html)

7.  localhost/phpMyAdmin경로로 접근한 모습이다. 이 화면에서 언어 선택이 가능하다. 
DB계정과 패스워드를 넣고 로그인 하면 된다..


8. 로그인 후 메인 페이지에서는 서버정보 및 php버전 등이 자세히 나와있다. 이 페이지에서 테마 및 언어 설정이 가능하다. 

9. DB를 선택하면 테이블 리스트를 볼 수 있다.



phpMyAdmin은 일단 설치가 매우 간단하고, 인터페이스 역시 직관적이다. 그리고, 오픈소스 툴이지만 업데이트가 활발히 이루어 지고 있다. 또, php로 작성되어있기 때문에 용도에 맞게 커스터마이징이 가능하다. (e.g.사용자 활동로그 저장) 

이상, DB관리 툴인 phpMyAdmin 설치 및 사용하기에 대한 포스트를 마친다.


참조 :

http://www.phpmyadmin.net/home_page/index.php

Posted by 알 수 없는 사용자
,