목록분류 전체보기 (175)
가자미의 개발이야기
CSS 기초 구조 css는 html보다 더 쉽다. 선택자, 속성, 값으로 이뤄져 있다 div { font-size: 20px; color: red; } 선택자 { 송성: 값; 속성: 값; }선택자는 html의 어떤 요소에게 효과를 적용시킬지 인식하기 위해 사용되는 개념이다. 선택자는 html의 태그를 통해 특정 요소를 가르키게 된다.(h1, div ..) 속성(properties)과 값은 어떤 요소에 얼마나 효과를 적용시킬지를 결정할 때 사용된다. 이때 html의 속성과 구분해야한다. html의 속성은 attribute이다. 클래스 선택자 태그로 찾는 것 뿐만 아니라 클래스로 요소를 찾을 수 있다. 이렇게 클래스로 요소를 찾는 선택자를 '클래스 선택자'라고 한다 .title{ color:r..
기본 형태 태그는 각자의 의미를 가지고 있고 다음과 같은 형태를 가짐 h1->->ul->li 순으로 부모->자식 관계가 이뤄진다. 이때 자식의 이하 자식들(즉 section입장에서 ul, li를 의미) 후손(하위) 요소이라 한다. 반면 부모의 상위 부모들(즉 li 입장에서 h1, section을 의미) 조상(상위) 요소라 한다. 빈 태그 닫히는 개념이 없는 태그를 빈 태그라고 한다. 혹은 여는 태그가 스스로 닫아버리는 태그도 빈 태그로 취급한다. 슬래시를 붙이거나 붙이지 않는 두 가지 방법이 있는데, 하나의 방법으로 통일하는게 좋다. html 구조 index.html이라는 파일에 다믕과 같이 코딩했을 경우.. 문서의 구조 DOCTYPE(DTD, 버전 지정) DOCTYPE은 마크업 언어에서 문서 형식을 정..
a. 필터링 스트림 요소를 선택하는 방법을 필터링이라고 한다. 프레디케이트 필터링과 고유 요소만 필터링하는 방법에 대해 알아보자! 프레디케이트로 필터링하기 프레디케이트를 인수로 받아 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환하는 방식을 말한다. 대표적으로 filter method가 있다. 예시로 보자! List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList());고유 요소 필터링 고유 요소로 이뤄진 스트림을 반환하는 distinct method를 지원한다. 여기서 고유 요소라는 말은 중복된 요소가 없는 요소를 의미한다. 중복된 요소를 검증은 hashCode, equals로 결정된다. List numbe..
a. 스트림이 뭘까? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형(데이터를 처리하는 임시 구현 코드 대신 질의로 표현이 가능)으로 컬렉션 데이터를 처리할 수 있다. 쉽게 말하면, 스트림은 데이터 컬렉션 반복을 멋지게 처리하는 기능이라고 생각하자. 또한 스트림을 사용하면 멀티스레드 코드를 쓰지 않고도 투명하게 데이터를 병럴로 처리할 수 있다.(추후 알아보자) 일단 코드로 이해해보자 먼저 요리 중 저칼로리 요리명을 반환하고, 칼로리 기준으로 요리를 정렬하는 자바 7 코드를 보자. //요소 필터링 List lowCaloricDishes = new ArrayList(); for (Dish dish : menu) { if(dish.getCalories() < 400) { lowCal..
패스트캠퍼스 k-digital training 첫날 프로그래밍 배경지식에 대해 공부했다. 비전공자인 필자에게 새로운 개념이 많았다. 이를 정리해 보자! 클라이언트와 서버 서버는 정보를 제공하는 컴퓨터, 혹은 컴퓨터가 정보를 제공하도록 하는 프로그램을 의미한다. 흔히 클라이언트-서버를 자주 듣게 되는데, 클라이언트-서버 관계는 상대적인 개념이다. 정보를 얻는 쪽은 클라이언트, 정보를 제공하는 쪽은 서버다. 내가 어떤 곳에서 정보를 받아(클라이언트 역할) 그 정보를 다른 컴퓨터에게 제공(서버 역할)하면, 첫 번째에서는 클라이언트, 두번째에서는 서버가 된다. 웹 표준화 웹 표준화란 다양한 브라우저에서 동일하게 코드가 작동하도록 코딩하는 일종의 규약이다. 그러나 인터넷 익스플로러는 웹 표준을 지키지 않아, 크로..
a. 해시테이블 해시 테이블은 일종의 정보를 저장하는 서랍장. a는 2층에 b는 3층에 c는 1층에 넣어두는 방식... b를 보고 싶으면 어떤 서랍에 넣었는지 알아내서, 3층 서랍에 있는 내용 중에 b와 일치하는 것을 찾는 것. 해시테이블은 삽입, 삭제, 검색 연산을 빨리 처리할 수 있다. 만약 순서대로 정보를 서랍장에 넣었을 경우, 어떤 정보를 찾으려 할 때 일일히 순차적으로 찾아야 된다. 하지만 해시테이블은 그런 식으로 연산하지 않는다. 바로 해시 함수라는 것을 이용하기 때문에 보다 빠른 연산속도를 갖는다. 해시테이블 자료구조에서 가장 핵심은 각 정보들을 어떤 서랍에 넣을지를 결정하는 것!!! 정보를 어떤 서랍장(슬롯)에 넣을지를 결정하는 것이 바로 해시 함수!!!(f()로 표현) 예를 들어, 해시 ..
a. 왜 양방향 연결 리스트가 필요한가? 한방향 연결 리스트는 다음 노드를 연결하는 링크만 존재, 이전 노드를 알려면 head부터 다시 탐색을 해야된다... 이런 불필요한 연산을 줄이고자 이전 노드를 연결하는 링크가 있는 양방향 연결 리스트를 구현하고자 한다. 양방향 연결 리스트의 주요 개념은 다음과 같다. 이전 노드로의 링크(prev)를 포함해 이전 노드로 이동 가능 마지막 노드와 첫 노드가 서로 연결된 원형 리스트를 가정 첫 노드(head)는 항성 dummy 노드가 되어야 함 (dummy 노드는 리스트의 처음을 구분해주는 마커 기능을 하는 특별한 노드다.) b. 노드 클래스 class Node: def __init__(self, key=None): self.key = key self.next = se..
a. 연결리스트 기본 개념 연결리스트는 노드가 링크에 의해 기차처럼 연결된 순차 자료구조. 노드는 실제 값을 가지고 있는 data 정보와 인접 노드로 향하는 link 정보로 구성된 클래스로 구현한다. 다른 값에 접근하려면 링크에 따라 원하는 노드의 데이터에 접근한다. 다만, 배열처럼 index로 접근할 수 없다. 어떤 값을 찾으려면 처음부터 순차적으로 찾아야한다. 배열과 연결리스트의 차이를 그림으로 파악해보자! b. 한방향 연결리스트 노드들이 한 방향으로 연결된 리스트 가장 앞에 있는 노드를 head 노드라고 부르자. 가장 마지막 노드는 다음 노드가 없으므로 마지막 노드의 next 링크는 None이다. b-1. 노드 클래스 구현하기 class Node: def __init__(self, key=None,..
a. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이다! 익명 : 람다 표현식에는 이름이 없다. 함수 : 람다는 메서드와 달리 특정 클래스에 종속되지 않으므로 함수라 부른다. 전달 : 메서드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 : 익명 클래스보다 간결하다. 커스텀 Comparator 객체 구현 예시로 람다의 힘을 느껴보지! Comparator byWeight = new Comparator { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } } //Ramda Comparator byWeight = (Apple a1, Apple a2) -> a..
'녹색 사과를 모두 찾고 싶어요... 아니다! 150그람 이상인 사과를 모두 찾고 싶어요.... 생각해보니 150그람 이상이면서 녹색인 사과를 모두 찾아야 될 것 같네요..' 이렇게 시시각각 변화는 사용자의 요구 사항을 최소 비용으로 대응하기 위해서는 어떻게 해야할까? a. 동적 파라미터화란… 동적 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 말한다. 나중에 실행될 메서드의 인수로 코드 블록을 전달할 수 있다. b. 변화하는 요구사항에 대응하기 맨 처음 사과 요구사항을 자꾸 바꿔서 요청하는 예시를 해결해보자! b-1. 첫번째 시도. 녹색 사과 필터링 enum Color{RED, GREEN} public static List filterGreenApple(List inventory)..