FlickrNet (.NET용 Flickr API Kits) 수정할 부분.

Posted 2008/01/28 16:06 by 길버트

1. Flickr Buddy Icon URL 규약

Flickr에 사진을 업로드한 사람의 Profile Image에 해당하는 Buddy Icon 규약은 다음과 같습니다.

Buddyicons

Every flickr user has a 48x48 pixel buddyicon used to represent themselves.

You can construct the url of a buddyicon once you know the user's NSID, icon server and icon farm, as returned by many api methods.

If the icon server is greater than zero, the url takes the following format:

http://farm{icon-farm}.static.flickr.com/{icon-server}/buddyicons/{nsid}.jpg

else the following url should be used:

참고 : http://www.flickr.com/services/api/misc.buddyicons.html


2. How to make Buddy Icon URL using API

한편, API 를 통해서 가져오는 사용자 정보는 다음과 같습니다.

<person nsid="12037949754@N01" isadmin="0" ispro="0" iconserver="122" iconfarm="1">
	<username>bees</username>
	<realname>Cal Henderson</realname>
        <mbox_sha1sum>eea6cd28e3d0003ab51b0058a684d94980b727ac</mbox_sha1sum>
	<location>Vancouver, Canada</location>
	<photosurl>http://www.flickr.com/photos/bees/</photosurl> 
	<profileurl>http://www.flickr.com/people/bees/</profileurl> 
	<photos>
		<firstdate>1071510391</firstdate>
		<firstdatetaken>1900-09-02 09:11:24</firstdatetaken>
		<count>449</count>
	</photos>
</person>
참고 : http://www.flickr.com/services/api/flickr.people.getInfo.html
참고 : http://www.flickr.com/services/api/explore/?method=flickr.people.getInfo

person 엔티티의 Attribute로 nsid, iconserver, iconfarm을 제공합니다.
이것을 이용하면 Buddy Icon의 정확한 URL을 만들어 낼 수 있습니다.

하지만 .NET용 Flickr API Kit 소스(이하 FlickrNet)에는 문제가 있어서.
Silverlight에서 사용시 4001 (Image Error)를 유발합니다.


3. FlickNet Problem on Buddy Icon URL

아래는 수정 전 FlickrNet의 Person.cs 소스 일부입니다.

public Uri BuddyIconUrl
{
 get
 {
  if( IconServer == 0 )
   return new Uri("http://www.flickr.com/images/buddyicon.jpg");
  else
    return new Uri(String.Format("http://static.flickr.com/{0}/buddyicons/{1}.jpg", IconServer, UserId));
 }
}

피같은 IconFarm 정보를 사용하지 않고 있습니다. 소스를 아래와 같이 수정합니다.

public Uri BuddyIconUrl
{
 get
 {
  if( IconServer == 0 )
   return new Uri("http://www.flickr.com/images/buddyicon.jpg");
  else
    return new Uri(String.Format("http://farm{0}.static.flickr.com/{1}/buddyicons/{2}.jpg", IconFarm, IconServer, UserId));
 }
}

이제 더 이상 4001 에러를 보지 않아도 됩니다. ^^



FlickrNet 다운 받는 곳
http://www.codeplex.com/Wiki/View.aspx?ProjectName=FlickrNet
현재 2.1.4 Released 버전이 공개되어 있습니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : 4001 에러, API, flickr, FlickrNet, Silverlight, 실버라이트

코멘트를 남겨 주세요. (Write your message and submit)

[Flickr Finder] Flickr API Key 발급받기

Posted 2008/01/23 00:20 by 길버트

1. Flickr API Key 발급받기

실버라이트에서 Flickr API를 이용하기 위한 첫 단계로 API Key를 발급 받는 과정을
정리해 보았습니다. (29일 세미나 자료로 활용도 해야해서... 꿩먹고 알먹고)


http://www.flickr.com/services/api/keys 에 방문하여 로그인을 합니다.
(yahoo 계정이 없으시면 계정을 먼저 만드시고 로그인 하시면 됩니다.)

사용자 삽입 이미지


Apply for your key online now 링크를 클릭하여 신청 페이지로 이동합니다.

사용자 삽입 이미지
입력란을 정성스럽게 채우고 APPLY 버튼을 누릅니다.

사용자 삽입 이미지
위와 같은 확인 화면이 나오면 Click here를 눌러 계속 진행합니다.

사용자 삽입 이미지

이어서 나오는 양식을 대략 채우고 SAVE CHANGES 버튼을 눌러 저장을 합니다.


사용자 삽입 이미지

이것으로 API key 등록이 끝났습니다.

자 이제 Key를 잘 가지고 있다가 Flickr 관련 어플리케이션을 만들 때 사용하면 됩니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : API, Flickr Finder, RIA, Silverlight, 실버라이트,

코멘트를 남겨 주세요. (Write your message and submit)

구현해서 서버에 올려 놓은지는 벌써 2주가 되어갑니다만,
바빠서 포스팅을 못했습니다.

http://shiverlight.net/Demos/FlickrFinder

1. 검색어 자동완성 기능

사용자 삽입 이미지

웹서비스를 이용하여 사용자가 입력하는 검색어들을 DB에 누적시키고,
그것을 기반으로하는 검색어 자동완성기능을 구현해 보았습니다.

사용자 삽입 이미지


2. 해당 사진의 Flickr 사이트의 웹페이지 링크

사용자 삽입 이미지

사진 크게보기를 할 때, 오른쪽에 생기는 아이콘을 클릭하면,
해당 사진의 Detail한 정보를 볼 수 있는 flickr 웹사이트를 새창으로 띄워줍니다.

사용자 삽입 이미지

Favorites 등 재미난 기능을 좀 넣어보려고 했는데,
다른 것 하느라고 시간이 영 안나네요.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Flickr Finder, Silverlight, 실버라이트, 웹서비스, 자동완성, 휴즈플로우

  1. BlogIcon 이과장

    역시 길버트님이 짱입니다요 ㅋ

    | 2008/01/11 10:13 | PERMALINK | EDIT | REPLY |
  2. BlogIcon 길버트

    감사합니다.
    요즘 비밀(?)리에 Boxmile과 재미난 거 만들고 있어요.

    | 2008/01/11 16:01 | PERMALINK | EDIT | REPLY |
  3. 비밀댓글 입니다

    | 2008/01/15 13:36 | PERMALINK | EDIT | REPLY |
코멘트를 남겨 주세요. (Write your message and submit)
Boxmile군이 제작하여 12월 28일 실버라이트 카페에 공개한 Text Dragon을 소개합니다.
아직 beta이며, 계속 개선해 나갈 것입니다.

저는 웹서비스를 이용한 DB연동에만 도움을 주었습니다.
(.Net Framework 2.0 웹서비스를 이용하여 DB와 연동하고 있습니다.)



http://shiverlight.net/Demos/TextDragon/


<TextDragon 방명록에 글 남기는 방법>

1. 아무 여백이나 클릭합니다.

2. 창이 뜨면 이름과 이메일을 입력합니다. (색상선택가능)

3. 다시 아무 여백이나 클릭합니다.

4. 창이 뜨면 남길 메세지를 입력합니다. (색상과 폰트사이즈 선택가능)

5. Text Dragon이 날아다닐 Path를 생성합니다. (마우스 왼쪽 버튼 Click과 Drag 이용)
   시작한 점에 다시 돌아와 끝나도록 폐곡선으로 만들어줍니다.

6. 여백에 클릭하면 확인 취소를 묻는 창이 뜨고 OK를 누르면
   Text Dragon이 생성되어 날아다니기 시작합니다.


-------------------------------------------------------------------------------

사용 방법의 난이도에 비해 프로그램 도움말이 부족하지만 재미있네요. ^^
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Silverlight, TextDragon, 방명록, 실버라이트, 휴즈플로우

코멘트를 남겨 주세요. (Write your message and submit)
사용자 삽입 이미지

플리커 파인더 : http://shiverlight.net/Demos/FlickrFinder/

페이지 네비게이션 용 Slider UserControl을 제작하여 장착하였습니다.


사용자 삽입 이미지



오른쪽 상단에 보면 책 모양의 아이콘이 있습니다. 이걸 누르면 아래와 같이 화면 하단에 Slider가
생깁니다. 한번 더 누르면 사라지는 토글 방식입니다.

사용자 삽입 이미지


Slider를 이용하여 Page를 이동하실 수 있습니다.

사용자 삽입 이미지

페이지의 정확한 이동을 위하여 직접 입력도 지원합니다.


이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Flickr Finder, Page Navigation, RIA, Slider, 슬라이더, 실버라이트, , 플리커파인더, 휴즈플로우

코멘트를 남겨 주세요. (Write your message and submit)

ComboBox 역할하는 UserControl 소스

Posted 2007/12/04 12:58 by 길버트

1. Snap shots

사용자 삽입 이미지
사용자 삽입 이미지

위 그림과 같이 작동하는 User Control 입니다.

2. Example

// 콤보 박스
HFComboBox oQueryCombo = new HFComboBox();

oQueryCombo.AddItem("Image/SearchFullText.png", "Full Text");
oQueryCombo.AddItem("Image/SearchTagsOnly.png", "Tags Only");

oQueryCombo.IsHiddenMenuText = true;
oQueryCombo.Item = (int)_nSearchOption;

oQueryCombo.SetValue(Canvas.LeftProperty, 550);
oQueryCombo.Toggled += new EventHandler(oQueryCombo_Toggled);
oQueryCombo.Changed += new EventHandler(oQueryCombo_Changed);

_cvControler.Children.Add(oQueryCombo);

// Shrink는 Storyboard Animation을 쓰고 있으므로
// 꼭 어떤 부모에게 Children.Add된 후에 호출하십시오.
oQueryCombo.ShrinkItems();

AddItem 할 때 이미지의 경로를 ""로 남겨 놓으시면 그림없이 생성됩니다.
만들어 놓고 사용해 본 결과 한 콤보에 담기는 옵션에 대해서 그림을 다 넣으려면 다 넣고,
안 넣으려면 다 안 넣을 것을 권합니다.

IsHiddenMenuText 프로퍼티는 본 메뉴에도 MenuText를 표시할 것인지 아닌지를
결정해줍니다.

기타 프로퍼티나 메서드는 소스 조금 보시면 다 아시리라 믿습니다.


3. Source Files

소스는 아래 있습니다.


1) 소스를 프로젝트에 추가하시고 namespace를 자신의 프로젝트에 맞게 잘 고칩니다.

2) 각 User Control의 생성자에서 아래 파란 글자를 알맞게 수정해 주시고.

System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("HFLib.Controls.HFComboBox.xaml");

3) User Control의 .xaml 파일의 속성에서 [빌드작업-포함 리소스]로 설정하십시오.


 
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : ComboBox, RIA, 소스 공개, 실버라이트, , 유저컨트롤, 휴즈플로우

코멘트를 남겨 주세요. (Write your message and submit)
사용자 삽입 이미지

플리커 파인더 : http://shiverlight.net/Demos/FlickrFinder/


1. 웹서비스 호출을 동기 호출 -> 비동기 호출로 변경하였습니다.

처음에 멋도 모르고 동기 호출로 구현해 놓았었는데,
메서드가 호출되어 반환되는 동안 실버라이트의 모든 기능이 얼어 붙습니다.
다른 건 다 괜찮은데 검색 메서드 처리하는 동안 심심하지 않도록 보여주는
아래 스토리보드 애니메이션도 꽁꽁 얼어붙어 작동을 하지 않는 것이 문제였습니다.

사용자 삽입 이미지

비동기 호출로 변경하니 잘 되네요.


2. 검색 옵션을 추가하였습니다.

플리커 사이트에서 지원하는 아래 검색 옵션을 지원합니다.

전체 텍스트 검색 (Full Text)

태그 검색 (Tags Only)

사용자 삽입 이미지

3. 정렬 옵션을 추가하였습니다.

플리커 사이트에서 지원하는 아래 정렬 옵션을 추가하였습니다.

관련성 높음 (Most Relevant)

가장 최근 (Most Recent)

가장 인기있는 사진 (Most Interesting)

사용자 삽입 이미지
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Flickr Finder, RIA, 비동기호출, 실버라이트, , 웹서비스

  1. BlogIcon 오승욱

    저도 지금 WPF로 작업중인데요..
    혹시 가장인기순으로 이미지 뽑아내는 방법 좀 전수 받을 수 있을까요???

    | 2008/07/07 02:22 | PERMALINK | EDIT | REPLY |
  2. BlogIcon 길버트

    안녕하세요. 길버트 이길복입니다.

    1. 검색 내용의 인기순 정렬을 의미하시는 것인가요?
    2. 그냥 플리커 사이트 전체 사진 인기순 정렬을 의미
    하시는 것인가요?

    1번이라면, Flickr Open API중 flickr.photos.search를
    사용하시면서 sort 파라미터의 값으로 interestingness-desc를
    사용하시면 됩니다.

    자세한 사항은 아래 페이지를 참고 하시기 바랍니다.
    http://www.flickr.com/services/api/flickr.photos.search.html

    2번이라면 저도 잘 모르겠습니다.
    좋은 하루 되세요!

    | 2008/07/07 17:24 | PERMALINK | EDIT |
코멘트를 남겨 주세요. (Write your message and submit)

실버라이트 한 줄 TextBox 유저 컨트롤

Posted 2007/11/21 18:59 by 길버트
Boxmile과 함께 작업하고 있는 Multi-line TextBox의 중간 결과물인 한줄 TextBox를
Flickr Finder에 적용하였습니다.

중간 결과물이라기보다는 Multi-line TextBox의 완성이 90% 정도 된 시점에서,
한줄 TextBox에 대해서는 왠만한 기능 구현이 끝났다고 생각해 종전의 것을
업그레이드 해버렸습니다.

사용자 삽입 이미지

플리커 파인더 : http://shiverlight.net/Demos/FlickrFinder/

사용자 삽입 이미지

1. Ctrl + 방향키에 의한 단어 단위의 Warp 이동 지원합니다.
2. Mouse Click에 의한 커서 위치 설정 지원합니다.

2. '선택' 지원합니다.
- Mouse Drag 의한 선택
- Shift키 + (방향키, Home, End)에 의한 선택
- Shift + Ctrl + 방향키에 의한 선택

3. Copy & Paste, Cut 지원합니다.

아... 이것 뿐인가...

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Flickr Finder, input, RIA, TextBox, 실버라이트,

코멘트를 남겨 주세요. (Write your message and submit)

실버라이트로 만드는 Flickr Finder [진행중...]

Posted 2007/11/14 11:06 by 길버트
사용자 삽입 이미지

사용자 삽입 이미지

영구기 님이 보여주신 플래시로 된 Jasu님의 Flickr Searcher에 자극을 받아 작업중입니다.

호스팅 서버가 외국서버라 좀 느려요. 인내심 가지고 사용해 보세요. ^^

테스트 : http://shiverlight.net/Demos/FlickrFinder/

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Flickr검색, RIA, Silverlight, 실버라이트,

코멘트를 남겨 주세요. (Write your message and submit)
사용자 삽입 이미지

며칠 전에 이거 웹에 올려보려고 DiscountASP.NET 웹호스팅 계정을 구매했었죠.

아쉽게도 IIS7 + .NET Framework 3.5 beta 호스팅은 어디까지나 실험용 보너스 계정이라,
테스트 계정의 root만 사용 가능하게 해놨더군요.
(그 안에 폴더들 만들고 asmx 파일 넣어놓으면 WebService 실행이 안됩니다.)

아무튼 그 사실을 모르고 여러분(스페샬존님, 패러다임님, 영구기님, 우리회사 박대리) 괴롭히며 삽질하다가,
오늘 DiscountASP.NET forum에 올린 제 질문에 내부자가 친철하게 대답해 놓은 걸 보고서야 해결했네요.

You'll need to place the application in the root and not in a subfolder, as there can only be one application root in the beta 3.5 sites.
Aristotle

DiscountASP.NET
www.DiscountASP.NET

저런 내용 호스팅 사이트 몇 시간 뒤졌어도 못찾았는데... 아웅.

아무튼 root에 파일들 옮겨놓고 테스트 하니 잘되길래 거기서 용기를 얻어,
boxmile하고 또 열심히 꿍짝꿍짝해서 데모를 만들어 보았습니다.
재밌네요.

Firefox에서는 여전히 한글이 깨져요.
뭐 손 쓴게 없으니 그렇겠지만 흑흑.

가령 이렇게 사용하는데 Firefox에서는 한글이 깨지는 이유는 뭘까요.

HtmlElement oInput = oDoc.GetElementByID(__ID);
TextBlock tb = new TextBlock();

tb.Text = oInput.GetAttribute("value");


혹시 아시는 분은 제보바랍니다!

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : DragAndDrop, Flickr검색, RIA, Silverlight, 실버라이트,

  1. BlogIcon 길버트

    최신 버전은 여기 http://gilverlight.net/2654 있습니다.

    | 2007/11/14 17:23 | PERMALINK | EDIT | REPLY |
코멘트를 남겨 주세요. (Write your message and submit)
사용자 삽입 이미지

한글 키보드 입력을 구현해서,
전에 만들었던 반영구 Chat 프로그램에 한글을 지원하도록 수정해놨습니다.

전에 보셨더라도 다시 한번 시험해 주시기 바랍니다.
감사합니다.

테스트 : http://www.shiverlight.net/ShiverChat/ShiverChat/

현재는 Internet Explorer에서만 잘 됩니다.
파이어폭스에서는 한글도 깨져서 나오고,
저희가 사용한 Javascript가 크로스브라우징을 지원안하게 작성되었는지,
제대로 작동을 하지 않네요.

그 문제는 한번 더 훑으면서 손 봐야겠습니다.

함께 고민해준 친구 boxmile에게 고맙네요.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : RIA, Silverlight, 실버라이트, , 한글입력

코멘트를 남겨 주세요. (Write your message and submit)

막대그래프 유저 컨트롤

Posted 2007/10/30 18:11 by 길버트
사용자 삽입 이미지

저희 회사(Huge Flow, 휴즈플로우라고 읽음) 실버라이트 라이브러리(HFLib)에,
Graph 관련 User Control을 추가하기 시작했습니다.

일단, 간단한 막대 그래프 User Control을 추가하였습니다.

StickNode.xaml - 막대 하나에 대한 Representation 을 담당합니다.
StickGraph.xaml - StickNode 리스트, GuideLine, Margin 등을 가집니다.

작동 샘플 : http://shiverlight.net/GraphSample/GraphSample/

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : RIA, Silverlight, 막대그래프, 실버라이트,

코멘트를 남겨 주세요. (Write your message and submit)

고급 Color Picker (Expression Blend 스타일)

Posted 2007/10/28 15:57 by 길버트

사용자 삽입 이미지

샘플확인 : http://shiverlight.net/ColorPickerSample/ColorPickerSample/

고급 Color Picker UserControl을 하나 만들어 보았습니다.
Expression Blend의 Color Picker를 열심히 연구해서 Reverse Engineering 했습니다.

사용자가 색상영역을 마우스 클릭한 한 것을 색상정보로 변환하는 것까지는 쉬웠는데,
사용자에 의해서 R,G,B 양이 지정되면 거꾸로 색상영역에 Cursor 위치를 잡아주는 것
생각보다 어려웠습니다.

사용자 삽입 이미지
R, G, B 세 가지 색상을 3차원 좌표계로 표현하면,
최대 색상이 존재하는 공간은 가로 255 x 세로 255 x 높이 255인 정육면체입니다.

색상이 존재하는 영역은 흰점, 검은점, 그리고 모(母)색상으로 이루어지는 삼각형으로
잘게 나눌 수 있습니다.

무지개 빛의 모(母)색상을 아래 6개의 그룹으로 나눕니다.

(1) RGB 그룹   (255.0.0 ~ 255.???.0)
(2) GRB 그룹   (255.255.0 ~ ???.255.0)
(3) GBR 그룹   (0.255.0 ~ 0.255.???)
(4) BGR 그룹   (0.255.255 ~ 0.???.255)
(5) BRG 그룹   (0.0.255 ~ ???.0.255)
(6) RBG 그룹   (255.0.255 ~ 255.0.???)

위 그림 중 왼쪽은 (1) RGB 그룹이 커버하는 색상영역을 표시합니다.

각각의 그룹을 21개의 단계로 나눕니다.
위 그림 중 오른쪽과 같이 존재합니다.

(1-1) 255.0.0-검은점-흰점
(1-2) 255.13.0-검은점-흰점
.
.
.
(1-21) 255.242.0-검은점-흰점

사용자가 지정한 RGB 값에 대해서 무지개 색상 UI에 제대로 표시해 주기 위해서는,
사용자가 지정한 RGB 값이 6개의 그룹 중 어디에 속하며, 그 그룹의 21개의 색상 평면 중 어디에 가까운지
알아내야 합니다.

그 다음 아래와 같은 관계를 이용하여 Gradient 평면상의 x, y 좌표 값을 결정해야 합니다.

사용자 삽입 이미지
모색상 값을 M이라 가정하면, 색상C와 아래와 같은 관계가 있습니다.

M’ = M + (255 – M) * (128 – x) / 128

C = M’ * (128 - y) / 128


------------------------------------------------------------------------------------
위 컨트롤에서 앞으로 더 구현해야할 기능은
R, G, B, A 의 양을 Text 입력 받는 기능과,
Color Code 를 Text 입력 받는 기능입니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : ColorPicker, ExpressionBlend, Silverlight, 실버라이트, 컬러팔레트, 컬러픽커

코멘트를 남겨 주세요. (Write your message and submit)

빈 방

Posted 2007/10/18 12:32 by 길버트
사용자 삽입 이미지

일단은 1차로 벽지나, 장판을 변경해 볼 수 있는 방을 구성해 보는 중입니다.

방의 원근감 표현은 RadControl First Look 을 흉내내면서 시작 했습니다. 낯익으시죠?

Expression Blend에서 Vector 데이터로만 작업을 하였습니다.

위, 아래, 좌, 우 정면의 벽은 쪼개서 다섯 개의 Path로 생성하고,
방 전체적인 음영은 Opacity 마스크에 Radial Gradient Fill 검정색을 먹인
다수의 Ellipse를 활용했습니다.

음영이 미리 들어가 있기 때문에,
나중에 벽지, 장판 등의 Texture에 대해서는 Photoshop에서 Resize나 원근감을 주는
비대칭Transform 따위의 작업만 해주면 될 것 같습니다.

가구는 언제 들여놓을 수 있으려나~ ^^
이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : ExpressionBlend, Silverlight, Virtual Room, 실버라이트

코멘트를 남겨 주세요. (Write your message and submit)

사용자 삽입 이미지

며칠 전 공도님 블로그에 올라온 Farseer 물리엔진을 이용해서 만들어 보았습니다.
놀다가세요~!


직접 마리오를 움직여 보실 수 있는 모델하우스 :
http://www.shiverlight.net/ShiverMario/ShiverMario/

W : 점프

A : 왼쪽으로 이동

D : 오른쪽으로 이동


아직 충돌 시 이벤트 발생시키는 것은 구현하지 못하였습니다.

물리 엔진의 도움으로 마리오의 움직임이 원작에 못지 않는 것 같습니다.


놀다보면