프로그래밍

    이펙티브 자바 규칙 26 - 가능하면 제네릭 자료형으로 만들 것

    이펙티브 자바 규칙 26 - 가능하면 제네릭 자료형으로 만들 것

    제네릭에 대한 설명을 하기 위해 6장에서 사용했던 스택 코드를 사용할 것입니다. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size == 0) throw new EmptyStackException(); return elements[--..

    이펙티브 자바 규칙 25 - 배열 대신 리스트를 써라

    이펙티브 자바 규칙 25 - 배열 대신 리스트를 써라

    이번 규칙은 들어가기 전에 알아야 할 개념들이 있습니다. 저도 잘 몰라서 조사하고, 테스트 해보니 천천히 설명해볼게요. 배열과 제네릭(List)의 차이 중 하나로 배열은 공변 자료형(covariant)이고, 제네릭는 불변 자료형(invariant) 입니다. 영어에 익숙하신 분들은 co 접두사를 보고 금방 눈치를 채질 수도 있으신데요. A와 B의 자료가 있을 때 공변 자료형은 A가 B의 하위 자료형이라면, A의 배열도 B의 하위 자료형이 됩니다. 반대로 불변 자료형은 상위나 하위의 자료형이 될 수 없고요. 밑의 코드를 한번 볼까요. Object 배열과, Object List를 만들어 봤습니다. 둘 다 실행이 안되는 코드입니다. 하지만 8번 라인의 코드는 런타임 중에 에러가 나고 11번 라인의 코드는 컴파일..

    javascript, jquery 자신을 제외한 / 이외의 다른 개체의 이벤트 발생

    javascript, jquery 자신을 제외한 / 이외의 다른 개체의 이벤트 발생

    부트스트랩 4으로 이러한 ul을 만들 수 있다. 코드는 아래와 같다. Basic Advanced Superior 클래스에 itemli 를 주었다. disabled 가 a 태그의 글씨를 회색으로 만들어버리는 태그이다. var itemli = $('.itemli'); itemli.click(function () { $(this).find('a').removeClass('disabled'); itemli.not($(this)).find('a').addClass('disabled'); }); itemli를 변수로 잡은 뒤 클릭 메소드 -> a tag 찾기 -> disabled 지우기 자신을 제외한 itemli 찾기 - > a tag 찾기 -> disabled 추가해주기 basic을 클릭하면 basic이 파란불이..

    네비게이션 바 fixed-top 설정 시 겹치는 문제

    네비게이션 바 fixed-top 설정 시 겹치는 문제

    네비게이션 바의 fixed-top 설정을 할 때 최상위에 설정된 nav bar가 화면을 먹는다. 원래 이래야 하는 것이 이렇게 먹어버리는 것이다. 해답은 https://stackoverflow.com/questions/11124777/twitter-bootstrap-navbar-fixed-top-overlapping-site 이쪽에서 알려주고 있다. 요약: 만약 당신이 padding 속성을 추가하지 않는다면, fixed navbar는 당신의 다른 컨텐츠를 잡아 먹을 것입니다. 나는 부트스트랩을 사용하는데 다른 페이지들의 body에 padding 속성을 추가해도 해결됐지만 이렇게 nav bar를 사용하는 헤더파일의 body에 패딩을 주니, 다른 모든 페이지에 padding을 줄 필요 없이 다 해결됐다.

    부트스트랩 네비게이션 fixed-top 설정 시 모달 먹통 문제

    부트스트랩 네비게이션 fixed-top 설정 시 모달 먹통 문제

    부트스트랩을 사용하면서 자주 보게되는 것이 이런 top-navigation bar 다. 이걸 스크롤 여부에 관계없이 항상 위에 놓고싶으면, class 에 fixed-top 옵션을 주면 된다. 하지만 만약 navigation bar 안에 modal을 작동시키는 버튼이 있다면 모달은 먹통이 되어버리고 만다. 문제의 해결은 Stackoverflow에서 찾을 수 있다. https://stackoverflow.com/questions/10636667/bootstrap-modal-appearing-under-background If the modal container has a fixed or relative position or is within an element with fixed or relative pos..

    이펙티브 자바 규칙 24 - 무점검 경고를 제거하라

    이펙티브 자바 규칙 24 - 무점검 경고를 제거하라

    제네릭은 컴파일러의 경고를 많이 보게되는 기능 중 하나입니다. 무점검 형변환 경고(uncecked warning), 무점검 메소드 호출 경고(unchecked method invocation warning), 무점검 제네릭 배열 생성 경고 등 밑의 코드를 한번 볼까요 컴파일러 상 에러는 나지 않았지만 Unchecked assignment로 경고를 주고 있습니다. 저번 포스트에서도 봤던 거죠. 밑의 코드대로 바꾸면 경고는 사라집니다.Set exaltation = new HashSet(): 이 경고는 간단하게 제거가 가능했지만 제네릭은 경고가 나오기 쉬운만큼 지우기 어려운 경고들도 많습니다. 만약 형 안정성이 확실한데 경고를 지우기 어렵다면 어노테이션을 사용하는 방법이 있습니다. ArrayList의 일부인 ..

    이펙티브 자바 규칙 23 - 새 코드에는 무이자 제네릭 자료형을 사용하지 마라

    이펙티브 자바 규칙 23 - 새 코드에는 무이자 제네릭 자료형을 사용하지 마라

    자바 1.5부터 제네릭을 사용할 수 있게되었습니다. 리스트, 셋 등에서 많이 사용해보셨겠지만, 제네릭은 자료형을 매개로 받아 지정하는 것을 이야기 합니다. public static void main(String[] args){ class test { private T data; public test(T data) { this.data = data; } } test test = new test("text"); System.out.println(test); } 이런식으로 말이죠. 이 제네릭은 무인자로도 사용이 가능합니다. test test = new test("text");이렇게 말이죠. 컴파일 에러가 뜨지 않습니다. 하지만 권장되지 않습니다. 무인자로 사용할 경우 형변환 하는 과정에서 의도되지 않게 삽입된..

    jquery textarea 변수 값 가져오기

    1. 선택자일 때$('#textarea').val() 크롬이나 익플에서는 html()도 되지만, 파폭에서는 안될 수도 있다. 때문에 val을 사용해주는 것이 바람직하다. 2. 변수 처리 했을 때 var textarea = document.getElementById('#textarea');console.log(textarea.value);다른 기능들과 유사하게 직접 선택할 때에는 val이지만 변수를 통해 값을 가져올 때는 value를 사용한다.

    이펙티브 자바 규칙 22 - 내부클래스 종류와 멤버 클래스는 가능하면 static으로

    자바에서 중첩(nested)클래스는 4가지로 나뉩니다. 1. 정적 멤버 클래스(static member class)2. 비 정적 멤버 클래스(non-static member class)3. 익명 클래스4. 지역 클래스 먼저 정적 멤버 클래스는 가장 간단한 중첩클래스 형태입니다. 클래스 안쪽에 static 클래스를 선언해 바깥 클래스를 사용할 때 클래스를 자동으로 생성시켜주는 역할을 합니다. 바깥 클래스를 사용할 때 자연스럽게 사용되는 헬퍼 클래스의 역할을 하는 만큼, 매번 바깥 클래스를 호출할 때마다 내부 클래스를 재생성하는건 메모리 효율상 좋지 않기 때문에 내부 클래스에서 바깥 객체에 접근할 필요가 없는 클래스의 경우 static을 붙여 생성시켜놓고 쓰게끔 하는 것입니다. 이 경우 정적 멤버 클래스는 ..

    JSTL c tag 에서 eq, ne null check 하기

    이런 식으로 사용하는 c tag는 많이 보셨을 겁니다, jstl에도 if가 있지만, when 이 if의 기능을 포함하기 때문에 저는 when 태그를 주로 사용합니다. 여기서 사용할 수있는 연산자는 그 생김새가 좀 다릅니다. equal로 추측..eq 연산자는 ' = ' 의 역할을 합니다. 문자열 등을 비교할 때 사용하죠. negative equal로 추측..ne는 ' != ' 를 의미합니다. null 체크는 empty로 하시면 됩니다. 이 의미는 name 변수의 값이 비었냐(empty)는 의미입니다. null일 경우 true, null이 아닐 경우 true를 리턴합니다. not null의 경우는 not을 추가해주면 됩니다.