목록분류 전체보기 (141)
공부하는 스누피

정규표현식(Regular Expression) 정규표현식은 특정한 패턴을 가진 문자열의 집합을 표현하는 방법이다. 문자열의 검색 및 치환에서 많이 쓰인다. 대표적인 정규표현식 라이브러리로 Python의 re 모듈이 있다. 문법 정규표현식의 패턴은 대상 문자열과 일치시키는데 쓰이며, 일련의 문자들로 구성된다. 양의 지정 ? : 있어도 되고 없어도 되는 문자를 일치. ex) colou?r -> u는 있어도 되고 없어도 된다. * : 0번 이상 나타나는 문자를 일치시킴. ex) ab*c -> b가 없어도 되고, 여러번 연속해서 나타나도 된다. + : 1번 이상 나타나는 경우 ex) ab*c -> b가 없으면 안된다. 메타문자 (특수 문자 기호) 정규표현식 내 특별한 의미를 갖는 문자 기호이다. ex) |, [..
선택 정렬 - 가장 작은 데이터를 앞으로 보내는 과정을 N-1번 반복한다. - 시간복잡도는 O(N^2)이다. => 배열 순회하는 반복문(N) + 가장 작은 데이터를 찾는 반복문(N-1+N-2+...+2) = N * (N+1) / 2 1) 바꿀 데이터의 인덱스를 i라 하고, 0(맨 앞)으로 초기화한다. 2) 가장 작은 데이터를 선택해 i 인덱스의 데이터와 바꾼다. 3) 그다음 작은 데이터를 선택해 i+1 인덱스에 있는 데이터와 바꾼다. 4) i가 배열의 마지막에 도착할 때까지 반복한다. def selection(arr): for i in range(len(arr)): min_index = i for j in range(i+1, len(arr)): if arr[i] > arr[j]: min_index = j..
시큐어코딩 가이드는 한국인터넷진흥원의 기술안내서 가이드로, 2020년 기준 한국인터넷진흥원에서는 JAVA, C, Android(JAVA) 가이드를 제공하고 있다. 정보처리기사에서는 인터페이스 개발 시 보안 취약점을 방지할 수 있는 JAVA 가이드라인으로 소개된다. 적용대상 보안약점 대응방안 입력데이터 검증 및 표현 입력값에 대한 검증 누락 입력 데이터에 대한 유효성 검증 체계 수립 보안 기능 보안 기능의 부적절한 구현 비밀번호 등 보안 정책이 적절하게 반영되도록 구현 시간 및 상태 병렬 시스템이나 멀티 프로세스 환경에서 시간/상태의 부적절한 관리 공유 자원의 접근 직렬화 에러 처리 에러 미처리 에러 상황 처리하도록 구현 코드 오류 개발자에 의한 코딩 오류 경고 순위의 최상향 조정 후 경고 메시지 코드 제..
SOA(Service Oriented Architecture) 대규모 컴퓨터 시스템을 구축할 때의 개념으로, 업무상의 일 처리에 해당하는 App 기능을 서비스로 판단하고, 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론이다 (Wikipedia). 간단히 말하자면, 회사 업무 App이 채팅 앱, 회계 프로그램, 일정 관리 프로그램 등 여러 가지가 있다고 하자. 이때 모든 App들을 컴포넌트 단위로 서비스화한 다음, 표준 인터페이스를 통해서 하나의 커다란 업무 관리 App을 만드는 것이다. - 소프트웨어의 재사용성이 강조된다. - 비즈니스 환경의 변화에 빠르게 대응할 수 있다. - 각 서비스는 의존성이 최소화(Loosely Coupled)되어 있어야 한다. - 아키텍처 모델에는 시스템 ..

(참고) www.geeksforgeeks.org/trie-insert-and-search/ Trie | (Insert and Search) - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org Trie는 reTrieval data structure을 의미하며, 검색 복잡도가 최적의 값이 되게 해줍니다. 만약 우리가 k..

www.aladin.co.kr/shop/wproduct.aspx?ItemId=157472828 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 www.aladin.co.kr 스프링을 배우기로 마음먹고 나서 스터디용으로 샀던 책이다. 시중에 스프링 관련 책이 많은지라 고민을 꽤 했는데, 책들을 크게 세 가지로 나눌 수 있었다. 1. 스프링으로 결과물을 빠르게 낼 수 있는 책 (대부분 스프링부트였다.) 2. 스프링의 기본부터 자세히 다루지만 너무 자세한 책 (토비's) 3. 스프링 기본을 다루지만 초보자용 지금까지 웹 개발을 배울 때 '먼저 구현해보고 이해하자'라는 방식이었는데, 프레임워크가 대부분의 작업을 대신해줘서 웹에 대한 기본적인 이해 없이도 웹 서비스..
- Cannot set headers they are sent to the client 오류 => connection이 이미 만들어졌는데 또 connection을 만들려 할 경우 발생한다. connection을 한번 만들었으면 닫기 전까지 연결이 유지되므로 바로 query 함수를 사용하면 된다. ex) 내가 잘못 짰던 코드 connection = mysql.createConnection({ ... }) app.get('/', function(req, res){ connection.connect({ connection.query(sql, function(){}); )}; });
타임리프 타임리프는 Server-side Java 템플릿 엔진으로, HTML, XML, JS, CSS를 처리할 수 있어 웹과 단일 환경을 지원한다. 타임리프의 주 목적은 템플릿을 유지보수가 용이하도록 제작하는 방법을 제공하는 것이다. 그래서 타임리프는 Natural Templates의 개념을 적용해 디자인에 영향을 미치지 않는 템플릿에만 로직을 주입하는 방식을 사용한다. 이 방법은 디자인 팀과 개발 팀의 갭을 줄이도록 해준다. 사용하는 방법 자체 컨트롤러 인터페이스를 사용하는 경우 타임리프를 사용하기 위해서는 응답 프로세스마다 타임리프 context를 설정해주어야 한다. 컨트롤러에서 뷰로 모델 객체를 넘겨주는 대신, 타임리프 context에 변수로 설정해주면 된다. Spring MVC 스프링의 ViewR..