원래 시ㅋ망ㅋ한 블로그지만...

1월 19일 입대일이 다가옵니다. ㅇ<-<

여러분 모두 몇달뒤에 봅시다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2010/01/16 20:12 2010/01/16 20:12
TAG

댓글을 달아 주세요

College of Engineering과 Microsoft간의 MSDNAA (MSDN Academic Alliance) Program을 통해서 무려 공짜정식 버전을 미리 구할 수 있었던 관계로, 기회를 놓치기가 아까워서 한번 깔아봤습니다.

시스템 정보

아니나 다를까, X1600이 발목을 잡는다. 점수를 3점대로 끌어내린 주범은 바로 X1600.



DirectX Diagnostics Tool

DirectX 11. X1600이 Direct3D 9 하드웨어인 관계로, D3D 11의 기능 중 테셀레이션 등은 지원하지 못한다.



감상은 한마디로 이거 물건입니다. 3년된 1세대 MacBook Pro 인데, 이 사양으로 이렇게 부드럽게 돌아간다는게 -_-; 부팅시간도 XP랑 별반 차이없는거같고... 오히려 반응은 더 부드러운듯. 비스타는 도저히 돌릴 엄두도 못냈는데 말입니다.

결론: 고사양 환경에서는 비스타랑 별반 차이없어도 중저사양에서는 차이가 크다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/09/16 01:28 2009/09/16 01:28

댓글을 달아 주세요

floating-point arithmetic의 오차 때문에, 누적시킬수록 오차가 커지는 문제를 해결하기 위하여 작성해 보았습니다. Value-type이므로 편하게 쓰시면 됩니다.

    struct Fraction
    {       
        private int numerator;
        private int denominator;

        public int Numerator { get { return numerator; } }
        public int Denominator { get { return denominator; } }

        public Fraction(int num) : this()
        {
            this.SetValue(num);
        }

        public Fraction(int numerator, int denominator) : this()
        {
            this.SetValue(numerator, denominator);           
        }

        // note that the change is irreversible.
        public static implicit operator float(Fraction f)
        {
            return (float)f.numerator / f.denominator;
        }

        public static implicit operator double(Fraction f)
        {
            return (double)f.numerator / f.denominator;
        }

        public static implicit operator Fraction(int i)
        {
            return new Fraction(i);
        }

        public static Fraction operator +(Fraction a, Fraction b)
        {
            return new Fraction(
                a.numerator * b.denominator + b.numerator * a.denominator,
                a.denominator * b.denominator);
        }

        public static Fraction operator -(Fraction a, Fraction b)
        {
            return new Fraction(
                a.numerator * b.denominator - b.numerator * a.denominator,
                a.denominator * b.denominator);
        }

        public static Fraction operator *(Fraction a, Fraction b)
        {
            return new Fraction(
                a.numerator * b.numerator,
                a.denominator * b.denominator);
        }

        public static Fraction operator /(Fraction a, Fraction b)
        {
            return new Fraction(
                a.numerator * b.denominator,
                a.denominator * b.numerator);
        }

        public void SetValue(int num)
        {
            this.numerator = num;
            this.denominator = 1;
        }

        public void SetValue(int numerator, int denominator)
        {
            this.numerator = numerator;
            this.denominator = denominator;

            Reduce();
        }

        private void Reduce()
        {
            // get GCD with Euclidean algorithm
            int a = Math.Abs(this.numerator);
            int b = Math.Abs(this.denominator);
            int temp;

            while (b != 0)
            {
                temp = a % b;
                a = b;                 
                b = temp;
            }

            this.numerator /= a;
            this.denominator /= a;
        }

        public Fraction Reciprocal()
        {
            return new Fraction(denominator, numerator);
        }

        public override string ToString()
        {
            double value = this;
            if (value == (int)value)
                return ""+value;

            return numerator+"/"+denominator;
        }

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/01/04 23:27 2009/01/04 23:27

댓글을 달아 주세요

얼마 전부터 일부 트레이 아이콘이 표시됐다가 되지 않았다가 하더군요. msconfig로 시작프로그램을 조절해보면서 하루를 삽질했는데, 도저히 차도가 보이질 않았습니다.

최후의 수단으로 구글링을 하길 3시간, 키워드를 바꿔가면서 검색하던 중 하나의 자료를 찾았으니...

바로 SSDP Discovery Service 서비스를 비활성화하는 것입니다. 효과가 없는 경우 Universal Plug and Play Device Host에도 시도해 보세요. UPnP는 Plug and Play와는 관계가 없는 네트워크 관련 프로토콜입니다.
단, UPnP 장비를 사용하시는 경우에는 이 방법을 적용하시면 안 됩니다.

관련 Knowledge Base: http://support.microsoft.com/kb/841571/

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/12/17 11:33 2008/12/17 11:33

댓글을 달아 주세요

문득 떠올라서 적어봅니다.

필요조건: 관계형 데이터베이스

1. session id, unique id, expired 여부를 저장할 테이블을 만듭니다.
2. 글쓰기 요청시 각 session id에 대응하는 레코드를 만들고 unique id를 생성, 저장 후 글쓰기 페이지에 hidden attribute로 보냅니다.
3. 글이 POST될 때 해당 세션과 unique id로 AND 검색을 통해 레코드를 확인합니다. 일치하는 레코드가 존재하지 않거나 expired가 참이면 에러를 띄우고 돌려보냅니다.
4. 글을 등록하고 expired 필드의 값을 참으로 설정합니다.
 
submit 버튼을 여러번 클릭할 경우, POST로 날아오는 unique id가 동일하기 때문에 expired 된 글쓰기 세션은 사용할 수가 없게됩니다.

부가적으로는 글쓰기 페이지를 받아서 파싱하는 것은 어쩔 수 없겠지만 단순 자동 글쓰기 툴 정도는 차단할 수 있습니다.

발생할 수 있는 문제점: 레코드가 쌓여 table의 크기가 너무 커질 수 있음
해결 방안:
발급 일시에 대한 컬럼을 추가하고
1. maintenance script를 통한 주기적 정리
2. 익명 글쓰기를 허용하지 않는 경우 사용자 id 컬럼을 추가하여 처리

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/12/04 21:24 2008/12/04 21:24

댓글을 달아 주세요

MacBook Pro HDD 교체.

애플 2008/09/12 19:26
갓 1세대 MacBook Pro의 Seagate Momentus 5400.2 (80GB S-ATA) 드라이브를 Seagate Momentus 5400.5 (320GB S-ATA 2) 드라이브로 교체했습니다.

작업 과정은 구글에 MBP HDD replacement 등의 키워드로 검색해보시면 손쉽게 찾으실 수 있습니다. 한글로 번역된 자료도 잘 찾아보면 있을 겁니다.

사실 교체하게 된 계기는 Boot Camp 2.1 드라이버 깔다가 윈도즈가 맛이 가서, 다시 깔 겸 하기로 하고 320GB 하드를 지르게 된 것입니다. 요즘은 하드 값이 많이 떨어져서 8만 6천원밖에 안 하더군요. 어차피 1년짜리 워런티는 작년에 만료되었으니 겁없이 뜯었습니다.

다시 조립을 마치고 SuperDuper!로 파티션을 복구하는 중입니다. 전체적으로 별 문제는 없었으나, 팜레스트 쪽 분리하는 것과 다시 조립하는 부분이 조금 힘들었습니다. 안 그래도 케이스가 약간 찌그러진 부분도 있고, 다소 유격이 발생하는지라 좀 힘들더군요. 원래 뜯은 겸 찌그러진 부분을 펼까 생각했습니다만, 외부 케이스에 밀착되어 부품이 빼곡히 자리하고 있어서 포기했습니다.

80GB (74.5GB) 파티션을 2개로 쪼개서 겨우 연명하던 신세에서 드디어 탈출이라니 정말 기쁩니다. 이제 용량때문에 생고생은 하지 않아도 될 것 같습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/09/12 19:26 2008/09/12 19:26

댓글을 달아 주세요

 

사용자 삽입 이미지


보시다시피 결과를 보면 아무 의미 없습니다.
오차의 크기를 봐도 도저히 차이가 있다고 생각할 수가 없습니다.
1천만번의 평균을 냈는데도 실행시마다 어느쪽이 빠른지 결과가 다릅니다.
사실 요즘은 컴퓨터가 하도 빨라져서 곱셈과 비트연산의 속도차는 티도 안 납니다.
함수 호출하고 포문 돌리면서 발생하는 오버헤드가 더 크다고 생각되네요.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/04/13 23:56 2008/04/13 23:56

댓글을 달아 주세요

  1. 홍민희 2008/12/02 16:29  댓글주소  수정/삭제  댓글쓰기

    사실 저런 수준의 코드 최적화를 손으로 하는 것이야 말로 정말 미련한 짓인데… 실제 컴파일된 결과를 보면 알겠지만, 요즘 컴파일러들은 정수에 대한 곱셈 연산을 내부적으로 shift 곱으로 바꿔버리기 때문. 즉 양쪽 모두 동일한 바이너리를 가지고 있을 거야.

어이없는 favicon

잡담 2008/03/13 10:09

동아리 홈페이지에 favicon이 나오지 않길래 1시간동안 삽질했습니다.
그냥 아이콘 경로에 www 붙이니까 나오네요.
OMG [..]

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/03/13 10:09 2008/03/13 10:09

댓글을 달아 주세요

  1. shizuha 2008/03/16 23:08  댓글주소  수정/삭제  댓글쓰기

    1시간 삽질 ㅊㅋㅊㅋ <-

동아리 서적 신청할 거 보러 따라갔다가 눈에 띄길래 냉큼 질러버렸습니다.
포츈 아테리얼 쿠제 키리하 쁘띠 피규어가 들어있네요.
전격히메처럼 19금 잡지가 아니다보니 엣찌한건 상반신 노출씬 한장밖에 못찾았습니다. (사실 찾은게 더 신기합니다)
사실 갖고싶은건 전격히메지만, 돈들어가는것도 그렇고 19금이라 집에 놓을데도 없고 ㅠㅠ
사진은 디카도 없는데다 폰카로 찍기도 귀찮고 표지는 홈페이지 가면 있으니 귀찮아서 안올릴랍니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/03/05 20:54 2008/03/05 20:54

댓글을 달아 주세요

  1. shizuha 2008/03/16 23:14  댓글주소  수정/삭제  댓글쓰기

    전격히메를 갖고 싶은 이유는?? ㄹㄹ

10시쯤에 문자가 와서 방과후에 바로 받으러 갔다 왔습니다.
접수증 확인하고 금방 주더군요.
두 겹 포장을 벗기고 뒷면에 꽂으니까 사용시간이 4시간 가까이 뜨네요.
실사용시간은 3시간쯤 예상하고 있습니다.

P.S: 가서 애플TV 실물을 봤습니다. iTMS도 movie rental도 안되는 애플티비는 50만원짜리 DivX밖에 안되지 않나 싶은데 [..]
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/03/04 20:49 2008/03/04 20:49

댓글을 달아 주세요