목록전체 글 (323)
삶 가운데 남긴 기록 AACII.TISTORY.COM
보안 조치 우리는 종종 보안상 우클릭 이벤트나 드래그 등을 막아야 할 때가 있습니다. 보안이란 뚫지 못하는 방패의 개념이 아니라 뚫기 어렵게 만드는데 목적이 있다고 할 수 있습니다. 그런의미에서 자바스크립트의 우클릭, 더블클릭을 통한 선택, 드래그를 막는 방법을 소개합니다.
본래 뒤로가기는 클라이언트 측의 브라우저의 고유 기능이기 때문에 서버 측에서 막는 것이 사실 불가능 하지만 종종 기능상의 이유로 뒤로가기를 막을 필요가 있습니다. 이용자 뒤로가기를 막는 꼼수는 여러가지 있지만 가장 깔끔한 방법을 소개합니다. 원리는 히스토리 스택에 강제로 현재 페이지의 URL을 박아 넣은 뒤 뒤로가기를 할 경우 현재 페이지를 보여주는 방법입니다. 스크립트 태그 안에 아래와 같이 입력하면 됩니다. history.pushState(null, null, "http://현재페이지URL을 입력하세요."); window.onpopstate = function(event) { history.go(1); };
소개 보통 웹사이트에 접속한 사용자를 식별하려면 쿠키를 사용합니다. Canvas fingerprinting 은 웹사이트에 접속한 브라우저를 95% uniquely 하게 식별하는 기술입니다. 100% 식별이 아니기 때문에 주로 광고 타겟팅에 이용되고 있습니다. University of California, San Diego 의 연구원이 2012년 5월에 쓴 논문 “Pixel Perfect: Fingerprinting Canvas in HTML5” 이 최초입니다. 미국 백악관 사이트 포함 5.5% 이상 이 기술을 사용중인 것으로 알려졌습니다. 원리 html5 canvas로 렌더링 되는 이미지는 GPU나 드라이버의 영향으로 pc 마다 달라서 고유 이미지가 됩니다. 이 canvas 이미지를 base64으로 인코..
CSS에서 레이아웃을 담당하는 컨테이너 같은 블록요소, 등의 가운데 정렬 은 margin을 이용해서 합니다. {margin-left:0 auto; margin-right:0 auto; } 태그나 컨테이너나 부모요소 태그에 width를 설정하더라도 이미지 태그는 텍스트와는 달리 줄바꿈이 일어나지 않으므로 이미지 태그의 이미지의 size를 설정하지 않으면 부모 요소를 벗어나 표시되게됩니다. 이미지의 크기를 브라우저 크기에 자동 조절하려면 max-width 속성을 사용합니다. CSS 예제: img {width: inherit; max-width:100%; height: auto;}
javascript는 replaceAll 함수가 없어서 비슷한 기능을 하도록 구현해봅시다. 1. 정규식을 이용한 방법 var str1 = "2021/04/07"; var str2 = str1.replace(/\//gi,"-"); /를 표기하기 위해서는 이스케이프 문자 \와 같이 사용합니다. 위의 정규식은 /를 모두 - 으로 변경하는 효과가 있습니다. g는 문자열 전역 검색, i는 대소문자 구분안함 이라는 옵션입니다. 2. 함수를 만드는 방법 function replaceAll(originalStr, searchStr, replaceStr){ return originalStr.split(searchStr).join(replaceStr); } replaceAll("2021/04/07", "/", "-")
체크박스는 Y/N, true/false 형 데이터를 다루는데 주로 사용합니다. 체크박스의 name 값은 서버로 submit시 전송되는 parameter 이름이며 value 값은 parameter 값입니다. 체크박스의 id는 element들 중에서 유일하게 하나 식별하기 위한 용도입니다. 체크여부 확인(한개) 동의 체크여부 확인(여러 개) 봄 여름 가을 겨울 체크박스 전체 체크/체크해제 function checkAll(){ if(document.getElementById("checkAll").checked==true){ for(var i=0;i
select box 예제 선택 1 2 option 다루기
기본 예제 $.post("test.jsp"); 데이터를 같이 전달하는 예제 $.post("test.jsp", {name: "john", time: "10:00pm"}); 배열을 parameter로 전달하는 예제 $.post("test.jsp"), {'choices[]':["john", "susan"]}); 폼(form) 데이터를 전달 $.post("test.jsp", $("testform").serialize()); 콜백함수를 통한 리턴 값을 얻어와 알림창 출력 $.post("test.jsp", function(data){ alert(data);}); parameter로 데이터를 전달하고 콜백으로 리턴된 결과를 알림창으로 출력 $.post('test.jsp", {name:"john", time:"10:0..
1. 60레벨~65레벨 (56레벨부터 진행가능) 캘리컷 가기전에 미리 보석을 구입해서 가셔야 편합니다. 각 보석 구입처: 호박 헤어밴드(5백만/리가) 비취 반지(각국 개척지 상업도2만넘어야 나옵니다. 7백만) 마노귀걸이(4백만/ 자메이카) 다이아몬드 목걸이(1천1백만/ 케이프) 터키석브로치(6백만/ 호르무즈) 1.1.캘리컷 광장의 부호: 아내 선물을 물어봐 달라고 합니다. 1.2. 캘리컷 부두 잉글랜드 집정관 근처 부호의 아내: 선물 필요 없다고 합니다. 1.3. 캘리컷 광장의 부호: 보석을 구해다 달라고 합니다. 1.4. 캘리컷 항구: 부호의 사업이 망합니다. 1.5. 캘리컷 광장의 부호: 망했다고 한탄합니다. 1.6. 캘리컷 항구: 망했어도 선물을 구해다 달라고 합니다. 1.7. 캘리컷 부두 잉글랜드..
DecimalFormat 숫자 데이터를 원하는 형식으로 표현하기 위한 클래스 입니다. import java.text.DecimalFormat; public class DeciamlFormatEx { public static void main(String[] args) { double num = 1234567.89; DecimalFormat df = new DecimalFormat("0");//10진수, 빈자리는 0으로 채움 System.out.println(df.format(num)); df = new DecimalFormat("0.0");//소수점 표현 System.out.println(df.format(num)); df = new DecimalFormat("0000000000.00000"); Syst..
Date 클래스 현재 날짜 출력을 위한 클래스입니다. 날짜를 표기하는 포멧을 지정하려면 SimpleDateFormat 클래스를 이용합니다. import java.text.SimpleDateFormat; import java.util.Date; public class DateEx { public static void main(String[] args) { Date now = new Date(); String strNow1 = now.toString(); System.out.println(strNow1); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String strNow2 = sdf.format(now); System.out.p..
Math 클래스 수학 계산용 메서드들을 제공합니다. 대부분 static 이므로 인스턴스 생성 없이 바로 사용가능 합니다. public class MathEx { public static void main(String[] args) { int v1 = Math.abs(-5);//절대값 double v2 = Math.ceil(5.3);//올림 double v3 = Math.floor(-5.3); //내림 int v4 = Math.max(5, 9);//최대값 double v5 = Math.min(5.1, 2.3);//최소값 double v6 = Math.random();//0 이상 1 미만 랜덤 숫자 long v7 = Math.round(5.6);//반올림 System.out.println(v1); Syste..
자바는 기본 데이터 타입을 값으로 갖는 객체를 생성할 수 있습니다. 이러한 객체를 wrapper class 라고 합니다. byte : Byte char : Character short : Short int : Integer long : Long float : Float double : Double boolean : Boolean Boxing/Unboxing boxing: 기본 데이터 타입을 래퍼 클래스로 변환 unboxing: 래퍼클래스를 기본 데이터 타입으로 변환 public class BoxingUnBoxing { public static void main(String[] args) { //boxing Integer obj1 = new Integer(100); Integer obj2 = new Int..
Arrays 클래스에는 배열 관련된 기능들을 제공합니다. 모든 메서드는 static이기 때문에 클래스 이름으로 바로 메서드를 사용할 수 있습니다. binarySearch(배열, 찾는값) : 배열 항목중 찾는 값이 있으면 인덱스 값을 리턴 copyOf(원본배열, 복사할길이) : 배열을 복사할 길이만큼 복사해서 배열로 리턴 copyOfRange(원본배열,시작인덱스,끝인덱스) : 배열을 시작인덱스부터 끝인덱스까지 복사해서 배열로 리턴 deepEquals(배열, 배열) : 두 배열의 중첩된 배열 항목까지 비교해서 boolean 리턴 equals(배열, 배열) : 두 배열을 비교 fill(배열, 값) : 배열의 항목에 동일한 값을 저장 fill(배열, 시작인덱스,끝인덱스,값) : 배열의 항목에 시작인덱스부터 끝인..
정규 표현식 [abc] : a,b,c 중 하나의 문자 [^abc] : a,b,c 이외의 하나의 문자 [a-zA-Z] : 알파벳 중 하나의 문자 \d : 한개의 숫자 \s : 공백 \w : 한개의 알파벳 또는 한개의 숫자 ? : 없음 또는 한 개 * : 없음 또는 한 개 이상 + : 한 개 이상 {n} : n개 {n,} : 최소한 n개 {n, m} : n개에서 m개까지 이메일 정규식 \w+@\w+\.\w+(\.\w+)? 예제 import java.util.regex.Pattern; public class PatternEx { public static void main(String[] args) { String regExp = "(010)-\\d{3,4}-\\d{4}"; String data = "010-1..