브라우저 패턴이 너무 다양함...

하는데까지..



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
SELECT browser, COUNT(browser) AS cnt
FROM (
    SELECT
        CASE
            WHEN user_agent LIKE '%Windows%Chrome%' THEN 'Chrome'
            WHEN user_agent LIKE '%iPad%Chrome%' THEN 'ChromeIPad'
            WHEN user_agent LIKE '%iPhone%Chrome%' THEN 'ChromeIPhone'
            WHEN user_agent LIKE '%Android%Chrome%' THEN 'ChromeAndroid'
            WHEN user_agent LIKE '%Mac%Chrome%' THEN 'ChromeMacOs'    
            WHEN user_agent LIKE '%Linux%Chrome%' THEN 'ChromeLinux'
            WHEN user_agent LIKE '%Chrome%' THEN 'ChromeEtc'
             
            WHEN user_agent LIKE '%Windows%Safari%' THEN 'Safari'
            WHEN user_agent LIKE '%iPad%Safari%' THEN 'SafariIPad'
            WHEN user_agent LIKE '%iPhone%Safari%' THEN 'SafariIPhone'
            WHEN user_agent LIKE '%Android%Safari%' THEN 'SafariAndroid'
            WHEN user_agent LIKE '%Mac%Safari%' THEN 'SafariMacOs'    
            WHEN user_agent LIKE '%Linux%Safari%' THEN 'SafariLinux'  
            WHEN user_agent LIKE '%Safari%' THEN 'SafariEtc'
             
            WHEN user_agent LIKE '%Windows%Firefox%' THEN 'Firefox'
            WHEN user_agent LIKE '%iPad%Firefox%' THEN 'FirefoxIPad'
            WHEN user_agent LIKE '%iPhone%Firefox%' THEN 'FirefoxIPhone'
            WHEN user_agent LIKE '%Android%Firefox%' THEN 'FirefoxAndroid'
            WHEN user_agent LIKE '%Mac%Firefox%' THEN 'FirefoxMacOs'    
            WHEN user_agent LIKE '%Linux%Firefox%' THEN 'FirefoxLinux'     
            WHEN user_agent LIKE '%Firefox%' THEN 'FirefoxEtc'
             
            WHEN user_agent LIKE '%MSIE 6%' THEN 'IE6'
            WHEN user_agent LIKE '%MSIE 7%' THEN 'IE7'
            WHEN user_agent LIKE '%MSIE 8%' THEN 'IE8'
            WHEN user_agent LIKE '%MSIE 9%' THEN 'IE9'
            WHEN user_agent LIKE '%MSIE 10%' THEN 'IE10'
            WHEN user_agent LIKE '%rv:11%' THEN 'IE11'
             
            WHEN user_agent LIKE '%iPad%' THEN 'AppIPad'
            WHEN user_agent LIKE '%iPhone%' THEN 'AppIPhone'
            WHEN user_agent LIKE '%Android%' THEN 'AppAndroid'
 
            WHEN user_conn_info LIKE '%Opera%' THEN 'Opera'
            ELSE 'EtcBrowser'
        END browser
        FROM USER_AGENT_HISTORY
        WHERE LOGIN_DT >= '20160517000001' AND LOGIN_DT <= '20160517999999'
    ) AS browsers
GROUP BY browser
ORDER BY cnt DESC



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script src="<c:url value="/resources/plugin/chart/datamap/d3.min.js" />"></script>
<script src="<c:url value="/resources/plugin/chart/datamap/topojson.js" />"></script>
<script src="<c:url value="/resources/plugin/chart/datamap/datamaps.kor.min.js" />"></script>
<div id="map" style="position: relative; width: 500px; height: 500px; border: 1px red solid"></div>
<script>
jQuery(document).ready(function(){
    var basic = new Datamap({
        element : document.getElementById("map"),
        scope : 'kor',
        fills : {
            defaultFill : "#ABDDA4",
            authorHasTraveledTo : "#fa0fa0",
            'colorTest1' : '#EAA9A8',
            'colorTest2' : 'red',
            'colorTest3' : 'blue'
        },
        setProjection : function(element) {
            var projection = d3.geo.equirectangular().center([ 0, 0 ])
                                 .rotate([ -128, -36 ])
                                 .scale(5000)
                                 .translate([ element.offsetWidth / 2, element.offsetHeight / 2 ]);
            var path = d3.geo.path().projection(projection);
            return {path : path, projection : projection};
        },
        geographyConfig : {
            highlightBorderColor : '#bada55',
            popupTemplate : function(geography, data) {
                return '<div class="hoverinfo">' + geography.properties.name + ' - Hit:' + data.hit + ' </div>'
            },
            highlightBorderWidth : 2
        },
        data : {
            "KR.SO" : {"fillKey" : "colorTest1", "hit" : 5},
            "KR.KG" : {"fillKey" : "colorTest2", "hit" : 50},
            "KR.KN" : {"fillKey" : "colorTest3", "hit" : 100}
        }
    });
});
</script>


http://datamaps.github.io

특정 테이블의 정보를 특정 데이터로 업데이트 해달라는 요청이 가끔 들어온다.

물론 그 데이터는 엑셀로 올것이고, 현재 DB데이터와 1:1 맵핑되는 상황이 아닐것이죠.

그래서 1번의 방법과 같이  임시 테이블에 넣은다음에 쿼리를 돌리겠죠.


하지만 1번과 같이 하게되면 set 절이 반복적으로 Random 액세스를 해서 부담이 발생한다는군요.

뭐 지금까지 요청받은 부분에서 부담요소가 있었던것은 아니지만 , 동료분이 2번과 같은 Oracle 문법을 사용하길래 메모해본다.


우선적으로 위와 같은 성능을 해결하기위해서 "Updatable Join View" 방식을 사용한다고 합니다.

그런데 이 방법은 제약조건이 존재하는데 꼭 UK 또는 PK 설정이 되어 있어야 한다고합니다.

하지만 그렇지 않은 경우도 있을 수 있죠.

그래서 사용하는것이 BYPASS_UJVC 힌트절이라고 합니다.


머 자세한건 잘 모릅니다.

동료분이 사용하길래 메모해둠!!!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- 1번
update test_a1 a
set b = (
    select b
    from test_b1
    where a = a.a
)
where exists (select 1 from test_b1 where a = a.a);
 
-- 2번
update /*+ BYPASS_UJVC */
(
    select a.b a_b, b.b b_b
    from test_a1 a, test_b1 b
    where a.a = b.a
)
set a_b = b_b;
 
/* 
drop table test_a1;
drop table test_b1;
create table test_a1
(
    a number,
    b varchar2(10)
);
create table test_b1
(
    a number,
    b varchar2(10)
);
insert into test_a1 values(1, 'a1');
insert into test_a1 values(2, 'a2');
insert into test_b1 values(2, 'a2222');
*/


테스트 셈플 페이지 만들다가 Button 테그를 사용했더니, IE10에서 이상한 문제가 발생했다..
한참 삽질 끝네.. 아래와 같이 하니 해결이 되네..
예전에 IE6 특정 케이스에서 return false; 안 붙이면 클릭이 안되는 문제가 있더니만.. 또 삽질 무진장 했네..
웬만하면 INPUT 테그를 사용해야겠다!!!

1
2
3
4
5
6
7
8
9
10
11
12
<script>
    function testGo(){
        document.frm.submit();
    }
</script>
<form name="frm" action="gogo" method="post">
    <button onclick="testGo()">gogo</button><!-- HTTP Status Code = Aborted 나면서 중복 호출 -->
    <button onclick="testGo(); return false;">gogo2</button><!-- 정상 호출 -->
    <input type="button" onclick="testGo();"" value="gogo3"><!-- return false; 안 붙여도 정상 호출 -->
    <input type="submit" value="구매하기"><!-- 정상 호출 -->
 
</form>


마우스 오버 시 이전에 오버됐던 객체를 리턴한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<div onmouseover="moouseOverHandler(event)">
    <div id="red" style="width:100px; height:100px; background:red"></div>
    <div id="blue" style="width:100px; height:100px; background:blue"></div>
    <div id="black" style="width:100px; height:100px; background:black"></div>
</div>
 
<div id="msg"></div>
 
<script>
    function moouseOverHandler(e){
        document.getElementById("msg").innerHTML = e.fromElement.getAttribute("id");    // IE: fromElement, 표준: relatedTarget
    }
</script>

create database aaa default character set utf8;

SET storage_engine=INNODB;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
create or replace procedure sp_config_setting2
is  
    menuCd  varchar(4);
    menuUrl varchar(200);
     
    cursor curTb   
    is
    select menu_cd, menu_url from menu where menu_ctg = 'A' and use_yn = 'Y' and menu_view_yn = 'Y';
begin
     
    open curTb;
     
    loop
        fetch curTb
        into menuCd, menuUrl;
        EXIT  WHEN  curTb%NOTFOUND;
         
        if menuUrl is not null then
             
            if instr(menuUrl, '냠냠냨') = '0' then
                dbms_output.put_line(menuCd || '=' || menuUrl || '-' || instr(menuUrl, '냠냠냠'));
                 
                update menu set menu_url = '냠냠냠' where menu_cd = menuCd;
            end if;
        end if;
    end loop;   
     
    close curTb;
end;
 
--execute sp_config_setting2();
--DROP PROCEDURE sp_config_setting2;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * 해당월 주의 최대값
 * @param dateStr       YYYYMM
 */
function getWeekCountOfMonth(dateStr) {
    var year  = Number(dateStr.substring(0, 4));
    var month = Number(dateStr.substring(4, 6));
     
    var nowDate = new Date(year, month-1, 1);
 
    var lastDate = new Date(year, month, 0).getDate();
    var monthSWeek = nowDate.getDay();
 
    var weekSeq = parseInt((parseInt(lastDate) + monthSWeek - 1)/7) + 1;
 
    return weekSeq;
}

1
2
3
4
5
6
7
jQuery(document).bind("mobileinit", function(){
    // 페이지 이동 시 back 버튼 표시 유무(1.7 버전부터는 default 값이 false 인듯)
    jQuery.mobile.page.prototype.options.addBackBtn = true;
     
    // 페이지 이동시 이동효과(기본값 fade | fade, pop, flip, turn, low, slidefade, slid, slideup, sliddown, none)
    jQuery.mobile.defaultPageTransition = "slide";
});
$.mobile.changePage(to, options)
to (string or object, required)
options (object, optional)

ex) (string, options)
$.mobile.changePage( "../alerts/confirm.html", {
transition: "pop", // 이동효과(fade, pop, flip, turn, low, slidefade, slid, slideup, sliddown, none)
reverse: false, // back button 클릭시 이전 페이지 이동 여부(default:false)
changeHash: false // hash 데이터 업데이트 여부
});


+ Recent posts