본문 바로가기

반응형

All

(40)
Mysql root 에 권한이 부족하다? 이래저래 하다가.. 나는 root 계정인데.. CREATE 명령어가 안되네? 내가 망가뜨렸으니 고쳐야지ㅎㅎ MacOS 기준으로 작성된 글입니다. 에러 상황 root 계정으로 CREATE TABLE 명령어가 잘 안되어서 (굉장히 이상한 상황;) grant 를 슬쩍 손대어 봅니다. mysql> show grants; +-------------------------------------------------------------------+ | Grants for root@localhost | +-------------------------------------------------------------------+ | GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO `ro..
MySQL root 비밀번호를 잃었을 때 장난치다가 root 비밀번호를 잃을 수 있다! 하지만 복구할 수 있다 :) MySQL 재설치 불 필요 본 글은 MacOS 기준으로 작성되었습니다. 원인 다음과 같이 비밀번호를 바꾸지 마세요 ^^ mysql> UPDATE mysql.user SET authentication_string='root' WHERE User='root'; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0원인을 해결중에 비밀번호가 암호화된 문자열이 아닌 plain-text 인 'root' 로 설정된 것을 확인할 수 있습니다. 비밀번호 입력창에서 입력한 번호가 암호화되어 root 와 같아질 수 없습니다. ..
프리티 알뜰폰 개통절차 https://www.mvnohub.kr/user/index.do 내가 원하는 요금제를 골라서 정보를 입력하고 USIM 을 신청한다. USIM 이 배송된다. 기존 USIM 을 사용한 상태에서 프리티 고객서비스에 전화한다. USIM 을 전달받으면 셀프개통에 대한 안내를 받게 된다. 셀프개통을 위해 사이트에 접속하면 여러 인증 중에 이전 통신사의 정보제공이 필요하다. 통신 3사가 아닌 알뜰폰의 경우에는 여기에서 넘어가지 않는다. 직접개통은 불가한 알뜰폰 사용자였다고 말해야할 수도 있다. 전화를 통해 개통할 수 없다는 답변도 들었지만, 허브를 통해 신청한 경우에는 사실 요금제정보까지 입력된 상태에서 대기중이다. 별다른 요구 없이 개통을 신청한다. 기존 USIM 이 먹통이 될 떄까지 기다리고 새로운 USIM 을..
구조적 커버리지 종류 구조적 커버리지 종류 1. 문장 커버리지 (Statement Coverage) 정의: (실행된 statement 수) / (전체 statement 수) * 100 예제 printf("hello") if (x > 2) { printf("hello") } print("hello")x = 1 인 경우 문장 커버리지는 3/4*100 = 75% 2. 결정 커버리지 (Decision Coverage) 정의: (수행된 분기 수) / (전체 분기 수) * 100 하나의 if 문에 대해 결정 커버리지 100% 를 달성하기 위해서는 true 와 false 데이터가 모두 필요하다 and 도는 or 조건에 의해 오른쪽 조건에 대해서는 조건식을 확인하지 않을 수 있다. 예제 printf("hello") if (x > 2 && ..
팬텀 지갑의 get cluster 지금까지의 결론: 팬텀 지갑이 어떤 네트워크에 접속되어있는지 알 수 없다. 메타마스트의 경우에는 isMetamask, 그리고 chainId 를 window.ethereum 객체를 통해 조회할 수 있다. 하지만 팬텀의 경우에는 window.solana 에서 isPhantom 은 제공하지만 chainId 처럼 연결된 cluster 정보는 제공하지 않는다. 팬텀 지갑에서 연결된 네트워크를 설정하면, 지갑 어플 내에서 변수로 관리하는 것 같고 explorer.solana.com 와 같은 사이트도 devnet/mainnet 설정 버튼을 누르면 cluster 를 선택할 수 있다. 다만 사이트에서 설정한 cluster 와 팬텀 지갑에 설정한 cluster 의 차이가 있을 때, 팬텀에서 이를 감지하지 않는다. "Tra..
보안취약점 external call 솔리디티 스마트 컨트랙트에서 external call 을 할 때 (예를 들면 safeMint 함수) 호출한 외부 함수에서 나의 함수를 재호출하는 위험이 있다. 이를 방지하기 위해 우선적으로는 require 문에서 권한 또는 정보의 유효성을 체크할 수 있다. 다만 함수 내에서 실행하는 로직에 의해 require 문 만족 여부가 바뀌는 경우가 있을 수 있다. 따라서 함수 내에서 변경하고자 하는 값이 있다면 external call 을 요청하기 전에 모두 실행해야 한다. 결론: external call 의 위치 함수의 끝에 작성하도록 한다.
web3 개발 애러 처리 솔라나 web3 개발을 하면서 소스코드상 어떻게 예외처리 로직을 짜야 좋은지 고민하게 된다. web3 호출에 대한 다양한 에러가 발생할 수 있는데, 1. 입력값을 내가 직접 필터링할 수도 있고 2. web3 호출의 에러 리턴 값을 try-catch 문으로 파싱해줄 수도 있다. 내가 직접 필터링하는 방법 장점 다양한 테스트케이스에 대해 생각해볼 수 있다. 에러를 직접 처리하는 과정에서 사용하는 web3 함수들과 친해질 수 있다. 직접 작성하여 정확한 에러 메세지를 리턴해줄 수 있다. 단점 소스코드가 복잡해진다. if-else 문이 중첩될 수 있다. web3 호출 에러를 리턴하는 방법 장점 불필요한 web3 호출을 줄여 함수 실행 속도를 개선한다. 에러 메세지를 파싱하기 위한 글로벌 핸들러를 개발할 수 있다..
React Input value as number 리액트에서 input 태그에 입력된 입력값을 state 에 세팅하려고 할 때, 숫자를 입력해도 string 으로 저장될 때 다음 코드를 참고하세요. const handleMintAmountChange = (event) => setMintAmount(event.target.valueAsNumber);