목록분류 전체보기 (315)
삶 가운데 남긴 기록 AACII.TISTORY.COM
샌프란시스코 입항 퀘스트 새로운 땅을 찾아서 대항해시대 온라인에서 샌프란시스코는 퀘스트를 통해서 발견해야만 입항 할 수 있습니다. 선행 조건 북미 서해안 입항허가: 동아시아 입항허가(칙명)까지 완료 후 암스테르담 메르카토르 보고시 극북대서양이 나오는데 한번더 해역조사를 누르면 입항 허가가 나옵니다. 북해 해역조사 완료: 암스테르담 메르카토르와 대화 후 북해의 해역조사를 완료해야 합니다. 해역조사는 M키를 눌러 맵을 연뒤 해당 해역을 선택 후 조사 버튼을 누른 뒤 필요한 행동(인식, 채집 등)을 하면 완료됩니다. 필요 언어: 프랑스어, 북미어 모험 퀘스트 의뢰장소 : 마르세이유 모험가 조합 목적지: 샌프란시스코 크로노 퀘스트 : 19세기 1회만 완료 가능 공략 1. 마르세이유 주점에서 저스틴과 대화 2. ..
제네릭 타입은 JDK5부터 지원됩니다. 제네릭은 잘못 사용된 데이터 타입 때문에 발생하던 문제를 컴파일 과정에서 제거하고 불필요한 casting을 하지 않도록 해줍니다. 제네릭 타입 public class BoxExample { public static void main(String[] args) { Box box1 = new Box(); box1.set("BOX"); String str = box1.get(); System.out.println(str); Box box2 = new Box(); box2.set(4); int value = box2.get(); System.out.println(value); } } class Box{ private T t; public T get() {return t;}..
스레드 풀 스레드 풀은 작업 스레드를 제한된 개수(총 개수)만큼 정해놓고 작업 큐에 들어오는 작업들을 하나씩 스레드가 맡아서 처리합니다. 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리 합니다. 스레드 풀(작업 큐)로 병렬 처리를 한다면 갑자기 스레드가 폭증하는 상황에서도 성능 저하를 최소화 할 수 있습니다. 스레드 풀은 java.util.concurrent 패키지의 ExecutorService 인터페이스와 Executors 클래스를 제공하고 있습니다. 스레드 풀 생성 Executors 클래스의 newCachedThreadPool()이나 newFixedThreadPool(int n Threads) 으로 생성 할 수 있습니다. 스레드 풀 종료 스레드 풀은 데몬 스레드가 아니기 때문에..
리눅스 개발서버에서 MySQL 5.X 사용중에 디스크 용량 부족 메시지가 나오길래 우선 디스크 용량을 조사해 보았습니다. df -h 과연 루트 파티션의 용량이 꽉차 있었습니다. 그래서... 원인을 찾기 위해 좀더 조사해보았습니다. du -h 여러분의 실제 경로는 다를 수 있습니다만 /var/lib/mysql/ibtmp1 용량을 잡아먹던 범인은 바로 이 ibtmp1 파일이었습니다. 무한정 커지고 있더군요. 문제 해결은 단순히 MySQL를 재시작하는 것이었습니다. 리눅스 콘솔에서 아래와 같이 재시작 합니다. systemctl restart mysqld MySQL Temporary Tablespace 사용자가 생성한 임시 테이블들이 shared temporary tablespace 에 생성됩니다. 아무것도 설..
자바 어플리케이션은 main()스레드 외에 병렬로 처리하는 스레드를 같이 실행할 수 있습니다. 보통은 멀티 스레드로 병렬로 작업하는 것이 효율적이지만, 너무 많은 스레드를 실행하면 각 스레드간 context switching 에 시간을 더 소비하게 되어 오히려 효율이 떨어지게 됩니다. java.lang.Thread 클래스로부터 extends 하거나 Runnable 인터페이스로부터 implements 해서 스레드를 생성할 수 있습니다. Runnable 구현 방법 import java.awt.Toolkit; public class BeepTask implements Runnable { @Override public void run() { Toolkit toolkit = Toolkit.getDefaultToo..
보안 조치 우리는 종종 보안상 우클릭 이벤트나 드래그 등을 막아야 할 때가 있습니다. 보안이란 뚫지 못하는 방패의 개념이 아니라 뚫기 어렵게 만드는데 목적이 있다고 할 수 있습니다. 그런의미에서 자바스크립트의 우클릭, 더블클릭을 통한 선택, 드래그를 막는 방법을 소개합니다.
본래 뒤로가기는 클라이언트 측의 브라우저의 고유 기능이기 때문에 서버 측에서 막는 것이 사실 불가능 하지만 종종 기능상의 이유로 뒤로가기를 막을 필요가 있습니다. 이용자 뒤로가기를 막는 꼼수는 여러가지 있지만 가장 깔끔한 방법을 소개합니다. 원리는 히스토리 스택에 강제로 현재 페이지의 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. 캘리컷 부두 잉글랜드..
북대서양,북해,지중해,아프리카서부,아프리카,홍해,인도,카리브의 기본 해역은 명성치만으로 입항 허가를 받을 수 있습니다. 그래서 기본해역은 육두구 메이스나 남만품을 끊어 팔기로 충분히 열립니다. 하지만 중남미 동해안 부터는 칙명으로 입항허가를 받아야 합니다. 칙명 퀘스트는 완료된 후 입항 허가를 받은 뒤 다음 칙명을 받는 식으로 진행됩니다. 칙명은 자신이 편한것으로 선택해도 됩니다. 자국 왕궁 칙명: 중남미 동해안 신대륙의 정세 조사 공략 1. 왕궁의 대신에게 칙명(신대륙의 정세 조사) 수락 2. 카리브해 산후안으로 이동하여 항구관리와 2번 대화 3. 카옌과 페르남부쿠 사이 남미북동 상륙지점에 상륙 -> 겹바위 클릭 4. 본거지 왕궁에 보고 캘리컷 칙명: 동남아시아 해적피해의 대책 공략 1. 토박이해적용 ..