'GTK2+'에 해당되는 글 4건

  1. 2009.09.01 Gtk2::Calendar (1)
  2. 2009.06.06 [Tool] Cava Packager (3)
  3. 2009.03.10 이미지를 입혀보자 (Gtk2::Rc)
  4. 2009.01.07 해우소 세번째 이야기 (2)

Naver Perl Community & Study Cafe


2009.09.01 21:54

Gtk2::Calendar

Gtk2 모듈에 소속되어 있는 Calendar 모듈 을 소개하려 한다.

이 모듈은 뜻 그대로 달력 모듈이다.


일단 예제코드부터 먼저 보고 시작하도록 하자.





#!/usr/bin/perl -w

# 요기는 뭐 별로 신경쓰지 않아도 된다.
# Copyright (C) 1998 Cesar Miquel, Shawn T. Amundson, Mattias Gr?lund
# Copyright (C) 2000 Tony Gale
# 
# Copyright (C) 2003 by the gtk2-perl team (see the file AUTHORS for the full
# list)
# 
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Library General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
# 
# This library is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU Library General Public License for
# more details.
# 
# You should have received a copy of the GNU Library General Public License
# along with this library; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA  02111-1307  USA.
#
# $Header: /cvsroot/gtk2-perl/gtk2-perl-xs/Gtk2/examples/calendar.pl,v 1.7 2004/03/14 08:55:48 muppetman Exp $
#

# this was originally gtk-2.2.1/examples/calendar/calendar.c
# ported to gtk2-perl (and perl-ized) by rm

use strict;
use Gtk2;

use Glib ':constants'; 
 
use constant DEF_PAD => 10;
use constant DEF_PAD_SMALL => 5;

use constant TM_YEAR_BASE => 1900;

sub calendar_select_font # 폰트를 변경시켜주는 함수이다. 이부분도 중요하지는 않다.
{
	my $calendar = shift;

	my $fsd = Gtk2::FontSelectionDialog->new ('Font Selection Dialog');
	$fsd->set_position('mouse');

	$fsd->set_font_name ($calendar->get_style->font_desc->to_string);

	$fsd->signal_connect ('response' => sub {
		my (undef, $response) = @_;
		if ($response eq 'ok') {
			my $font_name = $fsd->get_font_name;
			return unless $font_name;
			$calendar->modify_font
				(Gtk2::Pango::FontDescription->from_string
				 	($font_name));
		}
		$fsd->destroy;
	});

	$fsd->show;
}


sub calendar_set_signal_strings
{
	my $sig_ref = shift;
	my $new_sig = shift;

	$sig_ref->{prev2}->set_text($sig_ref->{prev}->get_text);
	$sig_ref->{prev}->set_text($sig_ref->{curr}->get_text);
	$sig_ref->{curr}->set_text($new_sig);
}

sub create_calendar  # 핵심적인 함수이다. 달력을 생성해준다.
{
	my $window;
	my $vbox;
	my $vbox2;
	my $vbox3;
	my $hbox;
	my $hbbox;
	my $calendar;
	my @toggles;
	my $button;
	my $frame;
	my $separator;
	my $label;
	my $bbox;
	my $i;
  
    	my %signals = (); # 레이블을 쉽게 바꾸기 위해 signals 해쉬를 미리 만든다.
                           # 이 작업을 활용하면 상당히 편하게 코드 작성이 가능하다.   
	$window = Gtk2::Window->new("toplevel");
  	$window->set_title('GtkCalendar Example');
  
	$window->set_border_width(5);
	$window->signal_connect( 'destroy' => sub {
			Gtk2->main_quit;
		} );
	$window->set_resizable(FALSE);

	$vbox = Gtk2::VBox->new(FALSE, DEF_PAD);
	$window->add($vbox);

	#
	# The top part of the window, Calendar, flags and fontsel.
	#

	$hbox = Gtk2::HBox->new(FALSE, DEF_PAD);
	$vbox->pack_start($hbox, TRUE, TRUE, DEF_PAD);
  
	$hbbox = Gtk2::HButtonBox->new;
	$hbox->pack_start($hbbox, FALSE, FALSE, DEF_PAD);
	$hbbox->set_layout('spread');
	$hbbox->set_spacing(5);

	# Calendar widget
	$frame = Gtk2::Frame->new('Calendar');
	$hbbox->pack_start($frame, FALSE, TRUE, DEF_PAD);
	$calendar = Gtk2::Calendar->new; #  이 부분이 중요하다 달력을 생성한다.

	$calendar->mark_day(19);         #  19일에 진하게 표시를 한다.
	$frame->add($calendar);          #  frame 에 달력을 추가한다.
	$calendar->display_options([]);
         # 여기부터는 달을 바꾸거나, 날짜를 클릭할때 일어나는 여러 이벤트를 설정하였다.
	$calendar->signal_connect( 'month_changed' => sub {      # 달이 바뀌었을때
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'month changed: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'day_selected' => sub {       # 날짜를 선택했을 때
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'day selected: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'day_selected_double_click' => sub {  #날짜 더블클릭
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 
				'day selected double click: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'prev_month' => sub {         # 이전달 클릭
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'prev month: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'next_month' => sub {         # 다음달 클릭
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'next month: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'prev_year' => sub {          
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'prev year: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );
	$calendar->signal_connect( 'next_year' => sub {
			my ($year, $month, $day) = $calendar->get_date; 
			calendar_set_signal_strings($_[1], 'next year: '.
				sprintf("%02d/%d/%d", $month+1, $day, $year) );
		}, \%signals );

	$separator = Gtk2::VSeparator->new;
	$hbox->pack_start($separator, FALSE, TRUE, 0);

	$vbox2 = Gtk2::VBox->new(FALSE, DEF_PAD);
	$hbox->pack_start($vbox2, FALSE, FALSE, DEF_PAD);
  
	# Build the Right frame with the flags in

	$frame = Gtk2::Frame->new('Flags');
	$vbox2->pack_start($frame, TRUE, TRUE, DEF_PAD);
	$vbox3= Gtk2::VBox->new(TRUE, DEF_PAD_SMALL);
	$frame->add($vbox3);
         # 배열로 플래그를 만들어 플래그의 켜짐과 꺼짐에 따라 달력 모양을 바꿀 수 있다.
	my @flags = (
		'Show Heading',
		'Show Day Names',
		'No Month Change',
		'Show Week Numbers',
		'Week Start Monday',
	);
	for( $i = 0; $i < 5; $i++ )
	{
		$toggles[$i] = Gtk2::CheckButton->new($flags[$i]);
		$toggles[$i]->signal_connect( 'toggled' => sub {
				my $j;
				my $opts = [];
				for($j = 0; $j < scalar(@flags); $j++ )
				{
					if( $toggles[$j]->get_active )
					{
						push @$opts, $flags[$j];
					}
				}
				$calendar->display_options($opts);
			});
		$vbox3->pack_start($toggles[$i], TRUE, TRUE, 0);
	}
	foreach (@flags)
	{
		$_ =~ s/\s/-/g;
		$_ = lc($_);
	}
	# 폰트 교체 버튼 달력 전체의 폰트를 교체할 수 있다. 
	# Build the right font-button
	$button = Gtk2::Button->new('Font...');
	$button->signal_connect( 'clicked' => sub {
			calendar_select_font($_[1]);
		}, $calendar );
	$vbox2->pack_start($button, FALSE, FALSE, 0);

	#
	# Build the Signal-event part.
	# 여기는 시그널 이벤트 창이다. 
         # 위에서 날을 클릭하거나 달을 바꾸는 작업이 여기서 display 된다.
	$frame = Gtk2::Frame->new('Signal events');
	$vbox->pack_start($frame, TRUE, TRUE, DEF_PAD);

	$vbox2 = Gtk2::VBox->new(TRUE, DEF_PAD_SMALL);
	$frame->add($vbox2);
  
	$hbox = Gtk2::HBox->new(FALSE, 3);
	$vbox2->pack_start($hbox, FALSE, TRUE, 0);
	$label = Gtk2::Label->new('Signal:');
	$hbox->pack_start($label, FALSE, TRUE, 0);
	$signals{curr} = Gtk2::Label->new('');
	$hbox->pack_start($signals{curr}, FALSE, TRUE, 0);

	$hbox = Gtk2::HBox->new(FALSE, 3);
	$vbox2->pack_start($hbox, FALSE, TRUE, 0);
	$label = Gtk2::Label->new('Previous Signal:');
	$hbox->pack_start($label, FALSE, TRUE, 0);
	$signals{prev} = Gtk2::Label->new('');
	$hbox->pack_start($signals{prev}, FALSE, TRUE, 0);

	$hbox = Gtk2::HBox->new(FALSE, 3);
	$vbox2->pack_start($hbox, FALSE, TRUE, 0);
	$label = Gtk2::Label->new('Second Previous Signal:');
	$hbox->pack_start($label, FALSE, TRUE, 0);
	$signals{prev2} = Gtk2::Label->new('');
	$hbox->pack_start($signals{prev2}, FALSE, TRUE, 0);

	$bbox = Gtk2::HButtonBox->new;
	$vbox->pack_start($bbox, FALSE, FALSE, 0);
	$bbox->set_layout('end');

	$button = Gtk2::Button->new('Close');
	$button->signal_connect( 'clicked' => sub {
			Gtk2->main_quit;
		} );
	$bbox->add($button);
	$button->set_flags('can-default');
	$button->grab_default;

	$window->show_all;
}


Gtk2->init;

create_calendar;

Gtk2->main;

exit 0;


위에서 보면 $calender 객체를 사용하여 달력을 효율적으로 사용할 수 있다.

my ($year, $month, $day) = $calendar->get_date;

위의 작업은 선택한 날의 년, 월, 일을 얻게 해주는 작업으로

달력모듈 사용중 가장 많이 사용되지 않을까 싶다.

이건 하나의 예제 임으로 더 세부적인 동작을 알기 위해서는

http://gtk2-perl.sourceforge.net/doc/pod/Gtk2/Calendar.html

여기서 확인 바란다.


나의 경우에는 gtk2+로 다이어리를 만들어야 했기에 필수적으로 사용했지만

어디까지나 모듈을 사용하는것이라

세부적인 수정이 어렵다는 점에 아쉬움이 남았다.




하지만 이정도면 쓰는데 무리는 없을 듯!


flex에서 기본적인 달력모듈은.. 환상적이긴 했지만 말이다 ... -ㅁ-;
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1
2009.06.06 16:41

[Tool] Cava Packager





이번에 소개할 Tool은 Cava Packager 입니다.

예전에 perl mania 에서 소개(먼저 읽어보시면 좋습니다) 가 되었었는데

최근에 사용하게 되어, 탐구활동을 해봤습니다.




Cava Packager에 가면 프로그램에 대한 설명을 볼 수 있습니다.

처음 메인페이지에 있는 소개글을 간단하게 정리해볼께요~





Cava Packager


Cava Packager 는 어플을 개발하는데 있어

파일을 하나로 묶지 않는 방식으로  (non archiving packaging)

perl 5.8 또는 5.10 버전 윈도우 플랫폼 에서 제공 됩니다.

perl 스크립트 의 실행파일을 배포할 수 있도록 해주며,

ActivePerl and Strawberry Perl 에서는 테스트가 끝난 상태 라는 군요 :)

Dependency Scanning

Cava Packager는 자신이 작성한 Perl 스크립트 모듈들을 검사한 뒤에 

필요한 모듈들을 모두 포함 시켜줍니다.

Cava Package가 Perl 컴파일러로 오해하시는 분들이 간혹 있는데, 절때 아닙니다.

( Perl 컴파일러를 이야기하자면 오히려 PAR::Packer 쪽이 더 가깝지 않을까... 생각이 드는군요)

이러한 형식은 우리가 직접 작업을 해도 되는 부분인데

Perl 실행파일과 필요한 모듈만 빼내서 다른곳에 넣어주는것과 동일 하다는 거죠.


직접적으로 필요한 모듈만 빼는건 엄청난 노가다가 될 수 있는데,

그 모든것을 이 Cava Package가 알아서 해줍니다 :)


Pluggable Module Rules

어떤 모듈들은 단지 코드를 스캔해서 결정할 수 있는 것 보다 

더 많은 추가적인 의존성을 필요로 합니다. 

Cava Packager 는 의존된 모든 모듈들을 보장할 수 있는 방법도  제공되는군요.

같은 규칙을 모든 프로젝트에 적용할 수도 있군요~


Fast Application Start-Up


Cava Packager는 라이브러리들을 압축하지 않기에 프로그램을 빠르게 시작할 수 있습니다.

자신이 원한다면 압축을 할 수도 있습니다.


Flexible Packaging Method

의존적으로 함께 배치된 기본적인 Perl @INC 디렉토리 구조의 모듈들은 쉽게 작동되지 않습니다.

Cava Packager는 패키지의 일부 또는 프로그램에서 

모듈의 범위를 넓게 사용 할 수 있도록 필요한 방법을 제공하고 있습니다.


Included Help Files

프로그램에 도움말도 들어가는군요 !


Easy Resource Packaging

Cava Packager 는 스크립트에 필요한 resource 와 

데이터 파일을 포함할 수 있도록 간단한 방법을 제공합니다.



Multiple Executables

Cava Packager 는 같은 패키지에 여러개의 실행 파일을 만들 수 있습니다. 

이러한 실행 파일은 묶여진 모듈들, 스크립트 그리고 resources 들을 공유 할 수 있습니다.


No Dependency on Installed Perl

Cava Packager 는 자체적으로 perl이 설치되어 있지 않더라도 잘 돌아갑디다.

기본적으로 perl을 인스톨 할 수도 있더군요 

버전은 옛날 버전이긴 하지만 ^^;


Source Hiding

Cava Packager는 소스코드를 숨기는 것이 가능합니다.

선택 사항에 따라, 모듈의 소스 코드를 암호화 할 수 있습니다.

실행할 때는 그들의 소스 필터로 해독하여 사용합니다.

물론, 소스코드를 100% 보호할 수 있다고 가정할 수 없습니다.

이것은 어떤 어플도 가능하지 않겠지요 ㅋㅋ


Supports GUI and Console Applications


프로그램들은 윈도우 또는 콘솔 실행파일로 묶여 질 수 있습니다. 


Supported Platforms

윈도우 2000/XP/vista 에서 지원이 되는군요

다른 운영체제는 없습니다~ ㅡ.ㅠ





날림 번역이라 이해해 주시길,,




스샷!!




그리고 사용법에대한 설명을


cava 메인 페이지에서 찾다가 없어서 헤매고 있었는데


Help 에 보면 자세하게 잘 나와있더군요 털썩...




저 같은 경우에는 gtk2+로 만든 소스를 exe로 만들어 봤는데....


다른 곳으로 가지고 가도 실행이 안되더군요 ;ㅁ;


그래서 gtk2+에 관한 dll을 좀 추가시켰더니 되기는 하던데 아직 많이 불안합니다.



cava package는 wxWidgets 만 호환해주고 gtk2+는 왜 이리도 힘들게 만들어 놨단 말인가!!


업데이트 되었으면 하네요~

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 3
2009.03.10 03:53

이미지를 입혀보자 (Gtk2::Rc)


프로그램을 만들면서 배경이미지나 프레임에 들어가는 색을 입히는 작업도 중요하다.

밋밋한 회색 바탕을 광적으로 좋아하지 않는다면 말이다.



그래서 오늘 소개하고자 하는것은 Gtk2::Rc라는 모듈에 대해서 소개해보겠다.

처음에 Rc를 보고 엥? 이것이 무엇의 줄임말일까? 뭐지? 뭐지? 혼자 끙끙대다가...

확~ 떠오르는것이 있었으니 Resource!! 

그렇다. C로 작업할때도 이미지를 설정할 때 

리소스 파일( 파일명.rc)을 만들었던 기억이...



그러면 먼저 예제화면부터 보고 시작을 해보겠다.

이것은 gtk-study 가이드에 있는 샘플 프로그램으로써 Gtk2::Rc 가 적용되지 않는 화면이다.





이 프로그램은 소켓을 사용하여 슈렉에 나오는 멤버 shrek 와 donky가 서로 채팅을 할 수 있는 프로그램이다.

전체적인 느낌이 나쁘진 않지만 뭔가 빠진 느낌이 든다.

기왕 프로그램이니 배경화면도 그리고 채팅창도 버튼도 조금 이쁘게 꾸며보고 싶을 것이다.

그러면 소스에!! 단 한줄!!



이 한줄을 추가시킨 뒤 파일을 다시 한번 실행시켜보자




어떤가 전체 배경과 색 그리고 버튼의 이미지까지 예쁘게 변했다.

gtk모듈을 사용할 때 단 한줄로 이런것들이 가능하지만

사실 한줄의 의미는 

gtkrc라는 파일을 포함시킴으로 여기에 설정된 이미지와 각 프레임에 대한 설정들을

적용을 시키는것으로 gtkrc파일에는 설정들이 꼼꼼하게 담겨져 있기에 가능한 것이다.



중요한것은 이런것이 있다는것을 알게 됨으로써

Gtk2에서 이미지 적용이나 여타 다른 부분들은 

전혀 문제없다! 라는것을 잘 상기시키기 바란다^^




- 참고사항

- Gtk2-Perl - Table of Contents

- Gtk2-Perl Study Guide

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2009.01.07 10:18

해우소 세번째 이야기


작년 10월부터 블로그를 시작하였으니 어느덧 3달이나 지났다.

처음 블로그를 개설할때의 목표를 한번 다시 훓어봤지만...




전체적으로 perl에 대한 글을 쓰자 라는 전체 명제는 일단 맞아떨어 졌지만,

세부적인 계획들에 대한 포스팅은

수박 겉핧기 식으로 뛰엄뛰엄 기술하다보니 너무 뜬구름만 잡는것 같아 아쉬움이 컸다.



perl과 관련된 보안적인 부분을 많이 포스팅하고 싶었지만...

처음에 Underground Perl 을 열혈 포스팅 중 회사분중 한분이

Exploit은 블로그에 포스팅하면 안될텐데...

라는 사실을 듣고 띠융;;


그 후부터는 주제를 바꾸어서 ...

GTK+ 로 열심히 달리다...

배포문제에서 한번 Die하고 난뒤에 자연스레

GTK+가 손에서 멀어지게 되었다.


사실 GTK+는 언제든지 다시 잡으면 뭔가를 샤샤샥 만들 수 있을 것 같기도 한...

매력있는 모듈중의 하나랄까?

블로그에는 튜토리얼을 첫 부분만 간단하게 해석해 놓았지만

그 개념까지만 정확히 이해했다면 사용하는데는

전혀 지장이 없는 모듈이다.

대부분 GUI 를 wx 모듈로 갈아타는 추세지만,

GTK+를 시작했으니 막상 wx 모듈로 갈아타는 것이 쉽지는 않다.

시간이 될 때 계속해서 GTK+를 연구하고

배포문제도 계속적으로 생각해 봐야 할듯...





생각해보면 단시간에 정말 많은 모듈을 접한것 같다.

사실 모듈을 효율적으로 사용하려면,

정말 많은 삽질을 거쳐야 한다는것을 알기 때문에

perl에 관련된 문서들을 세세하게 기술해주신 perlmania 분들께 항상 고맙게 느끼고 감사하면서 산다.




개인적으로는 올블로그 부동의 1위 JEEN께 문서적으로 또는 개념적으로

많은 도움을 받았는데...

예전에는 블로그에 지속적으로 강좌도 하시더니 요즘에는 번역하시느라 

조금 뜸하신데 이 기회를 빌어 한마디 하자면,

좋은 모듈 하나 더 연구하셔서 어서 포스팅해주시길 후욱후욱.. 

개인 서버도 사용하게 해주시고 루트비번까지 알려주시다니

가끔 말은 까칠하지만 그래도 커뮤니티에서 좋아하는 순위 1위 JEEN님 ㅋ

밥한번 사야되는데 일본에 계시니 뭐.. 어쩔수 없...






커뮤니티에서 왕성한 활동을 하고 계시는 a3r0님은...

진정한 이시대의 perl 구루...

끊임없이 뿜어져나오는 지식의 포스를 막을 자는 없다 ㅋㅋ

개인적으로 친절하게(?) 열심히 가르쳐 주시고 ,

핵심을 꼭꼭 찝어서 정확하게 설명해 주시니

내가 추구하고자 하는 "권위있는 지식"의 결정판이라고 할까...

책을 내신다고 하셨는데 많이 구입한 뒤, 주변 사람들한테 돌려야 할듯 후후

a3r0님께도 정말 감사합니다!




국내에서 perl 커뮤니티를 이끄는 태풍의 눈 keedi님 

개인적으로 별로 뵙지도 이야기도 많이 나눠보지는 못했지만,

a3r0님과 맞먹는 포스가 느껴지는 끝없는 지식, 

그리고 끊임없이 노력하시는 모습 그 자체에 많은 자극을 받았다.

몸은 망가지셔도 일은 끝까지 하시는 모습;; 몸도 좀 챙기시길;;

따뜻하게 주변사람을 대하는 모습이 너무나 멋져 보인다는...

나중에 perl관련 회사 설립하면 저 데려가 주시기로 한거 잊지 마시길~ ㅋㅋ




keedi님과 함께 커뮤니티를 이끄는 perl 커뮤니티의  초 간지남 saillinux님

야성적인 외모뒤에 숨겨진 자상함과 부드러움은...

언벨런스의 극치를 달리는... 죄송;;

saillinux님 정도 실력만 되어도 좋을듯 ㅠㅠ 

지난해말쯤에 야후 코리아에 입사하셔서 열심히 일하시는 중!

예전에는 블로그도 적으시다 요즘에는 많이 뜸하신듯~

그래도 perlmania 기술문서를 보면 saillinux님의 문서가 간간히 보인다능..

개인적으로 편하고 형같은 느낌이라 친하게 지내고 싶네용 후후




perl 커뮤니티의 기쁨조를 맡고 계시는 하얀_고양이님

나는 이런 멋진 사람이 존재한다는것을 이제서야 알았다.

perl에 관련된 것은 하나도 못 배웠지만...

더 멋진것을 많이 배웠...

JEEN님과 함께 커뮤니티를 웃음바다로 만들어주는 오덕파워가 남다르신 하얀_고양이님

사실 실력도 있으시니 저런 여유가 생겨나는.. 클클




항상 irc 방을 지켜주시는 소중한 누님 cate^^님

IT업계에서 찾기 힘든 여성분이라 가만이 있으셔도 존재감 있는듯.. 

흐~ 부러운 포스~

공부도 많이 하고 책도 많이 읽고 경재력있고 일도 잘하시는

팔방미인 내실있는 cate^^누님

누님이 이제 남자친구가 필요합니다. 

관심있으신분 댓글달면 전화번호 뿌려드립;; (억;; 찾아오실듯;;)

동생같이 잘 챙겨주셔서 너무나 고맙다능 ㅋ





조용하면서도 활기있는 흑엽님

비슷한 시기에 커뮤니티에 같이 와서 그런지 경쟁의식이 ㅋㅋ

귀여운 외모에 밝은 얼굴로 항상 주변에 사람들이 많을듯 흠흠

가끔 흑엽님의 넓은 지식이 부럽기도...

막강한 추진력이 있으신터라 뭔가를 만들기 시작하면 끝장을 보시는 듯

앞으로도 저랑 잘 지내시죵 ㅋㅋ




항상 perl방에 상주하지만 모니터링만하시는 envi님

TWOA 행사때 한번 뵙고는 그 뒤로는 대화 나눌 기회도 많이 없었던...

C++ 프로그래머라 시스템쪽 지식이 넓고

기술을 빨리 습득하는 명쾌함을 가지신 듯

Mechanize 모듈로 회사 출석체크를 하신다고 하셨을 때 

그 생각의 발상에 별 5개 드려도 충분하다는...

이젠 너무 조용히 있지 마시고 말도 좀 하시길~

perl방에서 에머렛님 다음으로 가장 젊은피~






감사의 말을 적다보니...

회원들 개개인의 소개를 해버린듯;;


여기서 이야기 못한 분들도 있지만...

한가지 공통점은 다들 너무나 너무나 괜찮으신 분들이라는...

perl 커뮤니티는 당분간은 하지 않지만



2009년 3월 9일 Seoul.pm 첫 모임 Orientation을 시작으로 다시 커뮤니티 발동!!

참여하고 싶으신분들은 언제나 오픈되어 있는...






2009년 perl 커뮤니티도 번창하고, 

젊은분들도 많이 들어 오시고~

커뮤니티분들 모두 일치월장하시고~

perl을 국내에 더욱 더 알릴 수 있는 한해가 되길...

 



나도 실력이 좀 많이 상승되고....ㅋ

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2


티스토리 툴바