이재홍의 GitHub 탐험기 2014/08/10

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

gridster.js - gridster.js is a jQuery plugin that makes building intuitive draggable layouts from elements spanning multiple columns

https://github.com/ducksboard/gridster.js

jQuery 그리드 플러그인입니다. 윈도우8 메트로UI 메뉴를 웹에서 만들 수 있겠군요. 그리드 안에서 div를 이동시키거나 크기를 조절할 수 있습니다.


coreos-on-do - Script to install CoreOS on Digital Ocean

https://github.com/ibuildthecloud/coreos-on-do

Digital Ocean 가상 서버에 CoreOS를 설치하는 스크립트입니다. CoreOS가 점점 많이 쓰이는 것 같군요.


autosize - jQuery plugin for dynamic textarea sizing

https://github.com/jackmoore/autosize

HTML textarea 태그에 글자를 입력하면 높이가 자동으로 조절되는 jQuery 플러그인입니다. 글자를 지우면 높이가 다시 줄어듭니다.


json-c - Official code repository for json-c

https://github.com/json-c/json-c

JSON의 C언어 구현입니다(C++이 아닙니다). C를 많이 쓰는 윈도우 드라이버에서 유용하게 사용할 수 있겠습니다.


coroutines - Go-style coroutines and channels for C++

https://github.com/maciekgajewski/coroutines

Go 스타일 코루틴과 채널을 C++로 구현한 라이브러리입니다. C++은 뭘 해도 코드가 눈이 아픕니다. 이래서 Go가 나온 것인데...

어쨌든 역발상이라 참신합니다.

#include "coroutines/globals.hpp"
#include "coroutines/scheduler.hpp"
 
#include "coroutines_io/globals.hpp"
#include "coroutines_io/io_scheduler.hpp"
#include "coroutines_io/tcp_acceptor.hpp"
 
#include "client_connection.hpp"
 
#include <iostream>
 
using namespace coroutines;
using namespace boost::asio::ip;
 
void handler(http_request const& req, http_response& res)
{
    res.setStatus(Poco::Net::HTTPResponse::HTTP_OK);
    res.add("Content-Length", "14");
    res.add("Content-Type", "text/plain");
 
    res.stream() << "hello, world!\n";
}
 
void start_client_connection(tcp_socket& sock)
{
    client_connection c(std::move(sock), handler);
    c.start();
}
 
void server()
{
    try
    {
        tcp_acceptor acc;
        acc.listen(tcp::endpoint(address_v4::any(), 8080));
 
        std::cout << "Server accepting connections" << std::endl;
        for(;;)
        {
            tcp_socket sock = acc.accept();
            go("client connection", start_client_connection, std::move(sock));
        }
    }
    catch(const std::exception& e)
    {
        std::cerr << "server error: " << e.what() << std::endl;
    }
}
 
int main(int argc, char** argv)
{
    scheduler sched(4);
    io_scheduler io_sched(sched);
    set_scheduler(&sched);
    set_io_scheduler(&io_sched);
 
    io_sched.start();
 
    go("acceptor", server);
 
    sched.wait();
}

이상 끝.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2014-08-10