반응형

배터리게이트로 요즘 아이폰 유저들의 원성을 사고 있는 애플

아이폰7+를 사용중인 본인은 얼마전부터 액정 좌측 상단에 ㄱ자로 검은 테가 생기기 시작하였다.

다행히 1년이 지나지 않았기에 무상수리 또는 리퍼를 바라고 동부일렉트로닉스 애플 공식 AS센터를 방문하였다.

이게 2018년 1월 6일 토요일이었다.

아침 9시 30분쯤 도착하였으나 배터리 게이트 덕분에 AS센터엔 수많은 사람들로 벅실대었고

1시간이상 걸린다는 이야기에 결국 난 접수 후 기다리다 다음번에 오겠다며 허탕을 치었다.


그리고 오늘 동일한 토요일 동부일렉트로닉스에 방문하였다.

방문전 해당 센터의 여직원에게 수리시 소요되는 시간을 문의한 결과 1시간 ~ 2시간 정도 필요하다란 이야기를 들은지라 다음 약속시간을 조금 넉넉히 해두고 방문하였다.

다행히 배터리 게이트도 잠잠해 졌는지 예전만큼 사람들이 많진 않았다. 

내 차례가 되어 접수를 하고 기다리자 AS기사의 호출에 따라 폰을 제출하니 대략 20분 정도 시간을 요청한다.

뭐 괜찮다.

20분 이후 AS기사가 말하길 액정교체가 필요하며 시간이 2시간 소요된다 말한다.

헐! 기다리는데 10분 진단 20분 여기에 또 2시간?

그보다 더 가관인건 어쩌면 애플센터에 보내야 할지 모른다며 알아봐야 한단 이야기였다.

하.... 자체 수리도 가능한 상황에서 애플의 개떡같은 개막장 AS정책 때문에 내 폰을 근 일주일 가깝게 떠나보내야 한단 이야기.

알아보겠다며 이리저리 살펴보던 AS기사는 최종 사형선고를 내려주었다.

주말이 껴서 빠르면 다음주 목요일쯤이라며 입고를 요청하길래 그럼 일단 지금까지 진행한 내용을 토대로 나중에 평일 저녁시간에 방문해도 되겠느냐란 질문에 정말 어처구니 없는 이야기를 듣게 되었다.

테스트 프로그램 이력 때문에 지금 당장 맡기지 않고 나중에 맡기겠다면 똑같이 30분 이상 접수부터 진단까지 또 진행해야 한단 이야기.

하...................... 진짜 암걸릴것 같다.

이 무슨.. 병맛같은 정책인가.

AS기사가 친절한가? 하면 그도 아니다.

애플정책 때문에 열받고 기사 태도 때문에 또 열받고 이중으로 열받는다.

고작 액정하나 불량 때문에 센터에 몇번을 왔다 갔다 해야 하는가?

차비에 시간에!!!!


애플 앱스토어 리뷰질도 열받는데 애플은 AS까지도 갑질이다.

내가 왜 아이폰을 처음부터 써왔을까!!! 짜증이 밀려온다.

배터리도 즈그들 잘못이면서 유상교체하는 뻔뻔한 애플

용서가 안된다.

안드레기라 욕해왔지만 요즘 안드레기 꽤 괜찮게 나온다.

충전하며 음악도 들을 수 없는 고자폰. 

에라이


반응형
Posted by Hippalus
,

반응형

select

        (

            (

                (

                    acos(

                            sin( 기준Lat * PI() /180.0 ) *

                            sin( dbLat * PI() /180.0 ) +

                            cos( 기준Lat * PI() /180.0 )  *

                            cos( dbLat * PI() /180.0 ) *

                            cos( (기준Lng - dbLng ) * PI() /180.0  )

                    )

                ) *  180.0 / PI()

            ) * 60*1.1515*1.609344*1000

        ) as distance

from dbTable


기준Lat = 추출한 Lat

기준Lng = 추출한 Lng

dbLat = DB상의 Lat

dbLng = DB상의 Lng

dbTable에 레코드들 위경도 넣고 select 하면 m 추출됨

반응형
Posted by Hippalus
,

반응형

FieldName

 aaa

 bbb

 ccc

 ddd

 eee

 fff

 ggg

MSSQL에서 이런 테이블을 aaa,bbb,ccc,ddd,eee,fff,ggg 처럼 하나의 필드로 나타내려 할 경우


SELECT 

STUFF((SELECT '^' + FieldName FROM TableName FOR XML PATH('')),1,1,'') 


STUFF와  FOR XML PATH 로간단히 나타낼 수 있다.

이후 Classic ASP 등에선 split 함수를 사용한다면 손쉽게 쿼리 후 배열 저장도 가능하겠다.

arrData = Split(FieldName, "^")

response.write ubound(arrData)

response.write arrData(1)


반응형
Posted by Hippalus
,

반응형

jQuery가 쉽긴 하지만 정확히 인지하고 사용하지 않으면 조금만 응용하려해도 막히는것도 사실이다.

일전에 잠시 다뤘던 배열 컨트롤에 대한 제어를 다시 떠올려보자

대부분 동일한 클래스명을 통해 접근 후 제어를 하게 된다.

이렇게 해당 컨트롤이 위치한 tr에 속한 컨트롤을 접근하듯이


            var row = $(this).closest('tr');

            var objTarget = row.find('.S_IDX');        

            

selectbox의 option을 한번에 날리는 empty() 함수야 

objTarget.empty(); <-- 이렇게 처리하면 잘 동작하지만

선택된 녀석의 text를 찾는등 추가 인자가 들어가는 상황의 함수라면 이야기가 달라진다.


이런식으로 접근해서 text를 얻어오는게 일반적이지만 

$(#selectBox option:selected").text();


배열 컨트롤이므로 위에서 언급한대로 object를 구한 상태에서 접근해야 하므로 objTarget를 통해 아래처럼 접근을 시도해보면 동작하지 않음을 확인할 수 있다. 

$(objTarget option:selected").text(); ???

(objTarget option:selected").text(); ???

objTarget.(option:selected").text(); ???


결론은 이렇게 하면 된다.

$('option:selected', objTarget).text();

반응형
Posted by Hippalus
,

반응형

개발을 하다보면 배열로 컨트롤들을 나열하고 이 컨트롤들을 제어할 필요가 생긴다.

jQuery를 통해 동일한 클래스명으로 처리하면 쉬운데

막상 하려면 조금 난해해진다.

다음과 같이 컨트롤들이 테이블에 나열했다 쳐보자


 선택

값 

<selectbox class="SELECT_BOX" name="SELECT_BOX"> 

<input type="text" class="TEXT_BOX" name="TEXT_BOX">

<selectbox class="SELECT_BOX" name="SELECT_BOX"> 

<input type="text" class="TEXT_BOX" name="TEXT_BOX"> 

 <selectbox class="SELECT_BOX" name="SELECT_BOX">

 <input type="text" class="TEXT_BOX" name="TEXT_BOX">

 <selectbox class="SELECT_BOX" name="SELECT_BOX">

 <input type="text" class="TEXT_BOX" name="TEXT_BOX">

 <selectbox class="SELECT_BOX" name="SELECT_BOX">

 <input type="text" class="TEXT_BOX" name="TEXT_BOX">


하고자 하는 작업은 셀렉트박스를 선택하면 선택된 값을 해당 라인에 위치한 텍스트박스에 넣어주는 작업이다.

이 경우 closest을 사용하면 되겠다.

closest을 사용해 해당 row를 갖고온 후 그 row속에서 접근하고자 하는 컨트롤의 클래스명으로 접근 후

선택된 값을 넣어주면 끝난다.


        $(".SELECT_BOX").change(function(e) {

            e.preventDefault();

        

            var row = $(this).closest('tr'); // 일단 현재 선택한 셀렉트박스가 속한 tr을 찾은 후

            var findControl = row.find('.TEXT_BOX'); // tr에 속한 클래스만 찾아내면 손쉽게 텍스트박스를 발견 할 수 있으며

            findControl.val($(this).val()); // 발견한 텍스트박스에 현재 선택한 셀렉트박스의 값을 넣어주면 끝

        });  


개쉽다.









반응형
Posted by Hippalus
,

반응형

구글이 참 대단한게 컨텐츠를 잘 써먹는다란 점이다.
남들은 기능을 선 제공 후 컨텐츠 활용을 기대하지만
구글의 전략은 180반대 전력이다.

다양한 컨텐츠를 무료로 제공 후 이를 인질삼아 유료장사를 하는 기업

google 검색과 youtube red가 그 대표적

오늘은 유투브 레드의 무료체험 해지 방법을 알아보겠다.

내가 잘못 본게 아니라면 유투브 레드를 무료체험 터치를 한 순간
당신은 유투부 무료 체험기간내 해지하지 않으면 이후 지속적인 과금이 발생한다란 안내를 받을것이다.
설마 정기 구독개념이 그런것인가 아니겠지 싶지만 그래도 안전하게 유투브 무료체험을 해지하는게 좋다.

참고로 니중에 만료일까지 꽉꽉 눌러 채워 쓰고 무료체험 해지하겠다란 유저가 있다면 그러지 말라
유트부 무료체험 시작일 해지를 해도 남은 기간 내내 광고없이 백그라운드 모드와 다운로드까지 모두 이용가능하다.

이제부터 유투브 레드를 해지하는 방법을 알아보겠다.



꽤나 귀찮다 ㅡㅡ

반응형
Posted by Hippalus
,

반응형

어쩌다 웹페이지를 이미지로 저장해달라는 요구가 있다.

그때 유용한 오픈소스들을 활용하면 어렵지 않게 구현이 가능하지만

망할  M$ 익스플로러 때문에 삽질을 해댔다.

참고로 IE10 이상부터 지원한다.

아래 소스는 맥 크롬에서도 테스트 해봤다.


js 첨부파일은 각각 여기서 다운로드도 가능함

https://html2canvas.hertzen.com/

https://github.com/hongru/canvas2image


일단 include시키고

<script src="/js/html2canvas.js"></script>

<script src="/js/canvas2image.js"></script>


버튼 누르면 이미지 저장


$("#SAVE").click(function(e) {

    e.preventDefault();

    

   var canvas ="";

   html2canvas($("#container"), {

       onrendered: function(canvas) {

            //document.getElementById("RESULT").src = canvas.toDataURL();   // 이미지를 보여주고 싶으면 이런식으로 치환해버림 됨

                

            if (canvas.msToBlob) { // 망할 익스플로러 예외처리.. 망해라 M$

                var blob = canvas.msToBlob();

                window.navigator.msSaveBlob(blob, "FILENAME.png");

            } else {

                Canvas2Image.saveAsPNG(canvas, document.body.clientWidth, document.body.clientHeight, "FILENAME");

            }

       }

   });

});



*활용팁

이미지 덤프기능인 이 소스를 적용하였는데 스크롤이 너무 길어서 다 나타나지 않는다면?

사이즈를 키워주고 덤프 뜨면 되겠지.. 이정도는 기본이니 사족급 팁

window.resizeTo(document.body.scrollWidth, document.body.scrollHeight);



* 추가팁

빌어먹을 익스플로러에선 테이블선이 제대로 나타나지 않는다.

이럴땐 오픈소스를 수정해야 한다.

html2canvas.js를 열어 

이 파랑 부분을 widthcontainer.cssInt('border' + side + 'Width'), 

이렇게 width: container.cssFloat('border' + side + 'Width'),

고쳐주면 제대로 보여진다.



반응형
Posted by Hippalus
,

반응형

1.selectbox의 이름으로 선택하기


<input type="text" name="TXT" id="TXT">


<select name="SELECTBOX" id="SELECTBOX">

<option value="1">1학기</option>

<option value="2">2학기</option>

</select>


<a href="#" class="CLASSNAME" SELECTBOX="2학기">선택</a>



$('.CLASSNAME').click(function(e) {

e.preventDefault();


// 링크의 속성값을 구한 후

        var str = $(this).attr("SELECTBOX");


// 구한 값과 일치하는 SELECTBOX를 선택

        $("select[id='SELECTBOX'] option:contains(" + str + ")").attr("selected", "selected");

});






2.SELECTBOX DISABLE, ENABLE

$("#SELECTBOX").attr("disabled", "disabled"); // DISABLE

$("#SELECTBOX").removeAttr("disabled"); // ENABLE





3.엔터시 포커스 주고 클릭하기

$('#TXT').keypress(function(e) {

if(e.which == 13) {

jQuery(this).blur();

                jQuery('.CLASSNAME').focus().click();

                return false;

}

});




4.선택된 selectbox의 text구하기

alert($("#SELECTBOX option:selected").text());




5.selectbox 변경시 이벤트 발생

$("#SELECTBOX").change(function() {

alert("event 발생");

});




6.checkbox 토글 전체선택, 전체해제

$("#ALLCHK").click(function() {

if($("#ALLCHK").prop("checked")) {

$(".CLASSCHECKBOX").prop("checked",true).change();

} else {

//체크해제

$(".CLASSCHECKBOX").prop("checked",false).change();

}

})




6.TD클릭시 이동

<td class="btnRead" IDX="<%=IDX%>">이동</td>


$(document).on("click", "td.btnRead", function() {

var IDX;

IDX = $(this).attr("IDX");

            

document.location.href = "LINK.asp?IDX=" + AIR;

});        






7.ASP배열로 radio, checkbox를 다수 생성 후 각각 radio button change event 발생시, checkbox change event 발생시 처리

    <%

            For i = 0 To UBound(arrData, 2)

    %>

            $(".A_ATTENDRADIO<%=i %>").on("change", function(e) {

                e.preventDefault();                

                $(".A_ATTENDCD").eq(<%=i %>).val($(this).val());

                if ($(this).val() == '') {                

                    

                } else {

                    $(".A_ATTEND_SCHOOLVISIT").eq(<%=i %>).val('');

                    $(".A_ATTEND_SCHOOLVISITCHECK<%=i %>").prop('checked', false);

                }


                var chkAttend;

                chkAttend = $('.A_ATTENDRADIO<%=i %>:checked').val();

                if (chkAttend == "0401" || chkAttend == "0402" || chkAttend == "0403") {

                    $(".A_ATTEND_FIELD<%=i %>").prop("checked",false).change();                    

                }



            });

             

            $(".A_ATTEND_SCHOOLVISITCHECK<%=i %>").change(function(e) {

                e.preventDefault();

                

                if ($(".A_ATTEND_SCHOOLVISITCHECK<%=i %>").is(":checked")){

                    $(".A_ATTEND_SCHOOLVISIT").eq(<%=i %>).val($(this).val());

                    $(".A_ATTENDCD").eq(<%=i %>).val($(this).val());

                } else {

                    $(".A_ATTEND_SCHOOLVISIT").eq(<%=i %>).val('');

                    $(".A_ATTENDCD").eq(<%=i %>).val('');

                }

                

                $(".A_ATTENDRADIO<%=i %>:radio[value='']").prop("checked", true);


            }); 

          

    <%

            Next

    %>



반응형
Posted by Hippalus
,

반응형

이게 얼마나 쉽냐면

이것저것 HTML5 SLIDE 메뉴랍시며 적용해보다 매번 헛걸음만 하다 이 오픈 소스 한방에 모든게 다 해결되었기 때문이다.

왼쪽에서 오른쪽 또는 그 반대방향 푸시메뉴도 되고 레이어처럼 메뉴가 위로 올라오기도 할 수 있고, 아래에서 위에서 아래로도 되는 매우 강력한 HTML5 SLIDE MENU라 할 수 있겠다.

 

원본 출처는 다음과 같다.

https://tympanus.net/codrops/2013/04/17/slide-and-push-menus/

 

데모는 여기서 확인이 가능하다.

https://tympanus.net/Blueprints/SlidePushMenus/

 

다만 한가지 마음에 안드는건 메뉴가 그냥 쌩 버튼이라 좀 손봐야 한다란 부분이다.

또 어려운 중생들을 위해 수정된 HTML을 공유하니 있는 힘껏 경배하라

음하하하하

<div id="showLeftPush" style="position:absolute; z-index:100; padding:24px 0 0 20px;"><img src="../images/slideMenu.png" /></div>

흔히 사용되는 三 아이콘이 slideMenu.png라 보면 되고 이 위치가 버튼의 좌측에 배치된다 보면 된다.

 

버튼을 100%로 만드는건 알아서 -_-

반응형
Posted by Hippalus
,

반응형

mssql Management Studio에 시스템개체를 숨길 수 있는 방법을 찾아보니 다행히 이를 끌 수 있는 옵션이 mssql에 존재하여 공유한다.

 

 

일단 도구의 옵션

 

환경의 시작을 클릭하면 개체 탐색기에서 시스템 개체 숨기기가 uncheck되어있는데

이를 체크해준다.

 

그러며ㄴ mssql server management studio를 다시 시작해야 하는데 해주면 된다.

 

속이 다 시원하다.

개편함

 

 

 

반응형
Posted by Hippalus
,