description 1) 아기는 "aya", "ye", "woo", "ma" 네가지 발음만 가능 2) 그래서 최대 한번식 사용해 조합한 발음밖에 하지 못함 3) 문자열 배열이 매개변수로 주어질 때, 아기가 발음 가능한 단어의 수 풀이 0) 문자열이 발음가능한지 아닌지 표시하는 flag 설정 (초기 false) 1) a로 시작하면 aya, y로 시작하면 ye, w로 시작하면 woo, m으로 시작하면 ma만 가능 a) 문자열을 받아, 첫글자를 비교해 4글자 중 하나인지 확인 b) 4글자 중 하나면 문자열 중 몇개를 검사완료했는지 인덱스를 뛰어 넘을 개수 반환 c) 4개 중 아무것도 아니면 0 2) 1에서 반환받은 수(가능한 문자열 길이)를 가지고 비교 a) 반환수 === 남은 문자열 길이 => 가능하므로 ..
##본 포스팅은 "데이터베이스 첫걸음 - 미크, 기무라 메이지" 책을 보고 요약한 것입니다. 지속성과 성능이 양립하는 구조 DBMS에서 데이터를 보존하는 기억장치는 대부분 하드디스크이다. 하드디스크에서 지속성을 실형하려면 쓰기를 전부 '동기화 쓰기'로 하면 좋겠지만, 데이터베이스의 쓰기는 기억장치의 임의 장소에 무작위로 액세스해서 쓰기를 수행하기 때문에 동기화 쓰기는 느려서 성능 면에서 실용적이지 않다. 그래서 지속성과 성능이 양립하도록 일반적으로 DBMS에서는 다음 구조를 사용한다. - 로그 선행 쓰기(WAL) 로그 선행 쓰기의 기본 개념은 데이터베이스의 데이터 파일 변경을 직접 수행하지 않고, 우선 로그로 변경 내용을 기술한 로그 레코드를 써서 동기화하는 구조이다. MySQL에서는 이로그를 InnoD..
##본 포스팅은 "SQL 첫걸음 - 아사이 아츠시" 책을 보고 요약한 것입니다. UNION 집합 연산 SELECT 명령을 실행하면 데이터베이스에 질의하여 그 결과 몇 개의 행이 반환된다. 이때 반환된 결과 전체를 하나의 집합이라고 생각하면 된다. SQL에서는 SELECT 명령의 실행결과를 하나의 집합으로 다룰 수 있다. 한번의 쿼리 실행으로 두 개의 SELECT 명령이 내부적으로 실행되는 형식이다. UNION을 사용하면 여러 개의 SELECT 명령을 하나로 묶을 수 있다. 이때 각각의 SELECT 명령의 열의 내용은 서로 일치해야한다. 열을 따로 지정하여 각 SELECT 명령에서 집합의 요소가 될 데이터를 서로 맞춰주면 UNION으로 실행할 수 있는 쿼리가 된다. 테이블의 나열 순서는 합집합의 결과에 영..
##본 포스팅은 '그림으로 배우는 Http & Network Basic - 우에노 센'을 읽고 쓴 요약/정리 글입니다. 웹 공격 기술 HTTP 자체는 보안 상의 문제가 일어날 정도로 복잡한 프로토콜은 아니기에 프로토콜 자체가 공격 대상이 되지는 않는다. 공격 대상은 HTTP를 사용하는 서버와 클라이언트 그리고 서버 상에서 동작하는 웹 애플리케이션 등의 리소스이다. 1. 리퀘스트는 클라이언트에서 변조 가능하다 웹 애플리케이션에 대한 공격은 HTTP 리퀘스트 메시지에 공격 코드를 실어서 실행된다. 공격 패턴은, - 능동적 공격 : 공격자가 직접 웹 애플리케이션에 액세스해서 공격 코드를 보내는 타입의 공격 ( SQL 인젝션, OS 커맨드 인젝션) - 수동적 공격 : 함정을 이용해서 유저에게 공격 코드를 실행시..
##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다. FAT File System * 유닉스 파일 시스템의 중요 개념 - Boot block : 부팅에 필요한 정보 - Super block : 파일 시스템에 관한 총체적인 정보를 담고 있다. - Incode : 파일 이름을 제외한 파일의 모든 메타 데이터를 저장 - Data block : 파일의 실제 내용을 보관 FAT은 일종을 배열로 따로 분리하여 파일 정보들을 보관하며, FAT은 크기가 매우 작기때문에 테이블을 디스크에 한번 올려놓고 테이블을 따라서 접근할 수 있다. 즉, 직접 접근이 가능하다는 장점이 있다. 또한 디스크에 저장할 떄 유실이 일어나더라도 신뢰성이 보장되도록 여러 복사본을 한꺼번에 저..
##본 포스팅은 "SQL 첫걸음 - 아사이 아츠시" 책을 보고 요약한 것입니다. 뷰 뷰는 테이블과 같은 부류의 데이터베이스 객체 중 하나이다. 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰이다. 따라서 뷰를 참조하면 그에 정의된 SELECT 명령의 실행결과를 테이블처럼 사용할 수 있다. FROM 구에는 서브쿼리를 사용할 수 있다. SELECT * FROM (SELECT * FROM table2) sq; SELECT * FROM sample_view_1; 뷰를 정의할 때는 이름과 SELECT 명령을 지정한다. 뷰를 만든 후에는 SELECT 명령에서 뷰의 이름을 지정하면 참조할 수 있다. 앞의 예에서는 서브쿼리 부분이 단순한 SELECT 명..