2018. 6. 2. 02:51

아.....


슬픈 소식이네요.


R-Play정기구독 요금으로 바뀐다네요..


그러면 이제 이용하려면, 연간 구독료 같이 결제해야해요...


다행이 2018년 6월 3일 이전에 구입하면, 영구 사용가능하고요!!!


구입 안하신 분들은 빨리 구입해 놓으세요.


사실 돈주고 산 앱중에서 돈 안 아까운 앱이니까요.


사실 핸폰으로 게임은 좀 불편해도, 친구집에서 내 세이브파일 올릴때나, 


밖에서 게임 다운 걸어놓는거 같은거 미리 하기에는 좋거든요.


전 간단한 게임들은 이걸로 하는데, 할만하거든요~!!!


언능 구입하세요!!!











Posted by Tyson
2018. 5. 28. 18:40



팝업을 디비에서 불러와서 Modal에서 다 보여주고 싶은데, 그냥 창 띄우는거 말고, Modal로 작업하는법이다.


이건 좀 노가다 성이 있음...


밑에처럼 모달로 겹치게 뜨게 하고, 클릭해서 움직일수있게 만들고 싶다.


이 팝업의 순서는 

DB에서 원하는 값들을 가져와서 Loop를 돌면서 modal 를 생성해서, 숨겨놓고, 쿠키 값이 없으면 보여준다.


페이지 로드 => DB조회 값 가져옴 => 모달생성 => 쿠키 확인 => 쿠키에 없는거만 보여줌 


머, 이런식이다. 각 모달 id값을 게시판 번호로 붙여서 여러개 만들었다.

(이 방법을 추천하진 않는데.... 다른 방법은 복잡해서...그냥 이렇게 했다.)





먼저, 움직이게 하기 위해서는 jquery-ui.js 를 추가하고, draggable() 쓰면 된다.



jquery-ui 추가


1
2
3
4
5
6
7
8
9
 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
 
<script>
    $(document).on('ready'function () {
    //모달 움직이게 하려면, draggable(); 하면 된다.
       $("#popup_no").draggable();
    });
</script>
cs



나같은 경우는 jstl로 디비에서 불러온 값을 넣어줄거다.

그래서 db에 있는 값들을 forEach써서, 모달로 다 만들어 준다.


style="display:none;" 이 있는데, 처음에 모달은 만들어 놓기는 하고, 안보이게 해놓았다. 


그리고, "오늘 더이상 열지 않기" 쿠키값이 없으면 보여주고, 있으면 안보여주게 만들었다.




모달 만들기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--jstl로 값 불러와서 Loop돌려서 모달 만듬-->
  <c:forEach var="popup" items = "${list}" varStatus="status">
<!--여긴모달부분-->
     <div class ="popup" id ="popup_${popup.no}" style="display:none; position:absolute; top:${(status.count-1)*100+150}px; left:${(status.count-1)*150+100}px; width:470px; height:445px; border:1px solid #ccc; background-color:#ffffff; z-index:100">
          
          <div style="background-color:#DDDDDD; padding-bottom:10px; padding-top:10px; text-align:center;"><span><Strong>${popup.memoTitle}</Strong></span></div>
          <div style="overflow-y:scroll; padding:10px; width:469px; height:363px;"
        ${popup.memo}
          </div>
          <div style="cursor:pointer;background-color:#DDDDDD;text-align: center;padding-bottom: 10px;padding-top: 10px;">
              <span class="pop_bt_nomore" onClick="close_pop_allday(true, ${popup.no});">
                  오늘 더이상 열지 않기
              </span>
                |  
              <span class="close_popup" onClick="close_pop_allday(false, ${popup.no});" >
                   닫기
              </span>
          </div>
     </div> <!--End Modal-->
  </c:forEach>
cs


위에 모달은 맨 처음 사진처럼 만들어준다.


스타일에 보면, 

top:${(status.count-1)*100+150}px; left:${(status.count-1)*150+100}px;


위에처럼 써놓은게 있는데,


이건, status는 순서대로 가져오는 값의 인덱스 번호라고 생각하면 된다. 1,2,3,4, 이렇게 값이 있으므로,


애들 가지고, 계산해서, 처음 보이는 위치를 세팅해주었다.




그리고, "닫기", "오늘 더이상 열지 않기" 눌렀을 시에, 않보이게 하는거다.


그리고, "오늘 더이상 열지 않기" 클릭시에는 쿠키까지 생성해 놓는다.



자, 밑에 설명을 하자면,


close_pop_allday 라는 펑션을 만들었다.


그리고, 그냥 닫기 눌렀을때는 false 값을


오늘 그만보기 눌렀을때는 true 값을 받는다.


그리고, 받을때, popup_no 를 같이 받아서, 번호를 가지고 세팅한다.


setCookie 펑션은 퍼온거임.


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
<script>
 
      //Cookie Setting
        function setCookie(cookie_name, value, days) {
           var exdate = new Date();
           exdate.setDate(exdate.getDate() + days);
           // 설정 일수만큼 현재시간에 만료값으로 지정
           var cookie_value = escape(value) + ((days == null) ? '' : ';    expires=' + exdate.toUTCString());
           document.cookie = cookie_name + '=' + cookie_value;
         }
 
          //팝업 Close 기능
        function close_pop_allday(flag, popup_no) {
           _this = $(this);
           var popupString = "popup"+popup_no;
 
             if ( flag == true ) {
            //쿠키세팅(그냥닫기 오늘안보기)
                setCookie("popup"+popup_no,"end",1);
                $("#popup_"+popup_no).hide();
             }else{
        //false로 들어오면 그냥 숨기기만
                 $("#popup_"+popup_no).hide();
             }
        };
 
    $(document).on('ready'function () {
 
          //팝업 쿠키확인후 보여주기
          <c:if test="${null ne list}">
              <c:forEach var="popup" items = "${list}" varStatus="status">
                  var popup_no = ${popup.no};
                  if ($.cookie('popup'+popup_no)!="end"){
                      //쿠키없는거만 보여주기
                      $("#popup_"+popup_no).show();
                      $("#popup_"+popup_no).draggable();
                  }
              </c:forEach>
          </c:if>
 
    });
 
</script>
cs


예로, 게시물 번호가 11, 12 이다. 


그리고,  $(document).on('ready'function () 

 안에 넣어준다. document 안에 넣어주면 로드할때 항상 실행한다.

그리고, forEach로 돌면서, 쿠키명 popup11, popup12 쿠키가 있는지 확인하고, 

없으면, show 해서 보여주는거다.



 $("#popup_11").show();
 $("#popup_11").draggable();

$("#popup_12").show();
$("#popup_12").draggable();


그리고, draggable해서 움직이면서 뒤에꺼도 볼수있게 해주는거다.


생성된 태그를 보면 위에처럼 되어있을거다.


id값을 저렇게 남발하는게 안좋다고는 하는데, 모달로 여러개 띄우줄때는 이게 젤 간편한 방법인거 같다.







'컴퓨터 > JavaScript (jQuery)' 카테고리의 다른 글

값 입력할때마다 더하기  (0) 2018.08.07
Skel Css 사용하기  (0) 2018.07.04
jQuery에서 따옴표 처리하기  (0) 2018.05.24
정규식 패턴 종류  (0) 2018.04.27
사업자 등록번호 체크방법  (0) 2018.04.24
Posted by Tyson
2018. 5. 24. 16:32

jstl 에서 DB 값에 "" 따옴표 가 있으면, input에 넣을때, 잘리는 현상이 발생한다.



자바스크립트에서 처리해 줘도 되고, jstl를 이용해서 값을 넣는다면, fn를 이용해도 된다.

자바스크립트에서 하는법 : http://tyson.tistory.com/128


예로 

name = 내 이름은 "Tyson"입니다.

라는 값이 있는데. 

밑에 처럼 넣으면,

<input type="text" value="name">


"(따옴표) 에서 짤려서,  " 내 이름은 " 까지만 나온다. 이때는 치환을 해줘야하는데, 


jstl fn에 있다.


먼저 

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

를 추가해준다.


그리고 밑에 처럼 사용하면 된다.


<input type="text" value="${fn:escapeXml(name) }">

'컴퓨터 > Java' 카테고리의 다른 글

HashSet 를 이용한 로또번호 만들기  (0) 2013.03.27
Posted by Tyson
2018. 5. 24. 16:24



DB에서 값을 가져와서, 수정 페이지를 만드는데, input value에 값을 넣는데,


데이터에 "(큰따옴표)  '(작은따옴표) 같은게 있으면, 앞에서 value를 잘라 버려서, 따옴표는 특수문자표를 써줘야한다.


&quot 나 &#39 같이 써줘야한다.


그래서 스크립트에 아에 펑션을 넣어주고 값에 써주면 된다.



var entityMap = {
  '&': '&amp;',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#39;',
  '/': '&#x2F;',
  '`': '&#x60;',
  '=': '&#x3D;'
};

function escapeHtml (string) {
  return String(string).replace(/[&<>"'`=\/]/g, function (s) {
    return entityMap[s];
  });
}


출처 : https://code.i-harness.com/ko/q/60f0



원하는 값에. 예로


var _name = 내 이름은 "Tyson"입니다.


<input type="text" value="escapeHtml(_name)">


위처럼 써주면, 


내 이름은 &quot;Tyson&quot;입니다.


위처럼 들어가서 제대로 보인다.


처음에는 


내 이름은 "     <= 여기에서 잘렸다.


value값이 "를 마지막으로 인식해서였다.



===


자바스크립트에서 하는 방법이고, java jstl에서는 

fn:escapeXml

을 쓰면 된다.

jstl 에서 문자열 처리법 : 

http://tyson.tistory.com/129






Posted by Tyson
2018. 5. 10. 19:11


스프링에서 하나만 지웠는데, 조인 걸어논 테이블 데이터까지 삭제가 된거다...


그래서 보니까..... 


CascadeType.REMOVE


로 해놓은거다.....


아......그래서  Casecade Type 종류 찾아 놓았다....




밑에 출처 http://chomman.github.io/blog/java/jpa/programming/jpa-cascadetype-%EC%A2%85%EB%A5%98/

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



 

CascadeType의 종류에는 다음과 같은 것들이 있다.

  • CascadeType.RESIST – 엔티티를 생성하고, 연관 엔티티를 추가하였을 때 persist() 를 수행하면 연관 엔티티도 함께 persist()가 수행된다.  만약 연관 엔티티가 DB에 등록된 키값을 가지고 있다면 detached entity passed to persist Exception이 발생한다.
  • CascadeType.MERGE – 트랜잭션이 종료되고 detach 상태에서 연관 엔티티를 추가하거나 변경된 이후에 부모 엔티티가 merge()를 수행하게 되면 변경사항이 적용된다.(연관 엔티티의 추가 및 수정 모두 반영됨)
  • CascadeType.REMOVE – 삭제 시 연관된 엔티티도 같이 삭제됨
  • CascadeType.DETACH – 부모 엔티티가 detach()를 수행하게 되면, 연관된 엔티티도 detach() 상태가 되어 변경사항이 반영되지 않는다.
  • CascadeType.ALL – 모든 Cascade 적용


Posted by Tyson
2018. 5. 8. 18:11

스프링에서, 로그아웃 정보를 가져와야하는데,


시큐리티에서 로그아웃을 다 처리해버리니까.....유저정보를 가져와서 로그아웃 정보를 가지고 있고 싶을때


뒤져보니까. 시큐리티에서 로그아웃 핸들러를 만들어서, 로그아웃시, 처리 클래스를 만들어서 작업하면 된다.



밑에는 다른분 블로그에서 퍼온거~ 감사합니다!!


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



스프링시큐리티 구조를 이해 하기에 앞서

http://www.slideshare.net/madvirus/ss-36809454 이 자료를 읽어보면 많은 도움이 될거에요.


지금은 logout custom 을 하기위한 작업으로  SimpleUrlLogoutSuccessHandler

을 상속 받아 사용 하기로 한다.


security.xml

<security:logout

    logout-url="/logout"

    success-handler-ref="myLogoutSuccessHandler"

/>




@Component

public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {


    @Override

    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,

            Authentication authentication) throws IOException, ServletException {


        if (authentication != null) {

            // do something 

        }


        setDefaultTargetUrl("/login");

        super.onLogoutSuccess(request, response, authentication);       

    }

}



로그아웃이 된데에 어디로 보낼지 setDefaultTargetUrl 에 담아 이동 하도록 한다.


stackoverflow 참고 자료.



출처: http://mycup.tistory.com/166 [한글창제의 기쁨]

'컴퓨터 > Java Spring Framework' 카테고리의 다른 글

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 에러  (0) 2018.09.05
JPA CascadeType 종류  (0) 2018.05.10
mod_jk연동 도메인 여러개  (0) 2018.03.09
톰캣 설치  (0) 2018.03.09
아파치 컴파일 설치  (0) 2018.03.09
Posted by Tyson
2018. 5. 6. 13:44

Hotspot Shield 삭제안될때, 


이상한 창이 뜨면서 삭제가 안된다.....


그래서 먼저, 


맥 메뉴에서 


이동 > 유틸리티 > 활성상태보기 


로 들어가서, 


CPU검색에서 hotspot검색하면 뜬다. 걔 정보를 눌러서, 주소를 복사해놓고,


종료를 해준다.


그리고 라이브러리 찾아서 삭제해줄까 하다가 


재부팅하니까, 이제 안뜬다....


그래서 그냥 써야지...

Posted by Tyson
2018. 5. 6. 13:41


터미널이나, 텍스트 에디터 같은 경우는 보통 Spotlight에서 검색에서 terminal, 또는 text만 치면 app목록에 떠서,


바로 실행했는데, 몇일전부터 거기에 안뜨는거다....이게 찾아 보니까,


스팟라이트 데이터베이스가 손생되서, 그렇다는거다....


아.......그래서 찾다가 결국 찾음.


터미널을 열어서,


$ sudo mdutil -i on /


$ sudo mdutil -E /


위 명령어들을 쳐주고 암호를 쳐주면 된다.


위에꺼는 데이터베이스를 다시 생성이고,


밑에 -E명령어는 기존 스팟라이트 데이터베이스를 삭제하고 재생성 하는것이다.


첫번째꺼로 안되서, 두번째 명령어를 실행하니까, 다시 검색이 된다!


아싸!! 




Posted by Tyson
2018. 5. 3. 18:56

서버에 올려보고 속도 체크 해본데서, 커밋한거 올렸었는데, 


속도가 안나와서, 커밋한거를 되돌릴 상황이 발생해 버렸다.


근데, git 저장소를 따로 쓰는 우리에서는 저장소에 접속할순없고....


내 로컬에서 되돌리기를 해서 다시 푸시를 해줘야하는 상황인거다.


그래서 소스트리에서 그냥 "현재브런치를 이 커밋으로 초기화"를 했는데...


원격저장소에는 마지막 커밋이 남아 있어서, 푸쉬가 안된다. 


소스트리가..... 한글이라....'커밋바꾸기'가 맞는지...'재배치'가 맞는지 


몰라서......


그냥 터미널을 열어서 명령어를 쳤다.


터미널 위치는 밑에 사진에 보면 있다.






git revert HEAD  


위 명령어를 치면 메시지 에디터로 들어간다.


그때, 커밋 내용을 쓴다음에 esc키를 누르고 :wq 를 누르면, 메시지 작성에서 나오면서 되돌아같다.


그리고 위 사진처럼 Revert "커밋 메시지" 가 써지고 새로운 커밋이 생성된다.


revert HEAD 명령어는


HEAD에서 변경한 내역을 취소하는 새로운 커밋을 발행함.


(이것은 커밋을 이미 push한 경우에 사용하면 된다.)


커밋 내용을 보면 이전 커밋에 +됬던 내용들이 다시 -로 바뀌어 있다.



여러 커밋을 할때는


git revert [커밋번호] [커밋번호] [커밋번호] 


이렇게 하면 된다.


커밋번호는 다 쓸필요 없이, 앞에 7자리까지만 해도 된다.




위에 방법은 bash에서 하는법이고, 소스트리에서 하고 싶은데....


revert가 한국어로 어떻게 번역한지 모르겠더라....






밑에가 메뉴 영문이다.




reset 은 있는데, Revert가 없다.


Revert가 "Reverse commit...." 이다.


한국말로 커밋 바꾸기 하면 된다.


여기서 알아야 할것은, 


Revert할때, 여러 커밋 되돌릴때는 최신거 부터 순서대로 다 하는게 낫다.


중간에 빼 먹고 하면.... 나중에 merge할때, 충돌날 확률이 크다.


그리고, 


"Merge branch 'master' into  dev "


위와 같은 정보 커밋은 revert 할수 없다.


되돌리기 커밋은 내가 한 커밋만 가능하다.



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


※ reset과 revert의 차이점

reset은 선택한 버전을 reset할 경우 선택한 버전의 이후 버전을 모두 삭제하고 선택한 버전의 상태로 되돌아간다.

revert는 선택한 버전을 revert할 경우 선택한 버전의 바로 전 버전으로 돌아가는 새로운 commit을 자동으로 실행한다.


※ 여러 버전을 건너뛰어 Revert하게 되면 충돌이 발생한다. 예를 들어, 위 예제에서 "Circle클래스 추가" 버전으로 돌아가고 싶을 경우 최근 버전인 "Circle클래스 수정" 버전부터 차례로 revert하여야 한다.



출처: http://gangju.tistory.com/21 [gangju 개인 블로그]



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

밑의 내용은 아래 블로그에서 퍼온거다.

http://blog.daum.net/to302/10



git reset HEAD^

git push origin -f


git reset HEAD@{1}

git push origin +master


git reset HEAD^    // 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 유용)

git reset HEAD~2     //마지막 2개의 커밋을 취소. 워킹트리는 보존됨.

git reset --hard HEAD~2    // 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.

git reset --hard ORIG_HEAD    // 머지한 것을 이미 커밋했을 때,  그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)

git revert HEAD    // HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)



Posted by Tyson
2018. 4. 27. 20:59

화면 캡쳐 해서, 녹화 하고 싶은게 있어서, 화면 캡쳐 그래픽 카드나 장비등을 검색하는데,


한국에서 제일 싼게 8만원 돈이더라.....


근데, 어떻게 하는데 보고는 싶어서......


위시에 찾아보니, 이게 있더라~ㅎㅎㅎ


그래서 이걸삼.....







HDMI USB 2.0 EasyCap Port 1 Way Portable 1080P Video Capture Card for Computer


https://www.wish.com/product/59b90a7c75ccef5f335e195d



그래서 샀는데, 2주정도 걸린거 같다.



구성품 

기기, 충전 전원 케이블, 설치 CD




모양은 생각보다 조악하다.....


역시 광고 사진이랑 틀림...




오랜만에 저렇게 작은 설치CD를 받아 보았다.


USB 2.0이...걸리네..






헐....

근데... 화면이 회색이다....

그래서 NTSC PAL 설정이 있길래 다 바꿔보고,

지역별로 설정있길래, 다 해봤는데....안되다.











계속 이런다...결국 안된다...

20불 날렸네...


그래서 저 사진들을 판매자에게 보냈다~ㅎㅎ


그래서 결국 환불 받음~!!

해피엔딩인것인가.....ㅠㅠㅠㅠㅠㅠ








Posted by Tyson