소스 형상관리를 위해 git을 써보려다 git은 private (비공개)로 하려면 돈이 들어서


네이버 svn 을 이용해서 안드로이드 스튜디오와 연동해 보았다.


/////////////////////////////////////////////////////////////////////


우선 네이버 개발자센터에서 로그인 후 -> 오픈 소스 -> 오픈 프로젝트 -> 프로젝트 등록

에서 이름, 아이디, 공개설명, 관리시스템 항목을 입력하고 확인을 누른다.


그리고 만든 프로젝트로 들어가서 왼쪽 메뉴에 프로젝트 관리 -> 공개정보 에서

모두 비공개로 설정 후 확인을 누른다


왼쪽 코드 -> 코드 트리보기 를 눌러 비밀번호를 바꾸고 15분 기다린다.


15분 기다린 후 다시들어와 보면 코드 트리가 생성되있는 것을 확인 할 수 있다.


여기까지 네이버에 svn 저장공간을 만든거고


///////////////////////////////////////////////////////////////////


이제는 안드로이드 스튜디오와 연동을 하고 

작업중이던 프로젝트나 작업하려는 프로젝트의

파일을 저장소에 올려놓는 작업(import)을 하겠다.


안드로이드 스튜디오는 svn프로그램이 설치되어있지 않으니

설치해주고 연동을 해주어야 한다.


https://www.visualsvn.com/downloads/

이곳에 들어가서 Apache Subversion command line tools 을 설치 후 

적당한 곳에 압축을 풀어놓는다.


안드로이드 스튜디오(이하 안스) 를 실행하여 File -> settings 로 들어가

verision control 의 subversion에 들어가서 

use command line client에 설치한 svn의 경로 (bin안의 svn.exe)를 지정 해 준다.


여기까지 안스와 설치한 svn이 연동되었고

네이버 svn 과 연동해 보겠다.


//////////////////////////////////////////////////////////////////////////////////////


안스에서 file -> new -> project form version control -> surbversion 에 들어가

플러스 버튼을 누른 후 

네이버 개발자센터에서 코드트리보기 항목에서 보았던 https://dev.naver.com/svn/아이디   주소를 입력한다.


이렇게하면 네이버 svn 저장소와 연동된것이다.


////////////////////////////////////////////////////////////


다음은 최초 프로젝트를 저장소에 올려야 하는데 (import)


안스에서 vcs -> import into  version control -> import into subversion 을 누른다


실행된 팝업창에서 trunk 폴더 밑에 해당 프로젝트 이름으로 폴더를 하나 더 생성하고 확인을 누른 후


만든 폴더를 선택하고 import를 누른다


그러면 import할 프로젝트의 경로를 지정하는 창이 뜨는데

그 창에서 최초의 프로젝트 파일을 선택 해 준다.


commit message 를 대충 ( ex) project start!! ) 써준 후 ok를 누르면 import 된다


아이디와 비밀번호 입력 창이 나오면 네이버 개발자센터에 로그인햇던 아이디와 

소스트리보기에서 설정했던 비밀번호를 입력하면 된다.


import가 끝나면 네이버 개발자센터에서 소스트리 보기 항목에서

최초의 프로젝트 소스가 올라가 있는 것을 확인 할 수 있다.


여기까지가 최초의 프로젝트를 네이버 저장소에 옮겨놓은 것이 된다


/////////////////////////////////////////////////////////


이제 올려놓은 최초프로젝트를 내려받아야 하는데 


File -> new -> project from version control -> subversion 을 선택하여

trunk 밑의 만들었던 폴더를 선택한 후 check out 해주면 된다.



 


<href>나 <a>태그 등에 커서를 가져다 대면 손모양으로 바뀌지만 


그렇지 않은 요소에 클릭이벤트를 적용하였을 때는


손모양으로 바뀌지 않는다


그럴때 스타일에 cursor:pointer 를 넣게되면 손모양 커서로 바뀌게 된다


ex)

<img src="/images/button/btn_del.gif"  class="test" style="cursor:pointer;" >

'공부 > html & css' 카테고리의 다른 글

(html) link 태그  (0) 2016.01.11
(기타) form 태그 안의 button  (1) 2015.12.15
(css) 라운딩 처리  (0) 2015.10.21
(개념) DOCTYPE  (0) 2015.10.01
html5 태그들  (0) 2015.08.24

안드로이드 스튜디오로 넘어오면서 mipmap 이라는 폴더를 처음보았다.

안에보니 drawable에 들어가 있어야할 안드로이드 기본 아이콘(ic-launcher)  들어가있었다.


drawable 과 mipmap의 차이점에 대해 알아보니


drawable

 For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe Drawable shapes or Drawable objects that contain multiple states (normal, pressed, or focused). See the Drawable resource type.


mipmap

 For app launcher icons. The Android system retains the resources in this folder (and density-specific folders such as mipmap-xxxhdpi) regardless of the screen resolution of the device where your app is installed. This behavior allows launcher apps to pick the best resolution icon for your app to display on the home screen. For more information about using the mipmap folders, see Managing Launcher Icons as mipmap Resources.


이렇게 설명되어 있는데 해석하자면


drawable 폴더는

이미지 자원을 위한 폴더이고


mipmap 폴더는

런처이미지 아이콘을 위한 폴더이다.



참조

http://sunphiz.me/wp/archives/1608

Editing

 

Ctrl + Space : 기본 코드 완성

Ctrl + Shift + Space : 스마트 코드 완성(예상되는 타입의 메소드또는 변수명 )

Ctrl + Q : 빠른 문서보기

Shift + F1 : 외부 문서보기(http://developer.android.com/reference로 이동)

Ctrl + mouse over code : 간단한 설명.

Alt + Insert : Generate code( Getters, Setters, Constructors, hashCode/equals, toString )

Ctrl + O : Override methods

Ctrl + I : Implement methods

Ctrl + Alt + T : Surround with… (if..else, try..catch, for, synchronized, etc.)

Ctrl + / : 한줄주석

Ctrl + Shift + / : 블럭주석

Ctrl + W : 연속적인 코드블럭 선택

Alt + Enter : 빠른수정.

Ctrl + Alt + L : Reformat code
Ctrl + Alt + O : Optimize imports
Ctrl + Alt + I : Auto-indent line(s)

Ctrl + Shift + V : 이전에 클립보드에 복사한 히스토리 열기.

Ctrl + D : 라인복제 또는 선택블록 복제

Ctrl + Y : 라인삭제

Ctrl + Shift + J : 라인합치기(Smart line join)

Ctrl + Enter : 라인분리(Smart line split)

Ctrl + Shift + U : 대소문자 변환

Ctrl + Shift + ] / [ : 코드블럭 처음또는 끝까지 선택

Ctrl + Delete : 단어끝까지 삭제

Ctrl + Backspace : 단어처음까지 삭제

 

 

 

Search/Replace

 

Double Shift : 모든곳에서 찾기.

Ctrl + F : 찾기

F3 : 다음찾기

Shift + F3 : 이전찾기

Ctrl + R : 바꾸기

Ctrl + Shift + F : 경로에서 찾기(Find in path)
Ctrl + Shift + R : 경로에서 바꾸기(Replace in path)

 

 

 

Usage Search

 

Alt + F7 / Ctrl + F7 : 사용내용 전체찾기 / 파일에서 사용한것 찾기
Ctrl + Shift + F7 : 현재파일에서 하이라이트
Ctrl + Alt + F7 : 사용된것 새창으로 보여줌.

 

 

 

Compile and Run

 

Shift + F10 : Run

 

 

 

Debugging


F8 : Step over
F7 : Step into
Shift + F7 : Smart step into
Shift + F8 : Step out
Alt + F9 : Run to cursor
Alt + F8 : Evaluate expression
F9 : Resume program
Ctrl + F8 : Toggle breakpoint
Ctrl + Shift + F8 : View breakpoints

 

 

 

Navigation


Ctrl + N : 클래스 열기
Ctrl + Shift + N : 파일열기
Ctrl + Alt + Shift + N : Go to symbol
Alt + Right/Left : 문서탭이동

F12 : 이전에 사용한 도구창 열기

Shift + Esc : 마지막에 사용한 도구창 닫기
Ctrl + G : 줄번호로 이동.
Ctrl + E : 이전에 열었던파일 목록창 열기
Ctrl + B or Ctrl + Click : Go to declaration
Ctrl + Alt + B : Go to implementation(s)
Ctrl + Shift + I : Open quick definition lookup
Ctrl + Shift + B : Go to type declaration
Ctrl + U : super-method/super-class 이동.
Alt + Up/Down : 이전/다음 함수 이동

Ctrl + ] / [ :  코드블럭 처음/끝 이동
Ctrl + F12 : 파일 구조보기

F2 / Shift + F2 : 다음/이전 하이라이트된 에러로 이동.
F4 : 해당 소스로 이동

 

 

 

Refactoring

 

F5 : 복사
F6 : 이동
Alt + Delete : 안전하게 삭제(지우기전에 사용된곳 확인 가능)

Shift + F6 : 이름바꾸기

 

 

 

Live Templates


Ctrl + Alt + J : Surround with Live Template
Ctrl + J : Insert Live Template
iter : Iteration according to Java SDK 1.5 style
inst : Check object type with instanceof and downcast it
itco : Iterate elements of java.util.Collection
itit : Iterate elements of java.util.Iterator
itli : Iterate elements of java.util.List
psf : public static final
thr : throw new


출처 http://blog.naver.com/komseki/130185867089

한글이 ???? 이렇게 깨지는 경우가 있다.


이럴 떄는 상단메뉴의


File -> Settings -> Editor -> File Encodings 에서


IDE Encoding, 

Project Encoding, 

Default encoding for properties files


3개의 항목을 전부다


UTF-8   로 바꾸어 주고 안드로이드 스튜디오를 재실행 하면 된다.

안드로이드 스튜디오를 설치하고나서 테마를 변경해보고 싶다면


상단메뉴에서


FILE  -> Settings -> Appearance & Behavior -> Appearance 로 들어간다음


UI Options 에 있는 theme 를 수정해 주면된다


테마는  windows, IntelliJ, Darcula  3개가 있다


Darcula가 난 마음에 든다

문서와 외부의 대상을 연결하는 태그



/////////////////////////////////////////////////


 ex)

<link rel="stylesheet" type="text/css" href="/css/nomal.css">



/////////////////////////////////////////////////


rel 에는 연결할 대상의 속성을 정의


alternate,  archives, author, bookmark, external, first, help, icon, ,last

license, next, nofollow, noreferrer, pingback, prefetch, prev, search, sidebar

stylesheet, tag, up


이 올수 있는데 예제에서의 rel="stylesheet" 는 스타일시트로 사전 정의 하는 것


//////////////////////////////////////////////////


href에는 연결할 대상의 로케이션


/////////////////////////////////////////////////


type="text/css" 은 대상의 유형

(텍스트 기반의 css파일)

'공부 > html & css' 카테고리의 다른 글

(html) 커서 손모양으로 바꾸기 cursor:pointer  (0) 2016.01.25
(기타) form 태그 안의 button  (1) 2015.12.15
(css) 라운딩 처리  (0) 2015.10.21
(개념) DOCTYPE  (0) 2015.10.01
html5 태그들  (0) 2015.08.24

c 프로그램을 작성하고 실행시키면


출력결과를 지켜보고싶은데


확인하기도 전에 바로 콘솔창이 꺼지는 경우가 있다.


멈추고 싶은 곳에


system("pause");  을 넣으면 멈추게된다


헤더파일은 #include <windows.h>   이다


그런데 귀찮을 때, 그냥 결과를 확인하고싶으면


getch();  이렇게 쓰기도 한다. 나는ㅎ

window.open 으로 연 팝업창이 있을 때


그 팝업창을 연 부모창을 제어하고 싶을 때


opener 를 사용하면 제어 할 수 있다.


////////////////////////////////////////////////////////


ex)


var testWin = window.open( "www.naver.com", "testWindow", "height=300px, width=200px" );

////////////////

testWin.opener.$("#test_div").show();


부모창에 있는 [id = test_div] 가 show 되게 된다.

문제

정사각형들의 변들을 서로 완전하게 붙여 만든 도형들을 폴리오미노(Polyomino)라고 부릅니다. n개의 정사각형으로 구성된 폴리오미노들을 만들려고하는데, 이 중 세로로 단조(monotone)인 폴리오미노의 수가 몇 개나 되는지 세고 싶습니다. 세로로 단조라는 말은 어떤 가로줄도 폴리오미노를 두 번 이상 교차하지 않는다는 뜻입니다.

예를 들어 그림 (a)는 정상적인 세로 단조 폴리오미노입니다. 그러나 (b)는 점선이 폴리오미노를 두 번 교차하기 때문에 세로 단조 폴리오미노가 아닙니다. (c)는 맨 오른쪽 아래 있는 정사각형이 다른 정사각형과 변을 완전히 맞대고 있지 않기 때문에 폴리오미노가 아닙니다.

n개의 정사각형으로 구성된 세로 단조 폴리오미노의 개수를 세는 프로그램을 작성하세요.

입력

입력의 첫 줄에는 테스트 케이스의 수 C (1≤C≤50)가 주어집니다. 그 후 각 줄에 폴리오미노를 구성할 정사각형의 수 n (1≤n≤100)이 주어집니다.

출력

각 테스트 케이스마다, n개의 정사각형으로 구성된 세로 단조 폴리오미노의 수를 출력합니다. 폴리오미노의 수가 10,000,000 이상일 경우 10,000,000으로 나눈 나머지를 출력합니다.

예제 입력

3
2
4
92

예제 출력

2
19
4841817


소스

////////////////////////////////////////////////////////////


#include <stdio.h>

#include <string.h>


#define MOD 10000000


int n;

int cache[101][101];


int poly(int ,int);


int main(){

    

    int c;

    int i = 0;

    scanf("%d", &c);

    

    while(c-- > 0){

        memset(cache, -1, sizeof(cache));

        scanf("%d",&n);

        int start = 0;

        int ans = 0;

        

        for(i = 1; i< n; i++){

            ans = ans + poly(n, i);

            ans %= MOD;

        }

        printf("%d\n", ans+1);          

    }

    

    return 0;

}


int poly(int n, int first){

    if(n == first) return 1;

    

    int ret = cache[n][first];

    int second = 0;

    if(ret != -1) return ret;

    ret = 0;

    

    for(second = 1; second <= n - first; second++){

          int add = second + first -1;

          int sum = poly(n-first, second);

                    

          int temp = n - first;

          cache[temp][second] = sum;

          

          add = add * sum;

          add %= MOD;

            

          ret += add;

          ret %= MOD;

    }

               

    return ret;   

}



////////////////////////////////////////////


알고스팟 (https://algospot.com)에서 처음으로 풀어본 문제

초보문제라는데 어려웠다
그냥 반복문을 n번(수열길이)만큼 돌려도 될거라고 생각했었는데
수행시간이 계속 초과 되어 int형 배열을 이용해  그룹화 하여
비교할때 바로 비교 할 수 있게 하니 확실히 시간이 많이 단축되었다.

/////////////////////////////////////////////////////////////////////////////////////


문제

0과 1로 구성된 수열이 있다. 수열의 길이가 N이라 하고, 각각의 수열의 원소마다 순서대로 번호를 매길 경우 첫 번째 숫자는 0번이 되고 두 번째 숫자는 1번, 그리고 마지막 숫자는 N-1이 된다. 임의적으로 0이상 N-1이하의 2개의 숫자 i,j를 잡고 i번째부터 j번째 까지의 숫자 중에서의 최대값과 최소값을 찾아서 두 값이 일치하는지 알아보고자 한다.

입력

첫 번째 줄에는 최대 길이 1,000,000의 수열이 들어온다. 수열의 사이에는 빈칸이 없다. 그 다음 줄에는 질문의 개수를 뜻하는 정수 N(N<=100,000)이 입력된다. 그 다음줄부터 해당구간 i,j를 의미하는 2개의 숫자가 N개의 줄로 입력된다.

출력

각각의 질문의 순서대로 해당구간 i,j의 최대값과 최소값이 같을 경우 Yes를, 그렇지 않을 경우는 No를 출력한다.

예제 입력

0000011111
3
0 5
4 2
5 9

예제 출력

No
Yes
Yes


소스

/////////////////////////////////////////////////////////////////////////////////////


#include <stdio.h>


int main(){

     char input[1000001];

     int grpIn[1000001];

     

     int i=0;

     int j=0;

     int N=0;

     int A=0;

     int num=0;

     

     scanf("%s", input);

     scanf("%d", &N);

     

     for(A=0; A<1000001; A++){

         if(input[A] == '\0') break;

         

         grpIn[A] = num;  

         if(input[A] != input[A+1]){

              num++;            

         }              

     }

     

     while(N){

         scanf("%d %d", &i, &j);

              

         if(grpIn[i] == grpIn[j]) printf("Yes\n");

         else printf("No\n");


         N--;                          

     }

}

/////////////////////////////////////////////////////////////////////////////////////



스프링 프레임워크에서 작업을 하다가


어디서 잘못된지는 잘 모르겠는데


Maven Java EE Configuration Problem


이런 에러가 생겼다.


프로젝트를 실행하는데는 문제없었는데


그래도 오류표시를 지우기 위해 검색해본결과 간단하게 해결책을 찾았다.


//////////////////////////////////


프로젝트 오른쪽마우스 클릭 -> MAVEN -> Update Project


를 누르니 바로 해결되었다.

<form id="AFrm"  class="AAA">

<input type="text" id="iptest" value="A">

</form>

.

.

.

.

<form id="BFrm"  class="BBB">

<input type="text" id="iptest" value="B">

</form>


////////////////////////////////////////////////////////////


input의 id가 중복인지 모르는 상태에서


$("#iptest").val("");


이렇게 id를 셀렉해서 값에 ""을 넣어주고 있었는데


먹질 않았다.


id가 중복되서 그런것 같아


해결하기 위해선 each 를 쓰거나


$(".BBB #iptest").val("");


이런식으로 감싸고있는 클래스를 붙여주면 될거 같다.


자바스크립트에서 새로고침을 하고싶을 때


location.reload(); 


이걸 사용하면 된다.


location.reload(true);   ==  페이지 새로고침시 서버에서 불러옴


location.reload(false);   ==  페이지 새로고침시 클라이언트 캐쉬에서 불러옴 (디폴트) 

게시판에서 내용을 작성할 때 한줄띄우기 (엔터)를 입력하여 넣고

목록에서 출력하려고 할 때

한 줄 띄운것이 html에서 안 읽혀서 

한 줄 띄워지지 않고 표출 될 때가 있다.


그래서 쿼리에서 엔터를 replace 처리하여 <br>로 바꾸어 출력하였다.


우선 replace 하기 전에 알아야 될 것은

무엇을 <br>로 바꿔야 하는지 였다.


한줄띄우기는 보통 [캐리지 리턴] 과 [라인피드]로 이루어져있다.


캐리지 리턴 : \r   동일한 줄의 첫번째 자리에 커서를 위치시킴

라인피드 : \n  현재커서가 위치한 곳에서 한줄 아래로 이동


즉 엔터는 캐리지 리턴 후 라인피드를 한 것


자세한건 여기서 : http://m.blog.daum.net/chan6030/7556650

////////////////////////////


그래서 우리는 캐리지리턴+라인피드가 합쳐진 문자를 <br>태그로 치환하면 된다.


ex)

  REPLACE(MSSAGE, CHAR(13)+CHAR(10), '<![CDATA[<br>]]>') AS MSSAGE


CHAR(13) = 캐리지 리턴  \r

CHAR(10) = 라인피드    \n

간단하게 excel 파일 만드는 법


난 struts 프레임워크에서 사용했지만 html의 contentType 속성 변경을

이용한 방법이라 다른곳에 적용하기에도 간편함


////////////////////////////////////////////


test_excel.jsp


<%@ page language="java" contentType="application/vnd.ms-excel; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<%

//파일 이름 설정부분

java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd");

String today = formatter.format(new java.util.Date());

String filename = new String("테스트_".getBytes("KSC5601"), "8859_1") + today;

    response.setHeader("Content-Disposition","attachment;filename="+filename+".xls");

    response.setHeader("Content-Description", "JSP Generated Data");


%>

</head>

<body>

<table border='1'>  

    <tr>  

       <th>번호</th>

       <th>data1</th>

       <th>data2</th>

       <th>data3</th>

       <th>data4</th>

    </tr>

    <s:iterator value="testList">

<tr align='center' >

           <td>${ROW_NUM}</td>

           <td>${DATA_1}</td>

           <td>${DATA_2}</td>

           <td>${DATA_3}</td>

           <td>${DATA_4}</td>

</tr> 

   </s:iterator>

   </table>

</body>

</html>


////////////////////////위의 소스를 호출해주면 엑셀파일에  body안의 테이블형태로 데이터가

저장되는것을 확인 할 수 있습니다.


ex) 호출부분


testAction.java


public String testExcel() throws Exception {

try {

 //출력할 리스트 생성부분

((TestVo)vo).setTestList(((List<HashMap>)((TestDao)dao).excel(((TestVo)vo))));

} catch (Exception e) {

logger.error(" CLASS : " + this.getClass().getName()  +"===" + e);

return ERROR;

}

return SUCCESS;

}

/////////////////////////////////////////////////////////////

testDao.java


public List<HashMap> excel(Object obj) throws Exception {

// TODO Auto-generated method stub

return (List<HashMap>)getSqlMapClientTemplate.getSqlMapClient().queryForList("test.sql.test_excel",obj);

}


////////////////////////////////////////////////////////////

testVo.java


private List<HashMap> testList;


public List<HashMap> gettestList() {

return testList;

}


public void settestList(List<HashMap> testList) {

this.testList= testList;

}


//////////////////////////////////////////////////////////////////

test-struts.xml


//경로부분 생략


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>

<package name="test" namespace="~~~~~~~~~~" extends="struts-login-interceptors">

<action name="testExcel" method="testExcel" class="~~~~~~~~~~~">

<result name="success">/~~~~~~/test_excel.jsp</result>

</action>

</package>


</struts>


//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

이런식으로 호출하면 된다.


form 태그 안에 input태그의  버튼 타입이 있었는데


<form>

<input type="button" onclick="test()" >

</form>


이런식으로..


test()에선 form 처리를 하게 만들어 놓았는데

당연히 버튼을 클릭하면 test()가 실행 될 줄 알았는데

어쩔때는 실행되고 어쩔때는 새로고침 현상이

나타났다.


알고보니

form태그안에 input button이 있으면

버튼 클릭시,

버튼을 감싸고잇는 form을 타서 그런현상이

일어났던 것이다.


form에 action이 설정안되어 새로고침 같이

표현되었을 수도...


input button을 form밖으로 빼는 방법으로 

오류를 해결했다.

'공부 > html & css' 카테고리의 다른 글

(html) 커서 손모양으로 바꾸기 cursor:pointer  (0) 2016.01.25
(html) link 태그  (0) 2016.01.11
(css) 라운딩 처리  (0) 2015.10.21
(개념) DOCTYPE  (0) 2015.10.01
html5 태그들  (0) 2015.08.24










해당되는 범위 조건을 조회


WHERE [컬럼명] BETWEEN [조건절AND [조건절]


///////////////////////////////////////////////////////////

[출처] MSSQL BETWEEN 사용하기|작성자 창공


ex)

SELECT * FROM ATABLE WHERE NUM BETWEEN 1  AND 10

NUM이 1~10사이의 값일 때 조회



* 날짜 조회(몇일 부터 몇일 까지 조회) 에도 많이 사용


ex)

SELECT * FROM ATABLE WHERE RG_DT  BETWEEN '2015-12-01' AND '2015-12-10'   

(2015년 12월1일부터~2015년 12월 10일까지 조회) 

 

주의사항 = 2015-12-01 00:00:00 부터 2015-12-10 00:00:00까지만 조회되어 

12월10일 데이터가  누락 될 수 있음


해결방법

SELECT * FROM ATABLE 

WHERE CONVERT(int, CONVERT(VARCHAR(8), RG_DT , 112)) 

BETWEEN '20151201' AND '20151210' 



영어:1바이트 한글:2바이트 를 체크하여
글자가 입력되는데로 바이트 수를 출력해줌

///////////////////////////////////


스크립트 부분

<script type="text/javascript">

$(function(){
$('textarea.content').keyup(function(){
bytesHandler(this);
});
});

function getTextLength(str) {
var len = 0;

for (var i = 0; i < str.length; i++) {
if (escape(str.charAt(i)).length == 6) {
len++;
}
len++;
}
return len;
}

function bytesHandler(obj){
var text = $(obj).val();
$('p.bytes').text(getTextLength(text));
}

</script>



html 부분


<ul class="handler-ul">

<li><p class="bytes">0</p></li>

<li><textarea class="content"></textarea></li>

</ul>


'공부 > javascript' 카테고리의 다른 글

(jquery) id 중복일 때  (0) 2015.12.24
(javascript) 새로고침 location.reload();  (0) 2015.12.22
(Javascript) 이벤트 캔슬  (0) 2015.12.03
(Javascript) 한글 포함 문자열 길이  (0) 2015.11.26
(Jquery) $.post (ajax post)  (2) 2015.11.20

개발중 크롬에서는 한글이 잘 나오고 있었는데

IE에서 테스트 중 한글이 깨져 나오는 것을 확인 함


/////////////////////////////


server.xml 파일에서


<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>


이부분을


<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>


이렇게 수정하니 한글이 제대로 표출 됨

'공부 > Server' 카테고리의 다른 글

/bin/rm: cannot execute [Argument list too long]  (3) 2018.07.15
(centos7) systemd timer  (0) 2018.02.11
(개발환경) Eclipse + Spring 연동  (0) 2015.10.06
(php) 우분투 환경에 APM 세팅  (0) 2015.09.30
(개념) web, was  (0) 2015.09.30

문자열을 받아서 일정한 영역만큼 잘라낸 후 리턴하는 함수.

SUBSTRING([컬럼명][시작위치][길이])


/////////////////////


ex)

DATE 가 '20101201' 일 때 


SUBSTRING(DATE,1,4)

는 2010이 된다.


특정 문자열을 찾아 원하는 문자열로 바꿔준다

REPLACE([컬럼명]'[변경할 문자열 패턴]''[새로운 문자열]')


/////////////////////////////////////////


ex)

SELECT count(*) as cnt

FROM INFO_TABLE

WHERE 

REPLACE(TELNO, '-', '') = REPLACE('$checkNo$', '-', '')

'공부 > SQL' 카테고리의 다른 글

(mssql) BETWEEN [범위 조건]  (0) 2015.12.15
(mssql) SUBSTRING 문자열 자르기  (0) 2015.12.09
(mssql) 행 번호 가져오기 ROW_NUMBER()  (0) 2015.12.09
(mssql) UNION ALL 쿼리 합치기  (0) 2015.12.09
(oracle) CREATE SEQUENCE  (0) 2015.10.19

행에 순서대로 번호를 붙이기 위해 사용 

ROW_NUMBER() OVER(ORDER BY 필드명)


///////////////////////////////////////

ex

SELECT AAA,

     BBB,

     CCC,

  ROW_NUMBER() OVER(ORDER BY CCC DESC) AS ROWNUM

FROM INFO_TABLE

WHERE STATE = 'N'


오라클의 rownum 과 같은 기능

'공부 > SQL' 카테고리의 다른 글

(mssql) SUBSTRING 문자열 자르기  (0) 2015.12.09
(mssql) 문자열 찾아 바꾸기 REPLACE  (0) 2015.12.09
(mssql) UNION ALL 쿼리 합치기  (0) 2015.12.09
(oracle) CREATE SEQUENCE  (0) 2015.10.19
(개념) AS구문 (Aliases)  (0) 2015.09.30

UNION이 사용된 테이블들의 쿼리 결과를 합쳐준다.


//////////////////////////////////////////////////////


ex)

SELECT * FROM atable where apple = 3

UNION ALL

SELECT * FROM btable


a테이블의 조회 결과와 b테이블의 조회결과를 합쳐준다.


쿼리문1과 쿼리문2의 컬럼수는 동일해야함

쿼리문1과 쿼리문2의 컬럼타입은 같거나 서로 변환가능한 값이어야 함

UNION ALL은 중복 허용

UNION은 중복데이터를 걸러냄

[출처] MSSQL UNION 사용하기|작성자 창공

'공부 > SQL' 카테고리의 다른 글

(mssql) SUBSTRING 문자열 자르기  (0) 2015.12.09
(mssql) 문자열 찾아 바꾸기 REPLACE  (0) 2015.12.09
(mssql) 행 번호 가져오기 ROW_NUMBER()  (0) 2015.12.09
(oracle) CREATE SEQUENCE  (0) 2015.10.19
(개념) AS구문 (Aliases)  (0) 2015.09.30

구글맵을 사용하여 해당 지역의 지도를 보여주고싶은데


var myCenter = new google.maps.LatLng(35.143212, 129.095224);


이부분에 넣을 좌표를 구하는 법


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


먼저 구글에 해당 지역을 검색하여 지도를 클릭한다.


그다음 해당 지역에 마우스 오른쪽클릭을 하면




이곳이 궁금한가요? 항목이 있는데, 

클릭하면..



밑에 조그만 창에 좌표를 띄워준다.


'공부 > 기타' 카테고리의 다른 글

git push 되돌리기  (0) 2019.01.20
git command 자동완성 설정하기  (0) 2019.01.20
jetbrains (mac os x 10.5+) command 정리  (1) 2018.07.07
akamai directory purge  (0) 2018.04.27
라즈베리파이 기본 세팅 (update, upgrade)  (0) 2015.08.20

event.cancelBubble=true;  을 사용



ex)


<s:if test='%{onList.size() > 0}'>

<s:iterator value="onList" status="idx">

<tr align='center' onclick="goTest()">

<td>하하</td>

<td>크크</td>

<td>히히</td>

<td>호호</td>

<td onclick='event.cancelBubble=true; wentTest();'></td>

</tr>

</s:iterator>

</s:if>


맨밑의 td 태그는 goTest()이벤트가 안먹음

function getTextLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (escape(str.charAt(i)).length == 6) {
len++;
}
len++;
}
return len;
}


'공부 > javascript' 카테고리의 다른 글

(javascript) 글자수(바이트) 체크 후 실시간 출력  (0) 2015.12.10
(Javascript) 이벤트 캔슬  (0) 2015.12.03
(Jquery) $.post (ajax post)  (2) 2015.11.20
(JQuery) input checked 확인법  (0) 2015.11.10
(JQuery) css 사용 .css()  (0) 2015.11.10

ajax post로 날리기


$.post( "/login/selectLogin.ajax", $("#loginFrm").serialize(), function(jsonData) {
var _login_result = jsonData.result;
        
    if(_login_result == 1){
alert("로그인 성공!\n환영합니다.");
       $("#loginFrm").attr("action""/login/loginSuccess.do").submit();
    } else {
       alert("로그인 실패하였습니다. 아이디와 비밀번호를 재확인해 주세요.");
    }
    },
      'json' 
);

//////////////////////////////////////////////////////

jQuery.ajax({
async : true
   ,type : "post"
   ,url : "/login/selectLogin.ajax"
   ,dataType : "json"
   ,data: $("#loginFrm").serialize()
   ,success : function(jsonData) {
       var _login_result = jsonData.result;
       
       if(_login_result == 1){
           alert("로그인 성공!\n환영합니다.");
           $("#loginFrm").attr("action""/login/loginSuccess.do").submit();
       } else {
           alert("로그인 실패하였습니다. 아이디와 비밀번호를 재확인해 주세요.");
       }
   }
   ,error:
       function(request,status,error){ 
       alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
   }
});


둘다 같음


'공부 > javascript' 카테고리의 다른 글

(Javascript) 이벤트 캔슬  (0) 2015.12.03
(Javascript) 한글 포함 문자열 길이  (0) 2015.11.26
(JQuery) input checked 확인법  (0) 2015.11.10
(JQuery) css 사용 .css()  (0) 2015.11.10
(javascript) history.back() / history.go()  (0) 2015.11.09

spring 프레임워크에서 간단하게 ajax(json data) 사용법


pom.xml


<!-- Json -->           
<groupId>net.sf.json-lib</groupId>       
    <artifactId>json-lib</artifactId>       
    <version>2.4</version>       
    <classifier>jdk15</classifier>   
</dependency>
        
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.2</version>
</dependency>

////////////////////////////////////////////////////////////

DispatcherServlet XML 설정파일

<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="contentType" value="application/json;charset=UTF-8"> </property>
</bean>

////////////////////////////////////////////////////////////

web.xml

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.ajax</url-pattern>
</servlet-mapping>

////////////////////////////////////////////////////////////

Controller.java

@RequestMapping(value = "/login/selectLogin.ajax")
public ModelAndView login(CommandMap commandMap) throws Exception {
Map resultMap = new HashMap();
resultMap.put("result", 1);
ModelAndView modelAndView = new ModelAndView("jsonView", resultMap);

return modelAndView;
}
////////////////////////////////////////////////////////////

javascript

function login() {
jQuery.ajax(
{async : true
,type : "post"
,url : "/login/selectLogin.ajax"
,dataType : "json"
,data: $("#loginFrm").serialize()
,success : function(jsonData) {
var _login_result = jsonData.result;
if(_login_result == 1){
alert("로그인 성공!\n환영합니다.");
$("#loginFrm").attr("action", "/login/loginSuccess.do").submit();
} else {
alert("로그인 실패하였습니다. 아이디와 비밀번호를 재확인해 주세요.");
}
}
,error: function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}


'공부 > JAVA' 카테고리의 다른 글

(Eclipse) sysout 자동완성 안될 때  (2) 2016.03.09
(spring)[에러] Maven Java EE Configuration Problem  (1) 2015.12.28
(struts) 엑셀 파일 만들기  (0) 2015.12.17
(spring) web.xml  (0) 2015.10.21
(함수) split (문자열 자르기)  (0) 2015.10.01

+ Recent posts