[EFL 소식] EFL 1.1/1.5 베타 배포 (2011.11.28)

EFL, Enlightenment 2011. 11. 30. 08:44 Posted by 알 수 없는 사용자
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

안녕하세요? 천재태지 서주영입니다.
EFL 1.1/1.5 알파가 배포된지 2주가 채 안돼서 베타 버전이 배포되었습니다.
심각한 버그 수정 등을 거쳐 곧 정식 1.1/1.5 버전이 나올 것 같군요 :)

EFL 1.1/1.5 베타 배포

2011년 11월 28일 오전 10시

칼슨 하이츨러- 2011년 11월 28일 오전 10시

여러 Enlightenment 컴포넌트의 베타 버전을 배포합니다.

  • Eina 1.1.0 - [GZ] [BZ2]
  • Eet 1.5.0 - [GZ] [BZ2]
  • Evas 1.1.0 - [GZ] [BZ2]
  • Ecore 1.1.0 - [GZ] [BZ2]
  • Embryo 1.1.0 - [GZ] [BZ2]
  • Edje 1.1.0 - [GZ] [BZ2]
  • Efreet 1.1.0 - [GZ] [BZ2]
  • E_dbus 1.1.0 - [GZ] [BZ2]
  • Eeze 1.1.0 - [GZ] [BZ2]
  • Expedite 1.1.0 - [GZ] [BZ2]
  • Evas Generic Loaders 1.1.0 - [GZ] [BZ2]
아래는 원문입니다.
출처 : http://www.enlightenment.org/p.php?p=news/show&l=en&news_id=36

New EFL release cycle 1.1/1.5 BETA

Nov 28, 2011 at 10:00 AM

Carsten Haitzler - Nov 28, 2011 at 10:00 AM

We'd like to announce a new release cycle beta release of several Enlightenment components

  • Eina 1.1.0 - [GZ] [BZ2]
  • Eet 1.5.0 - [GZ] [BZ2]
  • Evas 1.1.0 - [GZ] [BZ2]
  • Ecore 1.1.0 - [GZ] [BZ2]
  • Embryo 1.1.0 - [GZ] [BZ2]
  • Edje 1.1.0 - [GZ] [BZ2]
  • Efreet 1.1.0 - [GZ] [BZ2]
  • E_dbus 1.1.0 - [GZ] [BZ2]
  • Eeze 1.1.0 - [GZ] [BZ2]
  • Expedite 1.1.0 - [GZ] [BZ2]
  • Evas Generic Loaders 1.1.0 - [GZ] [BZ2]

[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

[EFL 소식] EFL 1.1/1.5 알파 배포 (2011.11.16)

EFL, Enlightenment 2011. 11. 26. 01:41 Posted by 알 수 없는 사용자
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

안녕하세요? 천재태지 서주영입니다.
오랜만에 EFL 배포 소식을 전합니다. 지난 1월 29일 1.0 배포 및 5월 25일 1.0.1 배포 이후 첫 배포 버전입니다.
라이브러리 대부분은 그동안 변경량이 많았기 때문에 1.0.2 가 아닌 1.1 로 버전이 뛰었습니다.
eet 는 1.4.1 에서 1.5.0 으로 버전업되었습니다.
그리고 지난 1.0.1 버전에 없던 expedite 과 evas generic loaders 가 추가되었습니다.

참... 지금 이 글을 작성하는 시점엔 이미 1.1/1.5 베타가 나왔군요 :)
한 줄 밖에 안되지만, Enlightenment.org 공식 웹사이트에 올라온 글을 간단히 번역해봤습니다.

새로운 EFL 릴리스 주기 1.1/1.5 알파

2011년 11월 16일 오전 10시

칼슨 하이츨러- 2011년 11월 16일 오전 10시

여러 Enlightenment 컴포넌트의 새로운 알파 릴리스 주기를 시작합니다.

  • Eina 1.1.0 - [GZ] [BZ2]
  • Eet 1.5.0 - [GZ] [BZ2]
  • Evas 1.1.0 - [GZ] [BZ2]
  • Ecore 1.1.0 - [GZ] [BZ2]
  • Embryo 1.1.0 - [GZ] [BZ2]
  • Edje 1.1.0 - [GZ] [BZ2]
  • Efreet 1.1.0 - [GZ] [BZ2]
  • E_dbus 1.1.0 - [GZ] [BZ2]
  • Eeze 1.1.0 - [GZ] [BZ2]
  • Expedite 1.1.0 - [GZ] [BZ2]
  • Evas Generic Loaders 1.1.0 - [GZ] [BZ2]
아래는 원문 내용입니다.
출처 : http://www.enlightenment.org/p.php?p=news/show&l=en&news_id=35

New EFL release cycle 1.1/1.5 ALPHA

Nov 16, 2011 at 10:00 AM

Carsten Haitzler - Nov 16, 2011 at 10:00 AM

We'd like to announce a new release cycle alpha release of several Enlightenment components

  • Eina 1.1.0 - [GZ] [BZ2]
  • Eet 1.5.0 - [GZ] [BZ2]
  • Evas 1.1.0 - [GZ] [BZ2]
  • Ecore 1.1.0 - [GZ] [BZ2]
  • Embryo 1.1.0 - [GZ] [BZ2]
  • Edje 1.1.0 - [GZ] [BZ2]
  • Efreet 1.1.0 - [GZ] [BZ2]
  • E_dbus 1.1.0 - [GZ] [BZ2]
  • Eeze 1.1.0 - [GZ] [BZ2]
  • Expedite 1.1.0 - [GZ] [BZ2]
  • Evas Generic Loaders 1.1.0 - [GZ] [BZ2]

[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]
안녕하세요? 천재태지 서주영입니다.

ecore_timer 는 EFL 에서 사용하는 타이머입니다.
타이머에 원하는 주기와 콜백을 설정해놓으면 매 주기마다 콜백이 불리게 됩니다. 타이머는 어플리케이션 제작 시에 흔히 사용하기 때문에 EFL 에서도 타이머를 제공합니다.

timer 를 생성하는 함수는 아래와 같습니다.
EAPI Ecore_Timer *                 
ecore_timer_add(double        in,  
                              Ecore_Task_Cb func,
                              const void   *data)
첫번째 인자로 double 형으로 주기를 입력 받습니다. 두번째 인자로 주기마다 불릴 콜백 함수를 입력받고, 마지막에는 콜백함수에 넘겨줄 사용자 데이터를 입력받습니다.

[유의사항 1 - 타이머의 주기]
기본적으로는 정해놓은 주기마다 콜백이 불리지만, 한가지 유의해야할 점은, 정확하게 해당 주기 마다 타이머가 불리는 것이 아니라
해당 주기의 시간이 초과했을 때 콜백이 불린다는 겁니다. 즉, 주기를 1.0 초로 설정해놓으면 최초 시간의 1.01 혹은 1.02 초 뒤에 콜백이 불릴 수 있다는 것입니다. 이 점을 잘 고려해서 사용해야 합니다.

[유의사항 2 - 타이머 종료]
타이머를 종료하는 방법은 두 가지가 있습니다.
첫번째는 ecore_timer_del() 을 이용하는 방법이고 두번째는 타이머에 걸어둔 콜백에서 ECORE_CALLBACK_CANCEL 을 리턴하는 방법입니다.  
ecore_timer_del() 은 원하는 시점에 타이머를 종료하는 방법인데, 이 함수의 원형은 아래와 같습니다.
EAPI void *                         
ecore_timer_del(Ecore_Timer *timer) 
ecore_timer_add() 를 사용할 때 리턴받은 포인터를 ecore_timer_del() 에 인자로 넣어주면 됩니다.

그리고
타이머 콜백에서 ECORE_CALLBACK_CANCEL 을 리턴하는 경우 타이머를 더이상 사용하지 않고 폐기시키겠다는 의미입니다. 만약 타이머를 계속 돌리고 싶다면, ECORE_CALLBACK_RENEW 를 리턴하시면 됩니다.

이 두가지 용법을 알고 상황에 맞게 적절하게 사용하셔야 합니다. 

유의사항 3 -  타이머 변수 처리)
이번 유의사항이 가장 중요한 겁니다. 타이머에 대한 포인터를 변수에 저장해놓을 때,
타이머를 삭제한 경우 타이머 포인터를 NULL 로 초기화해줘야 합니다.
예를 들어, 아래와 같은 코드가 있다고 했을 때
Ecore_Timer *my_timer = ecore_timer_add(1.0, _my_timer_cb, NULL);
...
...
if (my_timer)
   ecore_timer_del(my_timer);
ecore_timer_del() 을 실행하는 순간 타이머가 종료됩니다.
그런데 만약 ecore_timer_del() 을 한 뒤에 다시 my_timer 를 체크하고 ecore_timer_del() 을 실행하면 어떻게 될까요?
 Ecore_Timer *my_timer = ecore_timer_add(1.0, _my_timer_cb, NULL);
...
...
if (my_timer)
   ecore_timer_del(my_timer); ---> (1)
...
...
if (my_timer) ---> (2)
   ecore_timer_del(my_timer);
얼핏 생각하면 이미 타이머가 종료되었기 때문에 ecore_timer_del() 은 아무것도 하지 않을 것 같지만, 실제로는 아래와 같은 에러 메시지를 출력합니다.
ERR<6750>:ecore ecore.c:441 _ecore_magic_fail() 
*** ECORE ERROR: Ecore Magic Check Failed!!!
*** IN FUNCTION: ecore_timer_del()
ERR<6750>:ecore ecore.c:451 _ecore_magic_fail()   Input handle is wrong type
    Expected: f7d713f4 - Ecore_Timer (Timer)
    Supplied: 008c2dc1 - <UNKNOWN>
ERR<6750>:ecore ecore.c:454 _ecore_magic_fail() *** NAUGHTY PROGRAMMER!!!
*** SPANK SPANK SPANK!!!
*** Now go fix your code. Tut tut tut!
아주 자극적인 메시지 입니다. EFL 의 창시자인 Rasterman 의 말에 따르면 '자극을 받아서 어플리케이션을 고치도록 이런 메시지를 만들었다!'라고 합니다. 이 메시지를 보면 기분이 언짢아지겠죠...? 일반적인 개발자라면 메시지를 보고 원인을 찾아보고 문제를 해결하려고 하지만, 신기하게도 대부분 이런 경고를 무시합니다.

이 문제가 발생한 원인은, 위 코드에서 (1) 번 과정에서
my_timer 가 가리키는 타이머 자체는 종료시켰지만, 어플리케이션에서 로컬에 저장하고 있는 my_timer 라는 포인터 변수의 값은 그대로 있기 때문입니다. 즉, 타이머를 종료시킨 후에는 my_timer 가 쓸데없는 곳을 가리키게 됩니다. 참고로 이를 dangling pointer 라고 합니다.
그렇기 때문에 (2) 번 과정에서 my_timer 에 쓸데없는 값일지라도 값이 있기 때문에 조건문 안으로 들어가서 ecore_timer_del() 을 수행하게 됩니다. 그런데 my_timer 가 가리키는 곳에는 타이머가 없기 때문에 위와 같은 에러 메시지를 출력합니다.

그러므로 타이머를 종료할 때는 타이머를 가리키는 변수를 항상 NULL 로 초기화해야 합니다.
Ecore_Timer *my_timer = ecore_timer_add();
...
...
if (my_timer)
  {
     ecore_timer_del(my_timer);
     my_timer = NULL;
  }
그리고 ecore_timer_del() 이 아니라 콜백의 리턴값을 이용하여 타이머를 종료할 때도 타이머를 가리키는 변수를 항상 NULL 로 초기화해야 합니다.
Eina_Bool
_my_timer_cb(void *data)
{
   my_timer = NULL;
   return ECORE_CALLBACK_CANCEL;
}
이는 비단 EFL 의 문제가 아니라 C 언어를 사용하는 프로그램에서 발생하는 근본적인 문제입니다. 그러므로 앞으로는 이런 종류의 상황에 접했을 때 변수를 적절하게 초기화하는 센스를 발휘하기 바랍니다.

감사합니다. 
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

[EFL] elementary 라이브러리에서 els, elc, elm, elu 란?

EFL, Enlightenment 2011. 10. 14. 03:56 Posted by 알 수 없는 사용자
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

안녕하세요? 천재태지 서주영입니다.


EFL 에서 widget 에 해당하는 elementary 라이브러리를 개발하다보면 src/lib 디렉토리에 있는 파일 이름이 왜 els, elc, elm, elu 로 시작하는지 궁금하실겁니다.
이에, 간단히 설명을 해봅니다.

  • els : elementary smart object
    elementary 내부적으로 사용하는 smart object 입니다.
    예를 들면, diskselector, entry, gengrid, genlist, list, map, scroller 등의 widget 은 내부적으로 scroller 를 가지고 있습니다. 이 때, scroller 에 해당하는 공통적인 코드를 els_scroller 로 만들어놓은 것이 els widget 입니다. 그리고 이를 다른 widget 이 사용합니다. 즉, els widget 은 elementary 내부에서 공통적으로 사용되는 smart object 입니다. 어플리케이션에서 직접 사용하지 않습니다.
    els_box, els_icon, els_scroller 등이 있습니다. 
    참고로 elm_scroller widget 도 내부적으로 els_scroller 를 사용하고 있습니다.
  • elm : elementary widget
    일반적인 widget 입니다.
    actionslider, button,  bubble, check, entry, gengrid, genlist, icon, image, label, list 등이 있습니다.
  • elc : elementary collector widget
    여러 widget 을 합쳐놓은 widget 입니다. 한 widget 이 내부적으로 다른 elm widget 을 사용할 때 주로 쓰이는 용어입니다.
    anchorblock, ctxpopup, fileselector, naviframe 등이 있습니다.
  • elu : elementary utility
    widget 이라기보다는 편의를 위하여 제공되는 기능입니다. 
    현재는 elu_ews_wm 밖에 없습니다. EWS는 Ecore + Evas Single Process Windowing System 을 의미하며, 이 기능이 활성화 되어 있으면 elementary widget 이 내부적으로 window manager 를 구현해줍니다.  

위 규칙이 엄격하지는 않습니다만, 대략적으로 이 규칙을 따라주면 나중에 코드를 이해하고 사용하기에 좋을 것입니다. 물론 어플리케이션 프로그래머들은 이 규칙을 알 필요가 없습니다.

감사합니다. 

[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

[EFL] 최신 EFL 소스코드 다운로드

EFL, Enlightenment 2011. 10. 13. 00:26 Posted by 알 수 없는 사용자
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]
 
안녕하세요? 천재태지 서주영입니다.
 
EFL 을 사용하기 위해 최신 소스코드를 다운로드 받는 방법을 설명합니다. 물론 패키지를 받아서 바로 설치할 수도 있지만, 개발자를 위해 소스코드를 받는 방법 부터 시작하겠습니다.


1. SVN 설치

최신 EFL 소스코드는 SVN(SubVersioN) 이라는 도구를 이용하여 다운받을 수 있습니다.
우선 SVN 을 설치합니다.
 
$ sudo apt-get install subversion

2. EFL 소스코드 다운로드

아래 명령어를 이용하여 EFL 소스코드를 다운로드합니다.
checkout 명령어 대신에 약자인 co 를 사용하셔도 됩니다.

$ svn checkout http://svn.enlightenment.org/svn/e/trunk


위 주소 이외에도 아래 주소를 사용하실 수 있습니다.
http 대신 https 입니다.

 $ svn checkout https://svn.enlightenment.org/svn/e/trunk

만약 커미터(committer)라면 다음과 같이 소스코드를 받으시면 됩니다.
중간에 "var" 가 들어가니, 주의해주세요.
그리고, ~/.ssh 에 자신의 private key 가 있어야 합니다.

 $ svn checkout svn+ssh://{id}@svn.enlightenment.org/var/svn/e/trunk
예) $ svn checkout svn+ssh://seoz@svn.enlightenment.org/var/svn/e/trunk 

3. EFL 소스코드 최신 버전 업데이트

한번 svn checkout 을 통하여 소스코드를 통째로 받아오면,
그 다음부터는 svn update 를 통하여 최신 버전으로 업데이트 할 수 있습니다.

 ~/trunk $ svn update

4. Trouble Shooting

A. 아래와 같이 Host not found 에러 메시지가 나오면 경로를 잘못 치지 않았는지 확인바랍니다.

svn: OPTIONS of 'http://svn.enlightenmente.org': Could not resolve hostname `svn.enlightenmente.org': Host not found (http://svn.enlightenmente.org) 

B. 혹시 네트워크 접속을 위해 proxy 를 사용한다면 Subversion 의 proxy 설정을 해주세요.
~/.subversion/servers 파일을 아래와 같이 수정하시면 됩니다.
http-proxy-host 는 proxy 서버 아이피이고, http-proxy-port 는 proxy 서버 포트입니다.

[global]
http-proxy-host = 192.168.1.10
http-proxy-port = 8080

C. 만약 checkout 이나 update 중에 아래 에러 메시지가 발생하면, checkout 받은 디렉토리에서 svn update 를 다시 실행해주세요.
 
svn: REPORT of '/svn/e/!svn/vcc/default': Could not read response body: Connection reset by peer (http://svn.enlightenment.org)

 
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

[블로그 번역] Enlightenment, DR17, EFL 이란?

EFL, Enlightenment 2011. 10. 12. 23:40 Posted by 알 수 없는 사용자
[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]


안녕하세요? 천재태지 서주영입니다.
 

Enlightenment 를 기반으로 한 리눅스 배포판 Bodhi Linux 의 리더인 JeffHoogland 가 그의 블로그에 "Enlightenment, DR17 and EFLs" 라는 글을 포스팅했습니다.
Enlightenment 가 뭔지, DR17 은 또 뭔지, EFL 은 도대체 뭔지, 그리고 서로 뭐가 다른지 사람들이 많이 헷갈려하는데, 명쾌하게 정리해줬네요.
저도 예전부터 올리려고 했던 글인데 JeffHoogland 가 먼저 올렸네요 ^^
제가 쓰려고 했던 내용과 거의 같아서 그냥 번역만 해서 올립니다 :)



제프 후글랜드 2011/06/10

제 블로그를 봤었다면, 제가 Enlightenment 데스크탑의 열렬한 팬이라는 것을 알고 있을겁니다. Enlightenment 를 사용해보지 않은 분들을 위해 설명을 드리면,

"Enlightenment 는 Linux/X11 등을 위한 윈도우 매니저일뿐만 아니라, 개발 라이브러리 모음이기도 합니다. 이 개발 라이브러리는 기존의 윈도우 매니저는 물론이고 낡은 툴킷을 사용하느라 고생을 하는 대신 쉽게 예쁜 사용자 인터페이스를 작성할 수 있게 해줍니다."


기술과 관련된 이야기를 할 때, 용어를 정확하게 사용해야합니다. 그런데 Enlightenment 와 관련된 이야기를 해보면, 사람들이 Enlightenment, DR17, EFL 을 헷갈려 합니다. 이 세가지는 뭐가 다를까요?

Enlightenment - 프로젝트의 원래 이름입니다. 오늘날 Enlightenment 라고 하면, 특정한 한 부분을 이야기하는게 아니라 이 프로젝트를 전반적으로 가리킵니다.

DR17 - E17 이라고 불리기도 하며, Enlightenment 데스크탑/윈도우 매니저의 최신 버전을 칭합니다. 아직 한참 개발중입니다. 현재 안정된 버전은 DR16 입니다. (역자 주: DR17 은 이름만으로 보면 단지 DR16 의 업버전이라고 오해할 수도 잇지만, 둘은 전혀 다른 윈도우 매니저입니다. 심지어 DR17 을 시작할 때, DR16 의 코드를 한줄도 사용하지 않았습니다.)

EFLs - "Enlightenment Foundation Libraries" 를 뜻하며 Enlightenment 데스크탑에 필요한 기반이 되는 라이브러리 모음입니다. Enlightenment 데스크탑의 핵심 부분이지만 그렇다고 EFL 이 Enlightenment 데스크탑은 아닙니다. (역자 주: Enlightenment 데스크탑이 EFL 라이브러리를 사용합니다.) 쉽게 말해 EFL 과 Enlightenment 데스크탑의 관계는 GTK 와 그놈(Gnome) 그리고 QT 와 KDE 의 관계와 같습니다.

바라건대 여러분이 Enlightenment 의 용어를 이해하는데 도움이 되었으면 좋겠습니다.

~제프 후글랜드

[ EFL 게시물 목차 : http://yellowbirds.tistory.com/1 ]

Enlightenment, EFL

EFL, Enlightenment 2011. 10. 11. 01:29 Posted by 알 수 없는 사용자
안녕하세요? 천재태지 서주영입니다.
 

앞으로 Enlightenment 윈도우 매니저를 사용하는 방법과 EFL 로 어플리케이션 및 widget 을 개발하는 글을 작성할 예정입니다.
이 강좌는 우분투 11.04 를 기반으로 합니다. 
단, 가능하면 Ubuntu 10.04 와 10.10 에서도 테스트를 하도록 하겠습니다.

< 메 뉴 >

1. 소개
    1.1 EFL 이란? (작성중)

2. 기초
    2.1 최신 EFL 소스코드 다운로드

    2.2 EFL 소스코드 빌드 및 설치 

3. Enlightenment (E17) 데스크탑 매니저
    3.1 리눅스 데스크탑에서 Enlightenment (E17) 사용하기
    3.2 기본 사용
        - 기본 사용 방법 (작성중)
        - 단축키(key bindings) 설정하기 (작성중)

    3.3 모듈을 사용하여 편리한 환경 구축하기
        - 모듈 사용 법 기초 (작성중)
        - everything 모듈 (작성중)
        - comp-scale 모듈 (작성중)
        - engage 모듈 (작성중)

4. EFL 개발
    - 간단한 어플리케이션 만들기 (작성중)
    - evas 의 hint_weight, hint_align 개념 (작성중)
    - [eina] eina_list, eina_inlist (작성중)
    - Editje 빌드 및 설치 (작성중)
    - [EFL] elementary widget focus 정책 변경 (mouse down -> clicked)
    - [EFL] EFL 문서화 작업 및 관련 글 번역
    - [EFL] elementary 라이브러리에서 els, elc, elm, elu 란?
    - [EFL] ecore_timer 사용 시 흔히 하기 쉬운 실수 및 올바른 사용법

5. 뉴스


   - [EFL 소식] EFL 핵심 라이브러리 알파 배포 (2010.08.21)
   - [EFL 소식] EFL 핵심 라이브러리 베타 배포 (2010.10.03)
   - [EFL 소식] EFL 핵심 라이브러리 베타2 배포 (2010.11.12)
   - [EFL 소식] EFL 핵심 라이브러리 베타3 배포 (2010.12.03)
   - [EFL 소식] EFL 핵심 라이브러리 1.0 배포 (2011.1.29)
   - [주영 소식] 오픈소스 Enlightenment 의 공식 커미터(committer)가 되었습니다.
   - [EFL 소식] EFL 핵심 라이브러리 1.0.1 배포 (2011.5.25)
  
- [EFL 소식] EFL 1.1/1.5 알파 배포 (2011.11.16)
   - [EFL 소식] EFL 1.1/1.5 베타 배포 (2011.11.28)

6. Tips

7. 블로그 번역
    - [블로그 번역] Enlightenment, DR17, EFL 이란?


8. 관련 블로그 포스트