언제했는지는 정확히 모르겠지만, 네이버에서 여러 소프트웨어를 오픈 소스로 공개했다. 공개된 소프트웨어 목록에는 이미 인수하여 오픈 소스로 공개한다고 이야기했던, 큐브리드를 비롯하여, 공개 프로젝트로 진행중인 Xpress Engine(구 제로보드) 도 보이고, 그 밖에도 유용해보이는 새로운 소프트웨어들이 보인다. 공개된 소프트웨어들은 대부분 nFORGE라는, 기존의 sourceforge 같은 프로젝트 관리 툴을 이용해 오픈 소스 프로젝트로서 공개했다.

이렇게 큰 기업차원에서 소프트웨어를 오픈 소스로 공개하는 것은 여러가지로 의미있는 일이다. 우선, 큰 기업이 사회에 환원한다는 의미도 있고, 기존에 있는 것들을 공개해서, 다른 개발자들이 '바퀴를 다시 발명하는 것' 같은 행위를 하지 않도록 하므로써, 이를 바탕으로 기술을 좀더 발전시키거나 생각치 못했던 새로운 서비스를 내놓는 것을 기대할 수 있을 것이다. 물론, 네이버 입장에서도 공개 프로젝트로 내놓은 이상, 좀더 많은 피드백과 네이버 개발자 이외의 다른 개발자의 기여도 기대할 수 있을 것이다.

어쨌든, 대부분의 소프트웨어들이 DBMS나 서버 관리 등 개발에 밀접한 관련이 있는 것들이라, 앞으로 많은 개발자들이 네이버 Developer Center를 찾게 될 듯 싶다.

'Etc' 카테고리의 다른 글

PHP Fest 2009  (0) 2009.09.24
'파이어폭스3' 기네스 기록 도전 성공!  (0) 2008.07.03
'파이어폭스3'가 기네스 기록에 도전한다.  (0) 2008.06.16

오픈오피스(OpenOffice.org) 최신판인 3.0이 13일 공개되었다.

오픈오피스는 자유 소프트웨어로 배포되어 상용 오피스 프로그램이 없더라도 얼마든지 워드프로세서, 스프레드시트 파일을 작성하고, 볼수있기때문에 아주 유용하게 사용하고 있는 프로그램 중의 하나다. 사실 상용 프로그램의 기능이 필요하다면 구매해서 사용해야하겠지만, 나처럼 단순한 기능들만 사용하거나, 주로 작성되어있는 오피스 파일을 열어서 수정하는 기능만 필요한 사람에게는 상용 프로그램을 구매하는 것은 큰 부담이다. 게다가 오픈오피스는 상용 프로그램과 비교해도 크게 손색없는 기능들을 갖춰서 해외의 경우 정부기관이나 기업등에서 비용 절감을 위해서 사용하고 있기도 하다.

이번에 공개된 3.0에서 눈에띄는 부분은 Mac OS X의 공식 지원이다. 그동안 Windows와 GNU/Linux 등만 공식 지원해서 맥 사용자들은 오픈오피스를 기반으로 제작된 네오오피스(NeoOffice)를 사용해야만 했다. 하지만, 이번판부터는 맥 버전도 공식 지원하면서 오픈오피스를 맥에서 사용할 수 있게 되었다. 같은 코드 기반이라고는 하지만 어쨌든 맥 사용자들에게는 선택의 폭이 넓어진 셈이다.

기타 추가된 기능으로 Writer의 노트 기능의 변화나 위키 페이지 편집 기능, Calc의 열 제한이 1024개로 확장된 것 등이 눈에 띈다.

현재 오픈오피스 공식 웹페이지는 3.0 배포때문에 아래와 같이 다운로드 링크만 제공하는 상태인데, 한국어판은 아직도 2.4에 머물고 있는게 좀 아쉽다.

오픈 오피스 웹 페이지


관련 링크

'Operating' 카테고리의 다른 글

crontab 설정법  (0) 2008.12.04
RedHat 계열 리눅스(CentOS 등..)에서 selinux로 인한 커널 패닉시  (0) 2007.12.31
파이썬 모듈 설치  (0) 2007.12.24

지난 6월 17일에 '파이어폭스3' 출시를 기념하여 모질라 재단에서는 24시간 안에 다운로드 수가 가장 많은 소프트웨어로 기네스 기록에 도전했다. 거기에 나도 참가했는데, 그 결과를 메일로 받아볼 수 있었다.


여기로 가면 결과를 볼 수 있는데, 24시간 동안 약 800만여 명이 다운로드하여 기네스 기록을 세우는데 성공했다고 한다. 다운로드 맵을 보면 한국은 149,159명이 다운로드 받은 것으로 최종 확인되어서 그래도 꽤 많이 받았다는 생각도 들지만, 일본의 1,353,376명에 비하면 여전히 초라하다. 이러면서 무슨 인터넷 강국이라는 건지... 쩝~

그나저나 기네스 기록을 세운다고 뭐 달라지는게 있겠냐마는 모질라 재단에서는 감사의 뜻으로 참여한 사람들에게 인증서도 발급해주고 있다.

'Etc' 카테고리의 다른 글

네이버의 오픈 소스 공개  (0) 2008.11.22
'파이어폭스3'가 기네스 기록에 도전한다.  (0) 2008.06.16
한국, OOXML 국제표준 찬성  (0) 2008.03.29
Download Day

멋들어진 웹브라우저 파이어폭스의 새 버전이 곧 나온다. 현재까지는 RC3까지 나온 상태이고, 이제 정식 버전 발표만을 눈앞에 둔 상태이다.

그런데, 파이어폭스를 개발하는 모질라 커뮤니티에서는 새 버전 출시를 기념해서 소프트웨어 다운로드 수 기네스 기록에 도전한다고 한다. 참여방법은 간단하다.

  1. 참가 신청 페이지를 방문한다.(위의 배너를 눌러도 된다.)
  2. PLEDGE NOW! (참가 등록)을 누르고 "이메일 주소"와 "국가(South Korea)"를 선택한다.
  3. 출시일인 2008년 6월 17일(현지시간)에 파이어폭스3를 다운로드한다.

파이어폭스3의 새로운 기능을 확인하고 싶으면 이 스크린 캐스트가 도움이 될거다.

그리고, 아마 미국 시간으로 2008년 6월 17일이라 한국시간으로는 18일인 것으로 보인다.

'Etc' 카테고리의 다른 글

'파이어폭스3' 기네스 기록 도전 성공!  (0) 2008.07.03
한국, OOXML 국제표준 찬성  (0) 2008.03.29
SMDK2410에서 리눅스 부팅하기  (0) 2007.04.14

지식경제부 산하 기술표준연구원에서 결국 OOXML을 ISO표준으로 만드는데 찬성하기로 결정했다고 한다. 찬성하기로 한 근거는 유럽컴퓨터제조사협회(ECMA)가 한국 대표단이 제시했던 요구 사안을 대부분 수용하기로 했다는 것이다.

여기에서 지난 1차 투표에 이어서 이번에도 반대 서명을 하고 있는데, 한국 대표단이 제시했던 요구 사안을 '대부분 수용하기로 했다'는 것이 좀 걸린다. 그래서, 규격이 얼마나 수정이 된 것인지 의심스럽다.

엄청난 두께의 OOXML 명세서

사실, 나는 저 두께가 두려워서 명세를 읽어보지 않아서 잘 모르겠지만, OOXML은 많은 문제를 가지고 있는 표준이라고 한다. 하지만, 그런 문제들이 해결된다면, 표준으로 채용할수도 있을지 모른다. 저런 몰상식한 두께의 명세서를 과연 다 읽고 실제로 구현이 가능한 것인지 좀 의심스럽긴하지만...

하지만 지금 분위기로는 OOXML이 표준이 될수도 있을 것 같다. 표준이 된다면 MS를 한번 믿어봐야겠지만, 이런꼴 나지 않으리란 법은 없기에 걱정스럽긴 하다.

'Etc' 카테고리의 다른 글

'파이어폭스3'가 기네스 기록에 도전한다.  (0) 2008.06.16
SMDK2410에서 리눅스 부팅하기  (0) 2007.04.14
u-boot compile for SMDK2410  (0) 2007.04.01

Selinux 옵션이 켜져있을 경우에 부팅하다가 아래와 같은 메시지와 함께 커널 패닉을 일으키는 경우가 있다.

Unable to load Selinux Policy. Machine is in enforcing mode. Halting now. Kernel Panic!

그때는 커널 옵션에 enforcing=0 를 주면 부팅이 된다.


'Operating' 카테고리의 다른 글

오픈오피스(OpenOffice.org) 3.0 공개  (0) 2008.10.14
파이썬 모듈 설치  (0) 2007.12.24
FreeBSD 업그레이드  (0) 2007.12.14
파이썬 모듈을 설치하려고 보면 setup.py 가 있는 것들이 많다. 이것들을 rpm 으로 만들기 위해서는 다음과 같이 하면 된다.
$ python setup.py bdist_rpm


/*
ID: ****
LANG: C
TASK: dualpal
*/

/*#define __DEBUG__*/
#define TRUE 1
#define FALSE 0
#define MAX 100

#include 

int isDualPalindrome(int num);
int checkPalindrome(int num[], int pos);

int main()
{
	int N;
	int S;
	int i;
	int count = 0;

#ifndef __DEBUG__
	FILE *fin;
	FILE *fout;

	fin = fopen("dualpal.in","r");
	fout = fopen("dualpal.out","w");
	fscanf(fin, "%d", &N);
	fscanf(fin, "%d", &S);
#else
	printf("how many do you want to get palindromes : ");
	scanf("%d", &N);
	printf("what number do you want to palindromes that greater than? : ");
	scanf("%d", &S);
#endif

	for (i = S + 1 ; ; i++)
	{
		if (isDualPalindrome(i) == TRUE)
		{
#ifndef __DEBUG__
			fprintf(fout, "%dn", i);
#else
			printf("%dn", i);
#endif
			count++;
		}
		if (count == N) break;
	}

#ifndef __DEBUG__
	fclose(fin);
	fclose(fout);
#endif

	return 0;
}

int isDualPalindrome(int num)
{
	int i;
	int changedNum[MAX];
	int pos;
	int temp;
	int palCount = 0;
	
	for (i = 2 ; i < = 10 ; i++)
	{
		pos = 0;
		temp = num;

		do
		{
			changedNum[pos++] = temp % i;
		} while(temp = temp / i);

		if (checkPalindrome(changedNum, pos) == TRUE)
		{
			palCount++;
			if (palCount >= 2)
			{
				return TRUE;
			}
		}
	}
	
	return FALSE;
}

int checkPalindrome(int num[], int pos)
{
	int i;

	for (i = 0 ; i < = pos / 2 ; i++)
	{
		if (num[i] != num[pos-i-1])
		{
			return FALSE;
		}
	}

	return TRUE;
}

주어진 수보다 큰 수 중에서 2~10진수로 표현했을때 두번 이상 palindrome(회문) 이 되는 수를 구하는 문제였다. 상당히 어렵게 생각하고 있었는데 실제로 해보니 의외로 쉽게 풀린 문제다.

'Developing' 카테고리의 다른 글

PHP에서 MySQL 다중 연결시 조심할 것  (0) 2008.12.30
USACO Training - Milking Cows  (0) 2007.11.24
파이썬 문자열 뒤집기  (0) 2007.11.17
  1. portupgrade 설치하기
    # cd /usr/ports/sysutils/portupgrade (바뀌기 이전 디렉토리)
    # cd /usr/ports/ports-mgmt/portupgrade (새로 바뀐 디렉토리)
    # make install clean

  2. cvsup 수행하기
    portupgrade를 수행하기 전에는 반드시 cvsup을 먼저 수행해야 합니다..
    링크참조 : cvsup 설치 및 업데이트

  3. 포트 데이터베이스 업데이트 하기
    # /usr/local/sbin/portsdb -Uu 또는
    # /usr/local/sbin/portsdb -Fu

    -F 옵션은 공식 싸이트에서 최신 INDEX파일을 받아와 포트 데이터베이스 파일인 INDEX.db파일을 생성합니다. 그러나 -U옵션은 make index를 실행하여 생성하기 때문에 오랜 시간이 걸립니다. 만약  /etc/make.conf에 특정 의존관계에 대한 매크로를 생성했다면 -U옵션을 이용하여 생성해야 합니다.
    일반적으로는 portsdb -Fu를 사용합니다.

  4. 업그레이드가 필요한 포트의 리스트 보기
    /usr/local/sbin/portversion -l "<"

  5. 업그레이드 수행하기
    /usr/local/sbin/portupgrade -arR

    업그레이드를 수행하기전에 /usr/posts/UPDATING 파일의 내용을 확인합니다. 추가적으로 수행해 주어야 하는 명령이 있을 경우가 있으며 따르지 않을 경우에는 업그레이드가 제대로 수행되지 않는 경우도 있습니다.

  6. 업그레이드 후 패키지 레지스트리 업데이트하기
    # /usr/local/sbin/pkgdb -F

    만약 업그레이드를 실패하였다면 다음 명령을 이용하여 강제로 업데이트합니다.
    # /usr/local/sbin/pkgdb -fu

'Operating' 카테고리의 다른 글

파이썬 모듈 설치  (0) 2007.12.24
리눅스용 네이트온 오픈 베타 시작  (0) 2007.09.23
구글 패키지에 스타오피스 8 추가  (0) 2007.08.18
/*
ID: ****
LANG: C
TASK: milk2
*/

/*#define __DEBUG__*/
#define MAX 1000000

#include 

int main()
{
	int N;
	int start, end;
	int **time;
	int count = 0;
	int modified = 0;
	int i,j;
	int milkTime = 0;
	int restTime = 0;
	int temp;

#ifndef __DEBUG__
	FILE *fin;
	FILE *fout;

	fin = fopen("milk2.in","r");
	fout = fopen("milk2.out","w");
	fscanf(fin, "%d", &N);
#else
	printf("input the number of farmers : ");
	scanf("%d", &N);
#endif

	time = (int**)malloc(sizeof(int*)*N);

	for(i=0 ; i < N ; i++)
	{
		time[i] = (int*)malloc(sizeof(int)*2);
#ifndef __DEBUG__
		fscanf(fin, "%d %d", &start, &end);
#else
		printf("input start time and end time.n[start time] [end time]n");
		scanf("%d %d", &start, &end);
#endif
		for (j=0 ; j < count ; j++)
		{
			if (start <= time[j][1] && end >= time[j][1])
			{
				time[j][1] = end;
				modified = 1;
			}
			if (end >= time[j][0] && start < = time[j][0])
			{
				time[j][0] = start;
				modified = 1;
			}
		}

		if (modified == 0)
		{
			time[j][0] = start;
			time[j][1] = end;
			count ++;
		}
		modified = 0;
	}

	for (i=0 ; i < count ; i++)
	{
		for (j=0 ; j < count ; j++)
		{
			if (time[i][0] <= time[j][1] && time[i][1] >= time[j][1])
			{
				time[j][1] = time[i][1];
			}
			if (time[i][1] >= time[j][0] && time[i][0] < = time[j][0])
			{
				time[j][0] = time[i][0];
			}
		}
	}

	for (i=0 ; i < count ; i++)
	{
		temp = time[i][1] - time[i][0];
		if (temp > milkTime)
		{
			milkTime = temp;
		}
	}

	for (i=0 ; i < count ; i++)
	{
		temp = MAX;
		for (j=0 ; j < count ; j++)
		{
			if (time[j][0] > time[i][1] && temp > time[j][0])
			{
				temp = time[j][0];
			}
		}

		if (temp == MAX)
		{
			continue;
		}

		temp = temp - time[i][1];

		if (temp > restTime)
		{
			restTime = temp;
		}
	}

#ifndef __DEBUG__
	fprintf(fout, "%d %dn", milkTime, restTime);
	fclose(fin);
	fclose(fout);
#else
	printf("the longest continuous time of milking : %dnthe longest idle time : %dn", milkTime, restTime);
#endif
	return 0;
}

매번 뻔한 코딩만하다보니 문제해결능력이 많이 떨어졌다는 것을 느낀다. 이번 문제는 여러 젖소가 우유를 짜는 시각이 주어지고, 최소한 한 젖소에서 우유를 짜는 가장 긴 시간과 전혀 우유를 짜지 않는 가장 긴 시간을 구하는 문제였다.

최소한 한 젖소에서 우유를 짜는 가장 긴 시간은 금새 구할 수 있었지만, 우유를 짜지 않는 가장 긴 시간을 구하는 것은 쉽게 나오지 않았다.

'Developing' 카테고리의 다른 글

USACO Training - Dual Plindromes  (0) 2007.12.15
파이썬 문자열 뒤집기  (0) 2007.11.17
이클립스에서 EUC-KR 문서 이용  (0) 2007.11.08

+ Recent posts