TortoiseSVN Save Password

기타 2012.07.10 10:33

조금 위험하지만.. 불편함을 없애기 위해.

 

Repository 탐색할때나, Check-out 할때 계속 비밀번호를 입력받게 서버가 세팅되어있어서

아예 비밀번호를 저장하려고 한다.

 

방법은 TortoiseSVN Setting에서 SSH client 실행 Argument에 id, password 를 설정해서 실행.

"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -l userId -pw password

 

아래는 링크

http://jyotsna.philogy.com/2008/12/06/how-to-make-svn-remember-password/

설정

트랙백

댓글

MySQL HP 컴퓨터에 설치시 에러

기타 2012.07.02 12:44

"Could not access network location \Hewlett-Packard\\."

 

MySQL 설치시 [HP]컴퓨터의 Windows 에서는 아래와 같은 에러를 내면서 설치가 되지 않는다.

[HP]에서 윈도우 설치할때 무슨 짓을 해놓은건지...

 

 

 

결국 Google을 뒤적뒤적..

HP 관련 설치프로그램이 경로를 잡고있는것 같다.

레지스트리 수정하고 설치완료!

 

아래는 참고 블로그 링크.

http://blog.unixwiz.net/2012/01/could-not-access-network-location-hewlett-packard-error.html

 

첨부파일은 링크에 나온 레지스트리 수정파일.

hpinstallfix.reg

설정

트랙백

댓글

PhonePasswordBox

.Net/Windows Phone 2012.06.08 09:51

툴킷에 있는 PhoneTextBox 는 정말 맘에 드는 컨트롤 중 하나이다.

따로 TextBlock 을 둬서 TextBox에 어떤내용인지 설명을 하지 않아도 된다.

화면사이즈에 제약이 있는 Phone 환경에서는 꼭 필요한 컨트롤 중 하나이다.

 

하지만 PasswordBox 에서는 해당 기능이 지원되지 않는다.

그래서 찾아본 링크

http://damianblog.com/2011/01/21/wp7-password-watermark/

 

링크를 참조하여 내게 필요한 몇가지 기능을 추가했다.

아래는 소스.

======================== PhonePasswordBox.cs =======================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace BloodAria.MyMusic.Controls
{
    public partial class PhonePasswordBox : UserControl
    {
        #region DependencyProperty

        public static readonly DependencyProperty HintProperty =
            DependencyProperty.Register("Hint", typeof(string), typeof(PhonePasswordBox), new PropertyMetadata("Password",
                    new PropertyChangedCallback(OnHintPropertyChanged)
                )
            );
        private static void OnHintPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
        {
            PhonePasswordBox phonePasswordBox = sender as PhonePasswordBox;
            if (phonePasswordBox != null && phonePasswordBox.txtBoxPasswordHint != null && args.NewValue != null)
            {
                phonePasswordBox.txtBoxPasswordHint.Text = args.NewValue as string;
            }
        }

        public static readonly DependencyProperty PasswordProperty =
            DependencyProperty.Register("Password", typeof(string), typeof(PhonePasswordBox), new PropertyMetadata(
                    new PropertyChangedCallback(OnPasswordPropertyChanged)
                )
            );
        private static void OnPasswordPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
        {
            PhonePasswordBox phonePasswordBox = sender as PhonePasswordBox;
            if (phonePasswordBox != null && phonePasswordBox.txtBoxPassword != null && args.NewValue != null)
            {
                phonePasswordBox.txtBoxPassword.Password = args.NewValue as string;
                phonePasswordBox.CheckPasswordWatermark();
            }
        }

        #endregion

        #region Properties

        public string Hint
        {
            get { return base.GetValue(HintProperty) as string; }
            set { base.SetValue(HintProperty, value); }
        }
        public string Password
        {
            get { return base.GetValue(PasswordProperty) as string; }
            set { base.SetValue(PasswordProperty, value); }
        }

        #endregion

        #region Events

        public event RoutedEventHandler PasswordChanged;

        #endregion

        public PhonePasswordBox()
        {
            InitializeComponent();
            txtBoxPassword.PasswordChanged += (s, e) => this.Password = txtBoxPassword.Password;
            txtBoxPassword.PasswordChanged += (s, e) => { if (PasswordChanged != null) PasswordChanged(this, e); };
            txtBoxPasswordHint.TextChanged += (s, e) => this.Hint = txtBoxPasswordHint.Text;
            txtBoxPasswordHint.Text = "Password";
        }

        protected override void OnGotFocus(RoutedEventArgs e)
        {
            base.OnGotFocus(e);
            this.txtBoxPassword.Focus();
        }
       
        private void PasswordLostFocus(object sender, RoutedEventArgs e)
        {
            CheckPasswordWatermark();
        }
       
        public void CheckPasswordWatermark()
        {
            var passwordEmpty = string.IsNullOrEmpty(txtBoxPassword.Password);
            txtBoxPasswordHint.Opacity = passwordEmpty ? 100 : 0;
            txtBoxPassword.Opacity = passwordEmpty ? 0 : 100;
        }

        private void PasswordGotFocus(object sender, RoutedEventArgs e)
        {
            txtBoxPasswordHint.Opacity = 0;
            txtBoxPassword.Opacity = 100;
        }
    }
}
======================== PhonePasswordBox.xaml =======================

<UserControl x:Class="BloodAria.MyMusic.Controls.PhonePasswordBox"
    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}"
    d:DesignHeight="100" d:DesignWidth="400">

    <Grid>
        <TextBox x:Name="txtBoxPasswordHint" TextWrapping="Wrap" Foreground="{StaticResource PhoneTextBoxReadOnlyBrush}" IsHitTestVisible="False"/>
        <PasswordBox x:Name="txtBoxPassword" LostFocus="PasswordLostFocus" Opacity="0" GotFocus="PasswordGotFocus"/>
    </Grid>
</UserControl>

설정

트랙백

댓글

Enum.GetValues()

.Net/Windows Phone 2012.06.05 17:11

WPF 에서는 당연한듯 썼던 Enum.GetValues() 가 없다. (실버라이트 동일)

열거형 타입의 모든 값을 가져와서 ListPicker 에 바인딩 시킬려고 했는데 너무 손이 많이 갔다.

아이템을 수동으로 추가하는 방법도 있으나 맘에 안들고...

 

찾던중 발견한 링크.

http://cjbhaines.wordpress.com/2011/07/12/enum-getvalues-in-silverlight/

 

아래는 소스.

 

using System.Linq;

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Diagnostics;

 

namespace BloodAria.MyMusic.Common
{
    public static class EnumHelper
    {
        public static T[] GetValues<T>()
        {
            Type enumType = typeof(T);
            if (!enumType.IsEnum)
                throw new ArgumentException("Type '" + enumType.Name + "' is not an enum");

            IEnumerable<FieldInfo> fields = enumType.GetFields().Where(field => field.IsLiteral);

            return fields.Select(field => field.GetValue(enumType)).Select(value => (T)value).ToArray();
        }
    }
}

 

설정

트랙백

댓글

[정규식] 웹상에서 테스트하면서 개발하자

기타 2012.05.14 09:48

정규식 사용시 즉각즉각 테스트하면서 할때 유용한 사이트.

바꿔가면서 문법 적응하는데도 용이함.

 

http://www.gskinner.com/RegExr/

설정

트랙백

댓글

학습파워

도서 2012.04.22 08:59

제목: 학습파워

저자: 유영만

출판: 위즈덤하우스

===========================================================================================

그냥 자기계발 도서 코너 근처를 지나다가 맘에 드는 제목이 있어서 집어들었는데 익숙하던 저자이름 유명만.

「곡선이 이긴다」의 저자. 내용이 참 좋았는데... 하고 생각하며 책을 선택했다.

 

책의 전체 내용이 소제목과 그에 대한 우화(?)를 이야기하며 글쓴이가 말하고자 하는 바를 전달하고 있다. 책 중반부로 갈수록 이런 전개는 다소 지루함을 느끼게 하였다.

 

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

 

기회는 기다림이 아닌 도전에서 나온다. (바람개비 - 바람을 기다리지 말고 들고 뛰어라.)

디딤돌이 있어야 멀리 뛸 수 있다. (펌프와 마중물 - 펌프질 하기전에 마중물을 부어라.)

전진을 위한 휴식을 취하라. (돛과 닻 - 돛은 전진과 발전, 닻은 멈춤과 휴식)

깊게 파고들고 넓게 경험하라. (참치와 넙치 - 넙치는 바닥만 다니지만 참치는 온 바다를 다닌다)

지식은 책상이 아닌 경험에서 나온다. (집 그리기 - 건축가 자녀는 집을 그릴때 지붕부터 그리지 않고 벽부터 그린다.)

쓸모없는 지식은 과감히 버려라. (아인슈타인 개미 - 지식의 생명력이 짧아지고 있다.)

뿌리가 깊으면 흔들리지 않는다. (바람과 삼나무 - 끝없이 성장하고 싶다면 자신이 딛고 서있는 뿌리를 단단히 하라.)

설정

트랙백

댓글

Expression Blend 2012년 1주차

Study 2012.04.02 16:39

블렌드 스터디를 벌써 3주를 진행했지만 (OT빼고..) 기록이 없어서

나중에 잊혀져 버릴까 하는 노파심에 스터디에서 내가 몰랐던 부분을 기록으로 남긴다.


1주차 - Expression Blend 4 기본 사용법

1.Welcome Screen


블렌드를 제일 처음 실행시키면 나오는 화면.. 웰컴스크린. 기존 프로젝트를 열 수 있고, 신규 프로젝트를 생성가능하다. 또 가장 최근에 사용했던 프로젝트들을 표시해 준다. 이걸 웰컴스크린이라고 부른덴다. 뭐 큰 의미는 없지만.. 나중에 탭패널을 만들때 이녀석처럼 부드럽게 각 탭이 전환되는 애니메이션을 구현해 보겠다고 생각했다.


2. Menu - Window - Save as New Workspace..


블렌드의 각 작업도구 및 패널의 현재 위치를 저장하는 기능. 편의를 위해 프로젝트 페널을 프로퍼티 패널의 오른쪽에 붙인다. 왜 편한지는 써보면 알 수 있고...

이게 저장이 된다니.. 거기다 [F6] 키로 스위칭도 가능.


3. XAML 디자인에서 윈도우의 위치 이동

 XAML편집을 하다보면 컨트롤 크기가 커져서 스크롤바를 움직여야 될때가 생긴다.

확대 축소도 가능하지만 그것도 불편하다. 

나름 편하게 할꺼라고 단축키 [H:Hand] 와 [V:Select] 를 번갈아 누르며 쌩 쇼를 하고있는데...

우리의 능력자 찰스님.. 이동시킬때만 스페이스를 누르고 드레깅하면 된단다.. -_-




난 1주차에서 3번이 제일 도움되었다. 가장 간단하지만 꼭 필요한 팁... 책 어디에서도 보지못한거 같은데 ㅋㅋㅋ


설정

트랙백

댓글

C#에서 Excel 연동

.Net/C# 2012.04.02 11:20

C#에서 Excel 연동하는 법?

따로 라이브러리로 정리해야겠당.

후배가 물어봐서 링크전달 ㅋㅋ

알아서 해바~


http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm

설정

트랙백

댓글

네트워크 경로에 있는 프로젝트 열기

.Net 2012.03.30 14:53

난 그냥 안되는줄 알았네...

http://msdn.microsoft.com/en-us/library/bs2bkwxc(v=vs.80).aspx

설정

트랙백

댓글

ClickOnce 주요 API

.Net/배포 2012.03.30 14:31

참조 dll : System.Deployment.dll

네임스페이스 : System.Deployment.Application

클래스 : ApplicationDeployment

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

IsNetworkDeployed : ClickOnce 배포를 통하여 실행되었는가?

                              ClickOnce API를 이용하기 전 항상 체크 해야 함.

IsFirstRun : 현재 버전이 처음 실행 되었는가?

Update(). UpdateAsync(), CheckForUpdate(), CheckForUpdateAsync() : 업데이트 관련

IsFileGroupDownloaded(), DownloadFileGroup(). DownloadFileGroupAsync() : 추가 파일 그룹별 다운로드 관련

 

설정

트랙백

댓글