문단레벨로 요약했다.
사실 지 맘대로 요약 -_-

Chapter1. Introduction


대부분의 영역에서 좋은 아이디어들이 사장되는 근본적인 이유는 타성이다.
유닉스에서는 X가 나온 이래 다양한 툴킷들이 존재한다.
그런 툴킷들중 유명한 몇몇은 여러 좋은 점들이 있으나, 만약 애니메이션, 투명 컴포넌트등의 막강한 라이브러리를 원한다면 EFL로 오라
EFL은 단지 툴킷이 아니라 툴킷 그 이상을 얻을 수 있다.

A Little history
1999년도에 Enlightment window manager(version 16)는 혁신적인 그래피컬 이펙트를 보여주었다.
Enlightment는 Gnome과 다른 window manager에 영향을 미쳤고 version 16은 여전히 제공되고 있다.
Enlightment v17(Desktop shell이라고 우리가 부르는)이 나오지 않는 것은 단순한 window manager가 아닌 Enlightment Foundation Library라고 하는 라이브러리가 되어 다른 응용 프로그램들이 쓸 수 있도록 제공하기 위함이다.
사람들이 Enlightment를 새로운 데스크탑 환경으로 인식하고 EFL을 또하나의 Toolkit으로 인식하지만, 그렇지 않다는 것을 알리는 것이 이 문서의 초점이다.

관련문서
이 문서는 EFL의 컨셉을 설명하니 자세한 내용은 다음 문서를 참조하라.
 - The EFL Cookbook
 - The EWL Book Reference
 - The Edje Book

EFL Cookbook은 대부분의 EFL Component를 다룬다.
EWL Book Reference는 EFL이 제공하는 Widget들을 다룬다.
Edje Book은 Edje Layout engine을 사용해 Themeable한 EFL을 개발하는데 필요한 내용을 다룬다

그밖의 레퍼런스들은 다음과 같다

* The Ecore Reference
* The Edje Reference
* The Eet Reference
* The Evas Reference
* The EWL Reference

Obtaining the EFL libraries
* Getting binary packages for your distribution.
* Downloading snapshots of selected libraries.
* Downloading directly from CVS.
* Running/installing the E-live CD.

공식적인 릴리즈는 없으니 1번은 추천하지 않고, 2,3,4번이 좋겠다.

Chapter 2.The EFL structure

EFL의 대부분의 라이브러리들은 계속 개발중이다.
이 문서는 유용한 기본라이브러리만 주로 다룰 것이다.

Organization of the Libraries
다수의 라이브러리간의 관계를 표현하기 위해 아래와 같은 박스 스택을 많이 사용하지만 EFL은 박스 스택으로 이해하기 좋은 구조는 아니다.
EFL은  그림 1과 같이 같이 표현하긴 해도, Low level library들도 직접 사용될 수 있기 때문에 이렇게 레이어로 표현된 그림은 EFL을 제대로 표현하지 못한다.

이 그림에서 보다시피 각 라이브러리는 하이러키가 존재하는 것이 아니라 각자 사용될 수 있다. APP1같은경우는 NON GUI 어플리케이션의 예라고 볼 수 있다.

Brief description of each EFL library
먼저 각 라이브러리를 간단히 정리하고 넘어가자
 The Evas canvas  에바스는 파워풀한 캔바스로, 캔바스 위젯에서 진일보하여 redrawing없이 그려진 엘리먼트들을 이동,크기변경하는 것을 지원한다.
 The Edje Layout Engine  Edje Layout Engine은 C코딩과 관계없이 GUI파트를 구성하며, 어쨌든 이해는 안가지만 독자적인것이란다. -_-;
 The Ecore glue library data structure,  IPC, networking등 glib과 유사한 모듈이다.
 The Eet Storage library 대부분 theme에 대한 압축형태의 파일을 제공하고 풀어서 쓰는데, Eet를 사용하 Edje는 변경전에는 압축해제하지 않도록 제공하는 Theme 저장소를 위한 라이브러리다.
 The Embryo Scripting Language Edje를 위해 프로그래머블한 theme을 구성하고 싶으면, 추가적으로 사용할 수 있는 스크립트 언어이다.
 The Epeg Thumbnailing Library  JPEG에 특화된 썸네일 라이브러리
 The Epsilon Thumbnailing Library  일반적인 파일을 다루는 썸네일 라이브러리
 The Esmart Utility Library  Edje가 모든 걸 하면 좋겠지만, 추가적인 기능(vbox같은 컨테이너 기능, transparenc등)들을 제공하기 위한 라이브러리로, Canvas에 관한건 Evas에 있고 그 외는 각 라이브러리 파일로 어플이 필요한것만 포함해서 쓸 수 있다.
 The EWL Widget Set  GTK 같은 툴킷
 The Imlib2 Image Library 정확히 EFL Library는 아니지만 아주 빠른 이미지 라이브러리로 Evas와 긴밀히 엮여있다.

그 밖의 다른 EFL라이브러리들은 개발중이다(Emotion같은)

Chapter3. Understanding the Evas Canvas

Evas가 Canvas라고 했는데 그렇다면 다른 Canvas위젯과는 뭐가 다른지 정리해보았다.
Evas기반 application이 적은 resource를 사용하는 멋진 application으로 생각될 수 있으나, 이것은 완전히 새로운 컨셉이다.

마지막 항목에서 말하듯, Evas는 Canvas Widget에 비해 매우 빠르다.

What "Image based" means
computer가 그래픽을 다루기 시작하면서, pixel에 기반한 이미지들을 저장하고 이를 화면에 뿌리는 방식을 사용했다.

공간문제때문에 이 방식은 정해진 퀄리티와 resolution을 사용해야 했고, icon과 같은 특별한 경우 몇개의 resolution을 따로 유지하기도 하지만 wallpaper(1280? 1440? 1680?)같은 경우는 문제가 발생한다.

Software platform은 그래서 image를 수학적으로 표현한 vector그래픽방식으로 화면에 렌더링하는 방법을 채택하기 시작했다.

장점은 resolution에 완벽하게 독립적이란 것이다.

단점은 실시간으로 렌더링하는 비용이 발생한다는 것이다.

vector graphic은 실제 픽셀 정보가 중요한 사진을 표현하는데는 쓰이지 않을 것이다.

대부분의 Canvas widget이 vector방식을 선택하고 있지만 이 방법은 embedded 환경같이 아직 성능이 문제가 되는 경우에 유용하지 못하다.

3.1 일반적인 캔바스 위젯의 문제
일반적인 캔바스 위젯이 픽셀로 된 이미지를 extra feature로 보는데 반해 Evas는 이미지에 초점을 맞추고 Arc, Circle, bezier curves같은건 없다. evas로 된 인터페이스를 만들려면, 모든 엘리먼트를 png같은 이미지로 저장하고 인터페이스가 활성화되면 에바스가 load하고 resize할 것이다.

에바스 그래픽은 resolution 독립적이진 않지만 정교한 알고리즘으로 축소되더라도 그들의 퀄리티를 유지할 것이다.

3.2 에바스에서의 워크플로우
만약 당신이 복잡한 수학함수차트나 과학프로그램을 만드는게 아니라 단지 이쁘고 애니메이션이 풍부한 어플리케이션을 만들고 싶으면 에바스가 해답이 될 것이다.

What "State-aware" Means
Canvas가 이미 렌더링된 이미지라는 점에서 Evas도 잘 옵티마이즈된 이미지라고 볼 수 있다. 그러나 이전 챕터만 읽고 별로 대단한것 없다고 생각한다면 일단 이 챕터를 읽고 다시 고민해보길 바란다.

Evas는 특정 시점에서의 자신의 상태를 기억하고 있다.

슈도 코드로써 설명을 하려고 한다.

조는 이제 막 Canvas Widget을 써보기 시작했다.

조는 캔바스가 다시 그려질때(Paint 함수가 호출될때)마다 오브젝트들을 다시 그려야 함을 알았다. 즉 캔바스에게 오브젝트들을 넘겨줘야 했다.
캔바스에 그려져야 할 모든 오브젝트들이 관리되어야 하는데 실제로 조가 하는 일은 오브젝트들을 add하고 캔바스에게 알려주는 것 뿐이다.

나중에 조는 캔바스안에 오브젝트를 클릭해서 움직이고 싶어졌다.
이를 위해 조는 별도의 자료구조로 canvas의 상태를 관리해야 했다. 즉 캔바스는 단순한 2차원 픽셀배열이며, 오브젝트들은 그려지는 순간 자신의 특징을 잃어버린다. 이런 캔바스는 멍청하고 state unware하다.

조가 만약 state-aware한 캔바스를 사용한다면 어떻게 되었을까?

오브젝트를 가지는 캔바스는 스크린상에 뭐가 있는지도 알만큼 똑똑할 것이다.

Available Programming Facilities
다음은 Evas Object들이다.
( + Gradient : Linear,radial,rectangular,etc)

Chapter4.Understanding the Edje Layout Engine

Edje는 간단한 설명으로 이해될 만한 라이브러리가 아니다.
그것은 다양한 목적을 가진 복잡한 라이브러리이다.

Edje는 역할은 다음과 같다.
* A layout engine.
* Ananimation/effects graphic library.
* An Interface Description Language.
* A logic/appearancese paration library.
* A theming frame work.
* A GUI previewer(think glade).
* An abstraction over Evas

Edje as a Layout engine

대부분의 어플리케이션들이 시작할때 window manager로부터 크기를 받아 그 안을 활용하는데, 만약 크기를 바꾸거나, 풀스크린모드가 되면 어떻게 되는가?

운나쁘게 다이얼로그 같으면 안바뀔것이고 어떤 경우엔 사이즈가 바뀌어도 컨텐츠 모양은 그대로다.
대부분의 경우는 잘 리사이즈 된다.
문제는 대부분의 Toolkit들이 좌표에 기반한다는 점이다.
툴킷 개발자들은 그래서 이런것 때문에 box, autofill등을 제공하지만 개발자들은 잘 안쓰고 그냥 고정해버리려고 한다.

Edje는 상대좌표를 허락한다.

만약 네가 위아래 긴컨텐츠와 위아래 스크롤가능한 삼각형이 달린 프로그램을 만든다고 해보자.
각 축으로 0.0부터 1.0안라는 상대좌표안에 위 그림처럼 배치할 수 있고 다음과 같은 Edje로 만들 수 있다.
핵심은 rel1에서 rel2까지로 이루어진 사각형을 만든다는 것이고, 나머지는 이해할 수 있을 것이다.


Edje as Animation/Effects Library

<중략:메리의 삽질기>

단순한 애니메이션을 위해 엄청나게 코딩을 했다.

그러나 코드양 뿐 아니라 만약 20frame으로 300px를 움직이도록 하는 애니메이션을 위해 우리는 좌표 계산을 할 수 밖에 없다. 화면 사이즈가 바뀌거나 하는 것도 문제가 되기 때문이다.

이미 그래픽툴을 써봤다면 키프레임이라는 것을 알것이다. A와 B 위치를 가진 키프레임을 만들고 컴퓨터가 나머지 부분에 대해 transition을 바탕으로 생성하는 것이다.

고생하는 메리의 모습을 본 조(이전 챕터에서 이미 EFL을 경험한)가 도와줘서 다음과 같이 만들었다.

}

앞에서 말한 A 는 default라는 상태로, B는 finish라는 상태로 표현함을 알 수 있다.
Program 브럭에서 이 애니메이션을 완성했는데, ball이라는 타겟이 show라는 시그날을 받으면 LINEAR하게 5.0초간 finish 상태로 움직이게 된다.

또, 20frame을 얻기 위해 코드에 단지 값을 넣을뿐 추가적인 계산은 하지 않는다. 윈도우 크기가 변해도 relative이므로 움직임이 자유롭다.

그러나 만약 정말로 300px을 움직이고 싶다면 relative대신 offset에 해당 픽셀만큼을 적어주면 된다.(예제 생략)

Edje as an IDL

EFL의 API는 쓰지 않고 앞의 예제들을 보여주었다.
물론 앞의 코드는 실제 Edje코드이고 약간의 블럭이 빠져 위의 코드만으로 프로그램이 되진 않겠지만 프로그래머가 의도적으로 써야 하는 전부라고 할 수 있다.

너는 Edje가 그래픽 인터페이스를 기술함을 알 수 있다. 인터페이스가 어떻게 생겼고, 무엇을 하고 어떻게 하는지를 기록하고 있다.

이 컨셉을 이미 모질라의 XUL, MS의 XAML같은데서 쓰인 것이다. Edje만 XML이 아니다.

Edje as Logic and Appearance separator


<많이 중략:업데이트 필요>

네가 만든 C 코드는 Canvas의 초기화와 edje_file_load("my_UI.edj")과 같이 edj를 지정하는 부분만 있으면 된다.



Edje as a Theming Framework

'Open Source > EFL' 카테고리의 다른 글

[EFL] 3. Simple Application using Evas.  (0) 2011.03.16
[EFL/Eina] eina_unicode 예제.  (0) 2011.03.09
eina_tiler vs cairo_region  (0) 2010.09.10
[EFL] 소스 코드를 받는 법  (0) 2010.03.18
[요약] An overview of EFL - 1  (1) 2010.01.10
EFL 관련 사이트  (0) 2009.08.28
Posted by 소혼
TAG EFL, ETK

댓글을 달아 주세요

  1. 뚜르꾸 2011.01.13 15:47 Address Modify/Delete Reply

    잘봤씁니다^^

여기저기서 줏어모은 제가 자주 쓰는 git에 대한 명령어들입니다.
아래 참고 URL을 보시면 더 많은 정보가 있습니다.
git manual

http://www.slideshare.net/saharabeara/advanced-git-tutorial

git tutorial 
http://www.funit.net/git

http://gitimmersion.com/ (영어로 되어 있음. 따라하다가 포기 ^^;; )

기타

http://noiseandheat.com/blog/2012/02/lazy-one-liners-%60git-rm%60-all-deleted-files/




git 설명을 위한 이미지


1. 시작하기
git init
git clone {remote repo}
ex1 - git clone https://github.com/bunhere/git-study.git
ex2 - git clone ../anotherGitRepo
ex3 - git clone git://github.com/bunhere/git-study.git


(추가글1)

방화벽등으로 SSL접속이 안된다면 (https)

GIT_SSL_NO_VERIFY=true git clone https://...


(추가글2)
git 관련 환경 설정 (http://live.gnome.org/Git/Developers  참조)


- 자신의 이름과 이메일 설정
git config --global user.name "Rupert Monkey"
git config --global user.email rupert@example.com
- color 설정
git config --global color.ui auto

2. 작업 내용 확인하고 커밋하기
git add [파일 또는 폴더 명]   : git에 파일 또는 폴더 추가  (. 을 적으면 현재 폴더 이하를 추가)
git rm [파일 또는 폴더명] : git에서 파일 또는 폴더 제거
git status : 현재 git 상태 보기
git commit -m "로그 메시지" : 위에서 add/rm한 상태를 git repo에 메시지와 함께 저장
git commit --amend 

(이미 commit한) 마지막 commit에 추가로 수정한 내용을 반영한다.(물론 그 전에 git add등을 해야 함)

3. 작업 내용 꺼내오기
git checout [파일 또는 폴더명] : 현재 git repo기준 마지막 commit상태로 돌림
git checkout 4ab18a1 [파일 또는 폴더명] : git repo 로그중 4ab18a1으로 시작하는 commit id로 돌림
git reset --hard master : git repo를 master branch의 최종으로 원복함

4. 가지 만들어 옮겨 다니기
git branch newb (master) : (master) branch로부터 newb 라는 이름의 브랜치를 만듬
git checkout newb : newb 브랜치의 내용을 보기 시작함

git branch -a : 현재 생성된 모든 로컬 브랜치와 원격 브랜치를 확인함

git checkout master : master 브랜치로 전환
git merge newb  : newb브랜치의 내용을 가져와 현재 브랜치에 합침


5.  원격 저장소 추가하기.

git remote add upstream git://github.com/WebKit/webkit.git


예) master (ref origin/master)에 upstream/master를 가져와 merge할때. (github에서 mirror repo를 sync할 때 사용)

git checkout master (현재 브랜치를 마스터로 바꿈)

git fetch upstream (remote branch인 upstream branch 의 인덱스를 갱신함)
git merge upstream/master (현재 브랜치에 머지함)


git rebase newb  : newb브랜치의 내용을 가져온 후, 현재 브랜치에만 있는 커밋들을 그 뒤에 붙임.(주의)

 예를 들어 master와 newb가 아래와 같다면,
(1) - (2) - (3) - (4)                 -------------- master (현재 working branch)
           \ _ (5)                    -------------- newb
git rebase newb를 수행하고 나면 아래와 같이 됨.
(1) - (2) - (5) - (3) - (4)          -------------- master (현재 working branch)


git branch -d newb : newb 브랜치를 지움 (로컬 브랜치만 가능)

6. 원격 브랜치 관리

git fetch origin : origin 이라는 remote 브랜치의 정보를 갱신함

git fetch -p origin : origin이라는 remote 브랜치를 갱신할 때 삭제된 리모트 브랜치의 정보를 로컬에서도 지움
git remote prune origin : 상동
( git config remote.origin.prune true : fetch할때마다 자동으로 정리)

master 브랜치를 rebase하고 원격 branch에 push하려고 하면 에러 git push -f가 가능해야 함.
git push origin newb : origin 에 해당하는 repo에 newb 브랜치를 올림.(없으면 생성함)
git push origin :newb : origin 에 해당하는 repo에 newb 브랜치를 지움.
git push origin --delete newb : origin 에 해당하는 repo에 newb 브랜치를 지움.( git 1.7 이상)

7. merge fail시 내용 수정
git commit -a -m "~~"  : 수정된 상태로 commit

8. 이전 작업 내용 보기
git log -p -m : 현재까지 changeset을 모두 추출
git log --decorate {branch} : tag, branch정보등을 같이 보여준다.
git log --author=bunhere | git shortlog
 : bunhere가 작업한 commit들을 보기
git show qsz01ad:src/t.cpp : qsz01ad commit 시점의 src/t.cpp파일 내용을 확인한다.

git log -Ssource_change { -- filename } : filename의 이전 변경에서 source_change를 찾는다

git shortlog -s -n --since="YYYY-MM-DD" : author별로 커밋의 수를 모아서 보여준다.

8. git에 tag 달기
git tag -a mytag : mytag란 이름으로 로컬 브랜치에 태그 추가 (현재 위치(현재 브랜치, 현재 commit)에 반영됨)
git push origin tag mytag : remote 브랜치에 tag 반영

8. 마지막 commit을 삭제하기
git reset --hard HEAD^ : ^가 한개면 하나의 commit을 삭제하고 두개면 두개의 commit을 삭제함. 원격 repository는 당연히 수정되지 않음.

9. patch 만들기
git format-patch -M -C --output-directory {patch directory} start..end :


10. git commit 순서 바꾸기

A-B-C-D => A-C-B-D

git reset --hard A
git cherry-pick B
git cherry-pick C
git cherry-pick D

또는 git rebase -i 로도 가능


11. 지워진 파일들을 모두 git rm하기
git status --porcelain | awk '/^.D .*$/ {print $2}' | xargs git rm


12. git commit count

git rev-list HEAD --count

git log --pretty=oneline | wc -l


기타

git 방화벽 이슈

git config --global http.proxy http://xxx.xxx.xxx.xxx

이것만으로 안될 경우 proxy wrapper를 이용

export GIT_PROXY_COMMAND="/usr/bin/proxy-wrapper"

sudo vi /usr/bin/proxy-wrapper

#! /bin/bash
(echo "CONNECT $1:$2 HTTP/1.0"; echo; cat ) | nc 168.219.61.252 8080 | (read a; read a; cat ) 


git branch --set-upstream-to=origin/master master


'Open Source > git / svn / bazaar' 카테고리의 다른 글

[GIT] windows에서 invalid username (wincred)  (0) 2016.10.18
commit.template - default commit message  (2) 2012.07.12
resume in github  (2) 2012.02.15
github에 내 사이트 만들기.  (1) 2012.01.17
svn과 proxy  (0) 2010.08.11
Git 사용법(Manual)  (1) 2010.01.10
Posted by 소혼
TAG Git, 사용법

댓글을 달아 주세요

  1. jsy 2016.06.10 17:50 Address Modify/Delete Reply

    git 초짜라서 명령어 뭐가 뭔지 모르는데 그림 보고 많은 도움 되었습니다..

1. 나만의 스도쿠 공략법-1
2. 나만의 스도쿠 공략법-2
3. 나만의 스도쿠 공략법-3
4. 나만의 스도쿠 공략법-4
5. 나만의 스도쿠 공략법-Final(총정리중)

3) 칸에 숫자 넣기
물론 1부터 9까지 숫자를 다 넣고 하나씩 지워갈 수도 있지만, 그건 노가다가 너무 심하고, 수도쿠를 하는 목적이 단지 열심히 깨자는 것이라기 보단 숫자에 대한 감을 높이기 위한 것이라 되도록 머리를 쓰려고 한다. 그래도 힘든 경우 숫자를 기입하는데 이 때, 제일 먼저 내가 선호되는 칸은

   1. 열 또는 줄, 또는 3*3상자안에 빈칸이 4개 이내이며,
   2. 현재 잘 안나온 숫자가 나와 있는 열 또는 줄 또는 3*3 상자안에 있는 경우
이다.

물론 정 안되면 다 채울 수 밖에 ;;
이전 그림을 재활용해보기로 했다.
7, 6으로 시작하는 첫번째 열의 빈 칸은 4개이다. 사실 다른 칸을 확인할 수 없으므로, 이 칸을 먼저 살펴보려고 한다.
이 열에는 숫자가 2,3,6,7,8이 나왔으므로, 나오지 않은 숫자는 1,4,5,9가 된다.

위 그림은 이 값을 4개의 빈칸에 넣어본 그림이다. 이 그림과 같이 넣어보면 어떤 칸에 들어갈 수 있는 숫자가 무엇인지 나온다. 1열의 마지막 칸에는 4가 들어가야 한다는 사실을 알 수 있다. 또, 나머지 칸에서도 4를 지우면 또 원하는 숫자를 찾을 수 있을 지도 모른다.(이 경우에는 없군요 ;; )

4) 3번 규칙을 통해 나온 열 또는 칸 또는 3*3상자안에 두개의 가지수를 갖는 칸들은 제외하고 생각한다.

위 그림은 3번 규칙을 통해 4를 찾은 그림이다. 따라서 1열의 세 빈공간은 이제 1, 5, 9만 가능하다.
이 때, 가운데 3*3상자를 보면, 가능한 숫자가 5 또는 9로서 같음을 알 수 있다.
이 두칸 모두 5 아니면 9이므로 다른 빈칸은 절대 5 또는 9가 될 수 없다.
따라서 첫번째 칸은 반드시 1이 되어야 함을 알 수 있다.(물론 1번 룰에 의해 1을 확인했다면 1열의 첫번째 빈칸이 1임을 벌써 찾았을 것이다 ;
예에서는 이 방법을 열에 들어 설명했으나, 줄이나 3*3박스 안에서도 동일하게 찾을 수 있다.

다른 예제를 하나 더 만들어봤다.

역시나 일부는 일부러 비워놓았다.
4번 룰에 의해 오른쪽 열의 두 빈칸은 어디가 1인지 어디가 4인지는 모르지만 확실히 두 칸안에 1과 4가 존재한다.
그 왼쪽 짙은 주황색 칸의 값을 찾아보자
열의 빈칸이 3개이므로 어떤 값이 들어가야 하는지 빠진 숫자를 체크해보면 4, 6, 9 가운에 하나의 숫자가 나와야 한다.
이 때, 오른쪽 끝 열이 4를 갖고 있고, 왼쪽에 9가 있으므로 짙은 주황색 칸은 6이 된다.


Posted by 소혼
TAG 수도쿠

댓글을 달아 주세요


Posted by 소혼

댓글을 달아 주세요

3기가 메몰을 사용하는 회사 컴퓨터에 메모리를 하나 신설했다.

기쁜 마음에 메모리를 확인
cat /proc/meminfo
하지만 메모리는 3.4G 정도를 가르키고 있었다.

그래서 검색해 보았으니
http://www.cyberciti.biz/faq/ubuntu-linux-4gb-ram-limitation-solution/

두가지 방법이 있다고 한다.
1) 64비트로 설치
   -> 쓰던 컴퓨터를 어쩌라고 -_-;;

2) PAE enabled kernel 을 설치
$ sudo apt-get update
$ sudo sudo apt-get install linux-headers-server linux-image-server linux-server
위 명령을 실행하고 리부팅한다.(root면 sudo 없이)
  이 때, 만약 restricted driver를 쓰고 있었다면, 해제하고 리부팅하는게 좋다.

  (리부팅하면 윈도우가 저해상도 모드가 되버릴 수 있다.
  저해상도 모드로 가버린다면, graphic driver를 업데이트 해주어야 한다. envyng-qt 또는 envyng-gtk+를 설치하고 해당 파일을 실행하여 그래픽 드라이버를 업데이트 해준다.)


Posted by 소혼

댓글을 달아 주세요

1. 나만의 스도쿠 공략법-1
2. 나만의 스도쿠 공략법-2
3. 나만의 스도쿠 공략법-3
4. 나만의 스도쿠 공략법-4
5. 나만의 스도쿠 공략법-Final(총정리중)

요새 오고가는 길에 스도쿠(수도쿠?) 공략에 빠져서 살고 있다.

스도쿠는 이미 모르는 사람이 없을 정도로 유명한 게임인데 정말 시대에 뒤떨어진 나는 얼마전에 바꾼 휴대폰안에 있는 스도쿠 게임을 시작하면서 그 재미에 빠져들었다.

1. 스도쿠의 정의
   스도쿠는 스위스 수학자 레온하르트 오일러가 고안한 마술 사각형에서 유래되었다고 한다.(http://100.naver.com/100.nhn?docid=798017)
   원리는 간단한데, 가로 9칸, 세로 9칸 총 81칸안에 1부터 9까지의 숫자를 같은 숫자가 겹치지 않게 적으면 된다. 이 때, 가로로도 겹치면 안되고 세로로도 겹치면 안되며, 가로세로 3칸씩으로 묶인 사각형 안에서도 그 숫자가 겹치지 않아야 한다.

2. 스도쿠 풀기 초급
   위 원리를 말 그대로 해석하면, 각 줄마다 모든 숫자가 한번씩, 3*3단위 사각형에 한번씩 나타나야 한다.
   이 원리를 이용하여 1부터 9까지 순서대로 빠진 셀을 조사하는 것이 제일 기초적인 방법인 것 같다.

위 그림은 다른 데 예제를 참고적으로 붙여본 것인데, 저작권상 일부만 참조했다.
위 문제에서 숫자 7을 보면 가로 세로 열을 확인해볼 때, 좌하단 3*3사각형의 빈칸중 유일하게 한 칸만이 숫자를 입력할 수 있다. 따라서 해당 칸은 7이 되야 한다.


2. 더 어려운 스도쿠 풀기
위 방법만으로는 스도쿠를 푸는데 한계에 부딪히고 말았다.
그래서 몇가지 방법을 생각해 보았다. 다른 더 멋진 방법이 있을 것도 같긴 하지만 지금 나로선 이 방법을 주로 쓰고 있다.(플러스 몇가지 팁도 조만간 올려야겠다.)

위 그림에서 좌하단의 짙은 푸른 칸의 숫자는 반드시 연한 파랑 위의 숫자와 중복되어선 안된다.
연한 파랑의 숫자들을 보면 4를 제외한 모든 숫자가 적혀있음을 알 수 있다.
따라서 짙은 푸른 칸의 숫자는 4가 된다.




Posted by 소혼
TAG 스도쿠

댓글을 달아 주세요

  1. 스도쿠미 2014.04.29 13:18 Address Modify/Delete Reply

    님의 방법의 출발은 맞습니다. 근데 왜 짙은파란칸에 4가 꼭와야하는 이유는 연한파란에서 4가 없어서로 인한것만은 아닙니다. 4가 연한 파란 다른곳에도 갈수 있는데 왜 꼭거기여야 하나를 결정하는것은 작은 사각형과 주변의 숫자를 함께 고려해야만 합니다.

    • . 2018.08.05 20:26 Address Modify/Delete

      그 짙은 파란색 칸에 들어가는.숫자를 찾고싶을 때 쓰는 방법이니까 아마 그렇지않을까요 예 아마도 하하

어제 밤에 같이 봤으면 좋았을 텐데 오늘 아침에 확인했다.

Intent에 대한 이해와 공부가 더 있어야 할 것 같다.


일단 현재 이해한 것은

Intent는 메시지 프레임워크다. ( 책에 적힌 말 )
Activity들이 서로 통신하기 위해서는 이 Intent를 만들어서 전달해주면 된다.

1) 새로운 Activity를 호출하고 싶다면
    :  Intent를 만들어 startActivity 또는 startActivityForResult를 호출한다.

2) 이 때, 정보를 넘겨주고 싶다면, (호출하는 Activity에서)
    : putExtra( keyString, value)를 호출한다.

3) 넘겨준 정보를 받고 싶다면 (호출받은 Activity에서)
    : getIntent().getStringExtra(keyString)의 리턴을 받는다.
          -> getIntent()는 현재 호출한 Activity가 만들어 넘겨준 Intent를 반환한다고 한다.
          -> get[변수타입]Extra()함수는 변수타입별로 존재하며, 인자도 타입따라 다르다.
          -> 귀찮으면 Singleton을 써도 될 것 같다.

4) 인텐트 지연해서 호출하기
   : PendingIntent를 사용한다.

아 걸음마 단계를 언제 뗄래나..
Posted by 소혼

댓글을 달아 주세요

목차로 이동

Activity는 어플리케이션의 프레젠테이션 계층이라고 한다.
별로 와닿지 않는 말이다. 그냥 간단히 화면 하나하나라고 생각하기로 했다.

대부분의 어플리케이션들은 하나 이상의 화면으로 이루어진다.
따라서 화면이 여러개라면 Activity를 여러개 만들어야 한다.

기본적으로 안드로이드 프로젝트를 수행하면 하나의 Activity가 존재한다.

1) 하나를 더 만든다. (몰라서 View도 새로 만들었다.)

2) 새로 만든 Activity를 메니페스트 파일에 추가한다.

3) 호출하고 싶을 때 Intent를 이용해 호출한다.


Posted by 소혼

댓글을 달아 주세요

http://www.javajigi.net/dashboard.action

[이클립스 단축키]
http://www.javajigi.net/pages/viewpage.action?pageId=155

동시에 여러개를 할려니힘들다..

기회라는 말은 원래 그렇게 오기 전엔 잡을게 많다가도
지나가고 나면 아무것도 없는 것
Posted by 소혼

댓글을 달아 주세요

  http://wiki.kldp.org/wiki.php/LinuxdocSgml/UTF8-Unicode-TRANS
  http://www.cl.cam.ac.uk/~mgk25/unicode.html
http://www.ibm.com/developerworks/kr/library/l-linuni.html

'Software Engineering과 개똥 철학? > 컴퓨터 관련 용어' 카테고리의 다른 글

Foreign function interface  (0) 2011.05.16
Unicode (유니코드)  (1) 2011.05.11
괄호를 영어로 읽으면?  (0) 2011.04.27
DAG  (0) 2011.04.16
DVCS  (0) 2011.04.16
유니코드 관련 글  (0) 2009.12.12
Posted by 소혼

댓글을 달아 주세요