Wednesday, July 30, 2014

Visual Studio Tools for Unity 1.9

MonoDevelop 안녕~!


Visual Studio에서 Unity 프로젝트를 편집하고 디버깅까지 할 수 있는 Add-In이 무료로 풀렸다.

Microsoft가 회사를 사버림ㅇㅇ.

http://blogs.msdn.com/b/visualstudio/archive/2014/07/29/visual-studio-tools-for-unity-1-9.aspx

설치 파일은 .msi 형식으로 제공된다.

Unity 재시작 후

Assets --> Import Packages --> VIsual Studio 20XX Tools

선택해야 Unity에서 .cs 파일 더블 클릭 때 자동으로 Visual Studio가 실행된다.
(위 메뉴가 Unity를 재시작 해야 생성됨)


설치하면서 아래 링크의 configuration 부분을 읽어 보는 게 좋다.

http://unityvs.com/documentation/

Sunday, July 27, 2014

[엑셀] 배열 수식 Array Formula

30년 간의 복리 적금의 원리합계(또는 이자)를 계산해 보고 싶었다.

불입은 한 달에 한 번 한다 치고, 연 이율을 12로 나누어 월 이율을 구한 다음
(월 이율)^(개월 수)를 곱한 값들을 더하면 될 것이다.

s = m*Sigma{(1+r)^n}n->360 대략 이런 식?

30년은 360개월이니까 일일이 값을 입력한다면(핸들을 잡고 마우스를 끄는 것도) 꽤 귀찮을 것이다. 한 방에 하는 법을 찾아야 한다.

문제를 좀 더 단순화해서 1부터 10까지 더하는 방법을 생각해 보자. (답은 55)
s = Sigma{n}n->10

ROW()가 행 번호를 반환하는 함수이므로 ROW(A1), ROW(A10) 등을 쓰면 될 것 같다.
그럼 SUM(ROW(A1:A10))?

원래 SUM은 범위를 받는 함수이므로 꼭 될 것 같지만 안 된다. 그냥 '1'이 나오고 만다.
  (ROW( 상태에서 범위를 지정하면 제일 작은 행번호-여기서는 1-가 반환된다.)

(프로그래밍 할 줄 아는 사람의 건전한) 상식으로는 ROW(A1:C3) 같은 걸 입력하면, {1, 2, 3}이 나와야 할 거 아닌가?
 - 근데 그냥 1이 나오고 끝이라는 것이다.

그러면 SUM(ROW(A1):ROW(A10)) 이건 어떨까? 
이건 아예 오류가 난다. ROW(A1), ROW(A10)은 그냥 숫자 값이라서 콜론(:)으로 범위(참조)로 만들 수 없다. 

rand() 같은 게 있다는 걸 생각하면 셀에 꼭 값을 채워야 값을 참조할 수 있는 건 아닐 텐데...방법이 없을까?

결론부터 얘기하면 첫 번째 식이 식 자체로는 맞다. 그런데 수식을 입력 후 Enter가 아니라 Ctrl-Shift-Enter를 쳐서 array formula를 만들어야 계산이 된다.
   Ctrl-Enter도 아니고 Ctrl-Shift-Enter라니 거 너무 어려운 거 아니오?

SUM(1:10) 같이 간단하면 얼마나 좋아...(당연히 안 됨)
MATLAB 좀 베낄 생각 없음?

1+...+10을 했으면 원리합계 구하기는 그냥 응용하면 된다(...)



이 기능이 Excel 2003에도 이미 있었다고 한다. 진작 알았더라면...


  • Introducing array formulas in Excel

http://office.microsoft.com/en-us/excel-help/introducing-array-formulas-in-excel-HA001087290.aspx

Sunday, July 13, 2014

MonoDevelop Indentation & Newline 설정

Tools -> Options 로 대화상자를 연 뒤,

왼쪽 목록에서

Source Code >> Code Formatting >> C# source code


오른쪽 패널에서 C# Format 탭 선택 후,

Edit 버튼을 눌러 다시 열린 Edit Profile 대화상자에서

Category: Braces

Statements: End of line을 Next line으로 바꾸어야

Visual Studio처럼 if/for 등의 다음 줄에 brace({)가 안 되잖아


근데 ok, ok 해봤자 적용이 안 된다.

아오.


Policy를 Visual Studio로 고쳐도 안 되고


MonoDevelop 쓰다 MI 걸리겠다 개같은 Unity.

마치 될 것처럼 나오지만 안 되는 황당함이라니...

Monday, July 7, 2014

Iggy Azalea On Lorde's Nirvana Rock Hall Tribute

Iggy Azalea On Lorde's Nirvana Rock Hall Tribute: 'She Is Not Kurt Cobain's Peer'

http://www.billboard.com/articles/news/6113852/iggy-azalea-lorde-nirvana-rock-hall-tribute-kurt-cobain



의 적은 나의 동지이므로...


손은 못 생겼지만 아름다우시다!



Friday, July 4, 2014

네이버 오픈 API 검색 API 버그?

검색 결과까지는 잘 뜨는데, 반환된 XML 속의 링크를 클릭했을 때 나오는 URL이 틀려 있다.

ListView에 XML을 변환해 표시하는 코드. 이건 잘 동작한다.
ListViewItem.SubItems에서 [0]=제목, [1]=설명, [2]=URL이다.

        const string key = "x97y9zxc8v9as8fsa8f";   // 발급받은 키
        int start = 1; // 시작 번호
        int display = 10; // 페이지 당 보일 게시물 수

            string query = this.textBox1.Text;
            string target = "webkr";
            var doc = new XmlDocument();

            var url = string.Format(
                "http://openapi.naver.com/search?key={0}&query={1}&target={2}&start={3}&display={4}",
                key, query, target, start, display);
            doc.Load(url);
         
            var rss = doc.SelectSingleNode("rss");
            string[] ret = new string[3];
            var channel = rss.SelectSingleNode("channel");
foreach (XmlNode item in channel.SelectNodes("item"))
{
string[] result = new string[3];
result[0] = item.SelectSingleNode("title").InnerText;
result[1] = item.SelectSingleNode("description").InnerText;
result[2] = item.SelectSingleNode("link").InnerText;

this.listView1.Items.Add(new ListViewItem(result)


// 이건 기본 브라우저로 링크를 여는 코드.
// 실행은 잘 되는데 URL이 틀려 있다.

private void listView1_DoubleClick(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
foreach (ListViewItem sel in listView1.SelectedItems)
{
var x = sel.SubItems[2].Text; //정상
Process.Start(x); //여기서 리디렉션 되면서 안 된다.
}
}
}


네이버 open API 검색은 실제 주소가 아니라 그 주소로 redirection하는 링크(위 코드에서 'x')를 받아오는데, Process.Start()가 잘 돼더라도, redirection 주소가 틀렸으면 브라우저가 404 에러를 내게 된다.

어이없게도 http 뒤에 :(콜론)이 빠져 있다. 즉
http://www.naver.com 이게
http//www.naver.com으로 되는 것이다.

내가 잘못 짠 게 아니니 어찌 할 방법이 없다.

오픈 API 나온 지도 오래 됐는데 왜 이런 건지 모르겠다.


'지식인' 검색을 하면 잘 되는 걸 봐서, 이건 그냥 오타에 의한 게 분명하다.
즉 위 코드에서 검색 대상을 웹(webkr)이 아니라 지식인(kin)으로 고치면 잘 동작한다.
string target = "kin";



공식 카페 가서

물어볼랬더니 가입 후 댓글을 5개 달고, 3번 접속해야 질문을 올릴 수 있다.

접속 횟수가 모자라 못 쓰는 중...


뭐 질문해 봤자 답변 안 올라올 거 같기도 하다.

그냥 구글 API 써야지.

창 핸들을 만드는 동안 오류가 발생했습니다

System.ComponentModel.Win32Exception was unhandled   MyForm w = new MyForm IntPtr handle = wnd.Handle;   // Exception occurs here class MyFo...