'분류 전체보기'에 해당되는 글 653건

  1. 2011.02.10 [wp7] 이미지 Build Action 의 Content 와 Resource의 차이
  2. 2011.02.08 [XNA] XNA의 역사
  3. 2011.01.27 휴즈플로우 앱 개발 뉴스 기사 1
  4. 2011.01.17 [asp.net] cookie 사용법 1
  5. 2011.01.07 google docs와 아이패드를 이용하여 Todo List 활용
  6. 2011.01.07 [wp7] 효율적인 isolatedStorageSetting 사용법
  7. 2011.01.06 [wp7] Observable Collection을 이용한 바인딩
  8. 2011.01.05 [wp7] Image behind에서 바꾸기
  9. 2010.12.02 [vs] Visual Studio 2010 단축키 모음 (병걸씨가 수고해 주신 자료^^)
  10. 2010.11.22 [asp.net] mvc2 에서 새로운 페이지 만들고 연결하기
  11. 2010.10.20 [wp7] 분리된 어셈블리에 대해서 다국어 리소스지원
  12. 2010.10.19 [wp7] Localization Resource 국제화 하는법
  13. 2010.10.18 [wp7] 람다식을 잘쓰자.
  14. 2010.10.10 [wp7] Event Handler 를 이용하여 변수가 변경되는지 감지
  15. 2010.10.08 [wp7] viewbox
  16. 2010.10.07 [wp7] behind에서 application bar 만들기
  17. 2010.10.05 [wp7] Enum 정리
  18. 2010.10.05 [wp7] 나중에 공부할것 Deployment의 Dispatcher
  19. 2010.10.04 [wp7] 기본 키패드(Number)에 . 키만 가능하게 만들기
  20. 2010.10.01 white (화이트) -mocca
  21. 2010.09.30 [wp7] UserControl에 간략하게 Dependency Property 쓰는법
  22. 2010.09.28 [wp7] childrun add한 UserControl 안에서 remove하기
  23. 2010.09.27 [wp7] Regex를 이용해서 숫자 형식을 바꾸어보자.(정규표현식)
  24. 2010.09.17 [wp7] 엔터키를 눌렀을때 키패드 사라지게 하기
  25. 2010.09.13 몽키3 결제 했는데 꼭 해지하자. 적어도 11월 10일
  26. 2010.09.09 [wp7] DLL 레퍼런스 추가 할때 지정된 경로에?
  27. 2010.09.07 [wp7] Behind코드에서 폰트바꾸기
  28. 2010.09.07 아이폰 받았을시 확인해봐야할것
  29. 2010.09.07 [wp7] Month 입력 국제화 하기
  30. 2010.08.17 아이폰4 예약 하기
Windows Phone 72011. 2. 10. 13:41

Resource로 했을 때는 처음에 로딩을 다 하기 때문에 속도가 느려진다.

 

그래서 웬만하면 Content로 하자…더 나은 퍼포먼스가 난다.

 

그리고 Content와 했을때와 Resource로 했을때 이미지 source를 정의 할때

 

차이점 이 있다.

 

Content로 했을때에는

 

 

<Image Stretch="None" Source="/images/appbar.cancel.rest.png"/>

 

이렇게

 

Resource로 했을때 에는

 

<Image Source="/WP7SampleProject3;component/images/appbar.feature.email.rest.png"/>

 

이렇게 정의 한다.

 

behind코드도 마찬가지이다.

 

참고

http://www.windowsphonegeek.com/tips/wp7-working-with-images-content-vs-resource-build-action

Posted by 동동(이재동)
XNA2011. 2. 8. 20:44

XNA Framework의 역사





XNA는 Microsoft에서 개발한 게임 개발 프레임워크로, 2004년 GDC에서 최초로 프로젝트를 공개하여 2010년 현재 4.0베타에 이르렀습니다. your dream game - build it today - millions may play it tomorrow 라는 슬로건을 가진 XNA는 하드웨어 플랫폼에 의존하는 기존의 코딩방식에서 벗어나 PC뿐만 아니라 Xbox360이라는 게임콘솔, 미디어플레이어인 Zune, 또 현재는 Windows Phone 7까지 지원하고 있습니다.



저는 2007년부터 알게 되었지만, 당시 마케팅프로젝트를 하면서 기존의 게임시장이 철저히 플랫폼시장에 지배되고 있었던데에 반해 플랫폼에 자유로운, 보다 컨텐트에 집중할 수 있는 기술 - 당시에는 부족한 면이 없지 않았지만- 그리고 그 기술에 담긴 뜻이 참 좋았던 기억이 있습니다.



앞으로도 XNA에 대해 다루면서 나오게 되겠지만, 당시에는 XNA에 담긴 큰 뜻에 비해 마켓플레이스라든가, 정책, 라이센스 등 환경적인 요소가 열악했었던 것이 사실이었고 진입장벽이 컸던 것도 사실이었습니다. C#이라는 언어, Xbox라는 플랫폼, 마켓정책, 온라인게임시장의 전통적인 강세, 게임 콘솔 시장에서의 보급율 등은 지금도 마찬가지이지만 그 당시에는 더 큰 무언가였습니다.



또한 기술적으로도 그러했는데 http://blogs.msdn.com/b/ito/archive/2010/03/24/xna-game-studio-4-0-refactoring.aspx 를 인용하자면,

XNA는 1.0당시 Xbox360에서 .Net CF가 돌아가게 된지 고작 4개월이 지난 상태였습니다. 당시 XNA는 윈도우상에서만 가능했기 때문에 자연스럽게 Managed DirectX의 설계를 참고하게 되고, 굳이 따지자면 DirectX 9.0의 랩퍼와 같은 형태였습니다.

이러한 방침은 설계기간을 단축시킬 수는 있었지만, 추후에 Xbox360과 Windows상의 동작에 있어서의 차이점, 예를 들면, RenderTarget2D를 활용하는 차이를 깨닫게 된 때는 이미 API사양을 변경하기에는 늦어버려, 결국 Xbox 360과 Windows에서의 동작의 차이는 그대로 존재하게 되었습니다.

또한 추가한 기능을 제거하는 것이 새로운 기능을 추가하는 것보다 훨씬 더 어렵다는 것을 XNA Game Studio Express 1.0을 릴리즈 하면서 실감하게 되었습니다.

일단 추가된 기능은 사용빈도가 낮아지면 그 동안 동작했던 게임이 돌아가지 않게 됩니다. 이러한 사용빈도가 낮은 API라는 것은 귀찮은 존재로, 아무리 사용빈도가 낮아지더라도 API로 제공하고 있는 이상 해당 API가 동작되는지 여부를 확인하기 위한 테스트를 할 필요가 있습니다. 그리고 이러한 문제는 소수의 XNA팀으로서는 테스트에 드는 시간이 소요되기 때문에 신기능을 추가하는 데에 시간이 적어지면 문제가 발생하기 쉽습니다.
이 글에서도 알 수 있지만, 구조로서의 프로그램이 얼마나 많은 생각을 요하고 또 많은 시행착오를 겪어야 하는지 그 노고가 묻어납니다. 모든것은 상대적이라, 항상 그 목적에 따라 정확히 정의할 필요가 있고 발생하는 Trade-Off에 대해 적절한 선택을 해야합니다. 그런 의미에서 게임개발을 위한 Framework로서의 XNA는 다소 구조적인 접근방식으로 알아보고자 합니다.

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=4325&MAEULNO=541&no=53339&page=1
Posted by 동동(이재동)
Windows Phone 72011. 1. 27. 10:45

링크로 대신한다.


http://www.ittoday.co.kr/news/articleView.html?idxno=17454


박대표는 증강현실을 이용한 동전줍기 게임 포춘코인을 주목해 달라고 말한다.


이부분 완전 부담 100배 ㅠㅠ


더 잘만들어야겠다 ㅠㅠ


Posted by 동동(이재동)
Mobile Web in Asp.net2011. 1. 17. 19:32

msdn에 나온다

 

http://msdn.microsoft.com/ko-kr/library/ms178193(VS.80).aspx

 

하지만

 

쿠키작성에 이렇게 하라고 써있는데

 

HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);

 

마지막 부분이 틀린거 같다.

 

 //쿠키에 저장
                HttpCookie hc = new HttpCookie("UserInfo");
                hc["id"] = userInfo.Id;
                hc["password"] = userInfo.Password;
                hc.Expires = DateTime.Now.AddDays(1d);
                Response.SetCookie(hc);
 
SetCookie()를 써야 작동이 되는듯하다.
 
읽는 부분은 동일하다
 

if (Request.Cookies["UserSettings"] != null)
{
    string userSettings;
    if (Request.Cookies["UserSettings"]["Font"] != null)
    { userSettings = Request.Cookies["UserSettings"]["Font"]; }
}

 
Posted by 동동(이재동)
iPhone App2011. 1. 7. 13:02

google docs를 이용해서 편리하게 아이패드와 동기화를 해보자.

 

일단 내가 하고 싶었던 일은 내컴퓨터에서 적은 ToDO나 메모를 아이패드에서 실시간으로 보고 싶었다.

 

그래서 EverNote나 어썸 노트를 써보았지만 구글 독스에서 저장한후 꼭 어플의 동기화 버튼을

 

눌러야만 동기화가 되었다

 

하지만 내가 원하는건 구글 독스에서 저장했을때 아이패드를 건드리지 않고 자동으로 refresh 되어서 아이패드에

 

출력하기를 원했다…

 

일단 나는 웹에서 작업하기가 느려서 MS Office와 연동을 해서 사용했다.

 

참고한곳은 여기이며

 

http://pakcw.cafe24.com/1170

 

사용한 프로그램은

 

OffiSync 프로그램이였다.(http://www.offisync.com/download.html)

 

이걸 설치하면 구글 docs와 오피스가 실시간 싱크 된다 굉장이 유용한 프로그램이다.

 

자 이제 내컴퓨터에 준비는 끝났다….

 

아이패드에서 docs.google.com 들어가자 어라? 모바일 버전이다.

 

모바일 버전에서는 일단 EDIT를 할수가 없었고 실시간으로 내컴퓨터에서 쓰는 내용을 동기화 하지 않았다.(당근 수정이 안되기떄문인듯) pc버전으로 웹페이지를 보면 되긴하지만 너무 느림

 

그래서 인터넷 검색결과 구글독스 환경설정에 가서 언어를 영어로 설정하면 EdIT 버튼이 생긴다고 하여서

 

해보니 생겼다….

 

자 이제 내컴퓨터에서 글을 작성하고 아이패드 웹 브라우저에서 편하게 실시간 동기활로 글을 볼수 있게 되었다.

 

이로써 아이패드 활용도가 더 높아지는것인가?

Posted by 동동(이재동)
Windows Phone 72011. 1. 7. 12:53

그냥 무턱 대고 쓰기 보다는 이렇게 class로 정의 하는것이 효율적이다.

 

name도 const로 깔끔하게 정의 하고

 

역시 팀장님은 다른거 같다 ㅋㅋ

 

public class SettingsService
  {
      const string NormalCoinStyleKey = "NormalCoinStyle";
      const string DefaultNormalCoinType = "Basic";
 
      public SettingsService()
      {
          if (IsolatedStorageSettings.ApplicationSettings.Contains(NormalCoinStyleKey) == false)
          {
              IsolatedStorageSettings.ApplicationSettings.Add(NormalCoinStyleKey, DefaultNormalCoinType);
          }
      }
 
      public string NormalCoinStyle 
      {
          get
          {
              return IsolatedStorageSettings.ApplicationSettings[NormalCoinStyleKey] as string;
          }
          set
          {
              IsolatedStorageSettings.ApplicationSettings[NormalCoinStyleKey] = value;
              IsolatedStorageSettings.ApplicationSettings.Save();
          }
      }
  }
Posted by 동동(이재동)
Windows Phone 72011. 1. 6. 21:48

예전 포스트에서도 썻지만 약간 달라져서 다시 쓴다.

 

먼저 이런식으로 notifyPropertyChanged 이벤트 클래스를 하나만든다.

 

public class ItemCoinInfo : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
 
        public ItemCoinInfo()
        {
 
        }
    
        #region TypeProperty
        private ItemCoinType _type;
        /// <summary>
        /// 
        /// </summary>
        public ItemCoinType Type
        {
            get
            {
                return _type;
            }
            set
            {                
                if (value != _type)
                {
                    _type = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Type"));
                    }
                }
            }
        }
        #endregion TypeProperty            
    
        
        #region CountProperty
        private int _count;
        /// <summary>
        /// 
        /// </summary>
        public int Count
        {
            get
            {
                return _count;
            }
            set
            {
                if (value != _count)
                {
                    _count = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Count"));
                        PropertyChanged(this, new PropertyChangedEventArgs("DisplayName"));
                    }
                }
            }
        }
 
        private string _name;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                if (value != _name)
                {
                    _name = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                    }
                }
            }
        }
 
        private string _displayName;
        public string DisplayName
        {
            get
            {
                _displayName = string.Format("{0} X {1}", Name, Count);
                return _displayName;
            }           
        }
 
        #endregion MyPropertyProperty                
    }
 
그뒤에는
이것을  다시
public static class ItemList
  {
      public static ObservableCollection<ItemCoinInfo> ItemsInfo { get; set; }
 
      static ItemList()
      {
          ItemsInfo = new ObservableCollection<ItemCoinInfo>();
 
          if (ItemsInfo.Count == 0)
          {
              //todo : 현재는 강제로 넣고 있지만 나중에는 xml에서 읽어올것 without count
              //초기에만 넣는다는 것을 잊으면 안됨 나중에 확장을 생각할것 -jdlee
              ItemsInfo.Add(new ItemCoinInfo { Count = 0, Type = ItemCoinType.FC1, Name = "Fortune Coin" });
              ItemsInfo.Add(new ItemCoinInfo { Count = 0, Type = ItemCoinType.PC1, Name = "Pray Coin" });
              ItemsInfo.Add(new ItemCoinInfo { Count = 0, Type = ItemCoinType.WC1, Name = "Web Coin" });
          }
      }
  }

 

이렇게 만들고

여기 안의 count개수를 이런식으로 linq로 늘리면?

//아이템 개수를 하나 늘린다.          
               var type = (ItemCoinType)Enum.Parse(typeof(ItemCoinType), viewmodel.CoinInfo.Id, true);
               (from p in ItemList.ItemsInfo where p.Type == type select p).FirstOrDefault().Count += 1;              

 

자동으로 이것을 바인딩한 컨트롤은 바뀐다.

Posted by 동동(이재동)
Windows Phone 72011. 1. 5. 13:15
난 처음에 Image를 넣어야 하는줄 알았더니 BitMapImage를 넣어야 하는것이였다.
 
사용하는 부분은 이렇게 이고
ItemImageSource = new BitmapImage(new Uri("/HugeFlow.FortuneCoins;component/Images/item/Coins_9.png", UriKind.RelativeOrAbsolute));            
 
 
 private BitmapImage _ItemImageSource;
        /// <summary>
        /// TODO:아이템 이미지 변경
        /// </summary>
        public BitmapImage ItemImageSource
        {
            get
            {
                return _ItemImageSource;
            }
            set
            {
                _ItemImageSource = value;

                OnPropertyChanged("ItemImageSource");
            }
        }
 
xaml코드에는
<Image Source="{Binding ItemImageSource}"  Stretch="Fill"/>
 
바인딩해서 사용하였다.
 
Posted by 동동(이재동)
VisualStudio2010. 12. 2. 13:27

Tip이라기보단 단축키 모음입니다...

* IntelliSense 제안모드 : Ctrl + Alt + Space (개발자가 임의의 클래스 또는 프로퍼티를 생성하고자 할 때 해당 단축키로 인텔리센스의 제안모드를 On/Off 할 수 있습니다)

* Call Hierarchy : (Ctrl + K , Ctrl + T) or (Ctrl + W or Ctrl + K)

매서드를 호출하는 곳 또는 매서드 내부에서 사용하는 프로퍼티나 매서드 목록을 트리형태로 보여줍니다.

Call To '매서드이름' : 매서드를 호출하는 매서드 목록

Call From '매서드이름" :매서드 내부에서 사용중인 매서드와 프로퍼티목록

* 코드 정의창 : Ctrl + W + D

커서가 있는 매서드나 클래스의 소스를 보여줍니다.

* Highlight된 Text 간의 이동 : Ctrl + Shift + Up , Down

커서를 올려놓으면 생기는 Highlight된 구간을 탐색할 때 사용합니다.

Ctrl + F10 : 현재 커서가 존재하는 곳까지 디버깅을 실행합니다.

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

Visual Studio 에서 Temp Project 만드는 법

Tool -> Options -> Projects and Solutions 에서 Save new projects when created 의 체크를 풀어주시면 됩니다.

그럼 새로 프로젝트 생성할 때 어느 경로에 프로젝트를 만들 것인지 물어보지 않고 AppData 아래에 솔루션을 만듭니다.

이 TempProject는 솔루션을 닫을 때 저장할 것인지 버릴 것인지 물어보고 버린다고 하면 임시폴더에서 이 TempProject를 삭제합니다.

단점으로는 단일 프로젝트만 가능하다는 점과 경로가 필요한 웹어플같은 경우에는 사용할 수 가 없습니다.

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

디버그 중단점 팁!!

중단점에 오른쪽버튼 클릭하고 When Hit... 라는것을 클릭하면

Print a message 라는 check 박스가 있고 이것을 체크하게 되면

메세지를 쓸 수 있습니다.

여기는 문자열이 들어감으로 Debug.WriteLine를 쓴 것처럼 Output에 value값이 출력됩니다.

When Hit를 설정한 중단점이 사각형으로 변하게 되고 이 라인에서는 중단되지않고 넘어갑니다. 그 후 output출력창에 보면 출력값을 확인해 볼 수 있습니다. Debug.WriteLine보다 좋은점은 코드에 불필요한 코딩이 들어가지 않아서 불필요한 부분을 지우는 작업이 필요없다는 것 정도일까요??

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

Debug 타임에 마우스를 올리면 현재 변수에 어떤 값이 들어가 있는지 볼 수 있는데 자세히 보면 옆에 Pin을 꽂을 수 있는 기능이 있습니다.

이렇게 Pin으로 고정시켜두면 다음 디버깅때 마우스를 올려놓지 않아도 값을 확인해볼 수 있습니다. +로 확대한 후에 각 프로퍼티별로도 Pin기능을 사용할 수 있고 밑으로 향하는 화살표를 클릭해서 Comment 도 달수 있는 기능을 제공하고 있습니다.

디버깅중에 핀에서 걸리는 데이터는 마지막 디버그 세션의 데이터를 사용하고 비주얼 스튜디오가 중지되기 전까지 세션이 살아있다고 하네요

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

Todo List 만드는 법입니다

주석으로 //TODO 라고 작성한 후에 Ctrl + W + T 를 누르면 TODO 리스트를 볼 수 있습니다. Tools -> Options 에서 Eniviroment -> Task List 에서 주석에 사용할 token을 정의해서 사용할 수 도 있습니다

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

IntelliTrace 를 사용하면 중단점에 걸렸던 내역들을 Stack에 저장해서

어느실행 때 어떤 값이었는 지 확인 할 수 있고 내 컴퓨터에서 실행헀던 디버그 내역을 다른컴퓨터에서 실행해 볼 수도 있습니다.

단 컴파일 가능한 소스코드가 있어야 한다는 단점이 있지만요...

tools -> options -> IntelliTrace 에 가면 trace파일을 저장하는 경로와 저장할 용량의 최대크기 IntelliTrace가 어떤 동작에서 로그를 저장할 것인지에 대한 세팅이 가능합니다.

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

C# 3.5에서는

​IEnumerable<ITest> tests = new List<Test>()

or

IEnumerable<ITest> iTests = null;
            List<Test> tests = new List<Test>();

            iTests = tests;

이런식의 생성이나 할당이 불가능 했지만

IEnumerable을 사용할 때에

C# 4.0에서는 된다고 하네요...

다른것도 가능한지 찾아봐야 겠어요

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

이상입니다!!

Posted by 동동(이재동)
카테고리 없음2010. 11. 22. 15:50

일단 바보 같이 View에서 Add View를 이용해서 만들었었다.

 

그러면

예를 들어서 result.aspx View를 만들었는데

 

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
 
<asp:Content ID="resultTitle" ContentPlaceHolderID="TitleContent" runat="server">
    Result
</asp:Content>
 
<asp:Content ID="resultContent" ContentPlaceHolderID="MainContent" runat="server">
 
    <h2>Result</h2>
 
</asp:Content>

 

이렇게 자동으로 만들어 주면

 

이걸 shared 폴더에 Site.Master 페이지에

<li><%: Html.ActionLink("Result", "Result", "Home")%></li>

이렇게 넣었었다..

 

그러면 메인 페이지에

 

image

 

 

이렇게 버튼이 나온다… 근데 클릭을 하면 에러가 날것이다.

 

한가지를 더 해야 한다.

 

바로 Controller 에 이걸 추가 해야 한다.

 

public ActionResult Result()
       {
           return View();
       }

 

그러면 정상적으로 페이지가 추가되고 작동된다.

Posted by 동동(이재동)
Windows Phone 72010. 10. 20. 17:08

휴즈플로우 게시판에 올릴 내용이기 때문에 존댓말로 쓴다.~ ㅋㅋ

 

제목을 이팀장님의 말을 빌려 거창하게 썻지만 사실 별거 아닙니다~

 

ToolBox 어플은 현제 랜덤 넘버나 월드 홀리데이 같은 단일 프로그램의 dll만 추출하여 레퍼런스 참조를 하여 쓰이고 있

 

었으며 예전에는 하나의 솔루션에 각 프로그램의 프로젝트들을 로드 하여 사용하고 있었습니다.

 

하지만 하나의 솔루션에서 프로젝트를 로드 하여 deploy 하는 방법은 폰에서 사용할 때 하위 프로젝트들도 모두 depoly

 

가 되어서 폰에 10개의 어플들이 각각이 등록이 되었습니다.~ 그래서 하나의 어플만 등록되도록 프로젝트 대신 각각의 dl

 

l들 추출한 뒤 deploy 를 하여 하나의 dll로 만들어서 배포 하는 형식으로 사용했었습니다.

 

하지만 다국어 리소스 작업을  한 후 에서 각각의 dll을 추출하여 deploy를 하여 실행해보았지만 다국어 리소스 지원이 되

 

지 않았습니다. 하지만 솔루션에서 프로젝트를 로드 하여 사용된 방법에서는 작동을 잘하는 것이였습니다.

 

하지만 이것을  사용할 수가 없었던 이유가 위에서 설명한 것 와 같이 모든 프로젝트 프로그램들이 deploy가 되는 문제가

 

생기기 때문에 사용할 수 없다고 판단 하여서 dll로드 하는 방식에서 다국어 리소스를 지원 하는 방법을 찾기 위해 인터넷

 

을 마구 돌아다녔습니다 ㅠ.ㅠ 근데 윤진씨와 머리도 식힐 겸 음료수 먹으러 갔다가 해결법을 찾았습니다~(윤진씨짱)

 

생각해보면 마켓에 올리는것은 xap파일만 올리면 되는 것이기 때문에 아까 프로젝트를 로드하는 형식으로 한 방법으로

 

컴파일 한뒤 xap 파일만 폰에 로드하면 되는것이였습니다.

 

저는 항상 무조건 하나의 toolbox.dll로 만들어야 된다고만 생각하다보니 예전 방식을 고수 했던것이였죠~

 

생각의 전환이 이래서 필요하나 봅니다~^^ 물론 폰으로 디버깅이 되지는 않지만 그건 각각의 단일 솔류션에서 하면 됩니

 

다~

Posted by 동동(이재동)
Windows Phone 72010. 10. 19. 14:17

예전 WPF 시절에도 했었지만 윈폰도 똑같이 하면 된다.

 

기본국가 변경법

-폰에서 바꾸는법: 폰에서 Settings에서 region& langiage에서 display language 를 바꾼후  위에 restart 버튼을 누른다.

-프로젝트에서 바꾸는법 : 솔루션의 프로퍼티에서 Assembly Information에서 Neutral Language를 변경한다.

 

국가를 변경 하였으면 이제 리소스를 등록하자

 

일단 리소스로 빼었으면 AppResources.resx(msdn 따라서 이름지음)  에 영문 리소스가 등록되어 있을것이다.

 

여기서 영국 리소스를 한번 등록시켜보자.

 

똑같이 리소스 등록을 하는데 파일명을 AppResources.en-GB.resx 이렇게 주었다.

 

뒤에 en-GB가 붙었는데 각나라 별로 국가culture를 보고 싶으면

 

http://johnlivingstontech.blogspot.com/2010/02/localizing-resources-in-silverlight.html

 

여기를 참고하고 현재 윈폰에서 지원하는 국가는 6개 니깐 6개만 만들어 빼면 된다.

 

Deutsch(독일) de-DE

English(United Kingdom) (영국) – en-GB

english(United States) –en-US 이건 기본이니 안해도 된다. 위에 AppResources에 빼지 않았던가

espanol(스페인) es-ES

francais(프랑스) fr-FR

italiano(이탈리아) it-IT

 

자 이제 파일들을 추가 하였으면 작동하는지 보자.

 

어라? 작동을 안하네?

 

확인해보니 지원하는 국가 를 프로젝트 csproj 파일에 추가 시켜야 했다.

 

<SupportedCultures>
    en-GB;de-DE;
</SupportedCultures>

 

여기에 이런식 으로 6개를 등록시키면 제대로 동작한다.

Posted by 동동(이재동)
Windows Phone 72010. 10. 18. 15:55

자람다식을 잘쓰면 코드양을 효율적으로 줄일수 있다.

 

CountryList.ForEach(c =>
                {
                    if (c.IsChecked == true)
                    {
                        saved.Add(c.CountryCode);
                    }
                });

 

이건 기본 적인것이다.

 

반드시 List만 되는거 같다. 옵저버블이나 머 기타 Enumerator가 있는것이면 다된다고 생각했으나 안되는듯?

 

람다식에는 식 람다랑 문 람다로 나뉜다.

 

자세한건 msdn을 참고

http://msdn.microsoft.com/ko-kr/library/bb397687(VS.90).aspx

 

하지만 이런거는 직접 사용해보면서 터득하는게 제일 인거 같다.

Posted by 동동(이재동)
Windows Phone 72010. 10. 10. 17:55

일단 내가  처리해야 할 문제는 그것이였다.

 

트위터에서 로그인이 Success가 됬는지 안됐는지 체크 하는거였는데 이게 타이머로 되어있어서(LG DLLㅠ.ㅠ)

 

그래서 Success 여부를 판단하여 UI 즉 VIew딴을 바꾸는것이였다.

 

일단 Twitter Manager 클래스가 있고 거기에서 성공하면 클래스를 호출한곳(즉 VIew딴) 에서 성공이 되었는지 안되었는지  아는 방법이다.

 

즉 아주 쉽게 말해서

 

A라는 Class 가 있고 그안에 Test라는 Bool형 변수가 있는데 이것이 변경이 될때 그때 이벤트가 발생하여 알려주는것이다.

 

일단 이벤트를 발생해야 하기 때문에 살펴보자 나는 bool을 이용하였지만 샘플은 string을 이용했다(똑같다)

 

이벤트 args를 만들자

 

MyEventArgs.cs

 
    public class MyEventArgs : EventArgs
    {
        private string msg;
 
        public MyEventArgs(string messageData)
        {
            msg = messageData;
        }
        public string Message
        {
            get
            {
                return msg;
            }
            set
            {
                msg = value;
            }
        }
    }

 

 

그리고 이 이벤트를 등록하는   쿨래스를 만들자.

 

HasEvent.cs

public class HasEvent
    {
        public event EventHandler<MyEventArgs> sampleEvent;
 
        public void DemoEvent(string val)
        {
            EventHandler<MyEventArgs> temp = sampleEvent;
            if (temp != null)
            {
                temp(this, new MyEventArgs(val));
            }
        }        
    }

 

이제 SampleEvent가 등록되었으니 일반 이벤트랑 똑같이 쓰면 된다~ 와우

 

이 이벤트를 사용하는 예제를 보자

 

MainPage.cs

 

public partial class MainPage : PhoneApplicationPage
   {
       // Constructor
       public MainPage()
       {
           InitializeComponent();
           HasEvent he = new HasEvent();
           he.sampleEvent += new EventHandler<MyEventArgs>(he_sampleEvent);
           he.DemoEvent("true");            
       }
 
       void he_sampleEvent(object sender, MyEventArgs e)
       {
           MessageBox.Show(e.Message);
       }
   }

 

이렇게 이벤트를 줘서 만약 내가 어떤 시기에 특정 메소드를 실행시키고 싶거나 변경하고 싶다면

 

이렇게 이용하면 된다.

 

참고  :  http://msdn.microsoft.com/ko-kr/library/db0etb8x.aspx

'Windows Phone 7' 카테고리의 다른 글

[wp7] Localization Resource 국제화 하는법  (0) 2010.10.19
[wp7] 람다식을 잘쓰자.  (0) 2010.10.18
[wp7] viewbox  (0) 2010.10.08
[wp7] behind에서 application bar 만들기  (0) 2010.10.07
[wp7] Enum 정리  (0) 2010.10.05
Posted by 동동(이재동)
Windows Phone 72010. 10. 8. 22:03


윈폰의 viewbox가 없어서 남이 만들어논걸 쓴다 ㅋㅋ

http://blogs.imeta.co.uk/nrees/archive/2010/06/29/viewbox-wrappanel-and-a-scalable-ui-for-windows-phone-7.aspx


링크로 대신하자.;;

Posted by 동동(이재동)
Windows Phone 72010. 10. 7. 17:09

private void CreateApplicationBar()
{
    ApplicationBar = new ApplicationBar();
    ApplicationBar.IsVisible = true;
    ApplicationBar.IsMenuEnabled = false;
 
    ApplicationBarIconButton apDoneButton = new ApplicationBarIconButton(new Uri("icons/appbar.check.rest.png", UriKind.Relative));
    apDoneButton.Text = "Done";
    apDoneButton.Click += new EventHandler(apDoneButton_Click);
 
    ApplicationBarIconButton apCancelButton = new ApplicationBarIconButton(new Uri("icons/appbar.cancel.rest.png", UriKind.Relative));
    apCancelButton.Text = "Cancel";
    apCancelButton.Click += new EventHandler(apCancelButton_Click);
 
    ApplicationBar.Buttons.Add(apDoneButton);
    ApplicationBar.Buttons.Add(apCancelButton);
 
}

 

시간이 없으므로 소스로 대신한다.

Posted by 동동(이재동)
Windows Phone 72010. 10. 5. 14:49
/// <summary>
/// SNS Type 정의
/// </summary>
   public enum SnsType
   {
       Facebook,
       Twitter,
   };

 

 

이렇게 쓰는방법이랑

 

뒤에 facebook 에 정의를 쓰는방법이 있다.

 

만약 현재 string을 enum 형식으로 변환하고 싶으면 이렇게 하면 되고

YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);

만약 이렇게 int형식으로 바꾸고 싶을때는 
 
 public enum RouteTypeName     {         RouteTypeDirect = 1,         RouteTypeTransfer = 2     }

그냥 이렇게 형변환 하면 된다.

(int)ReserveInfoModel.radJobId


Posted by 동동(이재동)
Windows Phone 72010. 10. 5. 14:43
Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                var value = Math.Round(e.X, 1) * 100;
                BallTransform.TranslateX = value;
                System.Diagnostics.Debug.WriteLine(value);
            });

 

dispatcher에 대해서 공부하자 나중에

 

그냥 dispatcher와 deployment 의 dispatcher가 어떤게 다른지 알아볼것?

Posted by 동동(이재동)
Windows Phone 72010. 10. 4. 17:21

현제 기본적으로 inputScop를 지원하는 유일한 Numberic 키패드는 TelephoneNumber이다.(머 추후 업데이트 되겠지 )

 

먼저 Number키패드에는 . 만 있는게 아니라 ‘ 라든지 있다.

 

나는 . 만 입력되게 하고 싶었지만 아예 .키가 동작을 하지 않았다… 더 억울한 상황 ㅠ.ㅠ

 

그래서 TextBox 를 상속받아서 override해서 해결하였다.

 

일단 전체 소스를 보자

 

 
using System.Globalization;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using SalePrice.Views;
using System;
 
namespace SalePrice.Controls
{
    public class FormattedTextBox : TextBox
    {
        public enum NumberType
        {
            Number,
            Double,
            Integer,
            Currency
        };
 
        public string FormattedText
        {
            get { return (string)GetValue(FormattedTextProperty); }
            set { SetValue(FormattedTextProperty, value); }
        }
 
        public static readonly DependencyProperty FormattedTextProperty =
            DependencyProperty.Register("FormattedText", typeof(string), typeof(FormattedTextBox), new PropertyMetadata(string.Empty));
 
        public double Number
        {
            get { return (double)GetValue(NumberProperty); }
            set { SetValue(NumberProperty, value); }
        }
 
        public static readonly DependencyProperty NumberProperty =
            DependencyProperty.Register("Number", typeof(double), typeof(FormattedTextBox), new PropertyMetadata(double.NaN, onNumberPropertyChanged));
 
        protected static void onNumberPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            FormattedTextBox ftb = d as FormattedTextBox;
            ftb.onNumberChanged((double)e.OldValue, (double)e.NewValue);
        }
 
        public NumberType Type
        {
            get { return (NumberType)GetValue(TypeProperty); }
            set { SetValue(TypeProperty, value); }
        }
 
        public static readonly DependencyProperty TypeProperty =
            DependencyProperty.Register("Type", typeof(NumberType), typeof(FormattedTextBox), new PropertyMetadata(NumberType.Double, onTypePropertyChanged));
 
        protected static void onTypePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            FormattedTextBox ftb = d as FormattedTextBox;
            ftb.onTypeChanged((NumberType)e.OldValue, (NumberType)e.NewValue);
        }
 
        private Regex _regex = null;
        private string _lastSuccess = string.Empty;
        private int _prevPos = 0;
 
        public FormattedTextBox()
        {
            DefaultStyleKey = typeof(FormattedTextBox);
            TextChanged += onTextChanged;
            InputScope = new InputScope();
            //InputScope.Names.Add(new InputScopeName(){ NameValue= InputScopeNameValue.CurrencyAmount});
            InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.TelephoneNumber });
 
        }
 
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            setType(Type);
            updateFormattedText();            
       }
 
        protected override void OnManipulationCompleted(ManipulationCompletedEventArgs e)
        {
            base.OnManipulationCompleted(e);
            this.Focus();
        }
 
        private void setType(NumberType type)
        {
            switch (type)
            {
                case NumberType.Double:
                case NumberType.Currency:
                    _regex = new Regex(@"^\d+\.?\d*?$");
                    //_regex = new Regex(@"^(((\d{1,3})(,\d{3})*)|(\d+))(.\d+)?$");
                    break;
                case NumberType.Number:
                case NumberType.Integer:
                    _regex = new Regex(@"^\d+$");
                    //_regex = new Regex(@"^\d+$");                    
                    break;
            }
        }
 
        private void updateFormattedText()
        {
            if (string.IsNullOrEmpty(Text) == true || _regex == null)
                return;
 
            if (_regex.Match(Text).Success == false)
            {
                Text = _lastSuccess;
                SelectionStart = _prevPos;
            }
 
            double num = 0;
            double.TryParse(Text, out num);
 
            switch (Type)
            {
                case NumberType.Double:
                    {
                        Number = num;
                        FormattedText = Text;
                    }
                    break;
                case NumberType.Integer:
                    {
                        Number = (int)num;
                        FormattedText = Text;
                    }
                    break;
                case NumberType.Currency:
                    {
                        Number = num;
                        //FormattedText = string.Format("{0:C}", Number);
                        FormattedText = string.Format("{0:N}", Number);
                    }
                    break;
            }            
        }
 
        private void onTextChanged(object sender, TextChangedEventArgs e)
        {
            if (string.IsNullOrEmpty(Text) == true)
            {
                Number = 0;
                SelectAll();
                SelectionStart = 0;
            }
            updateFormattedText();
        }
        
 
        protected virtual void onNumberChanged(double oldValue, double newValue)
        {
            string old = Text;         
            Text = newValue.ToString();
 
            if (Text != old)
            {
                SelectionStart = _prevPos;
            }
        }
 
        protected virtual void onTypeChanged(NumberType oldValue, NumberType newValue)
        {
            setType(newValue);
            updateFormattedText();
        }
 
        protected override void OnGotFocus(RoutedEventArgs e)
        {
            base.OnGotFocus(e);
 
            SelectAll();
            SelectionStart = 0;
        }
 
       
        protected override void OnKeyDown(KeyEventArgs e)
        {            
            _lastSuccess = Text;
            _prevPos = SelectionStart;
           
            switch (e.Key)
            {
                case Key.D0:
                case Key.D1:
                case Key.D2:
                case Key.D3:
                case Key.D4:
                case Key.D5:
                case Key.D6:
                case Key.D7:
                case Key.D8:
                case Key.D9:
                case Key.NumPad0:
                case Key.NumPad1:
                case Key.NumPad2:
                case Key.NumPad3:
                case Key.NumPad4:
                case Key.NumPad5:
                case Key.NumPad6:
                case Key.NumPad7:
                case Key.NumPad8:
                case Key.NumPad9:
                case Key.Decimal:
                case Key.Delete:
                case Key.Back:
                case Key.Left:
                case Key.Right:
                case Key.Enter:                
                case Key.Tab:
                    {
                        base.OnKeyDown(e);
                    }
                    break;
                default:
                    {
                        //"."키의 keycode로 구분해서 사용 가능하게 만든다.
                        if (e.PlatformKeyCode == 190)
                        {
                            base.OnKeyDown(e);
                        }
                        else
                        {
                            e.Handled = true;
                        }                        
                    }
                    break;
            }
        }
    }
}
 


key 다운에 보면 주석으로 달아놓았다 ㅋㅋ

Posted by 동동(이재동)
노래2010. 10. 1. 11:31


Following Genie from a bottle


Together searching for the castle of OZ

Riding the dream of adventures crossing the rainbow



램프의 요정을 따라서 오즈의 성을 찾아 나서는 모험의 꿈을 타고 무지개를 건너



Magical power of mistery, the power a veiled witch was longing for

Let them free this speel-bound people lock, little girl



베일에 쌓인 마녀조차 얻지 못한 신비한 힘으로 마법에 묶인 사람들을 자유롭게 해



"Why don't you make your dreams come ture When you were younger and you thought all things were possible?"
"Of course. I was naive. Now i'm old."
"Why do you feel that way? Whenever you feel, make a wish for your dreams come true."
"Yes, way to go!"



Raise your hands up Peter Pan and Wendy, once you cannot fly up high
Only full of happy memories in our heart



날지 못하는 피터팬 웬디 두팔을 하늘 높이 마음엔 행복한 순간만이 가득


Oh! ideal taste of enjoyment


Imagine fairy's worㅣd up in the sky once we poen up the gate
We'll make it happen and achieve everything we've been dreaming of



저 구름 위로 동화의 나라 닫힌 성문을 열면 간절한 소망의 힘 그 하나로 다 이룰 수 있어



Where the woods are veiled in the darkness
And where an is island's breathing with magic
Let's have a dream of a fantastic future for us



짙게 드리운 안개 숲도, 주문으로 숨쉬는 섬에도 아름다운 미래의 꿈 펼쳐지게 해



"Have you ever heard of the story about the black hearted prince and the wicked Cinderella?"
"No, I haven't it is a story a can't even imagine or believe."
"Why can't you believe it could be ture?"
"Just maybe it is story of you and I."


Throw everything you don't want to know high up in the ocean sky
Only full of happy memoryse in our heart



알고 싶지 않은 것 모두 다 저 넓은 하늘 높이 마음엔 행복한 순간만이 가득


Oh, ideal taste of enjoyment!



Imagine fairy's world up in the sky once we open up the gate.
We'll make it happen and achieve everything we've been dreaming of



저 구름위로 동화의 나라 닫힌 성문을 열면 간절한 소망의 힘 그 하나로 다 이룰 수 있어


Throw everything you don't want to know high up in the ocean sky
Only full of happy memoryse in our heart



알고 싶지 않은 것 모두 다 저 넓은 하늘 높이 마음엔 행복한 순간만이 가득


Oh, ideal taste of enjoyment!



Imagine fairy's world up in the sky once we open up the gate.
We'll make it happen and achieve everything we've been dreaming of It's in your heart



저 구름 위로 동화의 나라 닫힌 성문을 열면 간절한 소망의 힘 그 하나로 다 이룰 수 있어 너의 마음속에

'노래' 카테고리의 다른 글

Mocca - The Best Thing  (0) 2010.07.23
Miss A Bad Girl Good Girl  (0) 2010.07.23
달콤한 노래 모음  (0) 2010.07.15
이지혜 -곰돌이  (0) 2010.07.15
[가사] 커플 - 김용준  (0) 2009.08.05
Posted by 동동(이재동)
Windows Phone 72010. 9. 30. 17:52

먼저 UserControl을 이용하여 Dependecy Property를 쓴 간략한 예제를 먼저 보자

<UserControl x:Class="WorldHoliday.Views.HolidayText"
 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 
    mc:Ignorable="d"
 
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
 
    FontSize="{StaticResource PhoneFontSizeNormal}"
 
    Foreground="{StaticResource PhoneForegroundBrush}"
 
    x:Name="RootText"
 
    >    
 
    <StackPanel>
 
        <TextBlock Text="{Binding Path=HolidayTextValue,ElementName=RootText}" VerticalAlignment="Center"/>
 
        <Path Data="M0,52 L480.02109,52" Fill="#FFF4F4F5" Height="1" Margin="0,0,-1.021,7" Stretch="Fill" Stroke="White" UseLayoutRounding="False" VerticalAlignment="Bottom"/>
 
    </StackPanel>
 
</UserControl>
 
 

 

그냥 usercontrol에 Textbox 하나 넣은 것이다. 이미 구현된 완성본을 넣었다. 일단 완성 해 놓고 시작을 했다.

 

자 이제 behind코드를 보자.

public partial class HolidayText : UserControl
 
   {
 
       public string HolidayTextValue
 
       {
 
           get { return (string)GetValue(HolidayTextValueProperty); }
 
           set { SetValue(HolidayTextValueProperty, value); }
 
       }
 
 
       public static readonly DependencyProperty HolidayTextValueProperty =
 
          DependencyProperty.Register("HolidayTextValue", typeof(string), typeof(HolidayText), new PropertyMetadata(string.Empty));
 
 
 
 
       public HolidayText()
 
       {
 
           InitializeComponent();            
 
       }
 
   }

 

그냥 간단하게 넣은것이다.

 

약간 설명을 하자면

Name = 등록할 속성의 이름

Propeprty=  속성의 타입

ownerType = 속성을 포함한 부모의 타입

typeMetaData = 속성 메타데이타 지정 (보통 callback 함수를 지정함)

 

마지막은 null로 지정가능하고 필요에 따라서 call back 함수를 만들어서 사용할수도 있다. 자세한 설명은

 

http://drum-83.tistory.com/82

 

여기를 참조 하자

 

자 이제 이 유저컨트롤을 사용한 코드를 보자

 

HolidayText ht = new HolidayText()
 
{
 
    HolidayTextValue = day
 
}; 
 
 
HolidayMonthList.Children.Add(ht);

 

자 이제 이 간단한 코드를 자세히 살펴보자..

 

이건 HolidayText라는 유저 컨트롤에 HolidayTextValue라는 Dependency Property를 정의 하고 그냥 string형 값을

 

주면 usercontrol안의 TextBlock에 내용을 뿌려주는 것이다.

 

중요한 건 저렇게 Dependency Property를 주는데 꼭 ElementName을 줘야 한다는 것이다 중요!!!!

 

<TextBlock Text="{Binding Path=HolidayTextValue,ElementName=RootText}" VerticalAlignment="Center"/>

 

이부분에서 ElementName은 위에 UserControl에 x:Name="RootText" 이렇게 정의 하였다…

 

만약 ElementName을 주지 않는다면 바인딩이 제대로 되지 않으므로 주의 하자

 

참고 : http://decav.com/blogs/andre/archive/2007/05/27/wpf-binding-to-properties-in-your-usercontrol-or-window.aspx <—elementName의 중요성

Posted by 동동(이재동)
Windows Phone 72010. 9. 28. 12:40

제목이 이상하다 이걸 어떻게 표현해야 하는지 모르겠다.

 

예전부터 알고 있었는데 (아마 포스팅 보면 나올듯)

 

쉬운거지만 아마 모를수도 있는사람들을 위해서 써놓자~

 

머 프로젝트에서 패널 을 하나 만들고(나는 그냥 Canvas)

 

 

TwitterLoginUserControl tl = new TwitterLoginUserControl();
ContentGrid.Children.Add(tl);
 
이렇게 add를 하고 만약 이 유저 컨트롤에 Close 버튼을 만들고 remove 를 하고 싶다면 ?
 
그렇다면  가장 쉬운방법이
 
tl.CloseBUtton.Click +=  이벤트 어쩌구 저쩌구 이렇게 만드는게 젤 쉽지만
 
코드가 지저분해진다.. 나는 딱 유저콘트롤에서 해결 하고 싶다 이러면
 
유저콘트롤에서
 
void SubmitButton_Click(object sender, RoutedEventArgs e)
{
var parentCanvas = this.Parent as Canvas;
parentCanvas.Children.Remove(this);
}

 
이렇게 하면 된다.

Posted by 동동(이재동)
Windows Phone 72010. 9. 27. 15:03

일단 regex 를 공부를 해야 하지만…

 

공부가 안되어있다면 regex 라이브러리를 이용해보자.. 하지만 나중에는 공부할것

 

데이터를 추출할때 유용하다.

 

일단 기초 공부는 여기서 시작하고

 

http://golee07.tistory.com/309

 

 

여기에서 regex 라이브러리를 참고하자

http://regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3

Posted by 동동(이재동)
Windows Phone 72010. 9. 17. 15:46

윈도우7에서 텍스트 박스에 포커스가 가게 되면 키패드가 자동으로 열린다.

 

하지만 입력을 완료하고 텍스트 박스를 닫고 싶지만 닫을려면

 

“Back” 버튼을 누르던가 다른 컨트롤을 터치하여 포커스를 옮겨야만 한다.

 

“Enter”키가 있지만 나가는 버튼은 아니다. 아마 TextBox내에서 엔터 치는 기능인듯?

 

하지만 숫자같은걸 입력하는 즉 짧은 단어를 입력하고 Enter를 누르면 키패드가 닫히게 하고 싶다.

 

정말 간단하다. 하지만 약간 꼼수일수도 있고 깔끔하게 컨트롤로 만드는것도 불가능하다.

 

자 왜 컨트롤로 못 만드는지와 어떻게 하는지 알아보자.

 

일단 해당 텍스트 박스의 KeyDown 이벤트를 받아야 한다.

 

 

TaxTextBox.KeyDown += new KeyEventHandler(TaxTextBox_KeyDown);

받았으면 아래처럼 Enter키를 받고서 focus를 Page에 준다.

 

/// <summary>
/// Enter키를 눌렀을시 focus를 페이지에 주어서 키패드가 사라지게 함
/// </summary>
/// <param name="e"></param>
private void EscapeKeypad(System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
this.Focus();
}
}

그러면 끝~

Posted by 동동(이재동)
iPhone App2010. 9. 13. 18:06

몽키3 결제를 했다...


일단 컴퓨터에서도 노래를 무제한 들을수 있으며 아이폰에는 다운도 가능하기때문이며


또 한달 들으면 한달은 무료란다...


하지만 결제가 자동결제여야만 한달이 무료였다.


지금이 9월 13일이니까 적어도 11월 10일까지는 꼭 해지를 안하면 까먹고 계속 돈 4500원이 나갈것이다.


까먹지 말고 꼭하자...


결제 하고 나니까 피해사례가 떳다.


결제나간다고 말을 안했다는것이다. 피해본사람이 많은듯


http://cafe.naver.com/appleiphone/596498


Posted by 동동(이재동)
Windows Phone 72010. 9. 9. 11:19

DLL 추가할때 조심해야 할것이 있다. 나혼차 사용할때는 상관이 없지만 TFS 나 SVN에서 같이 소스를 공유 할 경우라면

 

dll 경로를 잘맞추어주어서 올려야 한다.

 

오늘 appbox에서 쓰는 dll을 붙여서 해볼려고 했는데 내컴퓨터에서는 잘되는데 딴자리에서는 dll을 참조 할수가 없다고

 

나왔다. 왜 그런가 Dll Path를 확인하였더니 bin/ 뒤에 있는게 아닌가?

 

그래서 별 뻣짓을 다했다.

 

일단 svn에서 받은 컴퓨터에서 프로젝트 속성에서 Reference Path에 폴더를 add하면 잘되긴 하지만 정확한 해결방법이

 

아니다..

 

그렇다면 어떡해야 할까?

 

팀장님이 알려주신 방법으로는 여러가지 방법이 있지만 이렇게 해결하였다.

 

 

image

 

이렇게 폴더를 만들어 dll 파일 자체를 프로젝트에 등록하는 방법이다.

 

이렇게 해서 참조를 한후 svn Checkout을 하면 레퍼런스  Path 오류가 없어진다.

Posted by 동동(이재동)
Windows Phone 72010. 9. 7. 18:24

원래 알지만 헷갈릴수도 있으니 그냥 적는다 ㅋㅋ


FontFamily = new FontFamily("Segoe WP Light")


이렇게 string으로 써야 한다...

Posted by 동동(이재동)
iPhone App2010. 9. 7. 11:24
Posted by 동동(이재동)
Windows Phone 72010. 9. 7. 11:12

일단 폰에서 Month를 표시 하는 어플이 있는데 그냥 Month 라고 해서 “Jan”, “Feb” 이렇게 입력하면 미국에서는 잘보일

 

지 모르나 이탈리아나 프랑스 같이 다르게 쓰는 사람들은 불편할수가 있다. 그러면 어떻게 해야할까?

 

리소스로 뺴야할까? 그렇게 된다면 엄청난 노가다를 해야한다..ㅠ.ㅠ

 

일단 리스트에 모든 달을 넣어보자… 이렇게

 

for (int i = 0; i < Months.Length; i++)
            {
                Months[i] = Thread.CurrentThread.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[i];
            }
 
너무 쉽나… Thread를 이용하면 된다…
 
근데 이 Month를 Parse해야 할경우가 있다. 날짜 비교라던지 DateTime형으로 만들고 싶을때….
 
이때는 어떻게 해야할까 일단 “Jan”이라는 결과가 있는데 이걸 1로 바꾸고 싶다….
 
parse를 이용하면 되지만 날짜 형식이 일치해야 하기때문에… 강제로 그냥 만들어준다. 이게 좋은 방법인지는
 
나도 잘모르겠다 더 좋은 방법이 있으면 다시 포스팅해야겠다.
 
private int GetMonthToInt(string month)
       {            
           return DateTime.Parse(string.Format("2009/{0}/13", month)).Month;
       }
 
 
Posted by 동동(이재동)
iPhone App2010. 8. 17. 09:26

뜨아 힘들다 ㅋㅋ 내일이 드디어 아이폰4 예약하는 날이다

새벽 5시에 일어나서 준비를 해야 한다 광클을... 6시에 예약하니까 근데 기차표도 예약 하는날이 겹쳐서 ㅋㅋ

일단 미리 대리점 위치를 검색해 놨다... 우리집 위치랑 이런것도 미리 준비해야겠다.

메모장에 바로 기입할수 있도록 (복사 & 붙여넣기) 주소랑 전화번호 통장 번호 등등을 미리 써놔야겠다.

미리 적어야할  양식폼 샘플

http://db.blueweb.co.kr/formmail/Newformmail.html?dataname=ranger2xx0

우리집에서 가까운 대리점 리스트~

그리고  브라우저 크기는 100%로 만들어 놓고 팝업창 허용으로 바꿀껏


주식회사케이픽 퍼스트 신림정 1577-3940 서울 관악구 신림동 1640-44번지 <--젤가까움

팝세븐 서울 관악구 신림동 1422-10번지

새벽 텔레콤 서울관악구 신림동 1641-50번지


일단 가까운 리스트를 뽑아 놓았다...

이제 광클많이 살길이다 오늘은 일찍 자야겠다 ㅋㅋ

아이폰4 가 손에 들어온다~

Posted by 동동(이재동)