위와 같이 작성한 다음 잘 사용하시면되욥 ^^

윈도우 같은 경우는 %20가 있어서 약간 난감 했네욥 ㅋ

참조 : http://blog.naver.com/tyboss?Redirect=Log&logNo=70022204104 (거의 같은 ㄷㄷㄷ)

'etc > old' 카테고리의 다른 글

iBatis에서의 CLOB, BLOB 처리  (0) 2008.12.19
8080 포트를 이용하는 Oracle XDB  (0) 2008.12.18
JAVA GUID 생성  (0) 2008.12.15
PhotoShop에서 ICO 파일 만들기  (0) 2008.12.15
syntaxhighlighter를 tistory에 설치 하는 방법  (1) 2008.12.12
출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106&eid=eQ+Fwqr9PLwtptT4SPXRxluQhVTpPj1n&qb=amF2YSB1aWS7/by6&pid=fRUz0doi5Tlssus86FVsss--244176&sid=SUWx-imQRUkAAA5a9EE

GUID 생성을 위해서 필요한 정보는 아래와 같습니다.

1. 네트워크 카드의 MAC-Address (IP는 유니크 하지 않습니다.)
2. 현재 실행중인 프로세스의 OS Process ID
3. 현재 timestamp

MAC-Address 는 정말 누가 독한 맘먹고 랜카드를 복제하지 않는 이상 같을리가 없고(이로서 global unique 를 보장), 같은 머신에서 두개의 프로세스가 동시에 GUID를 생성하기를 원할 경우 MAC-Address 가 같고, timestamp도 같을 수 있기 때문에 unique 하지 않을 수 있으므로 여기에 OS Process ID (동일 시점에 두 개의 프로세스 ID가 같을 수 없음)를 합하여 계산하게 됩니다.

그런데 불행이도 자바는 네트워크 카드의 MAC-Address 를 가져올 수 없습니다. 또한 OS Process ID 도 얻어올 수 가 없죠. 그래서 흔히 구현할때는 가상으로 MAC-Address 와 OS Process ID 를 만들어서 사용합니다. 랜덤 + 현재 VM의 메모리 사용량 등등을 합해서 만들어 내죠. 궂이 MAC-Address와 OS Process ID를 얻어오려 한다면 JNI를 통해서 얻어 올 수는 있겠지만, 플랫폼 독립성을 보장하지 못하게 되는 관계로 잘 사용하지 않습니다.

꼭 '6B0FCF35-CE68-455e-915F-C57216859C19' 이런 형태의 32 hexa digit가 아니어도 된다면 자바에 있는 VMID를 사용하시는건 어떨가요? 얘도 나름대로 unique 한 ID이므로 사용해도 큰 문제는 없으리라 보여지네요.

사용 방법은 아래와 같습니다.

public class VMIDTest {
    public static void main(String[] args) {
        System.out.println(new java.rmi.dgc.VMID());
    }
}

[실행결과]

c:\>java VMIDTest
a6ff8bdc52b59dca:1e63e3d:fbcef79841:-8000


RMI 쪽에서 사용하기 위해 만들어진 클래스이구요. RMI를 지원하는 JVM이라면 모두 갖고 있을 것입니다. 꼭 32 hexa digit로 만들어서 MS에서 사용하는 방식으로 쓰셔야 겠다면 VMID를 얻어내어 적당히 잘라서 사용하시면 될 것 같습니다.

중간에 콜론(:)을 제거하고, 32자리만 잘라서 적당히 하이폰(-)을 넣어서 사용하시면 되겠죠.

VMID is a identifier that is unique across all Java virtual machines. VMIDs are used by the distributed garbage collector to identify client VMs.

이렇게 자바 API 문서에 적혀있는데요. 모든 자바 VM을 통틀어 유니크함을 보장하므로 이와 비슷한 java.rmi.server.UID 보다 더 유니크 합니다. ^^; UID도 쓸만은 하지만 일단 VM을 가로질러 유니크함을 보장해주지는 못하니깐요.

근데 VMID도 소스를 살펴보면 아시겠지만, 정말 글로벌 유니크는 보장하지 못합니다. 이유인 즉슨 얘도 로컬 IP 주소를 얻어와서 계산을 하기 때문에.. IP는 얼마든지 같을 수 있으므로 그런 것이죠. 하지만 어차피 pseudo 하게 MAC-Address를 만들어내나 그거나 같기 때문에 그냥 사용하셔도 될듯 하네요.

편안한 밤 되세요~


1. http://www.telegraphics.com.au/sw/ 사이트에 접속하여 아래 파일을 다운 받습니다.

2. 다운 받은 파일을 8bi가 있는 폴더에 넣기.
예시) CS4
C:\Program Files\Adobe\Adobe Photoshop CS4\Plug-ins\File Formats

에 조금전에 다운 받은 ICOFormat.8bi 파일을 넣어줍니다.

3. 파일 저장시 SaveAs - ICO를 선택하여 저장하면 완료 흐...

public static void main(String args[]){
  new Test();
}


다운 및 설치 방법 (영문) : http://code.google.com/p/syntaxhighlighter/

자세한 설치 방법은 (한글) .... http://gyuha.tistory.com/193

출처 : http://kimgisa.net/241

자바에서는 unsigned 형이 없다.
0xF8 는 부호를 무시하면 248이지만, byte형에서는 부호비트가 고려되어 -8로 출력된다.

   byte b = (byte)0xF8;
   System.out.println(b);
   ----
   결과
   ----
   -8

원하는 결과를 얻기위해 이 byte형 변수 b를  int형 변수에 그냥 대입하게 되면,
역시 -248이 출력된다.

   byte b = (byte)0xF8;
   int i = b;
   System.out.println(i);
   ----
   결과
   ----
   -8


일반적인 대입의 경우 산술적인 형확장이 일어나기 때문에 부호비트가 고려되며
byte의 첫번째 비트인 부호비트는 int형으로 형확장되면서 부호가 그대로 적용된다.

원하는 결과인 248을 얻으려면 다음과 같이 하면된다.

   byte b = (byte)0xF8;
   int value = b & 0xFF;
   System.out.println(value);
   ----
   결과
   ----
   248


그러나, 비트연산의 경우는 다음과 같이 계산되어 원하는 결과를 얻을 수 있다.

0xFF : 00000000 00000000 00000000 11111111
                                                 11111000
------------------------------------------
결과 : 00000000 00000000 00000000 11111000



 


[출처] : http://cafe.naver.com/sharkjava.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=244

쿠키에서 한글 깨지는 문제 해결 
한글 문제가 해결하기 정말 어렵당.

우선 쿠키에서 한글 깨지는 문제는 이렇게 해결했습니다.

1.샘플소스

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

쿠키심는 부분

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

<%@page contentType="text/html;charset=euc-kr"%>
<%@page language="java" import="java.net.*, java.sql.*,java.lang.*,java.util.*,javax.servlet.http.*,sql.database.*"%>
<%!
String koreanDecoding(String str) throws Exception {
if (str==null)
return null;
else
return new String(str.getBytes("8859_1"),"EUC-KR");
}
%>
<%
String gubn = koreanDecoding(request.getParameter("gubn"));    // 구분값1
String sqnum = koreanDecoding(request.getParameter("sqnum"));   // 구분값2

if (request.getParameter("gubn") == null)
gubn = "";
if (request.getParameter("sqnum") == null)
sqnum = "";


// 구분값1
Cookie cookie_gubn = new Cookie("Mgubn", gubn);
cookie_gubn.setPath("/");
cookie_gubn.setMaxAge(60*60*2);
response.addCookie(cookie_gubn);

// 구분값2
Cookie cookie_sqnum = new Cookie("Msqnum", URLEncoder.encode(sqnum, "EUC-KR"));
cookie_sqnum.setPath("/");
cookie_sqnum.setMaxAge(60*60*2);
response.addCookie(cookie_sqnum);


%>



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

쿠키가져오는 부분

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

<%
Cookie [] cookie = request.getCookies();

String Mgubn = "" ;
String Msqnum = "" ;

for(int i = 0; i < cookie.length; i++)
{

  if (cookie[i].getName().equals("Mgubn")){   // 구분값1
  Mgubn = cookie[i].getValue();
}
if (cookie[i].getName().equals("Msqnum")){   // 구분값2
  Msqnum = URLDecoder.decode(cookie[i].getValue());

}
}



out.println(Mgubn);
out.println("<br>");
out.println(Msqnum);
out.println("<br>");

%>



이러면 분명히 처음에 받은 gubn, sqnum 값이 한글처리됩니다.

출처 :

http://opensource.atlassian.com/confluence/oss/display/IBATIS/Environment+Specific+Information

Environment Specific Solutions

Oracle

BLOBs/CLOBs

As of release 2.0.9, iBATIS includes default BLOB/CLOB handlers. If you are using an older version of Oracle (pre-10g), then you might have to write your own Custom Tag Handler to access the proprietary Oracle API to work with LOBs.

Some selectKey examples

<insert id="insert" parameterClass="customer">
  <selectKey resultClass="int" keyProperty="id">
    select someSequence.NEXTVAL as "id" from dual
  </selectKey>
  insert into Customer (id, name)
  values (#id#, #name#)
</insert>
An example of using selectKey with a parameterMap.
The selectKey stanza is executed and the result is used to set the property 'pkey' of the parameter object,
then the parameter map is invoked.

<insert id="insert2" parameterClass="Entity" parameterMap="insert-paramMap">
   <selectKey resultClass="int" keyProperty="pkey"> SELECT seq.nextval FROM DUAL </selectKey>
   INSERT INTO EntityTable (PKEY, DATA) VALUES (?, ?)
</insert>

LONG

I was having trouble using an Oracle LONG column with an iBatis sqlmap.  I had defined the jdbcType as a LONGVARCHAR in the sqlmap, but iBatis was still attempting to call getCLOB on the oracle jdbc driver's LongAccessor class.  The solution to this was to explicitly use the StringTypeHandler on the column, as follows:

Using the StringTypeHandler on an Oracle LONG column - attempt #1 (failed)

<result column="MY_VARCHAR_COLUMN" property="myStringProperty" jdbcType="VARCHAR" />
<result column="MY_LONG_COLUMN" property="myStringProperty2" jdbcType="LONGVARCHAR" typeHandler="com.ibatis.sqlmap.engine.type.StringTypeHandler"/>

This correctly resulted in a call to LongAccessor.getString() in the oracle jdbc driver.  However, it threw up a new problem, "Stream has already been closed". 

The solution was to change the ordering of the columns in the result map so that the LONG column was accessed first, as follows:

Using the StringTypeHandler on an Oracle LONG column - attempt #2 (succeeded)

<result column="MY_LONG_COLUMN" property="myStringProperty2" jdbcType="LONGVARCHAR" typeHandler="com.ibatis.sqlmap.engine.type.StringTypeHandler"/>
<result column="MY_VARCHAR_COLUMN" property="myStringProperty" jdbcType="VARCHAR" />

So in summary, to use an Oracle LONG column, the following worked for me:

  1. Declare the jdbcType attribute as "LONGVARCHAR" in the result map
  2. Use a typeHandler attribute of "com.ibatis.sqlmap.engine.type.StringTypeHandler"
  3. Ensure the LONG column is the first declared column in the result map.

Oracle Paging

An example of how to select a subset of an ordered list. The keys added to the parameter map over and above the abator generated ones (used by the 'Where_Clause' sql) are FIRST (0-based, hence the "+ 1") and COUNT (no of entries to return).

<select id="selectPagedIds" resultClass="int" parameterClass="java.util.Map">
 select * from (
  select a.*, ROWNUM rn from (
   select ID from Schema.MYTABLE
    <include refid="Where_Clause"/>
   order by $ABATOR_ORDER_BY_CLAUSE$) a
  WHERE ROWNUM <![CDATA[ <= ]]> (#FIRST# + #COUNT#))
 WHERE rn <![CDATA[ >= ]]> (#FIRST# + 1)
</select>

Timeout

As of release 2.2.0, iBATIS includes a query timeout funcionality.
You can specify both a global timeout

<settings defaultStatementTimeout="2" />

or a per query timeout

<statement ... timeout="2">

When the timeout expires, it throws a SQL Exception "ORA-01013 : user requested cancel of current operation".

Tested with:

  • Oracle 9i release 2 drivers.

Sybase

Stored Proc/UNCHAINED mode

By default, Sybase doesn't allow procs to be run in a transactional context. You can work around this problem a few different ways:

1. Use your own Connection and .setAutoCommit(true). Pass this connection into the SqlMapClient.setUserConnection(Connection) method. You're responsible for closing the connection afterwards. If you like, you can get the Connection from the same DataSource by calling SqlMapClient.getDataSource(). Although this seems a bit "roundabout", it works.

2. In Sybase, use the following command to change all stored procedures into proper transaction mode.

sp_procxmode <stored procedure> , "anymode"

3. Use the longer approach proposed by Scott Severtson: ["Scott's Sybase Proc Solution"]

MySQL

Transactions

Older versions of MySQL don't support transactions. Make sure you're using a modern MySQL release and the latest drivers. iBATIS won't work without Transaction support (an RDBMS without TX support is kind of silly anyway).

Some selectKey Examples

<insert id="insertFolder" parameterClass="folder">
  INSERT INTO folder (parent_id, owner, foldername)
  VALUES (#parentId#, #owner#, #foldername#)
  <selectKey resultClass="int" keyProperty="folderId">
    SELECT LAST_INSERT_ID() AS folderId
  </selectKey>
</insert>

WebSphere

Container Managed Transactions (CMT) Configuration

This transaction configuration is appropriate for WebSphere when using EJBs and container managed transactions (CMT).

<transactionManager type="EXTERNAL">
    <property name="SetAutoCommitAllowed" value="false"/>
    <dataSource type="JNDI">
        <property name="DataSource" value="java:comp/env/..."/>
    </dataSource>
  </transactionManager>

Bean Managed Transactions or Servlets Without EJBs

This transaction configuration is appropriate for WebSphere when your are using WebSphere connection pooling, but not using EJBs (servlets only). It is also appropriate when using WebSphere connection pooling, EJBs, and bean managed transactions.

<transactionManager type="JTA" commitRequired="true">
    <property name="UserTransaction" value="java:comp/env/UserTransaction"/>
    <dataSource type="JNDI">
        <property name="DataSource" value="java:comp/env/..."/>
    </dataSource>
  </transactionManager>

For more information on using WAS with iBATIS read this article on the developerworks website:
http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0502cline/

PostgreSQL

Some selectKey Examples

<insert id="insert">
    <selectKey keyProperty="accountId" resultClass="int">
      SELECT nextVal('account_accountid_seq')
    </selectKey>
    INSERT INTO Account (accountId, username, password)
    VALUES (#accountId#, #username#, #password#)
</insert>

If accountId is defined as a 'serial' column in your schema, you can allow the accountId to default to the next number in the sequence and use Postgres's currval function to retrieve the generated ID.

<insert id="insert">
    INSERT INTO Account (accountId, username, password)
    VALUES (#accountId#, #username#, #password#)
    <selectKey keyProperty="accountId" resultClass="long">
      SELECT currval('account_accountid_seq')
    </selectKey>
</insert>

DB400 (AS400 / iSeries)

Invalid Usages of the Parameter Marker ?

DB400 has some quirks about where the ? can go in the statement.   For instance, the ? cannot be "an operand of a scalar function."  This means that DB400 will complain about using functions like UPPER or TRIM. This is a quirk with using PreparedStatements, and therefore, SqlMaps.  Below is an example of how to get scalar functions to work, much like the example of using LIKE in the FAQ section.

For more info, see  http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/rzala/rzalaml.htm  Look for SQL code SQL0418.

<select id="company" resultMap="getCompanyInfo" parameterClass="java.lang.String">
    <!--
        The 400 does not allow ? in scalar functions, like UPPER(?).
        This means we must use $value$ instead of #value#.
        We must rely on Java to escape the value before passing it in to SqlMaps
        by using StringEscapeUtils.escapeSql(value) to avoid injection attacks.
    -->
    SELECT COID, NAME
      FROM USRCOM
     WHERE UPPER(USER) = UPPER('$value$')
     ORDER BY NAME
</select>

import java.sql.*;

public class DBTest{
 public static void main(String args[]) throws Exception{
  new DBTest();
 }
 public DBTest(){
  Connection conn=null;
  Statement stmt=null;
  ResultSet rs=null;

  String sql="select * from en_contents";
  String url = "jdbc:oracle:thin:@192.168.1.50:1521:ORCL";
  String id = "myid";
  String pass = "mypass";

  try {
   //클래스를 메모리에 로딩 시키는 것
   Class.forName("oracle.jdbc.driver.OracleDriver"); 
  } catch (Exception e) {
   e.printStackTrace();
  }
  try {
   conn= DriverManager.getConnection(url,id,pass);
   stmt = conn.createStatement();
   rs=stmt.executeQuery(sql);
   while (rs.next()) {
    System.out.println(rs.getString(1));
   }

   if(rs!=null)rs.close();
   if(stmt!=null)stmt.close();
   if(conn!=null)conn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
}

Windows(XP, Sever...) 기준 웹서버 설치 방안 입니다.

Apache + Php + MySql
http://blog.naver.com/jjeowl?Redirect=Log&logNo=40025454157

Apache +  Svn
http://www.pyrasis.com/main/SubversionServerForWindows

Apache + Tomcat 연동
http://tong.nate.com/fish197/47313754

SVN How To Use
http://www.pyrasis.com/main/Subversion-HOWTO

WEBSVN 설치
[ SVN ]
http://websvn.tigris.org/svn/websvn/
ID : guest , PW : 없음
으로 접속하여 파일 다운로드 이후 branch내 포함된 파일을 웹에 올린 다음 아래와 같이 설정한다.

아파치의 httpd.conf 파일 수정
Alias /websvn "E:/usr/local/WebSVN/" #WEBSVN설치폴더 경로

<Directory "E:/usr/local/WebSVN/"> #WEBSVN설치폴더 경로
 Order allow,deny
 Allow from all
 Options MultiViews
 DirectoryIndex index.php
 Require valid-user
 AuthType Basic
 AuthName "Subversion repository"
 AuthUserFile D:/svnrepos/.htaccess #암호 설정화일이 있는곳 위치 경로
</Directory>

이후, include folder에 distconfig.php를 config.php로 복사해서 WebSVN에 대한 config를 다음과 같이 한다.

#환경에 맞춰 알맞게 추가 한다.
$config->addRepository('UBIP', 'http://www.xxx.co.kr/svn/웹상리포지토리경로', NULL, 'myid', 'password');
$config->parentPath('X:\\svn-win32-1.5.4\\실제SVN리포지토리경로');
$config->setInputEncoding("euc-kr");     // 커맨드라인의 charset
$config->setContentEncoding("euc-kr"); // 소스 코드의 charset

설정이 완료 되었으면 http://www.호스트.co.kr/websvn 으로 접속하여 확인한다.

WEBSVN 기타 설정
http://www.pyrasis.com/main/WebSVNPatch?action=show&redirect=WebSVN161Patch

위 링크를 모두 참조하시면 됩니다. 후후
처음에 삽질해서 나름 2틀 걸렸네욥 -_-; 이젠 파일만 준비 된다면 1시간이면 OK?! ㅋㅋ

'etc > old' 카테고리의 다른 글

ibatis에서 insert하고 id값 받기 (DB별)  (0) 2008.11.14
초간단 오라클 접속 테스트  (0) 2008.11.14
STRUTS2 - Login with Session  (1) 2008.11.04
Struts2 - Login Test with Validator  (0) 2008.11.04
Context 와 ThreadLocal  (0) 2008.10.27
세션을 이용하여 로그인 하는 방법 입니다.




참조 사이트 (약간 수정을 해서 올려요.)
http://www.roseindia.net/struts/struts2/struts2-login.shtml

'etc > old' 카테고리의 다른 글

초간단 오라클 접속 테스트  (0) 2008.11.14
웹 서버 설치 (Apache 2.2 + Tomcat 6.0 + Mysql + Svn)  (0) 2008.11.05
Struts2 - Login Test with Validator  (0) 2008.11.04
Context 와 ThreadLocal  (0) 2008.10.27
Tender Love  (0) 2008.10.21

+ Recent posts