UX/RIA 프로젝트 빌더 프로그램 설명회를 다녀와서

마이크로 소프트에서 UX/RIA 프로젝트 빌더 프로그램 설명회를 12월 10일 오늘 주최했다.

조그만 강의실에서 UX/RIA에 대한 현재 시장과 앞으로 그들의 전략에 대해 알아보는 시간이었다.

우선은 UX 즉, User Experience 라는 것이 학술적인 용어에서 발전했다는 것과 Experience라는 것이 Interface와 다른 것은 시간의 개념이 들어가 있다는 것이었다. 그 이야기는 경험이라는 것은 시간이 축적되어 만들어진다는 것을 의미한다.

그리고 RIA라고 하는 것이 Rich Internet Application 이지만, 최근에는 RxA 라고 불리고 있는데, X 는 interactive(MS에서 지칭), Business, Enterprise등으로 많은 영역으로 확장되어 가고 있다.

UX/RIA 시장이 인지된 상황은 지나고 제품을 만들어 내야 하는 경쟁의 시점에 도래했다고 한다. 발표자의 말을 빌리면 현재의 RIA가 "밀가루"라고 하면 시장에서는 다양한 종류의 빵을 요구하고 있기 때문에 기술적으로 성숙하지 못한 상태인데 시장의 요구가 빠르다고 한다.

여러가지 이야기가 많았지만, 주요한 전략은 아래의 세가지 라고 한다.

1. UX Solution 을 Tooling Framework 화 해서 판매하라.

2. Open Source를 활용하라.
    이미 MS에서는 codeplex라는 오픈소스사이트가 있다고 한다. 여기에 가면 고생하고 있던 부분의 소스코드가 있을수도 있으니 참고하시길...

3. SAAS & Clouds Computing
  클라우드 컴퓨팅은 기술적으로 끝났다고 한다. 단지 전세계로 서비스하려다 보니 각국의 법규에 걸려 그 문제를 푸는데 시간이 걸린다고 한다.

이상과 같은 MS의 전략을 들어보니 아무래도 그들은 아니라고 하지만, Adobe의 Flex와의 경쟁을 의식하는 듯 했다. 게다가 얼마전에 Sun에서 출시된 JAVA FX 역시 RIA 시장에서 경쟁자이므로 실버라이트와 WPF의 우수함을 상당히 강조했다.

어쨌거나, 이런 기회로 UX시장의 흐름을 배울 수 있었다.

강의실 가운데는 MS Surface를 전시해 놓았는데, 동영상으로만 보던 것을 실제로 만져볼 수 있는 기회였다.



표면은 거칠은 스티커를 붙여놓아서 촉감을 느끼게 해 놓았다. 만약 그냥 아크릴판이었다면 부드럽게 터치를 느낄 수 없었을 거라는 생각이 든다.

생각보다 동작이 자연스럽게 되지 않는 부분이 있긴 하지만, 훌륭한 UI를 가지고 있었다. 직접촬영한 동영상에서는 지도에서 확대하려고 시도했으나 한손이라 그런지 잘 되지 않았고, 그래서 다른 화면으로 이동하고자 화면을 줄이려고 귀퉁이의 메뉴를 눌렀으나 잘 되지 않아 포기하는 장면이 들어있다.



블루투스 기기와 통신하는 등의 데모는 오늘의 주제와 맞지 않아 볼 수 없었던 것이 좀 아쉬운 부분이었다.




[안드로이드] 두번째 스마트폰 "아고라"

코간((Kogan) 테크놀로지스가 두 번째 구글폰인 ‘아고라’와 ‘아고라 프로’를 공개하고 호주에서 온라인 예약판매에 들어갔다고 한다.

2.5인치 터치스크린 LCD가 탑재된 ‘아고라’는 QWERTY 키보드, 마이크로SD 슬롯, 블루투스 2.0 등이 지원되고 200만화소 카메라를 장착하고 있으며, WIFI와 GPS 기능도 있다고 한다.

구글 검색을 비롯해 G메일, 유튜브 동영상 플레이어, 구글 맵스 등 구글의 각종 서비스를 편리하게 이용할 수 있다. ‘아고라’와 ‘아고라프로’의 가격은 각각 194달러, 399달러로 예상되고, 내년 1월 29일 정식 출시될 것이라고 한다. 외형은 블랙베리와 흡사하나 액정화면이 더 큰 것같다.

더 많은 구글 폰이 나오길 기대한다.



Interesting/ANDROID | Posted by hyena0 2008. 12. 4. 23:54

[안드로이드] 컬러 마스크 MASK





[Android] 컬러 마스크 MASK

이전에 엠보싱 효과는 녹색에 대해서만 처리할 수 있도록 Mask를 생성했었다.

여러번의 시행착오 끝에 RGB 전체를 MASK 할 수 있게 하는 코드를 작성했다.

MASK 호출 함수에 배열을 너무 크게 생성해 놓으면, 임베디드 디바이스에 적용되는 것이라 그런지 무지하게 느려지는 것을 알 수 있었다.

기존 마스크에 RGB를 구분 할 수 있는 인자를 넣어두고, 호출함수에는 부담을 줄인 뒤 메인함수에서 RGB를 각각 처리하는 방식으로 작성해 보았다.

private int[] mask2Colors(Bitmap bitmapO, int sltColor) {
     int W,H,ST;
     int orgColor=0;
     int greenColor=0;
     //get Height and Width
     H=bitmapO.getHeight();
     W=bitmapO.getWidth();
     ST = W;
     
     int[] colors = new int[ST * H];
     int avrColor=0;
     int[] masks = {1,1,1,1,1,1,1,1,1};//blurring 처리를 위한 배열 1/9 값을 넣어야 하나 1만 넣고 나중에 9를 나눔
    
      int Mh = 3; int Mw =3;
     int var =0;//MASK 계산될 색의 픽셀값
                  
     //get bitmap color
      for (int y = 0; y < H; y++) {
             for (int x = 0; x < W; x++) {
              if(sltColor == 0){// 0 이면 적색
               orgColor = Color.red(bitmapO.getPixel(x, y));
              }
              if(sltColor == 1){// 1 이면 녹색
               orgColor = Color.green(bitmapO.getPixel(x, y));
              }
              if(sltColor == 2){// 2 이면 파란색
               orgColor = Color.blue(bitmapO.getPixel(x, y));
              }
              colors[y * ST + x] = orgColor;
             }
         }
      //calc. average value of colors
     for (int i=0;i<H*W;i++){
      avrColor += colors[i];
     }
     avrColor /= H*W;
     //mask the color
     //i는 계산될 높이 계산될 폭만큼의 반복범위임
     for (int i=0;i<(H-Mh)*(W-Mw);i++){
      
       //mask 계산
        var = colors[i]*masks[0]      + colors[i+1]*masks[1]      + colors[i+2]*masks[2]
             +colors[W+i]*masks[3]    + colors[W+i+1]*masks[4]    + colors[W+i+2]*masks[5]
             +colors[(W+1)+i]*masks[6]+ colors[(W+1)+i+1]*masks[7]+ colors[(W+1)+i+2]*masks[8];
        
        var = var/9; //1/9 효과를 나타냄
        //blur일 경우는 평균값 더하지 않기
        //var +=avrColor;
        colors[i]=var;
        var =0;//var 초기화       
     }
     
     //make argb style
        for (int y = 0; y < H; y++) {
            for (int x = 0; x < W; x++) {
             if(sltColor ==0){// 0 이면 적색
              orgColor = colors[y * ST + x];
              orgColor = orgColor<<16;//red shift
              orgColor = 0x00FF0000 & orgColor;
             }
             if(sltColor ==1){// 1 이면 녹색
              orgColor = colors[y * ST + x];
              orgColor = orgColor<<8;//green shift
              orgColor = 0x0000FF00 & orgColor;
             }
             if(sltColor == 2){// 2 이면 파란색
              orgColor = colors[y * ST + x];
             }
             colors[y * ST + x] = orgColor;
            }
        }
      return colors;
    }

아래는 적용해 본 엠보싱 이미지와 Blurring 이미지 이다. 원본 이미지를 볼려면 여기를 보면 된다.

<<엠보싱>>

<<Blurring>>(3x3)