하얀 겨울하얀 겨울

Posted at 2010. 12. 17. 08:22 | Posted in Music



아침에 잠깐 나와 보니 하얀 세상이 되어 있었다. 이런 날에 딱 생각 나는 곡은 Mr. 2의 하얀 겨울이다. 어린 시절 카세트 테잎으로 이 노래를 들었던 것이 기억난다. 이제는 아련한 추억이 되었다. 이 곡을 검색하고 업로드하면서 재미있는 것을 발견하였다. 동영상을 업로드 하고 보니 내가 입력한 제목이 아니였다. 나는 "하얀 겨울"로 입력했는데 "하얀겨울"로 되어있었다. 자세히 보니 내가 업로드 한 것이 아니였다. 바로 중복되는 동영상의 경우 최초 업로드를 한 사람의 동영상이 등록되는 것이다. 이것으로 데이터의 중복을 방지하고 있는 것이다. 여러 사람이 같은 동영상을 올린다면 그것은 패킷 낭비일 것이다. 내부적으로 이것을 어떻게 구현할지 궁금하였다. 완전한 파일의 경우 MD5 해쉬 값을 통해 비교를 할 수 있을 것이다. 하지만 이러한 동영상의 경우 어떻게 할까? 정말 웹서버에 업로드가 되고 나서 해쉬 값을 비교하여 등록 여부를 결정할지 아니면 구간결 프레임 정보를 보유하고 그것을 비교할지 궁금하다.

'Music' 카테고리의 다른 글

Speak Now  (0) 2011.01.24
Taylor Swift - Back To December (Live on Letterman)  (0) 2011.01.21
Just A Dream  (1) 2011.01.07
Mario del Monaco "Vesti la giubba" Pagliacci  (0) 2010.12.12
Taylor Swift - Love Story  (0) 2010.10.24
//

포인터형의 Vector 클래스에 Sort 적용하기포인터형의 Vector 클래스에 Sort 적용하기

Posted at 2010. 12. 15. 22:30 | Posted in Computer Science/컴퓨터프로그래밍
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool compare(const int* lhs, const int* rhs)
{
	return *lhs < *rhs;
}

int main(int argc, char *argv[])
{
	vector pInt;

	unsigned int iCount = 0;


	int* a = new int(10);
	int* b = new int(5);
	int* c = new int(3);
	int* d = new int(8);
	int* e = new int(1);

	pInt.push_back( a );
	pInt.push_back( b );
	pInt.push_back( c );
	pInt.push_back( d );
	pInt.push_back( e );

	for(iCount = 0; iCount < pInt.size(); iCount++)
		cout << *pInt[iCount] << " ";

	cout << endl;

	sort( pInt.begin(), pInt.end(), compare );

	for(iCount = 0; iCount < pInt.size(); iCount++)
		cout << *pInt[iCount] << " ";

	return 0;
}

  프로젝트를 하다가 Sort는 Selection Sort를 구현한다고 STL을 사용하지 않았다. 근데 한가지 궁금증이 생겼는데 바로 포인트형을 담고 있는 Vector의 경우 어떻게 Sort를 구현할 것인가? 였다. 해답은 Sort의 세번째 인자에 있었다.

//

2010학년도 2학기 프로그래밍언어론 프로젝트2010학년도 2학기 프로그래밍언어론 프로젝트

Posted at 2010. 12. 14. 15:11 | Posted in Computer Science/프로그래밍언어론


  이번 학기 프로그래밍언어론 프로젝트는 Pascal 언어에 대한 인터프리터를 만드는 것이였다. 2010년 12월 14일 화요일 오후 2시부터 제2공학관 4층 실습실에서 DEMO를 진행하였다. DEMO를 진행하는 중 이찬근 선생님이 오셔서 잘 되냐고 물어보셨지만 선뜻 대답할 수 없었다. 참 부끄러웠다.

  Lex를 통해 어휘 분석과 토큰에 대한 Linked List를 구성하고 RDP 방식으로 Non-terminal에 대한 함수 호출을 통해 파싱을 진행하게 된다. 여기까지는 잘 구현하였다. 하지만 문제는 변수에 대한 처리 및 연산이였다. 특히 변수처리가 너무 어려웠다. -1 이라는 숫자가 있을 때 -는 기호로 1은 숫자로 인식하여 음수 기호 다음에 나오는 숫자가 진짜 음수라는 것을 알려줘야 되지만 막상 그것이 쉽지가 않았다. 이것뿐만 아니라 여러가지 어려움이 많았다.

  소위 드래곤북이라 불리는 책 표지를 보면 기사와 용에 대한 그림이 나온다. 이 책 표지를 자세히 보면 재미있다. 용의 그림에는 컴파일의 복잡도라 적혀 있고 기사의 검에는 LR파서가 적혀 있다. 물론 이번 프로젝트는 LL파서 기법을 사용하였다.

  아무튼 이번 겨울 방학의 과제가 하나 더 생겼다. 이번 겨울 방학때는 프로그래밍언어 3종 세트에 대해 Review를 하고 새로운 언어에 대한 파서를 만드는 것이다.

'Computer Science > 프로그래밍언어론' 카테고리의 다른 글

JLex 1.4.3 사용기  (0) 2010.11.08
//