The error message SELECT command denied to user ''@'localhost' for table 'mysql.user' in DBeaver usually indicates that the user does not have sufficient privileges to access the mysql.user table.
Here are the steps to resolve the issue:
Connect to the MySQL server with an administrative account.
Run the following command to grant the required privileges:
GRANTSELECTON mysql.*TO'your_user'@'localhost';
Replace "your_user" with the username you are using to connect to the MySQL server.
Flush the privileges to make the changes take effect:
FLUSH PRIVILEGES;
Try connecting to the MySQL server using DBeaver again and see if the error still occurs.
This should resolve the issue and allow you to access the mysql.user table in DBeaver.
"mysql" is the basic command to start the MySQL client, which is used to connect to and interact with a MySQL server. This command assumes that you want to connect to the MySQL server as the current operating system user.
"mysql -u root -p" specifies the MySQL user account that you want to use to connect to the MySQL server. "root" is the username, and "-p" is the option that prompts for a password. So, this command connects to the MySQL server as the "root" user, and you need to enter the password for that user to access the MySQL server.
✖ Installing Bundler error Your Ruby version is 2.6.10, but your Gemfile specified 2.7.5
ruby version error 해결
//루비버전관리 프로그램 설치
brew install rbenv
//나는 mac 유저라서 터미널에서 바로
code .
//쳐주면 .zshrc파일 들어갈 수 있음. 접근해서 맨밑에 추가함
eval "$(rbenv init -)"
//원하는 버전 설치
rbenv install 2.7.5
//설치완료 확인 (이제는 자동으로 해줘서 안해도 되는 명령어라고 함)
rbenv rehash
//버전 변경 (이것도 자동으로 해주는 거같음 )
rbenv global 2.7.5
//버전확인
ruby --version
//버전변경했는데도 자꾸 이전 버전이 뜬다면 터미널 껐다가 다시 버전체크해보자. 껐다 다시 킨 다음에야 나는 변경된 걸로 떴음
주문을 예시로 많이 드는데 떡볶이를 주문하고 떡볶이가 나올 때까지 다른 손님들이 순서대로 줄이 서있다고 상상하면 된다.)
비동기 처리
동시다발적으로 병렬적으로 실행됨을 의미한다.
요청과 응답이 함께 이뤄지지 않는다.
요청하고 응답을 기다리지 않고 다른 요청들을 한다.
값을 받아오고 사용할 때
값이 받아오기도 전에 함수가 실행되는 걸 막기 위해서
동기처리로 해결한다.
그럼 자바스크립트 언어는 동기적 언어인가?
비동기적 언어라고 생각하기 쉬운데
(왜냐면 사실 내가 코드짤 때 병렬적으로 이뤄지는 함수를 동기처리, 순차적으로 실행되게 바꾸게 되니까... 비동기적 언어인가 싶었음 )
자바스크립트는 동기적 언어이다.
하지만!
자바스크립트를 브라우저에서 구동되고 이때 비동기적으로 이뤄진다.
Event Loop를 포함해 Browser의 구성요소 역할을 이해했다면, 자바스크립트 언어 자체가 비동기 특성을 제공하는게 아니라 Browser의 구성 요소들이 제공한다는 사실을 이해할 수 있다.
...
그러면 우리가 만든 프로그램의 코드를 실행하라고 JS엔진에게 명령하는 것은 누구일까? 실제로 JS엔진은 고립되어서 수행되는 것이 아니고 호스팅 환경 내에서 수행된다. 대부분의 개발자들에게 이것은 웹 브라우저 혹은 Node.js일 것이다. 이러한 모든 환경에서 적용되는 최대공약수는 호스팅 환경에 내장된 메커니즘인 이벤트루프이다.. 이것은 시간의 흐름에 따라 코드의 수행을 처리하며 그 때마다 JS엔진을 작동시키게된다. 따라서 이벤트루프라는 호스팅 환경 내의 메커니즘으로 인해, JS엔진에게 비동기적 수행을 명령하게 되고, JS가 비동기적으로 실행되게 되는 것이다.
await 키워드는 async 키워드가 붙어있는 함수 내부에서만 사용할 수 있으며 비동기 함수가 리턴하는 Promise로 부터 결과값을 추출해줍니다. 즉, await 키워드를 사용하면 일반 비동기 처리처럼 바로 실행이 다음 라인으로 넘어가는 것이 아니라 결과값을 얻을 수 있을 때까지 기다려줍니다. 따라서 일반적인 동기 코드 처리와 동일한 흐름으로 (함수 호출 후 결과값을 변수에 할당하는 식으로) 코드를 작성할 수 있으며, 따라서 코드를 읽기도 한결 수월해집니다. 출처: https://www.daleseo.com/js-async-async-await/
찾아 읽다 보니
JS를 비동기적으로 실행하게 해주는 대표적인 방식으로 Callback / Promise / Async & Await 가 있다.
온라인 및 모바일 서비스상의 결제, 보상 및 거래에 사용되는 암호화폐 플랫폼”을 제공하는 것을 목표로 합니다.
미콘캐시는 플랫폼에 연동된 서비스에서 얻은 보상을 자산의 가치로 만들어 드립니다. 사용자는 서비스가 종료되더라도 미콘캐시로 새로운 서비스에 대한 요구를 충족할 수 있으며, 개인간 거래를 할 수 있으며, 실물경제에서 사용할 수 있는 시스템으로 순환됩니다
-> 아하 얘네도 자기네 플랫폼을 살리고 그 외로도 쓰일 코인을 만든거구만, 그게 미콘캐시
미콘캐시(MCH)는 온라인 및 모바일 서비스 상의 결제, 보상 거래에 사용되는 자체 암호화폐 플랫폼이다. 전국 1만3700여 곳의 ATM기를 통해 출금이 가능하다는 점이 특징이다.
미콘캐시의 간편 결제 서비스 'M.PAY'는 비트코인, 이더리움, 트론, 비트코인캐시, 라이트코인 등 주요 코인을 시세에 맞는 M.PAY로 전환해서 현금처럼 사용할 수 있도록 지원한다.
Q. 온라인 결제와 관련된 암호화폐가 다양하게 있다. 미콘캐시만의 특징은? A. 미콘캐시는 앱 지갑 내의 M.PAY 결제 서비스를 통해 온라인 결제 및 보상이 이루어진다. 미콘캐시뿐만 아니라 다양한 가상자산들이 M.PAY로 전환되어 사용될 수 있다. M.PAY는 MCH와 1:1로 교환되며 사용시 시세를 반영하여 결제가 이루어진다. 그밖에 암호화폐는 M.PAY 전환시 해당 암호화폐와 MCH 시세를 반영하여 전환된다.
유닉스 타임 스탬프는 무엇입니까?
유닉스 타임 스탬프는 시간을 초 단위로 추적하는 방법입니다. 이 계산은 1970년 1월 1일 UTC의 Unix Epoch에서 시작됩니다. 따라서 Unix 타임스탬프는 특정 날짜와 Unix Epoch 사이의 초 수입니다. 또한 (이 사이트 방문자의 의견 덕분에) 이 시점은 전 세계 어디에 있든 기술적으로 변경되지 않는다는 점을 지적해야 합니다. 이것은 온라인 및 클라이언트 측 모두에서 동적 및 분산 응용 프로그램에서 날짜가 지정된 정보를 추적하고 정렬하는 컴퓨터 시스템에 매우 유용합니다.
Error: Objects are not valid as a React child (found: object with keys {findFirstTransaction}). If you meant to render a collection of children, use an array instead.
이처럼 탈중앙화 시스템에서 중앙거래자가 존재하지 않는데 어떻게 송금이 이뤄질 수 있을까요?
블록체인 거래가 이뤄지는 과정은 이와 같습니다.
이미지 출처: [시사 IT용어] 가상화폐의 주역, 블록체인 기술이란?
1. A가 B에게 송금하기 위한 거래 요청을 보냅니다.
2. 해당 거래정보는 온라인 상에서 블록에 저장됩니다.
3. 해당 블록정보는 네트워크 구성원 모두에게 전파됩니다.
4. 구성원들은 해당 거래의 유효성을 검증하고 승인합니다.
5. 참여자 과반수의 데이터 내역과 일치한 거래는 승인되고, 승인된 거래는 새로운 블록으로 기존의 블록체인에 연결됩니다. 또한 그 사본이 만들어져 각 사용자들의 컴퓨터에 분산 저장됩니다.
6. A에서 B로 실제 자금이 이동됩니다.
공개된 거래내역을 중간에 다른 구성원이 빼돌리려는 위험이 없을까요?
이를 어떻게 막을 수 있을까요?
여기에는 바로 비대칭 암호학이 있습니다.
잠그는 키와 여는 키를 동일하게 생각하지만 비대칭 암호학에서는 각각의 역할을 하는 키가 따로 존재합니다.
대부분의 블록체인 거래를 하기 위해서는 유효한 디지털 서명이 필요합니다. 이 서명은 개인키를 통해서 할 수 있습니다. 계좌를 사용하기 위한 본인 서명은 여기서는 수학적 검증을 뜻합니다. 구성원들에게 원본 거래내역과 개인키로 암호화한 거래내역을 전파하는데, 이때 개인키로 암호화하는 것을 서명이라고 칭하고 있습니다.
공개키는 모두에게 공개되는 키로 은행의 계좌번호와 비슷합니다. 이처럼 공개키는 모두에게 보여져도 괜찮지만 무작위 숫자로 만들어진 개인키는 지갑에 접근할 수 있으므로 비밀리에 간직해야합니다.
공개키와 개인키를 통해 블록체인 거래과정을 살펴보겠습니다.
이미지 출처: 비트코인 주소, 거래, 그리고 지갑 (Bitcoin Addresses, Transactions, & Wallets)
1. A가 B에게 송금하기 위한 거래내역(트랜잭션)을 A의 개인키로 암호화하여 서명한 후, A의 공개키와 원본 거래내역과 함께 구성원들에게 전파합니다. (거래내역은 고정된 길이의 해시값으로 변환하여 암호화합니다.이를 통해 원문의 길이와 상관없이 크기를 줄일 수 있고 빠른 검증이 가능합니다.)
2. 구성원들은 암호화된 거래내역을 A의 공개키를 이용해 원본과 비교하며 확인합니다.
(공개키로 열어 확인한 해시값과 원본의 해시값을 비교합니다.)
A의 서명을 통해 전송자의 정보를 확인하고, 이전 참여자들의 데이터 내역과 일치하는 올바른 장부인지를 확인합니다.
3. 검증을 통해 이전 블록에 이어 새로운 블록이 생성되면 B에게 송금이 완료됩니다. B는 개인키를 통해 지갑에 접근할 수 있습니다.
개인키 소유자들은 거래를 위해 쉽게 공개키를 만들어 전세계와 공유합니다. 개인키를 만드는 타원곡선 곱셈법은 암호 사용자들이 '트랩 도어'함수라고 부르는 함수의 일종으로, 한 방향으로의 계산은 쉽지만 반대방향으로의 계산은 불가능합니다. 이 수학적 트릭은 자금의 소유권을 증명하는 디지털 서명을 위조 불가능하고 안전한 것으로 만들어줍니다.
만약 개인키를 분실한 경우 지갑에 접근할 수 없기 때문에 꼼꼼한 관리가 필요합니다.
그렇다면 공개키와 주소는 같은 것일까요?
타원곡선 곱셈법을 사용해 개인키에서 공개키를 만들고 공개키에서 해시함수를 이용해 주소를 만듭니다.
단방향 암호화로 주소에서 공개키로 공개키에서 개인키로 접근하는 것은 불가능합니다.
이처럼 누구나 모든 거래를 확인할 수 있고 입증하는 동시에, 개인간의 거래를 만들어 낼 수 있다는 장점으로 블록체인 거래시 비대칭 암호학을 유용하게 사용하고 있습니다.