두번째 책이 완성되어 공식 출판되었다.

풀스택 개발자를 위한 블록체인 댑 개발에 초점을 맞춰 완성된 이 책은 플랫폼으로서 ‘이더리움(ETHEREUM)’을 선택했다. 이는 많은 리소스와 커뮤니티를 가지고 쉽게 블록체인 개발에 접근할 수 있기 때문이며, EOSIO와 같은 새로운 플랫폼은 나온 지 얼마 안 된 신생 플랫폼으로서 빠르게 기술 문서가 바뀌어 가고 있기 때문이다.

이더리움을 중점으로 다루고 있으나, 전반적으로 컨트랙트(CONTRACT)와 같은 키의 기본 사용 방식들은 비슷하기 때문에 다른 플랫폼을 학습하는 경우에도 수월할 것이다. 블록체인에 관심이 생겨 입문하려는 독자들도 간편하게 따라할 수 있는 난이도로 구성했다.

이 책의 주요 특징은 다음과 같다.

  • 최신 웹 기술로 빠르게 블록체인 서비스를 만들 수 있다.
  • ES8의 주요 특징을 익힌다.
  • 블록체인의 기본 개념과 이더리움을 살펴보고, 스마트 컨트랙트 개발을 위한 솔리디티를 익힌다.
  • Truffle, Vue, Web3 등의 다양한 라이브러리와 도구를 활용하여 댑을 빠르게 만들어 본다.
  • 스마트 컨트랙트를 배포하고, 웹 서비스와 유연하게 결합하는 방법을 익힌다.
  • ERC20과 ERC721을 알아보고, NFT 기반의 댑을 만들어 본다.

구매 링크는 다음과 같다.


Posted by Elegant Universe

누구나 쉽게 배우는 챗봇 서비스 모던 웹 기술로 구현하는 챗봇 실무 예제


https://book.naver.com/bookdb/book_detail.nhn?bid=13733578


모던 웹 기술로 구현하는 챗봇 실무 예제

현재 챗봇에 대한 관심이 높아지고 있습니다. 국민 메신저 앱인 카카오톡을 비롯해서 페이스북 메신저, 기업용 메신저로 각광받는 슬랙 등 다양한 커뮤니케이션 툴에서 챗봇을 지원하고 있습니다. 그리고 이 챗봇을 만들기 위한 다양한 도구들이 있습니다.

그중에서 구글이 개발한 DialogFlow는 자체 학습한 대용량 데이터 세트와 편리한 인터페이스 및 통합 도구를 제공하여, 개발자 누구나 손쉽게 챗봇을 만들 수 있습니다.

이 DialogFlow를 활용하여 실용 서비스로 배포하기 위해서는 다양한 웹 기술이 필요합니다. 이 책에서는 빠르고 재미있게 본인의 아이디어를 실제 결과물로 구현할 수 있는 모던 웹 기술을 학습합니다. 

자바스크립트의 최신판인 ES6부터 웹 프론트엔드 프레임워크 폴리머, 클라우드 데이터베이스 서비스인 파이어베이스를 소개하고, 이를 응용하는 과정을 다양한 예제를 통해 설명합니다. 이 책을 통해 여러분도 자신만의 챗봇을 활용한 응용 서비스를 만들 수 있게 될 것입니다.

이 책의 특징

- 챗봇 개발에 필요한 기술을 단계별로 차근차근 학습할 수 있도록 설명했다.

- 최신 웹기술로 빠르게 AI 서비스를 만들 수 있도록 구성했다.

- 챗봇 기술의 현주소를 파악할 수 있다.

이 책이 필요한 독자

- 최신 웹 기술에 관심이 있는 독자

- 현재 AI 챗봇의 기술 트렌드를 확인하고 적용하고자 하는 독자

- 풀스택 엔지니어를 지향하면서 다양한 응용 기술을 활용하고 싶은 독자


Posted by Elegant Universe

HTML5 Web Audio API

2012. 9. 26. 22:12


출처: google - moog doodle


수년전 부터 W3C에서 정립하여 여러 웹,모바일 브라우저에서 그 스펙을 적용하고 있는 HTML5. 

새로운 기술들이 탑재되고, 생각보다 빠르게 여러 브라우저(IE를 제외한)에서도 그 기술이 지원되는 것을 보면, 앞으로의 웹과 모바일의 미래가 무척 기대됩니다.


최신 HTML5 기술의 변천과 튜토리얼을 보시려면, (http://www.html5rocks.com/) 이 사이트가 킹왕짱입니다.


저는 특히, web audio API 에 관심이 많은데, 지금으로부터 약 3여년 전쯤에 andre-michelle(http://andre-michelle.com/)이 Flash 를 이용한 재미난 음악 장난감을 만든 것들을 보고서 무척 감명을 받았는데요. 이런 플래시 음악 어플리케이션을 만들기 위해, 여러 관련 프로그램 구조를 파기도 하고, 소셜 게임을 위한 프로토타입도 만들었지요. 또, flash audio API 에 대한 지원을 제대로 해달라는 캠페인인 Adobe making noise 에도 큰 동감을 하고, 유저들이 협업하여 하나의 음악을 만드는 웹2.0 서비스에 대한 비즈니스모델도 생각을 해봤지만, 전반적인 내공의 한계에 부딪혀 진척이 무척 느려왔었습니다.


불행인지 다행인지, 외국의 그러한 기술로 만들어진 웹서비스는 거의 다 망해서 지금은 흔적조차 찾을 수 없는 서비스가 되었고, 설상가상, 잡스가 아이폰에 플래시를 지원하지 않는다는 공고를 내리면서부터, 플래시에 대한 수요는 급속도로 줄어들었고, 그러한 RIA(Rich Internet Application)는 플래시에서 HTML5로 빠르게 전이되었습니다. 앞으로의 웹의 미래는 HTML5 가 좌우할 거라는 의견이 대세이며, 각 브라우저의 적극적인 동참(특히, 구글 크롬의 주도가 인상적임. http://www.chromeexperiments.com/ )이 이 대세론에 무게를 더하고 있는데요. 요즘 느끼는 Web Audio API 의 기술 적용 속도는 무심코 넘겨볼 수 없을 것 같습니다. 


약 7달 쯤에 Web Audio API Spec ( https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html ) 에 있는 왠만한 오디오 어플리케이션을 개발할 수 있는 다양한 API를 보면서 감탄을 하였는데, 그 때 제대로 돌아가는 브라우저가 크롬 하나뿐이었다면, 지금은 크롬 외에 firefox, opera, safari 등에서도 부분적으로 적용이 시작되고 있는 부분은 무척 호의적입니다.


이와 관련된 기술의 최신 뉴스는 여기있습니다.

http://www.html5audio.org/


이 곳 정보들을 보면 다양하고 새로운 웹 오디오 기술이 빠르게 등장하고 적용되고 있는 모습을 볼 수 있습니다. 

요즘 눈길을 끄는 소식들은 크롬에서 모바일이나 데스크탑에서 마이크 인풋을 받을 수 있다는 것과 얼마전에 web MIDI API를 W3C에서 정의하기 시작했다는(http://dvcs.w3.org/hg/audio/raw-file/tip/midi/specification.html) 것입니다.


어쩌면 멀지 않은 미래에는 웹을 통해서, 음악가들이 실시간으로 연주를 협업하고 공유하는 세상이 찾아올 것입니다. 이는 음악 시장과 문화의 급격한 변화를 초래하는 것은 당면한 사실이겠지요. 앞으로의 행보를 주시해야 하고 기대되는 이유도 여기에 있다고 해도 과언이 아닙니다.


사실, 실시간으로 참여하여, 연주를 협업할 수 있는 음악 웹서비스가 현재 존재합니다.

http://labs.dinahmoe.com/plink/

http://www.technitone.com/

요즘 웹기술의 핫이슈인 nodeJS라는 비동기 이벤트 드리븐 기술을 이용하여, 실시간으로 유저가 발생한 음이 같은 방에 있는 유저 모두에게 들리며 하나의 음악을 합주할 수 있는 어플리케이션으로써, 현재의 최신 웹기술을 모두 활용한 사례라고 볼 수 있습니다. 아직은 크롬을 제외한 브라우저에서 완벽히 지원하지 않지만, 이도 단순히 시간문제이구요. 저도 이에 영감을 받아 다음 달 정도에 음악 웹앱을 퍼블리싱할 계획에 있습니다. 

어떻게 만들어졌는지 궁금한 분들은

http://www.html5rocks.com/en/tutorials/casestudies/technitone/

이를 통해 확인할 수 있습니다.


그밖에 Web Audio API에 대한 기본적인 설명과 예제들은 이렇습니다.

http://www.html5rocks.com/en/tutorials/webaudio/intro/

http://chromium.googlecode.com/svn/trunk/samples/audio/samples.html

http://webaudiodemos.appspot.com/



Posted by Elegant Universe


Could not reliably determine the server's fully qualified domain name, using 123.456.789.123 for ServerName
윈도우상에서 한동안 이런 아파치2.2의 에러와 함께 레일스 도메인이 애플리케이션과 맵핑되지 않는 문제가 있었는데, 어느새 풀렸다. 솔직히 왜 이러는건지는 잘 모르겠다;

차후 문제를 위해 기록해둔다

httpd.conf 파일에

기본 포트를 설정하고
Listen 80

module을 로드한다

LoadModule deflate_module modules/mod_deflate.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule rewrite_module modules/mod_rewrite.so

가상호스트 설정은

<VirtualHost *:80>
    ServerAdmin sirius@abc.com
    DocumentRoot "C:/web_apps/myapp/public"
    #ServerName www.mydomain.net
    ServerAlias mydomain.net

    <Directory "C:/web_apps/myapp/public">
      options FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all
    </Directory>
     
    <Proxy balancer://mongrel_cluster>
     BalancerMember http://127.0.0.1:4001
     BalancerMember http://127.0.0.1:4002
    </Proxy>
   
    RewriteEngine On

    # Uncomment for rewrite debugging
    #RewriteLog logs/your_app_deflate_log deflate
    #RewriteLogLevel 9
    # Check for maintenance file and redirect all requests
    RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
    RewriteRule ^.*$ /system/maintenance.html [L]
    RewriteRule ^/$ /index.html [QSA]

   # Rewrite to check for Rails cached page
   RewriteRule ^([^.]+)$ $1.html [QSA]
  
   # Redirect all non-static requests to cluster
   RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
   RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
  
   # Deflate
   AddOutputFilterByType DEFLATE text/html text/plain text/xml
   BrowserMatch ^Mozilla/4 gzip-only-text/html
   BrowserMatch ^Mozilla/4\.0[678] no-gzip
   BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  
   # Uncomment for deflate debugging
   #DeflateFilterNote Input input_info
   #DeflateFilterNote Output output_info
   #DeflateFilterNote Ratio ratio_info
   #LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
   #CustomLog logs/your_app_deflate_log deflate

    ErrorLog "C:/apache/logs/error.log"
</VirtualHost>

[Deploying Rails Applications 참고]

mongrel_rails로 서비스를 등록하여 관리한다

mongrel_rails service::install -N MyApp_4001 -p 4001 -e production
mongrel_rails service::install -N MyApp_4002 -p 4002 -e production

p.s
간혹, 예전 apache 버전이 완전히 지워지지 않아 문제 생기는 것도 있다.
방화벽도 확인 바람!

위 책에 나온걸 보면 윈도우는 리눅스에 비해 성능은 대략 반정도 된다고 하더라

• Change how you use sessions. How are sessions managed in your
application? The P-Store, or file-based store, can often be slow.
Consider moving your session store into your database, or investigate
other session-storing mechanisms.
• Go through your development logs, and make sure you’re not
making unnecessary calls to your database. Simply adding an
:include to a finder can really help an application’s performance,
and it is often missed.
• Use fragment, action, and page caching as much as you can. Since
Ruby is slow on Windows, you want to make as much use of page
caching as you possibly can so that Rails is never invoked.
• Ensure that nothing is interfering with the process. Certain security
auditing software, quota managers, and virus scanners can
drastically reduce the amount of requests you can handle. Watch
your performance monitor for any spikes when testing your
application.

윈도우 레일즈 성능 최적화 부분만 따왔다.

Posted by Elegant Universe
레일스)
윈도우에서 attachment_fu 를 이용하여 이미지를 업로드하였을때, 파일 사이즈에 따른 문제가 있었다. 가령, 20kb 이상의 이미지가 업로드 되지 않는 것이다.
에러 메시지를 찾아보면 "Size is not in the list" 이렇게 나오는데,
솔루션은, size parameter을 분명하게 써주어야한다

has_attachment  :content_type => :image, :size => 0.kilobytes..5.megabytes

여기서, 최소 사이즈를 0 킬로바이트로 꼭 명시해주어야 한다는것.
이렇게 안하면, 안되더라;

다른 이슈들: http://hamptoncatlin.com/2007/attachment_fu-gotchas

Posted by Elegant Universe
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/version.rb:237:in `initialize': undefined method `collect' for #<Gem::Version::Requirement:0x371b2d8> (NoMethodError)


젬을 업뎃안해서 생기는 문제
gem update --system
Posted by Elegant Universe

아나..
flex의 module과 FABridge, swfobject를 같이 쓰게 되었다.
그러다가, flex의 moduleevent가 안먹는거다.  자세히말하면, ModuleEvent.Ready가 dispatch가 안됨...

private var imInfo:IModuleInfo;
private function getModule(url:String) :void
{
    imInfo = ModuleManager.getModule("aaa.swf");
    imInfo.addEventListener(ModuleEvent.READY, funcReady);
    imInfo.load()
}
private function funcReady(e:ModuleEvent) :void
{
   var obModule:Object;
   e.target.removeEventListener("ready", funcReady);
   obModule = iModuleInfo.factory.create();
  
   Alert.show(obModule.toString());
}

구글링 하다가 플렉스 자체의 버그라는 글도 있었는데, 그건 아니었고,
이건 http://www.joshuaostrom.com/2008/08/14/flex-modules-watch-your-scope/
모듈 scope를 전역으로 설정하라는 글이었는데 모듈이 로드될 때, ModuleInfo의 내부 리스너가 소멸되는게 이유다. 여기서의 추정은 가비지 컬렉션 때문이라고..

어쨌든, 뻘짓하다가 다른 프로젝트를 열어서, 위에거 갖다붙이고 그냥 로컬에서 모듈테스트해보니 잘 작동하였다-.-
흠, 그렇다면, swfobject와의 문제가 있는듯? 자바스크립트와 무언가가 엉킨 것 같은데.. 그면 swfobject의 작동은 어케 되냐
index.template.html 파일이 주범인가? 안에 자바스크립트로 통신하는 부분이 있는데 어떠케 영향을 준건가?
흠 이해가 안되.

이부분 잘 모르겠다.

아 이런이런 해결

문제는 멍청하게도 경로를 잘못 찍었다. 아....
Posted by Elegant Universe
흠. sql을 좀 까먹었다.
mysql에는 top 이 안먹어서, Limit으로 쓰인다 하더라. 실험 꽤하다가 드뎌 찾아냄;

테이블에서 id가 아닌 특정 행수에 있는 행을 찾고자 할 때 쓰인다

select * from (select * from [tables] limit 0,특정행수) t order by id desc limit 0,1

Posted by Elegant Universe

카테고리

전체 (118)
Programming (15)
Digital Nomad (2)
Projects (7)
Sound (14)
Travel (69)
Think (9)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함