2014. 6. 16. 16:00

웹 개발을 할때, 트위터 부트스트랩 (Twitter Bootstrap)을 사용하면 디자인과 CSS에 대한 부담을 좀 덜 수 있다.

특히 나같이 뼛속까지 개발자라서 디자인 감각이 영 꽝인 사람들에겐 가뭄에 단비같은 존재다.

이런걸 오픈소스로 공개해주시다니, 정말 감사할 따름!

예제도 잘 정리되어 있어서 별도의 서적 없이도 쉽게 프로젝트에 적용할 수 있을 정도다.

현재 버전 3까지 나왔으며, 유지보수 프로젝트를 위해서 버전 2의 링크도 포함해 놓았다.

그리고 Bootswatch는 부트스트랩에 여러가지 테마를 적용해 놓은 버전이다. 한가지 색상에 질린다면 Bootswatch에서 나에게 맞는 컬러로 적용해보도록 하자!

 

부트스트랩 3

url: http://bootstrapk.com

 

 

 



Bootswatch: Free themes for Bootstrap

url: http://bootswatch.com

 


'' 카테고리의 다른 글

DISQUS 소셜 댓글 달기  (1) 2014.06.16
그누보드 게시판 테이블 그리고 댓글  (0) 2014.06.16
남은 글자수 체크  (1) 2012.07.23
Trigger an Error - 오류 발생시키기  (0) 2012.05.19
jQuery Mobile 페이지 이동  (1) 2011.11.03
Posted by 다오나무
2014. 6. 16. 15:13



블로그에 소셜 댓글 서비스를 제공하는 ‘DISQUS’를 사용하는 방법에 대해서 알아 보겠습니다.

티스토리에서 제고아는 댓글 서비스는 양방향 서비스가 아닌, 티스토리 회원들만을 위한 일방적인 시스템의 성격이 강했습니다.

비회원도 ‘비밀 글’을 작성 할 수 있도록 하는 방식은 좋지만, 비회원으로 댓글을 달았을때, ‘답댓글’이 달릴 경우 비회원에게는 알림 서비스를 제공하지 않는다는 것이 불편했었습니다.

그리고 내 블로그에서 이루어진 댓글 활동들에 대해서 정확한 통계자료를 보여주지 않는 점 또한 불편했었는데요.

댓글 입력 폼에 방문자가 이미지 파일을 첨부할 수도 있고, 이미지 파일의 URL 주소 혹은 유튜브와 같은 동영상 파일의 URL 주소를 입력하면 해당 URL 주소를 자동으로 인식해서, 이미지 파일과 동영상을 보여 주기도 합니다.


 



디스커스(DISQUS) 란?


해외의 유명한 블로그, 사이트 등에서는 대부분이 이 디스커스 댓글 폼을 사용하고 있습니다. 그리고 디스커스라는 회사 또한 국내회사가 아닌, 외국 회사라서 사이트의 언어는 영문으로 되어 있습니다.

하지만 사이트의 직관적인 인터페이스 덕분에 영어실력이 부족해도 이용하는데에는 전혀 불편함이 없습니다. 

또한 댓글목록에 댓글목록 내용(키워드)과 관련된 광고가 노출이 되서 클릭당 커미션을 지급하는 CPC 광고를 개제할 수 도 있습니다.

정확하지는 않지만, CPC 광고 서비스를 이용하기 위해서는 일정 수 이상의 댓글 커뮤니티가 활성화 되어야 CPC 광고를 개제할 수 있는 항목이 활성화 되는 것 같습니다.





디스커스(DISQUS)에 댓글을 달기 위해서는?


총 5가지의 방식으로 댓글을 입력할 수 있도록 지원을 하고 있습니다.

첫번째, 디스커스에 가입한 계정으로 로그인 해서 댓글을 입력할 수 있습니다.
두번째, 트위터 계정으로 댓글을 입력할 수 있습니다.
세번째, 페이스북 계정으로 댓글을 입력할 수 있습니다.
네번째, 구글 플러스 계정으로 댓글을 입력할 수 있습니다.
다섯번째, 비회원으로 이메일주소 입력만으로 댓글 입력이 가능 합니다.





그리고 댓글을 입력 하면서 이미지 파일을 첨부하고 싶다면, 드래그앤드롭 방식으로 이미지 파일을 추가할 수 있습니다.

방문자가 궁굼한 사항이 있을때, 스크린샷을 찍어서 이미지 파일을 함께 첨부해서 방문자와 블로그 운영자간의 소통을 더 원활하게 해 주기도 합니다.



디스커스(DISQUS) 회원가입 및 로그인


디스커스에 회원가입을 할 때 필요한 사항으로는 사용할 영어 이름(닉네임), 이메일 주소, 비밀번호 이 세가지 사항만 있으면 누구든지 회원가입이 가능 합니다.

굳이 디스커스에 회원가입을 하지 않더라도, 페이스북, 트위터, 구글 플러스 의 계정을 디스커스와 연동해서 해당 SNS 계정으로도 로그인이 가능 합니다.

 



블로그를 운영하고 있는 사람이라면, 누구나 쉽게 회원가입 및 로그인이 가능하기 때문에, 상세한 설명은 생략하고 바로 다음 단계로 넘어 가겠습니다.





디스커스(DISQUS)에 웹 사이트(블로그)를 등록하고 댓글 플러그인 소스 코드 발급 받기!


디스커스에 회원가입을 하고, 로그인을 했다면 사이트를 등록하는 페이지가 가장 먼저 반기게 될 겁니다. 혹은 다른 페이지가 먼저 반기게 된다면, 디스커스 홈페이지의 여러 위치에서 ‘ADD DISQUS TO YOUR SITE’ 를 확인할 수 있기 때문에, 쉽게 해당 페이지로 이동이 가능 합니다.





Site name
➥ 디스커스 댓글을 사용 할 웹 사이트(블로그)의 이름을 입력 해 주세요!

Choose your unique Disqus URL
➥ 나의 디스커스 댓글 커뮤니티를 확인할 수 있는 SNS 개념의 웹 주소 입니다. 사이트 이름을 입력하면 자동으로 사이트 이름으로 입력이 되며, 변경 또한 가능 합니다.

Category
➥ 자신의 웹 사이트(블로그) 카테고리를 설정하는 곳인데, 목록에 없다면 “Auto’ 로 해 주세요!

Finish registration

➥ 사이트 이름 및 카테고리 설정이 끝났다면 해당 항목을 클릭해서, 디스커스 댓글을 설치할 수 있는 ‘Install’ 페이지로 이동을 해 줍니다.

 



위의 페이지에서 자신이 사용하는 블로그 플랫폼이 없다면(?) 첫번째에 있는 ‘Universal Code’ 를 클릭 해 주면 됩니다. 

하지만 바로 install 설치를 하게 된다면, 디스커스 댓글 폼 인증에서 오류가 발생할 수 있습니다. 그래서 install을 하기전에 앞서서 Admin ➜ Settings ➜ General 에서 먼저 설정을 해 주어야 합니다.


그러면 General(일반) 에서 설정할 수 있는 사항들에 대해서 간략하게 살펴 보겠습니다.

Appearance(외관)
➥ 색상, 서체 등을 설정할 수 있습니다. 기본값으로 두세요!

Comment Count Link
➥ 댓글 수 링크 입니다. 기볼값으로 두시면 됩니다!

Default Sort(기본 분류)
➥ 어떠한 댓글들이 가장 먼저 보여주게 할건지를 설정 할 수 있습니다. 최고의 댓글, 오래된 댓글, 최신의 댓글…

Discovery
➥ 디스커스 댓글목록 아래에 내가 활동한 다른 댓글 커뮤니티 링크를 보여줄건지 말건지를 선태할 수 있습니다. 체크하는 것을 권장 합니다.

Site Identity(사이트 정보)
➥ 사이트(블로그) 이름, URL 주소, 카테고리, 설명, 사용 언어를 입력하는 곳 입니다. 이 항목에 있는 사항들을 정확하게 입력해야 install 페이지에서 정상적으로 인증이 완료 됩니다. 그리고 사용 언어에서 ‘korean’으로 해 주어야 디스커스 댓글 폼에 한글로 표시가 됩니다.

Community Rules(디스커스 댓글 커뮤니티 규칙)
➥ Guest Commenting 항목에 체크를 해야 ‘비회원’도 이름과 이메일 주소만으로 댓글을 남길 수 있습니다.
➥ Pre-moderation 에서는 댓글을 승인해야 노출이 되게 할건지, 이메일 주소가 없는 사람의 댓글일때만 검토후에 승인할건지, 승인절차 없이 모든 댓글이 노출되게 할건지를 설정할 수 있습니다.
➥Links in Comments 링크가 있는 댓글일 경우에 승인을 해줘야 노출이 되게 할건지를 설정 할 수 있습니다.
➥Flagged Comments 신고된 댓글에 대해서 어떤 조치를 할건지를 설정 할 수 있습니다.
➥ Automatic Closing 자동으로 특정시간, 특정기간 동안 댓글 입력 폼을 폐쇄 할 수 있습니다.

Social Platform Integration
➥ 트위터 사용자 이름을 지정할 수 있습니다.

그리고 맨 아래에 있는 ’Save Changes’ 를 클릭해서 저장을 해 주세요! 그리고 install 페이지로 다시 이동을 해서 디스커스 댓글 폼을 설치 해 주면 됩니다.

     

그 외에 ‘Moderators’ 와 ‘Filters’ 그리고 ‘Advanced’ 는 추후에 설정을 해도 됩니다.

General
➥ 일반적인 설정을 하는 곳 입니다.

Moderators
➥ 디스커스 댓글을 관리 할 수 있는 다른 운영자를 추가할 수 있습니다.

Filters
➥ 비속어 필터, 스팸 메시지 차단, 사용자 차단 등을 관리할 수 있습니다.

Advanced
➥ 고급설정을 하는 곳이며, 디스커스에서 사용할 나의 아바타를 추가할 수 있으며, 디스커스 댓글과 사이트를 제거 할 수도 있습니다.


이제 기본적인 설정사항은 끝났으므로, install(Universal Code) 페이지로 이동을 해 주세요!

 



디스커스의 소셜 댓글을 설치할 수 있는 ‘html 소스’를 발급받는 페이지로 이동을 하게 됩니다. 상단에 있는 첫번째 소스(코드)는 디스커스 댓글 입력 및 목록의 코드 이므로, 웹 사이트(블로그)에서 삽입하고자 하는 위치에 해당 코드를 복사해서 붙혀넣기 하면 됩니다.





티스토리 블로그에서 글 관련 태그는 s_tag_label 에 위치해 있으므로, 그 아래에 위에서 복사한 디스커스 소스코드를 붙혀넣기 해서 해당 태그가 끝나는 지점 바로 아래에 디스커스 댓글 입력 및 목록 폼이 출력되게 했습니다.





s_tag_label 이 끝나는 항목에 /br 태그를 입력해서 간격을 띄워 줬습니다. 그리고 그 바로 아래에 디스커스 소스코드를 붙혀넣기 해 주고 '!— 디스커스 댓글 시작’ 과 같은 주석을 달아 줬습니다.

또는 본문 아래에 바로 디스커스 댓글 입력 및 목록 폼을 보여주고 싶다면 _article_rep_desc_ 치환자를 찾아서 그 아래에 붙혀넣기 하면 됩니다.


그리고 디스커스의 두번째 소스코드(자바스크립트)는 /body 바로 위에 주석을 달아서 붙혀넣기 해 주세요!




소스코드를 정상적으로 삽입 했다고 해서, 모든 절차가 끝난 것은 아닙니다. 마지막으로 디스커스 설치 페이지 아래에 있는 ‘Verify’ 버튼을 클릭해서 인증을 해 주어야 합니다.





성공적으로 모든 작업이 완료가 되었다면? 위와 같이 ‘Congrats! Disqus appears to be properly installed’ 라는 메시지와 함께 ‘Verify again’으로 바뀌게 됩니다.

이제 블로그로 이동을 해서 정상적으로 작동하는지, 그리고 보여지는지 확인 해 보겠습니다!

 



디스커스는 댓글 입력 폼 으로만 사용할 수 있는 것은 아닙니다. 티스토리 블로그에서는 공지사항과 같은 글에는 댓글 입력을 지원하지 않는데요.

공지사항 글을 작성할 때, 마지막 부분에 디스커스 댓글 플러그인 html 소스 코드를 붙혀넣기 하면, 공지사항과 같은 글에도 댓글 입력 폼을 만들 수 있습니다.

그리고 방명록 또한, 티스토리에서 방명록 관련 치환자를 찾아서 적절한 위치에 디스커스 댓글 플러그인 html 소스 코드를 붙혀넣기 하면, 방명록으로도 사용이 가능 합니다.

어떻게 사용하느냐에 따라서 활용방법은 무궁무진 해 보입니다. 그리고 댓글 커뮤니티 활성화가 잘 된다면, 추후에는 CPC 광고도 댓글 목록에 삽입할 수 있어 블로그의 새로운 수익모델이 될 수도 있습니다.


'' 카테고리의 다른 글

트위터 부트스트랩 다운로드  (0) 2014.06.16
그누보드 게시판 테이블 그리고 댓글  (0) 2014.06.16
남은 글자수 체크  (1) 2012.07.23
Trigger an Error - 오류 발생시키기  (0) 2012.05.19
jQuery Mobile 페이지 이동  (1) 2011.11.03
Posted by 다오나무
2014. 6. 16. 11:01


그누보드는 게시판의 글과 댓글이 하나의 테이블로 되어있습니다. 

게시판에 따라, 따로 테이블로 되어 참조키를 이용하여 불러오는 경우도 있습니다만, 그누보드는 하나의 테이블로 되어있는데, 이는 제목과 내용을 검색하는데 용이한 장점이 있겠습니다. 

그리고 참고로 게시판의 테이블은 그누보드경우 게시판마다 각각의 테이블이 존재합니다. 생성은 관리자에서 게시판 생성시 테이블이 만들어지며, 그 테블명은 config.php 에서 정의된 $g4[write_prefix] 와 생성시 입력한 아이디값 bo_table 값으로 이어져 생성됩니다. 

XE 경우 여러개의 게시판이라도 하나의 테이블로 되어있습니다. 속도가 느리지 않겠냐는 우려에 XE 개발자경우 mysql의 힘을 믿는다는 글귀를 본적있는 듯합니다. 가능한 이야기일겁니다. 

각각 테이블의 게시판과 하나로 된 테이블의 게시판과의 장단점은 분명 있습니다. 

하나로 된 테이블 구조에서 통합적으로 게시글을 불러들일 경우 별 어려움 없이 가능합니다. 

반면 그누보드처럼 게시판수에 따라 테이블이 있다면 이때 통합적으로 게시글을 불러올려면 union 을 써야 하고, 이때 불러들일 field 값을 일일이 줘야 합니다. 이유는, 게시판에 생성되어있는 필드들의 순서값이 다를 수 있어 서로 다른 결과값을 가져올수 있습니다. 만약, 다른 방법이 있다면 알려주시면 감사하겠습니다. 

그누보드 게시판 테이블을 이야기하기전에 위와 같이 언급한데에는 다른 형태의 게시판이 있고 그 차이가 어떤지 아주 간략히라도 이해하는데 도움이 되고자함입니다. 

그누보드에서 일반 게시글인가, 댓글인가 구분을 해주는데 필드명은 wr_is_comment 입니다. 

그럼 게시글만 출력하게되는 목록과 관련된 부분을 한번 보겠습니다. 

bbs/list.php 내 포함된 부분입니다 

1if ($sca || $stx)
2{
3    $sql " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
4}
5else
6{
7    $sql " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
8}
9$result = sql_query($sql);



$sca : 카테고리, $stx : 검색단어 로 검색시 댓글까지 검색을 한다는 것이 보입니다. 그 조건이 아니면? 게시글만 가져온다는 내용입니다. 


그렇다면, 게시글에 대한 댓글은 어떤 연결고리로 불러들일지 궁금해지겠지요. 

wr_parent 입니다. 

댓글들이 가지는 부모의 wr_id 값을 가지는 놈입니다. 

댓글을 예를들기 위해 이제 글내용보기시 로 넘어가면 위 쿼리문에서 본문글을 가져왔으니, 그 아래 댓글을 가져오는 쿼리문이 있을겁니다. 

bbs/view_comment.php 부분입니다. 

1$sql " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment, wr_comment_reply ";


'' 카테고리의 다른 글

트위터 부트스트랩 다운로드  (0) 2014.06.16
DISQUS 소셜 댓글 달기  (1) 2014.06.16
남은 글자수 체크  (1) 2012.07.23
Trigger an Error - 오류 발생시키기  (0) 2012.05.19
jQuery Mobile 페이지 이동  (1) 2011.11.03
Posted by 다오나무
2012. 7. 23. 02:54

<SCRIPT type=text/javascript src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></SCRIPT>
    <SCRIPT type=text/javascript>
        $(document).ready(function () {
            $('.remaining').each(function () {
                // count 정보 및 count 정보와 관련된 textarea/input 요소를 찾아내서 변수에 저장한다.
                var $count = $('.count', this);
                var $input = $(this).prev();

                // .text()가 문자열을 반환하기에 이 문자를 숫자로 만들기 위해 1을 곱한다.
                var maximumCount = $count.text() * 1;

                // update 함수는 keyup, paste, input 이벤트에서 호출한다.
                var update = function () {
                    var before = $count.text() * 1;
                    var now = maximumCount - $input.val().length;

                    // 사용자가 입력한 값이 제한 값을 초과하는지를 검사한다.
                    if (now < 0) {
                        var str = $input.val();
                        $input.val(str.substr(0, maximumCount));
                        now = 0;
                    }

                    // 필요한 경우 DOM을 수정한다.
                    if (before != now) {
                        $count.text(now);
                    }
                };

                // input, keyup, paste 이벤트와 update 함수를 바인드한다
                $input.bind('input keyup paste', function () { setTimeout(update, 0) });

                update();
            });
        });
    </SCRIPT>
<TEXTAREA></TEXTAREA>
<DIV class=remaining>남은 글자수: <SPAN class=count>300</SPAN></DIV>

'' 카테고리의 다른 글

DISQUS 소셜 댓글 달기  (1) 2014.06.16
그누보드 게시판 테이블 그리고 댓글  (0) 2014.06.16
Trigger an Error - 오류 발생시키기  (0) 2012.05.19
jQuery Mobile 페이지 이동  (1) 2011.11.03
자바스크립트 레퍼런스  (0) 2011.11.03
Posted by 다오나무
2012. 5. 19. 12:14

Trigger an Error

오류 발생시키기(Trigger an Error)
사용자가 데이터를 입력할 수 있는 스크립트에서는,
불법적인 입력이 발생했을때 오류를 발생시키는 것이 상당히 유용합니다.

PHP에서는, 이걸 trigger_error() 함수를 통해 실행 할 수 있습니다

'' 카테고리의 다른 글

그누보드 게시판 테이블 그리고 댓글  (0) 2014.06.16
남은 글자수 체크  (1) 2012.07.23
jQuery Mobile 페이지 이동  (1) 2011.11.03
자바스크립트 레퍼런스  (0) 2011.11.03
소셜 관련 3가지  (0) 2011.09.29
Posted by 다오나무
2011. 11. 3. 10:35

jQuery Mobile 5일차.

-jQuery Mobile 페이지 이동과 효과.

Page 이동

1. 기본 페이지 구조.

기본적으로 단일 페이지 구조에 최적화 되어 있다. 즉, 하나의 HTML 파일에 모든 콘텐츠를 정의하거나 페이지 내에 서로간의 영역을 구분해 교체하는 방식으로 페이지 이동을 처리한다. 이렇게 하면 전체 적으로 스타일을 일관되게 적용할 수 잇고 페이지 이동에 따른 애니메이션 효과를 원할히 처리할 수 있어 웹앱의 으로서의 특징을 살릴수 있다.

jQuery mobile application은 data-role="page" 속성이 지정된 영역을 하나의 페이지로 간주하고 이 영역 단위로 브라우저에 표시한다.

2. 내부 링크 페이지 이동.

기본 페이지 구조에서도 말했듯이, jQuery Mobile은 page영역을 하나의 화면으로 여긴다. 때문에 한페이지 정의 여러화면을 대상으로 내부적으로 이동할 수 있게 내부 링크를 지원한다.

내부 링크를 사용하기 위해서는 일단 하나의 HTML 파일에 여러 page를 정의해 놓고 서로 교체하는 방식으로 페이지 이동을 처리한다.

이동할 page를 식별하기 위해서 ID를 부여하고 이 값으로 링크를 연결하는 방식을 취한다.

3. 외부 링크 페이지 이동.

외부 링크란 건 내부 링크와는 달리 하나의 HTML에서 다른 HTML 파일로의 페이지 이동을 말한다. 솔직히 jQM이 단일 페이지에 특화되어 있어도 HTML파일 하나로는 솔직히 관리도 힘들고 구현하기도 너무 힘들다. JQM에서는 자동적으로 외부링크 이동을 Ajax 통신으로 처리를 하고, 통신의 결과를 기존 페이지에 통합하는 방식으로 처리해서 내부 링크 페이지 이동과 유사하게 동작하도록 만들어져 있단다.

<a href="xxx.html"> </a> 이런식으로 앵커태그를 사용하여, 기존 HTML에서의 링크 작업과 같은 방식으로 동작하게 된다. 물론 다른 HTML파일들은 JQM의 양식에 맞게 작성이 되어 있어야한다.

4. 외부 사이트 이동 과 링크 옵션

위에는 모드 동일 사이트 내의 링크들에 대한 이야기이고, 외부 사이트로의 링크의 경우에는 JQM의 페이지 이동 매커니즘이 적용안된다. JQM은 HTML 링크 타입을 모두 지원하며, Ajax 기반의 처리외의 방식을 지원하기 위해 몇개의 옵션을 지원한다.

rel="external" , data-ajax="false", target="_blank" 3가지 방법 모두 앵커 태그에 덧붙여서 사용을 하시면 되고, 이런 방법들은 페이지 제어권이 완전히 넘어가 새로고침되는 방식으로 동작을 하게 된다.

외부 사이트가 JQM의 방식을 따르지 않는다면 꼭 사용을 하여야하는 방법같다.

5. 기능 링크

기능 링크는 이메일이나 전화 번호에 대한 링크를 말한다. 다들 스마트폰이나 태블릿 pc 등에서 경험을 해보았겠지만 전화번호를 누르면 전화가 걸어진다 던지, 메일 주소를 누르면 메일을 쓸수 있도록 동작을 한다던지의 행동을 하게 만드는 것들이다. 이 기능들은 JQM이 지원하는게 아니라 모바일 기기들이 알아서 고맙게 지원해주는 기능들이다.

TIp.

1. 링크를 이용하여 page를 구성하면 자동으로 back 버튼이 header 부분에 생성이 된다. data-backbtn="false" 속성을 header에 추가하면 자동 생성이 안된다.

2. jQM은 페이지 이동시 기존 js 객체인 location.hash값도 함께 업데이트하므로 브라우저 자체 back 기능도 잘 동작이된다.

페이지 이동 API 와 애니메이션 효과.

1. 페이지 이동

스크립트 영역에서의 page 이동을 처리하기 위해 JQM에서는 mobile 객체의 changePage() 메서드를 제공해준다.

내부: $.mobile.changePage("#OtherPage","slide","reverse");

외부: $.mobile.changePage("#Other.html","slide","reverse");

2. 애니메이션 효과

Page Transition 이라고 하며 , 총 6개의 CSS 기반 Transition이 제공된다. 페이지 링크를 정의하는 애커 테그에 data-transition 속성을 지정하면 ok !!.

효과의 종류

slide: 왼쪽으로 미끄러지듯 이동 (default).

slideup: 위쪽으로 미끄러지듯 이동.

slidedown: 아래쪽으로 미끄러지듯 이동.

pop: 팝업 형태로 새 페이지가 두둥.

fade: 기존 페이지가 희미해지면서 새 페이지가 두둥.

flip: 새 페이지가 트리플 악셀 . 두둥.

반대 방향으로 Transition 효과를 주고 싶으면 data-direction="reverse" 속성을 주면 ok.

Posted by 다오나무
2011. 11. 3. 09:54

JavaScript

a free online quick reference order here VisiBone
JavaScript Numbers (section of the JavaScript Card and Foldouts)
I hope you find these 
excerpts of VisiBone
JavaScript references
very useful.

Contents:
Number
String
Number <–> String
Boolean
Date
Math

Array
Function
logic
Object
type
object-orientation
Error (exceptions)
LEGEND
Operator Precedence

More content is in the
product closeups, especially:
DOM (Document 
Object Model)
Regular Expressions

The information here 
is part of two printed
references, that
VisiBone makes, the
JavaScript Card:
JavaScript Card

a dense, laminated,
four-page 8.5x11 book

and also the
JavaScript Foldouts:
JavaScript Language Foldout JavaScript DOM Foldout JavaScript Regular Expressions Foldout
a set of three fan-fold
booklets with larger
print and smaller
folded size.

JavaScript Strings (section of the JavaScript Card and Foldouts)
Does it look busy?
Well, it wasn't meant
for idle people!

Here are all the
features of client-side
JavaScript, in
living code.

English takes a
back seat here.  
To make solid 
code, learn to 
read, think and 
write in
JavaScript.
Fluency will
serve you best
in the end.

The assert()
function is the best
invention for
programming
since the subroutine.

Not only will its
proper use make
your software
test itself, earning
and protecting
reliability from the
start.

But it's a clear,
concise way to
describe exactly
what all the features
of JavaScript do.

Did I mention?
Feedback 
form below!

Regular Expressions
are very versatile for
validating or
analyzing strings.

See the JavaScript
Regular Expressions
reference.
If you are looking to
establish or extend
your business in
international markets,
it is very important to
ground your company's
brand and presence in
targeted countries. The
first step in a successful
strategy is to register
an international domain
for your company.
International domain
registration can be
tricky, so use a
registrar that knows
the requirements and
process is important.
Check out godaddy
for the widest selection
and best prices on
international domains.

JavaScript Number / String conversion (section of the JavaScript Card and Foldouts)

JavaScript Boolean (section of the JavaScript Card and Foldouts)

JavaScript Dates (section of the JavaScript Card and Foldouts)
The assert() function
is like a video camera. 
Hold on now, this will 
make sense in a sec.

Think how you first learn 
human language. You 
observe words spoken 
and their effects. 
Person A: "I'm hungry" 
Person B gives A food. 
You infer an association 
between making the 
sound "hungry" and 
getting fed.

This card can teach you 
JavaScript not by talking 
about it but by doing it 
and (here's the part I'm 
smug about) showing 
you the effects. The 
assert() function is a 
great way of showing 
you what JavaScript 
code does.

Imagine, instead of a 
dead-tree dictionary 
that defines words in 
terms of ... other words, 
it would instead show 
a video clip of people 
using and responding
to
those words.

Assert makes the 
effects of JavaScript 
code visible, just like 
this video-dictionary 
would make the 
effects of human 
words visible.

JavaScript Math (section of the JavaScript Card and Foldouts)
JavaScript Arrays (section of the JavaScript Card and Foldouts)

JavaScript Functions (section of the JavaScript Card and Foldouts)

JavaScript Programming Logic (section of the JavaScript Card and Foldouts)

VisiBone also makes
several printed web
color references.

Posters & Charts
Webmaster's Palette Color Wheel Poster

Laminated Cards
Color Card, laminated and slick for clients
that match the 
"VisiBone2"
swatch collection 
in Adobe
Illustrator and 
Photoshop.

Plus two varieties 
of Mouse Pads.

And a chart with 
1068
non-web-safe
colors:
Web Color KiloChart
Guaranteed compatible
with walls in Asia,
Europe, the Americas,
Africa, Australia and
California.

JavaScript Objects (section of the JavaScript Card and Foldouts)

JavaScript Types (section of the JavaScript Card and Foldouts)

JavaScript Object Oriented Programming (section of the JavaScript Card and Foldouts)

JavaScript Exceptions (section of the JavaScript Card and Foldouts)
Legend (section of the JavaScript Card and Foldouts)
Thank you, and good luck building!

JavaScript Reference Contents:
Number
String
Number <–> String
Boolean
Date
Math

Array
Function
logic
Object
type
object-orientation
Error (exceptions)
LEGEND

Here's a table of Browsers versus the JavaScript versions they claim to support:

        
         
                IE   IE   IE   IE  IE  IE  IE  IE
                PC   Mac  PC   PC  Mac Mac PC  PC    Netscape   Mozilla   Opera
                4.01 4.01 4.01 5.0 5.0 5.1 5.5 6     4.7  6.0   0.9-1.0   6.03

JavaScript      X    X    X    X   X   X   X   X     X    X        X      X
JavaScript1.0   X    X    X    X   X   X   X   X     X    X        X      X

JavaScript1.1   X    X    X    X   X   X   X   X     X    X        X      X
JavaScript1.2   X    X    X    X   X   X   X   X     X    X        X      X
JavaScript1.3             X    X   X   X   X   X     X    X        X      X
JavaScript1.4                      X   X                  X        X      X
JavaScript1.5                                             X        X

Jscript         X    X    X    X   X   X   X   X

EcmaScript                X    X           X   X                          X

exceptions      no   no   yes  yes yes yes yes yes   no   yes     yes     yes
supported?


An "X" in row "Yyyyy" means code under <script language="Yyyyy"> will run
in the browser for that column.  For example:

     IE6/PC
     ------
     <script language="JavaScript 1.3">
          // runs
     </script>

     Netscape 6
     ----------
     <script language="EcmaScript">
          // ignored
     </script>

(Yes, there are two radically different browsers both claiming to be IE4.01,
one claims to support JavaScript 1.3 and EcmaScript, and exceptions work
perfectly, and the other not.)

See the Error section for a trick on how to include code with exceptions.


        
      
Posted by 다오나무
2011. 9. 29. 10:05
블로그 포스팅이 예전 같지가 않네요. 늘 일이 바쁘거나 여유가 없거나 그러다 보면, 언제나 블로그 운영은 뒷전이 되버리는게 사실이네요. 더구나, 최근엔 페이스북이나 트위터등도 거의 접속을 안하다보니, 혹은 거의 눈팅만 하는 수준이네요. ^^;

한 몇일동안 눈팅만 했지만, 좋은 내용의 포스트들이 많더군요. 몇가지 정도 공유해보면 좋을것 같아 올려봅니다. 특히 페이스북에서 소셜관련 논쟁이 될만한 주제들도 제법 있는것도 같고, 무엇보다 함께 생각해볼 수 있는 좋은 계기를 만들어 주는것도 같네요.

페이스북이 싸이월드를 앞질렀다고? 
twtkr.olleh.com/discuss/discuss_view.php?discuss_id=DaQ

소셜커머스의 국제 트랜드와 사례를 잘 정리한 자료
www.slideshare.net/jwtintelligence/social-commerce-july-2011-8535237

페이스북 랜딩 페이지 디자인 사례 26개
www.dreamgrow.com/26-great-facebook-landing-page-examples/

도움이 되셨길 바라며, 모처럼 가을비가 내리네요.
따뜻한 커피한잔과 함께 여유있는 하루 시작하세용~^^

 
Posted by 다오나무
2011. 9. 27. 19:44


jQuery는 John Resig이 2005년부터 개발해온 자바스크립트 라이브러리로 CSS 셀렉터를 활용하며, "write less, do more."라는 모토가 나타내듯 스크립팅을 훨씬 간편하게 만들어줍니다.

jQuery의 간편함을 보여주는 단적인 사례로
...
<div id="pContainer">
<p>1번</p>
<p>2번</p>
<p>3번</p>
<p>4번</p>
<p>5번</p>
</div>
...

위와 같이 레이어 안에 5개의 <p>태그가 존재하고, 각각의 <p>태그 내부에 "문장"이라는 문자열을 추가하고 싶은 경우, 자바스크립트로 이를 구현하기 위해서는 보통 다음과 같은 방법을 사용합니다.

<script type="text/javascript">

var appendText=document.createTextNode("문장"); //"문장" 문자열 생성

var pCont=document.getElementById("pContainer"); //id="pContainer" 레이어 선택

var pList=pCont.getElementsByTagName("p"); //레이어 내부 <p>태그 선택

for(var i=0;i<pList.length;i++)

{

pList[i].appendChild(appendText); //각각의 <p>태그에 "문장" 문자열 추가

}

</script>

그러나 jQuery를 이용하면 다음과 같은 심플한 코드로 모든 것이 해결됩니다.

<script type="text/javascript">

$("#pContainer p").append("문장");

//id="pContainer"인 레이어 내의 모든 <p>태그 선택 및 "문장" 문자열 추가

</script>

위와 같이 단 한 줄의 코드로 원하는 모든 것을 구현 할 수 있었습니다. 이렇게 편리한 jQuery를 이용하기 위해서는 몇 가지 준비 사항이 있습니다. 그 중 첫 번째가 jquery.com에서 라이브러리를 다운로드 받는 것인데, 웹사이트 첫 화면에 아래와 같은 다운로드 버튼을 찾을 수 있습니다.




단순히 라이브러리를 링크해서 사용하려는 경우 PRODUCTION을, 라이브러리 코드를 직접 들여다 볼 필요가 있는 경우 DEVELOPMENT을 선택한 뒤 다운로드를 받습니다.


사실, 굳이 jquery 라이브러리를 다운로드 할 필요는 없습니다. 구글과 jQuery 등에서 CDN을 통해 라이브러리 최신 버전을 링크할 수 있도록 제공하고 있기 때문입니다.


라이브러리 다운로드가 완료되면, 원하는 웹문서에 링크만 시켜주면 바로 사용할 수 있습니다. 링크 방법은 다음과 같습니다.

<head>

<script type="text/javascript" src="라이브러리 상대/절대 주소("./js/jquery.min.js")"></script>

</head>

구글 CDN을 통해 제공되는 라이브러리를 이용하려면 다음과 같은 코드를 사용합니다.

<head>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">

</script>

</head>

이제 jQuery를 사용할 준비가 모두 완료됐습니다. <script>태그 내에서 자바스크립트와 함께 jQuery를 자유롭게 사용할 수 있으며, CSS와 Javascript, 그리고 DOM에 대해 어느 정도 이해하고 있다면 api.jquery.com/browser를 참고하여 쉽고 빠르게 jQuery 사용법을 익힐 수 있습니다.


이렇게 멋진 라이브러리를 창조하고 지속적으로 발전시켜 나가는 John Resig과 jQuery Project에 개인적으로 고맙다고 하고 싶네요.

'' 카테고리의 다른 글

자바스크립트 레퍼런스  (0) 2011.11.03
소셜 관련 3가지  (0) 2011.09.29
jQuery개발자가 밝히는 jQuery Mobile의 장점  (0) 2011.09.27
차세대 웹표준 'HTML5'  (0) 2011.09.27
[PHP] Mac OS X에 PHP개발 환경 갖추기.  (0) 2011.09.27
Posted by 다오나무
2011. 9. 27. 19:37

자바스크립트를 웹디자이너도 쉽게 사용할 수 있는 친근감이 있도록 만든 것이 바로 jQuery로 이를 만든 John Resig가 다음으로 주목하고 있는 것이 모바일이다. 2010년 10월 처음 알파판이 릴리즈된 jQuery Mobile은 모바일 웹 어플 프레임웍으로 많은 개발자의 관심을 받고 있다.


크로스 브라우저나 브라우저 고유 문제를 피하기 위해 인터렉션을 간단하게 추가하려면 jQuery와 같은 자바스크립트 라이브러리를 이용해야 한다. jQuery는 DOM에 접근하거나 이벤트 추가 및 Ajax를 실행하려는 웹 어플의 개발에 뺴놓을 수 없는 중요한 기능을 가지고 있다. 엄청 다양하고 편리한 기능을 가지는 jQuery는 어떤 웹 어플 구축에 대해서도 최적화된 도구가 되었다.

 

jQuery Mobile은 jQuery 노하우를 살려 개발된 프레임웍이다. jQuery Mobile은 jQuery를 기반으로 만들어 낼 수 있지만, 뛰어난 모바일 어플을 만들기 위해 빠질 수 없는 위젯이나 레이아웃 구조를 모두 가지고 있다. jQuery Mobile로 만든 페이지는 아이폰이나 안드로이드 등의 스마트폰 웹브라우저나 타블렛에서도 기능이 한정되어 있는 모바일 기기에서도 잘 실행된다.

 

jQuery Mobile에는 편리한 요소가 많이 추가되어 있지만, 그 중에서 1개는 HTML5와 CSS3를 조합하는 기능이 있다. 예로, jQuery Mobile에서는 HTML5의 data-*속성을 사용하여 다양한 GUI를 간단하게 생성할 수 있다. 어떤 텍스트링크를 버튼으로 만들고 싶다면,

 <a href="index.html" data-role="button">삭제</a>

위와 같이 a태그 요소에 data-role="button"을 추가한 것만으로 완료된다.

아이콘을 추가하고 싶다면, data-icon="delete"를 사용하여 만들 수 있다.

 <a href="index.html" data-role="button" data-icon="delete">삭제</a>

래퍼로 data-role="controlgroup"을 사용하면 여러개의 버튼을 쉽게 그룹화할 수 있다.

 <div data-role="controlgroup" data-type="horizontal">

   <a href="index.html" data-role="button" data-icon="arrow-u">위로</a>

   <a href="index.html" data-role="button" data-icon="arrow-d">아래로</a>

   <a href="index.html" data-role="button" data-icon="delete">삭제</a>

 </div>


또한 jQuery Mobile은 CSS3 기능을 활용하는 것으로 이미지 사용을 줄여, 모바일 기기에 보내지는 파일 크기를 줄여준다. 이동통신 회선이 빨라지고 있지만, 모바일 전용으로 가능한 파일 크기를 제한한다면 사용자의 사용감을 크게 향상될 수 있다.
Posted by 다오나무