블랙박스 달고, 방전 5회 그중 완전 방전 1회 .. OTL

툭하면 방전.. 그래서 베터리를 교체하기로 했다.

 

아반떼HD 출고시 60L짜리 베터리가 달려있다.

교체하면서 용량도 80L로 업하려고 보쉬 s4 80L 베터리 주문했다.

베터리 주문하면서 12mmT복스랑 10mm 스패너도 같이 주문했다.

 

근데 용량이 늘면 베터리 크기가 커져서 .. 출고시 달려있는 베터리 받침으로는 안된다.

걍 안맞게 올려도 된다고 하지만 이왕 하는거 받침[TRAY ASS'Y(37150-2H000]도 성남모비스 센터에서 인터넷 주문했다.

 

주문한 물품이 도착하고

귀차니즘으로 약 1달 베란다에 처박아놨다가

마눌의 잔소리에 못이겨 일단 가지고 주차장으로 나왔다.

 

요건 받침이다. 

 

 이건 베터리.. 양옆에 청테이프는 안에 내용물이 셀까봐 붙인거란다.

 

 보쉬~ 음. 믿음이 좀 간다.

 

베터리, 받침, T복스, 스패너... 

 

보닛을 열고 베터리를 탈거한다. 탈거는 -, + 순으로 해야한다. (이유는 ? 글쎄 이렇게 해야한단다) - 10mm 스패너사용 

 

- 부터 탈거한 사진 

 

베터리를 들어내면 위 처럼 받침이 보인다.

받침은 T복스로 볼트를 뽑고. 옆으로 달려있는 줄들을 제거해야한다.

받침을 들어내려면 좀 손이 많이 간다. 작업전에 칼이나 펜치가 있어야 수월하다. 

 

새 받침을 놓고 베터리 얹고

베터리 연결할 때는 + ,-  순으로 연결해야한다. (이유는? 글쎄) 

 

다 연결하고

시동 걸어보니 잘 된다^^

이젠 방전 걱정 없었으면 좋겠네..

 

베터리 교체 참 쉽다.

 

 

 

[참고] 아반떼 HD - 베터리 교환하기 60 -> 80

 

반응형

http://www.rgagnon.com/javadetails/java-0593.html

유용한 팁이네요. 다른 운영체제는 또 다른 방법을 찾아야겠지만 ^^;

The Microsoft TASKLIST.EXE is used to dump the list of the currently running processes. It is similar to tasklist window but for the console.

From a Java program, we are launching TASKLIST.EXE and capture its output.

Note : TASKLIST.EXE is not included the HOME edition of XP. But you can download it from Web, for example : http://www.computerhope.com/download/winxp.htm.

import java.io.*;
import java.util.*;

public class WindowsUtils {
  public static List<String> listRunningProcesses() {
    List<String> processes = new ArrayList<String>();
    try {
      String line;
      Process p = Runtime.getRuntime().exec("tasklist.exe /fo csv /nh");
      BufferedReader input = new BufferedReader
          (new InputStreamReader(p.getInputStream()));
      while ((line = input.readLine()) != null) {
          if (!line.trim().equals("")) {
              // keep only the process name
              line = line.substring(1);
              processes.add(line.substring(0, line.indexOf(""")));
          }

      }
      input.close();
    }
    catch (Exception err) {
      err.printStackTrace();
    }
    return processes;
  }

  public static void main(String[] args){
      List<String> processes = listRunningProcesses();
      String result = "";

      // display the result 
      Iterator<String> it = processes.iterator();
      int i = 0;
      while (it.hasNext()) {
         result += it.next() +",";
         i++;
         if (i==10) {
             result += "\n";
             i = 0;
         }
      }
      msgBox("Running processes : " + result);
  }

  public static void msgBox(String msg) {
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
       null, msg, "WindowsUtils", javax.swing.JOptionPane.DEFAULT_OPTION);
  }
}

출처 : http://kogaeng.tistory.com/306

반응형


데이터를 암/복호화 하기위해 AES암호화를 사용하고있다.
헌데 java, C# 코드는 찾기 쉬운데 .. MSSQL에서 직접 사용할 수 있는 sp가 없더라..
그래서 만들어봤다.

.net 코드로 만든 클래스 라이브러리를 MSSQL에서 바로 호출이 가능하다.
방법은 이렇다.

1. 코드를 작성한다. (C#으로 되어있는 AES 암/복호화 코드를 copy해왔다.)  컴파일하여 .dll 파일을 얻는다.

using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace AESCrypto
{
    public class CAesCrypto
    {
        public static void Encrypt(SqlString textToEncrypt, SqlString key, out SqlString strValue)
        {
            try
            {
                RijndaelManaged rijndaelCipher = new RijndaelManaged();
                rijndaelCipher.Mode = CipherMode.CBC;
                rijndaelCipher.Padding = PaddingMode.PKCS7;

                rijndaelCipher.KeySize = 0x80;
                rijndaelCipher.BlockSize = 0x80;
                string strKey = key.ToString();
                byte[] pwdBytes = Encoding.UTF8.GetBytes(strKey);
                byte[] keyBytes = new byte[0x10];
                int len = pwdBytes.Length;
                if (len > keyBytes.Length)
                {
                    len = keyBytes.Length;
                }
                Array.Copy(pwdBytes, keyBytes, len);
                rijndaelCipher.Key = keyBytes;
                rijndaelCipher.IV = keyBytes;
                ICryptoTransform transform = rijndaelCipher.CreateEncryptor();
                string strTextToEncrypt = textToEncrypt.ToString();
                byte[] plainText = Encoding.UTF8.GetBytes(strTextToEncrypt);
                strValue = Convert.ToBase64String(transform.TransformFinalBlock(plainText, 0, plainText.Length));

            }
            catch (Exception ex)
            {
                strValue = ex.ToString();
                throw new Exception(ex.Message);
            }
        }

        public static void Decrypt(SqlString textToDecrypt, SqlString key, out SqlString strValue)
        {
            try
            {
                RijndaelManaged rijndaelCipher = new RijndaelManaged();
                rijndaelCipher.Mode = CipherMode.CBC;
                rijndaelCipher.Padding = PaddingMode.PKCS7;

                rijndaelCipher.KeySize = 0x80;
                rijndaelCipher.BlockSize = 0x80;
                string strTextToDecrypt = textToDecrypt.ToString();
                byte[] encryptedData = Convert.FromBase64String(strTextToDecrypt);

                string strKey = key.ToString();
                byte[] pwdBytes = Encoding.UTF8.GetBytes(strKey);
                byte[] keyBytes = new byte[0x10];
                int len = pwdBytes.Length;
                if (len > keyBytes.Length)
                {
                    len = keyBytes.Length;
                }
                Array.Copy(pwdBytes, keyBytes, len);
                rijndaelCipher.Key = keyBytes;
                rijndaelCipher.IV = keyBytes;
                byte[] plainText = rijndaelCipher.CreateDecryptor().TransformFinalBlock(encryptedData, 0, encryptedData.Length);

                strValue = Encoding.UTF8.GetString(plainText);
            }
            catch (Exception ex)
            {
                strValue = ex.ToString();
                throw new Exception(ex.Message);
            }
        }
    }
}

 

2. MSSQL에서 CLR을 사용할수 있게 변경한다.

-- CLR을 사용할수 있도록 변경
exec sp_configure 'clr enabled', 1
reconfigure with override 


3. 해당 DB에 권한을 부여한다.

 ALTER DATABASE [DATABASE_NAME] SET
 TRUSTWORTHY ON


4. 1에서 만든 DLL로 ASSEMBLY를 생성한다.

CREATE ASSEMBLY AESCrypto
FROM 'D:\AESCrypto.dll'     <- dll의 물리적 경로예제
WITH PERMISSION_SET = UNSAFE 


4.1. 소유자가 달라서 안되면...소유자를 변경한다.
 - 해당메시지는 DB를 만든 사용자와 복원한 사용자가 다를때 나타난다.

 /*
master 데이터베이스에 기록된 데이터베이스 소유자 SID가 데이터베이스 '[DATABASE_NAME]'에 기록된 데이터베이스 소유자 SID와 다릅니다.
ALTER AUTHORIZATION 문을 사용하여 데이터베이스 '[DATABASE_NAME]'의 소유자를 다시 설정하여 이 문제를 해결해야 합니다.
*/
SELECT owner_sid FROM sys.databases WHERE database_id=DB_ID()
SELECT sid FROM sys.database_principals WHERE name=N'dbo'
EXEC sp_changedbowner '[USER_ID]'
ALTER AUTHORIZATION ON [DATABASE_NAME] TO [domain\user]


5. 프로시져를 생성한다.

CREATE PROCEDURE usp_AESCryptoEncrypt
    @strText        NVARCHAR(100),
    @strKey         NVARCHAR(50),
    @strEnc        NVARCHAR(200) OUTPUT
    AS     EXTERNAL     NAME AESCrypto.[AESCrypto.CAesCrypto].Encrypt

--
CREATE PROCEDURE usp_AESCryptoDecrypt
    @strText          NVARCHAR(100),
    @strKey        NVARCHAR(50),
    @strDec        NVARCHAR(200) OUTPUT
    AS     EXTERNAL     NAME AESCrypto.[AESCrypto.CAesCrypto].Decrypt

6. 사용해본다.

DECLARE @strEnc NVARCHAR(200), @return_value int
EXEC @return_value = [dbo].[usp_AESCryptoEncrypt]
@strText
, @strKey
, @strEnc = @strEnc OUTPUT

 

7. 참고 사이트 및 호환성 문제.

* 참고 :  http://zmeun.tistory.com/46

* 호환성 문제.

출처 : http://livelock.tistory.com/entry/DB-%ED%98%B8%ED%99%98%EC%84%B1-%EB%AC%B8%EC%A0%9C

SQL Server 2000->2005 마이그레이션 등을 수행한 후,
 2005부터 지원되는 SQL문을 사용하려고 하는 경우, 다음과 같은 메시지가 나타날 때가 있다.
 
Msg 325, Level 15, State 1, Line 6
'PIVOT' 근처의 구문이 잘못되었습니다. 이 기능을 사용하려면 현재 데이터베이스의 호환성 수준 값을 더 높게 설정해야 합니다. 저장 프로시저 sp_dbcmptlevel에 대해서는 도움말을 참조하십시오.

에러 메시지에서 볼 수 있듯이, 호환성과 관련된 문제이다.
따라서 다음과 같은 구문을 실행하여 호환성 문제를 해결한다. 

EXEC sp_dbcmptlevel '[Database 명]', [호환성 번호]

 호환성 번호는 80: SQL Server 2000, 90: SQL Server 2005 등이다.

 

 

 

 

반응형
<script type="text/javascript">

if (navigator.userAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null
|| navigator.userAgent.match(/LG|SAMSUNG|Samsung/) != null)
{
alert('모바일접속');
}

</script>
반응형

자바프로그램(Java Application)을 실행시켜 주는 명령어이다.


사용법:java <options> <classfiles> <argument> 또는
java <options> -jar file.jar <argument>

options: 옵션
classfiles: 호출될 클래스 파일 이름
file.jar: 호출될 jar파일 이름
argument:main함수에 파라미터로 보내질 문자열


예를들어, main함수를 포함하는 Hello.class 파일이 존재할경우,
java Hello 로 프로그램을 실행시킬수 있는데, 확장자인 class는 생략할수 있지만,
대소문자는 구별하므로, 정확하게 기입해야 한다.
java Hello Greeting 처럼 Greeting을 덧붙일경우, main함수에 문자열인자로 Greeting을 보낼수 있다.

a) -client:
자바 HotSpot Client VM을 선택한다. (디폴트 값이다)

b) -server:
자바 HotSpot Server VM을 선택한다.

c) -classpath (-cp):
참조할 클래스 파일 패스를 지정하는데, jar파일, zip파일, 클래스파일의 디렉터리 위치를 기술한다.
각 클래스파일 패스는 콜론(:)을 통해서, 분리시켜 기술한다
자바VM은 자바프로그램을 로딩시, -classpath로 지정된 클래스 패스나, java플래폼이 설치된, 운영체제에서의
환경변수로 지정된, 클래스패스를 통해서, 클래스 파일들을 참조하게 된다.

d) -D <property name>=<property value>:
시스템의 property 값을 설정한다.

ex) java -Djava.library.path=. HelloWorld

자바의 시스템 property(속성)중 "java.library.path"값을 "." (현재디렉터리)로 지정해서, HelloWorld 실행시켜라는 의미 이다.

위와같이 자바VM에 지정된 속성을 실행시 -D옵션을 사용해서, 변경, 지정할수 있다.

e) -jar 파일이름:

jar파일로 압축되어져 있는 자바 프로그램을 실행시킨다.

클래스 파일이름 대신 jar파일을 사용해서, 압축되어져 있는 자바 프로그램을 실행시킬수 있는데, 위프로그램이 제대로 실행되어지기 위해서, Jar파일안의 manifest라는 텍스트 파일에 Main-Class:classname 같은 형태의 텍스트 라인이 포함되어 있어야 한다.

그리고, 여기에 기술된 classname은 main함수를 포함하고 있는 클래스 이름이 되어야 한다.

f) -verbose:

자바프로그램 실행되어지는 정보를 화면에 출력해준다.

-verbose:class

로딩되어지는 각클래스들의 정보를 화면에 출력한다.

-verbose:gc

garbage collection 이벤트를 화면에 출력한다.

-verbose:jni

native 함수들과 다른 자바 native 인터페이스 사용에 대한 정보를 출력한다

g) -version:

현재 JVM의 버젼 정보만 출력한다

h) -showversion:

현재 JVM의 버젼정보를 출력한다.

java -showversion HelloWolrd

와 같이 자바 프로그램을 실행시키면서, 자바 버젼정보를 출력할수 있다.

i) -X

비표준 자바옵션 리스트를 화면에 출력해준다.

i-1) -Xms, -Xmx

자바를 구동시, JVM이 사용가능한 최대 메모리 사이즈를 변경합니다.

JVM이 자바프로그램을 구동하기 위해, 초기설정된 메모리사이즈는 64M입니다.

사용방법은 다음과 같습니다

java -Xms <초기힙사이즈> -Xmx <최대힙사이즈>

예를들어, Hello.class 자바 프로그램을 시작시, 256M(메가)의 힙사이즈를 할당하며, 최대 512M의 힙사이즈를 할당받고 싶다면, 다음과같이 합니다.

java -Xms256m -Xmx512m Hello



반응형

* tempDB 를 tempDB2 로 변경하기

ALTER DATABASE tempDB
SET single_user
go

ALTER DATABASE tempDB
MODIFY NAME = tempDB2
go

ALTER DATABASE tempDB
SET multi_user

반응형

몇달 전에 쿠팡인가? 에서 스냅스 포토북 이용권을 싸게 구입했다.
미루고 미루고 미루다 쿠폰 사용기간 전에 간신히 주문 했다.
후기도 미루고 미루고 미루다 이제야 쓴다. 이놈의 귀차니즘

난 사진찍는게 취미? 아니지.. 일상이다.
적어도 린이가 이 세상에 나오고 난 후에는... 그렇다

린이가 태어나고 처음 1년동안은 그래도 블로그질을 잘했다. ㅎㅎ
근데 아.. 나태~ 귀찮다.
그 후로 블로그질 stop... 다시 해야겠다는 생각은 굴뚝같지만.. 그게 생각처럼 잘안된다.

그래서 생각한게 이거다 포토북!
린이도 자기 사진보고 좋아라한다.

나도 만들고 나면 엄청 뿌듯하고~ 마눌님도 200% 좋아한다.

린이 첫 돌때
수린이의 365일 한살이야기랑
사랑해 사랑해 사랑해 책이랑
괜찮아 책을 스냅스를 이용해서 만들었는데..
역시나 포토북은 스냅스가 최고다.

왜냐면... 만들기가 무지 쉽다.
사진을 가져다 놓으면 끝이니말이다..

근데 어려운게 사진 고르는 일이다.
왜냐면.. ㅎ 이것도 이뿌고 저것도 이쁘니....
사진 고르는데 약 일주일은 걸린듯하다.

반짝반짝 빛나는 리니의 2011년 상반기 그 첫번째이다.
퀄리티 굿이다.

첫 페이지는 가족사진~ㅋㅋ

2011년 상반기 동안 찍었던 사진을 정리해서 담았다.


8X8 인데.. 생각보다 사진이 크다.

한가지 단점은 겉표지를 한번 선택하면 변경이 안된다. 흠.

하지만, 행복한 추억 오래오래 간직할 수 있어 좋다.

뒷표지는 해맑게 웃는 사진^^ 아 귀요미 린~

2011년 하반기도 만들어야되는데, 스냅스가 다시한번 싸게 쿠폰을 팔아줬으면 한다. ㅋㅋ


벌써 스냅스에서 만든 포토북이 4권이다.
우리 린이가 커갈 수록 스냅스 포토북도 일년에 최소 두권씩 늘어날거다.
그때마다 이쁜 사진 가득한 포토북 만들 수 있게 스냅스가 함께 했으면 좋겠다.

PS.
 사진을 찍기만하고
 블로그도 안하고
 싸이도 안하고
 인화도 안하시는 분들에게
 스냅스 포토북 강추!!합니다.
반응형

말도 많고 탈도 많던 우리 린양의 365일~
드뎌 한살 파티를 치뤘다.

함께 해주신 모든 분들의 소중한 시간과, 축하해주신 마음 너무 너무 감사합니다^^

앞으로 두살, 세살, 네살~ 쭉~
이렇게 건강하게 자라주었으면 하는 바램뿐이다.

일년동안 예쁘고 건강하게 커준.. 우리 수린아~
아빠 엄마가 정말 정말 너무 너무 완전 완전 진짜 진짜 사랑한단다^^♡


반응형

돌잔치 준비하면서
그동안 찍었던 수린이 사진을 쭉~ 살펴봤다.

많이 컷네~
주먹만하던 녀석이 이제는 제법 많이 컷다.

앞으로도 이렇게 쑥쑥 커줬으면 좋겠다.


돌아다니는 소스가 많이 있는데..

가장 평범하지만 예쁜것으로 골라서 만들어봤다.




반응형

포토 테이블에 없으면 허전한 괜찮아책..
이것도 사랑해 사랑해 사랑해 만들면서 같이 만들었다.
괜찮아 책은 동물그림이 많아서 작업하기 수월하다.
반면에 아이 사진은 몇장 안들어가는 단점이 있다.

어차피 돌잔치 끝나면 린양의 동화책이 될테니까 그런건 상관없다...
이것도 해놓고 나니 뿌듯하다. ㅎㅎ































앞으로 살아가면서 우리 수린이에게
"괜찮아", "사랑해" 란 말을 많이 해야겠다.







반응형

+ Recent posts