반응형

분류 전체보기 226

[Javascript] 원하는 위치로 스크롤 자동으로 이동

간단하지만 또 검색해서 찾기 힘든것들을 지속적으로 올리는중...! 본인은 여러개의 아이콘중에 한 아이콘을 클릭했을때, 아이콘들을 수정할 수 있는 팝업창을 띄우고,(그 팝업창에는 아이콘들을 한번에 수정할 수 있다) 해당 아이콘의 수정위치까지 자동으로 스크롤이 내려가도록 설정하였다. 해당 코드는 간단하다. function movePopupScrollByItemIndex(index){ var offset = $("아이콘").eq(아이콘index).position(); //해당 아이콘의 위치를 찾는다. var bodyHeight = $("아이콘List를 감싸는 DIV").outerHeight(); //전체 Div의 높이 var cardBodyPadding = parseInt($("아이콘List를 감싸는 DIV"..

[Java-Algorithm] DFS 깊이 우선탐색 알고리즘이란? 인접리스트 그래프

이번에는 코딩테스트에 자주 출몰한다고하는..? DFS 알고리즘을 공부해 보려고한다. 비전공자로 시작한 만큼 하나하나 꾸준하게 나만의 공부를 하는것이 중요하다...! 시간날때마다 어떤것이든 하나씩 공부를 하는 습관을 길들이며... DFS 깊이 우선 탐색 (Depth Fisrt Search) "더 나아갈 길이 보이지 않을 때까지 깊이 들어간다"를 원칙으로 그래프 내의 정점을 방문하는 알고리즘 분기가 여러개가 있을때, 분기별로 끝까지 탐색해보고 이어진 다음 노드가 없을경우 다음분기로 넘어가는 방법이다. 완전 탐색 알고리즘에서 사용한다고 하는데, 자세하게 언제 어떻게 사용하는지는 알고리즘을 공부하고 난뒤 알아보도록 하자! 구현 방법 2가지 1). 순환 호출 이용(재귀) 2). 명시적인 스택 사용 - 인접한 정점..

[Java-Basic] Method.Invoke()란? 가벼운 사용방법(메서드실행)

메서드명만 받아서 정의되어있는 메서드중 내가 원하는 메서드만 실행시키고 싶을때 사용한다. (보통 그냥 메서드를 실행시키면 되지만, Client단에서 메서드를 각기 다른것으로 호출하는데, 같은 Service를 탈때 사용했다.) //내가 정의해둔 Dao에서 메서드들을 가져온다. Method[] methodList = testDao.getClass().getMethods(); //가져온 메서드중에서 메서드명이 같은것을 실행시킨다. for(Method m : methodList){ if(m.getName().equals(전달받은이름)){ 결과 = m.invoke(testDao,전달파라미터); } } 자 여기서 우리는 해당 Service를 공통으로 사용하는데, 클라이언트는 각기 다른상황이라고 생각해보자. 원래 였..

[Spring-JSP] Custom Annotation을 이용한 AOP 만들기

Spring하면 빼놓을수 없는것이 AOP이다. CustomAnnotation을 이용하여 권한을 체크하는 방법을 기록해두려고 한다. 1). AuthorizationAspect를 정의하여 읽어올수 있게 Bean으로 등록한다. root-context.xml => 다른 AOP도 아래와 같이 추가해주면 된다. 2). Custom Annotation을 만든다. annotations.CheckAuth.java @Retention(RetentionPolicy.RUNTIME) //Runtime동안 적용? @Target({ElementType.METHOD})//Method에 적용 public @interface CheckAuth{ int[] checkAuth(); //숫자 배열로 어노테이션 값을 전달받을 수 있게 설정. ..

[JPA] JPA Repository 메서드 명명규칙

JPA는 우리가 쿼리를 열심히 짜는것을 대신해 간단하게 표현하여 쿼리를 사용할 수 있도록 해준다. 그렇다면 어떤 형태로 메소드 이름을 붙이면 되는지, 명명 규칙에 대해 간략하게 정리해두자. 검색 메서드 1). findAll() DB에서 전체 값을 list로 불러올때 사용한다. 2). findOne() primary key로 값을 1건 조회할 때 사용한다. 3). findByXX => SQL Where절이라고 생각하자. findBy뒤에 우리가 정의한 Entity의 이름을 붙이면된다. Entity의 이름의 첫글자는 대문자로 하며, id를 조건으로 검색한다면 findById(int id) 로 검색하면 된다. 여기서 여러개의 조건을 걸고싶다면...? And조건 findByIdAndName(int id, Stri..

JPA

[Java/Basic] Queue란 ? Stack이란? 사용법 및 기본개념

Queue와 Stack을 알아보려고 한다. Queue(큐) Queue는 FIFO First in First Out 구조로, 먼저 들어간 데이터를 먼저 꺼내는 방식이다. 데이터를 일시적으로 쌓아두기 위한 자료구조 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행 그래프의 넓이 우선 탐색(BFS)에서 사용 버퍼링(담아놓고 순차적으로) Enqueue : 큐 맨 뒤에 데이터 추가 Dequeue : 큐 맨 앞쪽의 데이터 삭제 Queue Method 메서드 설 명 add( ) 객체 추가 성공 : true, 실패(저장공간이 부족 등) IllegalStateException 발생 remove( ) 객체삭제 비어있으면 NoSuchElementExcep..

[Java/Basic] Daemon Thread란? 백그라운드 실행데몬?

프로젝트를 진행하다보면 Daemon Thread를 사용해야 할 경우가 있다. 본인은 서버가 시작될떄 background로 떠있는 daemon이 필요하여, Daemon Thread를 사용하였다. 자 그럼 Daemon Thread란? 무엇인가. 자바에서 스레드는 각자의 작업이 끝날때까지 계속해서 작업을 하게 되어 있다. Daemon Thread는 main Thread가 종료될때 같이 종료가 되는 점을 이용한 자식 Thread라고 보면된다. Daemon Thread : 주 스레드의 작업을 돕는 보조적인 역할을 수행 : 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동종료 => 워드 프로세서의 자동저장, 미디어 플레이어의 동영상 및 음악재생 등 Daemon Thread 설정 방법 사용법은 간단하다. Threa..

[Java/Basic] Thread run과 start의 차이

간단한 쓰레드를 하나 예시로 남겨두려고 한다. Thread에서 run(); start(); 메서드 둘다 같은 기능을 하는것 같은데 뭐가 다를까 궁금할 수 있다. 초보들만...ㅎㅎ;; 여기서 궁금증을 해결하기위한 짧은 코드를 준비해 보았다. 먼저 start(); 로 Thread를 돌렸을때의 결과를 보고 run();으로 돌렸을때의 결과를 볼예정이다. public class ThreadRunStartTest implements Runnable{ int[] timeList = new int[10]; public ThreadRunStartTest() { for (int i = 0; i < timeList.length; i++) { timeList[i] = i; } } @Override public void run..

[Spring-JSP] Thumbnailator-이미지/jcodec-비디오 업로드시 썸네일 만들고 저장하기

이미지 업로드하고, 썸네일 만들어서 저장하려고 한다. 일단 다른 로직 제외하고 썸네일쪽만 보려고 한다. 1). pom.xml Dependency를 추가해준다. 이미지 썸네일 만들때는 Thumbnailator를 사용 비디오 썸네일 만들때는 imgscalr과 jcodec을 사용 파일업로드는 commons-io 를 사용 commons-io commons-io 2.4 commons-fileupload commons-fileupload 1.3 //이미지 썸네일 만들때 사용Library net.coobird thumbnailator 0.4.11 //비디오 썸네일 만들때 사용Library org.imgscalr imgscalr-lib 4.2 org.jcodec jcodec 0.1.9 org.jcodec jcodec-..

[Javascript] 파일업로드 이미지, 비디오 파일 Validation

파일 업로드를 사용할때 자주쓸만한 Validation 적어놔야지 /**Img Video Validation-START**/ function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } function isImage(filename) { var ext = getExtension(filename); switch (ext.toLowerCase()) { case 'jpg': case 'gif': case 'bmp': case 'png': //etc return true; } return false; } function isVideo(filename) { var ext = getExtension..

반응형