반응형

보통 날짜 선택이나 자동완성을 위해  datepicker나 autocomplete을 사용할 때

클래스로 해당 컨트롤을 제어하게 된다.
이렇게
$(".DATE").datepicker();

뭐 여기까진 좋다.
하지만 clone이 들어오면 이야기는 달라진다.

var objClone = $("#DIVSAMPLE").clone(true);
objClone.find(".DATE").datepicker('destroy').removeClass('hasDatepicker').removeAttr('id').datepicker().attr('name', 'DATE');

이렇게 생쑈를 해줘야 한다.
이게 뭐하는 짓일까

생쑈 하지 말고 동적으로 생성된 컨트롤에 이벤트를 줘야 한다면
포커스 받았을 때 이벤트 부여
포커스 잃었을 때 이벤트 삭제
이렇게 처리한다면 한결 깔끔해질 수 있다.

$(".DATE").focus(function() {
    $(this).datepicker();
});

$(".DATE").focusout(function() {
    $(this).datepicker("destroy");
});
           

그나저나 티스토리 개편된 UI는 참... 에효
앱도 그렇고 편집기도 그렇고 참.. 

반응형
Posted by Hippalus
,

반응형

jQuery로 class나 id로 checkbox를 check시키는건 쉽다.
동적으로 생성된 checkbox 역시 쉽다.
가령 부모 checkbox를 check 할 경우 자식 checkbox도 check 시켜야 할 경우

아래 샘플처럼 부모에 적당한 attr로 값을 주고 자식에겐 해당 attr의 class로 설정해준다면 부모 check시 자식도 check가 가능하다.

$("." 이후 + 로 부모의 attr값을 연결시켜주고 prop checked하면 끝난다.

$("." + $(this).attr("CODE")).prop("checked", true);

<input type="checkbox" name="parent" CODE="GROUP_1">
<input type="checkbox" name="child" class="GROUP_1">
<input type="checkbox" name="child" class="GROUP_1">

반응형
Posted by Hippalus
,

반응형

        SELECT

          WD.WD_IDX, WD.WD_NAME, WDM.MEMCNT

        FROM    

          TABLE1 AS WD

          LEFT OUTER JOIN

          (

              SELECT WD_IDX, COUNT(1) AS MEMCNT FROM TABLE1_SUB AS WDM WHERE WDM.WDM_DEL = 0 GROUP BY WD_IDX

          ) AS WDM ON WD.WD_IDX = WDM.WD_IDX

        WHERE    

          WD.WD_YEAR = 2020

  AND WD.WD_DEL = 0

        ORDER BY

          WD.WD_NAME ASC

 

 

        SELECT

          WD.WD_IDX, WD.WD_NAME, (SELECT COUNT(1) FROM TABLE1_SUB WHERE WD_IDX = WD.WD_IDX)

        FROM    

          TABLE1 AS WD

        WHERE    

          WD.WD_YEAR = 2020

        ORDER BY

          WD.WD_NAME ASC

반응형
Posted by Hippalus
,

반응형

pageSize = 15

SELECT 
   * 
FROM 
( 
   SELECT 
      BOARDIDX, TITLE, USERID, ROW_NUMBER() OVER (ORDER BY BOARDIDX DESC) AS IDX  
   FROM
      BOARD 
) AS RESULTS
WHERE
   IDX BETWEEN ? + 1 AND ?

.Parameters.Append .CreateParameter("@PAGE", adInteger, adParamInput, , (currentPage-1) * pageSize)
.Parameters.Append .CreateParameter("@PAGE2", adInteger, adParamInput, , currentPage * pageSize)

게시판 페이징 쿼리를 짤 때 거추장스럽게 select .... 이후 똑같은 select 쿼리를 not in 안에 넣어 불필요하게 쿼리가 길어지는 방식을 취하는 방식을 종종 볼 수 있다.
굴러만 간다면 좋지만 이런 not in 방식은 심각한 성능 저하를 초래하게 된다.
예를들어 전체 데이터가 100만건이고 분포도가 나쁜 이용자 이름 검색을 통한 게시판 결과를 보려 한다면
첫페이지는 그럭저럭 만족할만한 성능을 보여줄 것이다.
하지만 2페이지, 3페이지... 페이지가 뒤로 갈 수록 그 속도는 보장할 수 없게 된다.
(제 아무리 인덱스를 걸었다 치더라도.)

그냥 ROW_NUMBER()를 이용한다면 페이지가 뒤로 이동하여도 균등한 결과를 보장 받을 수 있을것이다.
쿼리 자체도 길어지지 않으니 사용 안할 이유가 없다.
where조건이 10개만 붙어봐라. 나중에 유지보수 하려면 본인이 하더라도 욕 나온다.

반응형
Posted by Hippalus
,

반응형

<tr>
   
<td><input type="checkbox" name="IDX" class="IDX"></td>
    <td><input type="textbox" name="NUM" class="NUM"></td>
</tr>

        $(".IDX").change(function() {
            if (this.checked) {
                $(this).closest('tr').find("td").find(".NUM").focus();
            }
        });

closest로 현재 checkbox가 속한 tr을 먼저 찾고 td에서 class가 NUM인걸 찾아 focus주면 끝

반응형
Posted by Hippalus
,

반응형

얼마전부터 국내 뉴스에 소개된 중국 환구시보의 지적질 뉴스

https://imnews.imbc.com/news/2020/world/article/5664598_32640.html

대충 코로나 지적질 뉴스 요약은 한국 등 해외 국가들이 지금처럼 뜨끄 미지근한 대응이 아닌 보다 공격적인 자세로 우한 코로나 바이러스에 대한 방역 작업을 수행해야 한다란건데

얼굴에 철판을 몇m로 깔면 저럴 수 있을까 싶다가도
설마 아니겠지 싶어 찾아보니
영문판 환구시보(globaltimes)에 정말 컬럼 형태로 실려 있더란 ㅡㅡ

https://www.globaltimes.cn/content/1180541.shtml

뭐 싼 뭐가 어디서 지적질 시전인지

중국 상황 나아지면 한국인 입국금지 시켜도 전혀 이상하지 않을 밑밥으로 보일지경임

반응형
Posted by Hippalus
,

반응형

분명 xCode의 앱 이름을 바꿔줬음에도 푸시를 날리면 푸시 아이콘 옆에 앱 이름이 예전 이름으로 표시되는 경우가 존재한다.

이땐 폰 또는 시뮬레이터를 리부팅하면 간단히 해결된다.

 

Xcode: How to change App Name for Notifications Center

Rebooting the device or resetting the simulator seems to fix the issue.

https://stackoverflow.com/questions/26704849/xcode-how-to-change-app-name-for-notifications-center

반응형
Posted by Hippalus
,

반응형

node.js로 만든 서비스를 정기적으로 실행시키기 위해 일반적으로 cron을 쓰던 뭘쓰던간에 서버에 node.js 스크립트를 설치해야 한다.
문제는 서버 특성상 1대가 아닌 다수의 서버인 경우 전산관리자는 친절하게 해당 서버를 일일이 로그인 처리 해주지 않는다란 사실이다.

따라서 비로그인 상태에서도 해당 스크립트가 동작되길 바란다면 윈도우의 작업 스케줄러에 등록하여 비로그인 상태에서도 윈도우가 부팅되면 자동 실행되도록 처리하는 추가 작업이 필요하다.

일단 당연히 트리거 탭에선 시작할 때로 선택해주고 동작탭에선 아래처럼 프로그램 시작을 선택해준다.

흔히 실수하는 두가지가 있는데 하나는 이렇게 윈도우 작업 스케줄러의 프로그램/스크립트 부분을 node가 아닌 cmd로 해버릴경우 당연히 아무런 동작을 하지 않는다.

프로그램/스크립트 부분엔 node(그럴일 없겠지만 만약 node의 path가 설정되지 않았다면 node의 전체경로로 등록하여야 함)
인수 추가(옵션) 부분엔 해당 node 스크립트가 존재하는 폴더의 .js까지 모두 적어주면 정상 동작한다.

한가지 긴가 민가 한부분이 존재하는데 작업스케줄러에서 스케줄러 등록시 작업 만들기가 아닌 기본 작업 만들기로 해야 정상 동작이 하는것 같다.(삽질을 해대서 확실치 않음)

 

끝으로 일반탭에선 작업등록자를 사용자 또는 그룹 변경을 눌러 로그인 작업자가 아닌 SYSTEM으로 등록시켜주길 바란다.

반응형
Posted by Hippalus
,

반응형

똑같은 함수를 태우는 ajax임에도 어떤 호출은 성공 어떤 호출은 실패로 떠서 적잖이 난감한적이 있었음
검색해보니 아래와 같은 결과를 얻을 수 있었다.

결론부터 하자면 결과값 받기도 전에 페이지가 새로고침되면 code는 0으로 리턴된다.

가령 selectbox를 선택(onChange)시 페이지를 리로드하고 해당 값을 ajax로 보내 db값을 변경하려 들 때 이런 오류를 유발시킨다.

  • doing cross-site scripting (where access is denied)
  • requesting a URL that is unreachable (typo, DNS issues, etc)
  • the request is otherwise intercepted (check your ad blocker)
  • as above, if the request is interrupted (browser navigates away from the page)

따라서 onChange이벤트에서 form을 submit시키지 말고 ajax의 success 리턴 함수에서 정상임을 확인 후 submit시키는 방식으로 코드를 짜면 해결된다.

이걸 몰라서 20분을 헤맴 ㅡㅡ

 

반응형
Posted by Hippalus
,

반응형

참 ms는 ㅂ읍ㅅ읏 스러움.

지들 사이트 각종 kb링크들은 죄 깨지고 방치된게 부지기수고

프래임워크 역시 설치조차 못하는 상황이 빈번하다.

Windows 10. Install .NET Framework 3.5 error 0x800F0954

 

  1. regedit 실행 후 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU “UseWUServer” 를 0 으로 변경
  2. 리부팅
  3. 제어판 > 프로그램 > 프로그램 및 기능의 windows 기능 켜기/끄기에서 .NET Framework 3.5(.net 2.0 및 3.0 포함) 체크 후 인스톨(누구는 하위 펼치기를 눌러 http 체크 항목 두개를 다 체크하라지만 안해도 됨)
  4. regedit 실행 후 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU “UseWUServer” 를 1로 원상복구 변경 
  5. 리부팅

잘 좀 하자

 

 

반응형
Posted by Hippalus
,