2016년 4월 4일 월요일

[악보채보]Dream Theater - Pull Me Under 악보 편집...

취미 밴드의 보컬이 그토록 바라던

Pull me under를 하게 됐다..

인터넷에 있는 기타프로를 싹 모아 보고..

10년 전에 샀던 Image and Words 악보집을 대조해 보고..

서로 너무 틀리다..

그래서..

결론은.. 두개 짜집기 + 듣고 따기로..

2주 걸려서.. 악보 정리함..

이제 얼추 된듯..(사실은.. 이것 이상은 능력 밖이라.. 페트루치 엉아!!! 너무 어렵잖아!!)

참고로..

http://www.ultimate-guitar.com/ 여기에 올라오는 악보도

다 사람이 따는거라 틀린거 진짜 많다..

악보는 참고일뿐.. 너무 믿지 말길...

다운받기!!

Dream Theater - Pull Me Under Guitar Pro Tab Arranged By jaymz9634

2021-01-29 : 구글드라이브로 링크 수정


2016년 3월 24일 목요일

윈도우 커맨드 명령어로 네트워크 사용자 IP 정보 구간 지정해서 구하기..

회사네트워크 사용자들 정보를 윈도우 창에서 확인하고 싶다라고 하셔서..

회사 부장님께서 물어보셔서.. 폭풍 구글링..

for /L %A in (93,1,99) do nbtstat -a 192.168.0.%A

93 : 시작 IP

99 : 종료 IP

간단하네..


결과는 보통 다음과 같이 나오는 듯..

C:\Users\jaymz96>nbtstat -a 192.168.0.93

로컬 영역 연결:
노드 IpAddress: [192.168.0.93] 범위 ID: []

           NetBIOS 원격 컴퓨터 이름 테이블

       이름               유형         상태
    ---------------------------------------------
    JAYMZ96-PC     <00>  UNIQUE      등록됨
    WORKGROUP      <00>  GROUP       등록됨
    JAYMZ96-PC     <20>  UNIQUE      등록됨
    WORKGROUP      <1e>  GROUP       등록됨


C:\Users\jaymz96>nbtstat -a 192.168.0.94

로컬 영역 연결:
노드 IpAddress: [192.168.0.93] 범위 ID: []

    호스트를 찾을 수 없습니다.

C:\Users\jaymz96>nbtstat -a 192.168.0.95

로컬 영역 연결:
노드 IpAddress: [192.168.0.93] 범위 ID: []

    호스트를 찾을 수 없습니다.


이하 생략!

2016년 2월 15일 월요일

상품 목록에서 같은 품목이 여러개 있는데.. 가격이 각각일때.. 최소값 찾는 로직을 생각해 보았다..

회사 업무중..

상품 목록에서 같은 품목이 여러개 있는데.. 가격이 각각일때.. 최소값 찾는 로직을 생각해 보았다..

NEW_GOODS라는 상품 목록 테이블이 있고.. 분류가 'C'로 시작하는 넘들을

MASTER_ITEM 이란 테이블에서 근사 값으로 가장 차이가 작은 넘들을 찾는 로직을

짜 봄...

한 쿼리로 해볼라고 했으나.. 실력 부족인지..

임시테이블을 사용해서 함..

일단.. NEW_GOODS와 MASTER_ITEM의 값 차이를 절대값으로 나열하는 테이블 생성..


SELECT 구바코드,
       Min(absval) AS ABSVAL
INTO   #tbl_abs
FROM   (SELECT A.구바코드,
               A.판매가,
               A.도서명,
               B.item_cd,
               B.item_nm,
               B.jung_unit,
               Abs(A.판매가 - B.jung_unit) AS ABSVAL
        FROM   new_goods A,
               master_item B
        WHERE  1 = 1
               AND LEFT(소분류, 1) = 'C'
               AND A.구바코드 = B.ean_cd) X
WHERE  1 = 1
GROUP  BY 구바코드 


그 다음.. 절대값 테이블에서 최소값만 매칭해서 검색하면 끝! 참 쉽죠??

SELECT DISTINCT X.구바코드,
                X.판매가,
                Min(item_cd) AS ITEM_CD
FROM   (SELECT A.구바코드,
               A.판매가,
               A.도서명,
               B.item_cd,
               B.item_nm,
               B.jung_unit ,
               Abs(A.판매가 - B.jung_unit) AS ABSVAL
        FROM   new_goods A,
               master_item B
        WHERE  1 = 1
               AND LEFT(소분류, 1) = 'C'
               AND A.구바코드 = B.ean_cd) X,
       #tbl_abs Y
WHERE  1 = 1
       AND X.absval = Y.absval
GROUP  BY X.구바코드,
          X.판매가
ORDER  BY 1 
아침에 개발 업체에서 문의가 와서.. 알려주다가..

문득 궁금해서 찾아본 것 정리...

업체에서.. 개발 오래 하신분인데...

서버에 원격 세션을 연결 한 뒤, 매번 연결 끊기로 나오길래..

로그오프 하시라고 얘길 할까 말까 하다가..

오늘 아침에.. 연결이 안된다고 전화 옴..

mstsc /admin 도 모르시고... 해결을 못하셔서 연락하신거 같은데..

생각해 보니.. mstsc /console 이라고도 했던거 같아서.. 검색을 해봤다..

http://blogs.technet.com/b/peterfi/archive/2008/01/11/mstsc-console-is-now-mstsc-admin.aspx

결론은.. 바뀌었다로..

mstsc /console --> mstsc /admin 으로 변경됐다고 함..

2016년 2월 2일 화요일

MS SQL Express Profiler

회사 DB가 Express 2005 버전 사용 중..

프로파일러 돌릴 일이 있는데..

MSSM 아무리 찾아도 없네..

구글링 해보니..

Express 에는 없다고 전해라~~~


어떤 천사같은 유저가 만든거 찾음..

다운로드

버전이 14 하고 12가 있는데..

내 경우에는 12가 동작하였음..

2016년 1월 20일 수요일

apache commons의 httpclient 4.4 사용하여 11번가 연동 개발 간단 정리

1. 11번가에서 제공하는 open API의 java 개발 관련 소스는 좀 틀린 부분이 있다. QA 팀 쪽에 메뉴얼 수정 요청을 했으나..
   아직도 안한다.. 니들 맘대로 해.. 나도 귀찮어..

2. ASP와 JAVA로 둘다 개발해보고 최종적으로 관리나 성능면에서 JAVA를 선택함.

3. ASP는 캐릭터셋을 utf-8로 해야 한다.(메뉴얼에는 euc-kr)


  1. set api = createobject("msxml2.serverXmlhttp")
  2. api.setRequestHeader "content-type","text/xml; charset=utf-8"
  3. api.setRequestHeader "openapikey",openapikey
  4. api.send xmldata


4. JAVA도 당연히 utf-8이다..통신 관련 소스는 이하 정리..

5. 통신 방법에는 Post와 Put이 있다. 메뉴얼 상단의 Method Type : Post (또는 Put) 를 주의깊게 확인하라!

6. 예제 소스는 HttpClient 옛날 버전으로 개발한 듯 하다.. 치사하게 라이브러리를 숨겨서 안알랴줌 해서... 기냥.. 새로 개발함..

7. 사용 라이브러리는 httpclient 4.4 (2015-03-12 현재 최신 버전!!!)

8. 이하 상품등록등에 쓰이는 post 방식 예제 소스(통신부분만 발췌)

클래스의 변수들은 회사 DB쪽에 반영을 위해 필요한 거임.. 통신 부분만 참고하셈..

xml 포맷이야.. 메뉴얼 보고 잘 작성하셈.. 중요한건.. 필수 요소에 대해서 잘 보고 작성 해야 함. 에러가 구체적으로 안나오고.. 그냥 요소가 없다란 식으로 막연하게 나오드라..


  1. public static void sendXmlInfo(String 통신주소, String 전송할XML, String 우리회사상품코드, String 후처리용상태코드) {
  2.         HttpClient httpclient = HttpClients.createDefault();
  3.         try {
  4.             HttpPost httpPost = new HttpPost(통신주소);
  5.             httpPost.addHeader("openapikey", openapikey);
  6.             logger.info("[POST URI] : " + httpPost.getURI());
  7.             //System.out.println("[POST URI] : " + httpPost.getURI());
  8.             System.out.println(전송할XML);
  9.             InputStream in;
  10.             StringEntity entity = new StringEntity(전송할XML,    ContentType.create("text/xml""UTF-8"));
  11.             entity.setChunked(true);
  12.             httpPost.setEntity(entity);
  13.             System.out.println("[Executing request]: " + httpPost.getRequestLine());
  14.             // Export header info --> 디버그 용임...
  15.             Header[] tmp = httpPost.getAllHeaders();
  16.             System.out.println("[Set Header Info]:");
  17.             for (Header header : tmp) {
  18.                 System.out.println(header.toString());
  19.             }
  20.             try {
  21.                 HttpResponse response = httpclient.execute(httpPost);
  22.                 System.out.println(response.toString());
  23.                 in = response.getEntity().getContent();
  24.                 String body = IOUtils.toString(in);
  25.                 //System.out.println(body);
  26.                 uptProdInfo(body, 우리회사상품코드후처리용상태코드);
  27.                 System.out.println("End Proc::::::::::::::::::::::::::::::");
  28.             } catch (ClientProtocolException e) {
  29.                 System.out.println(e);
  30.             } catch (IOException e) {
  31.                 System.out.println(e);
  32.             }
  33.         } finally {
  34.            
  35.         }
  36.     }


9. 이하 상품 수정/판매중지/판매재개 등에 사용되는 put 방식 예제 소스. 변수는 신경쓰지 마셈..

httpclient 이후 HttpPut 생성하는게 포인트.. 그 밖에 다른 것은 없다..


  1. public static void putXmlInfo(String callUrl, String inputXML, String 상품코드, String statusVal) {
  2.         HttpClient httpclient = HttpClients.createDefault();
  3.         try {
  4.             HttpPut httpput = new HttpPut(callUrl);
  5.             httpput.addHeader("openapikey", openapikey);
  6.             logger.info("[PUT URI] : " + httpput.getURI());
  7.             //System.out.println("[POST URI] : " + httpPost.getURI());
  8.             System.out.println(inputXML);
  9.             InputStream in;
  10.             StringEntity entity = new StringEntity(inputXML,    ContentType.create("text/xml""UTF-8"));
  11.             entity.setChunked(true);
  12.             httpput.setEntity(entity);
  13.             System.out.println("[Executing request]: " + httpput.getRequestLine());
  14.             // Export header info
  15.             Header[] tmp = httpput.getAllHeaders();
  16.             System.out.println("[Set Header Info]:");
  17.             for (Header header : tmp) {
  18.                 System.out.println(header.toString());
  19.             }
  20.            
  21.             System.out.println("statusVal::" + statusVal);
  22.            
  23.             try {
  24.                 HttpResponse response = httpclient.execute(httpput);
  25.                 System.out.println(response.toString());
  26.                 in = response.getEntity().getContent();
  27.                 System.out.println(in);
  28.                 String body = IOUtils.toString(in);
  29.                 System.out.println(body);              
  30.                 uptProdInfo(body, prma_pcode, statusVal);
  31.                 System.out.println("End Proc::::::::::::::::::::::::::::::");
  32.             } catch (ClientProtocolException e) {
  33.                 System.out.println(e);
  34.             } catch (IOException e) {
  35.                 System.out.println(e);
  36.             }
  37.         } finally {
  38.            
  39.         }
  40.     }


10. 마지막으로 리턴되는 결과 XML을 parsing 하는 예제.. 뭐 다양하게 개발할 수 있겠지만.. 난 요따구로 했수다..


  1. public static void uptProdInfo(String xmlStr, String 회사상품코드, String statusVal){
  2.         System.out.println("Return XML ::::" + xmlStr);
  3.         InputSource is = new InputSource(new StringReader(xmlStr));
  4.         try {
  5.             Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
  6.             XPath xpath = XPathFactory.newInstance().newXPath();
  7.             NodeList cols = (NodeList)xpath.evaluate("/ClientMessage/resultCode", document, XPathConstants.NODESET);
  8.            
  9.             String resultCode = "";
  10.             for( int idx=0; idx<cols.getLength(); idx++ ){
  11.                 resultCode = cols.item(idx).getTextContent();
  12.             }
  13.            
  14.             if(resultCode.equals("200")){  //정상처리.. 생각해 보니 예외처리 안했다.. 젠장..
  15.                 NodeList cols1 = (NodeList)xpath.evaluate("/ClientMessage/productNo", document, XPathConstants.NODESET);
  16.                 String market_pcode = "";                      
  17.                 for( int idx=0; idx<cols1.getLength(); idx++ ){
  18.                     market_pcode = cols1.item(idx).getTextContent();
  19.                 }
  20.                
  21.                 //여기엔 오픈마켓에서 생성된 상품코드를 DB에 반영하고 DB 상태값을 변경하는게 있었지롱~~
  22.             }
  23.         } catch (SAXException e) {
  24.             // TODO Auto-generated catch block
  25.             e.printStackTrace();
  26.         } catch (IOException e) {
  27.             // TODO Auto-generated catch block
  28.             e.printStackTrace();
  29.         } catch (ParserConfigurationException e) {
  30.             // TODO Auto-generated catch block
  31.             e.printStackTrace();
  32.         } catch (XPathExpressionException e) {
  33.             // TODO Auto-generated catch block
  34.             e.printStackTrace();
  35.         }
  36.     }


11. 그닥 어렵지는 않았네.. 통신 환경 설정에 시간 대부분이 갔음.. 서비스 신청하고 테스트와 운영 서버 설정을 하는데.. 이게 잘 안됨..
그리고 여러대 운영하면 세미콜론으로 연결하면 된다.

12. 끗~~~! 뭘 봐!!


2016년 1월 7일 목요일

MSSQL에서 소숫점 입력하다가... 에러 발생..

decimal로 컬럼을 설정하고..

사이즈는 그냥 디폴트로 했더니.. 8.8 이 기본으로 잡혔다..

그런데.. 3.5 란 값을 없데이트 했더니..

아래와 같은 오류 발생..

numeric을(를) 데이터 형식 numeric(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.


흠?? 이상하네.. 그냥 같은 타입인데.. casting 안 한거 같은 오류가 날까? 하다가..

이것 저것 찾아봐도.. 그냥 데이터 유형 잘못이라고 하는데..

컬럼의 Precision을 다시 수정해 봄.. 8.2 로.. 변경 하니..


된다...

뭐지??

일단 예상은.. squrrel에서 meta 정보를 보니.. 처음에는

Precision 이 8, Scale 이 8로 되어 있고, ColumnDisplaySize가 10으로 되어 있음..

이 상태에서 Scale이 2로 변경되니 문제 없음..

Precision과 Scale의 합이 커서 그런거 같다는 생각은 듬..

애초에 8.8로 설정을 안해줬음 되잖여!!!

[낯선] 2026.06.20 이태원 MZK MuzikBar 공연

간만의 공연 이태원 비틀즈가 이전하여 MZK MuzikBar 로 새 단장 오픈을 한 뒤로 2번째 공연 새 베이시스트가 합류한 뒤로 첫 공연이기도 함.. 이래저래 틀린 부분도 많지만.. 그래도 간만에 그럭저럭 잘했다.. https://www.youtub...