Monday, January 02, 2012

Learning Issue Tracking System - Overview

 

 이슈란 무엇인가?

  이슈(Issue, 혹은 Problem)은 프로젝트 진행에 차질을 가져올 수 있는 “발생된(Realized)” 위험으로 정의된다.
물론 미리 예상해 두지 못했던 문제점(Issue)도 있을 수 있다.
이슈는 하고 싶은 것이 될 수도 있고, 요청하는 것일 수도 있고, 삭제해야 할 것, 기본에 잘못된 부분에 대한 알림 등 다양한 주제가 될 수 있다.

 이슈관리 시스템이란 무엇인가?

  이슈 관리 시스템은 버그, 요구사항, 작업내용 등이 있을 때 해당 시스템에 게시물 형태로 올리고 개발자, 테스터들이 작업 진행상황을 기록하는 시스템을 말합니다.

  일반적으로 인터넷상의 게시판과 비슷한 형태이며, 해당 이슈(버그,요구하상, 작업 내용 등)에 대한 제목에, 이슈형태, 담당자, 프로그램 버전, 우선순위 등의 속성을 지정하고 내용을 올립니다.
  이슈에 대한 작업이 진행되면 작업 결과를 답글 형식으로 올립니다. 하나의 이슈에 대한 작업이 끝나면 이슈를 닫습니다(Close). 이미 해결한 이슈지만 문제가 생겼을 경우 다시 열수 있습니다( Reopen). 또는 보류(Pending)할 수도 있습니다.

 대표적인 이슈 관리 시스템

  이슈관리시스템은 대부분 버그관리시스템(Bug Tracking System, BTS)에서 출발하였으나, 단순히 버그 뿐 아니라, 다양한 이슈를 관리할 수 있도록 의미가 확장되고 되었다.  이슈관리시스템 혹은 버그관리시스템으로는, Bugzilla, Trac, Mantis(이상, Open Source),  Jira (상용)등이 있다.

Learning Souce Code Control System (1) - Overview

 

현재 나와 있는 소프트웨어 버전 관리 시스템의 종류

  • CVS (Concurrent Version System) : 가장 널리 사용되며 역사가 깊은 버전 관리 시스템입니다. http://www.cvshome.org
  • Subversion : CVS의 단점을 개선하고 CVS를 대체할 목적으로 개발 되었습니다. 이 문서에서 설명할 버전 관리 시스템입니다. http://subversion.tigris.org
  • Visual Sourcesafe : Microsoft에서 만든 버전 관리 시스템입니다. CVS와는 버전 관리 관점에서 조금의 차이점이 있습니다. 윈도우 기반 소프트웨어의 버전 관리를 할 때 자주 사용됩니다.http://msdn.microsoft.com/ssafe/
  • Clear Case : Rational이라는 회사에서 만든 버전 관리 시스템입니다. 지금은 IBM에 합병되었습니다. 상용 소프트웨어입니다. http://www-306.ibm.com/software/rational
  • BitKeeper : 리눅스 커널이 BitKeeper를 이용해서 개발 하고 있습니다. 상용 소프트웨어입니다. http://www.bitkeeper.com

- From Subversion 사용 HOWTO(http://www.pyrasis.com/main/Subversion-HOWTO)

여기에 덧붙여서, 요즘의 대세는 Git라는 분산기반 버전관리 시스템이 인기를 끌고 있음.

Web based collaborative project management tools (2) - Trello

 

  예전에 LightHouse라는 Web 기반의 프로젝트 매니지먼트 사이트를 소개한 적이 있었는데 (링크 참조),  이번에는 다른 분의 소개로 Trello라는 비슷한 류의 프로그램을 소개하고자 합니다.

  Trello 사이트 바로 가기

  장점은, 복잡한 일정관리 기반이  아닌 사람과, Task 단위로 직관적으로 관리할 수 있다는 점, 그리고 요새 대세에 걸맞게 Mobile Web 버전을 지원하고, 댓글 등 협업 시스템으로 갖춰야 될 기능들을 쉽고, 직관적으로 지원해준다는 점임.

  단점은, 심플한 대신 복잡하고 거대한 프로젝트 관리에는 좀 맞지 않는다는 점? 카테고리 분류 등이 안 된다는 점등이 단점임.

Tuesday, October 04, 2011

Buliding Media Streaming Service (1)

 

1. To use regacy DLLs for new web services, you have to use Microsoft WebSerivces. Belows are sample links for using DLL for webservices.

   http://ndolson.com/243

   http://blog.naver.com/PostView.nhn?blogId=eve99eve&logNo=130076023441

2. To provide video streaming service via Web, normally a server is deployed by Windows Media Server because of simplicity of deployment and setting. A sample is as below.

  http://blueamor.tistory.com/712

3. Building web interface and web player

  - if users use a HTML5 supported browser, it’s simple. Just use <video> tag with mpeg4 or webM. However, most of web browsers what user used are IE6 and IE7. So a flash video solution is only option to provide direct web streaming services. Most of them are commercial solutions, but Jaris FLV Player is a opensource and its licence is GPL.

 http://sourceforge.net/projects/jaris/ or http://jarisflvplayer.org/

  - Simple way to implementation using PHP and Flex

 http://www.hanb.co.kr/network/view.html?bi_id=1401

 http://onlamp.com/pub/a/php/2007/05/24/creating-mytube-with-flex-and-php.html : It’s same, but original link (English)

OpenCV Development & Testing (1)

 

1.  Installing the Open CV

   - http://opencv.willowgarage.com/wiki/  : Open CV Homepage contained the S/W and documents.

     : I downloaded the Open CV 2.3.1 Windows Installation Version

2. Setting configurations on Visual Studio 2010

   - Put below include directories on Project –> <ProjectName>Properties->VC++ Directories->Include Directories

      : C:\Program Files\opencv\build\include\opencv, C:\Program Files\opencv\build\include\opencv2, C:\Program Files\opencv\build\include\

   - Put library directories on Project –> <ProjectName>Properties->VC++ Directories->Library Directories

     : C:\Program Files\opencv\build\x86\vc10\lib

  - Add Open CV libraries on Project –> <ProjectName>Properties->Linker->Input

     : opencv_core231d.lib; opencv_contrib231d.lib;  opencv_calib3d231d.lib; opencv_features2d231d.lib; opencv_flann231d.lib; opencv_gpu231d.lib; opencv_haartraining_engined.lib; opencv_highgui231d.lib; opencv_imgproc231d.lib; opencv_legacy231d.lib; opencv_ml231d.lib; opencv_objdetect231d.lib; opencv_ts231d.lib; opencv_video231d.lib;   

  - Add the directory of the included Open CV DLLs into %path% on Start->My Computer->Properties->System Environments

     : C:\Program Files\opencv\build\x86\vc10\bin

      --> it was important because if not, you have to copy & paste all DLLs into project directory

3. Download TBB dlls

   -   A pre-compiled Open CV 2.3 only includes tbb.dll not tbb_debug.dll. Therefore, download it from the below link and put all of dlls and libs to the open cv bin folder.

       : http://threadingbuildingblocks.org/file.php?fid=77 : Intel TBB download site.  

 

PS. ‘CvvImage’ class isn’t defined over Open CV 2.2 versions

  - Because its member functions, Load() and CopyOf() have some bugs.

    : If you want to use it, you have to use under 2.1 versions. Moreover, you have to fix bugs used the below link.

      http://goo.gl/YCM43

Monday, February 14, 2011

"Always On” Connection on WCDMA (From R9 to HSPA+)

 

Application단에서 Push Service를 구현해서 실행하게 되면, 단말의 PHY/MAC Layer단과 기지국과의 Comm.은 WCDMA Protocol을 통해 전송됨.

기본적으로 WCDMA는 최초 Spec. 작업 때부터 Alway-on 모드를 지원하도록 기획되었으나, 이건 어디까지나 권고사항일뿐 강제사항이 아니라서, WCDMA 기지국 제조업체 별로 실제 동작은 매우 다름

WCDMA에서 TCP를 포함한 Data Packet 전송을 위해서, 다음의 3개의 채널을 이용하게 됨.

1. PCH (Paging Ch.)

2. FACH (Forward Access Ch.)

3. DCH (Dedicated Ch.)

1번을 사용할수록 데이터 전송율을 낮지만, 단말의 베터리 소모가 줄어드는 장점이 있음. 그러나 일반적인 패킷들은 주로 DCH를 통해 전송되게 되므로 베터리 소모가 많음. 또한 Polling이나 KeepAlive 패킷으로 인해 Uplink Traffic이 증가되면, Noise에 민감한 CDMA 특성상 Cell내의 전체 트래픽 용량도 줄어드는 문제점이 생김.

이와 관련된 자세한 내용은 아래 논문을 참조.

 Energy Consumption of Always-On Applications in WCDMA Networks 

 

이를 해결하기 위해, HSPA+에서는 CPC (Contineous Packet Connectivity) 모드가 추가됨.

자세한 내용은 아래 PDF 문서를 참고함.

 http://www.3g4g.co.uk/Hspa/HSPAE_Pres_0811_Andreas.pdf

 

하지만, HSPA+망 구축은 이제 시작하는 단계이므로, 여전히 HSDPA/HSUPA 망에서는 Always-on Connection에 의해 망의 부하가 여전함.

(참고로 Gallaxy S도 HSUPA까지 지원 (MSM 6290), 단 Gallaxy S2는 HSPA+ 지원한다는 루머가 있음)

특히 Push Server에서 Fail이 발생할 경우, iOS의 APNS에서는 Noti를 주지 않으면 그뿐이지만, Android에서는 그런 게 없으므로, 단말에서 계속 Connection Try를 수행하므로 망에 심각한 부하를 줄 수 있음.

이에 대한 해결책은 아직 뾰족한 방안이 없는 것으로 앎.

Friday, February 11, 2011

Push Notification on iOS & Android

 

  Apple은 Push Notification을 Apple 내부에 별도의 APNS (Apple Push Notification Service) 서버를 이용하는 방식으로 Push App. 개발을 지원함.

  이를 이용한 개발방법은 아래 블로그를 참조

  애플 아이폰 푸시알림 서비스 (APNS, Apple Push Notification Service)

 

  Android는 2.2 (Proyo) 버전부터는 APNS와 유사한 C2DM (Android Cloud to Device Messaging Framework) 서버를 제공함.

이에 대한 자세한 내용은 아래 링크를 참조

  Google Projects for Android: C2DM

  하지만, Android 2.1 이하 버전에는 Push Server가 존재하지 않는데, 아래 통계에서 보듯이 2.2 이하 버전의 점유율이 여전히 42%에 육박함.

           [Current Distribution of Android Platform Versions]

        Data collected during two weeks ending on February 2, 2011

 

  따라서, 2.1이하의 하위 버전에서의 Push Service 구현에 대한 고려가 필요하며, 이를 위한 방안은 아래 링크를 참조함.

  How to Implement Push Notifications for Android

  이를 간략히 요약하면, Polling, SMS Notification, Persistent TCP/IP 방식이 있으며,

  1. Polling은 real-time도 아니고 resource가 많이 필요하다는 문제점이 있고,

  2. SMS Notification은 SMS 발송 비용 문제가 크며,

  3. Persistent TCP/IP는 그나마 나으나, 제대로 구현하기 어렵다는 문제가 있음

  그래서, 위 블로그에서 추천하는 방법은 3번을 제대로 구현한 MQTT를 이용하는 방식임.

  MQTT에 관련된 내용은 아래 링크 참조

  IA92: WBI Brokers - Java implementation of WebSphere MQ Telemetry transport

Monday, January 17, 2011

오래간만에 짜본 VBA 스크립트 (2) - 엑셀 셀 색깔 칠하기


셀 내의 숫자의 크기에 따라서 상대적인 색깔 찰하기

Sub cellPaint()
Dim max As Integer
Dim rows As Integer
Dim cols As Integer
Dim colors As Integer

rows = 31
cols = 12
max = 0

For i = 4 To rows
For j = 6 To cols
If max < Cells(i, j) Then
max = Cells(i, j)
End If
Next j
Next i

For i = 4 To rows
For j = 6 To cols
Select Case Int(Cells(i, j) / (max / 6))
Case 0
If Cells(i, j) > 0 Then
colors = 19
Else
colors = 2
End If
Case 1
colors = 15
Case 2
colors = 48
Case 3
colors = 16
Case 4
colors = 56
Case Is > 4
colors = 1
End Select

Cells(i, j).Interior.ColorIndex = colors
Next j
Next i
End Sub

오래간만에 짜본 엑셀 VBA 스크립트


오래간만에 필요에 의해서 작성한 VBA 스크립트..
간단하게..특정 문자열에서 특정 문자가 몇 개나 나오는지를 카운트하는 소스..

Function countchar(src As String, ch As String) As Integer
Dim count As Integer
Dim findIndex As Integer

findIndex = InStr(src, ch)
count = 0

If Len (src) > 0 Then
count = 1
If findIndex > 0 Then
Do While findIndex > 0
count = count + 1
findIndex = InStr(findIndex + 1, src, ch)
Loop
End If
End if

countchar = count
End Function

오래간만이라 그런지 do while 문법도 제대로 기억나지 않았다는거..-_-;;

TED 2010 : Gary Flake: is Pivot a turning point for web exploration?







TED.com 을 돌아다니다가 발견한 강의..

Pivot이라는 프로그램을 만든 MS의 직원이 기능을 소개하는 동영상인데, 웹에서 정보를 보여주기 방안으로 생각해볼만한 여지가 있는 아이디어인것 같아서 링크함.

사실 엄청난 양의 이미지 파일과 동영상과 로그와 데이터가 쌓이는데 반해, 이를 효율적으로 보여주기 위한 방안은 별로 없는 것 같다. 즉, 파일탐색기+미리보기 정도가 대부분이다보니, 애플의 멀티터치 UI에 많은 사람들이 새로움을 느꼈던 거고..

어째거나 Pivot은 Zoom-in, Zoom-out을 활용한 UI 인데..이를 잘 활용하면..특히나 쓰레기처럼 쌓이는 로그 정보나 History 정보를 볼 때 유용할 것 같다. 강의자도 그렇게 생각하는 것 같고..

그렇다면..이런 UI가 필요한 곳이 어디인가를 고민해봐야겠지??