데이터베이스2013. 1. 8. 13:27

1.MSSQL JDBC 드라이버 받기.


http://www.microsoft.com/ko-kr/download/details.aspx?id=11774

위 링크에서 exe 파일을 받은 후 풀고싶은데다 압축을 푼다.

 

2. lib에 다운받은 압축파일 추가 하기


압축을 푼 파일을 보면 \sqljdbc_2.0\enu 안에 sqljdbc.jar 과 sqljdbc4.jar이 있는데

얘네를 lib에 추가해줘야 한다.

sqljdbc.jar 과 sqljdbc4.jar의 차이는 jre와 jdk의 버전 차이다.

jre6.0이상이라면 sqljdbc4를 써야한다.

만약 버전이 뭔지 모르겠다면 그냥 아무거나 해본다.

자바가 버전 안맞다고 어떤거 쓰라고 에러 출력해준다.

버전에 맞는 파일을 복사하여 자신의 webapps의 lib에 넣어준다.

 

3. 주의점

- JRE 6.0.29 버젼에서는 커넥션은 맺어지나 sql이 실행되지 않는 오류가 발생한다. 다른 버젼에서는 잘된다.

'데이터베이스' 카테고리의 다른 글

DBMS별 문자열 합치기  (0) 2013.06.12
sql developer 한글판 영문으로 바꾸기  (0) 2013.03.11
초 단위 출력  (0) 2012.11.20
Tomcat DBCP를 사용해야 하는 이유  (0) 2012.09.03
Tomcat DBCP 설정법  (0) 2012.09.03
Posted by 미랭군
운영체제2013. 1. 2. 09:51

보통 tar 와 gzip 을 동시에 사용하는 경우..

솔라리스에서는 다음과 같이 하면 된다.

파일명 대신 - 를 사용하고, 파이프라인을 이용해서 gzip 의 입력으로 처리한다.

그리고 결과를 > 를 이용하여 File로 저장한다.

tar cvf - directoryname | gzip > file.tar.gz

원문 : http://www.solarisschool.com/qna_new/view.html?board=qna1&no=22280

1. file.tar.gz 푸는 방법

1) tar xvfz file.tar.gz
2) gunzip file.tar.gz; tar xvf file.tar
3) gunzip < file.tar.gz | tar xvf -
세가지 다 됩니다. 첫번째의 문제는 xvfz에서 z옵션이 GNU tar가 아니면 먹히지 않는다는거죠. 나머지는 어느버전의 tar던 다 먹힐겁니다.

솔라리스 9에서는 /usr/bin/tar 에 있는건 솔라리스용 tar구요, /usr/sfw/bin/gtar 에 있는건 GNU tar입니다. SUN Freeware에서 패키지 받으셨다면 보통 /usr/local/bin/tar 에 GNU tar가 있을겁니다.

.tgz라는 확장자도 있는데 이건 .tar.gz의 준말입니다.

2. 압축하는 방법은

1) tar cvf file.tar directoryname 하시면 directoryname에 있는 모든 파일이 file.tar 라는 파일로 합해집니다. 이후 gzip file.tar 하시면 file.tar.gz라는 파일이 생성됩니다. gz은 gzip을 의미합니다.
2) tar cvf - directoryname | gzip > file.tar.gz
3) tar cvfz file.tar.gz directoryname

모두 같은 결과입니다.

3. 체크섬 오류는 예전 솔라리스 tar에서 긴 파일 이름을 제대로 지원 못해서 나는 오류였는데요, 지금은 고쳐졌습니다만, 그래도 전 GNU tar를 사용합니다.

'운영체제' 카테고리의 다른 글

Zmodem 실행시 rz 없다는 메시지 나올때 처리  (0) 2015.10.06
솔라리스 cp 명령  (0) 2012.10.10
Posted by 미랭군
HTML52012. 12. 4. 11:00

var isMobile = {
    Android: function() {
        return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

example

if(isMobile.any()) {
  
//some code...
}

if( isMobile.iOS() ) alert('iOS');

 

만약 모바일이라는 의미가 작은 스크린을 의미한다면..

var windowWidth = window.screen.width < window.outerWidth ? window.screen.width : window.outerWidth;
var mobile = windowWidth < 500;

 

이렇게 간단한 로직을 추가해도 좋을 듯 하다.

'HTML5' 카테고리의 다른 글

Handsontable 한글 문제  (0) 2014.08.13
부트스트랩 관련 블로그  (0) 2013.08.13
What’s Coming in Sencha Touch 2.1  (0) 2012.09.14
다양한 Javascript Lib 소개  (0) 2012.08.02
[Sencha Touch2] MitchellSimoens Touch Grid..  (2) 2012.04.04
Posted by 미랭군

맨날 쓰면서도 자주 실수하는 부분이 바로 아이템 렌더러 재사용 문제를 간과하는 것이다.

<?xml version="1.0" encoding="utf-8"?>
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx"
          focusEnabled="true"
          >
 <fx:Script>
  <![CDATA[
   
   import com.utils.ColorUtil;
   
   override public function set data(value:Object):void
   {
    // not sure of the details on when or why, but sometimes this method is passed a null value
    if(value != null)
    {
     super.data = value;
     
     // set itemRenderer's state based on data value
     var strAlmLvlCri :String = "1";
     var strAlmLvlMaj :String = "2";
     var strAlmLvlMin :String = "3";
     var strAlmLvlWarn:String = "4";
     
     if(listData.label == strAlmLvlCri) { // Critical
      fillColor.alpha = 1;
      fillColor.color = ColorUtil.getArmLvlInfo(strAlmLvlCri).NUM_COLOR;
      lblData.text = ColorUtil.getArmLvlInfo(strAlmLvlCri).NAME;
     } else if(listData.label == strAlmLvlMaj) { // Major
      fillColor.alpha = 1;
      fillColor.color = ColorUtil.getArmLvlInfo(strAlmLvlMaj).NUM_COLOR;
      lblData.text = ColorUtil.getArmLvlInfo(strAlmLvlMaj).NAME;
     } else if(listData.label == strAlmLvlMin) { // Minor
      fillColor.alpha = 1;
      fillColor.color = ColorUtil.getArmLvlInfo(strAlmLvlMin).NUM_COLOR;
      lblData.text = ColorUtil.getArmLvlInfo(strAlmLvlMin).NAME;
     } else if(listData.label == strAlmLvlWarn) { // Warning
      fillColor.alpha = 1;
      fillColor.color = ColorUtil.getArmLvlInfo(strAlmLvlWarn).NUM_COLOR;
      lblData.text = ColorUtil.getArmLvlInfo(strAlmLvlWarn).NAME;
     } else { // etc
      fillColor.alpha = 0;
      lblData.text    = "";
     }
    }
   }
  ]]>
 </fx:Script>
 <s:Rect left="0" right="0" top="0" bottom="0">
  <s:fill>
   <s:SolidColor id="fillColor" alpha="1" />
  </s:fill>
 </s:Rect> 
 <s:Label id="lblData" horizontalCenter="0" verticalCenter="0"/>
</s:MXAdvancedDataGridItemRenderer>

자주 쓰는 아이템 렌더러 형태이다. 빨간색 부분을 FLEX에서는 메모리 효율성을 위해 재사용을 한다.

그런데 문제가 되는 부분은  파란색 부분이다. if, else if, else 이런 식으로 예외처리까지 되어있을 경우에는 상관이 없다.

하지만 if, else if까지만 되어있다면 이에 해당되지 않는 내용이 들어왔을 때는 기존에 상태를 그대로 기억하고 있다.

이 문제를 해결하기 위해서는 초기화를 해주거나 위 예제와 같이 else처리를 해서 예외가 없도록 처리 해줘야한다.

 

Posted by 미랭군
public static function createRendererWithProperties(renderer:Class,
properties:Object ):IFactory {
  var factory:ClassFactory = new ClassFactory(renderer);
  factory.properties = properties;
  return factory;
}

<mx:List dataProvider="{['Foo', 'Bar']}" itemRenderer="{createRendererWithProperties(Label, {toolTip: 'Hello'})}"/>

Posted by 미랭군

var dgCol:DataGridColumn = new DataGridColumn();
var factory:ClassFactory = new ClassFactory(ReportHTMLRenderer)
//here's where you can set a property in the itemrenderer...
factory.properties = {field:"some value"};
dgCol.itemRenderer = factory;


Here's the ItemRenderer class (ReportHTMLRenderer)...

package myComponents
{
import flash.errors.*;
import mx.controls.*;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.IFactory;

public class ReportHTMLRenderer extends Text implements IFactory, IListItemRenderer
{
private var _data:Object;
private var _field:String = new String();

public function ReportHTMLRenderer(){
super();
this.percentHeight = 100;
this.percentWidth = 100;
}

public function newInstance():*{
return new ReportHTMLRenderer();
}

override public function set data(value:Object):void{
this._data = value;
this.htmlText = parseData(_data);
}

public function set field(str:String):void{
this._field = str;
}

private function parseData(item:Object):String{
try{
var xml:XML = XML(item);
var nodeName:String = _field;
return decodeURI(xml.child(nodeName).text());
}catch(e:Error){
return e.message;
}
}

}

 

출처: http://www.remwebdevelopment.com/dev/a11/Passing-Values-to-a-Custom-ItemRenderer.html

Posted by 미랭군

  public static const SEC_PER_MINUTE:int = 60;
  public static const SEC_PER_HOUR:int = 3600;
  public static const MINUTE_PER_HOUR:int = 60;
  public static const SEC_PER_DAY:int = 86400;

  var input:Number = item.sysUptime;

     var day:int;
     var hour:int;
     var min:int;
     var temp:int;
     
     day = input / Constants.SEC_PER_DAY;
     hour = input % Constants.SEC_PER_DAY / Constants.SEC_PER_HOUR;
     min = input % Constants.SEC_PER_HOUR / Constants.SEC_PER_MINUTE; //시간단위로 나눌 수 없는 나머지 초는 분 단위로 표시 가능
     if(day > 0) {
      sysUptime =day + "일 " + hour + "시 " + min + "분";
     } else if(hour > 0) {
      sysUptime = hour + "시 " + min + "분";
     } else {
      sysUptime = min + "분";
     }

 

Posted by 미랭군
데이터베이스2012. 11. 20. 17:32

오라클에서 날짜의 간격을 초단위로 출력하는 방법이다.

코드에서 처리하지 않고 쿼리로 처리하여 간편하게 처리 할 수 있다.

TO_NUMBER((SYSDATE - WORKDATE) * (24 * 60 * 60))

SYSDATE : 시스템의 시간 초단위까지 나온다.

WORKDATE : 시스템을 날짜를 저장한 컬럼

우선 시스템의 시간으로부터 내가 저장한 시간을 뺀다. 둘다 DATE형이기때문에 형변환 없이 계산이 된다.

그렇게 계산을 하면 0.087263871623 처럼 값이 나오게 된다. 정확히 무슨 계산을 해서 저런 값이 나왔는지 분석은 해보지 않았지만

그 값에 하루를 초로 나타낸 값 (24 * 60 * 60)을 곱해주면 초단위로 출력이 가능하다.


SELECT

TO_NUMBER((SYSDATE - WORKDATE) * (24 * 60 * 60))

FROM

테이블명 . . .

 

'데이터베이스' 카테고리의 다른 글

sql developer 한글판 영문으로 바꾸기  (0) 2013.03.11
MS SQL JDBC 등록 방법  (0) 2013.01.08
Tomcat DBCP를 사용해야 하는 이유  (0) 2012.09.03
Tomcat DBCP 설정법  (0) 2012.09.03
MyBatis 문자열 대체 방법  (0) 2012.08.24
Posted by 미랭군
리눅스2012. 11. 14. 11:32

사용자 계정 생성 및 암호 설정(useradd, passwd)


useradd
[옵션] [인자값] ... 사용자 계정(로그인 계정)
[옵션]
-D : (디렉토리) 기본값으로 사용자 계정의 홈 디렉토리 <-- [root@www ~]# cd /home/생성한 사용자 계정
-c : (설명) 사용자 설명글 추가
-e : (유효기간) 지정된 날짜에 사용자의 계정을 삭제
-f : (비활성일 수) 패스워드가 만기된 후 계정이 영구히 말소될 떄까지의 기간
-u : (uid) 사용자 UID에 대한 값
-s : (shell) 사용자 로그인 쉘을 지정
-n : 사용자 계정 추가 기본 모드를 지정하지 않을 때
-g : (그룹) 그룹을 지정하면 지정한 그룹에 속하게 된다.
-G : (그룹,...) 사용자가 기본 그룹 이외의 다른 그룹에 추가하고자 할 떄
-M : 사용자 디렉토리없이 계정 생성

passwd 사용자 계정(사용자 계정이 root라면)

사용자 계정 속성 변경(usermod)

usermod [옵션] [인자값] ... [계정명]

 

etc/passwd에 저장된 정보 보는 법

root : 사용자 계정(이름)
x : 사용자 계정의 비밀번호 (암호화방식이면 x로 표시, /etc/shadows 파일에 암호화되어 있다.)
0 : 사용자 계정 ID(uid)
0 : 사용자 계정이 소속된 그룹 ID(gid)
root : 사용자 계정의 설명(정보)
root : 사용자 계정의 홈 디렉토리
/bin/bash : 사용자 계정의 로그인 쉘

 

Posted by 미랭군

최근 버젼(7.0.32)에서 streaming-amf채널을 사용하려고 했으나 제대로 데이터를 받지 못해서 관련 정보를 좀 찾아봤다.


http://forums.adobe.com/thread/777748


위 질답에서 보면 알 수 있듯이..

어도비에서 BlazeDS와 FlexSDK 등을 오픈소스로 아파치에 기증하면서 공식적인 지원과 업데이트가 끊긴 듯하다..


보안문제때문에 tomcat을 하위버젼(7.0.22까지는 지원)으로 유지할 수도 없는 노릇이고..


그냥 socket으로 직접 연결해서 실시간 데이터를 주고 받아야 할 듯 싶다..



Posted by 미랭군