[Javascript]문자열에서 문자 찾는 몇가지 방법


문자를 찾는 방법 몇가지


1. indexOf

var stringVal = "javascript",
    substring = "java";
stringVal.indexOf(substring) !== -1;

javascript의 기본객체인 string의 indexOf를 이용하는 방법


포함하고 있는 문자의 인덱스를 반환한다.


만약 문자를 가지고 있지 않으면 -1을 반환한다.


2. includes(ES6이상 에서 적용 가능)

var stringVal = "javascript",
    substring = "java";
stringVal.includes(substring);


ES6에서 포함된 string의 includes 함수를 이용하는 방법


포함하고 있는 문자가 있으면 true, 없으면 false를 반환한다.


자세한 사항은 모질라페이지에서 


3. search

var stringVal = "Hello World",
    exp = /java/;
string.search(exp);


search함수를 사용하는 방법


포함하는 문자가 있으면 인덱스를 리턴한다.


만약 문자가 포함되어 있지 않으면 -1을 반환한다.


4. lodash 의 includes

var stringVal = "Hello World", substring = "Hell"; _.includes(stringVal , substring);


lodash는 자바스크립트 유틸이다.

lodash 사용법은 홈페이지를 참조한다.


5. 정규식

var stringVal = "Hello world",
    exp = /hell/; 
exp.test(stringVal );

정규식을 이용하면 복잡한 문자도 하나처럼 찾아낼 수 있고 하나의 문자를 여러개로 찾을 수도 있다.

문자열을 찾으면 true 없으면 false를 반환한다.

6. match

var stringVal = "super mario",
    exp = /mario/;
stringVal.match(exp);

찾는 문자열을 배열로 반환한다. 


실제 예제는 아래에서


JSfiddle 예제



Result탭을 누르면 결과를 확인 할 수 있습니다.

[자바스크립트] redirect 하는 방법


location.href 사용법


사용자가 클릭을 통해 페이지가 이동하면 location.href=""을 사용한다.


HTTP Redirect를 하고 싶으면 location.replace("")를 사용한다.


다음은 사용 예제



//HTTP Redirect를 클라이언트에서 처리할때
window.location.replace("http://example.com");

//사용자의 클릭 이벤트용
window.location.href = "http://example.com";



제이쿼리를 이용하는 방법


제이쿼리로도 다음과 같이 사용할 수 있다.

//attr속성을 사용한다.
$(location).attr('href', 'http://example.com');

이 방법은 사용가능 하지만 추천하지는 않는다.



이 외의 방법으로 페이지를 이동시키는 방법



//assign 복사함수로도 구현 가능
window.location.assign('http://www.example.com');

//window뿐 아니라 document로도 가능
document.location.href = '/path';

//구형 익스플로어에서는 다음방법도 가능했다.
window.navigate('http://example.com');

//히스토리를 이용하여 이동하는 방법
window.history.back();
window.history.go(-1);

//
self.location = 'http://www.example.com';


이렇게 많은 방법의 페이지 이동방법이 있지만 가장 위에 있는 방법을 추천한다.




[오라클]모든 테이블 명 가져오는 쿼리


테이블 명 가져오는 예제 쿼리


dba_tables의 접근 권한이 있다고 가정하면, 다음과 같다.

SELECT 
    owner
    , table_name
FROM dba_tables;

dba_tables 권한이 없는 경우 예제


dba_tables의 권한이 없으면 다음과 같이 테이블뷰를 사용한다.

SELECT 
    owner
    , table_name
FROM all_tables;


all_tables는 사용자가 접근할 수 있는 모든 테이블을 보여줍니다.


또 다른 방법으로는 다음과 같은 방법이 있다.



user_tables를 사용하는 경우의 예제


user_tables는 현재 접속한 사용자가 액세스 권한이 있는 테이블만 조회가 가능합니다.


그렇기때문에 owner에 대한 정보가 없습니다.


SELECT 
    table_name
FROM user_tables;



'DATABASE' 카테고리의 다른 글

[MySQL] Select Insert문  (0) 2017.12.26
[MySQL] String Replace  (0) 2017.12.20
[오라클] DATE 날짜 타입  (2) 2017.12.11
[MySQL]기본쿼리 (UPDATE)  (0) 2017.12.08
[MySQL] 기본 쿼리 (SELECT)  (0) 2017.12.02

[JAVA] 정규식 (RegEx)


정규식

정규식이란 문자열에서 특정 문자 조합과 일치시키기 위한 패턴입니다.



정규식 사용예제

패스워드 벨리데이션 함수를 만들었다.

"정규식"이란 부분만 정규식으로 바꾸면 정상 작동한다.


import java.util.regex.Matcher;
import java.util.regex.Pattern;

private static boolean validationPasswd(String pw){
    private static Pattern p = Pattern.compile("정규식");
    Matcher m = p.matcher(pw);

    if(mtch.matches()){
        return true;
    }
    return false;
}



패스워드 정규식 예제

1. 가장 많이 사용되는 최소 8자리에 숫자, 문자, 특수문자 각각 1개 이상 포함
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"


2. 최소 8자리에 대문자 1자리 소문자 한자리 숫자 한자리
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

3. 최소 8자리에 대문자 1자리 소문자 1자리 숫자 1자리 특수문자 1자리

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}"



이메일 정규식 예제

이메일 정규식 예제

"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$"


위도, 경도 정규식 예제

위도, 경도 정규식(-90~90,-180~180 소수점 6자리)

^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$

 

IP주소 정규식 예제


"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"

정규식 확인 할 수 있는 온라인 서비스


https://regexr.com/

'JAVA' 카테고리의 다른 글

[jsp] include 사용방법  (0) 2018.01.01
[JAVA] null 체크  (0) 2017.12.13
[JSP] jstl 과 el의 차이점  (0) 2017.12.04
[JSTL]choose와 when, otherwise 사용법  (0) 2017.11.23
[JSTL]fmt:formatNumber  (0) 2017.11.22

JSTL과 EL의 차이점


JSP를 사용하면 사용하게 되는 EL과 JSTL이있습니다.


EL은 Expression Language를 뜻하고


JSTL은 JSP Standard Tag Library를 뜻합니다.



EL예제


<% = test %>
${test}

위와 같은 형태로 작성되는것을 EL이라고 한다.


JSTL예제


<c:if test=""></c:if>
<c:forEach items=""></c:forEach>


위와 같은 형태로 작성하는 문법을 JSTL이라고 한다.


보통 우리가 쓰는 JSTL에서는 JSTL안의 변수에 EL을 담아서 쓰고 있다고 생각하면 된다.


그 예제는 다음과 같다.


JSTL + EL 예제



<c:forEach items="${array}" var="el" varStatus="idx">
  <p>${el.text}<p>
</c:forEach>



EL의 연산자 종류

연산부호 

 연산자

 +

-

 *

 /

 div 

 &&

and 

|| 

 or 

 ==

eq 

!= 

ne 

ge 

lt 

<= 

ge 

>= 

le 



주의할 점 

문자열에 대해서는 + 연산자는 할 수 없다.


따라서 다음과 같은 방법으로 표현한다.


<c:forEach items="${array}" var="el" varStatus="idx">
  <p>${idx.index} : ${el.text}<p>
</c:forEach>


JSTL CORE종류


<c:set> 

 변수명에 값을 할당

 <c:out>

 값을 출력

 <c:if>

 조건식에 해당하는 블럭과 사용될 scope설정

 <c:choose>

 다른 언어의 switch와 비슷 

 <c:when>

 switch문의 case에 해당

 <c:otherwise>

 switch문의 default에 해당

 <c:forEach>

 다른언어의 loop문 items 속성에 배열을 할당할 수 있음


주로 사용하는 것은 위와 같다.



다음엔 JSTL의 커스텀에 대해서 적어봐야겠다. 



'JAVA' 카테고리의 다른 글

[JAVA] null 체크  (0) 2017.12.13
[JAVA] 패스워드 정규식 (Regex)  (1) 2017.12.05
[JSTL]choose와 when, otherwise 사용법  (0) 2017.11.23
[JSTL]fmt:formatNumber  (0) 2017.11.22
VO, Map 객체 JSON 으로 변환  (0) 2017.11.19

jQeury AJAX 예제


jQuery.ajax(url, [setting]) 또는 jQeury.ajax([setting])으로 사용합니다.


HTTP 리퀘스트에 대해 비동기 동작을 합니다.



속성값으로는 다음이 사용됩니다.


 속성

 값

 url

 리퀘스트 보내게 되는 URL 값을 Stirng으로 입력합니다.

 accepts

 서버에서 전송 받을 MIME type을 Object방식으로 설정 합니다.

 async

 기본값은 true이며 비동기 방식으로 진행할 건지에 대한 셋팅입니다.

 beforeSend

 리퀘스트 보내기전에 작동하는 함수를 입력합니다.

 complete

 성공, 실패, 에러등 모든 상황이 종료된 이후의 함수를 입력합니다.  

 data

 리퀘스트 URL과 함께 입력될 데이터를 Object, Array, String 형식으로 입력합니다.

 method(type)

 리퀘스트전송에 대한 메소드 타입을 입력합니다. (예 : "GET" , 또는 "POST" 등) 

 error 전송이 완료된 후 에러상황에 대한 함수를 입력합니다. 

 success

 전송이 완료된 후 성공상황에 대한 함수를 입력합니다.



속성값은 더 많이 있지만 자주 사용하는 속성들은 이 정도에서 크게 벗어나지 않습니다.


기본 예제코드

$.ajax({
  url: "/json/people",
  data : {"id" : "admin"},
  beforeSend: function( xhr ) {
    console.log('리퀘스트 보내기 전에 데이터 조작가능');
  },success: function(d){
    console.log('서버에서 받은 데이터 = ' + d);
  }, error : function(e){
    console.error('에러발생');
  }
})


ajax를 통해 DOM을 추가하는 예제


$.ajax({
  url: "test.html",
  cache: false
}).done(function( html ) {
    $( "#results" ).append( html );
  });
});


위의 예제는 test.html이 동적으로 작동한다는 가정을 하고 cache를 false로 하고 사용하였습니다.

브라우저의 cache내용을 받지 않고 서버에서 새로 받아오겠다고 이해하면 됩니다.


그리고 ajax가 종료되면 done함수의 results 엘리먼트에 서버에서 받아온 HTML을 엘리먼트 뒤에 추가(append) 하게 됩니다.

MySQL 기본 쿼리(SELECT)


select 쿼리

select문은 하나이상의 행을 테이블에서 검색하는데 사용하며 하위쿼리(subQuery)를 사용할 수 있다.
select문은 테이블을 참조하지 않고 계산용으로도 사용할 수 있다.

SELECT 

    [컬럼명] 

FROM 

    [테이블명] 

WHERE 

    [조건]

AND

    [조건] 

GROUP BY [컬럼명] 

ORDER BY [컬럼명] [ASC | DESC]

LIMIT [행 수] OFFSET [시작 행 수]


select 쿼리 예제


SELECT
    idx,
    name,
    type,
    age,
    gender,
    birthday
FROM USER_TABLE
WHERE type = 'A'
ORDER BY idx ASC
LIMIT 0, 10
-- 또는 LIMIT 10 OFFSET 0


테이블을 참조하지 않은 select 쿼리 


SELECT
    1+1 AS result
FROM dual;

SELECT
    NOW()
FROM dual;

위의 쿼리는 숫자를 계산한 값을 결과로 얻는것이고

두번째 쿼리는 현재 시스템 시간을 얻는 쿼리 이다.

주의


페이징을 사용할 때에는 꼭 인덱스가 잡혀있는 테이블로 order by를 해서 가지고 옵시다.
그렇게 하지 않으면 테이블 Full scan이 일어나 DB성능에 영향을 줍니다.


'DATABASE' 카테고리의 다른 글

[MySQL] Select Insert문  (0) 2017.12.26
[MySQL] String Replace  (0) 2017.12.20
[오라클] DATE 날짜 타입  (2) 2017.12.11
[MySQL]기본쿼리 (UPDATE)  (0) 2017.12.08
[ORACLE] 모든 테이블 이름 가져오는 쿼리  (0) 2017.12.05

테스트 장비에 도메인 설정하기(hosts 파일 도메인 적용)



프로젝트 진행시에 hosts파일에 도메인을 적용하며 사용하다가 폰이나 테블릿같은 기기로 테스트를 하는 경우가 종종 있습니다.


이런 경우에 기기 종류별로 여러가지 방법이 있지만 통합적으로 해결할 수 있는 가장 좋은 방법은 노트북의 핫스팟을 이용하게는 가장 좋다고 생각한다.


윈도우도 가능하고 Mac에서도 가능 하다.



1. 윈도우 적용기.


C:\Windows\System32\drivers\etc\hosts 파일을 관리자 권한의 노트패드를 이용하여 수정한다.



필자는 notepad++ 를 사용하였다.


2. 노트북


커맨드 창을 열어 다음 명령어를 실행 합니다.


netsh wlan show drivers



무선랜카드의 AP지원 여부를 알아보는 명령어 입니다.




위와 같은 메세지가 나오면 무선네트워크를 지원하지 않는 랜카드를 사용하는 겁니다.


요즘에 나오는 노트북은 거의 AP를 지원하는 무선랜카드를 사용합니다.


3. 위의 조건이 완료되면 핫스팟을 on합니다.

핫스팟의 이름을 지정하고 비밀번호를 설정합니다.



4. 테스트 기기연결


위의 연결된 와이파이로 테스트 기기를 연결합니다.


example.com의 연결되는것을 확인할 수 있습니다.



Mac장비에서 설정하기

맥도 방법은 동일합니다.


1. /etc/hosts파일 수정

윈도우 방법과 동일합니다.


2. 환경설정 > 인터넷 공유

테스트 장비를 맥이 공유하는 Wifi로 접속합니다.




맥장비는 안되는 것으로 확인 되었다.





우분투 명령어


1. 종료

리눅스를 종료하는 명령어이다.

sudo shutdown -h now


다음과 같이 써도 무관하다.


sudo shutdown -h 0



2. 재시작


리눅스를 재시작하는 명령어 이다.


sudo reboot


다음과 같이 써도 무관하다.


sudo shutdown -r now



3. 방화벽


방화벽 활성화 명령어


sudo ufw enable


방화벽 비활성화


sudo ufw disable


ufw는 기본적으로 비활성화 되어 있다.



포트허용 명령어


sudo ufw allow 22


포트 차단 명령어


sudo ufw deny 22


특정 아이피 허용/차단 명령어


sudo ufw allow from 192.168.202.1 
sudo ufw deny from 192.168.202.1



4. 파일 내용보기


파일 내용 보기


cat 파일명



5. 파일의 변화되는 내용 보기

파일이 바뀌고 있는 내용을 실시간으로 보고 싶을 때(예를 들면 웹서버 로그 등)


tail -f 파일명




자바스크립트 URL 인코딩 시 알고 있으면 좋은 점



자바스크립트에서 URL인코딩을 할 때 보통 encodeURIComponent(str)또는 encodeURI(str)를 사용 합니다.


encodeURIComponent 함수(JavaScript)

텍스트 문자열을 URI 구성요소로 인코딩 합니다.


encodeURIComponent 함수는 인코딩된 URI를 반환합니다. 

decodeURIComponent에 결과를 전달하면 원래 문자열이 반환 됩니다.



encodeURI 함수(JavaScript)


텍스트 문자열을 유효한 URI로 인코딩 합니다.


encodeURL 함수는 인코딩된 URI를 반환합니다. decodeURI에 결과를 전달하면 원래 문자열이 반환됩니다. 


encodeURI 함수는 ":", "/", ";", "?"등의 문자를 인코딩하지 않으므로 이 문자들을 인코딩 하려면 encodeURIComponent를 사용합니다.



두 함수의 설명을 읽어보면 비슷하지만 encodeURI는 몇가지 문자를 인코딩하지 않는다고 나와있습니다.


인코딩 하지 않는 문자를 표로보면 다음과 같습니다.


 함수

인코딩 하지 않는 문자 

 escape()

 @, *, /, +

 encodeURI()

 ~, !, @, #, $, &, *, (, ), =, :, /, ,, ;, ?, +, '

 encodeURIComonent()

 ~, !, *, (, ), '



표에 콤마도 같이 섞여있어서 보기가 힘들지만 각각의 인코딩함수에는 이러한 차이가 있습니다.

+ Recent posts