안녕하세요 박스여우입니다. 이번 포스팅은 간단하게 Java에서 XML을 JSON 처럼 사용하는 방법에 대해 알아보도록 하겠습니다. ■ Main12345678910111213141516171819import java.io.IOException;import java.util.Properties; public class XmlMain { public static void main(String args[]){ StringOutputStream out = new StringOutputStream(); Properties props = new Properties(); props.setProperty("email.support", "donot-spam-me@nospam.com"); try { props.storeTo..
안녕하세요 박스여우입니다. 오늘은 오랜만에 잡담을 하고자 합니다. 현재 저는 고등학교 2학년이며 모든 학생이 그렇듯이 시험기간에 있습니다. 성적에 그렇게 크게 신경쓰지 않는편이긴 한데, 사실상 마지막 시험이니 그래도 조금더 공부를 해보려고 합니다. (일주일 남은 시험공부를 아직도 시작 안해놓고서...) 아무튼 이런 저런 사정으로 인해 앞으로 1주일 정도는 포스팅을 못할것 같습니다. ■ Git 사용후기사실 Git을 처음 접해봤던것은 작년 말쯤이였습니다. 하지만 혼자 프로젝트를 많이 하다보니 Git의 필요성을 그리 크게 느끼지 못했습니다. 하지만 얼마전에 본 면접을 통해서 버전관리 프로그램의 중요성을 느꼈고, 우연한 기회로 웹 프론트엔드 부분에 대해 팀 프로젝트를 진행할 기회를 가지게 되어 Git을 사용할 ..
■ Anti-pattern우선 이에 대해 알아보기 전에 Anti-pattern에 대해 알아보도록 하겠습니다. 객체지향 프로그래밍에서는 싱글톤,옵저버 등 여러가지 디자인 패턴이 있습니다. 이러한 디자인 패턴은 객체지향 프로그래밍에 중요한 요소입니다. 하지만 이러한 디자인 패턴중에서 필요하거나 사용해야 하는 패턴도 있는 반면, 사용을 지양해야 하는 패턴들이 있습니다. 그런 패턴들을 Anti-pattern이라고 합니다. Anti-pattern은 실제 많이 사용되는 패턴일지라도 비효율적이거나 비생산적인 패턴을 의미합니다. 이러한 anti-pattern의 여러가지 예시를 알아보도록 하겠습니다. 1. God object하나의 클래스에 너무 많은 필드와 함수를 넣어서 너무 많은 것을 알고 너무 많은 것을 할 줄 아는..
■ 서론안녕하세요 박스여우입니다. 객체지향을 배울때 가장 혼동이 오고 무엇을 하는 개념이 될 수 있는 것들이 바로 인터페이스와 추상클래스가 아닐까 합니다. 이런 이유때문인지 회사의 면접을 볼때 객체지향을 잘 이해하고 있는지 확인하기 위한 단골 질문으로 나오는 문제이기도 합니다. 이번 포스팅에서는 인터페이스와 추상클래스에 대해 알아보도록 하겠습니다. ■ 인터페이스 - Interface인터페이스 무엇일까요? 우선 그 내용을 사전에서 찾아보도록 하겠습니다. 사물간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적, 영속적인 접근을 목적으로 만들어진 매개체 라고 합니다. 위처럼 위키에서 서술된 내용이 사실 이번에 알아보고자 하는 인터페이스와 어느정도 일치하는 부분이 있습니다. 이에 대한 내용은 우선 인터페이스..
■ 잡담Linked List의 장단점이 무엇입니까? 면접관님의 질문이였습니다. 지원자는 그 순간 머리를 재빠르게 굴리기 시작했지만 시원한 답변을 하지 못했습니다. 지원자는 Linked List의 구조를 숙지하고는 있었지만, 장단점에 대해서는 인지를 하고있지 못했기 때문입니다. 이번 포스팅에서는 이와같은 불상사가 발생하지 않기 위해 Linked List를 이해하고 그의 장단점에 대해 알아보도록 하겠습니다. ■ 단일 연결 리스트연결 리스트는 각각의 노드가 다음 노드를 가리키며 연결되어 있기 때문에 연결리스트라고 합니다. 단일 연결 리스트의 경우에는 각 노드가 다음 노드만을 가리키기 때문에 단일 연결리스트라고 불립니다. 단일 연결리스트에 대한 정확한 이해는 그림을 통해 확인해 보도록 하겠습니다. 단일연결리스트..
■ 직렬화 - Serialization여러 프로젝트를 진행하다보면 가끔씩 객체를 파일로 저장하거나 네트워크를 통해 전송하고 싶은 경우가 있습니다. 이럴경우 객체를 JSON으로 일일이 바꿔서 전송했는데요, 이처럼 불편한 방식을 사용하지 않고 정말 깔끔하게 객체그 자체를 저장하거나 전송할 수 있는 방법이 있습니다. 짐작하셨다싶이 그 방법은 바러 직렬화(Serialization)인데요, 이번 포스팅은 이 직렬화에 대해 알아보고 예제를 통해 사용 방법을 알아보도록 하겠습니다. ■ 직렬화란?직렬화라는 단어에는 무언가 일자로 늘어놓는것이 연상되는데요, 실제로 직렬화라는 개념은 이와 비슷합니다. 직렬화는 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것 입니다. 다시말해 객체의 내용을 바이트 ..
■ JVM - Java virtual machineJVM은 자바를 실행하기 위한 가상 머신입니다. java가 어떤 플랫폼에도 상관 없이 독립적으로 구동될 수 있는 비밀이 바로 이 JVM에 있습니다. Java로 작성된 프로그램은 모두 이 JVM이라는 가상 컴퓨터 위에서 구동되기 때문에 Java 애플리케이션이 실행되기 위해서는 받드시 JVM이 필요합니다. JVM은 Java의 컴파일에 관련하여 연관이 깊은데 이에 대한 내용은 이전 포스팅에서 이미 다뤘습니다. (http://boxfoxs.tistory.com/244) 이번 포스팅에서는 이러한 JVM의 메모리 구조에 대해서 알아보고자 합니다. ■ JVM의 메모리 구조응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 J..
■ 잡담병합정렬에 대해서는 고등학교 1학년인 작년에 이미 배워서 직접 짜본적도 있었습니다. 하지만, 정렬 알고리즘을 사용하지 않다보니 배웠던것도 까먹게 되더군요.. 그래서 이번에는 병합정렬 알고리즘에 대해 알아보도록 하겠습니다. ■ 병합정렬병합정렬은 이름만 듣게되면 무언가 합치는 정렬이라고는 짐작이 될것 같습니다. 일부분은 맞는 말 입니다.병합정렬은 전체 원소를 하나의 단위로 분할한 후 분할한 원소를 다시 병합하는 정렬방식이며 분할정복 기법중 하나입니다. 1. 분할정렬되지 않은 데이터를 위의 그림과 같이 최소한의 크기로분할합니다. 2.합병분할한 데이터를 2 그룹씩 짝을지어 합병하고 정렬을 수행합니다. 이 과정을 반복하게 되면 최종적으로 데이터 정렬을 모두 마치게 됩니다. 3.정렬분할된 데이터를 정렬하며 ..
안녕하세요 박스여우입니다. 이번에는 DataBase의 트랜잭션 회복기법에 대해 알아보도록 하겠습니다. ■ UNDO & REDOUNDO : 만약 해당 트랜잭션이 어떤 이유든 정상적으로 종료될 수 없게 되면. 즉, 데이터베이스의 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 트랜잭션이 변경한 페이지들은 원상 복구되어야 합니다. 이러한 복구를 UNDO라고 하며 로그를 이용하여 모든 변경을 취소시키는 방법입니다. 이를 통해 트랜잭션의 원자성을 제공합니다. REDO : 데이터베이스 내용 자체가 손상이 된 경우에 가장 최근의 복제본을 적재시킨 뒤 복제본 이후에 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원하는 것을 Redo라고 하며 이를 통해 트랜잭션의..
안녕하세요 박스여우입니다.오늘은 바로 어제 해커톤에서 처음 시도해 보았던 javascript에서 AJAX나 form 태그 없이 POST를 전송하여 Google URL Shortener API를 사용하는 방법에 대해 다뤄보고자 합니다. ■ With JQueryWebView를 이용해 사이트 내에 있는 data-src 정보를 받아오는데 url의 길이가 너무 길어 코드로 넘어올때 자동으로 중간이 ...으로 요약되서 넘어와 문제가 발생했습니다. 그래서 javascript에서 url정보를 넘겨받을때 url을 단축시켜 받고자 Google URL Shortener를 사용하였습니다. Google URL Shortener API를 사용하는 방법은 그냥 POST 방식으로 request를 보내면 되서 간단하게 사용할 수 있습..