반응형

가끔 DB에 입력할 값하고 기존에 있던 값하고 비교해야 할 상황이 생긴다.

그럴때마다 객체에 있는 수많은 getter 메소드를 소스 코드에 써줘야 한다면 코드가 참 지저분할것 같다.

그래서 사용한 방법이 Reflection 이다.

Class에 있는 정보를 읽어와서 실제로 메소드까지 실행 가능하니.. 라인수를 확 줄일 수 있다. ^^

  1. import java.lang.reflect.Method;
  2. public class ReflectionTest {
  3.     public static void main(String[] args) throws Exception {
  4.         // DB에 입력하려는 DATA
  5.         TestVO test = new TestVO();
  6.         test.setId("test");
  7.         test.setName("kim");
  8.         test.setAddr("seoul");
  9.         test.setHobby("game");
  10.        
  11.         printModifyValue(test);
  12.     }
  13.  
  14.     private static void printModifyValue(TestVO test) throws Exception{
  15.         // 값을 비교할 객체에 있는 METHOD를 가져옴
  16.         Method method[] = test.getClass().getDeclaredMethods();
  17.        
  18.         // DB에 현재 존재하는 DATA(DB 연결시에는 DB에서 DATA를 가져오면 됨)
  19.         TestVO testFromDB = new TestVO();
  20.         testFromDB.setId("testDB");
  21.         testFromDB.setName("kim");
  22.         testFromDB.setAddr("Pusan");
  23.         testFromDB.setHobby("music");
  24.        
  25.         // reflection을 이용한 get method  실행
  26.                 for (int i=0; i < method.length; i++){
  27.             String methodName = method[i].getName();
  28.             if (methodName.indexOf("get") != -1){
  29.                 Object inputValue = method[i].invoke(test, null);
  30.                 Object dbValue = method[i].invoke(testFromDB, null);
  31.                
  32.                 // inputValue 가 null, "" 일경우
  33.                 // dbValue 가 null 인데 inputValue 가 "" 인 경우
  34.                 // dbValue 가 "" 안데 inputValue 가 null 인 경우
  35.                 // inputValue 와 dbValue 가 같을 경우
  36.                 if (inputValue == null || "".equals(inputValue) ||
  37.                     dbValue == null && "".equals(inputValue) ||
  38.                     "".equals(dbValue) && inputValue == null ||
  39.                     dbValue.equals(inputValue)){
  40.                     continue;
  41.                 }else if (!dbValue.equals(inputValue)){
  42.                     // 한쪽만 NULL 이거나 값이 서로 같지 않으면 컬럼 값이 변경된 것으로 인식
  43.                     System.out.println("dbValue = " + dbValue + "/ inputValue = " + inputValue);
  44.                 }
  45.             }
  46.         }
  47.     }
  48. }

결과

dbValue = Pusan/ inputValue = seoul 
dbValue = music/ inputValue = game 
dbValue = testDB/ inputValue = test



728x90
반응형

'Development > Java' 카테고리의 다른 글

util.Date vs sql.Date 차이  (0) 2014.07.01
JSP 용량초과? 65535 bytes limit  (0) 2013.11.21
Integer.paserInt 를 사용한 진법 변환  (0) 2013.11.12
Null Object 사용  (0) 2013.07.05
Singleton Pattern  (0) 2013.07.03
반응형

Integer.parseInt를 많이 써왔었지만 문자를 정수로 바꾼다라는 것 밖에 몰랐었다.

그런데 이 함수가 다른 기능도 있었다. 

바로 진법 변환.

  1. @Test
  2. public void integerTest(){
  3.     String number1 = "1010";
  4.     String number2 = "10";   
  5.     Assert.assertEquals(10Integer.parseInt(number1, 2));
  6.     Assert.assertEquals(8Integer.parseInt(number2, 8));
  7. }

위 테스트 코드를 실행하면 정상적으로 실행이 된다.

첫번째는 1010을 2진법 수로 인식해서 결과값을 10을 리턴했고

두번째는 10을 8진법 수로 인식해서 결과값을 8로 리턴했다.

진법 변환하는것을 코드로 짜면 귀찮았는데 Integer.paserInt 함수에 이런 기능이 있었다니. ^^ 참 편리하네


728x90
반응형

'Development > Java' 카테고리의 다른 글

JSP 용량초과? 65535 bytes limit  (0) 2013.11.21
Reflection 활용한 값 비교  (0) 2013.11.13
Null Object 사용  (0) 2013.07.05
Singleton Pattern  (0) 2013.07.03
List 를 Array로 바꾸는 함수.  (0) 2013.07.02
반응형

문자열에서 첫번째 대문자를 찾아서 출력한다. 

(출처 : http://www.try-cat.ch/contest/view/exercise/70)

  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         Scanner input = new Scanner(System.in);
  6.        
  7.         String data = input.nextLine();
  8.         char result = ' ';   
  9.         for (int i=0; i=65 && charData <91){
  10.                 result = charData;
  11.                 System.out.println(result);
  12.                 break;
  13.             }
  14.         }
  15.     }
  16. }
입력 : TdfkjslkfjsdkfsdDddf sdkfsl;dfjsdA 
출력 : T



728x90
반응형

'Development > Algorithm' 카테고리의 다른 글

에라토스테네스의 체  (0) 2016.12.07
[Programing Challenges]반전한 수 더하기  (0) 2013.02.12
[Hacker Cup]Find the Min  (0) 2013.02.01
[Hacker Cup]Balanced Smileys  (0) 2013.01.31
[Programming Challenges] The 3n+1 Problem  (0) 2011.09.01
반응형

어렵게 어렵게 번역한 기사.... 내용은 어렵지 않았는데.. 점점 게을러져서.. 이번에도 기간이 딜레이 됐구나..


원문 : Not Your User’s Problem 

http://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS4920798014



사용자 문제, 비즈니스 요구사항, 솔루션의 차이에 대한 이해가 필요합니다. 

 먼저, 제가 요즘 보고 있는 Customer Development, Early user Research, Product Market Fit에 중점을 두고 말하는 것임을 미리 알려드립니다. 이에 따른 제 의견에 혼란이 발생하는 것을 원치 않습니다. 

제가 명확히 하려고 노력했던, 또는 뭔가를 추가할 수 있었던 제품 개발 프로세스의 초기에 팀에서 본 특정 유형의 논란이 있습니다. 우리는 그것을 같이 보게 될 것입니다. 

일부 사람들은 비즈니스 요구사항과 사용자 문제, 그리고 솔루션의 차이를 이해하지 못하는 것 같습니다. 그러나 이것에 대한 이해가 분명히 필요합니다. 그렇지 않으면 잘못된 제품을 설계하거나 잘못된 연구를 수행하게 될 것입니다. 

비즈니스 요구사항 

아주 간단히, 비즈니스 요구사항은 회사가 그 제품에 바라는 것을 말합니다. 이것은 종종 변화가 필요한 형태나 큰 돈을 모을 수 있는 새로운 기능이나 제품을 어떻게 만들 것인가에 대한 가설로 표현됩니다. 

여기 비즈니스 요구사항에 대한 몇 가지 예가 있습니다.

  • 좀더 많은 사람들이 우리의 제품을 찾도록 방문페이지의 전환율 향상. 

  • 더 많은 위젯들의 판매에 의한 수익 향상 

  • 현재 사용자들이 우리 제품을 홍보함으로써 더 많은 사용자들이 등록하도록 유도. 

  • 사람들이 사용자가 될 가능성이 높기 때문에 우리제품에 대한 참여율을 향상시켜야 함. 

  • 수익을 창출할 수 있도록 거대한 사용자공간 기반을 구축

이들 비즈니스 요구사항들에 관련된 흥미로운 점은 무엇일까요? 아마도, 어떻게든 이 모든 것들이 정확하게 실행된다면 결국 우리의 수익이 늘어나거나 비용이 줄어들 것입니다. 우리는 성공할 수 있는 업무들을 가지고 이러한 일들을 할 필요가 있습니다. 그러나 이것들을 수행하는 여러 가지 방법들은 사용자에게 유용한 것도 있고 그렇지 않은 것들도 있습니다. 

업무상 필요를 정의하기 위해서는 기본적으로 양적인 데이터가 있어야 합니다. 그리고 당신의 지표들을 수행하기 위해 어떤 것들이 우선순위를 갖는지 알 필요가 있습니다. 당신은 사용자들과 대화를 통해서는 비즈니스 요구사항을 알아낼 수 없습니다. 

분명하게 비즈니스 요구사항들은 사용자 문제로부터 발생됩니다. 예를 들어 당신의 보딩 프로세스가 사용하기 어렵다면 전환율은 낮을 것입니다. 그러나 비즈니스 요구사항이 전환율을 높이는 거라면 당신은 여러 가지 방법을 모색해 봐야 할 것입니다. 

사용자 문제 

당신의 사용자들은 문제들을 가지고 있습니다. 어떤 문제들은 해결하기 위해서 돈을 지불해야 하기도 하고 어떤 문제들은 정말 끔찍한 UX 때문에 발생하기도 합니다. 어떤 문제들은 심지어 문제를 갖고 있는지 조차 모르기도 합니다.

  • 여기 사용자 문제의 몇 가지 예가 있습니다. 

  • 다른 컴퓨터들 간에 문서를 공유가 어려움 

  • 특정 제품에 첫인상이 복잡하고 혼란스러움. 

  • 인터넷이 연결되어 있지 않으면 앱을 사용할 수 없음. 

  • 어떤 분이 집 주변에 좋은 미용실을 찾아서 예약하는데 문제가 있다고 함.

당신은 이 사용자 문제들이 모두 조금씩 다르다는 것에 주목할 것입니다. 첫번째 문제는 DropBox같은 회사들에게서 영향을 받았을 것입니다. 두번째 문제는 많은 제품에서 발생하는 흔한 문제입니다. 세번째는 모바일에 한해서 해당하는 문제입니다. 네번째는 여러 가지 다른 종류의 제품에 의해서 해결되어 왔고 일부는 간단한 기술로 해결되어 왔습니다. 발생할 수 있는 사용자 문제들은 수없이 많습니다. 

여기에서 공통점은 이 문제점들이 인간에 의해서 발생한다는 점입니다. 다른 공통된 요인은 실제로 비즈니스 요구사항을 실현하기 위한 사용자 문제를 해결하는 것은 보수가 없다는 점입니다. 물론 사람들을 위해 문제를 해결하는 것은 일반적으로 좋은 일이지만 문제를 해결하기 위해 돈을 지불해야 하는 문제들이 있고 그렇지 않은 것들이 있습니다.

사용자 문제를 정의하기 위해 가장 좋은 방법은 관찰하고 난 후 만들어지는 리서치입니다. 당신의 제품이나 다른 제품을 사용하는 야생의 사람들을 살펴보십시오. 그들이 다양한 작업을 수행하거나 일을 하는 모습을 지켜보십시오. 그것들이 사람들의 생활을 힘들게 만든다는 것을 이해해야 합니다. 그렇게 된다면 당신이 그들을 위해 해결할 수 있는 크고 중요한 문제점들이 보이게 될 것입니다. 

솔루션 

솔루션은 이름에서 의미하듯이 어떻게 문제를 해결하느냐에 대한 것이다. 이상적으로 당신의 솔루션은 비즈니스 요구사항을 수정하게 될 사용자 문제를 해결할 것입니다. 

여기 솔루션에 대한 몇 가지 예가 있습니다.

  • 당신과 학교 친구들을 모두 연결해주는 네트워크 . 

  • 사용자가 데이터를 입력하는데 도와주는 향상되고 능률적인 온보딩 절차. 

  • 복잡한 프로세스에 대한 동영상 튜토리얼.

문제들과 마찬가지로, 실제로 솔루션은 많습니다. 사실 사용자 문제들은 거의 대부분 수많은 솔루션을 가지고 있습니다. 이러한 솔루션들 중 일부는 다른 사람들보다 쉽게 구현할 수 있을 것입니다. 또 다른 사람들보다 더 좋은 방법으로 해결할 수도 있습니다. 단 하나의 정확한 솔루션이 있는 것이 아니라 다른 사람들보다 더 나은 솔루션이 존재하는 것입니다. 

솔루션을 정의하기 위해서는, 해결하려고 하는 문제에 대한 이해가 필요합니다. 그리고 기본 설계 원칙에 대한 적절한 이해와 당신의 비즈니스를 향상시킬 수 있는지에 대해서도 알아야 합니다. 이건 당신이 아이디어를 만들어내고 공유할 수 있는 프로세스의 일부분입니다. 

리서치는 문제에 대한 정확한 솔루션을 알려주지 않습니다. 당신이 원하는 만큼의 사용자들에게 그들이 경험한 문제들을 어떻게 해결하는지 물어볼 수 없습니다. 만약 그들이 해결 방법을 안다면 당신은 필요없는 존재가 될 것입니다. 리서치가 알려줘야 하는 것은 문제에 대한 더 나은 통찰력을 주는 것입니다. 

왜 걱정을 하나요? 

당신은 비즈니스 문제를 해결해야 하는지, 사용자 문제를 이해해야 하는지, 또는 해결책을 찾아내야 하는지에 따라 전혀 다른 일들을 할 필요가 있습니다. 

예를 들어, 만약 낮은 전환율 같은 비즈니스 요구를 해결하기 원한다면, 비율이 낮은 이유를 찾기 위해 사용성 테스트를 할 것입니다. 반면에 중요한 사용자 문제를 찾길 원한다면 특정 시장에 대한 사람들을 관찰하고 상황에 맞은 연구를 할 것입니다. 그리고 물론 솔루션을 만들기 위해서는 비즈니스와 사용자 문제에 대한 탄탄한 이해뿐만 아니라 확실한 설계에 대한 사고방식도 필요합니다. 

사용자 리서치를 시작하기 전에 몇 분동안 비즈니스 요구사항, 사용자 문제, 솔루션 제안에 대해 더 알려고 노력했는지 스스로에게 물어보기 바랍니다.

728x90
반응형
반응형

jquery에서 라디오 버튼에 대한 속성 설정시

<input type="radio"  id="myRadioY" name="myRadio" value="Y" />

1. 버튼에 대한 체크 해제 하고 싶을때

$('input[name=myRadio]').removeAttr("checked"); 


728x90
반응형

'Development > Frontend skills' 카테고리의 다른 글

React 에서 props 사용  (0) 2017.01.09
React.. 끄적끄적.  (0) 2017.01.09
Mac 에서 Node.js 설치  (0) 2017.01.05
JavaScript 객체 변환 toJSON  (0) 2013.05.10
JavaScript var Scope  (0) 2013.03.15
반응형

항상 응모만 하고 당첨은 되지 않아서 아무생각이 없었는데 어느날 갑자기 걸려온 전화!!!

"올레클럼 무료처험에 당첨되었습니다"

다른것도 아닌 필립스 반자동 에스프레소 머신이라니.

바로 이 이벤트였다.

giftishow 상품은 이런 형태로 당첨문자가 오고 배송 주소를 입력하면 상품이 오는 방법으로 진행이 됩니다.

그럼 후기 시작!!!

상자가 제법 크더라구요. 안에 내용물도 충격이 부서지지 않도록 잘 포장 되어있었구요. 

내용 구성품은 사진처럼 본체와 압력필터 홀더, 설명서 로 구성이 되어있다. 

그리고 본체 안에는 분쇄 커피용 스푼과 분쇄용 커피필터, ESE규격의 커피포드 필더가 포함되어있다.

선택스위치로 작동을 할수 있고 왼쪽 커피 모양으로 돌리면 에스프레소가 추출되어 나온다. 

그리고 우측으로 돌리면 스팀봉에서 스팀이 나와서 우유 커품을 만들수 있다. 

위에서 찍은 모습이다.

전원을 켜두면 앞부분의 은색 부분이 따뜻해 진다. 그 위에 컵을 올려놔서 미리 컵을 따뜻하게 데워놓을 수 있다.

커피를 만들기 전에 컵을 먼저 따뜻하게 해야 더 맛이 있다고 어디에서 들은 적이 있긴 한데. 그런 용도인것 같다. 

그런데 집에 아직은 에스프레소 잔이 없어서 아쉬웠다.

이건 물이 들어가는 물통이다. 

그런데 주의할 점.!!! 사용 설명서에도 써있는데 물통 결합시 꾹 눌러서 결합을 해야 한다. 그렇지 않을경우 물이 줄줄 세는 상황이 발생한다. 

인터넷에서 미리 찾아봤을때 물이 센다는 말이 있었는데 아마도 그것때문에 그런것 같다. 나도 처음 물통을 제대로 넣지 않아서 갑자기 물이 쭉~~ 흘러서 당황했다. 

압력 필터 홀더와 왼쪽은 ESE규격의 커피포드 필터, 오른쪽은 분쇄용 커피필터이다.

여기에서 ESE는 Easy Serving Espresso 라고 합니다. 저도 뭔지 몰라서 찾아봤네요.

꼭 녹차 티백처럼 생긴 커피 티백으로 되어있더라구요. 하지만 우리집에는 그게 없으니 패스. 

그냥 분쇄 커피로 시작했다.

두둥!!! 에스프레소가 추출되고 있습니다. 

적당한 컵이 없어서 평소에 먹던 컵에.. ㅠㅠ 에스프레소 추출이다보니 생각보다 낮더라구요. 컵하나 사야하나...

그리고 아직은 몇번 사용 안해서 분쇄커피의 양과 물 양을 잘 모르겠네요. 

여러번 먹다보면 입맛에 맞게 할수 있겠죠. 

짠~~~ 추출된 에스프레소 입니다.

그냥 먹기에는 완전 쓰기 때문에 저는 얼음을 넣어서 먹었습니다.

보통 커피 전문점 가보면 얼음넣고 물넣고 에스프레소 추출한거 좀 넣고 아이스 아메리카도라고 팔죠.. 싼곳은 1000부터 4000원 정도까지.

사람들이 가장 많이 먹는 커피이긴 한데 가장 사먹기 돈아까운 커피이기도 하죠. 

난 이제 집에서 먹을수 있으니깐 좋네요.

얼음 가득 넣고 이제 한잔 먹어보았습니다.

지금껏 사용해오던 비알레티(bialetti)와 비교를 해보면 에스프레소가 더 진하게 추출되는것 같습니다. 

같은 커피를 사용했는데 더 진한맛이 나더라구요. 

그래서 만족 합니다.

아직 우유커품은 안만들어봤지만 날이 좀 쌀쌀해지면 만들어서 먹어봐야겠네요. 


이런 체험에 당첨이 되다니 아직도 뿌듯함이 가시질 않네요.

KT 멤버십 있으면 자주자주 응모 해보는것도 나쁘지 않을듯 합니다. 

무료체험 바로가기


728x90
반응형
반응형

만든지는 한참 됐지만 이제서야 올리네. ^^


SD지만 만원이 넘는 가격인 만큼 관절이 많다. ^^

SD는 만원이 넘느냐 안넘느냐에 따라서 많이 다른듯 하다





빨강이 왠지 강렬해서 더 강해보인다. 

그런데 얘는 어디서 나온 애지??? 애니를 안봤는데 -_-;;


728x90
반응형
반응형

건담 하면 떠올리게 되는,  건담의 조상이라고 할수 있는 건담이다. 


작지만 색깔도 다양하고 갖출것은 다 갖췄다.

크지 않아도 특징들은 다 잘 살려놓았다. ^^

역시 건담 얼굴 하면 이 건담이 갑인것 같다.


출동!!!!

이제 숏다리 애들이 4명이 되었다. ㅋㄷ

728x90
반응형

'Enjoy Life > 프라모델' 카테고리의 다른 글

[MG]윙건담 제로 커스텀  (0) 2013.11.13
[SD/BB]사자비  (0) 2013.08.19
[SD/BB]건담 마크II (티탄즈 컬러)  (0) 2013.08.08
[SD/BB]RX-77-2 건캐논  (0) 2013.08.08
[SD/BB]레전드 BB 커맨드 건담  (0) 2013.06.18
반응형

예전부터 사서 조립해야지~~ 하고 생각했던 MK-2

비록 SD 버전이지만 역시 건담 하면 MK2 인듯. ^^


눈에서 레이저 빔이 나올것 같은 느낌이다. 

작지만 강한느낌!!


빔 말고도 바주카포도 가지고 있다. 

왼팔에 달린 방패가 정말 작다..ㅋㅋ 저걸로 뭘 막을수나 있을런지. ^--^;;


현재 우리집에 있는 숏다리 3형제. 

비록 숏다리 이지만 색깔이 다양해서 맘에 든다.. ㅋㄷ


728x90
반응형

'Enjoy Life > 프라모델' 카테고리의 다른 글

[SD/BB]사자비  (0) 2013.08.19
[SD/BB]RX-78-2 건담 (Animation Color)  (0) 2013.08.08
[SD/BB]RX-77-2 건캐논  (0) 2013.08.08
[SD/BB]레전드 BB 커맨드 건담  (0) 2013.06.18
[SD/BB]블레이즈 자쿠 팬텀 하이네  (0) 2013.06.08

+ Recent posts