전체 글 14

퇴준생 - 안드로이드 앱 서비스 런칭!

퇴준생 - 퇴사와 이직을 꿈꾸는 우리들의 솔직한 이야기 퇴사를 준비하는 모든 이들을 위한 플랫폼, 퇴사일기를 통해 함께 성장하세요 기능 ■ 퇴사 커뮤니티 커뮤니티는 퇴사 · 이직을 고민하는 사람들을 위한 자유로운 소통 공간을 제공합니다 여러분의 고민을 함께 나누고 유용한 조언을 얻어가세요 - 고민 퇴사를 결심했지만 걱정과 두려움으로 인해 쉽게 결정을 못 내리는 분 - 일상 일상적인 대화를 나누고 싶은 분 - 질문 퇴사 혹은 이직 관련 질문을 통해 도움을 얻고 싶은 분 - 퇴사후기 퇴사 후 일상을 공유하고 싶은 분 ■ 퇴사 일기 직장 생활의 마지막 단계나 퇴직을 준비하는 과정을 회고하여 일기로 담아보세요 퇴사 일기는 '나'의 경험과 배움을 기록하고, 새로운 시작을 위해 준비하는 과정을 돕습니다 또한 퇴사 ..

창업일기 2023.06.13

데이터베이스 설계 시 테이블 id INT or BIGINT?

한 프로젝트를 진행하던 중 id 타입을 왜 BIGINT를 썼는지에 대한 질문을 받았다. 프로젝트 규모가 커졌을 경우를 대비해 큰 타입을 썼다고는 답변을 했지만, 그 핑계로 너무 습관적으로 BIGINT를 써오지 않았나 반성을 하게 되었다. 그래서 id 타입에 대해 한 번 파헤쳐보겠다. INT의 범위 INT의 범위는 4바이트이므로 -2147483648 ~ 2147483647의 범위를 갖지만, 대부분의 경우 id에 음수를 사용하지 않기 때문에 UNSIGNED 속성을 지정하면, 0 ~ 4294967295의 범위를 갖는다. 당연한 이야기겠지만, 테이블에 42억 개의 데이터가 들어갈 일이 절대 없다면 BIGINT를 쓸 필요가 없고, 심지어는 경우에 따라서 그보다 더 작은 타입들(MEDIUMINT, SMALLINT,..

Database 2021.12.16

[MySQL] 게시글 검색(제목->내용->태그 순)

최근 커뮤니티 기능을 가진 서버를 개발하다보니, 게시글 검색 기능을 구현하게 되었다. 요구조건은 아래와 같다. - 검색결과는 제목->내용->키워드 순으로 배열 - 제목, 내용, 키워드로 검색된 내용을 각각 최신순으로 나열 요구조건을 딱 보자마자 든 생각은 쿼리 수행시간이 얼마나 될까 하는 걱정이였다. 그래서 나중에 쿼리 수행시간을 테스트하기로 하고, 요구사항 대로 쿼리문을 짜보았다. SELECT * FROM board WHERE title rlike '테스트' AND title rlike '키워드' ORDER BY t2.board_id DESC UNION SELECT * FROM board WHERE content rlike '테스트' AND content rlike '키워드' ORDER BY c2.bo..

Database 2021.12.03

[Java] 프로그래머스 level2 - 더 맵게

문제 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scoville의..

코딩테스트 2021.11.30

[Java] 프로그래머스 level2 - 문자열 압축

문제 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 ..

코딩테스트 2021.11.29

MySQL 기초 2

연습 환경 구성 연습용 샘플 데이터베이스 다운로드 https://dev.mysql.com/doc/index-other.html MySQL :: Other MySQL Documentation Other MySQL Documentation This page provides additional documentation. There's even more available on these extra pages: MySQL Server Doxygen Documentation Title HTML Online MySQL Server (latest version) View Expert Guides Language Title Version HTML Onlin dev.mysql.com 터미널에서 MySQL에 접속한 뒤 다운..

Database 2021.11.10

MySQL 기초 1

MySQL - 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS)이다. - 오픈소스이며, 다중 사용자와 다중 스레드를 지원한다. - 여러 프로그래밍 언어를 위한 다양한 API 제공 - 오픈소스 라이센스를 따르지만, 상업적으로 사용할 때는 상업용 라이센스 구입 필요 SQL은 DBMS에 실행할 수 있는 명령의 종류에 따라 DDL, DML, DCL 3가지로 구분된다. DDL(Data Definition Language) DML(Data Manipulation Language) DCL(Data Control Language) 데이터 정의 언어 데이터 조작 언어 데이터 제어 언어 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 개체를 생성/삭제/변경하는 역할 데이터를 조작(선택, 삽입, 수..

Database 2021.11.10

Java Collection 시간복잡도와 특징

시간복잡도 그래프 Java의 Collection이란 여러 원소들을 담을 수 있는 자료구조 자료구조 유형으로는 List, Set, Queue, Map 등 이 있으며, 배열과 다르게 동적할당을 한다. Collection 인터페이스의 특징 인터페이스 특징 구현 클래스 List 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용함. Vector, ArrayList, LinkedList, Stack, Queue Set 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않음. HashSet, TreeSet Queue List와 유사하나, FIFO의 구조를 가짐 LinkedList, PriorityQueue Map 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음. 이때 키는 중복을 허용하지 ..

Java 2021.09.06

Javascript 기초

변수 선언 방식 var: function-scoped, 재선언 가능, hosting으로 인해 선언 전에 변수 호출 가능 let: 재할당 가능 const: 재할당 불가능 undeclared, undefined, null의 차이 undeclared: 선언되지 않은 변수에 할당 시도 undefined: 선언은 되었지만 할당되지 않음 null: null 값이 명시적으로 할당 렉시컬 스코핑과 클로저 렉시컬 스코핑: 스코프는 함수를 호출할 때가 아니라 함수를 어디에 선언하였는지에 따라 결정된다. 클로저: 자신을 포함하고 있는 외부함수보다 내부함수가 더 오래 유지되는 경우, 외부함수 밖에서 호출되더라도 외부함수의 지역변수에 접근할 수 있는 것 => 자신이 생성될 때의 환경(Lexical Environment)을 기억..

Javascript 2021.08.16

CS정리 - 3

빅엔디언 - MSB(최상위 비트)가 가장 낮은 주소에 위치 - 네트워크에서 데이터를 전송할 때 주로 사용 - 양수/음수를 바로 파악 가능 리틀엔디언 - MSB가 가장 높은 주소에 위치 - 마이크로 프로세서에서 주로 사용 - 바로 연산 가능 프로세스 - 운영체제로부터 독립된 메모리 영역을 할당 받음 - 프로세스끼리 통신하기위해서는 IPC 이용 - 최소 1개의 쓰레드(메인 쓰레드)를 가진다. 컨텍스트 스위칭 - 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고, 다른 프로세스를 처리하기 위한 과정 - 현재 실행중인 프로세스의 상태(Context)를 먼저 저장하고, 다음 프로세스를 동작시켜 작업을 처리한 후 이전에 저장된 프로세스의 상태를 복구 멀티 프로세스 - 컨텍스트 스위칭을 위한 오버헤드(캐시 ..

CS 2021.08.15