기타: 123개의 글
쉘(shell)에서 특정 컬럼 더하기 데이터 분석을 하다 보면 특정 컬럼의 값을 더할 때가 있다. 예를 들어서 positive/negative의 비율(ratio)을 확인할 때, label의 값이 0 또는 1의 값이면, 1의 값을 모두 더하면 positive의 개수를 알 수 있다. 전체 positive의 개수를 확인하고, 파일의 line수를 계산하면 쉽게 알 수 있다. shell $ cat data | wc -l 데이터 1 2 3 4 5 6 7 8 9 명령어 shell $ cat data | awk '{sum+=$2 ; print $0} END{print "sum=",sum}' 출력 결과 1 2 3 4 5 6 7 8 9 sum= 15 출처 : ourcstory.tistory.com/372?category=..
command to split the file into multiple files 한개의 파일을 여러 파일로 분할하는 방법 데이터의 사이즈가 너무 크게 되면 메모리에 올릴 수 없다. 파일 하나를 shuf하거나 다른 작업을 할때, 메모리가 넘칠 수 있다. 하나의 파일을 여러개의 파일로 분할하자 파일의 개수와, 행의 개수를 지정 한다. 코드 awk -F'|' -v fileformat="/abc/output/file_%04d.txt" -v max=3 -v field=5 ' NR == 1 {header = $0; next} ! ($field in seen) { seen[$field] if (++n % max == 1) { close(out) out = sprintf(fileformat, ++f) print he..
쉘(shell) 스크립트에서 에러가 발생하면 메시지 보내는 방법 들어가며 쉘에서 스크립트 실행을 한 이후에 에러까 발생하면 메시지를 보내자 기존에 있는 메신저앱 텔레그램(telegram)을 이용하자 쉘 스크립트 어디에도 마지막에 한줄 추가로 가능 function sendmsg() { python telegram.py $1 } python app.py || {sendmsg "fail"; exit 1;} 출처 : ourcstory.tistory.com/331?category=716432
쉘(shell)에서 날짜(date) 반복 하는 방법 요구사항 월별, 일별 데이터를 읽어야 한다. 반복문을 이용해 반복적으로 날짜를 읽어야 한다. 날짜의 시작과 끝을 설정해야 한다. bash에서 제공하는 date를 이용해서 여러가지 포맷으로 출력한다. date의 연산(+, -)가 가능해야 한다. #!/bin/bash now=`date +"%Y-%m-%d" -d "05/06/2012"` end=`date +"%Y-%m-%d" -d "05/23/2012"` while [ "$now" != "$end" ] ; do now=`date +"%Y-%m-%d" -d "$now + 1 day"`; echo $now done 출처 : ourcstory.tistory.com/326?category=716432
이번 시간에 다루어볼 내용은 proto message로 생성한 Java를 Json String으로 변환하는 방법이다. proto로 생성한 java 인스턴스를 아래와 같이 json string으로 바꾸려면 예외가 발생한다. #protoJava - proto로 생성한 java instance ObjectMapper mapper = new ObjectMapper(); mapper.writeValueAsString(protoJava); 그렇기 때문에 protobuf의 JsonFormat으로 jsonString을 변환해주면 된다. #protoJava - proto file로 생성한 java instance final String jsonString = JsonFormat.printer().print(protoJa..
이전 포스팅에서는 grpc를 이용하여 간단하게 client-server 애플리케이션을 작성하였다. 간단하게 감을 익혀봤으니, 세세한 부분을 스터디 해본다. 오늘은 Protobuf(proto3)에 대해 다루어본다. 메시지 유형 정의 간단한 예를 보자. 검색 요청 메시지이며, 쿼리 문자열과 페이징을 위한 필드를 가지고 있다. syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; } 첫 줄은 proto3 syntax를 사용하고 있음을 지정한다. default는 proto2이다. 그리고 message SearchRequest를 정의한다. message는 자바로 비교하면..
이번 포스팅은 gRPC의 세세한 기능을 다루기 이전에 간단하게 java로 gRPC 서버와 클라이언트 코드를 작성해보고 감을 익혀보는 포스팅이다. 오늘 구성할 프로젝트 구조는 아래와 같다. grpc-common : .proto 파일을 이용하여 client와 server가 공통으로 사용할 소스를 generate한 프로젝트. client와 server에서 submodule로 추가할 프로젝트이다. grpc-server : server역할을 할 gRPC 서버 애플리케이션이다. grpc-client : client역할을 할 gRPC 클라이언트 애플리케이션이다. grpc-common 모든 소스코드는 아래 깃헙 주소를 참고하면 된다. github.com/levi-yo/grpc-common 우선 gradle 프로젝트를 ..
오늘은 gRPC가 무엇인지 알아본다. 그동안 스터디한다고 마음만 먹고 매일 미루기만 했는데, 황금연휴에 맘잡고 gRPC에 대해 다루어 볼 것이다. 개요 gRPC를 사용하면 클라이언트 애플리케이션에서 마치 자신의 메서드를 호출하는 것처럼 원격서버(gRPC서버)의 메서드를 직접 호출 할 수 있으므로 MSA환경의 서비스를 보다 쉽게 만들 수 있다. 여타 다른 RPC와 마찬가지로 gRPC는 IDL(Interface Definition Language)를 이용하여 서비스를 정의하고 페이로드를 정의하며 gRPC서버는 이 인터페이스를 구현하고 클라이언트 호출을 처리하기 위해 gRPC서버를 실행한다. 클라이언트 측에서 클라이언트는 서버와 동일한 인터페이스를 가지는 스텁 객체를 가지고 있다. ProtoBuf gRPC는 ..
• C++ 11특징 - C++ 11 은 2011년 8월 12일 ISO c++ 표준 위원회의 만장 일치로 통과 되었습니다. 표준으로 인정받은 해에 맞춰 C++ 11이라는 명칭으로 정해졌습니다. - 안정성 및 C++98과의 호환성을 유지 합니다. - 이전의 안전하지 않은 기술에 대해 좀 더 안전한 대안을 제공 합니다. - "부담 최소화"의 원칙. 어떤 유틸리티가 필요로하는 추가적인 자원은 그 유틸리티를 사용할 때만 필요해야 합니다. - 문법의 편의성이 크게 향상 되었습니다. 템플릿에서 가변 인자 새로운 문자열 리터럴 사용자 정의 리터럴 멀티태스킹 메모리 모델 TLS (Thread Local Storage) 특수 멤버 함수의 기본값 사용 및 삭제에 대한 명시적 표시 long long int 타입 정적 asse..