2018년 11월 9일 금요일

읽기 전용인 input 태그의 값이 변경되었을 때, 감지 방법

진짜.. 이걸로.. 쌩쑈를 다 해서리.. 정리차 적어 놓음..

0. 쇼핑몰 리뉴얼 중 주문 화면에서 우편 번호를 받으면 이게 산간 오지 지역이면 도선료를 추가로 부여해야 하는 상황 발생.

1. 쇼핑몰 솔루션을 자체 마이그레이션 하는 것이기에 알아서 해야 함.

2. daum의 주소찾기 사용 중.

3. 솔루션에서 script로 자체 기능 구현해 놨음.. button 태그 클릭하면 class 감지해서 우편번호 검색기가 뜨게..

4. 문제는 우편 번호를 받는 input 태그가 readonly 속성이라.. 값을 전~~~혀 읽을 수 없음!!

5. 어쩔까 고민하고, 구글링 한 결과.. readonly 속성이 붙은 건 어쩔 수 없고, 키 입력이 안들어오게 막는게 더 낫겠다란 생각이 들음. (readonly 속성을 때면.. 값이라도 읽을 수 있으니..)

6. css로 readonly 속성이 된 것처럼 보이게 하고.. 자~~ 이제 onchange 이벤트로 값을 읽어보자!!!

7. 어? 이거 왜 못 읽지?

8. 이리저리 삽질 시작.. jquery로 이벤트 리스너도 추가. bind도 해보고 triger도 해보고..

9. 안된다!!! 이 쉬운게 안된다니!!! 이게 뭔 상황이지??

10. 좀 더 구글링을 해보니.. change란 이벤트는 키 입력이 이뤄져야 발생이 되고, 값을 고쳐준 경우엔 별도의 처리가 필요하다!~ 란 걸 알게됨..

11. 이하. 조치 내용...

12. 아직도 배울게 많군화~~~~

  1. var $input = $("#rcvPost")//이놈이 오늘의 주인공 우편번호 input box!!   
  2. $("#rcvPost").on('input'function() {
  3.     // Do this when value changes
  4.     console.log("Input text changed!" + $(this).val());
  5. });


이렇게 javascript에서 선언하고..

별도의 함수를 구현해야 한다.. 이하 코드..

  1. (function ($) {
  2.     var originalVal = $.fn.val;
  3.     $.fn.val = function (value) {
  4.         var res = originalVal.apply(this, arguments);
  5.  
  6.         if (this.is('input:text') && arguments.length >= 1) {
  7.             // this is input type=text setter
  8.             this.trigger("input");
  9.         }
  10.  
  11.         return res;
  12.     };
  13. })(jQuery);

이 같이 처리하면.. 값 변경이 일어나면.. 입력이 된 것처럼 동작시킨다..

진짜 끗!!





2018년 10월 31일 수요일

SQL 조건절에 CASE 문으로 여러 조건 결합하기...

오늘의 난관..

SQL 쿼리에서 기존에 프로시저를

8개 매장별로 조회하게 만들었는데..

오늘 요건이 인터넷 매장은 따로 보고...

전체 매장을 선택하면 인터넷 매장을 제외한 나머지들의 합산만 보고 싶다고 하여..

궁리...

프로시저에 임시테이블을 써서.. 분기문으로 나눌수가 없음..

조건절에서 제어해야 할 거 같아서.. 이리저리 구글링해 보니..

CASE WHEN을 OR로 연결해서 쓸 수 있다는 걸 알게 됨..

5000 이란 코드가 들어오면.. 인터넷 매장 (5040)을 제외한 나머지를 조회 시키고..

해당 매장코드가 들어오면 정상조회를 시키는 쿼리를 결국 완성..


  1. AND
  2.         (
  3.             (
  4.                 CASE WHEN @LOC = '5000' THEN '5010' END = 매장코드컬럼
  5.                 OR
  6.                 CASE WHEN @LOC = '5000' THEN '5020' END = 매장코드컬럼
  7.                 OR
  8.                 CASE WHEN @LOC = '5000' THEN '5030' END = 매장코드컬럼
  9.                 OR
  10.                 CASE WHEN @LOC = '5000' THEN '5060' END = 매장코드컬럼
  11.                 OR
  12.                 CASE WHEN @LOC = '5000' THEN '5070' END = 매장코드컬럼
  13.                 OR
  14.                 CASE WHEN @LOC = '5000' THEN '5080' END = 매장코드컬럼
  15.                 OR
  16.                 CASE WHEN @LOC = '5000' THEN '5090' END = 매장코드컬럼
  17.             )
  18.             OR 매장코드컬럼 LIKE ''+ @LOC + ''
  19.         )

또 쿼리 철인가... 쿼리만.. 죽어라 하게 되네...


======================================

2020-12-02 : 좀 나중에 덧붙임..

이렇게 쓰면.. 쿼리 처리는 쉽겠지만.. 성능은 포기해야 할지도..

지금 다시 짜라고 하면.. @LOC 별로 분기를 만들어서.. 귀찮지만(!!)

각각에 해당하는 쿼리를 짜는 것을 선택할 듯...

2018년 10월 22일 월요일

Java OpenJDK 10에서 MSSQL Connection 문제에 대해서...

Oracle의 삽질 덕분에..

혼자서 미리 피해보겠다고 OpenJDK 10으로 갈아탄 나...

덕분에 나의 최애 툴인 squirrel-sql에서 MS-SQL 접속 문제가 계속 발생한다..

로그 내용은 주로 연결 거부 또는 보안 문제로 접속을 할 수 없다인데...

웃긴건... 이클립스에도 비슷한 증상이 발생..

그래서..

운영 쪽은 JDK 1.8로 내리고.. mssql driver도 구버전으로 내렸다..

그래도 왠지 아쉬워서.. 개발환경은 어떻게든 해보려 했으나..

driver 버전과 상관없이 Java 쪽의 사정으로 연결 거부만 발생...

아마도 MS-SQL 서버의 구버전(경험상 2005 미만)들에는

동일한 문제가 발생하는 것으로 보인다..

결국은 http://jtds.sourceforge.net/ 라는 오픈소스 드라이버 적용하여 해결..

좀 허무하긴 한데.. 그래도 Java 버전 안 바꿔서 다행임..

끗!

2018년 9월 4일 화요일

Classic ASP로 xml 통신 소스 만지던 중...

기존 소스가 안돌아가기 시작..

마치 컴포넌트가 없는 것처럼 로그가 나오길래..

문득.. 현재 설치된 xml 통신관련 컴포넌트가 뭐가 있는지 확인하는게 뭘까?

라는 궁금증에서.. 검색 시작...

찾았음...

reg query hkcr /f xmlhttp

끗!

2018년 8월 21일 화요일

Using SQuirreL SQL Client With OpenJDK 10.X

Java가 유료화 된다는 소식을 접하고..

나중에 생길수도 있는 불필요한 문제를 피하고자 OpenJDK로 갈아탔다..

요즘엔 Java 개발할 일이 없어서 일단... 환경설정만 OpenJDK 10.2 버전에 맞게 설정했음.

그런데!!!

두둥!!!!

Squirrel SQL Client 3.7.X 버전이 니가 JRE를 10 버전 이상 쓰고 있다고 안된다고 오류 발생.

OpenJDK 버전을 상위버전에서 지원할까 하여 3.8.1 버전 다운로드해서 설치했지만..

여전히 같은 오류 발생...

로그를 봤을때는 JRE 버전체크를 통과 못하는 것으로 보인다..

실행 배치 파일을 열어서 확인..


다음과 같은 줄이 보였다..

@REM "%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 1.8 9


@REM는 내가 주석처리 한 거임.. 위의 명령 대신...

"%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 10

요렇게 바꿔주니까 통과!!

그런데.. 기존 설정에서 MS-SQL JDBC 드라이버를 6.2 버전쓰고 있었는데..

이번엔 Class가 없다는 오류가 발생..

역시 요딴거에 패치가 있을듯 하여.. 검색하니..

https://docs.microsoft.com/ko-kr/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017

에서 7.0 버전 발견..

설치해 보니.. JRE 8 버전과 JRE 10 버전 두가지 드라이버가 있드라..

그래서.. 10버전으로 드라이버 교체해서 성공!!

끗!


2018년 8월 20일 월요일

[NES] Bard's Tale 1 Ending

이 게임을 초등학교 5학년 때 처음 접하고..

플랫폼은 다르지만 거의 30년만에 엔딩을 봤다..


최후의 망가탑 5층에 겨우 도착!

당신은 문의 반대쪽에 끔찍한 무언가를 느꼈다.

데몬 로드와의 일전!

이녀석을 가볍게 격파하면...

드디어 망가를 만날 수 있다!


지금 망가가 당신의 앞에 있다!

그의 잔인한 눈이 당신들의 존재를 유심히 들여다본다.

왜 나를 방해하는가?

이 얼음의 세계가 가장 아름답지 않나?

인간의 느낌과 감정은 참 추잡하지.

왜 그것들로 성가시게 하는가?

너희들 내면에서 분노가 타오르는 게 느껴지는군.

나와 싸우길 원하는가, 나약한 인간이여?

좋아.

그걸 원한다면, 기회를 주지.


생각보다 어렵다...
하지만 cheat의 힘으로 만렙을 찍어놨기에...
한 20분 싸워서 겨우 이김..


물리쳤다!

우리가 이겼다!!!

남쪽에서 부는 따스한 바람을 느끼듯 자연스러운 안도의 한숨을 쉬었다.

태양은 구름을 뚫고 햇살이 창을 통해 쏟아진다.

빛이 망가의 몸을 그슬린다.

조각나 무너지고 먼지로 돌아갔다.

침묵이 평화와 성취로 당신의 파티를 감싼다.


선한 대마법사, 카이런이 섬광속에서 당신 앞에 나타났다.

잘했네! 스카라브래에서의 너희들의 임무는 이제 끝났네.

사악한 자는 이제 물리쳤고 그의 겨울의 주문은 지금 끝날거라네.

왜 망가가 그랬을까요?

아마 그는 그 자신의 마법이나, 힘에대한 탐구에 의해 지배당한 것 같네.

우리는 결코 알 수는 없을걸세...

자 돌아가세. 모든 이들에게 공포의 세대가 끝났음을 알리게!

카이런이 그의 지팡이를 휘두르자, 당신들은 공중에 떠올랐다.

... 스카라브래에 평화가 돌아왔다.


음유시인의 이야기

알려지지 않은 이야기




각종 공략들은 다음을 참고


이제 Bard's Tales Trilogy와 Bard's Tale 4에 도전해야 겠다..


2018년 8월 14일 화요일

IIS 실패한 요청 추적을 활성화 한 뒤.. 생기는 xml 파일 보기

asp 페이지 개발중, 500 오류가 났는데.. 화면상으로 전혀!!!!

에러 출력이 안되어.. 실패한 요청 추적 규칙 이란게 있단 걸 확인하고..

서버에 적용..

에러 발생시 xml과 xsl가 생성되는 것을 확인..

평소 사용하던 크롬으로 보았으나.. 하얗게....

IE로 보았더니... raw 코드가 난무...

xsl를 차단하는 것으로 판단...

열라 구글링...

결국 찾음..

보안이 구린 IE로 다음과 같이 하면 됨..

  1. add about:internet to trusted sites
  2. to run in compatibility mode.

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

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