반응형

HTML5에서 제공하는 WebStorage인 로컬스토리지와 세션에 대해서 간단히 알아보겠습니다.

*WebStorage - 데이터를 클라이언트에 저장


localStorage 

- 직접 지우지 않으면 만료기간이 없음

- 도메인마다 별도로 로컬스토리지 생성


sessionStorage

- 세션이 끝나면 종료

- 브라우저 종료시 세션종료

- 브라우저가 다르면 서로 다른영역

- 도메인마다 별도로 세션스토리지 생성


---------------------------------------------------------

(JavaScript)


localStorage 사용 방법


//로컬스토리지 저장

localStorage.loginId = value;

localStorage.setItem("key", value);


//특정 로컬스토리지 불러오기

localStorage.loginId;

localStorage.getItem("key");


//전체 로컬스토리지 데이터 불러오기

localStorage.getItem(); 


//특정 로컬스토리지 삭제

localStorage.removeItem("key");


//로컬스토리지 전체 삭제

localStorage.clear();



sessionStorage 사용 방법


//세션 저장

sessionStorage.setItem("key", value);


//특정 세션 값 불러오기

sessionStorage.getItem("key");


//특정세션 삭제

sessionStorage.removeItem("key");


//세션 전체 삭제

sessionStorage.clear();



---------------------------------------------------------

(Java)


sessionStorage 사용 방법


public String intro( HttpServletRequest req, HttpServletResponse res){

//세션 생성

req.getSession().setAttribute("key", value);

//세션 값 반환

req.getSession().getAttribute("key");

//세션 값 반환 없으면 세션생성

req.getSession();

req.getSession(true); // 위에꺼와 같음

//세션 값 반환 없으면 null 반환

req.getSession(true); 

}


public void filter(ServletRequest req, SercletResponse res){

HttpSession session = request.getSession();

}


// 세션종료 모두삭제

session.invalidate(); 


// Key인 세션 제거

session.removeAttribute("key"); 


// 세션 속성의 이름들을 Enumeration 객체 타입으로 리턴

session.getAttributeNames();  


// 1970년 1월 1일 0시 0초를 기준으로 하여 현재 세션이 생성된 시간까지 경과한 시간을 계산하여 1/1000초 값으로 리턴

session.getCreationTime();



반응형
반응형


팀버랜드 워커 구매 후기 -  ( TB0A1PBMD971 ) 




팀버랜드 워커구매 후기에 대해서 포스팅하겠습니다.


11번가에서 구경하다가 팀버랜드 워커가 가격이 좀저렴해서 구매하게됬습니다.


아래와 같은 6인치 워커를 구매했구요.


색상은 직접 받아보니 다크그레이 거의 검정색에 가까운 색이였습니다. 


보다보니 상당히 팀버랜드X포터 콜라보한 워커와 상당히 비슷하더라구요


콜라보한 워커는 아래 사진과 같이 두가지 카키, 블랙입니다.


콜라보한 포터x팀버랜드 워커는 본적이없어서 차이점은 모르겠지만


사진상으로는 매우 흡사합니다.


다른점이 한가지있는데 워커 옆면에 팀버랜드 마크가 


콜라보한 워커는 각인되어있고


제가 구매한 워커는 뱃지처럼 붙어있습니다.





이제부터 팀버랜드 워커 실물을 보여드리겠습니다.


아래와 같이 인증샷은 하나 찍었습니다.


블랙에 깔끔합니다.


주황색 포인트까지 잡아줘서 특이합니다.


잘신을지 잘모르겠지만 많이 신어야져 ㅋㅋㅋ





정면 측면까지 찍어서 올렸는데요 뭐 사진으로 보시는데로 깔끔 그자체


아 그리고 주황색 포인트로 된 부분은 빛받으면 빤짝거리더라구요.


신발끈도 반짝거리는것 같습니다.



착화감


직접 신고 걸어보지는 않았지만 발이 들어갔을때


닥터마틴처럼 아프지 않고 편안한 느낌을 받았습니다.


이부분은 신어보고 다시 후기를 적어야 할 것 같네요.



신발 사이즈!


사이즈는 270사이즈를 구매했고 살짝 여유가 있습니다.


제 발 스펙은 


스탠스미스 270


나이키 275~280


뉴발 990 270 D


닥터마틴 모노 270 딱맞음


좀 신어보고 후기 수정해드리겠습니다!!








반응형
반응형

*자료구조란

- 자료의 집합

- 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며, 

  자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것



*객체지향이란

- 자료구조와 이를 중심으로 한 모듈먼저 설계하고 실행순서 흐름을 짜는형식

- 여러 개의 객체 단위로 나눠 작업하는 방식

- 모듈 재사용 / 확장 및 유지보수 용이 / 생산성향상

- JAVA, C#

- 3대특성

  1.캡슐화 - 관련 데이터와 알고리즘이 하나의 묶음의로 정리

  2.상속 - 작성된 코드를 이어받아 새로운 클래스를 생성. 기존코드 재활용

  3.다형성



*절차지향이란

- 프로그램의 순서와 흐름을 먼저세우고 필요한 자료구조와 함수를 설계

  코딩방식 절차적(순서적)

- 여러 함수로 나누어 순차적으로 처리하는 방식



*소프트웨어 공학 개념

-질 좋은 소프트웨어를 경제적으로 생산하기 위하여, 

 공학, 과학 및 수학적 원리와 방법을 적용하는 것

1. 프로젝트 계획

2. 요구사항 정의 문서화

3. 설계

4. 구현

5. 시험



*MVC ( 모델 뷰 컨트롤러 )

 사용자 Controller를 조작 -> Controller는 Model을 통해서 데이터를 가져옴 

-> 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자 전달 



*프레임워크란

 - 확장 가능한 기반 코드와 필요한 라이브러리 두요소 통합제공

 - 기본설계나 필요한 라이브러리를 제공

 - 빠른시간에 완성 유지보수할수있는 환경제공해주는 솔루션



*아키텍처란

 -아키텍쳐는 전체 시스템에 대한 구조를 정의한 문서로, 

  시스템을 구성하는 컴포넌트와, 그 컴포넌트간의 관계, 그리고, 컴포넌트가 다루는 정보(데이타)를 정의함



*WAS

 -JSP, ASP, PHP등 서비스스크립트들을 처리할수 있는 WAS

반응형
반응형

오라클에서 데이터를 한줄로 가져오는 예제와 LISTAGG 한글 깨짐현상에 대해서 포스팅하겠습니다.


여러행을 한줄로 구분자를 줘서 하나의 컬럼으로 가져오는 예제로 LISTAGG 함수를 사용합니다.



*사용예제는 아래와 같이 사용하시면 되고, 기호에 맞게 변경하셔서 쓰시면 됩니다. 



SELECT 

    LISTAGG(컬럼, 구분자) WITHIN GROUP (ORDER BY 정렬할 컬럼) AS 바꿀 컬럼명 

 FROM 

    테이블 

WHERE 

    조건문




*아래는 예제를 위한 예제테이블을 만들었습니다.



SELECT 

    * 

FROM 

    (

        select 'A' as 영어, '1' as 정보 from dual

        union all

        select 'B' as 영어, '2' as 정보 from dual

        union all

        select 'C' as 영어, '1' as 정보 from dual

        union all

        select 'D' as 영어, '1' as 정보 from dual

    )



결과는 아래와 같습니다.







*이제 위 테이블을 가지고 데이터를 한줄로 가져오겠습니다.

 - 영어컬럼을 한줄로 가져올 예정입니다.

 - 정보가 1인 것을 조건으로 주겠습니다.

 - 구분자는 , (콤마) 로 사용하겠습니다.


SELECT 

    LISTAGG(a.영어, ',') WITHIN GROUP (ORDER BY a.영어) AS 영어정보

 FROM 

      (

        select 'A' as 영어, '1' as 정보 from dual

        union all

        select 'B' as 영어, '2' as 정보 from dual

        union all

        select 'C' as 영어, '1' as 정보 from dual

        union all

        select 'D' as 영어, '1' as 정보 from dual

    ) a

WHERE 정보 = '1'



위의 쿼리를 실행하면 아래와 같이

 - 조건인 정보가 '1'인 영어 컬럼의 데이터를 한줄로 뽑아냈습니다.



------------------------------------------------------------------------------------------------------


LISTAGG 한글 깨짐현상


LISTAGG를 사용해서 컬럼을 가져왔는데 한글이깨지는 경우는 컬럼 타입이 NVARCHAR 일 경우 그러는 것 같습니다.

NVARCHAR 타입을 VARCHAR로 데이터 타입 변환 함수인 CAST를 사용하여 변환해주세요.


CAST ( 컬럼 AS VARCHAR(50) ) AS 컬럼명


위와 같은 형식으로 사용하면 됩니다.


------------------------------------------------------------------------------------------------------


오라클에서 데이터를 한줄로 가져오기 및 LISTAGG 한글 깨짐현상에 대해 알아봤습니다.


감사합니다.








반응형
반응형



직장인 가방 추천 - 타미 스트라이프 노트북 가방( TMMS1AAE15A0 )



평소에 가방을 뭐살까 고민하고 있었는데 이건 그냥 지나칠수가 없었다.

보통 노트북 컴퓨터 가방은 진짜 노트북사면 주는 그런 가방느낌이였는데 

이 타미가방은 가운데 스트라이프 포인트와 심플함으로 나는 고급스러운 느낌을 받았다.

아래는 상품판매하는 곳에서 사진을 가져왔는데 정장에 들고있는 가방이 진짜 이쁜 것 같다.










구성


처음 택배를 받고 뜯었을 때 가방과 줄 두가지로 딱히 별다른 구성은 없다.

그리고 가방안쪽에는 가방을 각이 무너지지 않게 해주는 것들이 들어 있었다.




사이즈와 모델명


사이즈는  프리 사이즈로 42 * 29 * 9 cm 이며, 그렇게 작지도 크지도 않은 것 같다.

딱 노트북 15.6까지 들어갈 정도의 크기다.

모델명은 TMMS1AAE15A0 이거로 검색하면 네이버에서 찾을 수 있다.



무게


나일론 재질이여서 그런지 가방무게는 무겁지 않다.

가방이 은근히 무게가 있으면 계속 매고다닐때 어깨가 아픈데 그런 걱정은 안해도 될것 같다.

물론 노트북을 넣으면 무겁겟지만...



수납공간


전면에 하나있으며, 후면에는 없다.

후면 상단에 있는 것은 어떤 용도인지 알수가 없다. 명함꽂이인가..

안쪽에는 노트북을 넣고 고정시켜주는 것과 서류를 넣을수 있는 공간

볼펜을 2개 넣을 수 있는 공간과 작은 주머니 수납공간 하나가 있다.

보기보단 수납공관이 꽤 많은 편이다.



가격


가격은 원가 198000원이라고 적혀있으나 세일을 하고있어서 h패션몰에서 

쿠폰( 타미 19%쿠폰 / 회원가입 15% 쿠폰 )을 써서 95000원 아래로 구입했다. 

h패션몰 아니여도 가격은 네이버쇼핑에서 상품모델명으로 검색했을때 10만원 초반대로 구매할수가 있다.







마감


브랜드라 그런지 모르겠지만 일반적인 가방보다 마감이 상당히 좋은 편이며,

지퍼부분이 진짜 마음에 들도록 마감이 잘되있다.

물론 지퍼를 열고 닫을때의 느낌도 상당히 깔끔하다.





주관적인 총평


디자인적으로 스트라이프 포인트가 인상적이며, 무게와 적당한 가격과 브랜드라는 가치로 상당히 괜찮은 것 같다.

노트북을 넣고 다닐때도 좋을거 같지만 서류를 넣고 다니기에도 상당히 좋을 것 같다.

캐주얼에는 들고 다니기가 힘든 감이 있지만 세미정장, 정장같은 클래식 복장에는 상당히 잘어울릴거 같다.

기대하고 사서 만족하는 가방이라 오늘은 상당히 기분이 좋은 것 같다.  

직장인 서류가방이나 노트북가방을 찾으시는 분들에게 이 가방을 추천하고 싶다.



반응형
반응형

JAVA - 클라이언트 아이피 확인


public String getClientIp(HttpServletRequest request) throws Exception {


String ip = request.getHeader("X-Forwarded-For");

LOGGER.info("X-FORWARDED-FOR : " + ip);

    

String ip2 = request.getHeader("Proxy-Client-IP");

LOGGER.info("Proxy-Client-IP : " + ip2);


String ip3 = request.getHeader("WL-Proxy-Client-IP");

LOGGER.info("WL-Proxy-Client-IP : " + ip3);


String ip4 = request.getHeader("HTTP_CLIENT_IP");

LOGGER.info("HTTP_CLIENT_IP : " + ip4);


String ip5 = request.getHeader("HTTP_X_FORWARDED_FOR");

LOGGER.info("HTTP_X_FORWARDED_FOR : " + ip5);


String ip6 = request.getRemoteAddr();

LOGGER.info("Result : IP Address : "+ip6);


return ip6;

}

   

반응형
반응형

js/jquery - selectBox controller ( 셀렉트박스 제어 )




selectBox option selected  ( 셀렉스박스 옵션 선택 ) 


// #id인 selectBox에서

// selectBox의 value 값이 menu1 인 값 선택

$("#id").val("menu1").prop("selected", true); 


// #id인 selectBox에서

// selectBox의 첫번째 옵션 값 선택

$("#id option:eq(0)").prop("selected", true); 





selectBox option append ( 셀렉트박스 옵션추가 )


$("#id").append("<option value='menu1'>Pizza</option>");






selectBox option replace ( 셀렉트박스 옵션변경 )


$("#id option:eq(1)").replaceWith("<option value='menu2'>Hotdog</option>");




selectBox option remove ( 셀렉트박스 옵션제거 )


$("#id option:eq(0)").remove();

 

// 셀렉트박스 처음/마지막 option 삭제

$("#id option:first").remove();


$("#id option:last").remove();




selectBox selected option text /value / index ( 셀렉트박스 선택된 옵션의 text / value / index )


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


$("#id option:selected").val();

 

$("#id option").index($("#id option:selected"));

 



selectBox option size ( 셀렉트 박스 옵션 갯수)


$("#id option").size();

 

// 선택된 옵션 이전/이후의 옵션 갯수

$("#id  option:selected").prevAll().size();


$("#id option:selected").nextAll().size();

반응형
반응형

jquery 에서 제공하는 $.isNumeric( ) 를 사용하며 숫자 체크했습니다. 


$.isNumeric( ) 는  ( )안에 값을 넣어주면 숫자인지 아닌지 체크해서 true / false 로 반환해줍니다.


$.isNumeric( "102" ); -> true 

$.isNumeric( " 100" ); -> true 

$.isNumeric( " 100#" ); -> false

$.isNumeric( "10dd" ); -> false

$.isNumeric( "dd" ); -> false


사용해봤는데 위와같은 결과가 나왔습니다. 

그외에도 16진수, 소수점, +-등도 true로 반환합니다.


그래서 이거를 사용해서 문자와 숫자의 섞인값에 숫자에만 #숫자# 형식으로 바꾸는 것을 만들어봤습니다.



var selKeyword = "경기도, 26, 100";


// ,가 들어가면 공백을 제거해주고 구분자인 ,을 공백으로 구분을 바꿔줍니다.

if(selKeyword.indexOf(",") != -1 ){

selKeyword = selKeyword.replace(/ /gi, '');

selKeyword = selKeyword.replace(/,/gi,' ');

}

// 그러면 값이 sleKeyword = "경기도 26 100"; 됩니다.


// 구분자가 있는경우 split함수를 사용해서 배열로 저장후 

// for문을 돌려서 $.isNumeric( )로 숫자인지 확인을 하고 숫자이면 ##을 넣어줬습니다.


if(selKeyword.indexOf(" ") != -1 ){

var selList = selKeyword.split(" ")

for(var i=0; i<selList.length; i++){

if($.isNumeric( selList[i] )){

selList[i]= "#"+selList[i]+"#";

}


if(i == 0){

selKeyword = selList[i];

} else {

selKeyword += " "+selList[i];

}

}//for

}//if

반응형
반응형

크롬에서는 잘되는 기능이 익스플로러에서 작동이 안되고 아래와같은 에러를 뱉었습니다.

검색을 해봤는데 js에서 파라미터를 넘겨줄때 encodeURI로 감싸주면 해결된다는걸 확인하고 적용했더니 해결됬습니다.


Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986


아래의 소스는 소스의 일부를 가져와봤습니다.

var url = "/TEST/excelDown.do?FILE_MNO="+file_nm;

var link=document.createElement('a');

link.href=url;

위와 같이 그냥  url을 넘겨줬을 때 에러가 났고 아래와같이 encodeURI( ) 를 사용했더니 해결됬습니다.

link.href=encodeURI(url);


반응형
반응형

http://hellogk.tistory.com/11


http://hellogk.tistory.com/10

http://arabiannight.tistory.com/entry/%EC%9E%90%EB%B0%94Java-String%EC%9D%84-List-List%EB%A5%BC-String-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98

http://toyuq.tistory.com/160

-------------------------------------

http://itpangpang.xyz/269

http://www.omnibuscode.com/board/board_java/37125

http://mainia.tistory.com/3950


column = obj.get(keyname).toString();

               

                // 세 번째 줄

                int x=0;

                row = sheet1.createRow(2);

                String[] columns = column.split(",", 0);

                    for (String col : columns ){

                    cell = row.createCell(x);

                    cell.setCellValue(col);

                    x++;

//                        System.out.println("columns:"+col);

                    }

                cell.setCellStyle(cellStyle); // 셀 스타일 적용



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

requestbody 한글깨짐


1.

produces="text/plain;charset=UTF-8"

2.

<!-- Start: 한글문제 처리 -->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Finish: 한글문제 처리 -->

3.
URLEncoder.encode(ajaxName , "UTF-8");


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


java like 기능 -> contain

equls 기능 -> matchs

반응형

+ Recent posts