mDNS / DNS-SDmDNS(Multicast DNS)와 DNS-SD(DNS Service Discovery) 관련 개발을 진행하게 되어 관련 내용을 간단하게 정리해보려 한다! mDNS(Multicast DNS)DNS-SD(DNS Service Discovery) 로컬 네트워크의 다른 기기를 검색하기 위해 논의되고, 개발되어 널리 사용 중(두 기술은 서로 의존성을 가지고 있지는 않음)로컬 네트워크에 참여한 호스트를 찾기위해서 멀티캐스팅 하는 것이 핵심서비스 타입을 기준으로 서비스를 찾는 방식 mDNS를 이용하면 로컬 네트워크에 참여한 호스트를 자동으로 찾을 수는 있지만 어떤 종류의 서비스인지는 확인할 수 없다. 하지만, DNS-SD를 이용하면 서비스 타입(service type)을 설정하는 것으로 ..
프로그램 생성 과정소스코드는 다음 4가지 과정을 거쳐 실행가능한 프로그램이 됩니다.전처리 : 헤더파일 혹은 매크로를 치환하여 .i 파일로 저장 (#include, #define 등)컴파일 : 저수준의 언어인 어셈블리어로 컴파일 후 .s 파일로 저장 (ex. c++ -> 어셈블리어)어셈블 : 저수준 언어인 어셈블리어를 링커가 읽을 수 있는 목적파일로 변환하여 .o 파일로 저장 ( 기계어로 최종 번역 )링킹 : 목적파일들을 하나로 묶어 실행파일(a.out) 생성위 4가지 동작을 Compiler Coleection(컴파일러 모음집)이라고 부르며,GCC(GNU Compiler Collection) 과 LLVM(Low Level Virtual Machine)이 잘 알려진 모음집입니다. 컴파일 과정그럼 이제 컴파일..
#include #include #include int main(){ std::string response = ""; std::ifstream file("/tmp/response.json"); std::stringstream buffer; buffer
git stash 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어 아직 마무리하지 않은 작업은 commit 하지 않고 나중에 다시 꺼내와 마무리할 수 있음 # stash 스택에 임시 작업 저장 $ git stash # 혹은 $ git stash save # stash 목록 확인 $ git stash list # stash 적용 ( = 하던 작업 가져오기) $ git stash apply $ git stash apply [apply 이름] $ git stash apply --index # staged 상태까지 저장 # 스택에 남아 있는 stash 제거 $ git stash drop # drop + apply $ git stash pop # stash 적용한 것 되돌리기 git sta..
TOTP(Time Based One Time Password) 공유 비밀키와 시간정보를 사용하여 일회성 비밀번호를 생성
# 현재 디렉토리 내의 모든 파일, 디렉토리의 이름중 A가 포함된 파일, 디렉토리의 이름의 A를 B로 변경 $ find ./ -name "*A*" | sed -e 'p' -e "s/A/B/g" |xargs -n 2 mv # 현재 디렉토리 내의 모든 파일들의 내용중 A를 B로 변경 $ find ./ -type f | xargs sed -i 's/A/B/g'
grep 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어 단순 문자열 매칭뿐만 아니라 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식도 사용 가능 정규표현식 메타 문자 (Meta Character) 설명 . 정확히 1개의 문자와 매치 * 앞 문자가 0회 이상 매치 {n} 앞 문자가 정확히 n회 매치 {n,m} 앞 문자가 n회 이상 m회 이하 매치 [ ] 대괄호에 포함된 문자 중 한개와 매치 [^ ] 대괄호 안에서 ^뒤에 있는 문자들을 제외 [ - ] 대괄호 안 문자 범위에 있는 문자들 매치 () 표현식을 그룹화 ^ 문자열 라인의 처음 $ 문자열 라인의 마지막 ? 앞 문자가 0 또는 1회 매치 (확장 정규 표현식) + 앞 문..
문제 문제 바로가기> BOJ 9466번: 텀 프로젝트 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 풀이 dfs 를 이용하여 팀을 이루는 학생들을 구하고, 이를 전체 학생 수에서 빼주는 방식으로 문제를 풀었다. N이 최대 100,000이므로, 방문했던 cycle을 재방문하는 것을 피해야한다. 이를 위해 방문을 시작하고 중간에 cycle이 이루어졌더라도 해당 cycle을 구해주기 위해 cnt 배열을 이용해주었다. #include #include #define MAX 100005 using namespace std;..
sed(Stream Editor) vi 편집기처럼 원하는 내용 추출, 문자열 치환 등 다양한 작업을 수행할 수 있음 1개의 라인씩 입력 라인을 읽어들여 표준출력으로 출력함 홀드 버퍼(데이터의 원본을 가지고 있는 곳), 패턴 버퍼(조건에 따라 가공된 데이터 저장) 두가지 버퍼를 가지고 있음 ed vs sed - sed의 경우 라인들을 하나씩 읽고, 수정하고, 출력하기 때문에 기억장치 안의 버퍼를 사용하지 않음 - 버퍼를 사용하지 않으면 파일의 크기에 제한 없이 작업을 할 수 있음 - ed와 같이 버퍼를 사용하는 경우는 버퍼의 크기보다 큰 파일은 처리할 수 없으며 대개 버퍼의 크기는 1MB - 따라서 sed는 아주 큰 파일을 처리할 때 주로 사용됨 사용법 # 특정 패턴을 적용하여 데이터 추출 sed [패턴]..
문제 문제 바로가기> BOJ 2617번: 구슬 찾기 2617번: 구슬 찾기 모양은 같으나, 무게가 모두 다른 N개의 구슬이 있다. N은 홀수이며, 구슬에는 번호가 1,2,...,N으로 붙어 있다. 이 구슬 중에서 무게가 전체의 중간인 (무게 순서로 (N+1)/2번째) 구슬을 찾기 위해서 www.acmicpc.net 풀이 dfs를 이용하여 중간 크기의 구슬이 될 수 없는 경우를 체크해주었다. #include #include #include #define MAX 100 using namespace std; int N, M; bool visited[MAX]; set fs[MAX], rs[MAX]; void input(){ cin >> N >> M; int a, b; for (int i = 0; i < M; i..
문제 문제 바로가기> BOJ 20040번: 사이클 게임 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 풀이 union-find를 이용하여 cycle을 찾아주었다. #include #define MAX 500005 using namespace std; int N, M; int par[MAX]; int find_(int x){ if(par[x] == x) return x; return par[x] = find_(par[x]); } int union_(int y, int x){ int py = find_(y)..
리눅스에서 패키지 설치 권한도 없을 때 실행하기 위해 다음과 같이 docker를 rootless로 설치할 수 있다. $ curl -fsSL https://get.docker.com/rootless | sh # (설치 후) 화면에 나온 EXPORT 명령어 2개 입력 (복붙) $ systemctl --user start docker
문제 문제 바로가기> BOJ 3020번: 개똥벌레 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 풀이 각각의 높이(h)로 날 때, 파괴하게 되는 장애물 수를 이분탐색을 이용해서 구해주었다. 석순, 종유석으로 나눠 하면서 이상한 부분에서 너무 헷갈렸다 ................ #include #include #include using namespace std; int N, H; vector up, down; // 석순, 종유석 void input(){ cin >> N >> H; for (int i = 0; ..
오늘 밤 이곳에 그려진 이 계절은 뜨거운 여름이 되었다 사랑을 외치던 그때가 온 것처럼 모두가 이 노래를 외쳤다 그때의 우리가 흘렸던 눈물만큼 우리의 미소가 흘렀다 너희가 있어서 이 겨울도 아름다울 거야 난 지금 네게 가고 있는 길이야 봄의 끝보다 훨씬 빠르게 아직도 네게 가고 있는 길이야 여름밤 공기보다 뜨겁게 내 어린 시절 우연히 들었던 믿지 못할 한마디 이 세상을 다 준다는 매혹적인 얘기 내게 꿈을 심어 주었어 말 도 안돼 고갤 저어도 내 안의 나 나를 보고 속삭여 세상은 꿈꾸는 자의 것이라고 용기를 내 넌 할 수 있어 그냥 이대로 이끌리듯 날 놓아주면 난 괜찮을까 지금 내 앞에 흔들리듯 안길 것 같은 또 다른 내일 Oh 머리부터 발끝까지 다 사랑스러워 Oh 니가 나의 여자라는 게 자랑스러워 무뚝뚝..
Jenkins Agent Node Master - Slave 구조 관리는 Master 노드에서, 빌드는 Agent 노드에서 진행 Jenkins Agent 설치 파일을 배포하여 Master 노드에 대한 1:1 연결 Jenkins Agent Node 생성 1. Jenkins 관리 > Nodes 2. New node를 클릭하여 새로운 agent 생성 Name : Agent로 사용할 node의 이름 Number of executors : Agent node의 동시 job 실행 개수 Remote root directory : agent를 설치할 jar 파일이 위치해야 할 곳 Launch method : Agent로 사용할 곳의 접속정보 (JAVA / SSH 등 방법 존재) Jenkins Agent Node 실행 ..