목록4학년/캡스톤 (Capstone) (9)
오래 못 할 짓 하지 않기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lkfkh/btsMayipkjB/EvsulzyOkriWnrMEB5RlVk/img.png)
● 블록 부호:고정된 수의 비트를 갖는 단어의 집합 이러한 단어를 부호어 라고 한다. 위 그림과 같이길이 n인 블록부호가 있다면1) 길이 k 만큼은 정보가 담긴 info bits2) 나머지 n-k 만큼은 Parity bits 로 구성된다. 이런 블록 부호가 만들어지는 방법은 1. 정보원에서 원본 데이터 k 비트를 받아온다.2. 그 k비트를 부호기(Encoder) 에 넣는다.3. Encoder에서 Parity bits가 추가되면서 길이 n인 bits가 생성된다. 원본 메시지는 mParity가 붙은 결과의 길이는 n이 나온다.그리고 그렇게 Parity가 붙은 건 c로 표기한다. 원본 메시지와 부호 결과의 비율을 R(부효율) 이라고 하며이는 k / n 로 나타낸다. 이를 송신하는 경우에는 오류 벡터가 추..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tPFiN/btsL6SoUmmt/WOCXIqDb9vuDjaWv8M8tyk/img.png)
정보 송수신 계통은 아래와 같다. [ 부호기 → [ 변조기 → ( 추가적인 동작 및 노이즈 추가) → 복조기 ] → 복호기 ] 위 결과로 나오는 게 b의 언저리 값이다. * 변조기와 복조기는 서로 Invertible한 관계* 부호기와 복호기도 서로 Invertible 관계 복조기까지 거친 데이터를 복호기에 넣으면복호기에서 오류 검출 및 정정 과정까지 거친다. 부호기와 복호기 사이에 있는 걸 BSC(Binary Symmetry Channel ) 라고 한다. ● BSC의 효과- 천이 확률을 0.5보다 낮게 한다.천이 : 1이 전송되어 0이 되거나, 그 반대인 경우.BCH/RS 부호 혹은 Hamming 부호처럼 간단한 복호 알고리듬이 많이 있다.하지만 이런 것과 완벽히 다른 형태의 부호가 콘볼루션 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSjpbk/btsLFDFenhg/9ykBKmLu2nBDLHEkamRPl1/img.png)
https://github.com/klauspost/reedsolomon GitHub - klauspost/reedsolomon: Reed-Solomon Erasure Coding in GoReed-Solomon Erasure Coding in Go. Contribute to klauspost/reedsolomon development by creating an account on GitHub.github.com 위 코드에 있는 RS 를 사용했다. [ 테스트 ] 1. 이걸 Encoding 해서 여러 조각(w/parity)으로 나누고2. 한 조각을 지워서3. 다시 복구해본다. 1. 여러 조각으로 나누고 ( 개수 지정 가능함 ) 이렇게 여러 조각으로 만들고, 원본 파일을 지운다. 2. 한 조각..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BO6Fm/btsLzb9Rauk/39xqlY6BpFFgRDjxhScY5K/img.png)
파일 시스템 관련된 기능은 version/cmd.go에 있다.이 안에 있는 run func에서는 입력받은 명령어를 처리하는 중에Error가 발생했는지 확인하는 용도. CopyMoveDelete [ Copy ]Init > arguments가 제대로 들어왔는지 확인> arguments에 있는 값들을 fsrc ,name / fdst 로 담아둔다.> 현재 받은 인자들과 copy 명령어를 통해 Run을 돌린다. > case1) 만약 srcFile 이름이 없다면, 이는 Dir이란 뜻이므로, 현재 들어온 이름의 dir을 복사한다. > case2) 파일이 있다면, file을 복사한다. case1 : [ case2 ] : 현재 인자들을 가지고 moveOrCopyFile로 들어간다. ( In ..
package mainimport ( "encoding/csv" "fmt" "log" "net/http" "os" "strconv" "github.com/PuerkitoBio/goquery")var baseURL string = "https://www.saramin.co.kr/zf_user/search/recruit?search_area=main&search_done=y&search_optional_item=n&searchType=search&searchword=python&recruitPage="type extractedJob struct { id string title string location string jobsector string}func main() { var jobs..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RSONv/btsLuNnCYhf/YVIjyZr01VxiSagUkNI330/img.png)
여러 배열 (예시에서는 URL) 에 대한 작업을 할 때하나하나 처리하는 게 아니라 동시에 하고 싶은 경우에 어떻게 처리할까? > Goroutines goroutine을 사용하기 전에는 이런 게 있다면you로 칭찬 10번 때리고, 그 뒤에 Min으로 칭찬 10번 때린다. 하지만 우리가 원하는 건 동시에 you Min을 같이 칭찬하는 것이다. 같이 하는 법은?> Goroutine = [ 사용 방법 ] 함수 Call 앞에 Go만 붙이면 된다.[ 주의 사항 / 한계점 ]main 함수에 두 개의 함수 모두 go를 붙이면 아무것도 출력되지 않는다 이유 : main함수는 go routine을 기다리지 않는다.따라서 , main이 기다릴만한 함수가 하나 돌고 있어야 main이 유효하기에 모두 go를 때려버리면 안 됨..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LdMyt/btsLrJMYYj9/EEMA6MMcmUZaETh02BBrh0/img.png)
우선 account 관련해서 구조체를 만들어보자 그리고 여기도 자바의 class 처럼 구조체의 데이터들과그것들로 가지고 있을 수 있는 function 들이 있다. 하나의 구조체를 만들 때, public으로 만든 NewAccount를 이용하는데반환 타입은 구조체의 주소로 한다. 복제본을 만들지 않고, 구조체의 주소를 반환하는 개념을 이해하면 된다. 근데 여기에서 우리가 만든 account 객체에 대한 balance 값을 바꾸고 싶을 땐 어떻게 해야할까? 여기도 자바랑 비슷하다. owner랑 balance는 priave이니까 여기에 접근할 수 있는 public 함수를 만든다. 하지만 위처럼 하면 문제가 하나 있다.a라는 구조체를 하나 복사해서 거기에 값을 바꾸고 끝남. 그럼 이를 해결하려면 Acc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q3EBt/btsLtJrafZR/oDh7MqWgEgngFrLagak1TK/img.png)
기본적인 파일의 형태는 이렇다. 참고로 알아두어야 하는 건 [ fmt.Println ] 에서 볼 것들이다. 하나의 모듈에서 만든 Println에서 대문자로 선언된 건 다른 곳에서 가져와 사용할 수 있다. >> Go에서의 대문자 선언 = Java에서의 Public class 변수 변수 선언 형태는 다음과 같다. var {변수명} { 타입 } = {할당값}이걸 좀 더 간단하게 바꾼다면{변수명}:={할당값} 이렇게 하면 해당 할당값에 맞는 타입을 알아서 지정해준다 함수 선언 형태 func {함수명} ( a {type} , b {type} ) {return type} {return @@;} [ 기본 형태 ] + Go 에서는 하나의 함수가 여러 개의 Return값을 가질 수 있다!! ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/O89fN/btsIZ8u0Uu5/Uxc2vq6bFvXmGPcPPx3puK/img.png)
ceph storage 란: 분산형 스토리지로 여러 스토리지들을 클러스트로 묶어 하나로 보이게 하는 리눅스 기반 스토리지 Ceph storage의 특징 대규모 확장성 : 성능 저하 없이 최대 10억 개 오브젝트 이상까지 관리할 수 있다복구/복원 = 안정성: 분산형 storage라는 특성으로, 여러 곳에 저장하기 때문에 복구가 용이하다.다양한 형태의 인터페이스, 스토리지 제공: Object , Block , File 등 다양한 Level 의 Storage 인터페이스를 제공한다.저렴하다.구성요소📌RBD (Rados Block Device): virtual disk device- client는 kernel module 이나 librbd를 통해서 이를 사용ㅎ라 수 있다.- Thin - provisionin..