Archive

Archive for the ‘팁 & 테크’ Category

C의 비트필드

May 18th, 2009
1
2
3
4
struct register {
    int reg1 : 1;
    unsinged int reg2 : 1;
};

[코드 테스트]

    reg1에 1을 대입하면 -1이 나온다.

    reg2에 1을 대입하면 1이 나온다.

 

[이유]

    비트 1개로는 두 개의 수를 표현하는데,

    signed는 -부분도 있으니 0, –1

    unsinged는 0,1로 표현.

 

음~ 기본이 중요하다. :)

팁 & 테크

NTP 타임 획득 함수

May 18th, 2009

대학원 프로젝트 진행하다가 메모해둔 코드인데 이것도 3년전 다이어리를 보다가 발견.. RTCP 패킷에 들어가는 64bit의 NTP Timestamp를 구할때 사용하는 함수다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
#include "compat/gettimeofday.h"
#include "ntp.h"
 
#define SECS_BETWEEN_1900_1970 2208988800u
 
void ntp64_time(uint32_t *ntp_sec, uint32_t *ntp_frac)
{
        struct timeval now;
        uint32_t       tmp; 
        /* now.tv_usec is signed on many platforms; compensate */
 
        gettimeofday(&now, NULL);
 
        /* NB ntp_frac is in units of 1 / (2^32 - 1) secs. */
        *ntp_sec  = now.tv_sec + SECS_BETWEEN_1900_1970;
        tmp = now.tv_usec;
        *ntp_frac = (tmp << 12) + (tmp << 8) - ((tmp * 3650) >> 6);
}

팁 & 테크

정렬 알고리즘

May 18th, 2009

5년 전 다이어리를 뒤지다 찾아낸 코드 :)
대학4학년 때 Strategy Pattern을 배우면서 Quiz 수준의 코딩 과제를 수행한 것. 지금 보니 재밌네~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System; 
using System;
 
namespace Sorting
{
    /// <summary>
    /// Strategy Paticipant 정의
    /// </summary>
    public abstract class SortAlgorithm
    {
        /// <summary>
        /// 모든 알고리즘에 적용되는 공통 인터페이스 정의
        /// </summary>
        /// <param name="size">정렬될 데이터의 사이즈</param>
        /// <param name="data">정렬될 배열</param>
        public abstract void Sort(int size, int[] data);
 
        protected void swap(int[] data, int i, int j) {
            int temp = data[i];
            data[i] = data[j];
            data[j] = temp;
        }
    }
 
    /// <summary>
    /// 버블 소트 알고리즘
    /// 개념 : 바로 옆의 수와 비교하면서 작은값을 왼쪽으로 버블시켜줌
    /// </summary>
    public class BubbleSort : SortAlgorithm 
    {
        public override void Sort(int size, int[] data) 
        {
            for (int i = 0; i < size; i++) {    
                for (int j = size - 1; j > i; j--) {
                    if (data[j-1] > data[j])      
                        swap(data, j-1, j);
                }
            }
        }
    }
 
    /// <summary>
    /// 퀵소트 알고리즘
    /// 개념 : 피벗보다 작은수와 큰수로 데이터 집합을 나눈후 재귀호출
    /// </summary>
    public class QuickSort : SortAlgorithm {
        public override void Sort(int size, int[] data) {
            quicksort(data, 0, size-1);
        }
        private void quicksort(int[] data, int left, int right) {
            int pivot, i, j;
            if (left < right) {
                i = left;
                j = right+1;
                pivot = data[left];
                do {
                    do
                        i++;
                    while (data[i] < pivot);
 
                    do
                        j--;
                    while (data[j] > pivot);
 
                    if (i < j)
                        swap(data, i, j);
                } while (i < j);
 
                swap(data, left, j);
                quicksort(data, left, j-1);
                quicksort(data, j+1, right);
            }
        }
    }
 
    /// <summary>
    ///  셀렉션 소트 알고리즘
    ///  개념 : 매번 최소값을 찾아 차례대로 넣어줌
    /// </summary>
    public class SelectionSort : SortAlgorithm 
    {
        public override void Sort(int size, int[] data) 
        {
            for (int i = 0; i < size-1; i++) {
                int min = i;
                for (int j = i+1; j < size; j++)
                    if (data[j] < data[min])
                        min = j;
                swap(data, i, min);
            }
        }
    }
 
}

팁 & 테크

Darwin Streaming Server 설치

May 10th, 2009

개발중인 스트리밍 클라이언트의 기능을 테스트 하기 위한 목적으로

Darwin 스트리밍 서버를 설치해보았다.

아래 링크로 가보면 스크립트가 있는데 그것만 실행시키면 우분투에서 설치가 완료된다.

설치 방법: Darwin Streaming Server 설치

팁 & 테크

Content Protected Using Blog Protector By: PcDrome.