안녕하세요 박스여우입니다. 이번에는 JavaFX를 이용하여 가장 기본적인 버튼 클릭 이벤트를 구현해보도록 하겠습니다. ■ FXML & Controller지난 포스팅때도 말씀드렸다 싶이 JavaFX는 MVC 패턴을 사용하여 View를 FXML과 CSS로, 컨트롤러는 전달된 UI 컴포넌트를 의존성 주입 방식으로 활용하게 됩니다. 따라서 UI를 디자인 하는 디자이너와 프로그램을 개발하는 개발자 사이의 일을 명확하게 구별할 수 있습니다. 이번에는 이런 JavaFX의 기능들을 활용하여 FXML로 UI를 구현하고, 그 UI를 Controller로 다뤄보도록 하겠습니다. ■무작정 따라해보기지난 포스팅에서 진행한 eclipse에서의 JavaFX 셋팅을 진행해 주셔야 이번 과정을 수행하실 수 있습니다.eclipse에서 ..
안녕하세요 박스여우입니다. 오늘은 GUI 개발을 위한 JavaFX에 대해 알아보도록 하겠습니다. ■ Swing은 가라! JavaFX는 기존 Java의 표준 GUI 라이브러리인 Swing을 대체하기 위해 개발되었지만 훨씬 가볍고 강력합니다. GUI에서 컴포넌트를 호출할 때 애니메이션 전환, 흐림 효과나 drop shadow등과 같은 효과(effect)들은 유저 경험에 큰 변화를 만들 수 있는 중요한 요소 입니다. 이러한 요소들은 작고 디테일해서 크게 신경쓰지 않는 부분이지만, 응용 애플리케이션에 도입하게 되면 세련된 UI를 만들 수 있습니다. 이와같은 애니메이션과 전환 효과 등은 Swing으로 구현이 가능하지만 매우 고통스러운 작업을 거쳐야 구현이 가능합니다. 특별한 컴포넌트를 만들기 위해서는 셀 수도 없..
■프로토콜프로토콜은 통신 규칙과 방법입니다. 통신을 원하는 개체간에 무엇을, 어떻게, 언제 통신할 것인가를 정해놓은 규약 입니다. 국제 표준 기구에서 이를 표준화 하여 대부분의 통신 장비들에서는 표준에 맞춘 프로토콜을 사용하고 있습니다. ◆프로토콜의 기능분할 - 큰 용량의 데이터를 전송하기 위해 데이터를 나누는 기능 입니다.재조립 - 분할된 데이터를 사용하기 위해 재조립 하는 기능 입니다.캡슐화 - 데이터에는 계층을 거칠때 마다 헤더가 계층별로 붙게 되는데, 이를 캡슐화라고 합니다.순서 제어 - 전송되는 데이터의 순서를 조율하고 이를 통해 데이터가 중복되거나 유실되는지 체크하는 기능 입니다.흐름 제어 - 송신되는 데이터의 양과 전송률을 제한하는 기능 입니다.오류 제어 - 데이터가 올바르게 수신되었는지 에..
안녕하세요 박스여우입니다.최근 학교의 잔류조사 시스템 개발을 마무리 하고 있는데요, 사감선생님의 편의를 위해 조사된 결과를 엑셀 파일 형태로 출력해야 했습니다. 그래서 오늘은 Java에서 엑셀 파일(xls, xlsx)을 읽고 쓰는 방법을 소개해 드리려고 합니다. ■ Apache POI우선 엑셀파일을 텍스트 파일처럼 읽고 쓸수는 없습니다. 때문에 Java에서 엑셀파일을 다루기 위해 Apache POI 라이브러리를 사용해야 합니다. Apache POI 라이브러리를 다운받기 위해서는 https://poi.apache.org/download.html 요 주소로접속한 뒤에 스크롤을 내리다 보면위와같이 Binary Distribution 항목이 있습니다. 여기에서 빨간색 부분(poi-bin-3.15-beta2-....
안녕하세요 박스여우입니다. 최근 언론사의 웹사이트와 앱을 제작중인데요, 언론사 애플리케이션 특성상 기사마다 이미지가 반드시 하나쯤은 있고, 그 기사들과 이미지들을 불러와 화면에 뿌려줘야 합니다. 하지만, 많은 이미지를 다루다 보니 [dalvikvm-heap: Out of memory on a 772812-byte allocation] 요런 에러, Out Of Memory - OOM이 발생하더군요 ■ 메모리 정리? 원인은 Android 상에서 제공되는 메모리(heap)는 정해저 있지만, 제가 많은 이미지를 사용한 관계로 메모리가 부족한 상황이 발생한 것입니다. 이 때, 메모리를 정리한답시고 사용하지 않는 객체에 null을 지정해 준다고 한들 해당 객체의 메모리가 정리되는게 아니고 정리될 후보가 되는것 입니..
안녕하세요 박스여우입니다.이번에는 카카오톡을 통해 링크와 이미지를 공유하는 방법에 대해 알아보겠습니다. ■ Kakao Developer저희가 사용할 API는 카카오톡에서 제공해 주는 카카오링크 입니다. 카카오링크를 사용하기 위해서는 KakaoDeveloper 로 이동하여 API를 사용할 앱을 등록해야 합니다. 앱 만들기를 클릭하고 등록할 앱의 이름을 입력한 뒤 Create 버튼을 눌러 주세요. 이 때 이름은 자유롭게 적어주시면 됩니다. 그 다음으로 일반>플랫폼>플랫폼 추가 버튼을 눌러 정확한 앱의 정보를 등록합니다. 이번 포스팅에서는 안드로이드를 기준으로 진행하겠습니다. 해당 애플리케이션의 패키지명을 입력하신 뒤 추가 버튼을 누르시면 됩니다. 그럼 이처럼 키 해시 입력란이 비게 되는데요, 키 해시에는 해..
안녕하세요 박스여우입니다.이번에는 ScrollView의 스크롤이 바닥에 닿았을때, 스크롤 뷰의 내용이 모두 보여졌을때 새로운 게시글을 로드하기 위한 이벤트를 발생시키는 방법에 대해 소개해 드리고자 합니다. ■ ScrollView 바닥에 닿았을 때 이벤트여러가지 방법이 있지만 저는 Custom ScrollView를 만드는 방법으로 해결하였습니다. 핵심코드123456789101112131415161718 private void checkIsLocatedAtFooter() { if (rect == null) { rect = new Rect(); //사각형을 그려주는 Rect 클래스 - 현재 보이는 화면의 사각형 getLocalVisibleRect(rect); //현재 view의 절대 위치를 rect에 적용 r..
안녕하세요 박스여우입니다.최근 AngularJS에 관심이 생겨서 AngularJS에 대해 공부를 하고 있습니다. 그리고 공부한 AngularJS의 내용을 블로그에 포스팅 하고자 합니다. ■ AbgularJS지난 포스팅에서도 소개해 드렸듯이 AngularJS는 JavaScript로 만들어진 웹 애플리케이션 프레임워크 입니다.라이브러리 : JQuery와 같이 유용한 함수의 집합이다. 개발자의 코드가 필요한 시점에 해당 함수들을 호출하고 애플리케이션의 전체 흐름을 제어합니다. 프레임워크 : AngykarJS등과 같이 개발자의 코드가 프레임워크의 빈 공간을 채우고, 프레임워크가 필요시점에 개발자의 코드를 호출하고 애플리케이션의 전체 흐름을 제어하게 됩니다. ■ AbgularJS의 특징 ■ 작성해야 하는 JS의 ..
안녕하세요 박스여우입니다.방학이 끝나고 2학기가 시작되었습니다. 본격적인 2학기를 보내기 전에 방학동안 했던 일들과 2학기의 계획을 적어보려고 합니다. [쎄트렉아이 인턴]쎄트렉아이에서의 3주간의 인턴과정을 무사히 마치고 수료증과 약간의 교통비와 식비를 받았습니다.(세금 ㅠㅠ)생각했던 것 보다 분위기가 좋았고, 다양한 것들을 배우고 좋은 경험을 만들고 왔습니다. 쎄트렉아이 간판 앞에서 인증샷을 찍고있는.. [Shake Note]방학동안 남는 시간을 이용해 앱을 하나 만들어 출시하게 되었습니다.스마트폰을 흔들어 메모를 하거나 선택한 앱을 실행시키는 앱 인데요, 바로 Shake Note 입니다. PlayStore 바로가기! [DSM 알리미 3.0]저희학교 공식 애플리케이션인 DSM(대덕소프트웨어마이스터고등학교..
안녕하세요 박스여우입니다. 요즘 웹에 관심이 많아졌는데요, 그런 의미에서 오늘은 그동안 배워보고 싶었던 AngularJS에 대해 알아보고자 합니다! JavaScript는 웹은 물론이고 Node.JS, 애플리케이션 분야까지 "JavaScript Is Eating The World"라는 말이 있을 정도로 점점 진화해 가고 있습니다. 이러한 과정속에서 JQuery와 같은 JavaScript 라이브러리들이 많이 등장하고 있는데요, 그 중에도 AngularJS라는 것이 인기를 많이 받고 있습니다. 지금부터 이 AngularJS에 대해 간단히 알아보도록 하겠습니다 ■ AngularJS AngularJS는 JavaScript로 만들어진 웹 어플리케이션 프레임워크 입니다. AngularJS가 인기를 받고있는 이유는 바..