CPU – i7 Ram – 7Gb 내직업은 프로그래머.. 코딩하는데 이게 뭔지.. VS2010 RC+ Resharper 콤보에 제대로 시달리는듯…
Category Archives: Old Posts
빌드서버 구축 – 2008 Server Core + CruiseControl.NET + SVN 설치, 셋팅
Windows Server 2008 R2 Core 환경에 CruiseControl.NET을 설치하여 원격 Buil Server를 구축 하는 업무를 맏게 되었다. 일반 GUI환경에서의 설치방법이나 후기는 많은 편이어서 어렵지 않게 할 수 있는데 GUI가 없는 Server Core환경에서는 몇가지 요소때문에 곤란한 부분이 생긴다. PowerShell을 설치해서 사용하는등 개인적인 부분도 있으니 자신에게 필요한 부분인지 생각 해 보고 적용 하도록 하자. Windows Server 2008 R2 Core 버전 설치 (난 Standard버전을…
SSH를 이용한 파일 전송 (SCP)
scp [source] [destination] -p : 포트번호 지정 -r : 하위 디렉토리모두 포함 예) scp -P 5567 -r talsu@livedevil.net:/home/media/Storage300/APP/Music ./ scp -P 5567 -r ./* talsu@livedevil.net:/home/media/Storage300/APP/Music 수십번을 써도 해깔리네…
Ubuntu 9.10 – the Karmic Koala 64bit 현재까지 발견 문제점과 해결 방안
이전 버전까지 저장소에 있는 eclipse가 구버전이라서 직접 다운 받아 사용 했는데 하던데로 하니 eclipse가 새로운 plug-in이나 update를 못함 이미 알려져 있는 문제점 이였는데 내게 맞는 해결 방안을 못찾아 헤메던중 저장소를 보니 eclipse최신 버전이 등록 되 있었다.. 이것을 깔고 해결 저장소에 있는 eclipse를 깔았을때 Available Software Sites 에 아무것도 없음.. 즉. 이클립스 기본 update site도 등록이…
테라칸 – 오랜 시간 나의 발이 되어준 애마
회사 다닐때도, 학교 다닐때도 항상 함께 했구나. 이제 나이도 많이 먹었고 곧 팔아버릴꺼 같지만 그동안 정이 많이 들었다…
Tanigma (타니그마) – 쉽고 가벼운 무료 파일 암호화 프로그램
Tanigma – File Encryption 파일 암호화 프로그램 Tanigma를 공개합니다. 컴퓨터에서 작업을 하다 보면 중요한 문서나 남에게 감추고 싶은 자료가 있습니다. 그런 자료가 있을때 파일 암호화 프로그램으로 암호화 하게 되는데 윈도우가 지원하는 암호화 기능이나 몇몇 파일 암호화 프로그램들은 파일전체를 암호화 하는것이 아니라 일부분만 암호화 하여 파일을 정상적으로 열지 못하게 하는 방법이 많습니다. 그러나 이런 방식들은 파일…
Java Lotto Simulator (자바 로또 시뮬레이터)
자바가 설치 되어 있어야 정상적으로 보인다. 보이지 않으면 아래의 링크로 다운 받는다. Lotto Simulator 는 로또 복권을 가상으로 추첨 해 볼수 있는 프로그램이다. 기본적인 설정은 오리지널 로또 복권 셋팅 ( 6 / 45 + 보너스 ) 로 되어 있고 사용자가 원하는 값으로 변경도 가능. 만약 범위를 벗어난 값을 넣거나 설정한 갯수에 초과 또는 미달 하면…
[VHDL] 다기능 디지털 시계 Rolex7
실습장비 : HBE – COMBO– 실습 장비의 많은 기능을 모두 이용 하기 위해 노력 하였고 오류 없이 동작 하도록 신경 썼다. Mc6Akbf2pBE$ Max4Soo5Uvg$…
[공부중] 802.11 simulation
main.cpp Usage : 실행파일명 [Node수] [EndTime] [생성할 데이터파일 이름]
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
#include <iostream> #include <stdlib.h> #include <math.h> #include <time.h> #define ENDTIME 100000000 #define FILENAME "data.txt" #define M 5 // maximum number of retransmissions #define CWmin 32 // initial contention window /* System Parameters */ #define SLOT_TIME 20 // microsecond #define SIFS 10 // u sec #define DIFS 50 // u sec //#define AIFS 30 // u sec #define MAC_H 72 // MAC header #define PHY_H 192 // PHY header #define PAYLOAD 8000// 8000 bits of payload #define RTS_FRAME (PHY_H + 160) //RTS frame length #define CTS_FRAME (PHY_H + 112) // 304 us CTS frame length #define ACK_FRAME (PHY_H + 112) // 304 us ACK frame length #define T_DATA (PHY_H + MAC_H + PAYLOAD) #define aPHY_RX_START_Delay 192 #define CTS_TIMEOUT ((SIFS)+(SLOT_TIME)+(aPHY_RX_START_Delay)) #define T_SUC_BASIC (T_DATA + SIFS + ACK_FRAME + DIFS) #define T_COL_BASIC (T_DATA + SIFS + DIFS) #define T_SUC_DCF (RTS_FRAME + SIFS + CTS_FRAME + SIFS + T_DATA + SIFS + ACK_FRAME + DIFS) #define T_COL_DCF (RTS_FRAME + SIFS + CTS_TIMEOUT + EIFS + DIFS) #define EIFS ((SLOT_TIME)+(DIFS)+(ACK_FRAME)) using namespace ::std; class Node { int collisionCounter; int transCounter; int backOffCounter; int uniform(int min, int max) { unsigned int r = (unsigned int) rand(); unsigned int maxValue = (RAND_MAX+(unsigned int) 1) / (max - min + 1) - 1; if (r > maxValue) return uniform(min, max); else return (int) r % (max - min + 1); } public: Node() { collisionCounter = 0; transCounter = 0; backOffCounter = 0; } int getBackOffCounter() { return backOffCounter; } void setBackOffCounter() { backOffCounter = (int) uniform(0, (int) (pow((double) 2, (double) collisionCounter) * 32) - 1); } void decreaseBackOffCounter() { backOffCounter--; } void setCollisionCounter() { if (collisionCounter > M) { collisionCounter = 0; } else { collisionCounter++; } } void resetCollisionCounter() { collisionCounter = 0; transCounter++; } double transRate(int term) { return transCounter / (double) term; } void resetTransRate() { transCounter = 0; } }; int main(int argc, char* argv[]) { int NODES = 0; char cNODES[20]; int END = ENDTIME; char cEND[20]; char* filename = FILENAME; switch (argc) { case 1: cout << "usage : " << argv[0] << " [NODES] [ENDTIME] [FILENAME]" << endl; cout << "Number of Node = "; cin >> cNODES; break; case 4: filename = argv[3]; case 3: END = atoi(argv[2]); case 2: strcpy(cNODES, argv[1]); break; default: cout << "usage : " << argv[0] << " [NODES] [ENDTIME] [FILENAME]" << endl; return 0; } /*if (argc == 1){ cout<<"usage : "<<argv[0]<<" [NODES] [ENDTIME] [FILENAME]"<<endl; cout<<"Number of Node = "; cin>>cNODES; }else if(argc == 2){ strcpy(cNODES,argv[1]); }else if(argc == 3){ strcpy(cNODES,argv[1]); END = atoi(argv[2]); }else if(argc == 4){ strcpy(cNODES,argv[1]); END = atoi(argv[2]); filename = argv[3]; }else{ cout<<"usage : "<<argv[0]<<" [NODES] [ENDTIME] [FILENAME]"<<endl; return 0; }*/ NODES = atoi(cNODES); sprintf(cEND, "%d", END); FILE* dataFile = fopen(filename, "wt"); int t = 0, trans = 0, collision = 0, wait = 0; int collisionCheck = 0, collisionIndex = 0; Node* n = new Node[NODES]; srand((int) time(NULL)); while (t < END) { for (int i = 0; i < NODES; i++) { if (n[i].getBackOffCounter() == 0) { collisionCheck++; collisionIndex = i; } } if (collisionCheck > 1) { //collision t += T_COL_DCF; collision++; for (int i = 0; i < NODES; i++) { if (n[i].getBackOffCounter() == 0) { n[i].setBackOffCounter(); n[i].setCollisionCounter(); } } } else if (collisionCheck == 1) { //trans t += T_SUC_DCF; trans++; n[collisionIndex].resetCollisionCounter(); n[collisionIndex].setBackOffCounter(); fprintf(dataFile, "%dt", collisionIndex); } else if (collisionCheck == 0) { //wait t += SLOT_TIME; wait++; for (int i = 0; i < NODES; i++) n[i].decreaseBackOffCounter(); } collisionCheck = 0; } // printf("n--------------------------------------------------------------------------n"); cout << "trans = " << trans << " collision = " << collision << " wait = " << wait << " end time = " << END << endl; cout << "TransTime/EndTime = " << trans * PAYLOAD / (double) END << endl; cout << "Data saved : " << filename << endl; fclose(dataFile); delete[] n; return 0; } /* */ |
jainsIndex.cpp 위에서 “%dt”로 저장된 데이터 파일을 불러 1부터 입력한 윈도우 사이즈 까지 JainsIndex공식을 적용하여 F를 추출 한다.
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 |
#include <iostream> #include <stdlib.h> using namespace ::std; double jainsIndex(int nodes, int dataSize, int* datas, int windowSize); int main(int argc, char*argv[]) { int dataSize = 0; int itemp = 0; int nodes = 0; int windowSize = 100; char* sourceFileName = "data.txt"; switch (argc) { case 1: break; case 3: sourceFileName = argv[2]; case 2: windowSize = atoi(argv[1]); break; default: cout << "Usage : " << argv[0] << " [EndWindowSize] [SourceDataFile]" << endl; return 0; } FILE* countDataSize = fopen(sourceFileName, "rt"); FILE* temp = fopen("result.txt", "wt"); while (1) { if (fscanf(countDataSize, "%dt", &itemp) == -1) break; if (nodes < itemp) nodes = itemp; fprintf(temp, "%dt", itemp); dataSize++; } fclose(countDataSize); fclose(temp); int* datas = new int[dataSize]; FILE* data = fopen("data.txt", "rt"); for (int i = 0; 1; i++) { if (fscanf(data, "%dt", &itemp) == -1) break; datas[i] = itemp; } fclose(data); temp = fopen("result.txt", "wt"); for (int i = 2; i <= windowSize; i++) { cout << "WindowSize " << i << " = " << (double) jainsIndex(nodes + 1, dataSize, datas, i) << endl; fprintf(temp, "%dt%lfn", i, (double) jainsIndex(nodes + 1, dataSize, datas, i)); } fclose(temp); if (argc != 2) cout << "Usage : " << argv[0] << " " << "[EndWindowSize]" << endl; delete[] datas; return 0; } double jainsIndex(int nodes, int dataSize, int* datas, int windowSize) { double* r = new double[nodes]; double sum = 0.0, squareSum = 0.0; double sumF = 0.0; for (int i = 0; i < dataSize; i++) { //데이터를 순회 하면서 r[datas[i]] += 1 / (double) windowSize; //데이터 값에 해당하는 r[]을 1/윈도우 사이즈 만큼 증가 if (i % windowSize == windowSize - 1) { //r의 마지막 원소에 기록 하고 난뒤 for (int j = 0; j < nodes; j++) { //r을 순회 하면 squareSum += (r[j] * r[j]); //제곱의합 r[j] = 0; //할일을 하였으니 초기화 하고. } sumF += 1 / (nodes * squareSum); //F의 합 sum = 0; squareSum = 0; } } delete[] r; return sumF / (dataSize / windowSize); //F의 평균을 리턴 } |
…
[VHDL] led 쉬프트 예제
8개의 LED를 차례대로 켜는 간단한 예제를 만들어 보았다. library ieee; use ieee.std_logic_1164.all; entity tutorial is port ( clk : in std_logic; button : in std_logic; led : out std_logic_vector(7 downto 0) ); end tutorial; architecture ex of tutorial is signal buf : std_logic_vector(led’range):=”00000001″; begin led <= buf; process (clk,button,buf) begin if (button=’1′ and (clk =…