Dplex

Dplex.egloos.com

포토로그




node 와 drag and drop 으로 파일 전송

main.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Dplex</title>
    <style type="text/css">
        #py {
            height: 263px;
            width: 1150px;
        }
    </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
    <script src="http://cdn.binaryjs.com/0/binary.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        var y;
        var client = new BinaryClient('ws://192.168.0.4:8020');
        client.on('open', function () {
            var box = $('#box');
            box.on('dragenter', doNothing);
            box.on('dragover', doNothing);
            box.text('Drag files here');
            box.on('drop', function (e) {
                e.originalEvent.preventDefault();
                var files = e.originalEvent.dataTransfer.files;
                for (var i = 0; i < files.length; i++) {
                    file = files[i];
                // Add to list of uploaded files
                $('<div align="center"></div>').append($('<a></a>').text(file.name).prop('href', '/' + file.name)).appendTo('body');

                // `client.send` is a helper function that creates a stream with the
                // given metadata, and then chunks up and streams the data.
                var stream = client.send(file, { name: file.name, size: file.size });

                // Print progress
                var tx = 0;
                stream.on('data', function (data) {
                    $('#progress').text(Math.round(tx += data.rx * 100) + '% complete');
                });
                }
            });
        });

        // Deal with DOM quirks
        function doNothing(e) {
            e.preventDefault();
            e.stopPropagation();
        }

        socket = io.connect('http://192.168.0.4:8021');
        window.onload = function () {
            console.log("load Complet");
            socket.on('webText', function (data) {
                console.log("webText : " + data);
                document.getElementById("py").value = data;
            });
            socket.on('fileList', function (data) {
                console.log(data);
                for (var i = 0; i < data.length; i++) {
                    $('<div align="center"></div>').append($('<a></a>').text(data[i]).prop('href', '/' + data[i])).appendTo('body');
                }
            });
        }
        function abc() {
            var x = document.getElementById("py").value;
            console.log(x);
            socket.emit('webmessage', x);
        }
    </script>
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="uploadFile" />
        <input type="submit" name="Upload" />
    </form>
    <div id="progress" align="center">0% complete</div>
    <div id="box" style="background: #eee; font-size: 26px; width: 400px; height: 300px;line-height: 300px; margin: 0 auto; text-align: center;">
        Drag Files   
    </div>
    <textarea id="py" type="text" onkeyup="abc()"></textarea>
</body>
</html>





app.js

var express = require('express3')
    , fs = require('fs')
    , io = require('socket.io')
    , http = require('http');

var app = express();
app.use(express.static(__dirname + '/files'));
app.use(express.bodyParser());
// 웹서버 생성 및 실행

//var Fo = new ActiveXObject("Scripting.FileSystemObject");

//var FSo = new Enumerator(Fo.GetFolder());
//for (i = 0; !Fso.atEnd(); FSo.moveNext()) {
//    console.log(FSo.item().name);
//}


var server2 = require("http").createServer(app).listen(8021, function () {
    console.log("start server 8021!!!");
});

var server = require("http").createServer(app).listen(8020, function () {
    console.log("start server 8020!!!");
});


var io = io.listen(server2);
var fileList = [];
var BinaryServer = require('binaryjs').BinaryServer;
var bs = BinaryServer({ server: server });

bs.on('connection', function (client) {
    client.on('stream', function (stream, meta) {
        console.log(meta.name);
        fileList.push(meta.name);
        console.log(fileList);
        var file = fs.createWriteStream(__dirname + "\\files\\" + meta.name);
        console.log(file.path);
        stream.pipe(file);
        stream.on('data', function (data) {
            stream.write({ rx: data.length / meta.size });
        });
    });
});

app.get('/', function (request, response) {
    console.log("comecome");
    fs.readFile('main2.html', function (error, data) {
        response.writeHead(200, { 'Content-Type': 'text/html' });
        response.end(data);
    });
});

app.get('/upload', function (request, response) {
    console.log("upload start~");
   
});

var message = "";
io.sockets.on('connection', function (socket) {   // 받음 처리
    console.log("come");
    socket.emit('webText', message);
    socket.emit('fileList', fileList);
    socket.on('webmessage', function (data) {
        console.log("websend" + data);
        message = data;
        socket.broadcast.emit('webText', data);
    });
    socket.on("myFile", function (data) {
        console.log("myFile " + data);
        fileList.push(data);
    });
});


회사 서버에 구축해 놔야겠다 ㅋㅋ

안녕하세요 신입사원입니다. 일상

5월 4일날 부서에 배치를 받고.. 가만히 방치를 당하고 있다가..

오늘은 지도선배 같은(?)분이 일일이 소 파트를 돌면서 저랑 신입사원 한명을 소개시키는 자리가 있었습니다..

약 78명.. 물론 안계신 분도 계셨지만.. 그분들 앞에서 일일이 저희들을 소개시켜주고.. 멤버십 출신이라고도 말씀해주시고..

잘할거라고 기대도 해주시고.. 그 기대에 부응해야겠지만.. 아직은 잘 할 수 있을지 의문이네요..

넴넴;; 파트장님께서 자신의 파트에 대해서 간략하게 설명해주시고.. 파트에 어떤 프로젝트가 있는지 설명해 주는 자리를 가진후에 저희에게 3개의 소파트 지망을 하게 한후.. Project Leader님들과 따로 면담을 하는 자리를 내일까지 가지게 됩니다..

리눅스 커널과 AP쪽 관련 프로젝트를 하길 희망하지만.. 제 의사와는 별개로 그 파트의 TO가 있어야 겠지요..

제 인생에서 굉장히 중요한 순간인데.. 순간의 혹함이 아닌 신중에 신중을 가지고 지원해야겠지요..

아자아자 새로운 도약을 꿈꾸며..

Second Run~~ 혹은 Third Run ㅋㅋ

Little Endian vs Big Endian 기타

메모리 번지가 높은쪽에서 낮은쪽 -> 리틀엔디안

메모리 번지가 낮은쪽에서 높은쪽 -> 빅엔디안(사용자의 가독성.)

259 를 표현하자면...

low  0000000~00001 00000011  high  -> 빅엔디안(암, 네트워크 통신)

high 00000011 00000001 0~00   low   -> 리틀엔디안(인텔)

java는 cpu에 상관없이 빅엔디안으로 처리하지만...

c언어에서는 프로그래머가 고려하여서 설계!!!!!!!


안녕하세요. 신입사원입니다. 생각

사업부 : DMC R&D Center
부서 : Design Solution Lab(DSL)

2월 27일 산청연에서 SVP라는 그룹입문 연수를 받고...
약 3주간의 길다면 길고 짧다면 짧은.. 아쉬운 연수를 뒤로하고..

3월 24일 삼성전자 인재개발원에서 SEC라는 전자입문 연수를 받고..
2주라는 짧은 기간동안 전자친구들과 거리낌없이 친해지고..

4월 6일 삼성전자 DMC R&D Center에서 사업부 연수를 받고..
6일이라는 정말 짧은시간.. 그것도 출퇴근인 까닭에 사업부 친구들과는 아직 서먹한 관계가되고..

사실 너무 기쁘네요 요즘은.. 원하는 사업부는 아니지만.. 원하는 사업부보다 더 좋은(?) 사업부에 배치가 되어..

정말정말 뿌듯합니다.. 2년간의 멤버십 활동을 보상받는 기분은 아니지만.. 무지 감사하네요;;

처음에 전자연수가 끝나고 수료증을 받는데.. D라는 글자만 처음에 보여서.. 응?? DS 소프트웨어 연구소일리가 없는데.. 하고 차마 열어보지 못하고 있었는데.. 전자연수 동기가.. "형 제가 열어볼게요~~" 약간 체념하고 있는 찰나에.. 뜬금없이 악수를 건네며 축하를 해주더라고요..

오 머지? 소프트웨어 센터일리가 없는데..... 사실 소프트웨어 센터가 될거라는 60%정도의 확신이 있어.. 기대반설렘반하고 있었는데.. D가 떠서.. 약간 멘붕상태였습니다..

얼른 악수따위 버리고 확인했습니다...................................;;

맙소사!!!!! DMC라니!!!!!!!!!!!!!!!!!!!ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그리고.. 사업부연수때 배치면담을 하였는데.. 1지망 DSL을 적은 친구들이 10명정도가 있었습니다..

2명정도 뽑는다는 소리를 듣고.. 안되겠지.?? 여긴 나보다 뛰어난 사람들이 너무많아.. 많아도 너무 많아.. 난 안될거야~ㅠㅠ

하고 절망하고 잇었는데.. 맙소사.. DSL에 배치를 받았습니다.. 10명중에 3명이라는 비교적 낮은 확률이지만.. 경쟁률을 뚫고야 말았습니다!!!!!!!!!!!!!!!

짝짝짝

어떤사업부에 들어가, 어떤부서에 배치가되고, 어떤곳에 가서, 어떤분을 만나, 어떤일을 하게되었습니다...

어떤분을 만나느냐가 가장 중요하겠지만.. 그 외의 어떤은 다 제가 하기엔 분에넘치고 복받은것 같아.. 정말 감사합니다..

헤헤

소켓 프로그래밍 AF_INET VS PF_INET C/C++

리눅스로 정확히는 CentOS로 꼼지락 꼼지락 거리다가.. 서버를 하나 짜야되는 상황이 왔어요..ㅠ 입사 얼마남지 않았는데.. 그놈의 외주때문에;; 째고 갈려다가 후배가 너무 안타까워서 일단은 해보는데까진 해볼려고 이것저것 만져보고 있는데... 흐규..ㅠ

사실 boost를 이용해서 간단하게 짤려고 했는데.. 이미지 바이너리 전송이 가끔 깨지는 경우가 발생해서.. 왜 그런지 이유를 모르겠네요.. 디버깅 돌려봐도 계속 4096byte씩 받아오다가 가끔 EOF가 아님에도 불구하고 조금 모지라게 받아와서.. 여기저기 sleep을 넣어봤다가 핑퐁식으로 구성해봤다가 별짓을 다해봐도 잘 안되더라구요 ㅠㅠ async로 짜면 어떻게 될거 같긴 한데.. 시도해보기 싫고 머 그냥 라이브러리 의지하지말고 걍 짜자라고 마음먹고 vim으로 이케이케 시도해보다가.. 새로운 사실을 알게됬네요...

제목처럼 AF_INET과 PF_INET이 짬뽕으로 들어있는 소스를 보고 살짝 멘붕이 왔습니다.. AF_INET은 리눅스 수업시간에 많이 들어본 상수값인거 같긴 한데.. 사실 PF_INET은 이번에 알게된 상수네요.. 겉핥기식 공부의 폐해인것 같습니다;;ㄷㄷ

serv_sock = socket( PF_INET , SOCK_STREAM , 0 );

memset( &serv_addr , 0 , sizeof( serv_addr ) );
serv_addr.sin_family = AF_INET;

소스를 살짝 첨부하자면 socket scripter를 만들때는 PF_INET을 이용해서 만들고.. socket 구조체의 sin_family에는 AF_INET 을 대입하는 소스를 보면서.. 오잉?? 왜 다른 프로토콜? 을 사용해서 연결하는거지.. 라는 의문을 가져서 바로 구글링을 해본결과.. 둘다 같은 상수값 2를 들고 있다고 하네요..

그럼 왜 같은 값 2를 들고 있는 상수를 2개나 정의해 놓았을까요..?

socket 함수를 통해서는 프로토콜을 정의하는것이고..

구조체의 sin_family에서는 주소체계를 의미한다고 합니다.. 사실 그게 그거같아보이긴 하지만.. 설계자 입장에선 상당히 달라보였나 봐요..ㅠㅠ 그래서 socket 함수에서는 TCP(연결) UDP(비연결) 등의 프로토콜을 정의하고, sin_family에서는 ipv4인지 ipv6인지 등의 주소체계를 구별해준다고 합니다..

잠이와서 주저리주저리 했는데.. 요즘 너무 나태해져서.. 다시 버닝해야될거 같네요 @!

ps) 혹시 boost에서 async로 통신하는 방법 아시는분..ㅠ 도와주세요 굽신굽신;;
ps2) 이미지 바이너리를 부스트에서 fread등을 통해 버퍼에 쌓은후에 안드로이드로 전송하는데.. 안드로이드 단에서 가끔씩 4096byte(정의해놓은 패킷사이즈) 만큼 받질 않고.. EOF가 아닌데도 불구하고 왜 못받을까요??ㅠ

1 2 3 4 5 6 7 8 9 10 다음