그냥 생각

게시판, 블록체인, 유즈넷.

지금은 인터넷에 특정 사이트의 게시판에 글을 쓰면, 해당 사이트 관리자에게 게시물에 대한 처리를 요청할 수 있다.

하지만, 유즈넷 시절에는 불가능했겠지?

그리고, 다가오는 블록체인 기술을 활용해서, 인터넷 사이트의 컨텐츠가 유즈넷 같이 바뀐다면 게시글의 수정이 더 어려워지겠지?

파일용 클라우드의 경우, 블록체인을 사용하는 것을 만들었다?는 것을 본 것 같은데,

일반 인터넷 사이트에도 블록체인, 클라우드, P2P 같은 기술이 쓰일 날이 올까?

북마크 프로그램 만들려 하면서, …

일전 포스트에서 적었듯, SiteBar( http://sitebar.org/ ) 대신할 프로그램을 만들어볼까 고민중인데, …

기술적인 구현도 문제지만 ( RESTful Server, 인증 )

개념적인 구현도, 막상 닥쳐보니 고민할 것이 많다.

우선, Tag 개념은 넣을려고 하는데, 이건 그리 복잡하지 않을 수 있겠다 싶기도 한데, …
( 실제 데이터 모델을 생각하니 복잡할 수도. … )

먼저, Category 혹은 Directory 개념은 있어야 할 듯 하고, 바로 막막하네, …
그래서, 잠시 ownCloud 같은 클라우드를 백으로 활용할까 생각하고, …

Directory 개념은 Tree 구조로 가져가는 것이 복잡할 것 같지만, 향후를 생각해도 기본적인 것 같아 복잡하다.

추가로, … public, private 개념을 두려고 하니, … 또 하나, ACL 넣기가 필요하다.

역시나 기존에 구현된 filesystem의 권한 및 tree 구조를 바로 활용하면 편한데, …
이번 프로젝트는 직접 구현해 보는 것이 목표라서 re-inventing wheel은 하려고 한다.

firefox의 bookmark API는 우선 고려 대상에서 제외하고, ( bookmark를 사용할 분들은 잘 사용하시고, 나는 따로 서버에 두고, bookmark와는 별개의 sidebar와 web interface, 앱 인터페이스로 가려고 한다 … )

그래서 생각하는 것이, sidebar를 사용하고, 거기에 SiteBar와 유사하게 디렉토리 구조를 표현하면서, drag and drop을 편하게 해 보고자 한다.

drag and drop은 내 블로그에 전에 테스트하던 것을 참조하면서도, 오늘 추가로 아래 자료도 보고,
https://developer.mozilla.org/en-US/docs/Web/Events/drop
https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations
https://24ways.org/examples/marking-up-a-tag-cloud/example.html

게시판도 하나 직접 만들어보지 않은 dgkim이라, directory, acl, tag, 인증을 적절하게 만들어보면, 다른 업무용 프로그램 만드는데도 쉽게 재활용할 수 있지 않을까 기대하는데, …
기존 구현된 tree나 relation, rdb 구조를 보면 어렵지는 않을 것 같은데, 로직 코드를 그다지 꺼내쓰듯 하지 못하니 어려움으로 다가오는듯 하다.

ps. 그리고, 만들고 나서는 현재의 2900여개의 북마크를 이전해야 하는데, …
여전히, 내 자료 저장은 좀 다양한 도구에 의존하는데, 개선해야 하나 싶기도 하고, … 메일, 블로그, 클라우드, 파일서버, 북마크, 노트, …

그러고 보니, 북마크를 만들고 나면, 자신감을 가지고 노트도 대신할 것을 만들까 싶지만, 거기에는 문서 표현(wiki? or html?)이라는 어려운 벽이 또 하나 있다.

firefox sidebar를 준비해보다…

아래 삽질 기록이 좀 있습니다만.

우선, 기본적인 클라이언트측 컨셉은 가능하겠다는 판단까지 왔습니다.

우선, webextension 예제에서 2가지를 테스트하였고, 조합하면 동작할 것 같습니다.

https://github.com/mdn/webextensions-examples/tree/master/annotate-page
위 예제를 통해서, sidebar를 띄우는 방법이 나왔습니다.
단, sidebar 내용이 서버측 내용이 아닌 로컬 내용인데, 로컬에서 커버할지 웹을 띄울지 고민이 필요한 것 같습니다.

https://github.com/mdn/webextensions-examples/tree/master/bookmark-it
bookmark에 바로 접근하는 것이 가능한 것으로 나오는데,
이걸 활용하고, 로컬 북마크와 서버측 북마크를 연동할 것인지는 고민이 필요합니다.

annotate-page는 sidebar에 뭔가 표시가 가능하다는 것을 의미하며,
bookmark-it은 currentTab.url에 접근 가능하고, XHR 요청이 가능하다는? 것이 테스트되었습니다.

이제 이걸 쓸만하도록 클라이언트 앱을 만드는 것이 필요한데, …
먼저 해결해야할 산이 남은 것이 아래 적은 것과 같이. codeigniter restful 서버 만드는 것, 그 전에 인증 문제 해결하는 것 등이 남았네요. 웹에 표현하는 tag cloud 같은 건 논외로 하더라도, …

어쨌든, firefox extension 완성되면, codeigniter 버전도 만들어 보고, django 버전도 만들어 보면 좋겠다는 계획입니다. … 이 계획이 언제 실현되어 제품으로 나올지는 모르겠지만 … spring에서는 restful API나, spring-security가 경험이 있어 model만 만들면 바로 동작하는 것은 만들 수 있겠다고 생각하지만,, …. 무엇보다 큰 문제는, 사용자 웹 인터페이스가 …


예전에는 SiteBar라는 프로그램을 사용하여 북마크를 관리?했었습니다.

그러던 중, SiteBar가 PHP7과 호환성 문제가 있어 사용하지 못하게 되었습니다.

그래서 이번에는 한번 만들어 볼까? 고민하고 있었지요.

간편한 시작을 위해서 웹서버쪽을 PHP + CodeIgniter사용하고,
클라이언트는 Firefox Sidebar를 사용해 보고자 했습니다.

Firefox Sidebar를 만드는 방법이 역사가 있고, 바뀌어 가기도 하는데, 그중 최신인,
web extension을 사용해서 틀을 잡아보기로 하였습니다.

https://github.com/mdn/webextensions-examples/

그런데, …

XHR을 통해서 링크를 서버로 보내는 것을 준비하다가, …

심각한 상황에 빠졌느데, … CI에서 log_message 걸다보니, httpd가 hang 걸리고, …

그러다가, gdb, lsof, debuginfo-install httpd-2.4.6-45.el7.centos.x86_64
하는 상황까지 오게된. …

그나 저나, 해야 할 일들은 아래와 같이 시작도 못했는데, …

1. firefox web extension 사용하여 sidebar 활용 등의 클라이언트 프로그램 준비
2. 서버측 bookmark 모델 설계
3. 서버측 codeigniter LDAP 및 인증 모듈 개발
4. 서버측 codeigniter bookmark RESTful 인터페이스 개발
5. 서버측 codeigniter web 인터페이스 개발 ( bootstrap 사용할까? )

참조 URL
https://developer.mozilla.org/en-US/docs/Mozilla/Creating_a_Firefox_sidebar
https://github.com/kyoshino/simple-sidebar
https://developer.mozilla.org/en-US/Add-ons/WebExtensions
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/user_interface/Sidebars
https://github.com/mdn/webextensions-examples/

ps. 헐, 위에 적은 debuginfo-install은 시작이었고, 아래와 같은 엄청난 메시지가 나오는데, 포기할까 싶은 생각이 바로 …
debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 cyrus-sasl-lib-2.1.26-20.el7_2.x86_64 elfutils-libelf-0.166-2.el7.x86_64 elfutils-libs-0.166-2.el7.x86_64 file-libs-5.11-33.el7.x86_64 freetype-2.4.11-12.el7.x86_64 gmp-6.0.0-12.el7_1.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.14.1-27.el7_3.x86_64 libX11-1.6.3-3.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXpm-3.5.11-3.el7.x86_64 libattr-2.4.46-12.el7.x86_64 libcap-2.22-8.el7.x86_64 libcom_err-1.42.9-9.el7.x86_64 libcurl-7.29.0-35.el7.centos.x86_64 libgcc-4.8.5-11.el7.x86_64 libgcrypt-1.5.3-13.el7_3.1.x86_64 libgpg-error-1.12-3.el7.x86_64 libidn-1.28-4.el7.x86_64 libjpeg-turbo-1.2.90-5.el7.x86_64 libpng-1.5.13-7.el7_2.x86_64 libssh2-1.4.3-10.el7_2.1.x86_64 libstdc++-4.8.5-11.el7.x86_64 libuuid-2.23.2-33.el7.x86_64 libxcb-1.11-4.el7.x86_64 libxml2-2.9.1-6.el7_2.3.x86_64 libxslt-1.1.28-5.el7.x86_64 libzip-0.10.1-8.el7.x86_64 mariadb-libs-5.5.52-1.el7.x86_64 mod_dav_svn-1.7.14-10.el7.x86_64 mod_wsgi-3.4-12.el7_0.x86_64 nspr-4.11.0-1.el7_2.x86_64 nss-3.21.3-2.el7_3.x86_64 nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64 nss-util-3.21.3-1.1.el7_3.x86_64 openldap-2.4.40-13.el7.x86_64 openssl-libs-1.0.1e-60.el7.x86_64 php-5.4.16-42.el7.x86_64 php-common-5.4.16-42.el7.x86_64 php-gd-5.4.16-42.el7.x86_64 php-ldap-5.4.16-42.el7.x86_64 php-mbstring-5.4.16-42.el7.x86_64 php-mysql-5.4.16-42.el7.x86_64 php-pdo-5.4.16-42.el7.x86_64 php-process-5.4.16-42.el7.x86_64 php-xml-5.4.16-42.el7.x86_64 python-libs-2.7.5-48.el7.x86_64 sqlite-3.7.17-8.el7.x86_64 subversion-libs-1.7.14-10.el7.x86_64 t1lib-5.1.2-14.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64
지금 서버가 테스트 개발 서버라면 몰라도, 준 운용 서버인데, 위와 같은 짓을 하기는 싫은데, …

ps. 환장할 일일쎼… Java는 보통 hang상황에서 thread dump라는 편리한 도구를 사용했었고, apache는 server-status 활용하고, tcpdump나 lsof 등으로 대충 찍으면, 뭔짓을 하는지 나왔었는데, … 지금 버그인지, 뭔지는, gdb로 찾아야 하다니 하면서, …

ps. 정확한 원인은 모르겠으나, 우선 보이는 것부터 잡아보려고, …
#9 0x00007f01cba6a344 in php_verror (docref=, params=params@entry=0x7f01cbb81ce5 “”, type=type@entry=2,
format=format@entry=0x7f01cbb7bb08 “It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you”…,
args=args@entry=0x7fff62819750) at /usr/src/debug/php-5.4.16/main/main.c:862

오늘은 가볍게, vuejs 시작해보기. … 그러다가, bootstrap으로 …

어제, vuejs, reactjs, angularjs 관련 글을 보고, …

angular 같은 경우, typescript 압박에 … 시작하다 말았고, … react도 나중에 보기로 하면서, …

그나마 가볍게 시작하기 좋지 않을까 생각에 vuejs를 시작해 본다. … test 서버를 빨리 만들면 좋은데, 돈이 없어서, …

시작 글을 적어 두고, 차근 차근 시작 …

{{ }} 구문으로 데이터를 전달하는 것이 쉽게 이해되긴하는데, …
v-bind 까지도 쉬운데, … v-if v-for 넘어가니 뭔가 새로운 세상이 열리는 듯 하다. …
일부러 오류를 일으켜 보아야지…
구문 오류나 이름 오류도 잘 잡아내긴 하네, … 역시나 스크립트 영역이다 보니, 이런 특징 때문에 싫어할 사람도 있을 듯.

component까지 오니, 다른 느낌이 있다.
jquery 같은 경우, DOM은 그대로 두고, 거기에 붙여서 쓸 수 있게 해 뒀다고 한다면,
vuejs 같은 경우, DOM에 대한 통제를 완전히 가져가 버린 듯.

참 좋은데, 개념도 알겠고, 코드와 뷰를 엮어 준다는 것까지는 알겠는데, …
extjs 같은 실제 화면 디자인을 품고 있는 것은 아닌 듯 하다,
dgkim은 바로 제품으로(?) 쓸 수 있는 디자인 및 CSS가 포함된 것이 필요한데, …

bootstrap을 파 보아야 할까?

그래서, 바로 bootstrap으로 전환하여 이어 나가본다.

bootstrap 시작하고, navigation bar 따라해 보았다. …

그런데, .. 머리속에 아직 만들고 싶은 것의 스케치가 없어서 이어나가지 못한다.