Programming/node.js2019. 5. 27. 12:28

pdf 읽어오고 변환하는건 python이나 node.js 그리고 java 등에 모두 존재는 하는 듯

그래도 라이센스가 문제인데..

 

[링크 : https://pdfbox.apache.org/]

[링크 : https://www.tutorialkart.com/pdfbox/extract-text-line-by-line-from-pdf/]

 

[링크 : https://itextpdf.com/en]

[링크 : https://stackoverflow.com/questions/4028240/extract-columns-of-text-from-a-pdf-file-using-itext]

 

[링크 : https://www.npmjs.com/package/pdfreader]

[링크 : https://www.npmjs.com/package/pdf-lib]

 

[링크 : http://www.unixuser.org/~euske/python/pdfminer/]

PDFMiner 모듈은 Python 2 버젼에서만 사용 가능

[링크 : https://dgkim5360.tistory.com/entry/python-pdfminer-convert-pdf-to-html-txt]

'Programming > node.js' 카테고리의 다른 글

electron.js  (0) 2019.06.03
npm-run-all 병렬 빌드 (실패)  (0) 2019.05.29
node.js express 301 redirect  (0) 2019.05.15
node.js 항목 확인  (0) 2019.04.23
proxy error: Error: write after end  (0) 2019.04.23
Posted by 구차니
개소리 왈왈/컴퓨터2019. 5. 26. 20:40

고돌이 하는데도 자꾸 뻗어서 아내님이 승질내셔서

그래픽 카드를 달고 해보려고 했는데(가끔 동영상 틀어도 뻗는지라)

 

하드 인식 안되고

메모리도 인식 안되고 난리 피다가

겨우겨우 일단 켰는데

 

결국에는 SATA3 쪽으로는 인식 못시키고 SATA2 로만 인식이 되서

(그마나도 SATA2 2 커넥터는 인식 안함..)

어떻게 해야하나 고민중 펌웨어 문제인지(베타 펌웨어 사용이라서)

아니면.. 물리적 고장인지 모르겠네

Posted by 구차니
개소리 왈왈/컴퓨터2019. 5. 25. 22:55

그래픽 카드 없이 내장 그래픽만으로 쓰는데

팟 플레이어에서 HW  가속 해두면 의외로 자주 시스템이 뻗는다.

머가 문제일까.. 네트워크가 문제일까 하드웨어 디코더가 문제일까..

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

먼가 갑작스런 현자타임  (4) 2019.06.02
혹시나 그래픽 카드를 달려고 했는데  (0) 2019.05.26
다이소 5천원 모니터 받침대  (10) 2019.05.14
diskless 시스템 구축  (0) 2019.05.08
ACPI & smbus  (0) 2019.05.07
Posted by 구차니

누으려고 하거나 점프하면 이가 아파서

애들 병원데려가는 김에 나도 병원을 갔는데

 

 

치과를 가니 항상 그렇듯 파노라마 X레이 찍고

구강에는 문제 없음, 왼쪽 위 송곳니 충치 진행중 크윽...

요즘은 아말감 여간해서 안하니까 인레이나 금.. 28만 (둘다 가격 같다고)

그리고는 이비인후과 가라고 추천

 

그래서 이비인후과 가니

dr : CT 찍자고

나 : 아까 치과에서 찍었는데 받아올까요?

dr : 그건 엑스레이지 CT가 아니고

나 : 아니 거기서 그렇게 이야기 하더라구요 -ㅁ-

아무튼 오늘은 방사선 샤워를 하는구나 푸념

 

결론은.. 코 아래쪽 구강쪽에 비어있어야 하는데 반쯤 찼다고

염증 심하니 금세 낫지 않는다고 약 오래 먹어야 한다는데

dr : 3일치 지어드릴게요

나 : 야간진료 하시나요?

dr : 6:30분 까진 와야 하는데

나 : 빨라야 8:20에 와서요

 

그래서 일주일치 약이 똭!

그리고 겸사겸사(!) 귀도 먼가 굴러 다니는 느낌이라고 해서 봐달라고 하니

dr : 썩션 슉슉슉

나 : (으악 소리 크다 움찔움찔)

 

아무튼 고막쪽에도 좀 붙어있다고 하시는거 보면

병워네서 귀지 제거해서 이명이 좀 덜 오려나 싶기도 하고

 

 

결론 : 오늘 병원+약값으로 3.7만쯤 깨졌나? ㅠㅠ

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

갑자기 사후세계가 있을까요? 라는 질문을 들었다.  (2) 2019.06.14
간만에 피싱 메일  (4) 2019.06.13
비싼 똥개 -_ㅠ  (2) 2019.04.21
딸기향이 싫어진다.  (2) 2019.04.17
희한하게 피곤..  (0) 2019.04.09
Posted by 구차니

UDP를 보다보니 문득 REST랑 잘 어울리겠다 싶고

HTTP 역시 connectionless service다 보니

굳이 무거운(?) TCP를 써야하나 싶어서 검색해보는데

 

HTTP/3 에서 제안되는 녀석으로 QUIC라는 게 있는 듯

 

[링크 : https://en.wikipedia.org/wiki/QUIC]

[링크 : https://thenewstack.io/http-3-replaces-tcp-with-udp-to-boost-network-speed-reliability/]

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

bbs and oprom  (0) 2019.06.05
CVE CWE CPE CVSS SCAP  (0) 2019.06.04
SFF  (0) 2019.02.13
AES-NI 명령어 와 TLS 영향  (0) 2019.02.07
btrfs qnap  (0) 2019.01.16
Posted by 구차니
Programming/C++ STL2019. 5. 24. 15:43

어떻게 보면.. scanf를 좀 편리하게 해주는 cpp용 연산자라고 보면 되려나?

 

[링크 : http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/]

 

string str_sensor_data(mesg);
stringstream stream(str_sensor_data);
for(int i=0;i<5;i++){

    stream >> sensor_data[i]; 

}

[링크 : http://youngmok.com/udp-server-c-class-listening-thread/]

'Programming > C++ STL' 카테고리의 다른 글

cpp 부모타입으로 업 캐스팅 된 객체의 원래 클래스 알기  (0) 2021.09.30
cpp string 관련  (0) 2019.06.10
c++ 함수 인자 기본값  (0) 2017.11.08
cpp string compare 와 ==  (0) 2017.01.31
cpp this  (0) 2016.07.18
Posted by 구차니
Linux API/network2019. 5. 24. 14:11

sento() 에 인자를 좀 바꾸어서 명령어줄 인자를 받으면 재미있긴 한데..

TCP 처럼 클라이언트 별로 accept 해주는 구조가 아니라

개별 클라이언트를 어떻게 구분해야 하지? 라고 고민중

 

server

// Server side implementation of UDP client-server model
#include 
#include 
#include 
#include 
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT     8080
#define MAXLINE 1024

// Driver code
int main() {
        int sockfd;
        char buffer[MAXLINE];
        char *hello = "Hello from server";
        struct sockaddr_in servaddr, cliaddr;

        // Creating socket file descriptor
        if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
                perror("socket creation failed");
                exit(EXIT_FAILURE);
        }

        memset(&servaddr, 0, sizeof(servaddr));
        memset(&cliaddr, 0, sizeof(cliaddr));

        // Filling server information
        servaddr.sin_family = AF_INET; // IPv4
        servaddr.sin_addr.s_addr = INADDR_ANY;
        servaddr.sin_port = htons(PORT);

        // Bind the socket with the server address
        if ( bind(sockfd, (const struct sockaddr *)&servaddr,
                        sizeof(servaddr)) < 0 )
        {
                perror("bind failed");
                exit(EXIT_FAILURE);
        }

        while(1)
        {
        int len, n;
        n = recvfrom(sockfd, (char *)buffer, MAXLINE,
                                MSG_WAITALL, ( struct sockaddr *) &cliaddr,
                                &len);
        buffer[n] = '\0';
        printf("Client : %s\n", buffer);
//      sendto(sockfd, (const char *)hello, strlen(hello),
        sendto(sockfd, (const char *)buffer, strlen(buffer),
                MSG_CONFIRM, (const struct sockaddr *) &cliaddr,
                        len);
        printf("Hello message sent.\n");
        }
        return 0;
}

 

client

// Client side implementation of UDP client-server model
#include 
#include 
#include 
#include 
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define PORT     8080
#define MAXLINE 1024

// Driver code
int main(int argc, char **argv) {
        int sockfd;
        char buffer[MAXLINE];
        char *hello = "Hello from client";
        struct sockaddr_in       servaddr;

        // Creating socket file descriptor
        if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
                perror("socket creation failed");
                exit(EXIT_FAILURE);
        }

        memset(&servaddr, 0, sizeof(servaddr));

        // Filling server information
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(PORT);
        servaddr.sin_addr.s_addr = INADDR_ANY;

        int n, len;

//      sendto(sockfd, (const char *)hello, strlen(hello),
        sendto(sockfd, (const char *)argv[1], strlen(argv[1]),
                MSG_CONFIRM, (const struct sockaddr *) &servaddr,
                        sizeof(servaddr));
        printf("Hello message sent.\n");

        n = recvfrom(sockfd, (char *)buffer, MAXLINE,
                                MSG_WAITALL, (struct sockaddr *) &servaddr,
                                &len);
        buffer[n] = '\0';
        printf("Server : %s\n", buffer);

        close(sockfd);
        return 0;
}

 

[링크 : https://www.geeksforgeeks.org/udp-server-client-implementation-c/]

[링크 : https://www.geeksforgeeks.org/tcp-and-udp-server-using-select/]

 

+

[링크 : https://scrapsquare.com/notes/udp-length]

[링크 : https://en.wikipedia.org/wiki/User_Datagram_Protocol]

 

+

class (cpp) 기반 UDP socket 예제

[링크 : http://youngmok.com/udp-server-c-class-listening-thread/]

'Linux API > network' 카테고리의 다른 글

UDS (Unix Domain Socket)  (0) 2020.09.01
raw socker과 promiscous mode  (0) 2019.07.03
리눅스 TCP 소켓  (0) 2019.05.24
linux udp cpp example  (0) 2019.05.16
linux socket 관련  (0) 2015.01.22
Posted by 구차니
Programming/C Win32 MFC2019. 5. 24. 12:18

코드 분석하다 보니 어떻게 작동할지 몰라서 해보니

헐.. while(0) 이냐 !0 이냐 정도로 밖에 작동하지 않네

예제 소스가 이상한 조건문이 되어버렸네...

 

client_sock에 -1이 들어와도 while은 중단되지 않고 0일때만 중단되는데

그러면 if(client_sock < 0)은 <=0이 아니라 들어갈 방법이 없네?

while( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
{
puts("Connection accepted");

pthread_t sniffer_thread;
new_sock = malloc(1);
*new_sock = client_sock;

if( pthread_create( &sniffer_thread , NULL ,  connection_handler , (void*) new_sock) < 0)
{
perror("could not create thread");
return 1;
}

//Now join the thread , so that we dont terminate before the thread
//pthread_join( sniffer_thread , NULL);
puts("Handler assigned");
}

if (client_sock < 0)
{
perror("accept failed");
return 1;
}

[링크 : https://www.binarytides.com/server-client-example-c-sockets-linux/]

'Programming > C Win32 MFC' 카테고리의 다른 글

vkey win32 / linux  (0) 2021.04.30
strptime  (0) 2021.02.17
c언어용 JSON 라이브러리 목록  (0) 2018.10.23
uuid in c  (0) 2018.10.22
엔디안 급 멘붕..  (0) 2018.05.29
Posted by 구차니
Linux API/network2019. 5. 24. 11:01

개념만 알지 써보진 않은 녀석이라.. 후 공부 해야겠네 ㅠㅠ

역시 공부는 돈받고 해야 제맛

 

테스트 삼아 SOCK_STREAM을 SOCK_DGRAM 으로 바꾸었는데

accept 하는 부분이 달라져야 하는지 정상작동을 하진 않는다.

(댓글들 보면 메모리 누수라던가 여러가지 문제가 넘치는 소스인듯)

그래도 서버 하나 실행하고 클라이언트 여러개 실행해도 각각 응답이 다르게 오는것 봐서는

내가 의도하는 그런 정상적인(!) 서버로 구동되는 건 맞는 듯 하니 일단 패스

 

server

/*
        C socket server example, handles multiple clients using threads
*/

#include
#include      //strlen
#include      //strlen
#include<sys/socket.h>
#include<arpa/inet.h>   //inet_addr
#include      //write
#include //for threading , link with lpthread

//the thread function
void *connection_handler(void *);

int main(int argc , char *argv[])
{
        int socket_desc , client_sock , c , *new_sock;
        struct sockaddr_in server , client;

        //Create socket
        socket_desc = socket(AF_INET , SOCK_STREAM , 0);
        if (socket_desc == -1)
        {
                printf("Could not create socket");
        }
        puts("Socket created");

        //Prepare the sockaddr_in structure
        server.sin_family = AF_INET;
        server.sin_addr.s_addr = INADDR_ANY;
        server.sin_port = htons( 8888 );

        //Bind
        if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
        {
                //print the error message
                perror("bind failed. Error");
                return 1;
        }
        puts("bind done");

        //Listen
        listen(socket_desc , 3);

        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);


        //Accept and incoming connection
        puts("Waiting for incoming connections...");
        c = sizeof(struct sockaddr_in);
        while( (client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
        {
                puts("Connection accepted");

                pthread_t sniffer_thread;
                new_sock = malloc(1);
                *new_sock = client_sock;

                if( pthread_create( &sniffer_thread , NULL ,  connection_handler , (void*) new_sock) < 0)
                {
                        perror("could not create thread");
                        return 1;
                }

                //Now join the thread , so that we dont terminate before the thread
                //pthread_join( sniffer_thread , NULL);
                puts("Handler assigned");
        }

        if (client_sock < 0)
        {
                perror("accept failed");
                return 1;
        }

        return 0;
}

/*
 * This will handle connection for each client
 * */
void *connection_handler(void *socket_desc)
{
        //Get the socket descriptor
        int sock = *(int*)socket_desc;
        int read_size;
        char *message , client_message[2000];

        //Send some messages to the client
        message = "Greetings! I am your connection handler\n";
        write(sock , message , strlen(message));

        message = "Now type something and i shall repeat what you type \n";
        write(sock , message , strlen(message));

        //Receive a message from client
        while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
        {
                //Send the message back to client
                write(sock , client_message , strlen(client_message));
        }

        if(read_size == 0)
        {
                puts("Client disconnected");
                fflush(stdout);
        }
        else if(read_size == -1)
        {
                perror("recv failed");
        }

        //Free the socket pointer
        free(socket_desc);

        return 0;
}

client

/*
        C ECHO client example using sockets
*/
#include       //printf
#include      //strlen
#include<sys/socket.h>  //socket
#include<arpa/inet.h>   //inet_addr
#include 

int main(int argc , char *argv[])
{
        int sock;
        struct sockaddr_in server;
        char message[1000] , server_reply[2000];

        //Create socket
        sock = socket(AF_INET , SOCK_STREAM , 0);
        if (sock == -1)
        {
                printf("Could not create socket");
        }
        puts("Socket created");

        server.sin_addr.s_addr = inet_addr("127.0.0.1");
        server.sin_family = AF_INET;
        server.sin_port = htons( 8888 );

        //Connect to remote server
        if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
        {
                perror("connect failed. Error");
                return 1;
        }

        puts("Connected\n");

        //keep communicating with server
        while(1)
        {
                printf("Enter message : ");
                scanf("%s" , message);

                //Send some data
                if( send(sock , message , strlen(message) , 0) < 0)
                {
                        puts("Send failed");
                        return 1;
                }

                //Receive a reply from the server
                if( recv(sock , server_reply , 2000 , 0) < 0)
                {
                        puts("recv failed");
                        break;
                }

                puts("Server reply :");
                puts(server_reply);
        }

        close(sock);
        return 0;
}

[링크 : https://www.geeksforgeeks.org/...-handling-multiple-clients-on-server-without-multi-threading/]

[링크 : https://stackoverflow.com/questions/31461492/client-server-multiple-connections-in-c]

 

1. Create socket
2. Bind to address and port
3. Put in listening mode
4. Accept connections and process there after.

[링크 : https://www.binarytides.com/server-client-example-c-sockets-linux/]

 

 

+

man page 보는데 특이하게 2번과 3번으로 두개가 있네?

설명 자체는 둘이 좀 달라서 어느게 어떤 차이가 있는지 좀 애매하다.

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

#define _GNU_SOURCE
            /* See feature_test_macros(7) */

#include <sys/socket.h>

int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);

[링크 : https://linux.die.net/man/2/accept]

 

#include <sys/socket.h>

int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);

[링크 : https://linux.die.net/man/3/accept]

 

 

'Linux API > network' 카테고리의 다른 글

raw socker과 promiscous mode  (0) 2019.07.03
리눅스 UDP 소켓  (0) 2019.05.24
linux udp cpp example  (0) 2019.05.16
linux socket 관련  (0) 2015.01.22
멀티캐스트 되는지 여부 확인  (0) 2014.11.21
Posted by 구차니

처음 가입하면 3시간 무료권을 주는데

그렇게 해서 왕복 56km 3시간 30분 정도만에 돌아오니(5시간 대여)

 

13000 + 11000 정도 나온듯

싼거 같으면서도 그리 안싼거 같기도 하고

 

 

그나저나 쏘카라는 특성상 차 옆을 보니 엄청나게 긁히고 난리네

차량 사진 올리라는데 한장 밖에 못 올려서

범퍼쪽만 찍었는데 뒤에도 찍고 그럴걸.. ㅠㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

먼가 바쁜 하루  (0) 2019.06.22
첫? 간만에? 드라이브  (2) 2019.06.16
개복이 구름다리 건넘  (2) 2019.05.23
공사 빡세다..  (2) 2019.05.19
피곤쓰  (2) 2019.04.28
Posted by 구차니