솔루션1 const convertPWordsToNum = (word) => { const pWords = ["aya", "ye", "woo", "ma"]; return pWords.reduce((result, pWord, i) => result.replaceAll(pWord, i), word); }; const canPronounce = (word) => { const result = convertPWordsToNum(word); return ( !/[^\d]/.test(result) && [...result].every( (num, i) => i + 1 > result.length || num !== result[i + 1] ) ); }; function solution(babbling) { conso..
Q1. 블록체인 등장 배경은? 2008년 금융위기에 무분별한 화폐 발행으로 인해 금융당국에 대한 신뢰가 부족해지면서 사토시 나카모토가 이에 반발해 중앙기관 없이 금융거래를 할 수 있는 비트코인을 개발하면서 나오게 된 기반 기술이다. 비트코인은 기존 금융 서비스와 다르게 화폐를 발행하는 기관도 이를 운영해주는 은행과 카드사 등 없이 개인간의 직접 금융 거래가 가능호도록 구성되어 있다. Q2. 블록체인의 4대 요소 기술은? 분산된 네트워크 환경에서 운영자 없이 진행되는 환경에서 필요한 기술이 적용되어 있다. 먼저 사용자의 개인정보를 보호하기 위한 암호학 기술과 서로 다른 사용자들이 참여하게 되어 구성된 분산 네트워크, 이러한 네트워크에서 동작하는 데이터 관리를 위한 블록, 마지막으로 분산된 참여자들 사이에서..
이번 포스팅에서는 remix에서 진행하겠습니다. 다음 포스팅에서는 VSCODE와 truffle, openzeppelin을 활용해 진행하겠습니다. 코드만 보시겠다는 분들은 5. 나만의 토큰 만들기 로 넘어가주세요. 간단하게 작성한 컨트랙트입니다. 참고바랍니다. 1. 리믹스에 접속 주소: https://remix.ethereum.org/ Remix - Ethereum IDE remix.ethereum.org 2. 컨트랙트 파일 생성 '나만의_토큰_이름.sol' 3. 라이센스 설정 및 컴파일러 버전 설정 // SPDX-License-Identifier: MIT pragma solidity >=0.8.0 a) return (false, 0); return (true, a - b); } } /** * @dev R..
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'xxx.pem' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: xxx.pem Permission denied (publickey). ssh -i xxx.p..
회사에서 서버를 배포하려고 하니 로컬환경에서는 문제 없이 잘 작동되는 exress-session에서 자꾸 warning을 뱉어내서 알아보니 production 환경에서는 제대로 작동하지 않는다는 것이었다. 그래서 결국 redis를 쓰기로 다짐했다. Node 프로젝트에서 pm2로 다중 클러스터 인프라를 구축했다면 세션 불일치 문제가 생기게 마련이다. 만일 서버가 종료되어 메모리가 날라가면 접속자들의 로그인이나 혹은 기타 세션들이 모두 날라가버리게 된다. 따라서 이를 방지하기 위해 세션 아이디와 실제 사용자 정보를 외부 데이터베이스에 저장하는 편이다. 이때 개발자들이 많이 사용하는 것이 Redis db이다. 다른 데이터베이스를 사용해도 되지만, 세션은 빠릿빠릿하게 응답을 해야되기 떄문에 메모리 기반의 데이터..
이클립스로 스프링 프로젝트를 진행하려는데 spring을 설치할 수가 없었다. 에러 내용은 아래와 같았다. Cannot complete the install because one or more required items could not be found. Software being installed: Spring IDE Integration, Flex and Web Services Extension (optional) 3.9.22.202204280911-RELEASE (org.springframework.ide.eclipse.integration.feature.feature.group 3.9.22.202204280911-RELEASE) Missing requirement: Spring IDE Configu..
구현할 SBB의 기능은 아쉽지만 여기까지이다. 함께 더 많은 기능을 추가하고 싶지만 이 책은 SBB의 완성이 아니라 SBB를 성장시키며 얻게 되는 경험을 전달하는 것을 목표로 하고 있다. 다루지 못했지만 구현하면 좋을것 같은 기능들이 몇 가지 있는데 여기에 간단하게 소개해 보았다. 아래에 소개한 기능들을 여러분 스스로 하나씩 구현해 가다보면 스프링부트에 대해서 더 깊게 이해할수 있게 될 것이다. 답변 페이징과 정렬 현재 하나의 질문에 무수히 많은 답변이 달릴 수 있는 구조이다. 만약 답변이 100개가 된다고 상상해 보자. 성능을 위해서라도 답변의 페이징은 반드시 필요할 것이다. 그리고 답변을 보여줄 때에도 최신순, 추천순 등으로 정렬하여 보여줄 수 있는 기능도 필요할 것이다. 유명한 질문 답변 사이트인 ..
이번에는 SBB에 검색기능을 추가해 보자. 참고로 검색은 이 책에서 다루는 가장 어려운 부분이다. 차분한 마음으로 따라오기 바란다. 검색 기능 SBB는 질문과 답변에 대한 데이터가 계속 쌓여가는 게시판이므로 검색기능은 필수라고 할 수 있다. 검색의 대상은 질문의 제목, 질문의 내용, 질문 작성자, 답변의 내용, 답변 작성자 정도로 하면 적당할 것이다. 즉, "스프링"이라고 검색을 하면 "스프링" 이라는 문자열이 제목, 내용, 질문 작성자, 답변, 답변 작성자에 존재하는지 찾아보고 그 결과를 화면에 보여주어야 한다. 이런 조건으로 검색하려면 다음과 같은 SQL 쿼리가 실행되어야 한다. select distinct q.id, q.author_id, q.content, q.create_date, q.modif..