기타2012. 11. 5. 13:37

trunk
- 기본적으로 개발을 시작할 때 사용하는 디렉토리(소스의 주 개발 작업을 진행하는 폴더)
- 모든 프로그램 개발 작업은 trunk 디렉토리에서 부터 시작
- main, mainline, production의 의미로 사용됨

 

brankches
- trunk 에서 뻗어져 나온 나뭇가지(소스의 실험적인 작업을 진행하는 폴더, 소스의 현재 버전을 유지보수 하고, 현재 버전을 기반으로 차기 버전을 개발할 경우 이 폴더 이용)
- trunk 디렉토리에서 프로그램을 개발하다보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 개발하는 경우.
- 프로젝트 안의 작은 프로젝트
- release 버전과 유지보수 버전을 분리하고 싶을 때 사용
- customizing이나 hot fix 목적으로 분리하여 수정함
- 수정이 계속해서 발생하다가 궁극적으로는 trunk에 merge 되는 것이 일반적임

 

tags
- 꼬리표의 개념.
- 현재 릴리즈된 소스를 관리하기 쉽게 따로 보관하는데 사용. 즉, 개발을 위한 것이 아니라 보관을 위한 것이기 때문에 export만 해야 한다. 체크아웃하여 커밋 할 경우 경고 메시지가 출력된다.
- 프로그램을 개발하면서 정기적으로 릴리즈 할 때 0.1, 0.2, 1.0 식의 버전의 소스를 따로 저장하는 공간
- 한번 만들면 수정하지 않음
- releases, snapshots, baselines의 의미로 사용됨

'기타' 카테고리의 다른 글

WebGL로 구현한 사이트  (0) 2014.10.30
스탠드업 회의  (0) 2013.11.18
앱 개발 시 유념해야할 내용들..  (0) 2012.11.05
Eclipse Plug-in 삭제 방법  (0) 2012.03.12
이클립스 한글 폰트 문제  (0) 2012.02.15
Posted by 미랭군
기타2012. 11. 5. 11:30

품질이 전부다사용자 평가 점수를 높게 받아라 

 

돈을 벌려면 유틸리티 앱을 만들어라 

새로운 아이디어보다 잘 만들어진 무언가가 필요하다. 

 

대형 벤더를 두려워 말라항상 여분의 시장이 있다. 

 

내게 성공을 준 앱은 가장 적은 시간을 들인 앱이었다단순함이 이긴다.

 

기능을 추가하지 말고 할 수 있는 것을 완벽하게 해라 . 

 

유니크해라뭔가 다르면서 고품질이면 반드시 팔린다사용자는 뭔가 다른 것을 선택하길 갈망한다그것을 줘라. 

 

포터블하기 위해 모던하고 신선한 UI를 선택해라사용자는 UI가 섹시하기만 하다면 네이티브인지 따위는 관심없다. 

 

긴여행이다포기하지말고 끝까지 가라.

'기타' 카테고리의 다른 글

스탠드업 회의  (0) 2013.11.18
SVN(subversion) branches, tags, trunk 에 대한 개념  (0) 2012.11.05
Eclipse Plug-in 삭제 방법  (0) 2012.03.12
이클립스 한글 폰트 문제  (0) 2012.02.15
SVN 파일 삭제  (0) 2012.02.13
Posted by 미랭군

Flex에 넘겨주려는 java class엔 setter메소드가 필수로

존재해야 Flex에서 제대로 값을 받아볼 수 있다.

Posted by 미랭군
웹어플리케이션서버2012. 10. 14. 12:15

1. PKCS12 포맷의 키저장소(keystore) 파일 생성

1.1 openssl 을 이용하여 키파일 과 인증서 파일을 생성한다.
- 참조 :
http://dimdim.tistory.com/entry/openssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%83%9D%EC%84%B1

1.2 아래와 같이 openssl 명령어로 생성한 키파일 과 인증서 파일을 이용하여 PKCS12 포맷의 키저장소 파일을 생성한다.
- "-in" 옵션은 인증서 파일
- "-inkey" 옵션은 인증서 생성에 사용된 키파일
- "-out" 옵션은 키저장소 파일
- "-name" 옵션 값은 원하는 이름으로 하면 됨

$ openssl pkcs12 -export -in crt.pem -inkey key.pem -out .keystore -name tomcat

Enter Export Password: #패스워드 입력 (Tomcat설정에 사용됨으로 기억해야 함.)
Verifying - Enter Export Password: #패스워드확인


2. Tomcat 설정
- HTTPS 프로토콜을 제공하기 위한 Connector설정을 server.xml 파일에 추가한다.

<Service name="Catalina">

. . .

<Connector
port="8443" maxThreads="100"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="keystore 파일 경로" keystorePass="keystore 패스워드" keystoreType="pkcs12"
clientAuth="false" sslProtocol="TLS"/>
. . .

</Service>


3. Tomcat 재기동


4. 참고 자료
- JKS 표맷의 키저장소를 사용한 HTTPS 설정 참고자료
- Tomcat HTTPS 설정 참고자료 : http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

Posted by 미랭군
운영체제2012. 10. 10. 10:21

가끔씩 운용 서버에 수정사항을 적용할 때 백업이 필요한 경우가 있다.

다수의 서버가 존재할 경우 업로드 폴더를 심볼릭 링크를 걸어두는 경우가 있다.

이 때 보통 cp 명령을 쓰게 되는데

 

심볼릭 링크까지 그대로 복사하는 옵션은

 

cp -rP 디렉토리명 new디렉토리명

 

-r 디렉토리 복사 옵션

-P 디렉토리 안 특성을 그대로

Posted by 미랭군
자바·JSP2012. 9. 25. 20:52

Java Application은 각각 별도의 jvm process로 동작하므로 상호 통신 및 정보를 주고받기에 여러가지 에로사항이 있다. 그로 인해 현재 동일한 프로그램이 실행되고 있는지를 체크하는 방법이 여러가지가 편법(?)으로 사용되고 있는데, 그 중 몇 가지를 나열해 보자면

1. Database Flag 값 변경.
2. 환경설정 파일 변경 혹은 파일 생성 후 락.
3. 임의의 사용하지 않는 port 할당.

 우선 2번은

      // lock 을 시도합니다.
      lock = channel.tryLock();

      // lock이 null이라는 것은 다른 JVM에서 이미 파일의 lock을 획득했다는 것입니다. 따라서 채널을 종료하고
      // 예외를 발생시켜 runnable의 값을 false로 유지시킵니다.
      if (lock == null) {
        channel.close();
        throw new Exception();
      }

이런 식으로 사용이 가능하다.

 

또 3번은

        try {
            isRun = new DatagramSocket(1103);
        } catch (SocketException e) {
            throw new MonitoringException();
        }

이런 식으로 사용이 가능하겠다.

Posted by 미랭군

<mx:ColumnSeries id="secondSeries" xField="date" yField="name" interactive="false">
   
</mx:ColumnSeries>

'플렉스·플래시·액션스크립트3' 카테고리의 다른 글

BlazeDS와 Tomcat7 최신 버젼 호환성  (0) 2012.11.06
amf 통신 시 규약  (0) 2012.10.29
컬럼챠트에 평균 라인 긋기  (0) 2012.09.18
Event Model의 이해  (0) 2012.08.10
UIComponent Lifecycle  (0) 2012.08.08
Posted by 미랭군


Main.mxml


<?xml version=”1.0″ encoding=”utf-8″?>

<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” >

<mx:Script>

import mx.collections.ArrayCollection;


[Bindable]

public var dataCollection:ArrayCollection = new ArrayCollection([

{Month: "Jan", planned: 2000, actual:1856, average:1790 },

{Month: "Feb", planned: 1590, actual:1624, average:1790},

{Month: "Mar", planned: 1820, actual:1832,average:1790},

{Month: "Apr", planned: 1450, actual:1524, average:1790},

{Month: "May", planned: 1775, actual:1695, average:1790}]);

</mx:Script>


<mx:Panel>

<mx:ColumnChart id=”myChart” dataProvider=”{dataCollection}”

showDataTips=”true”>

<mx:horizontalAxis>

<mx:CategoryAxis dataProvider=”{dataCollection}”

categoryField=”Month”/>

</mx:horizontalAxis>

<mx:series>

<mx:ColumnSeries xField=”Month” yField=”planned” displayName=”Planned”/>

<mx:ColumnSeries xField=”Month” yField=”actual” displayName=”Actual”/>

<mx:ColumnSeries xField=”Month” yField=”average” displayName=”Average”

itemRenderer=”AverageLineRenderer”/>

</mx:series>

</mx:ColumnChart>

</mx:Panel>

</mx:Application>


AverageLineRenderer.as


package

{

import flash.display.Graphics;

import mx.charts.ChartItem;

import mx.charts.series.items.ColumnSeriesItem;

import mx.charts.series.items.LineSeriesItem;

import mx.controls.Label;

import mx.core.IDataRenderer;

import mx.core.UIComponent;


public class AverageLineRenderer extends UIComponent implements IDataRenderer

{

private var _chartItem:ChartItem;

private var _label:Label; // A label to place on the top of the column.


public function AverageLineRenderer():void

{

super();


// Add the label

_label = new Label();

addChild(_label);

_label.setStyle(“color”,0×000000);

}


public function get data():Object

{

return _chartItem;

}


public function set data(value:Object):void

{

if(value is ColumnSeriesItem)

{

_chartItem = value as ColumnSeriesItem;


if(_chartItem != null)

{

// Assigns the yValue to the label

if (ColumnSeriesItem(_chartItem).yValue!=null)

_label.text = “Average: ” + ColumnSeriesItem(_chartItem).yValue.toString();

else

_label.text=”";

}

}

}


override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void

{


if ( _chartItem.index == 0) // Do it only for the first chartItem

{

super.updateDisplayList(unscaledWidth, unscaledHeight);


var g:Graphics = graphics;

g.clear();

g.beginFill(0xFF0000); // Red line, you can select your own color

// Draw the line across the chart. This is actually a rectangle with height 1.

g.drawRect(-20,0,this.parent.width+20, 1);

g.endFill();

//Place the label

_label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight());

_label.move(unscaledWidth ,-15);

}


}

}

}

Posted by 미랭군
게임개발2012. 9. 14. 10:36

http://www.cocos2d-javascript.org/demos/tile-maps

 

애니메이션 캐쉬를 사용하면 쉽게 구현 가능할 듯.

'게임개발' 카테고리의 다른 글

[GCITY] 등속운동 관련 로직 정리  (0) 2012.03.29
Posted by 미랭군
HTML52012. 9. 14. 10:21

What’s New?

 

 

Sencha Touch 2.1 is our next release of the Sencha mobile framework. This release includes the following key upgrades: significant performance improvements, an advanced list component, enhanced native support through the Sencha Mobile Packager and an integrated charting support.

 

 

Improved Performance

 

 

In Sencha Touch 2.0 some of our developers experienced nested layout performance issues. Our investigations found that by isolating panels and providing more known layout information to the browser the framework and your application will perform faster. We have included this solution in the Touch 2.1 release. The API impact of the change is minimal, but the performance improvement is dramatic.

 

Advanced List component with Infinite scrolling

 

 

Former implementation

 

 

1. Only 1 additional item is loaded
2. The component is recycled through the list with refreshed content

 

 

 

new List component is included with this release. This implementation replaces the old list component and is no longer bound one-to-one between a store and DOM elements. This means that the length of the list will no longer have a bearing on it's scrolling performance. In addition, lists can use components if you specify them with an itemConfig and itemTpl will be converted to an itemConfig dynamically if you specify one. Due to these changes, the DOM structure was altered for lists, and you may need to change some CSS selectors to add appropriate styling for your lists. Typically, you need to change the selector from '.x-list-item' to '.x-list-item > .x-dock-vertical > .x-dock-body' for any padding or margins you may have added. We changed the TouchTweets example with the new implementation; instead of using a component based DataView, it now uses the new List. It’s a good example of using the new List component with dynamic large lists.

 

Enhanced Native Support through the Sencha Mobile Packager

 

The Sencha Mobile Packager is included in the the Sencha Cmd, previously known as the SDK tools. In this release, we have enhanced native support. For iOS, you can configure your Sencha Touch apps to use the iOS in-app purchase system and native push notifications. Also, you can open another installed application directly within a Sencha Touch app through an open URL call. In previous releases, the native packager allowed you to deploy the app directly to the iOS simulator. We have now added the capability to directly deploy apps to the iOS devices. For Android, you can configure your app upgrade without version changes using the new versionCode key. And for both iOS and Android, you can now access the native contacts API. The packager config also lets you pass in "raw" data to the iOS info.plist and Android AndroidManifest.xml through the rawConfig key. We also heard your feedback about non-admin access to the native packager, and we have updated the setup so admin accounts aren’t required. Another major enhancement is that we’ve given you the ability to write plug-ins for the Sencha Mobile Packager, so you can extend the packager capabilities to fit your needs.

 

 

Sencha Touch Charts

 

 

We have extended Sencha Touch Charts support in Sencha Touch 2.1. Please refer to the Sencha Touch Charts article for more exciting news about Sencha Touch Charts.

 

 

Availability

 

 

Sencha Touch 2.1 is in beta. Please give it a try and let us know if you have any feedback. Watch the Sencha Touch Forum for any release update.

 

 

 

 

보시다시피 기존에는 리스트 컴포넌트에서 store에 데이터와 dom을 1:1 매핑 시켰기 때문에 데이터가 늘어나면 느려지는 현상이 있었는데 dom은 제한 시키고 재사용함으로써 성능을 향상시킨다고 하네요.

 

또 터치챠트도 2.1에선 호환되게 만든다고 하는군요..

 

리스트쪽이 느려서 계속 쓸지 말지 고민했는데 지켜봐야겠네요:)

 

 

관련 주소는 여기를 참조.

http://www.sencha.com/blog/whats-coming-in-sencha-touch-2-1?mkt_tok=3RkMMJWWfF9wsRokuazPZKXonjHpfsX87O8pUKazlMI%2F0ER3fOvrPUfGjI4ESsN0dvycMRAVFZl5nR9dFOOdfQ%3D%3D

 

 

베타 다운로드는 여기를 참조.

 

http://www.sencha.com/forum/announcement.php?f=105&a=36

Posted by 미랭군