본문 바로가기

전체 글23

시분할 다중화, 주파수 분할 다중화, 통계적 다중화 시분할 다중화 ( STDM : Synchronous Time-Division Multiplexing ) 하나의 선을 활용하되, 각 노드가 돌아가며 같은 시간 동안 데이터를 전송하는 방법. 공평성 UP => 모든 노드가 동일한 시간 동안 해당 자원(선)을 사용하기 때문. 효율성 DOWN => 선을 사용하지 않아도 되는 노드도 자기 차례가 되면 일정 시간 동안 해당 선을 차지고 있기 때문. Round-Robin => 모든 노드가 순서대로 돌아가며 같은 시간동안 작업을 하는 방식 역시 컴퓨터는 진보와 보수 마냥 효율과 공평성 사이에서 밸런싱을 잘해야 한다. :) 주파수 분할 다중화 ( FDM : Frequency-Division Multiplexing ) 하나의 선을 활용하되, 각 노드가 서로 다른 주파수를 .. 2019. 10. 23.
RN에서 s3에 이미지 올리는 방법(serverless 활용) 잊어버리기 전에. RN에서 S3에 이미지 업데이트하는 방법. 1. S3열고, bucket 만들기 2. Cognito 만들기 => medium.com 블로그 참고 3. serverless 임을 잊지 말고 백엔드를 파는 삽질 하지 말 것. 4. 프론트에만 집중하면 되는데, 일단 인증하는 코드를 삽입해야 함.(프런트에서 upload 기능이 들어가는 파일에 삽입함) AWS.config.update({ region: 'ap-northeast-2', // 리전이 서울이면 이거랑 같게 credentials: new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'medium.com블로그 참고', }) }); var s3 = new AWS.S3({ apiVersion: '200.. 2019. 10. 21.
예상과 다른 실제 사용 반응 처음부터 앱의 정체성을 뚜렷하게 만들지 않았다. 못 만들었다고 하는 게 솔직하겠다. 왜냐하면, 감성과 실용 중에 어떤 것을 강조하여 만들지 결정하지 못했기 때문이다. 어쨌든 깔끔한 이미지로 배포를 했고 사람들이 어떻게 사용하는지 관찰해보았다. 카카오 로그인을 사용했고, 가입에 따로 절차를 두지 않았기에 사용자의 성별, 연령대 등은 알 수 없었다. 그러나 사람들이 사용하는 내용을 보면 대략 연령대가 추측이 되었고, 어떤 목적인지도 뚜렷하게 확인할 수 있었다. 결론은 이렇다. 주 사용자의 연령대 : 고2, 3의 학생들 사용 용도 : 시험을 앞두고 자신을 응원, 위로, 자극 등의 용도로 활용 처음에 했던 예측이 반 정도는 맞았다. 자신에게 쓰는 편지의 감성적인 부분을 사람들은 적극 활용한 것이다. 그러나, 시.. 2019. 10. 21.
round(1.555,2) 는 1.55이다? round() 함수를 시험하다가 사람 참 즐겁게 하는 결과를 만났다. (참고로 round()함수는 반올림을 해주는 python의 내장 함수다.) 다음을 보자. a = 1.2345 round(a,2) 1.23 round(a,3) 1.234 .....띠용? 아니 왜 1.235가 아니라 1.234일까? 반올림하면 1.235가 맞는데? 해서 검색해보니 나와 같은 짓을 한 외국인이 있었다. 결론은 이렇다. 원인은 floating point, 즉 부동 소수점이다. 컴퓨터의 아주 밑바닥까지 들어가면 값은 0과 1로 이루어져 있다. 즉, 2진수로 모든 값을 표현해야 한다. 그러니 위의 a 값이 컴퓨터에는 1.23449999999999999345234119999999........ 따위와 같은 수로 저장 된다는 것이다... 2019. 10. 19.
블록체인- 소프트 포크, 하드 포크 블록을 생성하다 보면 '충돌'이 발생하는 경우가 있다. A-B-C-D-E 이렇게 줄줄이 열차로 이어진 노드가 있다. 그런데 A와 E가 거의 동시에 블록을 생성하고 블록에 각자 내용을 기록해서 피어에 전송한다. 그러면 B는 A가 생성한 블록을 기록하고, D는 E가 생성한 노드를 기록할 것이다.(네트워크 상황 동일, 오류 없음 가정) 그리고 문제는 C다. C는 B가 전송한 블록체인과 D가 전송한 블록체인을 동시에 전달받는다. 이때 누구의 블록체인을 따를 것인가? 먼저, C는 둘 중 무거운 블록체 안을 따른다. '무겁다'라는 것은 블록이 더 길게 이어진 것, 더 많은 블록이 이어진 것을 따른다는 것이다. 한편, 이런 경우가 있다. A와 B가 있는데, A는 프로그램을 업데이트해서 과거에는 없던 새로운 규칙을 적.. 2019. 10. 18.
블록체인-해시 퍼즐, 작업증명 먼저 앞의 글에서 블록에 '기록'을 한다고 했는데, 이제 '누가'기록을 하는지 정해야 한다. 먼저 블록에 기록을 하려면 블록을 생성해야 한다. 이때 블록을 생성하는 작업은 어려워야 한다. 누구나 쉽게 블록을 생성한다면, (후에 좀 더 설명하겠지만)블록에 저장된 내용에 대한 신뢰도가 떨어지게 된다. 따라서 비트코인에서 택한 방법은 '해시 퍼즐'이라는 개념을 도입했다. '해시 퍼즐'이란 주어진 값보다 작은 값을 찾는 행위인데, 쉽게 생각하면 이런 것이다. 1~10까지 적혀 있는 공 중에서 10보다 작거나 같은 공을 찾을 확률은 100% 5보다 작거나 같은 공을 찾을 확률은 50% 1보다 작거나 같은 공을 찾을 확률은 10% 이다. 이처럼 매번 블록을 생성할 때마다 목표값이 주어지고, 각 개인은 특정한 식에 .. 2019. 10. 18.
블록체인-브로드캐스팅 브로드캐스팅 탈 중앙화 시스템에서 거래는 '브로드 캐스팅'을 통해 이루어진다. 중앙화 시스템(우리가 사용하는 은행을 예로들면)에서는 나의 거래 데이터를 중앙 서버에 전송한다. 이에 반해 탈 중앙화 시스템에서는 나의 거래 데이터를 나와 연결된 모든 노드(피어)에게 전송한다. 이렇게 탈 중앙화 시스템에서는 시스템에 참여하는 모든 노드가 서로 데이터를 전송한다. 이론상 모든 노드가 순서는 다르지만 모두 같은 데이터를 가지고 있어야 한다. 하지만 현실에서는 네트워크의 상황이나 네트워크 오류, 피어의 관계 등에 따라(데이터 전달 속도가 다르므로) 특정 시점에 모든 노드가 가지고 있는 데이터는 서로 상의할 수 있다. 이때, 데이터를 가지고 있다고 해당 데이터가 무조건 '기록'되는 것은 아니다. 먼저, '기록'이라는.. 2019. 10. 18.
블록체인- 탈 중앙화 시스템 네트워크를 공부하다가 블록체인을 건드린 김에 내가 공부한 개념 좀 정리해볼까 한다. 탈 중앙화 시스템 특정한 역할을 맡은 노드(중앙 서버)가 없이, 모든 노드가 같은 작업을 반복하고, 저장을 반복한다. 이를 통해 얻고자 하는 효과는 한 번 저장된 결과를 누군가 바꾸기 어렵게 하기 위함이다. 최초에 블록체인은 2008년, 암호학 커뮤니티(?)에서 9장의 논문으로 등장했다고 한다. 제목은 대략 이러했다. "제 3자의 개입 없이, 거래 당사자들끼리 금융 거래를 가능하게 하는 시스템" 즉, 신뢰가 없는 사이에도 제 3자의 개입 없이 거래를 성립시킨다는 것이다. 다시 말해, 은행 없이 서로 돈을 송금하고 받는 다는 것이다. (요즘 공유 시스템에서 중계로 인해 수익을 창출하는 기업들이 있는데, 블록체인을 이러한 공.. 2019. 10. 18.
for 문은 인덱스 중심으로 돌아간다. 한 코드를 검토하는데 깨달음을 얻은 코드가 있다. a = [1,2,3,4,5,6] for i in a: print(a) a.remove(i) 예상 결과는 이랬어야 했다. [1,2,3,4,5,6] [2,3,4,5,6] [3,4,5,6] ... [6] 그러나 실제 결과는 이랬다. [1, 2, 3, 4, 5, 6] [2, 3, 4, 5, 6] [2, 4, 5, 6] 예상과 다른 결과가 나온 이유는 간단하면서도 새롭게 알게된 점이 있었다. 1. 간단한 이유 : for i in a 에서 a가 remove로 인해 바뀌는데, a가 바뀌지 않는다고 생각한 것이다. 2. 새로 알게 된 점 : for문에서 a가 변하더라도, i가 가리키는 값은 index[0]부터 하나씩 올라가면서 출력하기 때문이다. 즉, 위에서 for 문.. 2019. 10. 18.