목록분류 전체보기 (274)
단의 개발 블로그
Nginx란높은 성능과 안전성 그리고 현재 가장 많이 사용하는 웹 서버다. 웹 서버는 클라이언트 요청에 따라 정적 파일을 응답하거나, 다른 서버로 요청을 보내는 등의 역할을 한다. Nginx는 보통 아차피 웹 서버와 비교를 많이 하는데, 이 둘의 차이는 요청 처리 방식에 있다. 아파치의 경우 사용자의 요청이 들어오면 새로운 스레드를 생성하여 처리한다. 요청이 많을 수록 자원을 더 소모하게 되는 반면 nginx는 Event-driven구조로 동작한다. Event Driven 구조는 아래와 같다.Master Process가 설정 파일에 입력된 숫자대로 작업을 처리하는 Work Process를 생성이벤트는 커넥션, 새로운 요청 처리를 의미이벤트는 운영체제 커널이 Queue 형식으로 Work에 전달, 처리 완..
우분투 패키지 매니저 update 중 hash sum mismatch 오류가 발생했다. 아래 명령어를 입력해서 해결한다.sudo rm -rf /var/lib/apt/lists/*sudo apt-get update -o Acquire::CompressionTypes::Order::=gzsudo apt update && sudo apt upgrade 만약 이래도 해결이 안된다면 apt 받아오는 미러 서버를 변경한다.vi /etc/apt/sources.list# ESC클릭 후 아래 명령어 입력:%s/kr.archive.ubuntu.com/mirror.kakao.com# Enter 로 적용 arm 계열 cpu를 사용할 경우 최신 버전 우분투에서 아직 미러 사이트에 패키지가 없을 수도 있다. 이거는 어쩔수 없이 ..
다운로드먼저 apt 패키지를 업데이트 한다.apt update설치 가능한 mariadb이 있는지 확인한다.apt list | grep mariadb만약 설치하려는 mariadb 버전이 없을 경우 공식 홈페이지에서 따로 다운받아 apt를 업데이트 한다. 보통은 해당 우분투 버전에서 사용 가능한 버전이 설치된다. server는 해당 리눅스에 DB 역할을 하는 서버가 설치되며, client는 해당 서버에 접속하기 위해 사용되는 패키지다.아래 명령어를 이용해서 설치한다.sudo apt install mariadb-server mariadb-client -y 초기 설정보안설치되면 자동으로 mariadb가 실행된다. 이전에 설치한 htop으로 확인하거나 ps -ef | grep maria 명령어로 확인한다. 설치가..
탄생배경대부분의 서비스에서 데이터 관리는 RDBMS가 중심이였다. 하지만 서비스 규모가 커짐에 따라 방대한 양의 데이터를 처리하는데 어려움이 생기게 됐고, 빠른 속도로 처리할 수 있는 DB의 필요성이 증가했다. 상용 DBMS를 사용하는 회사가 대규모 데이터를 처리하려면 하나의 테이블에서 저장되던 데이터를 수십 수백개의 서버로 나눠 처리해야 하는데 이때 라이선스 비용이 엄청 증가한다. 한때 MySQL의 BigTable이라는 기능을 활용해 처리 했지만 트랜잭션 처리 부분에서 문제가 있었다. 구글의 Spanner라는 분산 트랜잭션 논문을 시작으로 페북, 트위터, 링크드인 등 여러 큰 기업들이 NoSQL을 개발하기 시작했다. 이때 개발 된 것이 MongoDB인데, 2007년 클라우드 플랫폼 서비스를 제공하는 1..
MariaDB란?MariaDB는 RDBMS의 한 종류다. Mysql의 커뮤니티의 버전을 기반으로 만들어졌다. 하지만 커뮤니티 버전을 그대로 사용하는 것이 아닌 해당 버전이 가지고 있는 기능과 새로운 기능이 더해져 출시되는 RDBMS이다. 그렇기 때문에 Mysql과 상당 부분 호환해서 사용 가능하다. 또한 오픈 소스로 만들어졌다. 따라서 본인이 원하는 기능을 무료로 사용 가능하고, 해당 기능이 어떻게 구현되어 있는지 살펴볼 수 있다. MySQL과 비교하며 알아보자. Mysql과의 호환성MariaDB는 Mysql과 호환성이 뛰어나다. 실행 프로그램들과 유틸리티 모두 MySQL과 이름이 동일하다. 데이터 파일과 테이블 정의 파일모두 버전에 맞게 호환이 가능하다. 그 외에도 클라이언트 API와 통신 프로토콜,..
💡 문제피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.예를들어F(2) = F(0) + F(1) = 0 + 1 = 1F(3) = F(1) + F(2) = 1 + 1 = 2F(4) = F(2) + F(3) = 1 + 2 = 3F(5) = F(3) + F(4) = 2 + 3 = 5와 같이 이어집니다.2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 💡 제한사항n은 2이상 100,000 이하의 자연수 입니다.입출력입출력 예 설명피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.✨ 풀이def sol..
💡 문제피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.예를들어F(2) = F(0) + F(1) = 0 + 1 = 1F(3) = F(1) + F(2) = 1 + 1 = 2F(4) = F(2) + F(3) = 1 + 2 = 3F(5) = F(3) + F(4) = 2 + 3 = 5와 같이 이어집니다.2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 💡 제한사항n은 2이상 100,000 이하의 자연수 입니다.입출력입출력 예 설명피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.✨ 풀이class S..
💡 문제설명낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다. 💡 문제FISH_INFO에서 평균 길이가 33cm 이상인 물고기들을 종류별로 분류하여 잡은 수, 최대 길이, 물고기의 종류를 출력하는 SQL문을 작성해주세요. 결과는 물고기 종류에 대해 오름차순으로 정렬해주시고, 10cm이하의 물고기들은 10cm로 취급하여 평균 길..
💡 문제설명낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. FISH_INFO 테이블의 구조는 다음과 같으며 ID, FISH_TYPE, LENGTH, TIME은 각각 잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL 이며, LENGTH 에 NULL 만 있는 경우는 없습니다. 💡 문제월별 잡은 물고기의 수와 월을 출력하는 SQL문을 작성해주세요.잡은 물고기 수 컬럼명은 FISH_COUNT, 월 컬럼명은 MONTH로 해주세요.결과는 월을 기준으로 오름차순 정렬해주세요.단, 월은 숫자형태 (1~12) 로 출력하며 9 이하의 숫자는 두 자리로..
💡 문제자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 💡 제한사항n은 1,000,000 이하의 자연수 입니다.입출력입출력 예 설명입출력 예#1문제 예시와 같습니다.입출력 예#215(1111)의 다음 큰 숫자는 23(10111)입니다.✨ 풀이def solution(n)..