본문 바로가기

시즌1

[Java Tips] 자바 프로그램 메모리 사용량 보기 자바로 개발하다 보면, 헌재 전체 메모리 양과 사용 가능한 메모리 양을 확인해야 할 때가 있습니다. 메모리와 관련된 기능은 Runtime class에서 제공해 주며 다음과 같이 사용할 수 있습니다. 각 Method 들은 byte 단위의 메모리 양을 리턴합니다. totalMemory : 현재 Allocate 된 메모리 사용량을 리턴 freeMemory : 현재 Allocate 된 메모리 중, 사용 가능한 메모리 양을 리턴 public class MemoryTrace { public static void main(String[] args) { System.out.println("Total Memory : " + Runtime.getRuntime().totalMemory()); System.out.printl.. 더보기
[Java Tips] NullPointerException을 피하는 String 비교 구문 개발을 하다 보면 상수형 String과 변수형 String을 비교해야 하는 일이 자주 있습니다. 이런 경우, 다음과 같이 사용하는 경우는 변수형 String이 Null인 경우, NullPointerException이 발생합니다. 예 : if(variable.equals(CONSTANT_STRING)) doSomething(); NullPointerException을 발생시키지 않기 위해, variable에 대해 null 체크를 해 줘야 합니다. 예 : if(variable != null && variable.equals(CONSTANT_STRING)) doSomething(); 하지만, 다음과 같이 쓰면, null 체크 없이도, 비교 구문을 작성하실 수 있습니다. 예 : if(CONSTANT_STRING.. 더보기
투잡 어떻게 해야 잘 하는 것인가? 저는 IT에 종사하는 한 개발자입니다. 얼마 전, 지인의 소개로 1.5개월 가량 소요되는 조그만 개발 건을 소개 받았습니다. 요즘 이랴 저래 돈이 궁한지라, 많은 고민 없이 덥석 시작했습니다. 하지만, 많은 난관이 있더군요. 다음은 제가 1.5 개월 정도의 세컨잡을 마루리 짓고 느낀 점 들입니다. 본업에도 충실할 수 있는가? 일반적으로 투잡을 함에 있어, 본업에도 충실하라고 합니다. 그러나, 과연 본업에 충실할 수 있는가 하는 의문이 듭니다. 이번 세컨잡를 하면서, 느낀 점이지만, 투잡을 하면서 본업에 충실하기란 불가능에 가깝습니다. 일이라는 것이 계획대로 되면 좋겠지만, 모든 일이 그렇듯이 계획대로 되는 일은 거의 없습니다. 특히나, IT 업종이라는 것이, 잦은 요구 사항 변경과 일정 변경으로 인해, .. 더보기
Java! 이해하고 개발하자. ① final 에 대한 이해 거의 모든 프로그래밍 언어는 영어권에서 정의가 되었습니다. 자바도 마찬가지로 썬 마이크로시스템즈의 제임스 고슬링의 주도하에 정의가 된 언어입니다. 그렇기 때문에 당연하게도 언어 자체가 영어로 정의 되어 있습니다. 어렸을 적(국민학교 4학년 쯤으로 기억을 합니다.), 그 당시 컴퓨터 학원에서는 애플 컴퓨터로 베이직을 가르치곤 했습니다. 당시는 영어 교육에 대한 바람도 불지 않았고, 대다수의 국민학생이 영어라곤 알파벳만 읽을 수 있는 수준이었습니다. 당연하게도 영어로 정의된 베이직을 외워서 썼습니다. 대표적으로 GOTO 문장.....읽을 때도 "고투"로 읽지 않고 "지오티오"라고 읽었었습니다. "지오티오"를 쓰면 어디로 가더라를 디립다 외웠습니다. 참 아련한 추억입니다. 나이가 들어, 영어를 어느 정도 하는.. 더보기
[Java Tips] Java Primitive Type을 Hex String으로 변환하는 Utility 정수형 데이터를 Hex String으로 변환 하거나, 그 역변환 하는 방법은 여러가지가 있습니다. Integer.toString(int i, int radix)와 같이 기본 Java API에서 제공되는 부분도 있습니다. 이를 사용해도 되지만, char나 byte 같은 경우는 Type Casting을 통해서 해야 하는 번거로움이 있습니다. 그래서, 다음과 같은 Utility Class를 만들어서 쓰고 있습니다. package utils; /** * 정수형 타입을 Hex String으로 변환하고, Hex String을 정수형 타입을 변환하는 Utility */ public class HexUtils { private static final char hexchar[] = { '0', '1', '2', '3',.. 더보기
나로호 경미한 소프트웨어 결함 사실일까? 이 글은 지극히 저의 사견으로, 공식 보도만으로 유추하여 쓴 글이므로, 실제 사실과 다를 수 있습니다. 나로호 발사가 중지된 원인이 발사체 문제가 아닌 경미한 소프트웨어 결함이라 교육과학기술부가 밝혔습니다. 1단 추진체의 헬륨 고압 탱크 압력이 발사를 수행할 수 없을 정도로 낮아졌다고 탑재된 소프트웨어가 판단하면서 자동 발사 시퀀스가 중지되었다고 합니다. 이 말은, 1단 추진체의 헬륨 고압 탱크 압력은 정상 범위였으나, 소프트웨어에서 비정상 범위로 판단했다는 뜻입니다. 그렇다면, 왜 이런 일이 발생하였을가요? 이를 알기 위해서는 소프트웨어가 개발되는 과정을 살펴보아야 합니다. 소프트웨어 어떻게 개발되나? 일반적으로 소프트웨어는, 분석, 설계, 구현, 테스트의 과정을 거치게 됩니다. 분석 단계라 함은, 소.. 더보기
소프트웨어 테스팅 : 자바 코드 커버리지 툴(Java Code Coverage Tool) 자바 코드 커버리지 툴(Java Code Coverage Tool) Code Coverage 분석을 위한 Tool들은 오픈 소스부터 시작해, 상용 솔루션까지 많은 Tool 들이 있습니다. 다음은, 무료 배포되고 있는 Java Code Coverage Tool을 비교 분석한 매트릭스입니다. 다음 표와 같이 각 Tool 마다, 제공되는 기능이 다양합니다. 저의 경우는 MC/DC Coverage 분석이 필요하기 때문에, 대부분 CodeCover를 사용합니다만, 간단하에 사용할 때에는 EMMA를 사용하기도 합니다. 분석 영역이 적은 만큼 빠르기 때문이죠. CodeCover로 MC/DC Coverage 까지 분석하는 경우, 클래스 갯수가 500 가 넘어가면, 한 번 분석하는데 굉장히 오래 걸립니다. 필요에 따라,.. 더보기
소프트웨어 테스팅 : Code Coverage 분석 Tool - CodeCover 리뷰 CodeCover 리뷰 CodeCover는 Java Code Coverage 분석 Tool 중의 하나로써, 무료로 배포되는 Tool 중에서는 그 기능이 최고라고 말할 수 있을 정도로 막강한 기능을 제공하는 Tool 입니다. 본 블로그에 등록된 Code Coverage 관련 글들의 예제들고 이 CodeCover를 이용하여 테스트되었습니다. Feature 1. Eclipse 기반 : 물론, 커맨드 라인 기반의 Standalone 패키지도 제공이 되지만, 막강한 기능중 하나는 Eclipse plug-In으로 설치되어 간단하게 사용할 수 있는 부분입니다. 2. 지원하는 Code Coverage Criteria : CodeCover는 Statement Coverage, Decision(Branch) Coverag.. 더보기
어느 개발자의 금연 일기 - 보건소 금연 클리닉을 가다 보건소를 가다... 여름 휴가를 맞이하였습니다. 남아 있던 담배는 다 피워 버렸습니다. 이제 남은 거라고는 정신력으로 버티는 수 밖에.. 참다 참다, 금연 패치라도 하나 사러 가려다가, 문득 보건소가 생각 났습니다. 보건소에 가면, 금연 보조제를 공짜로 준다는..... 마눌님 고이 싣고, 보건소로 갔습니다. 두둥...금연 클리닉... 대개 거창할 것 같았는데, 4평 남짓 사무실입니다. 맘씨 좋아보이는 중년 아주머니, 그리고, 의사 가운입은 아가씨 한명이 있네요. "금연 클리닉 왔습니다." 들어오라고 하십니다. 자리에 앉으니, 서류를 하나 주시면서 작성하라고 하시네요. 머..신상명세, 금연 이력(?) 등등 작성을 합니다. 그러는 중, 입에 파이프 하나 물려 주시면서 불으라고 하십니다. 띠리리.....1.3.. 더보기
소프트웨어 테스팅 : Code Coverage - Decision Coverage Code Coverage - Decision Coverage Decision Coverage는 Code Coverage 분석의 7가지 척도 중 하나로써, 각 조건문이 True 혹은 False가 되는 조건이 모두 테스트되는 정도를 측정하는 척도입니다. 참조 : Code Coverage, Statement Coverage 예를 들어 다음과 같은 코드가 있을 경우, package codecoverage; public class DecisionCoverageTest { public int method(int param){ if(param > 0){ System.out.println("param is greater than 0"); } else{ System.out.println("param is equal or.. 더보기
소프트웨어 테스팅 : Code Coverage - Statement Coverage Statement Coverage Statement Coverage는 Code Coverage 분석의 7 가지 분석 척도 중 하나로써, 각 Statement 가 테스트되는 수준을 정의하는 척도입니다. 이 Statement Coverage 분석을 통해, 개발된 소프트웨어가 어느 정도 테스트가 수행되었는지를 파악할 수 있습니다. 참조 : Code Coverage 예를 들어 다음과 같은 소스 코드가 있을 경우, package codecoverage; public class StatementCoverageTest { public void method1(int param){ for(int i = 0 ; i < param ; i++){ System.out.println(i); } } } 이 소스 코드를 테스트 하기.. 더보기
코드 커버리지(Code Coverage) Code Coverage 코드 커버리지(Code Coverage)는 소프트웨어 테스트 시 사용되는 측정 기준 중에 하나이며, 이는 소스 코드가 테스트된 정도를 나타냅니다. 당연히, 소스 코드 내부를 들여다 봐야 하므로, 화이트박스 테스트(White box testing)에 속합니다. 코드 커버리지 기준은 다음과 같이 7개 기준이 있으며(아래 5개의 기준과 제일 밑에 2개의 기준), 특정 테스트 케이스(Test Case)를 어느 기준을 적용하여 테스트하느냐에 따라 커버리지 비율이 틀려지게 됩니다. Function coverage - 소프트웨어 내에 정의된 Function이 호출되는 정도 Statement coverage - 소프트웨어 내에 기술된 Statement가 수행되는 정도 Decision cover.. 더보기
어느 개발자의 금연 일기 - 준비 1일차 17년.... 제가 담배를 핀 시간입니다. 건방진 버전으로, 인생의 반을 담배와 함께 했습니다. 참 오래도 피웠습니다. 중학 시절 호기심으로 한번 샀던 88 한 갑과 그 친구들이 저의 17년이라는 인생을 지배했습니다. 88 이라는 친구는 예전에 독한 놈이라 버림을 받았고, 요즘은 레죵이라는 친구가 가장 친한 친구놈입니다. 어린 시절, 왜 그리 호기심도 많고, 절제가 안되던지... 참 사고도 많고, 많인 친구들과 재밌던 시간이지만, 제 일생 일대의 후회는 88이라는 친구를 만난 일입니다. 개발자입니다.... 저는 개발자입니다...닷컴의 영광은 오래 전에 담배 꺼지듯 꺼진지 오래인, 이제는 야근과 철야로 점철된 IT 업종에 있습니다. 역시나, 저의 가장 친한 직장 동료는 레죵이라는 친구입니다. 항상 저의 지.. 더보기