covenant의 등록된 링크

 covenant로 등록된 티스토리 포스트 수는 224건입니다.

깃허브 활동을 우아하게보자! 깃허브 시각화 서비스 10개 [내부링크]

시작하며 2022 네이버 연말결산 2022 네이버 연말결산을 보면서 한 해 자신의 활동을 숫자로, 그래프로 표현하는 게 재미있다고 생각하였습니다. 깃허브에도 자신의 활동을 그래프, 숫자 등으로 보여주는 다양한 시각화 서비스가 있으며, 이 중에서 10개를 선정하여 소개합니다. 1. (KR) OPGC OPGC 방문하기 한국 개발자분이 만드신 서비스입니다. 서비스 이름에서 알 수 있듯이 롤 전적 검색사이트인 OP.GG에서 영감을 받은 것으로 보입니다. 깃허브 활동을 점수화하여 순위로 보여줍니다. 1일 1커밋을 많이 할 수록 높은 점수를 얻습니다. 저의 랭킹은 글을 쓰는 시점 기준으로 39위입니다. 깃허브 모든 사람의 랭킹을 보여주는 게 아니며, OPGC에 프로필을 한 번이라도 검색한 사람을 기준으로 등수를..

롬복에서 record로 리팩터랑하는 방법 [내부링크]

시작하며 반복적인 코드를 줄이기 위해서 롬복을 사용하여 Getter, Setter 등 사용하였을 것입니다. 그러나 JDK 14부터 등장한 record를 사용하면 롬복을 사용하지 않고 조금 더 코드를 간결하게 만들 수 있습니다. 본 글은 기존에 롬복을 사용한 클래스를 롬복을 제거하고 단계별로 리팩터링하여 record로 전환해보겠습니다. 현재 상황 @Data @AllArgsConstructor public class Member { private String username; private String nickname; } Data 에노테이션을 사용한 코드가 비즈니스 로직에 퍼져있다고 가정해보겠습니다. 이 Member 클래스를 record로 리팩터링을 단계별로 진행해보겠습니다. STEP 1. 테스트 코드 생..

스프링 부트 2에서 스프링 부트 3로 업그레이드 가이드 [내부링크]

0. 시작하며 22년 11월 스프링 부트 3가 정식 릴리즈 되었습니다. 18년 3월 1일 스프링 부트 2가 나온 이후 3년 9개월의 시간이 지난 오랜만의 메이저 업데이트 입니다. 기존의 프로젝트를 스프링 부트3로 업그레이드(마이그레이션)하면서 경험한것을 나누려고합니다. 메이저 버전 업그레이드가 일어나면 공식 문서에서 가이드를 제공합니다. (참고 Spring Boot 3.0 Migration Guide) 본 글은 여러 케이스를 추가여 조금 풀어서 작성하였습니다. 1. JDK 17 이상으로 업그레이드 스프링 부트2와 3의 가장 큰 변화는 스프링 부트3에서는 더이상 JDK 17 미만의 버전을 지원하지 않는다는 것입니다. 실제로 스프링 부트3 코드를 보면 래거시 자바 문법을 쳐내고 JDK 17 문법을 적용한 코..

백엔드 개발자 22년 회고: 커머스에서 네이버 웹툰으로 [내부링크]

Source. Naver Youtube 0. 시작하며 21년 회고 글에서 목표를 세우지 않고 건강히 한 해를 보내자는 말로 마쳤지만, 1월부터 그러하지 못한 하루를 보냈습니다. 커리어으로 고민이 깊어져 갔습니다. 다분히 고민에서 그치는 것이 아니라 현업의 많은 선배 개발자를 만나서 이야기를 듣고, 공부량을 점차 늘려갔습니다. 회사 일을 소홀히 하는 것 없이 절대 낮지 않은 수준의 업무 강도를 소화하면서 공부와 면접을 준비하였으며 올 한해가 지나기 전에 이직을 마무리하였습니다. 본 한편의 글에 드라마처럼 펼쳐진 한 해의 이야기를 담기에 부족한 필력과 담기 어려운 이야기도 있지만, 부분적으로나마 최대한 담아보려고 합니다. 지금까지 작성한 회고 글 1년차 회고: 1년차를 맞이한 서버 개발자의 취준 공백기 ..

WebSecurityConfigurerAdapter Deprecated 대응법 [내부링크]

WebSecurityConfigurerAdapter란? 스프링 시큐리티를 사용하면 기본적인 시큐리티 설정을 하기 위해서 WebSecurityConfigurerAdapter라는 추상 클래스를 상속하고, configure 메서드를 오버라이드하여 설정하였습니다. 그러나 스프링 시큐리티 5.7.0-M2 부터 WebSecurityConfigurerAdapter는 deprecated 되었습니다. 스프링 공식 블로그 2022년 2월 21일 글에서 WebSecurityConfigurerAdapter를 사용하는 것을 권장하지 않는다고 컴포넌트 기반 설정으로 변경할것을 권항합니다. 스프링 부트 2.7.0 이상의 버전을 사용하면 스프링 시큐리티 5.7.0 혹은 이상의 버전과 의존성이 있습니다. 그렇다면 WebSecurity..

인텔리제이 JDK 설치 및 JDK 버전 변경 방법 [내부링크]

0. 시작하며 인텔리제이를 사용하면 복잡하게 JDK를 다운로드받고 환경변수를 설정하는 과정을 거치지 않아도 됩니다. 초기 인텔리제이 JDK를 설치하지 않았거나 별도의 설정을 하지 않은 상태에서 컴파일시 Cause : error : invalid source release 17 에러를 마주하게 됩니다. 1. Project Structure 설정 [File] -> [Project Structure] -> [Project] 선택합니다. 맥 단축키: Command + ; 윈도우 단축키: Shift + Ctrl + Alt + S 사진과 같이 클릭하여 JDK 다운로드 창으로 넘어갑니다. 다운받고자 하는 JDK 버전을 선택해주고, JDK 제공 벤더를 선택합니다. Amazon Corretto는 OpenJDK의 프로덕션..

세 번째 회사로: 네이버 웹툰에 가기까지 [내부링크]

1. 시작하며 22년 10월 28일 자로 공채로 입사한 11번가를 떠나 네이버 웹툰에서 개발자의 도전을 이어갑니다. 본 글에 등장하는 회사는 면접 전에 비밀서약서를 작성하기에 작성할 수 있는 내용에 한계가 있어서 이번 이직 후기는 작성하지 않으려고 했습니다. 그러나 이직을 고민하고, 도전한 내용을 정리하는데 의미가 있다고 생각이 들어서 부족하게나마 문제 되지 않은 선으로 이직 후기 글을 남깁니다. 2. 21년 겨울. 이직을 결심하며 2020년 하반기 11번가 신입 개발자 채용 면접 후기 11번가에 좋은 분들이 합류하기를 바라는 마음에서 11번가 공채 후기로 남긴 글인 2020년 하반기 11번가 신입 개발자 채용 면접 후기 글은 1만 조회 수, 댓글은 100개가 넘었습니다. 후기 글을 통하여 11번가에 합..

레거시 폭파 프로젝트 이야기 (두 달간의 회원 가입 서비스 레거시 개선 회고) [내부링크]

새로운 요구사항 올해 초 팀에 새로운 미션이 떨어집니다. 불법적 자금 세탁을 막기 위해서 AML(Anti Money Laundering. 불법자금세탁방지 심사)을 적용해야 하며 가입 단계에서 AML을 위하여 가입 단계에서 추가적인 정보를 입력받아야 했습니다. 올해 초 작업한 개인 셀러의 경우 AML 적용을 위해서 몇 개의 정보만 추가로 입력받고, 회원 정보에 AML 솔루션 연동하면 되었습니다. 개편 전 푸르댕댕한 사업자 셀러 가입 폼 일부 그러나 사업자 셀러의 경우 AML을 위해서 가입단계에서 입력받을 정보가 상당히 늘어났습니다. 기존처럼 하나의 가입 페이지에서 가입 정보를 세 단계로 나누어서 목적에 맞게 입력 단계를 구분하기로 하였습니다. 셀러 가입 대행 서비스가 있을 정도로 셀러의 가입에서 많은 정보..

데브 이벤트 웹 프로젝트 고도화 (with UPF) [내부링크]

본 글은 UPF에서 22년 03월부터 06월까지 3개월간 데브 이벤트 웹 프로젝트 고도화한 후기입니다. 0. 데브 이벤트란? 데브 이벤트 깃허브 저장소 데브 이벤트는 개발자 행사를 모아둔 Github 저장소입니다. 20년 8월 개발자 행사를 잊지 않고 참석하기 위해 기록하기 위한 저장소로 시작하여 현재까지 926개의 행사, 76개의 개발자 모임, 단체, 48개의 개발자 행사 다시보기를 소개하였습니다. 데브 이벤트에 대한 더 자세한 소개와 고민을 보고 싶으시다면 오픈소스 용감한 친구들 21년 회고 글에서 소개고 있습니다. 1. 데브 이벤트 웹 프로젝트를 시작하며 스크래핑 방식으로 서비스 확장할 수 밖게 없는 현 상황 깃허브 저장소에 국한하지 않고 데브 이벤트 서비스를 확장하기 위한 다양한 노력을 하였습니다..

Junit5 테스트 이름을 지정하는 5가지 방법 (DisplayName, DisplayNameGeneration, Named) [내부링크]

시작하며 Junit5에서는 다양한 방법으로 클래스와 테스트 메서드에 이름을 지정할 수 있습니다. 본 글에서는 DisplayName 뿐만 아니라 이 글을 작성하는 기준 Junit5 최신 버전인 5.8 버전에서 추가된 테스트 이름을 지정하는 방법을 살펴보겠습니다. 예제 코드 public static String emailMasking(String email){ int maxVisibleLength = 2; email = StringUtils.trim(email); String localPart = StringUtils.split(email, "@")[0]; String emailDomain = StringUtils.split(email, "@")[1]; return localPart.substring(0, ..

nginx 에러 invalid PID number "" in "/usr/local/Cellar/nginx/1.21.3/logs/nginx.pid" [내부링크]

문제 상황 $ nginx -s reload nginx: [error] invalid PID number "" in "/usr/local/Cellar/nginx/1.21.3/logs/nginx.pid" nginx를 재시작했을떄 logs 디토리에 nginx.pid파일에 PID 값이 없어서 생기는 문제입니다. nginx.conf 파일 경로를 설정해줌으로 해결할 수 있습니다. 해결 $ nginx -c /usr/local/etc/nginx/nginx.conf STEP 1: -c 파일경로는 파일경로에 있는 nginx 설정파일 경로로 nginx 설정파일 경로로 재설정해줍니다. *참고. 여기서 nginx 실행파일 경로는 ./usr/local/Cellar/nginx/1.21.3/bin/nginx이며 설치 환경마다 ngi..

nginx 에러 open() "/nginx/1.21.3/logs/nginx.pid" failed (2: No such file or directory) 해결 [내부링크]

문제상황 nginx: [error] open() "/usr/local/Cellar/nginx/1.21.3/logs/nginx.pid" failed (2: No such file or directory) nginx를 실행했더니 No such file or directory 에러가 나옵니다. 처음 nginx를 실행한다면 흔히 만날 수 있는 문제인데 의외로 인터넷에 명쾌한 해결법이 없어서 남깁니다. 해결 *STEP 1 ~ STEP 3 까지 했을때 잘 되었다면 Pre Step은 하지 않아도 됩니다.) $ vim /usr/local/etc/nginx/nginx.config STEP 1: nginx.config 설정으로 이동합니다. #pid logs/nginx.pid; Pre STEP 1: nginx.pid 경로를..

Redis 데이터 한번에 삭제하기 [내부링크]

상황 $ redis-cli --bigkeys 레디스에 메모리 사용량이 내려가지 않아서 어디에서 메모리를 사용하는지 확인하기 위해서 위의 명령어를 사용하였습니다. bigkeys 명령어는 scan하기에 운영에서 사용해도 됩니다. Biggest set found so far 'spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:userId' has 555 members 결과를 보니 스프링 세션을 레디스에 저장되도록 설정하여 생기는 문제로 보입니다. 데이터가 많기에 하나씩 삭제할 수는 없으며 키 패턴에 맞추어서 한 번에 삭제를 해야합니다. 해결 레디스는 복수..

[세미나] 모두를 위한 ML / Data, ML, Service, and Platform [내부링크]

시작하며 지난 12월 29일 박종천 님의 ML 기초 세미나가 있었습니다. (행사 링크 [OKKY 12월 세미나] 모두를 위한 ML / Data, ML, Service, and Platform) 본 글은 해당 세미나 내용을 간략하게 마크다운으로 남깁니다. 박종천님은 유튜브 개발자가 갖추어야 할 9가지 기술 10만뷰 영상으로 유명하시며 과거 한글과컴퓨터에서 초기 한글 개발에 참여하셨으며 블리자드 재직시절 스타크래프트 한글화 지원 패치를 하신분입니다. 강연 일부 내용을 간략하게 남깁니다. 강연 자료는 okky에 아직 업로드되지 않은 상태라 추후 업로드되면 본 글에 링크를 남기겠습니다. 본문의 삽화는 강연 슬라이드에서 언급하신 자료의 원본 자료입니다. 발표자 박종천님 현) TBT 고문 (Advisor) 현) M..

오픈소스 용감한 친구들 21년 회고 [내부링크]

1. 용감한 친구들이란? Github. 용감한 친구들 20월 08월 용감한 친구들 이름으로 시작한 Github Organization입니다. 용감한 친구들의 첫 번째 프로젝트인 데브 이벤트를 시작으로 데브이벤트 메일 구독, 앱, 용감한 인터뷰 등 다양한 서비스를 제공하고 있습니다. 용감한 친구들의 프로젝트는 21/12/19 ~ 12/12/31 기준(13일 기간) 1,266 Unique Visitor(2,957 views)를 기록하며 많은 사랑을 받는 오픈소스 그룹입니다. 2. 감사합니다. 본 글을 시작하기 전 21년 한 해 오픈소스 용감한 친구들과 함께하신 분들에게 감사의 말씀 드립니다. 함께하신 분이 없더라면 오늘의 글이 불가능했을 것입니다. 데브 이벤트: @covenant, 39분의 컨트리뷰터 데..

메타버스 개발자에서 커머스로 주니어 개발자 1년 회고 [내부링크]

0. 2021 회고를 시작하며 2021년 한 해가 저물어 갑니다. 올해 회고에서는 2부작으로 나누어 1부는 성장편, 2부는 오픈소스 용감한 친구들로 나누어서 작성하였습니다. 1부 성장 회고에서는 메타버스 회사에서 커머스로 넘어와 1년간 백엔드 주니어 개발자로서 성장한 기록을 담아보았습니다. 지금까지 작성한 회고 글 1년차 회고: 1년차를 맞이한 서버 개발자의 취준 공백기 회고 및 지금 생각 20년 회고: 2020년 회고 학부시절 회고: 컴퓨터공학 학점 2.82에서 성적 장학금까지 1. 스타트업 퇴사 20년 12월 23일 정규직으로 첫 회사인 스타트업을 퇴사하였습니다. 20년 회고 글에서는 다루지 않았기에 이번 기회에 살짝만 작성해보겠습니다. 당시 있었던 일은 향후 상세히 작성해보도록 하겠습니다..

2022 주일설교 [내부링크]

바로가기 2021년 분당우리교회 설교 주일설교 12월 12월 25일 분당우리교회 주일설교 | 사랑이 태어나고, 희망이 다가오다 사랑이 태어나고, 희망이 다가오다 이는 한 아기가 우리에게 났고 한 아들을 우리에게 주신 바 되었는데 그의 어깨에는 정사를 메었고 그의 이름은 기묘자라, 모사라, 전능하신 하나님이라, 영존하시는 아버지라, 평강의 왕이라 할 것임이라(사 9:6) 목사님은 여름이 좋으세요 겨울이 좋으세요 질문을 하면 서로 장점이 있어서 고민이 되지만 여름은 낮이 길고 밤이 짧다는 점만 고려해서 답을 한다면 저는 단연코 여름이 좋습니다. 겨울에 아침 7시 예배다 보니깐 아침에 교회를 향해서 집을 나서면 캄캄한 밤이 안 그래도 추워서 움츠러드는데 너무 싫습니다. 이런 면에서 여름이 좋습니다. 아침에 3..

완벽정리! 자바 string 문자열을 배열로 분리하기 [내부링크]

방법 1. String.split() 자바에서 문자열을 배열로 분리하기 위해 많이 사용하는 방법으로 String.split()이 있습니다. 인자로 구분자 혹은 정규식을 넣을 수 있습니다. 방법 1-1. String.split() 구분자 String str = "Apple,Amazone,Google,Microsoft"; String[] list = str.split(","); System.out.println(Arrays.toString(list)); [Apple, Amazon, Google, Microsoft] , 구분자를 넣었을 때 문자열을 배열로 분리해줍니다. String str = "Apple Amazon Google Microsoft"; String[] list = str.split(" "); S..

JPA 1대 N 양방향 연관관계 매핑 및 생성 API 만들기 [내부링크]

0. 시작하며 프로젝트를 하다가 검색했을 때 1:N 매핑관련 글은 많지만, API 전체 시나리오를 바탕으로 작성한 글은 많이 없기도 하고 객체지향 관점으로 간단하게 생각해볼 포인트가 있어서 함께 글을 작성해봅니다. 본 글에 사용한 스프링부트 전체 코드는 Github에서 확인하실 수 있습니다. 1. 1-N 모델 좌. 오징어게임 - 구슬치기 장면 우. 주머니와 돌멩이의 1:N 스키마 하나의 주머니에 N개의 돌멩이를 넣을 수 있는 간단한 스키마를 설계하였습니다. API에 주머니, 그리고 N개의 돌멩이 정보를 json으로 보내면 DB에 저장해보겠습니다. { "pocketName": "우아한 주머니", "pocketColor": "파랑색", "stones": [ { "stoneName": "돌멩이A" }, { ..

완벽정리! 자바 문자열 배열을 문자열로 합치는 방법 [내부링크]

시작하며 문자열 배열을 하나의 문자열로 변환하려는 경우 자바에서는 .toString()을 이용하여 직접 변환할 수 없습니다. String[] company = { "Apple", "Amazon", "Google", "Microsoft"}; System.out.println(company.toString()); [Ljava.lang.String;@9225652 요상하게 출력되는 값은 객체 타입과 해시값입니다. 하나의 문자열로 만드는 6가지 방법에 대해서 알아보겠습니다. 배열을 하나의 문자열(String)로 합치는 법 방법 1. String.join() String.join()은 합친 문자열을 반환합니다. join()의 첫 번째 인자로 배열의 원소간 연결할 구분 문자, 두 번째 인자로 배열을 넣습니다. St..

스프링 코드로 이해하는 핵사고날 아키텍처 [내부링크]

시작하며 전형적인 계층화 아키텍처(layered architecture)의 대안인 핵사고날 아키텍처를 스프링 코드로 살펴보겠습니다. 핵사고날 아키텍처는 포트와 어댑터 아키텍처라고도 불리며 비즈니스 로직을 구현한 내부 영역, 비즈니스 로직을 호출해 외부의 요청을 처리하는 인바운드 어댑터(컨트롤러가 이에 포함), 영속 계층 대신 비즈니스 로직에 의해 호출되고 외부 애플리케이션을 호출하는 아웃바운드 애플리케이션이 있습니다. 애플리케이션 코어는 외부 어댑터에 의존하지 않는 것이 특징입니다. 코드로 구현해보자 본 글에서는 간단한 입출금을 REST API로 수행하는 핵사고날 아키텍처를 스프링부트로 구현해보겠습니다. 1. 도메인 모델 public class BankAccount { private Long id; pr..

완벽정리! Junit5로 예외 테스트하는 방법 [내부링크]

환경 구성 testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeClasspath - Runtime classpath of source set 'test'. +--- org.springframework.boot:spring-boot-starter-web -> 2.5.6 \--- org.springframework.boot:spring-boot-starter-test -> 2.5.6 +--- org.junit.jupiter:junit-jupiter:5.7.2 gradle 의존성 spring-boot-starter-web를 선택했다면 자동으로 spring-boot-starter-test ..

완벽정리! LocalDateTime을 살펴보자 [내부링크]

시작하며 Go 언어로 개발하다가 스프링으로 넘어와서 의외로 헷갈렸던 부분이 시간을 다루는 것이었습니다. Go에서는 time, Month 패키지명 부터 시작해서 함수 이름이 상당히 명확한데 LocalDateTime 이라는 이름부터 이상했으며 또 Java 8 이후로는 Date는 사용 안 한다고 하니 레거시는 Date를 사용하고.. 더욱 헷갈렸습니다. 본 글에서는 LocalDateTime을 정리해보겠습니다. 1. LocalDateTime now() - 현재 시스템 시간 static LocalDateTime now() - 현재 로컬 컴퓨터의 날짜와 시간을 반환 LocalDateTime.now(); 2021-11-08T11:44:30.327959 static LocalDateTime now(Clock clock)..

스프링 부트에서 Schedule 사용하기 [내부링크]

시작하며 특정 시간에 주기적으로 해야 하는 일이 있습니다. 뉴스레터와 같은 이메일 발송, 주기적으로 데이터베이스 동기화, 이용시간이 적은 시간에 대량 로그 전송 등등의 일이 그 예시가 될 것입니다. 스프링 부트에서 이런 작업을 @Schedule 어노테이션을 사용하면 쉽게 할 수 있습니다. 본 글에서 @Schedule 활용을 살펴보겠습니다. 의존성 추가 @Schedule은 org.springframework.scheduling 패키지에 있습니다. 다음과 같이 의존성을 추가하면 됩니다. Gradle이라면 build.gradle에 다음과 같이 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-web' 메이븐이라면 pom.xm..

Mybatis의 위험한 where 1=1 사용, trim으로 해결될까? [내부링크]

시작하며 회사 코드 중에 마이바티스 동적 쿼리로 WHERE 1=1 코드를 보았습니다. SELECT id, username, nickname FROM member_test WHERE 1=1 AND username = #{username} AND nickname = #{nickname} SELECT WHERE 1=1 예시 위의 예시 쿼리는 생각해볼 부분이 있습니다. username, nickname이 모두 null이 넘어오면 전체 조회가 발생합니다. 두 인자가 null이 넘어왔을 때 데이터 전체 조회가 된다는 사실을 의도하지 않거나 예상하지 못한다면 데이터에 따라서 애플리케이션 응답 지연 문제 등 발생할 수 있습니다. DELETE FROM member_test WHERE 1=1 AND username = #..

Spring Cloud Gateway를 이용하여 게이트웨이 구성 및 유레카 서버 연동 [내부링크]

0. 시작하며 이전 글(넷플릭스 유레카를 이용한 서비스 디스커버리, 등록 구현(with 스프링부트, GO, 플라스크))에서 넷플릭스 유레카를 이용하여 서비스 디스커버리를 만들었고 스프링부트, Go, 플라스크 서비스를 등록하였습니다. 본 글에서는 스프링 클라우드 게이트웨이(Spring Cloud Gateway)를 이용하여 클라이언트는 스프링 게이트웨이를 통해서 URI을 호출하면 스프링 게이트웨이가 요청을 처리할 수 있는 벡엔드 애플리케이션에게 요청을 전달하고, 응답을 전달받아 클라이언트에 응답하도록 하겠습니다. 목차 왜 게이트웨이를 사용해야할까? 게이트웨이의 클라이언트 요청 처리 시나리오 스프링 클라우드 게이트웨이 구현 게이트웨이 테스트 1. 왜 게이트웨이를 사용해야할까? 문제상황 게이트웨이를 사용하지 않..

넷플릭스 유레카를 이용한 서비스 디스커버리, 등록 구현(with 스프링부트, GO, 플라스크) [내부링크]

0. 시작하며 MSA구조에서 인스턴스 상태는 동적으로 변합니다. 이러한 변경 사항을 서비스 관리자가 실시간으로 변경하는 것은 어렵습니다. 본 글에서 다룰 넷플릭스 유레카 서비스 디스커버리 서버(Spring Cloud Netflix Service Discovery Server)를 이용하면 더욱 수월한 MSA 세상을 만날 수 있습니다. 새로운 인스턴스는 시작할 때 유레카 서버에 IP, 호스트 주소, 포트 정보 등을 전달합니다. 유레카 서버는 등록된 인스턴스들을 주기적으로 상태를 체크하면서 해당 인스턴스를 관리합니다. 목차 본 글에서는 넷플릭스 유레카를 이용하여 스프링부트 디스커버리 서버를 만들어보고 스프링부트, Go, 플라스크를 이용하여 유레카 서버 클라이언트르 만들어 디스커버리 서버에 등록해보겠습니다. 넷..

JPA 기본편 스터디 강의자료 [내부링크]

시작하며 지난 3개월간 총 404장, 12화로 제작한 (사내) 스프링 스터디를 마쳤습니다. (스터디 자료 보러가기! 11번가 스프링 & 오브젝트 스터디 강의자료) 이어서 8주간 JPA 스터디를 진행합니다. 지금까지 사용한 프레임워크 ORM인 Django ORM, GO ORM(go-queryset)에 비하면 JPA는 공부할것이 많고 실무 환경에서 제대로 사용하려면 더더욱 어렵습니다. ORM을 공부하는데 두 달의 시간을 할애하는것이 가성비가 좋지 않아 보일 수 있습니다. 시간을 십분 활용하여 JPA, 디자인 패러다임, Best Practice Case Study, Testing 등.. 다양한 이야기를 담을 예정입니다. 공부를 진행하는 지식을 세상에 내놓는다는 것은 쉬운 결정은 아니지만 지난 3개월 사내 ..

재택근무를 위한 서버 개발자 책상 업그레이드 [내부링크]

올해 5월 재택근무를 위해서 새롭게 근무 환경을 만들었습니다. 그 후기를 남깁니다. 시작하며 Source. naver 코로나가 잠잠해져서 재택이 풀리나 했는데 다시 그 질병의 기승으로 전면 재택이 지속되고 있습니다. Quora 재택의 장단점이 있겠지만 좌우간 어떤 상황이든 신입으로 입사한 조직에서 1%라도 매일의 성장을 이룬다면 1년이 지났을 때 놀라운 37배의 성장을 이룰 수 있습니다. 재택으로 퍼포먼스가 떨어진다면 1년이 지난다면 퇴보를 경험할 수 있습니다. (복리의 장난처럼 보일 수 있겠지만요..) 성장의 곱의 법칙이냐는 의문이 들 수 있겠지만, 지난 회사에서 난생 처음 접하는 언어로 세세하게 가이드 해주는 사람 없이 바닥부터 공부해서 서비스 유지보수 및 서비스를 런칭한 경험이 있습니다. 퇴사하는 ..

성장하는 서버 개발자 되기 강의록 [내부링크]

성장하는 서버 개발자 되기 강의록 27(금) 19:00 원티드 Live Talk 성장하는 서버 개발자 되기 강연에 참석하여습니다. 원티드에 블로그 포스팅 허락을 받고 마크업으로 남깁니다. 서버 개발자로 성장하기 (당근마켓 변규현) 소개 당근마캣 개발자 AWS Serverless Hero Go 언어 사용 커리어 오기 전 CTO 하고 등등... AWS Korea User Group 활동하던 중 17년 당근마켓 CTO를 만났다. 이후 19년 이야기하다가 합류하게 되었다. 커뮤니티 활동 커뮤니티 활동이 이직에 도움이 될까? → 도움이 된다. 왜 도움이 될까? 어떤 도움을 받았을까? 커뮤니티라는 것은 기술을 좋아해서 이야기하는 사람이 많다. 커뮤니티에서 어떻게 개발 지식을 쌓을까? 가입하고 구독만 하는 것이다. ..

오픈소스 1000스타 후기 (면접 스터디 저장소) [내부링크]

부재. 물음에 답하다. K스타트업부터 실리콘밸리까지 Cover Image: spotlight 실리콘밸리 25 기준으로 국내 IT기업부터 실리콘밸리까지 "현직자가 해설해주는 기술면접" 저장소인 Brave Tech Interview가 1000스타를 받았습니다. 감사와 후기글을 작성해봅니다. 하브루타 EBS 왜 우리는 대학에 가는가 5부 - 말문을 열어라 유대인들의 도서관은 시끄럽습니다. 얼핏 보면 서로 싸우는 듯 이야기를 합니다. 이는 유대인들의 전통적인 공부 방식인 하브루타입니다. 함께 공부하고, 동의하지 않는 부분에 대해서 반론을 제시하며 공부합니다. Brave Tech Interview는 하브루타 방식에서 착안하였습니다. 유대인들처럼 실제로 마주앉아 공부하지는 않지만, 유명 회사의 면접 질문에 대한 답..

11번가 스프링 & 오브젝트 스터디 강의자료 [내부링크]

Cover Image. SEOULSQUARE Official Page 시작하며 지난달부터 동기들과 김영한님의 인프런 강의인 스프링 핵심 원리 - 기본편 을 바탕으로 함께 스터디하고 있습니다. 스터디 모임에 사용한 제가 제작한 슬라이드를 세상에 공개합니다. 스프링 스터디를 준비하거나 스프링을 깊게 공부하고 싶은 분에게 하나의 나침판이 되었으면 좋겠습니다. Week 1. 스프링이 사랑한 SOLID Week1 스프링이 사랑한 SOLID from covenant EJB라는 암흑의 시간을 지나고 Spring이 등장하였습니다. Spring과 EJB의 가장 큰 차이점은 프레임워크의 의존성을 줄이고 SOLID를 십분 활용한 개발을 할 수 있다는 점입니다. 저의 과거 회사에서 SOLID를 지키지 못해 ..

[실리콘벨리 알고리즘 시리즈] 빠진 숫자 찾기 (Find the Missing Number) 파이썬 풀이 [내부링크]

시작하며 미국의 네카라쿠배인 FAANG 개발자를 채용하는데 알고리즘 문제해결능력을 어느정도 볼것인가 대한 갑논을박이 있지만 좌우간 현재시점에서 알고리즘은 개발자를 뽑는 하나의 주된 척도로 사용하고 있습니다. 특히 오프라인 알고리즘 면접인 경우 쉬운 문제로 시작했지만 조건을 추가하거나 힌트를 주고 어떻게 최적화하는지 물어봅니다. 이런 연습을 하기 제일 좋은 것은 하나의 문제를 다양한 방법으로 풀어보고 최적화하는 것이라고 생각합니다. 실리콘벨리 알고리즘 시리즈는 쉬운 문제지만 다양한 각도로 풀어봅니다. 국내 IT기업, 실리콘벨리 문제 해설 저장소인 Github Brave Tech Interview에 코드 일부가 올라갑니다. 문제. 배열에 빠진 수 찾기(missing number) 서로 다른 [1, n]범위의..

프로메테우스, 그라파나를 이용한 스프링부트 모니터링 [내부링크]

Cover Photo by Tobias Tullius on Unsplash 0. 소개 스프링부트 웹 애플리케이션을 배포하여 경우 잘 동작하는지 모니터링을 통하여 애플리케이션의 상태를 확인해야합니다. 모니터링을 통하여 문제가 발생하기전에 미리 대응을 하거나 문제를 분석하는데 도움을 받을 수 있습니다. 본 글에서 Spring Actuator, Micrometer, Prometheus, Grafana로 모니터링할 수 있는 환경을 구성해보겠습니다. Spring Actuator: 스프링부트의 서브 프로젝트로 스프링 부트 애플리케이션이 제공하는 여러가지 정보를 쉽게 모니터링 할 수 있게 도와주는 라이브러리입니다. Micrometer: Spring 5부터 Spring의 메트릭은 Micrometer에서 처리됩니다. P..

[로켓 학습] 스프링부트 CRUD REST API (JPA, MySQL, Gradle) [내부링크]

[로켓 학습] 스프링부트 CRUD REST API (JPA, MySQL, Gradle) 로켓처럼 빠르게 만나는 스프링부트!! 0. 시작하며 17년 처음 Django로 서버 사이드 개발을 접하였습니다. 당시 장고걸즈 튜토리얼을 따라하며 공부했습니다. DB도 모르던 시절이라 ORM도 생소하였고 템플릿 언어를 사용한 서버사이드 랜더링 모든게 낯설었습니다. 우선 튜토리얼을 따라서 게시판을 만들어보고 궁금했던 부분, 프로젝트시 막히던 부분을 찾아서 공부하는하는 방식이 도움이 되었습니다. Spring 공부 전략도 이와 마찬가지일 것입니다. Spring Boot 공부에 한세월, JPA 공부에 한세월 그리고 뭔가를 만들어보려고 하면 다시 새로운게 나오고 다시 공부하는데 한세월... 이러다가 흥미를 잃어버리거나 정년..

1년차를 맞이한 서버 개발자의 취준 공백기 회고 및 지금 생각 [내부링크]

Source. JustWatch 슬럼독 밀리어네어 커버 이미지는 영화 '슬럼독 밀리어네어'의 한 장면입니다. 주인공 자말은 ‘누가 백만장자가 되고 싶은가’라는 최고 인기 퀴즈쇼에 참가합니다. 교육을 받지 못한 자말을 사람들은 무시하였으나 사람들의 예상을 깨고 최종 라운드에 오르게 됩니다. 정규 교육도 제대로 받지 못한 그의 부정행위를 의심한 경찰은 ‘자말’을 사기죄로 체포합니다. 조사결과 경찰은 자말이 험난하게 살아온 삶의 경험이 퀴즈의 정답을 맞출 수 있는 실마리였다는 것을 알게됩니다. 지금 상황이 어렵더라도 나중에 그 퍼즐을 맞추었을 때 어떤 모습일지는 아무도 알 수 없다는 의미에서 커버 이미지를 선택하였습니다. 부제: 방황의 퍼즐을 맞추며 비정규직으로 일한 시간을 포함하면 일 년이 지..

REST란? REST API 디자인 가이드 [내부링크]

REST란? REST API 디자인 가이드 시작하며 작년 저의 커리어의 첫 번째 회사인 스타트업 입사 첫날 사수님이 REST API를 구현해본적이 있냐고 물어보셨습니다. 그런 경험이 없다고 하니 REST API 디자인 가이드 글을 읽어보라고 주셨고 이렇게 REST API의 첫 만남을 시작하여 퇴사하기 전까지 주어진 중요한 일은 프론트와 API 스팩을 정하는 것이었습니다. 한번 스팩을 정하면 벡엔드 개발자인 저만 바꾸어야 하는 것이 아닌 프론트에도 영향이가니 신중함과 검토와 소통의 연속이었습니다. 당시 어떻게 개발해야할까 검색과 고민한 내용을 재구성하여 작성해봅니다. 참고 링크는 글의 후미에 작성하였습니다. REST란? REST는 웹의 창시자(HTTP) 중의 한 사람인 Roy Fielding(로이 필딩)이..

끝판왕 허먼밀러 에어론 의자 구입 + 헤더레스트 장착 후기 [내부링크]

부제: 재택근무 환경을 개선해보자 시작 재작년 네이버 컨퍼런스 참석을 위해 그린팩토리를 방문했을 때 강연하시는 분이 사무실 의자인 허먼밀러 의자가 그렇게 좋다고 말씀하셨습니다. 당시 의자 구매를 위해서 알아보던 차에 그 자리에서 허먼밀러를 검색했더니 100만원이 넘는 뜨악한 가격을 보고 구매 욕구를 접어두었습니다. 설명하시는 분이 허먼밀러가 네이버 의자 라는 별명을 갖고 있다고 말씀하셨지만, 네이버뿐만 아니라 카카오, 딜리버리히어로 그리고 SK 일부 그룹사들의 사무실 의자로 사용하고 있습니다. 무서운 가격에도 불구하고 1초에 7대씩 팔린다고 합니다. (* 2016년 기준 공식홈페이지 설명 참고) 허먼밀러와 유사한 내 마음속 인민밀러 BR200M 당시 연구실 의자가 좋지 못해서 고생하던 차에 건강을 위해서..

[캐치 개발자 커리어콘] 개발자의 역량 키우기 [내부링크]

지난 04. 26(월) ~ 04. 30(금) 진행된 캐치 커리어콘 '개발자 역량 키우기'의 2주차 '개발자와 성장' 주제에 대한 메모입니다. 주최측인 캐치에서 강연을 정리하여 포스팅하는 것은 허용하나 강연 PPT를 그대로 사용하는 것은 허락을 받지 못하였기에 본문의 이미지는 외부 이미지로 갈음하였습니다. 나를 위해 일하는 개발자 강연자 소개 유호현 '실리콘밸리를 그리다', '이기적 직원들이 만드는 최고의 회사' 저자 연대 인문학부 학/석사, 텍사스 정보학과 정보학과 박사과정 트위터(13-16년) 영문과에서 영어 음성학을 공부했다. 언어 처리는 문정학과에서 배운 게 도움이 되었다. 3년 일했다. 2년 자연어 처리 팀, 마지막은 검색팀 Airbnb(1..

[스프링 시큐리티] 디버깅 로그 출력 방법 [내부링크]

스프링 시큐리티에서 디버깅은 여간 어려운게 아닙니다. 브레이크 포인트를 걸려고 해도 필터 호출 순서도 모르곘고 어떤 필터 부터 걸어야하는지 긴가민가해서 래퍼런스 왔다갔다하면 코드집중력이 떨어집니다. 스프링 시큐리티 디버그 모드를 활성화하여 로그를 통해서 디버깅을 조금 쉽게 할 수 있습니다. 방법 1. EnableWebSecurity 어노테이션 @EnableWebSecurity(debug = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { // Config 코드를 작성해주세요. } EnableWebSecurity 에노테이션은 기본적으로 debug가 비활성화되어있습니다. debug값을 true로 주고 실행하면 다음과 같이 콘솔..

관악구 신림 주민의 슬기로운 세 가지 도서 대출방법 [내부링크]

시작하며 나의 20대 책 1000권 독서 프로젝트 이야기 글을 쓸 수 있었던 것은 20대의 삶 속에 항상 도서관이 있었습니다. 대학 시절 도서관 3층에 위차한 연구실이었기에 도서관 쇼파에서 책을 읽으며 쉬곤 하였습니다. 군대에서는 큰 비행단에 운 좋게 소대에서 걸어서 5분 거리에 복지동 도서관이 있었습니다. 서울에 올라와 가장아쉬운 점은 도서관이 근처에 없다는 점이었습니다. 관악구 신림 주민이 슬기롭게 책을 대출하는 세가지 방법을 알려드리겠습니다. 방법1. 강남쪽 도서관 직접 방문 역삼도서관 주민센터 도서관, 작은 도서관을 제외한다면 관악 쪽 강 남쪽 갈 일이 있다면 도서관 방문이 좋습니다. 저는 2호선 주변에 살기에 강남역에서 내려서 조금 걸어가야 하지만 역삼 도서관에서 대출하였습니다. 내부 인테리어..

파이썬 코드로 보는 Lock, DeadLock, Race Condition [내부링크]

파이썬 코드로 보는 Lock, DeadLock, Race Condition 이런 상황이 꼼짝달싹 못하는 상태 즉 데드락 상황입니다. 비유적으로 위 사진과 같은 상황이 컴퓨터 환경에서 일어납니다. 바로 교착생태(데드락, Deadlock)라고 불리는 상황입니다. 앞 혹은 뒤의 자동차가 비켜주어야 앞으로 나갈 수 있는데 다른 자동차 또한 앞 혹은 뒤 차가 비켜주어야합니다. 이렇게 둘 이상의 프로세스가 공유 자원을 획득하지 못해 더 이상 실행할 수 없고 무한정 기다려야하는 상황을 말합니다. 데드락 상황을 막기 위해서 세마포어(Semaphore)와 뮤택스(Mutex)를 사용합니다. 세마포어는 네덜란드 컴퓨터 과학자인 에츠허르 데이크스트라가 고안한 방법으로 멀티프로세스 환경에서 공유 자원 접근 제한하기 위한 방법으..

c️ 취업을 위한 코딩테스트 정복 로드맵 [내부링크]

Photo by Andrew Neel on Unsplash 코딩테스트 정복 로드맵 제 블로그의 글을 읽는 순서는 위와 같습니다. 마인드 확립 코딩테스트 공부 전 어떤 마음으로, 어떤 방법으로 공부해야하는지 마인드 확립 단계입니다. 시작의 빠르기가 중요한 것이 아닌 방향이 중요합니다. 취업을 위한 코딩테스트 공부방법 기초 인터넷에 코딩테스트 준비를 위해서 검색해보면 백준 사이트를 추천해줍니다. 그래서 백준 사이트에 접속했더니 반겨주는 것은 수 많은 문제들. 이 중에서 어떤 문제를 풀어야할지 막막할 것입니다. 현재 글에서 코딩테스트 공부 시작을 위한 백준 문제를 추천해드립니다. 코딩테스트를 통과하고 1차 면접에서 제출한 코딩테스트를 리뷰하기 때문에 파이썬으로 코딩테스트를 준비한다면 코딩테스트에 최적화된 Py..

코딩테스트 시작을 위한 백준 문제 추천 [내부링크]

코딩테스트 시작을위한 백준문제 추천 Source. Pixabay Philipp Kleindienst 시작하며 본 글은 코딩테스트를 시작하는 분들을 위한 글입니다. 올해 초 코딩테스트 대비를 위한 백준 문제 추천글을 작성하였습니다. 본 글은 어느정도 알고리즘 공부가 된 전공 4학년이 빠르게 코딩테스트 대비를 하기 위해서 실전에 나올법한(실제로 나왔던)스타일의 어느정도 난이도 있는 문제들을 추천하는 글을 작성했습니다. 본 글을 읽고 취업 준비를 일찍 하고 싶어하는 대학교 2, 3학년 그리고 알고리즘 공부를 이제 막 시작하는 막막한 취업 준비생들에게서 어떤 문제를 풀어야하는지 모르겠다는 요청을 받았습니다. 몇몇 코딩테스트 대비 방법을 설명한 유명한 글에서 알고리즘 문제를 추천하지만 생각보다 취준용으로 공감할 ..

코드 한줄 안쓰고 Github 1000스타 받기(Dev Event 1000스타 후기) [내부링크]

부제 Dev Event 1000스타 후기 1000스타를 넘으면 사람을 추가하라는 숨겨진(?) 문구가 등장합니다. 19년 12월 보안 커리어를 내려놓고 공채 합격한 회사에 입사 불가 메일을 보냈습니다. 코로나로 얼어붙은 채용시장으로 인해 예상보다 긴 시간 포항에서 감자밭 보고, 바다 보며 멍때리다가 어찌어찌 스타트업에 취업하여 작년 6월 서울에 올라오게 되었습니다. 백엔드 개발자는CTO, 시니어 한 분만 계셨습니다. 시니어 한 분은 그마저 얼마 있지 않아 떠나서 많은 일이 저에게 주어졌습니다. 주변에 저와 같은 꼬꼬마 개발자도 없고 어떻게 살아야 하나 깊은 고민이 되었습니다. 정시퇴근이 어색해진 회사 근무시간. 야근 후에 돌아온 신림의 원룸은 고요한 어둠만이 저를 맞이할 뿐이었습니다. 망망대해 속에 방향을..

파이썬 코드로 보는 멀티스레드 [내부링크]

파이썬 코드로 보는 멀티스레드 부제: 현직자가 중요하다고 생각하는 기본기 Cover Photo by Luis Gonzalez on Unsplash 인턴으로 일하던 시절 첫 과제로 C#으로 윈도우 애플리케이션을 만들었습니다. 멀티스레드 구현을 잘못하여서 프로그램 내에서 여러 작업을 동시에 하였더니 프로그램이 뻗은 경험이 있습니다. 멀티스레드는 코드몽키가 되는 것이 비전과 사명이 아닌 이상 꼭 알아야할 중요한 개념입니다. 현재 운영체제를 공부하고 있으신 학생분들도 이 부분을 잘 공부하시길 바라며, 그 중요한 멀티스레드를 파이썬 코드와 함께 살펴보도록 하곘습니다. 1. 쓰레드란? OS를 공부했다면 안본 사람이 없을 명화 꼬꼬마 텔레토비였던 3학년 1학기 학부생 시절을 생각해보면 운영체제에서 인터럽트까지 꾸역꾸..

org.apache.coyote.http11.HeadersTooLargeException 에러 해결 [내부링크]

org.apache.coyote.http11.HeadersTooLargeException 에러 해결 문제 상황 org.apache.coyote.http11.HeadersTooLargeException: at org.apache.coyote.http11.Http11OutputBuffer.checkLengthBeforeWrite(Http11OutputBuffer.java:551) at org.apache.coyote.Response.action(Response.java:208) at org.apache.coyote.http11.Http11OutputBuffer.write(Http11OutputBuffer.java:476) at org.apache.coyote.Response.sendHeaders(Respon..

카카오 커리어 부스트프로그램 설명회 후기 [내부링크]

카카오 커리어 부스트프로그램 설명회 후기 시작하며 클라우드 개발자로 커리어를 전환할 수 있는 카카오 커리어 전환 프로그램 설명회를 한다기에 참가해 보았습니다. (쿠팡의 Java 개발자로 커리어를 전환할 수 있는 로캣 커리어 경력 전환 프로그램이 생각나기도 합니다.) 지원할 생각도 없고 전환 프로그램의 조건도 안맞지만 이전의 채용 세션에 참가한 목적과 마찬가지로 지원을 하지 않더라도 어떤 마음으로 인재를 찾고 비전을 공유하며 기술적인 도전을 배우기 위해서 참가하였습니다. Q&A 앞서 40분간 카카오 클라우드 팀 소개 및 클라우드 기술에 대한 이야기를 하였습니다. 채용 및 팀 선택을 돕기위한 카카오 내부 자료이기에 공개를 원치 않는다고 하셔서 블로그에 남기지 않습니다. 본 채용 프로그램에 지원하는 분들에게 ..

[우아한형제들] OO팀을 소개합니다. (우아한형제들 채용설명회) [내부링크]

우아한형제들 채용설명회 Source. 우아한형제들 4년간의 Cloud Migration Journey 시작하며 타 조직의 좋은 문화를 찾아서 속한 조직에 개선점을 찾고 적용하는 것은 조직이 경직되지 않고 긍정의 축으로 기울기 위한 기반 행동이라고 생각합니다. 3월 4일 목요일 19시부터 22시까지 Zoom으로 진행된 우아한형제들 'OO 팀을 소개합니다.' 세션을 듣고 간단하게 기록한 것을 주최자의 허락을 구하고 공개합니다. 다만 음질과 화질이 고르지 못하여 잘 들리지 않는 부분은 작성하지 못하였으며 웨비나 특성상 캡처 이미지가 고르지 못함을 양해 부탁드립니다. 함께보면 좋을 글들 (21. 02. 21) 우아한형제들 선물하기 오피스아워 (21. 02. 11) 당근마켓 프론트 개발자 채용 세션..

mongoDB 자격증 취득 방법 [내부링크]

mongoDB 자격증 취득 *강의자의 허락을 받고 MongoDB University Webinar 마크업을 남깁니다. 강의 소개 M001: MongoDB Basics MongoDB를 전혀 모르는 사람이 듣는 강의 MongoDB는 무엇이며 데이터는 어떻게 쿼리하는지 6시간 비디오 + 2.5시간 Labs, Quizzes 총 8.5시간 시간 소요 65%이상 완료하면 과정에 대한 수료증 발급 M100: MongoDB for SQL Pros 1시간 비디오 + 2.5시간 Labs, Quizzes 총 2시간 소요. RDBMS에 익숙한 분들에게 MongoDB와 매핑해서 설명. 어떻게 코드가 이루어지고 쿼리가 나가는지 간략하게 설명 M103: Basic Cluster Administration 3시간 강의 + 1시간 시..

[우아한형제들] 배민 선물하기 오피스아워 [내부링크]

[우아한형제들] 배민 선물하기 오피스아워 시작하며 서비스 회사에서 신규 서비스 승인을 거처 기획부터 출시까지 많은 허들을 넘더라도 고객 확보, 기능 고도화, 수익모델 확보까지 산넘어 산이 아닌가 생각이 듭니다. 선물하기 서비스를 공개한지 얼마 되지 않은 우아한형제들 선물하기 팀의 오피스아워에 참석하여 어떤 고민을 하는지, 어떻게 해결해가는지 이야기를 들었습니다. 본 세션은 3시간 예정으로 진행되었으나 개인 사정으로 1시간 20분 정도 참석한 기록임을 서두에 밝힙니다. 시작 카톡 선물하기에도 진출할 생각이 있는가? 계획이 있다고 말하기는 어렵다. 사업성 검토 단계이다. 배민에서도 선물하기를 많이 이용할 수 있도록 노력해야겠다. 배민 선물하기의 프론트 기술 스택은? 리액트 + 타입스크립트, 리액트 훅으로 스..

당근마켓 프론트 개발자 채용 세션 [내부링크]

c 당근마켓 프론트 개발자 채용 세션 시작하며 구직자도 아니며 프론트 개발자도 아니지만 빠르게 성장하는 조직은 어떤 개발자와 함께하고 싶은지, 어떻게 일하는지 이야기를 듣고 싶어서 본 세션에 참여하였습니다. 2월 8일(월) 저녁 7시 30분 부터 진행된 2시간 30분 분량의 세션을 간략하게 마크업으로 남깁니다. 작년 9월 당근마켓 채용 오픈세션을 참가하여 마크업을 남겼습니다. 참고해주세요! 회사 소개 영국, 미국, 캐나다 글로벌 진출함 초기 코로나 시절 마스크 현황 알림이 하루 만에 개발하여 배포 우리 동네 국회의원 후보자 보여줌 호우 피해 돕기 모금 JSConf 참가하여 스페셜 벳지 주었음 리텐션(Retention) 높다. 이용자의 다양한 피드백 받을 수 있다. 다른 앱과 비교했을 때 사용자 평균 이용..

코딩테스트 대비를 위한 백준 문제 추천 [내부링크]

코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고 후기를 들으면서 유사문제, 같은 아이디어로 풀어야 하는 백준 문제를 모아서 코딩테스트 고득점 kit 글을 작성하였습니다. 빠른 취뽀를 위하여 취업준비 기간 양질의 문제를 풀어보는 것이 중요하다고 생각합니다. Kakao, Naver, Line, NHN 등등 직접 출제하는 회사가 아닌 외주문제의 경우 백준과 유사한 문제가 많이 등장합니다. 그러나 백준의 수 많은 문제들 중에서 기업 코딩 테스트를 준비하기에 적합한 문제를 알기 쉽지 않습니다. 이를 위해서 제가 많은 도움을 받았던 백준 코테코..

2021년 주일설교 [내부링크]

바로가기 2022년 분당우리교회 설교 주일설교 12월 26일 분당우리교회 주일설교 절실한 꿈은 반드시 이루어진다 요셉이 이끌려 애굽에 내려가매 바로의 신하 친위대장 애굽 사람 보디발이 그를 그리로 데려간 이스마엘 사람의 손에서 요셉을 사니라 여호와께서 요셉과 함께 하시므로 그가 형통한 자가 되어 그의 주인 애굽 사람의 집에 있으니 그의 주인이 여호와께서 그와 함께 하심을 보며 또 여호와께서 그의 범사에 형통 하게 하심을 보았더라 요셉이 그의 주인에게 은혜를 입어 섬기매 그가 요셉을 가정 총무로 삼고 자기의 소유를 다 그의 손에 위탁하니 그가 요셉에게 자기의 집과 그의 모든 소유물을 주관하게 한 때부터 여호와께서 요셉을 위하여 그 애굽 사람의 집에 복을 내리시므로 여호와의 복이 그의 집과 밭에 있는 모든 ..

[개정판] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여) [내부링크]

시작하며 제가 전공 신입생 시절 컴퓨터 공학을 어떻게 공부해야 할지 검색을 하면 홍보성 학원 강의만 나왔습니다. 개발자가 되기 위해서 컴퓨터 공학의 기초 과목이 중요하다고 하는데 어떻게 공부해야할지 막연하게 교보문고에서, 해외 자료를 찾아가면서 공부하였습니다. 학부에서 공부 잘하는 분들은 교수님의 설명을 스펀지처럼 흡수하는 분들이기에 부족한 저로서는 막연하게 부러워하고 있었습니다. 아무도 공부자료, 공부방법에 대해서 알려주지 않아서 4학년이 올라가면서 [컴퓨터 공학] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여) 글을 작성하였고 그간 2만 명 이상의 분들이 글을 읽어주었습니다. 시간이 지나면서 없어진 자료를 제거하고 새로운 자료를 업로드하여 새롭게 글을 작성합니다. 개발자를 꿈꾸는 꼬꼬..

2020 회고 [내부링크]

Cover Image Source. pixabay free image 시작하며 검색엔진에 노출될 글은 아니겠지만 20년 많은 일이 있었기에 미래의 저를 위해서 글을 남깁니다. 막막함, 두려움, 즐거움 .. 인간의 희노애락을 경험하는 시간이었습니다. 19. 12. 03(20년 0월) 공채 합격 회사 퇴사 19년 하반기 공채로 입사한 회사에 입사 거절 메일을 보냈습니다. 보안인으로서 커리어를 내려놓고 끝이 없는 취업준비를 시작하는 순간이었습니다. 보안 학과가 없는 학교에서 보안 회사에 취업하기까지 경험한 공부방법을 정리하여 c [개정판] 어떻게 컴퓨터 보안을 공부할 것인가? (웹 보안, 리버싱을 공부하는 법) 글을 작성하였습니다. 19. 12. 30 백준 첫 문제 제출 알고리즘 바보의 알고리즘 공부 시작 어..

취업을 위한 코딩테스트 공부방법 [내부링크]

부제: 알고리즘 바보의 취준을 위한 코테 공부방법 취준생들의 가슴을 철링이게 하는 메일.. 지난 취준생 시절 포털사이트, 카드사 등등 20곳 넘게 코딩테스트에서 불합격하였습니다. 코딩테스트 공부는 취준 기간 가장 많은 시간을 할해한 부분이였습니다. 코딩테스트 합격 이후 면접을 진행하면 6곳 중 5곳은 최종 합격까지 갈 정도로 포트폴리오와 면접에 자신이 있었지만, 코딩테스트는 커다란 벽이었습니다. 알고리즘 공부방법 블로그 글을 보면서 200문제 풀어도 합격 못하는데 자괴감에 빠지고, 코딩테스트가 끝나고 취업 단톡방에서 올솔(전부다 풀음)하는 분들을 보면서 자존감 바닥을 치곤 했습니다. 무엇보다 힘들게 자기소개서까지 작성하였고 기술적으로 보여주고 싶은 것이 많았는데 2시간의 코딩테스트를 통과하지 못하여 자소..

[개정판] 어떻게 운영체제를 공부할 것인가? (컴퓨터공학 운영체제 공부방법) [내부링크]

시작하며 제가 전공 신입생 시절 컴퓨터 공학을 어떻게 공부해야할지 검색을 하면 홍보성 학원 강의만 나왔습니다. 개발자가 되기 위해서 컴퓨터 공학의 기초 과목이 중요하다고 하는데 어떻게 공부해야할지 막연하게 교보문고에서, 해외 자료를 찾아가면서 공부하였습니다. 학부에서 공부 잘하는 분들은 교수님의 설명을 스펀지처럼 흡수하는 분들이기에 부족한 저로서는 막연하게 부러워하고 있었습니다. 아무도 공부자료, 공부방법에 대해서 알려주지 않아서 4학년이 올라가면서 운영체제 공부 리뷰(어떻게 운영체제 공부를 시작할까?) 글을 작성하였고 그간 2만 명 이상의 분들이 글을 읽어주었습니다. 글을 작성한 시점으로부터 시간이 많이 지나 좋은 자료가 많이 등장하면서 자료의 업데이트 필요성을 느껴서 개정판을 작성합니다. 오늘도 막연..

2020년 하반기 11번가 신입 개발자 채용 면접 후기 [내부링크]

2020년 하반기 11번가 신입 개발자 채용 면접 후기 시작하며 Source. 11st career blog 11번가는 꾸준히 11번가 채용 페이지 및 Youtube(를 통해서 직무소개 및 채용 과정에 대해 안내를 합니다. 여기에 11번가 개발자로 합류한 사람으로서 제가 경험한 채용 과정을 더해봅니다. 본 글을 통해서 11번가에 합류하고 싶은 분들이 전형 과정에서 도움이 되었으면 합니다. 지원을 결심하며 Source. Naver D2 Youtube. 11번가 Spring Cloud 기반 MSA로의 전환 - 지난 1년간의 이야기 과거 취준을 시작할 때만 하더라도 11번가에 대해서 잘 모르기도 하였고 보안 분야 커리어를 만들고 싶어 했기에 특별히 지원할 생각을 하지 않았습니다. 그러나 11번가 MSA 전환 ..

2020년 하반기 가비아 신입 개발자 면접 후기 [내부링크]

가비아? Source. 가비아 채용 페이지 판교에서 H사 인턴 시절 지하철 광고판에 하이웍스 광고를 통해서 가비아 서비스를 알고 있었으며 클라우드 및 호스팅 서비스를 하고 있다는 것을 알고 있었습니다. 2020 오픈소스 컨트리뷰톤에서 가비아 기업 후원상을 받았습니다. 채용 공고상으로 개발 직군 신입 초봉 4300만원이며 오후 두 시에 초밥, 치킨 등 간식 제공 기숙사 제공 등 회식 두 달 0.5회 하루 근무시간 평균 8시간으로 보상 및 근무 여건이 좋은 회사로 알려졌습니다. 이미,, 팡탈했던,, 데브매치 2020 상반기 프로그래머스 데브매치에서 g클라우드 서비스 서류탈한 경험이 있습니다. 이미 탈락한 경험이 있어서 다시 지원하기에 고민되었지만 자소서 질문을 보았을 때 자신있게 대답할수 있는 질문만 있어서..

AWS Certified Cloud Practitioner 자격증 시험준비 방법 [내부링크]

AWS Certified Cloud Practitioner 자격증 시험준비 방법 11월 20일 진행된 AWS 강연을 메모하였습니다. AWS Cloud Practitioner 자격증? Source. AWS Certification - pearsonvue.com AWS Certified Cloud Practitioner는 AWS 12개 자격증 중 가장 기초 자격증입니다. 6개월 정도 기본적인 AWS를 사용한 경험이면 도전할 수 있는 깊이의 지식이 출제됩니다. 시험 정보 컴퓨터를 사용하여 진행 실기 없음 객관식 한개 혹은 복수개의 답을 선택 90분 70문항 1000점 만점 중 700점 이상시 합격 준비 방법 1. 자격증 취득 홈페이지 URL: AWS Certification 한국어 시험 안내서를 숙독하여 시험..

아마존 인턴십 설명회 [내부링크]

아마존 인턴십 설명회 20.11.20 진행된 아마존 인턴십 설명회 마크업입니다. 지원자격 대학생 및 대학원 학생신분(졸업 유예 혹은 수료)이어야 한다. 졸업했다면 인턴십 지원 불가 6개월 풀타임 근무가 가능해야함 영어 및 한국어가 유창해야함 시스템 및 커뮤니케이션은 영어로 진행 영어로 말하기보다 읽고 쓰는게 중요 TOEIC, TOEFL 점수는 지원에 필요하지 않음 채용 공고 현재 채용중인 아마존코리아 인턴 포지션을 찾기 원한다면? [1] Amazon.jobs 접속 Search Intern City: Seoul 입력 [2] https://amazonkoreastudents2020.splashthat.com/ Mailing list에 등록하면 새로운 행사, Job 안내 11월 20일 현재 모집중인 포지션 M..

프로그래머스 Dev Match 샤이닝 보너스 수령 후기 [내부링크]

프로그래머스 데브매치(Dev Match) 샤이닝 보너스 수령 후기 궁금증 진짜 주나? 원티드도 그렇고 프로그래머스도 그렇고 해당 플랫폼에서 채용이 일어나면 구직자에게 샤이닝보너스를 줍니다. 취준생 시절에는 구직 플랫폼이 돈을 준다는 사실이 신기하기도 했고 플랫폼이 돈이 어디서 생겨서 주는지도 궁금했습니다. 프로그래머스 데브매치를 통해서 입사를 하였고 한참 전에 샤이닝 보너스를 받았습니다. 이제가 그 후기를 밍기적 남기어봅니다. 입금 인증! 50만원에서 세금을 제한 456,000원이 실수령 금액입니다. 어디서 나온 금액인가? Source. 프로그래머스 데브매치 기업접수 페이지 데브매치 기업접수 페이지를 보면 샤이닝 보너스의 출처를 알 수 있습니다. 기업에 연봉 3000만원으로 구직자가 계약을 했으면 7%인..

백준 500문제 풀이 후기 [내부링크]

백준 500문제 풀이 후기 인증샷~ 백준 300문제 풀이 후기 글을 올린지 반년 사이에 생각지 못하게 많은 분이 글을 읽어주었습니다. 반년이 지나고 500문제 풀이 후기를 써 봅니다. 500문제를 달성과정에서 많은 변화가 있었습니다. 알고리즘을 공부하면서 생긴 스킬을 정리하여 용감하게 시작하는 코딩테스트 1편을 작성하였습니다. 취준을 끝내고 서버개발자로 취업을 하였습니다. 알고리즘에 투자하는 시간을 줄이고 컨퍼런스 참여, 클라우드 그리고 백엔드 공부에 시간을 많이 할당하고 있습니다. 알고리즘 온라인 스터디를 하고 있습니다. 다른 공부에 정신이 팔여서 400문제에서 500문제 되기까지 3개월 정도 시간이 걸렸습니다. 과거 300문제 풀이 후기글에 남긴 것처럼 과거의 저는 코딩테스트 공부에 대해서 회의적..

컴퓨터공학 학점 2.82에서 성적 장학금까지 [내부링크]

컴퓨터공학 학점 2.82에서 성적 장학금까지 캠퍼스 전경 at Newton hall 주의 1: 자랑 글도 아니고 공부 방법론도 아닌 지극히 개인적인 이야기입니다. 저 또한 부족함이 많아 매일 공부하는 사람일 뿐입니다. 주의 2: 글을 쓰고 업로드 할까 말까 고민을 많이 했습니다. 어느 순간에 글이 비공개로 전환되어 있을 수 있습니다. 도입 서울에 올라온지 4개월이 넘어가고 서버 개발자로 일하고 있습니다. 시험은 없지만 대학 시절보다 더 높은 강도로 공부하며 지내다 보니 저를 개발자로 일하게 해준 대학 생각이 많이 납니다. 대학시절 성적으로 자랑해본 적은 없지만 (사실 잠깐 있었는데 상당히 후회합니다..) 성적을 올려본 경험을 나누어 봅니다. 누가 읽어 주기 보다는 제가 기억에 남기고 싶어서 글로 써 ..

Github CLI 시작하기 (gh pr) [내부링크]

gh명령어로 Pull request 해보기 PR 목록 보기 # 현재 열려있는 PR 목록을 보여줍니다. ~/repo$ gh pr list # 현재 디렉토리의 github PR 창을 브라우저에 띄웁니다. ~/repo$ gh pr list --web repo, issue와 같은 명령어와 마찬가지로 —web 플래그를 사용하면 브라우저가 열리며 Github PR 페이지로 이동합니다. 다양한 PR 필터가 있습니다. # 닫혀있는 PR 목록을 보여줍니다. ~/repo$ gh pr list --status closed # bug 라벨이 붙은 PR 목록을 보여줍니다. ~/repo$ gh pr list --label "bug" # 최대 목록에 보여줄 PR 갯수를 지정합ㄴ디ㅏ. (기본 30개 항목을 보여줍니다.) ~/repo..

Github CLI 시작하기 (gh issue) [내부링크]

Github CLI 시작하기 (gh issue) 명령어를 통해서 cli에 등록된 이슈 목록 github.com/cli/cli/issues 을 볼 수 있습니다. cli를 클론한 디렉토리로 이동하여 아래 명령어를 입력합니다. ~/cli$ gh issue list 등록된 issue 목록을 볼 수 있습니다. 등록된 이슈 보기 앞서 등록된 이슈 목록을 보았으니 어떤 이슈인지 읽어보겠습니다. ~/cli$ gh issue view {issue number} issue number를 지정하면 해당 이슈를 보여줍니다. 저는 cli의 1777번 이슈를 보았습니다. 그러나 마크다운 문법이 적용된 텍스트를 텍스트 에디터로 읽기가 쉽지 않습니다. 그런 분들을 위해서 웹으로 열 수 있습니다. ~/cli$ gh issue view..

Github CLI 시작하기 (gh repo) [내부링크]

Github CLI 시작하기 (gh repo) gh repo clone git 명령어를 이용해서 클론하려고 하면 다음 명령어를 사용해서 클론을 했습니다. $ git clone https://github.com/cli/cli.git gh 명령어를 통해서 cil/cil을 클론해 보겠습니다. 다음과 같이 클론할 수 있습니다. gh repo clone OWNER/REPO cil/cil을 클론해 보겠습니다. $ gh repo clone cli/cli Cloning into 'cli'... https:// 를 통한 클론도 지원합니다. $ gh repo clone https://github.com/cli/cli gh repo view gh repo view는 README.md를 보여주는 명령어입니다. ..

Github CLI 시작하기 (1. 설치, 초기 설정) [내부링크]

Github CLI 시작하기 (1. 설치, 초기 설정) 시작하며 Gitblog 20년 9월 17일 Github CLI 1.0이 릴리즈 되었다는 소식이 올라왔습니다. 잘 알려지지 않았지만 비공식적인 Github CLI 도구로 hub가 있습니다. Github팀은 앞으로 gh를 발전해 갈것이고 hub는 유지보수를 줄일 것이라고 합니다. 참고. gh vs hub 본 글에서 Github CLI 1.0 정식 버전을 다운로드 받고 로그인 하는 방법을 살펴보겠습니다. Github CLI 설치 리눅스에서 Github CLI 설치 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 sudo apt-add-repository https:..

Go 언어의 장점과 단점 [내부링크]

Go 언어의 장점과 단점 주의 본 글은 특정 언어를 지지하거나 GO를 폄하할 의도로 작성한 글이 아닙니다. 웹 상의 의견과 제가 Go를 사용하면서 느낀점을 첨언하였습니다. GO언어를 선택할까 고민하는, 궁금한 분들에게 도움이 되기를 바랍니다. GO란? 09년 구글의 로버트 그리즈머, 홉 파이크, 켄 톰슨이 개발하였습니다. 고루틴이 있습니다. 멀티쓰레드 메커니즘이지만 자체적인 스케줄러에 의해 관리되는 경량 쓰레드이며, OS 에서 관리하는 경량 쓰레드보다 더 경량입니다. 일급객체로 정수와 실수와 같은 데이터 타입과 동급으로 취급 channel을 통해 동시성을 지원합니다. 멀티 패러다임 언어 함수형 언어라고 하기에는 함수의 순수성(Purity), 불변성(Immutability)을 보장하지 않습니다. GO 언어..

GO 언어로 JWT 인증서버 만들기 [내부링크]

GO 언어로 JWT 인증서버 만들기 시작하며 본 글은 nexmo.com blog 글을 번역한 글입니다. 하지만 다음과 같은 차이점이 있습니다. 원글 글쓴이 코드의 버그를 수정하였습니다. 원글에서 모든 구현이 하나의 main.go에 구현되었습니다. 역활에 맞추어 router, model, controller, request, response 파일로 분리하였습니다. 설명에 불필요한 수식어를 드러내며 글쓴이의 글을 윤문 하였으며, 많은 부분 초월 번역 하였습니다. 글쓴이가 사용한 Redis GUI 프로그램인 Redily는 지금 시점에서 사용할 수 없는 프로그램입니다. P3X Redis로 스크린샷을 교체하였습니다. JWT 기반 인증 서버를 구현하고 싶은 분들에게 가뭄에 단비 같은 글이 되기를 바랍니다. JWT?..

2020 당근마켓 개발자 채용 오픈 세션 후기 [내부링크]

시작하며 당근마켓은 상당히 빠르게 성장하는 서비스를 운영하며 영국을 시작으로 글로벌 무대에 도전하고 있습니다. 당근마켓에 이력서를 넣는 입장은 아니지만 빠르게 성장하는 조직은 함께 일할 사람을 채용할 때 어떤 관점으로 채용을 하는지 궁금하여서 채용 세션에 참가했습니다. 당근마켓 내부 정보, 기술적 정보는 삭제하고 Q&A 내용만 마크업하여 남깁니다. 당근마켓은 Festa 20.09.23에서 오픈 세션에 등록할 수 있습니다. Q&A ios는 뽑긴 뽑아야한다. 자바 파이썬 개발자 7개월차. 플랫폼 개발자 지원 가능한가? 신입이라도 실력있는 사람을 원한다. 실력으로 판단한다. AWS클라우드 계속 채용중. 분야별 정원 노션에 들어가서 해당 포지션이 내려갔으면 다 채워졌다고 생각하다. 팀원이 너무 많이 한번에 들어..

JWT란? [내부링크]

JWT란? 시작하며.. 사용자가 ID, PW를 입력하면 서버로 전송이 됩니다. 서버에서는 ID, PW를 DB에 조회하고 회원이면 로그인처리합니다. 그런데 문제가 있습니다. HTTP는 Stateless, 즉 사용자가 새로운 요청을 한다면 과거에 로그인한 사실을 기억하지 못합니다. 이 문제를 해결하기 위해서 예전에는 로그인 할 때 DB에 누가 로그인했는지 기록했습니다. 로그인을 하면 로그인한 사용자를 위한 토큰을 발급합니다. 이 토큰을 가지고 물건 구입, 구입 내역 조회와 같이 계정 정보가 필요한 요청을 할 때 이 토큰과 함께 요청합니다. 토큰에는 요청한 사람의 정보가 담겨있기에 서버는 DB를 조회하지 않고 누가 요청하는지 알 수 있습니다. HTTP는 다음 특징을 가지고 있습니다. Connenctionles..

2020 컨트리뷰톤 교육 후기 [내부링크]

컨트리뷰톤 교육? 회사와 같은 지역에 있는 선릉 Just Co 건물 지난 7월 13일 과학기술정보통신부가 주최하고 정보통신산업진흥원이 주관하는 6주 동안 진행되는 오픈소스 컨트리뷰톤에 합격하였습니다. 발대식에 앞서 Git 교육에 참석했습니다. 교육장소가 회사가 있는 선릉역 근처에 있는 Just Co 건물이여서 이동하는데 부담은 없었습니다. 대학 내내 포항에있다가 서울로 올라와 이러한 교육, 대회의 접근성이 높아진 점은 제게 큰 장점입니다. 참여한 오픈소스도 기술스택 뿐만 아니라 모임장소가 거주지 근처인 강남, 선릉지역이어서 신청했습니다. 강연자로 리눅스 긱 소속 송태웅님께서 진행해 주셨습니다. 교육은 Track 1, Track 2로 나누어서 진행했습니다. 오프라인 교육에 참석하지 못하는 사람들을 위해서 ..

dial tcp 127.0.0.1:3306: connect: connection refused 에러 해결 [내부링크]

오류 확인 MySQL docker와 GO docker project 파일을 연결하려고 할 때 Go docker의 빌드는 성공하였으나 실행(docker run)하려고 하면 dial tcp 127.0.0.1:3306: connect: connection refused 오류가 발생하는 것을 확인할 수 있습니다. 문제 해결 db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(localhost:3306)/testDB") if err != nil { panic(err.Error()) } 위의 코드와 같이 테스트 개발 환경에서 DB의 IP주소를 localhost로 로컬에 설치된 MySQL을 접속한다면 문제가 없을 것입니다. 그러나 Docker compose로 MySQL..

[출근길 명설교] 십자가의 Irony / 다니엘 김 [내부링크]

시몬베드로와 십자가의 Irony 성경은 단 한번도 이름을 함부로 사용한 적이 없습니다. 저는 어렸을 때 한가지 의아했습니다. 천지를 지으신 여호와 하나님께서 이름, 그까짓 단어에 굉장히 연연하세요. 아브람, 내가 정말 너를 사용하길 원한다. 이름 바꿔, 아브라함이라고 그래. 야곱아, 이름 바꿔 이스라엘이라고 해. 큰 위대한 민족으로 너를 새롭게 세워내리라. 이름은 절대로 성경에서 우연히 사용된 적이 없다는 것입니다. 여기 소개되는 인물, 그 남자도 우연이 아니에요. 예수님 대신 십자가를 진 구레네 사람 이름이 뭐죠? 시몬. 시몬 하면 제일 먼저 떠오르는 인물이 누구죠? 시몬 베드로. 내가 주님을 위해서 십자가를 지겠습니다. 다른 사람은 다 버려도 저만은 주님 안 버립니다. 장담했던 사람이에요. 3번 주님..

Gin-gonic Hot Reloading 방법 [내부링크]

Gin-gonic Hot Reloading 방법 칼퇴를 위해서 Gin이 빨리 리로딩되야한다... Gin-gonic의 문제... Gin은 Go의 웹 프레임워크 중 하나입니다. Go 프레임워크인 Beego와 다르게 Auto Reloading을 지원하지 않습니다. 파이썬 프레임워크인 Django의 경우 setting.py에서 DEBUG = True 값으로 설정되어 있으면 코드 변경이 발견되면 자동 재시작을 해주며 Node.js의 경우 nodemon이라는 강력한 패키지가 있습니다. Gin에서 자동 재시작을 하고 싶기에.. Stack Overflow, 여러 키워드로 구글링을 하여도 Docker에 올려서 Reloading을 하거나 지원하지 않은 오픈소스를 이용하라는 도움이 안되는 말 밖에 없었습니다. 오픈소스를 써..

김영길 초대 총장님 1주기를 맞이하여 [내부링크]

김영길 초대 총장님 1주기를 맞이하여 ※ 본 글에 블로그에 전역으로 설정된 에드센스 광고가 포함된 점 양해 부탁드립니다. 한동대학교를 1995년 개교부터 제가 한동대를 입학한 2013년까지 총장을 지내셨던 김영길 초대 총장님께서 19년 6월 30일 하나님의 부름심을 받으셨고 1주기를 맞이하였습니다. 시험 기간에 오석관에서 공부하고 있으면 총장님께서 간단한 간식과 함께 격려의 말 그리고 따뜻한 손으로 손을 잡아 주신게 기억납니다. 수요 채플이 시작하기 오후 2시 15분 채플 앞을 지나가다 큰 무리가 있으면 항상 총장님과 함께 사진을 찍으려는 학우들이었고 총장님은 웃으면서 함께 사진을 찍어 주셨습니다. 채플에서는 정직이 세상을 바꾼다고 하셨으며, 항상 I Love you. God Loves You 라고 말씀..

MySQL chown: changing ownership of 'var/lib/mysql': Operation not permitted 문제 해결 [내부링크]

MySQL chown: changing ownership of 'var/lib/mysql': Operation not permitted 문제 해결 docker container는 외부와 격리되어 컨테이너 내부에 데이터를 관리합니다. 따라서 컨테이너가 파기되면 데이터는 사라집니다. 웹 서비스를 docker로 올릴 때 MySQL과 같은 데이터베이스를 docker에 올리는 경우 회원들의 정보가 사라지는 아찔한 경험을 할 수 있습니다. 따라서 이를 방지하기 위해 별도의 볼륨을 설정해서 데이터를 저장하여 docker-compose.yml에 경로를 저장합니다. MySQL chown: changing ownership of 'var/lib/mysql': Operation not permitted 문제 ..

Docker를 이용하여 클라우드에 Go 배포하기 [내부링크]

Docker를 이용하여 클라우드에 Go 배포하기 본 글에서 사용할 기술스택인 Docker, Docker-compose, Gin, MySQL, Naver Cloud Platform입니다.Docker와 GO(Gin-Gonic)를 이용해서 클라우드(NCloud-MiniServer)에 배포해보겠습니다. NCloud가 아니더라도 사용하는 클라우드 인스턴스를 사용하면 됩니다. 1. NCloud(Cloud 준비) Docker를 배포하기 위한 서버가 필요합니다. 본 글에서 Mini Server를 사용하겠습니다. NCloud Mini Server는 1년간 무료로 이용할 수 있습니다. AWS Free Tier 기간이 종료된 분들이라면 이용해 볼법합니다. NCloud는 처음 가입한 분들에게 3개월 10만원 크래딧을 제공합니..

[출근길 명설교] 목회자들에게 (폴 워셔) [내부링크]

Soruce [진리의 복음] 폴워셔목사님 (강력한 설교 편집영상) 전문 영/한 스크립트입니다. 출근길 명설교 1편: 하나님을 갈망하십니까? (폴 워셔) All the knowledge in the world without the Spirit of the Living God, will avail you nothing. 살아게신 하나님의 성령이 함께 하지 않는 이 세상의 모든 지식은 아무 쓸모가 없습니다. Script The people of God around the world tody, they don't need strategies. They don't need widom of men. They don't need clever ideas. They only need to see C..

[출근길 명설교] 하나님을 갈망하십니까? (폴 워셔) [내부링크]

출근길 명설교? Source. TBS 14년 군 복무 시절 공군 헌병 특기를 배정받아 교대 근무로 인해 교회를 참석 못할 때가 있습니다. 지금의 스마트폰을 부내내에 쓸 수 있던 시절이 아니라 일병 달고 어느정도 시간이 지나야 PMP를 반입할 수 있던 시절이었습니다. 교회에 참석하지 못한 아쉬운 마음을 달래고자 휴가를 나오면 하루종일 '마커스 김남국' 목사님 설교를 전문 녹취록을 만들었습니다. 6개월간 총 3번의 9박 10일 휴가동안 23편의 설교와 신앙 메시지를 400p 분량 타이핑했습니다. 다른 이름은 없습니다. Hillsong Time Square 어떠한 장소여도 하나님의 말씀이 선포되기를 원합니다. 사회생활을 시작한 지금 출근길 위해서 다시 하나님의 말씀위에 서기를 원하기에 출근길 명..

삼성 노트북 액정 키보드 수리 후기 [내부링크]

왜 후기가 없지... 처음 액정이 이상해지고 인터넷에 삼성 노트북 수리 후기를 쳤는데 원하는 검색 결과가 많이 없어서 글 하나 남갑니다. 커피 한방울이 불러온 나비효과 현재 쓰고있는 NT950SBE XPS15 9550 유저였다가 베터리 스웰링 현상 ( DELL XPS15 9550 베터리 스웰링 교환 리뷰 도 썼습니다.)과 해커톤 준비로 과도하게 굴리다가 메인보드가 타버려서 AS를 편하게 받고 싶은 마음에 작년 8월 NT950SBE(삼성 노트북 pen 15인치)를 구입했습니다. 커피를 마시다가 트렉페드에 한 방울 스며들었는데, 포인터 이동이 정상적으로 동작하지 않아 북포항 센터에 방문했습니다. 다행히 분해해서 확인하니 이상이 없었습니다. 다만 처음 구입했을 때 alt 키가 뻑뻑하여 한번 점검해 달라고 부탁..

독신도 은사인가요? 하나님은 배우자를 예정해 놓으시나요? [내부링크]

질문 오랜 시간 배우자 기도를 하고 있지만 아직 제 짝을 만나지 못했습니다. 하나님이 제 배우자를 예정해 놓으셨을까요? 배우자와 하나님의 주도하심 선생님 때문에 우리의 인생이 바뀔 수 있는데, 학교의 선생님 만나는게 얼마나 중요한가요? 그런데 누구도 오랜 시간 꾸준히 우리 아이가 훌륭한 선생님을 만나게 해달라고 기도하지는 않습니다. 오직 혼인에 관해서 배우자 기도가 있습니다. 왜 배우자 관계만 유독 기도를 하고 하나님 뜻을 찾나요? 외로운 아담에게 하나님께서 하와를 만들어서 보냅니다. 하나님께서 인간에게 최초로 가장 심대하게 허락한 관계가 부부관계입니다. 성경에서 하나님이 혼인을 주도하기도 합니다. 아브라함이 자기 아들 이삭을 결혼시킬 때 하나님 뜻을 구하고 하나님의 섬리 아래 이삭의 아내 리브가를 택합..

주일에는 일하면 안 되는 걸까요? [내부링크]

주일에는 일하면 안 되는 걸까요? 하나님께서 안식일에는 쉬라고 하셨는데 주일에 일하면 안되나요? 삶의 현장에서 안식일 동부 이촌동에 있는 어느 식당에 갔더니 식사하고 있는 동중에 주인 부부가 나오셨어요. 부부가 주일날 영업을 할 것인가 말것인가 두고 싸우는 것입니다. 목사님은 부부중에 한 사람이라도 마음이 편하지 않으면 안됩니다. 해서 한 사람이 마음이 편하면 괜찮지만, 두 분 중에 한 분이 영업해서 불편한 마음이 있으면 안 하는게 좋습니다. 라고 답하였습니다. 불편한 생각을 누가 줄까요? 그러나 제가 아는 분은 주일날 영업을 합니다. 그날은 수입 전체를 종업원들이 나누어 갖는다고 합니다. 안식일의 참된 목적 하나님이 주일의 안식으로 지키라고 한 이유는 무엇인가요? 나 중심으로 살아가는 삶의 독에서부터 ..

Go 언어로 네트워크 프로그래밍하기 [내부링크]

Go 언어로 네트워크 프로그래밍하기 최흥배(컴투스)님께서 NDC에서 18년 7월 발표하신 Go 언어로 네트워크 프로그래밍하기 내용을 정리한 것입니다. 결론부터 이야기한다면? GO 언어로 고성능 네트워크 프로그래밍을 쉽게 할 수 있다. GO는 C언어가 진화한 것으로 C++과 다르다. 그래서 OOP 언어를 주로 하신 분이 GO를 처음 다루면 설계할 때 무넺가 된다. 고루틴은 stateless에서 아주 좋지만 statefull 에서는 한계가 있다. Source. 18 NDC 발표자료 대규모 온라인 게임할 때 분산 서버를 만들 때 Front Server(클라이언트와 서버간의 패킷 전달)은 stateless에 가깝고, 컨텐츠 로직이 없으므로 Go언어를 사용하면 좋다. GO가 무엇인가? 구글이 만든 언어 2009년..

나의 20대 책 1000권 독서 프로젝트 이야기 [내부링크]

인증? 대학 도서관 710권 대출 이력 [이미지 삭제] 교내 희망도서 신청 학교 도서관에서 제가 신청한 희망도서를 대부분 구매해주어서 항상 고맙게 생각하고 있습니다. 혼란한 삶과 독서 대학 1학년 시절 참 혼란했습니다. 개교 20년 만에 처음으로 총장님이 바뀌는 일부터 다양한 크고 작은 교내 사건과 논란들이 많았습니다. 지금의 에**** 커뮤니티와 다르게 지금은 사라 저버린 교내 전용 인트라넷이 있었습니다. 거기서 오가는 댓글은 선배님들이 현 상황을 깊게 분석한 글이었습니다. 자기의 주장을 견고하게 만들기 위해 적절한 책 인용은 책을 별로 읽어본 적 없는 저에게 책을 읽고 싶은 동기를 부여했습니다. 2013년 베스트셀러 이 당시 책 고르는데 특별한 기준은 없었고 베스트셀러를 주로 봤습니다. 남들이 많이 ..

[Node.js] 에러처리 (Page Not Found) [내부링크]

[Node.js] 에러처리 (Page Not Found) Source. freepik.com 기본 코드 npm init Node.js 애플리케이션을 초기화하고 package.json 파일을 생성합니다. Root | node_modules controllers | errorControllers.js { let errorCode = httpStatus.NOT_FOUND; res.status(errorCode); res.send(`${errorCode} | The page does not exist! `); } exports.respondInternalError = (errors, req, res, next) => { let errorCode = httpStatus.INTER..

수업 대시보드 제작 후기 (부제: 컴공이 코로나 19를 대응하는 자세) [내부링크]

소개 3학기 연속 TA 졸업과제 시절 방학 거주비를 벌기 위해서 18년 12월 비전공자를 위한 인공지능 강의를 교재 개발을 하였으며 그리고 3학기 연속 TA를 맡아서 강의를 운영하고 있습니다. 정규학기가 끝나지 않았지만 온라인 강의는 끝나고 프로젝트 기간이며 대시보드의 큰 수정은 없을것 같기에 대시보드 운영 회고록을 남깁니다. 많아도 너무 많다... 단 하루만에 공지와 질문이 뒤셖여... Piazza라는 낯선 플랫폼에서 { 질문, 공지, 과제 제출 }이 이루어짐 + 처음 수강 시 환경 설정의 어려움 + 수업 영상 및 자료 링크 업로드로 인해 하루에도 질문과 공지가 섞여서 수십 개가 올라갔습니다. 수강생들이 공지를 숙지하지 않고 과제를 제출하였으며, 1주차 설문조사에서 Piazza가 복잡하다고 하다는 ..

node.js Could not connect to any servers in your MongoDB Atlas cluster. 에러 해결법 [내부링크]

오류 메세지 Nodejs로 mongo db를 연결하다가 처음 만나는 에러를 보았습니다. message: 'Could not connect to any servers in your MongoDB Atlas cluster. Make sure your current IP address is on your Atlas cluster\'s IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/.', 해결 방법 오류메시지대로 white list 작업을 해야합니다. ADD IP ADDRESS 를 클릭합니다. ADD CURRENT IP ADDRESS 클릭, Whitelist Entry에 입력되는 IP 주소를 확인하고 Confirm을 누릅니다. Pending에서..

힐링페이퍼 CTO가 알려주는 스타트업 팀빌딩 [내부링크]

한동대학교 전산전자공학부 05학번 선배님이시자 강남언니 서비스를 운영하는 힐링페이퍼 CTO이신 김윤혁님께서 5/16 토요일 AM 11:00 ~ 12:40 Zoom으로 스타트업 팀빌딩 주제로 강의를 해주셨습니다. 한동대에서 뜻이 맞는걸 만들었을 때 쾌감이 컸다. 동아리, 글로벌라이프 프로젝트 등등 하면서 이런걸 하고싶다. 처음에는 CTO에서 CPO 어떻게 사용자에게 가치를 줄 것인지 고민하는 자리. 강남언니에서 5번째 맴버, 1호 개발자 현재 4년째 재직중 스타트업의 시작: 창업자와 미션 좋은 스타트업으로 만들어가기 위해서 3가지 필요 대표: 방향을 이끌 선장 미션: 위대한 문제의식 비즈니스모델: 회사는 결국 돈을 버는 것 힐링페이퍼는 느끼기에 세 가지 만족해서 갔다. 대표(창업자)의 목표와 가치관을 봐야..

애드센스 주소를 확인하지 않아 지급이 보류 중입니다. 해결 [내부링크]

어느날 ... 어느날 애드센스에 들어가 보니 주소를 확인하지 않아 지급이 보류 중입니다.라고 빨간 창이 나왔습니다. 10$ 이상 광고 수익이 발생하면 애드센스에서 핀 번호를 등록된 주소로 우편을 발송합니다. 이를 입력하면 됩니다. 할 일 목록에 2020년 3월 26일에 우편으로 PIN 번호를 보냈다고 합니다. 오래 기다렸는데... 코로나로 인하여 배송이 늦어진다는 알림을 애드센스 대시보드에서 확인했습니다. 7주 정도 지난 5월 첫째 주에 우편이 도착했습니다. 싱가포르에서 날아와서 멀미하는지.. 꼬낏꼬깃한 종이 한 장이었습니다. 조심스럽게 열면 핀 번호 6자리가 있습니다. 종이에 핀 번호를 입력하는 방법이 쓰여있는데 그래도 하면 안 되고.. 간단히 애드센스 매인 페이지에서 6자리를 입력하면 됩니다.

Line Developers Meetup#5 LINE 개발자, 그리고 개발 문화 정리 [내부링크]

LINE 개발자, 그리고 개발 문화라는 주제로 LINE Tech Evangelist Minwoo Park님이 진행하셨습니다. Zoom 웨비나로 진행되었으며 약 100명 이상 시청하였습니다. 라인 서비스 라인에 개발자 1000명이 있으며 많은 일을 하고 어떤 일을 하는지 소개하는 자리 라인은 한국보다는 해외에서 많은 서비스를 하고 있다. 핀테크, 블록체인(LINK), AI(Clova), 라인 게임, 라인 뮤직(일본에서는 2위) , 라인 자체 광고 플랫폼(Display AD, Official Account), 라인페이, 라인뱅크(일본, 대만, 태국 등등), 라인 보험 등등... 라인파이넨셜을 집중하고 있다. 한국, 일본에 별도 법인으로 독립되어 있다. 라인 파이넨셜은 판교역 근처에 별도의 오피스를 가지고 별..

컴퓨터 공학생의 책상 [내부링크]

커버 이미지는 판교에서 인턴할 당시 살았던 이매동 사진입니다. 대입 수험생 시절 여러 커뮤니티에 자기 책상을 인증하는 글을 많이 올라왔는데 그게 생각이나서 글을 남깁니다. 별로 특별할 것 없는 컴퓨터 공학생의 책상(?) 입니다.. 유목민 시절 기숙사 세탁실에서 공부.. 기숙사 세탁실에서 암기과목을 공부하는 편이었습니다. 집중도 잘되고, 세탁기 돌아가는 백색소음이 마음에 들었습니다. 여기서 외우면 시험장에 선명하게 생각이나서 정말 좋았습니다. 제가 하도 세탁실에서 공부하니 다른 분들도 여기서 공부하는 분들이 생겨서 약간의 자리 경쟁(?)이 생겼습니다. 새벽 6시에 방돌이가 자고 있는 시간 피해를 안주려고 세탁실에서 공부했습니다. 가을의 경우 새벽에도 유리 창 사이로 들어오는 바람이 상당하기에 패딩을 입고 ..

대학원생 세금환급 신청하기 지방 소득세 포함 [내부링크]

홈텍스로 이동 및 로그인 세금 환급을 신청하기 위해서 [홈텍스 링크] 를 클릭해서 이동합니다. 홈텍스 페이지에서 공인인증서 로그인을 클릭합니다. 공인인증서로 로그인하지 않으면 소득 정보를 불러올 수 없기에 신청이 불가능합니다. 처음 인터넷뱅킹 공인인증센터에서 공인인증서를 발급받고 로그인을 하면 홈텍스에 등록된 인증서가 아니라고 합니다. 확인 버튼을 누르고 주민등록번호를 입력하면 간단하게 등록할 수 있습니다. 로그인하면 메인 페이지로 넘어갑니다. 여기서 종합소득세 신고를 클릭합니다. 일반신고서 -> 정기신고 작성 버튼을 클릭합니다. Step 1. 기본사항 납세자 번호 우측의 조회 버튼을 클릭합니다. 신규 입력하겠냐고 묻습니다. 새롭게 작성하기에 확인 버튼을 누릅니다. 근로소득, 기타소득을 선택합니다. 저장..

가상 스타트업으로 알아보는 MSA이야기 [내부링크]

가상의 스타트업을 가정합시다 10년 전 새롭게 amazon이라는 스타트업이 시작한다고 가정해 봅시다. 오픈마켓으로 개발자 3명이 서비스를 개발할 것입니다. 개발자가 로컬에서 톰캣(WAS)을 이용해서 실행할 것입니다. 애플리케이션은 상태가 중요하니 DB에 amazon 비즈니스의 모든 데이터가 저장될 것입니다. (상품정보, 주문정보 등등..) 개발자가 3명이 되었습니다. 개발할 때 각자가 로컬에서 톰캣으로 실행합니다. 여러 명의 개발자인 경우 형상관리를 위해서 SVN, Github과 같은 SCM(Source Code Management)로 관리합니다. 개발DB로 로컬에 공유하여 저장할 것입니다. 상용 오픈을 할 때 배포 스크립트 혹은 톰캣매니저를 통해서 배포할 것입니다. 톰캣매니저는 메모리 문제가 있어서 클..

도커 이미지 기본 명렁어 [내부링크]

도커 이미지 먼저 Docker의 공식 레파지토리인 서비스인 도커 허브부터 살펴보겠습니다. 도커 허브는 도커 레지스트리의 SaaS 버전이라고 생각하면 됩니다. 도커 이미지들을 등록하고 공유할 수 있습니다. 도커허브는 공개, 비공개 저장소 서비스를 제공하는데 비공개 저장소는 유료입니다. 공개된 Docker 이미지는 가입하지 않아도 이미지를 검색하고 상세정보를 확인할 수 있으며 다운로드 할 수 있습니다. 도커 이미지 기본 명렁어 docker search docker search [옵션] 주요 옵션 --linit: 최개 검색 결과 검수를 지정(기본 25건) --filter=stars=x: x개 이상 별을 받은 이미지만 출력 docker search ubuntu ubuntu로 검색한 도커 이미지의 검색 결과를 별..

도커 설치(Windows 10) 및 기본 명령어 [내부링크]

윈도우 10 도커 설치 Docker 다운로드 링크 위의 링크를 클릭해서 Docker를 다운로드 합니다. 이렇게 설치가 진행되며 설치 이후에는 컴퓨터를 재부팅 해야합니다. Docker를 윈도우10에서 사용하기 위해서 Windows 10 Pro이며 가상화가 [사용] 상태여야합니다. 기본적으로 가상화는 사용 상태로 되어있지만 경우에 따라서 바이오스 설정을 해야 합니다. 도커 기본 명령어 도커 버전 확인 docker version 설치된 도커 기본적인 버전 정보를 확인할 수 있습니다. Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11..

가상화와 컨테이너 [내부링크]

0. 시작 SK C&C의 이정민, 차일환 수석님이 강의하시고 KAIST에서 운영한 강좌인 MOOC 오픈소스를 활용한 DevOps 환경 이해 강좌를 바탕으로 작성하였습니다. 온 프레미스 vs 오프 프레미스 온 프레미스 (On-Premises) 기존에는 온 프레미스(On-Premises) 방식으로 일반적이고 전통적인 시스템 운영 방식입니다. 자체적으로 데이터 센터를 보유, 직접 구축/운영 수행을 하였습니다. 온 프레미스의 단점으로 (1) 물리적 하드웨어를 구입하고 구축해야 하기 때문에 초기 투자비용이 높으며 운영 및 유지가 어렵습니다. (2) 고정된 방식으로 컴퓨팅 자원을 활용하기 때문에 운영 탄력성이 떨어져서 자원 활용에 비효율적인 측면이 있습니다. 오프 프레미스 (Off-Premises) 클라우드 컴퓨팅..

파이썬 행렬연산 [내부링크]

0. Lec 최성철 교수님께서 진행하시는 아래 강의의 과제에 대한 답입니다. 밑바닥 부터 시작하는 머신러닝 입문 [부스트코스] 머신러닝을 위한 Python 1. 벡터 크기 검사 (vector size check) vector 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함 def vector_size_check(*vector_variables): return len(set([len(vector)for vector in vector_variables])) == 1 # Test Code print(vector_size_check([1,2,3], [2,3,4], [5,6,7])) # Expected value: True print(vecto..

[프로그래머스] 뉴스 클러스터링 / 2018 카카오 블라인드 1차 / 파이썬 [내부링크]

채용이란 개인과 기업 모두 꿈의 시작이겠죠? Source. 카카오가 신입 개발자 크루를 맞이하는 법 뉴스 클러스터링 문제 확인 프로그래머스 URL. 뉴스 클러스터링 / 2018 카카오 블라인드 1차 정답률: 41.84% ️ 문제 해결방법 백준 450문제를 풀었지만... mset은 이 문제를 풀면서 처음 사용해봤습니다. 물론 꼭 mset을 사용하지 않아도 주의해서 구현하면 됩니다. 자카드 유사도는 문제에서 잘 설명되어 있습니다. 그대로 구현을 하면 됩니다. if len(s1_l) == 0 and len(s2_l) == 0: 를 통해서 A와 B집합이 공집합일 때 J(A, B) = 1을 처리합니다. 단순히 합집합 원소의 갯수를 교집합 원소의 갯수로 나누면 즉, len(list((mset_s1 & ms..

[프로그래머스] 캐시 / 2018 카카오 블라인드 1차 / 파이썬 [내부링크]

Source. 카카오가 신입 개발자 크루를 맞이하는 법 캐시 문제 확인 프로그래머스 URL. 캐시 / 2018 카카오 블라인드 1차 정답률: 45.26% ️ 문제 해결방법 첫 블라인드 공채이기에 속칭 단순 빡구현문제보다 어렵지 않은 문제에 전공 지식을 융합하는 문제가 1번도 그렇고 이번 문제도 그렇고 등장하지 않았나 싶습니다. list를 사용해도 되지만 이렇게 반복적인 pop, append가 등장하는 경우 deque를 사용해야 속도에서 이득을 얻습니다. In python docs I can see that deque is a special collection highly optimized for poping/adding items from left or right sides. Source. St..

[프로그래머스] 다트 게임 / 2018 카카오 블라인드 1차 / 파이썬 [내부링크]

Kakao: vivi의 카카오 겨울 개발자 인턴십 성장기를 읽어보세요~ 다트게임 문제 확인 프로그래머스 URL. 다트 게임 / 2018 카카오 블라인드 1차 정답률: 73.47% ️ 문제 해결방법 카카오 코테 == 문자열 처리 를 알리는 문제가 아닌가 싶습니다. 정확한 문자열 처리와 놓친 조건이 없는지 주의깊게 봐야합니다. 본 문제에서 0~10 까지의 숫자가 들어옵니다. 단어를 한 글자씩 읽어서 숫자인지 처리한다면 10이 들어왔을 때 문제가 발생합니다. 카카오 코테에서 앞 번호 + 문제의 길이가 길다 => 쉬운문제, 나는 이 문제를 무조건 풀 수 있다. 라고 생각하시면 됩니다. 조건 요약 1번: 숫자 + [S, D, T] => 숫자^1, 숫자 ^2, 숫자^3 2번: *의 경우 바로 이전 점수와 ..

[프로그래머스] 비밀지도 / 2018 카카오 블라인드 1차 / 파이썬 [내부링크]

Kakao: 서버 개발 인턴 robin의 성장기를 읽어보세요~ Source. 카카오가 신입 개발자 크루를 맞이하는 법 비밀지도 문제 확인 프로그래머스 URL. 비밀지도 / 2018 카카오 블라인드 1차 정답률: 81.78% ️ 문제 해결방법 문제의 그림에서 자연수를 2진수로 변환하는 부분이 나옵니다. 이를 통해서 이진수로 무엇을 해야한다고 생각할 수 있습니다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 라는 표현을 통해서 OR 비트 연산을 해야함을 알 수 있습니다. [2:]를 하는 이유는 정수를 bin으로 작성하면 0b11111이 나옵니다. 여기서 0b는 이진수를 표현하기 위한 문자이므로 이를 제거하고 11111만 사용하기 위함입니다. string.replace("A", "B").rep..

[프로그래머스] 점프와 순간이동 / 2018 섬머 윈터코딩 / 파이썬 [내부링크]

2018 섬머 윈터코딩 풀이 모음 소수 만들기 스킬 트리 영어 끝말잇기 점프와 순간이동 점프와 순간이동 문제 확인 점프와 순간이동 - 2018 summer winter coding ️ 문제 해결방법 BFS라고 생각했으나,, 그리디로 뚝딱뚝딱 풀 수 있습니다. 기본 아이디어는 순간이동을 사용하면 베터리가 소모되지 않으므로 최대한 순간이동을 사용하면 됩니다. 순간이동은 2배씩 이동하므로 최종 도달 위치가 짝수일 때 사용하면 됩니다. 최종 도달 위치가 홀수라면 한칸 베터리를 사용해서 이동하면 됩니다. 최종 풀이 def solution(n): # n : 종료지점 ans = 0 while True: if n in [1, 2]: ans += 1 return ans if n % 2 == 1: n -= 1 a..

[프로그래머스] 영어 끝말잇기 / 2018 섬머 윈터코딩 / 파이썬 [내부링크]

2018 섬머 윈터코딩 풀이 모음 소수 만들기 스킬 트리 영어 끝말잇기 점프와 순간이동 영어 끝말잇기 문제 확인 영어 끝말잇기- 2018 summer winter coding ️ 문제 해결방법 이전에 끝난 단어의 마지막 알파벳이 다음 단어의 처음 알파벳과 같은지, 이전에 나왔던 단어는 아닌지 검사하는 조건을 추가하면 해결할 수 있습니다. 끝말잇기가 성공적으로 마친 경우 [0, 0]을 리턴한다는 조건을 잊으면 안됩니다! 최종 풀이 def solution(n, words): part = 1 seq = -1 prev_word = words[0][-1] flag = False for i in range(1, len(words)): if i % n == 0: part += 1 if prev_word !=..

[프로그래머스] 스킬 트리 / 2018 섬머 윈터코딩 / 파이썬 [내부링크]

이 문제를 풀지 못하면 안된데요! Source [온라인 스터디] 프로그래머스가 직접! 이끌어주는 코딩테스트 대비반(Python) 1기 2018 섬머 윈터코딩 풀이 모음 소수 만들기 스킬 트리 영어 끝말잇기 점프와 순간이동 스킬 트리 문제 확인 스킬 트리 - 2018 summer winter coding ️ 문제 해결방법 관심있는 부분은 skill_trees에 있는 스킬들이(이하 skill_tree) skill의 진행순서와 맞는지 확인하는 것입니다. skill_tree가 skill에 있으면 tmp 배열에 넣습니다. skill 순서와 tmp 배열에 저장된 순서가 다르다면 스킬트리를 따르지 않는 것입니다. skill 순서와 tmp 배열에 저장된 순서가 같다면 스킬트리를 따릅니다. 최종 풀이 def s..

[프로그래머스] 소수 만들기 / 2018 섬머 윈터코딩 / 파이썬 [내부링크]

2018 섬머 윈터코딩은 프로그래머스에서 진행한 스타트업 인턴 프로그램 코딩테스트입니다. 이렇게 쉽게 나올날이 또 올까 싶습니다.. 2018 섬머 윈터코딩 풀이 모음 소수 만들기 스킬 트리 영어 끝말잇기 점프와 순간이동 점프와 순간이동 문제 확인 점프와 순간이동 - 2018 summer winter coding ️ 문제 해결방법 3개의 수를 더했을 때 소수인지를 판별하는 문제입니다. [1, 2, 3, 4]의 배열에서 (1, 2, 3)을 선택한 경우의 수와 (3, 2, 1)을 선택한 경우의 수는 같은 경우의 수 입니다. 왜냐하면 수의 합이 소수인지만 판결할 것이기 때문입니다. (0, 1, 2, 3) ~ (3, 4, 5, 6)에서 중복을 허용하지 않는 조합의 경우의 수를 출력은 for문을 이용하면 다음..

2018 카카오 블라인드 필기시험 정답 및 해설 [내부링크]

2018 카카오 블라인드 필기시험 정답 및 해설 지필평가.. 지필 평가는 카카오를 포함하여 NHN, (매일경제. NHN엔터 "코딩 잘 못해도 기초 탄탄하면 채용"), SSG.COM S/W Basic & L/M Test 그리고 은행권 등등 흔한 단계 중 하나입니다. 방대한 CS 지식을 다시 공부하는 것은 여간 어려운 일이 아닙니다. 공개 문제 중 하나인 카카오 2018 블라인드 문제 및 해설을 첨부하였습니다. 문제 원본에서 전체 문제를 확인할 수 있습니다. 1~10번 안내 Q1에서 Q10 까지는 컴퓨팅 및 컴퓨터 과학, 인터넷 등의 기본적인 개념에 대한 영어 위키백과의 설명이다. 각 빈칸을 채워 넣으시오. (문항당 정답은 한 개이며, 단복 수형의 구분 무관 및 영문이 아닌 한국어로 번역된 명칭을 적어도 무..

[프로그래머스] 징검다리 건너기 - 2019 카카오 겨울 인턴 코딩테스트 / 파이썬 [내부링크]

Kakao: 이 문제만 풀면 면접을 볼 수 있다네 튜플 문제 확인 징검다리 건너기 - 2019 카카오 겨울 인턴 코딩테스트 문제 링크 입력으로 주어진 배열에는 강가에 있는 디딤돌의 순서대로 숫자가 있습니다. 무수히 많은 니니즈 친구들이 한 명씩 디딤돌을 건널 것이며 무조건 가장 가까운 디딤돌을 밟아야합니다. 디딤돌을 밟을 때마다 해당 디딤돌의 숫자는 1씩 감소합니다. 입력으로 주어진 k값을 초과하여 디딤돌을 뛰어넘을 수 없습니다. 이 때 니니즈의 친구들이 몇명 건널 수 있을까요? c 문제 분석 입력으로 주어진 stones 배열의 크기는 1 이상 200,000 이하입니다. 문제에 주어진 시나리오대로 니니즈 친구들이 한 명 지나갈 때마다 탐색을 시도하면 O(n^2)의 시간복잡도가 나옵니다. 이럴 경우 1..

파이썬 취약점 Encapsulation [내부링크]

Java와 같은 다른 프로그래밍 언어는 private 변수를 만들 수 있습니다. 하지만, 파이썬은 그렇지 않습니다. 일부는 CPython을 위해 C에서 private 타입을 구현했지만 자주 사용되지는 않습니다. 파이썬으로 캡슐화하기 위해서 속성을 선언할 때 두 개의 밑줄 (_)을 추가하면 됩니다. 그러나 파이썬은 캡슐화를 하더라도 Exploitation이 가능합니다. class Character: name = "John" age = 20 weight = "40kg" __real_name = "Kim" __real_age = 30 __real_weight = "60kg" Character 클래스를 만들었습니다. 이 클래스의 attributes로 이름, 나이, 몸무게가 있고 진짜 이름, 진짜 나이 그리고 진..

[프로그래머스] 불량사용자 - 2019 카카오 겨울 인턴 코딩테스트 / 파이썬 [내부링크]

Kakao: 자네 키보드로 삽질해봤나? 주의. 읽기전에 이 문제의 풀이를 검색해 보니 정규표현식, DFS, 비트마스크로 푼 풀이들을 확인했습니다. 시험장에서 정규표현식을 사용하기에는 잘못 생각하면 예외가 발생하기 쉽기에 익숙하지 않은 이상 지향하는 편입니다. 또한, 재귀적 풀이도 좋아하는 편은 아닙니다. 저는 본 문제를 정규표현식과 재귀를 사용하지 않고 풀었습니다. 정해와 거리가 있을 수 있습니다. 불량사용자 문제 확인 프로그래머스 2019 카카오 겨울 인턴 코딩테스트 불량사용자 문제 링크 user_id에 이벤트 응모자 아이디가 주어집니다. banned_id에 일부 문자가 *로 가리어진 제재 아이디 목록을 줍니다. 당첨에서 제외되어야 할 제재 아이디 목록의 경우의 수를 구하는 문제입니다...

[프로그래머스] 튜플 - 2019 카카오 겨울 인턴십 코딩테스트 / Python [내부링크]

Kakao: 자네 인턴하고 싶지 않나?.. 튜플 문제 확인 문제 링크 문제를 대충보면 이해하기 힘들 수 있습니다. 문제의 입력으로 집합기호 안에 자연수가 주어지며 이를 바탕으로 튜플을 리턴하는 것입니다. 입력값 관찰 s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" {2} {2, 1} {2, 1, 3} {2, 1, 3, 4} 배열 길이를 기준으로 오름차순 정렬을 합니다. 길이가 1인 집합에 2가 있습니다. --> 정답 튜플에 2가 들어갑니다. (현재 정답 튜플 값 (2)) 다음 집합에는 2와 1이 있습니다. --> 정답 튜플에 2가 있으므로 1이 2 다음에 옵니다. (현재 정답 튜플 값 (2, 1)) 다음 집합에는 2와 1 그리고 3이 있습니다. --> 정답 튜플에 2, 1이 있으므..

[프로그래머스] 크레인 인형뽑기 게임 - 2019 카카오 겨울 인턴십 코딩테스트 / 파이썬 [내부링크]

카카오를 들어가고 싶은자에게 굳건히 버티고 있는 수문장 코딩테스트.. c️크레인 인형뽑기 게임 문제 확인 문제 링크: [프로그래머스] 크레인 인형뽑기 게임 board 배열에 귀여운 카카오 인형이 담겨 있습니다. 크레인을 이용해서 바구니에 담을 수 있습니다. 연속해서 바구니에 같은 인형 두 개가 쌓이면 없어집니다. moves에 크레인이 어떤 격자의 인형을 선택하는지 정보가 담겨 있습니다. moves로 크레인을 동작할 때 몇 개의 인형이 제거되는지를 구하는 문제입니다. board는 5x5 ~ 30x30의 크기입니다. 따라서 성능은 생각하지 않아도 되는 크기입니다. Kakao Tech Blog. 2019 카카오 개발자 겨울 인턴십 코딩 테스트 문제 해설에 의하면 쉬운문제를 앞에, 어려운 문제를 뒤에 배치하였다..

프로그래머스 SQL고득점kit GROUP BY 해답 [내부링크]

1. 고양이와 개는 몇 마리 있을까 문제 링크: 고양이와 개는 몇 마리 있을까 SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE 2. 동명 동물 수 찾기 문제 링크: 동명 동물 수 찾기 SELECT NAME, COUNT(*) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT >= 2 3. 입양 시각 구하기(1) 문제 링크: 입양 시각 구하기(1) SELECT SUBSTRING(DATETIME, 12, 2) AS HOUR, COUNT(DATETIME) FROM ANIMAL_OUTS GROUP BY HOUR HAVING HOUR BETWEEN 9 AND 19..

프로그래머스 SQL고득점kit JOIN 해답 [내부링크]

0. 공략법 문제로 배우는 SQL - JOIN 글을 참고해주세요. 코딩테스트에 SQL이 나온다고 하면 JOIN이 나올 확률이 높습니다. 테이블 2개가 나왔다 싶으면 문제를 읽으면서 두 테이블 사이 공통된 column이 무엇인지 파악합니다. 부족한 데이터라는 키워드가 나오면 Left(Right) Join을 사용할 마음을 갖어야 합니다. SUM, COUNT 내장함수, DISTINCT, ORDER BY, HAVING과 같이 등장합니다. 프로그래머스 JOIN문제는 최근 나오는 SQL 최고 난이도를 커버하기에는 2% 부족합니단. 본 문제를 다 풀고 Hacker Rank문제를 추가적으로 풀기를 바랍니다. 1. 없어진 기록 찾기 문제 링크: 없어진 기록 찾기 SELECT ANIMAL_OUTS.ANIMAL_ID, ..

프로그래머스 SQL고득점kit IS NULL 해답 [내부링크]

1. 이름이 없는 동물의 아이디 문제 링크: 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 2. 이름이 있는 동물의 아이디 문제 링크: 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL 3. NULL 처리하기 문제 링크: NULL 처리하기 SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') , SEX_UPON_INTAKE FROM ANIMAL_INS

프로그래머스 SQL고득점kit SUM, MAX, MIN 해답 [내부링크]

1. 최댓값 구하기 문제 링크: 최댓값 구하기 SELECT DISTINCT ANIMAL_TYPE FROM ANIMAL_INS 2. 최솟값 구하기 문제 링크: 최솟값 구하기 SELECT MIN(DATETIME) FROM ANIMAL_INS 3. 동물 수 구하기 문제 링크: 동물 수 구하기 SELECT COUNT(*) FROM ANIMAL_INS 4. 중복 제거하기 문제 링크: 중복 제거하기 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE ANIMAL_INS.NAME IS NOT NULL

프로그래머스 SQL고득점kit 검색결과 "SELECT" 해답 [내부링크]

1. 모든 레코드 조회하기 문제 링크: 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS 2. 역순 정렬하기 문제 링크: 역순 정렬하기 SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_INS.ANIMAL_ID DESC 3. 아픈 동물 찾기 문제 링크: 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION Like 'Sick' 4. 어린 동물 찾기 문제 링크: 어린 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION NOT LIKE "Aged" 5...

문제로 배우는 SQL - JOIN [내부링크]

1. JOIN이란? JOIN의 기본아이디어 JOIN 연산은 다른 테이블을 가지고 와서 열을 늘리는 집합 연산입니다. JOIN 연산은 원하는 데이터가 하나의 테이블이 아닌 복수의 테이블에 분산되어 있는 데이터를 선택할 수 있게 해줍니다. 2. JOIN의 종류 (INNER) JOIN: 두 테이블에 일치하는 값이 있는 레코드를 반환합니다. LEFT (OUTER) JOIN: 왼쪽 테이블에서 모든 레코드를 반환하고 오른쪽 테이블에서 일치하는 레코드를 반환합니다. RIGHT (OUTER) JOIN: 오른쪽 테이블에서 모든 레코드를 반환하고 왼쪽 테이블에서 일치하는 레코드를 반환합니다. FULL (OUTER) JOIN: 왼쪽 또는 오른쪽 테이블에 일치 항목이 있을 때 모든 레코드를 반환합니다. 3. 내부결합(INNE..

한동대학교 HW1 Online 강의 / Sample [내부링크]

- 샘플 강의입니다. - 테스트를 위해서 잠시 업로드합니다. * 한동대학교는 95년 개교 이래 정직과 성실의 인성교육을 바탕으로 세계를 변화시키는 하나님 나라의 인재를 교육하고 있습니다.

거침없는 코딩테스트 DFS BFS 문제 추천 [내부링크]

Last Updated: 20. 04. 05. c: Solved.ac 플래티넘 · c: Solved.ac 골드 · c Solved.ac 실버 · c Solved.ac 브론즈 시작하며. 거침없는 시리즈 코딩테스트를 빠르게 준비하는 방법은 하나의 주제에 대해서 관련 문제를 쭉 풀어보는 것입니다. 거침없는 시리즈에서 문제들을 단계별로 풀면서 실전 난이도까지 실력을 쭉 끌어올려보겠습니다. DFS, BFS에 대해서 알고 있다는 전제하에 문제풀이가 병행돼야 합니다. DFS, BFS에 대해서 잘 모른다면 거침없이 문제를 풀 것이 아니라 제 글, DFS BFS란? 백준 문제 추천을 보고 문제를 풀기 바랍니다. 백준1260번. DFS와 BFS 문제 링크: https://www.acmicpc.net/problem/1260..

코딩테스트 고득점 kit [내부링크]

20.04.04 20.04.21 Last Updated: 20. 04. 25. c: Solved.ac 골드 · c Solved.ac 실버 · c Solved.ac 브론즈 프로그래머스에 고득점 kit가 있습니다. 취준생 사이에서 가성비 좋은 연습문제로 불립니다. 좋은 문제들이지만 문제의 갯수가 적은 것이 아쉬워 새로운 고득점 kit를 만들어 보았습니다. 기업 코딩테스트를 보신 분이라면 공감할 만한 난이도와 최빈도 출제 알고리즘 문제를 선정하였습니다. 기업 코딩테스트를 보기 전 꼭 풀어봐야할 우수 문항이며 시간이 허락한다면 지속적으로 추가하겠습니다. 백준 문제의 난이도는 solved.ac가 기준입니다. 구현 코드포스. 1295 백준 13397 구간 나누기 2 (c 4티어) 자료구조 백준 9012 괄호 (c ..

c [개정판] 어떻게 컴퓨터 보안을 공부할 것인가? (웹 보안, 리버싱을 공부하는 법) [내부링크]

본 글은 18년 [컴퓨터 공학]보안은 어떻게 공부할 것인가?(웹 보안, 해킹, 시스템 보안은 어떻게 공부할 것인가?) 글의 개정판입니다. 0. 시작하며. 보안 학과가 없는 학교에서 보안회사 공채 합격까지. 제가 다니는 학교의 컴퓨터 공학 과정에서 보안을 중점적으로 다루지 않았습니다. 4학년 때 컴퓨터 보안 수업 하나 있는 정도입니다. 보안 학과가 없는 4년재 대학교라면 아마 비슷한 상황일 것입니다. 전공을 시작하면서 마음속에 보안을 공부하고 싶다는 열망이 있었고, 많은 방황을 하면서 공부했습니다. 그 결과 19년 하반기 보안분야의 취준생이라면 알만한 회사에 공채로 합격했습니다. (개인적인 이유로 입사하지 않았습니다.) 많은 시간 동안 혼자 책상머리에서, 그리고 거대한 교보문고에서 껌딱지처럼 쪼그리고 앉아..

용감하게 시작하는 코딩테스트 3편 [내부링크]

용감하게 시작하는 코딩테스트 3편 0. 무엇을 공부할까요? 혹시 지난 챕터가 쉬웠나요? 그렇다면 다행입니다. 이번 챕처는 문제 풀이 중간 중간에 들어가는! 꼭 기억해야 풀이 시간이 줄어드는 순열, 조합, 빈도계산, 덱, 우선순위 큐에 대해서 알아보겠습니다. 1. 순열, 조합 1-1. 순수한 방법 for문 2개를 사용해서 nC2를 구하는 방법은 다음과 같습니다. for i in range(0, N-1): for j in range(i+1, N): print(i, j) 백준 9613번 GCD 합 문제를 풀 수 있습니다. GCD는 다음 챕터에서 살펴볼 것입니다. 그렇다면 nC3은? nC4는...? for문을 사용해서는 한계가 있습니다. 1-2. itertools을 사용한 조합 파이썬에서 조합을 구하는 방법..

용감하게 시작하는 코딩테스트 2편 [내부링크]

0. 무엇을 공부할까요? 파이썬의 정수, 문자열, 배열 자료형에 대해서 살펴볼 것입니다. 파이썬 기본 문법책을 펴보면 가장 앞 단원에 나오기에 자신이 있을텐데요. 코딩테스트를 준비하는 관점에서 재해석하여 백준 예제와 함께 공부해보겠습니다. 1. 정수 1-1. 최대, 최소 ans = ??? for num in arr: if ans > num: ans = num print(ans) 배열 arr에 있는 값을 for 문으로 순회하고 있습니다. 마지막에 출력되는 ans에 arr에 저장되어 있는 값 중 최솟값이 저장되게 하고 싶습니다. 그러면 첫번째 줄 ans에 무엇을 저장해야 할까요? arr에 있는 최댓값보다 큰 수가 저장되면 됩니다. ans = 999999 ans에 임의로 큰 값을 쓰는 방법도 있습니다. 보통은..

용감하게 시작하는 코딩테스트 1편 [내부링크]

왜 이 글을 쓰는가? 많은 기업들이 코딩테스트를 치릅니다. 취준생은 이에 맞추어 준비를 해야합니다. 코딩테스트는 처음 공부하려면 막막하고 당황스러울 것입니다. 심지어 코딩테스트 때 작성한 코드를 면접에서 물어본다니.. 취업 준비생들의 당황스러움과 부담감은 상당할 것입니다. 이러한 마음을 한 마디로 요약하면 아마 이렇지 않을까요? 이럴때 어떻게 코드를 써야하지? 이렇게 코드를 써도 되나..? 코딩테스트는 일반적인(?) 코딩과 다르게 객체 지향적으로 짤 필요도 없고, 직접 자료구조를 구현할 필요도 없습니다. 주어진 시간 내 간결함과 정확함이 생명입니다. 제가 직접 백준 문제와 기업 입사 코딩테스트를 풀면서, 다른사람의 풀이를 참고하면서 개인적으로 Notion에 정리해놨습니다. 정리해놓은 내용이 방대해 지고 ..

명저로 다시보는 자바와 메모리 이야기 2편 [내부링크]

도입 명저로 다시보는 자바와 메모리 1편에서 작성한 것과 같이 좋은 실력을 갖춘 개발자가 되기 위해서 단순히 자기의 코드가 돌아갔다 뿐 아니라 자신의 코드가 컴퓨터 내부에서 어떻게 동작하는지를 이해해야 합니다. 1편에서는 main(), 변수, block, static 변수, 멀티 프로세스, 멀티 쓰레드를 살펴보았습니다. 알고 있는 언어의 동작과 비슷해서 어렵지 않았을 것입니다. 본 글에서는 추상화, 상속, 다형성 코드에 대해서 T 메모리에 어떻게 저장되는지 볼 것입니다. 추상화와 T 메모리 public class Mouse { public String name; public void sing() { } } [Mouse.java] public class Mouse { public static void ma..

명저로 다시보는 자바와 메모리 이야기 1편 [내부링크]

도입 좋은 실력을 갖춘 개발자가 되기 위해서 단순히 자기의 코드가 돌아갔다 뿐 아니라 자신의 코드가 컴퓨터 내부에서 어떻게 동작하는지를 이해해야 합니다. 본 글은 간단한 JAVA 코드가 메모리에서 어떻게 동작하는지 살펴볼 것입니다. main() 메서드와 T 메모리 - T메모리는 위와 같은 구조입니다. - JRE는 프로그램 안에 main() 메서드가 있는지 확인합니다. - main() 메서드르 확인하면 JRE는 프로그램 실행을 위한 사전 준비를 합니다. - JVM에 전원을 넣어서 부팅합니다. - JVM은 목적 파일을 받아서 목적 파일을 실행합니다. - 모든 자바 프로그램이 반드시 포함하는 패키지인 `java.lang` 패키지를 T 메모리의 스태틱 영역에 가져 놓습니다. - JAVM은 개발자가 작성한 모든 ..

명저로 다시보는 객체지향 이야기 [내부링크]

들어가면서 지난 여름방학 H사에서 인턴 했을 때 일입니다. 인턴 과제로 C#으로 윈도우 프로그래밍 과제를 주셨습니다. 요구사항을 해결하기 위한 최적화 알고리즘은 고안해냈습니다. 그런데 마음속에 드는 생각이, 내가 두 달 뒤에 인턴십이 끝나더라도 누군가 이 코드를 봤을 때 명확하게 이해하고, 새로운 기능을 확장가능하게 편리하게 만들어야겠다는 생각이 들었습니다. 그러기 위해서 잘 설계해야 한다는 말을 어딘가에서 들었고, 클래스를 잘 짜라는 말처럼 들리는 잘 설계라는 말은 주니어 개발자로서 참 어려운 일이었습니다. 대체 거대한 프로그램을 어떻게 나누고 미래에 소의 등에 날개가 달릴것 까지 고려해서 확장 가능하게 개발하고 다른 사람이 소의 해부도를 보면 한 번에 이해되게 코드를 짜라니... 꼭 객체지향에 대해서..

머쓱 이벤트 개선점 제보 후기 [내부링크]

프로그래머스에서 진행한 웹 과제 테스트 신규 기능 오픈 베타 이벤트에 참여아였고 느낀점을 정리하여 보안적으로 머쓱한 프로그래머스 404;머쓱 이벤트 글을 작성하였습니다. 그리고 오늘 프로그래머스 페이스북 페이지에서 당첨자 발표가 올라왔습니다. 스벅쿠폰~ 보너스 선물로 스타벅스 기프티콘을 받았습니다~ 더욱 개선된 프로그래머스 VS Code를 기대하겠습니다. 광고 꽝고~

백준 300문제 풀이 후기 [내부링크]

두 달만에 달성한 300문제~ 컴공 4학년되도록 백준을 풀지 않았습니다. 제 취향도 아닐뿐더러 알고리즘 테스트 능력과 실무 코딩 능력과 상관없다고 생각했습니다. 그러다 보니 흥미도 없었고요.. 알고리즘 문제를 풀면 생각하는 힘이는다는데, 그 시간에 디자인패턴을 살려서 설계하고, API 래퍼런스 읽는게 더 좋았습니다. 그러나 코딩테스트에서 광탈을 경험하면서 어쩔 수 없이 방학을 시작하면서 코딩테스트 공부에 들어갔습니다. History 2019년 12월 30일 백준 가입... 2019년 12월 30일 14시 15분 18초 백준 1000번 A+B문제 처음 풀이 제출 2020년 03월 04일 백준 300문제 달성 성장...? 100문제 넘겼을 때 한계가 왔습니다. 구현문제 위주로 풀었는데 기본 알고리즘을 활용해..

보안적으로 머쓱한 프로그래머스 404;머쓱 이벤트 [내부링크]

1. 도입 머쓱 404; 이벤트가 어제(3/6)자로 종료되었습니다. 보안관점에서 머쓱 이벤트를 바라보려고 합니다. 2. 프로그래머스, VS Code를 만나다 프로그래머스 머쓱 이벤트! 프로그래머스에서 기업 과제 테스트작업을 VS Code Cloud 환경에서 작업을 할 수 있습니다. 이를 홍보하는 차원으로 404 Page Not Found를 프로그래머스 VS Code 환경에서 작업하는 이벤트를 했습니다. 동네사람들 고오급 키보드 준데요~ 클라우드 IDE 사업을 하는 MS 프로그래머스의 웹페이지에서 VS CODE를 돌린다는 것은 놀라운 사실은 아닙니다. 프로그래머스가 Cloud9, 구름IDE 처럼 자사 클라우드 IDE를 개발한 것이 아니라 MS의 Visual Studio Online을 사용하는 것이기 때문입..

시큐어코딩 관점에서 바라본 연구실 안전교육 [내부링크]

실험실을 사용하는 대학생, 대학원생이라면 피할 수 없는 연구실 안전교육... 이번 학기에 실험 과목을 듣는 저는 의무적으로 연구실 안전교육을 수강해야 합니다. 연구실 안전교육은 대학 입학 이후 세 번째로 듣습니다만 그 동안 편법이 통했습니다. 국가연구원안전관리본부도 이를 인지하고 편법을 막고, 답안을 인터넷에 올리면 이수증을 취소하는 등 할수 있는 범위에서 노력을 하였으며 그 결과 인터넷에 교육을 넘길 수 있는 편법은 다 막혔으며, 2020년 답안이 검색되지 않습니다. 편법을 어떠한 방식으로 막았는지 확인하기 위해서 연구실안전교육 자바스크립트 코드를 읽었고 시큐어코딩 관점 그 중 개발보안가이트 과점에서 재미있는 부분이 있어서 이렇게 글로 남깁니다. 결론부터 언급하면 여전히 시큐어코딩을 지키지 않은 부분이..

이진탐색이란? 백준 문제추천 [내부링크]

이진탐색이란? 백준 문제추천 도입 연초가되어 카카오에서 고생한 직원 100명을 뽑아서 카카오해변으로 휴가를 보내주었습니다. 1년 동안 힘들게 일한 라이언은 신이나서 해변에 멋찐 작품을 만들고 밥을 먹고 돌아왔습니다. 돌아오니 아니 웬걸, 라이언이 공들여 만든 작품은 망가져있고 모래사장에 발자국이 하나 찍혀 있었습니다. 해변에는 100명의 사람들이 있습니다. 발자국 길이를 잰 라이언은 어떻게 하면 빠르게 범인을 찾을 수 있을까요? 범인을 찾는 두 가지 방법이 있습니다. [방법 1] 해변에 찍힌 발자국의 길이와 같은 사람이 나올때까지 만나는 사람마다 발 크기를 재는 방법 [방법 2] 사람드에게 신발 크기가 작은 순서부터 큰 순서로 서 있게 한 다음에 중간에 서 있는 사람의 발 크기부터 비교합니다. [방법 1..

DFS BFS란? 백준 문제추천 [내부링크]

DFS BFS란? 백준 문제추천 그래프의 모든 노드를 방문 하는 알고리즘으로 DFS와 BFS가 있습니다. 어려운 코딩테스트를 통과하고 나면 만나게 될 기업 기술 면접의 단골 주제입니다. 본 알고리즘에 대해서 알아봅시다. DFS(깊이 우선 탐색)란? 도입 Figure 1. 끝을 알 수 없는 미로를 빠져 나가는 방법은 무엇일까요? 위의 사진은 영화 메이즈 러너의 미로입니다. 이렇게 복잡한 미로에 갇혔다면 여러분은 어떻게 미로를 빠져나올건가요? 아마 더 이상 막혀서 깊이 들어갈 수 없는 길을 만날 때까지 깊이 깊이 들어갈 것입니다. 한 모퉁이만 돌면 출구가 나올 수 있기에 출구가 등장할 것이라는 희망을 버리지 않고 한 번 길을 정하고 막다른 골목이 나올때까지 깊게 들어갈 것입니다. DFS는 미로 탐색과 같습니..

그리디 알고리즘(Greedy Algorithm) 및 백준 문제 추천 [내부링크]

조감도 탐욕 알고리즘 아이디어를 활용한 알고리즘(문제들) 입니다. 도입 제주 카카오에서 일하고 있던 무지는 판교 카카오에 있는 라이언이 빨리 오라는 카톡을 보고 판교 카카오로 이동하려고 합니다. 마음이 급한 무지는 당황하며 어떻게 하면 빨리 이동할 수 있을지 고민을 합니다. 무지는 크게 두 가지 방법으로 판교 카카오로 이동할 수 있습니다. 지도에서 최단 경로를 검색해서 각각 이동 경로마다 최단 비행기, 최단 버스, 최단 택시를 탄다. 일단 가장 빠르게 가능 방법을 선택한다. 그리디 알고리즘은 2번 방법입니다. 일단 가장 빠르게 갈 수 있는 택시를 타고, 제주 공항에서 가장 빠르게 갈 수 있는 비행기를 타고, 인천 공항에서 가장 빠르게 판교로 가는 버스를 타는 것입니다.(경험상 9007번이 빠릅니다.) 그..

[백준 13458번 시험감독] 문제 해설 - 파이썬 [내부링크]

[백준 13458번 시험감독] 문제 해설 - 파이썬 문제 총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다. 감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 방에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 방에서 감시할 수 있는 응시자의 수가 C명이다. 각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다. 각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주..

[백준 11000번 강의실 배정] 문제 해설 - 파이썬 [내부링크]

[백준 11000번 강의실 배정] 문제 해설 - 파이썬 문제 수강신청의 마스터 김종혜 선생님에게 새로운 과제가 주어졌다. 김종혜 선생님한테는 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 참고로, 수업이 끝난 직후에 다음 수업을 시작할 수 있다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.) 수강신청 대충한 게 찔리면, 선생님을 도와드리자! 입력 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (1 ≤ Si < Ti ≤ 10^9) 출력 강의실의 개수를 출력하라. 백준 링크 백준 링크 문제 접근법 그리디로 접근해야합니다. N = 200,000 입니다. ..

[백준 2217번 로프] 문제 해설 - 파이썬 [내부링크]

[백준 2217번 로프] 문제 해설 - 파이썬 문제 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 단, 각각의 로프는 한 개씩만 존재한..

[백준 11399번 ATM] 문제 해설 - 파이썬 [내부링크]

[백준 11399번 ATM] 문제 해설 - 파이썬 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하..

[백준 1931번 회의실배정] 문제 해설 - 파이썬 [내부링크]

[백준 1931번 회의실배정] 문제 해설 - 파이썬 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다..

[백준 11047번 동전 0] 문제 해설 - 파이썬 [내부링크]

[백준 11047번 동전 0] 문제 해설 - 파이썬 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 문제 접근법 이런 문제와 비슷한 문제가 이름만 들으면 알법한 19년 하반기 모 기업의 코딩테스트 문제로 나왔습니다..

[백준 1759 암호 만들기] 문제 해설 [내부링크]

[백준 1759 암호 만들기] 문제 해설 문제 Start 본 문제는 백트래킹 문제입니다. 백트래킹에 대해 자세히 알지 못한다면 백트래킹(Backtracking)이란? 글을 참고해주세요. Step By Step Step 1 입력 L, C = map(int, input().split()) inputList = list(map(str, input().split())) inputList.sort() 문제에서 주는 값을 입력 받습니다. 알파벳 순으로 출력하기 위해서 .sort 함수를 이용해서 정렬합니다. Step 2 암호문 조합 (solution 함수 후반부) def solution(L, inputList, combStr, index): (중략) solution(L, inputList, combStr+list(i..

백트래킹(Backtracking)이란? 백준 문제 추천 [내부링크]

백트래킹(Backtracking)이란? 문제 추천 조감도 참고. 알고리즘 공부 리스트 및 순서 백트래킹은 완전 탐색의 카테고리에 있습니다. 백트래킹으로 해결할 수 있는 유명한 N-Queens 문제가있습니다. 백트래킹(Backtracking)이란? Backtracking is a general algorithm for finding all (or some) solutions to some computational problems, that incrementally builds candidates to the solutions, and abandons each partial candidate (“backtracks”) as soon as it determines that the candidate cannot..

️ 한국컴퓨터종합학술대회(KCC) 2019 학부생 논문경진대회에서 우수상을 수상하기까지 [내부링크]

[1] 글을 시작하며 대학으로 진학해서 전공을 선택해서 공부를 합니다. 저는 대학은 문자 그대로 큰 학문을 하는 곳이라고 생각하고 큰 학문을 하는 과정으로 인류의 학문적인 기여라고 생각합니다. 학부생으로 KCC 논문 경진대회에 출전하고, 수상한다는 것은 쉬운 일이 아니었습니다. 연구의 시작부터 발표까지 일련의 과정을 거치면서 정리하고자 본 글을 씁니다. [2] 주제 정하기 교수님의 오더로 시작했습니다. [3] 끝 없는 조사의 시작 정보의 태평양 인터넷에서 정적 분석도구를 조사하기 위한 삽질을 시작했습니다. Step 1. 존재하는 오픈소스 정적 분석 도구 찾기 Google Sheet를 이용해서 협업했습니다. 처음에 검색했을 때는 Java와는 다르게 Python 정적 분석 분석 도구가 많이 검색되지 않아서 ..

️ 제6회 개발보안 경진대회 수상 후기 [내부링크]

대학생 신분으로 장관상을 탈 수 있는 어마어마한 기회! [1] 대회 소개 미래의 SW 개발자인 대학생에게 ‘SW 개발보안’을 널리 알리고 활성화시키고자 행안부 주최로 본 대회가 열립니다. 소프트웨어 개발보안 가이드 - 행안부에서 내용을 확인할 수 있습니다. 5회 본선 진출하고 수상하지 못해서 복수의 칼날을 갈고 6회에 도전했습니다. 변한 개발보안 대회 (출처 - 개발보안 페이스북 페이지) [2] 기획서 처음부터 난관이었습니다. 아무리 개발 보안 가이드에 대해서 잘 알고 있다고 하더라도 기획서가 통과되지 않으면 실력을 보여줄 수 없으니 아이디어를 잘 생각했어야 했습니다. 인터넷으로 확인할 수 있는 공공 해커톤으로 과거에 수상한 작품은 다 보았으며, 공공데이터 포털 활용사례도 1페이지부터 끝 페이지까지 다 ..

2019 웨일 확장앱 콘테스트 개발 이야기 [내부링크]

2019 웨일 확장앱 콘테스트 개발 이야기 수상을 한다면 돈과 웨일팀에서 인턴할 수 있는 기회를 얻을 수 있는 가희 개발자들의 오디션이라고 할 수 있겠다.. [0] 웨일? 웨일 확장앱? 웨일은 크로미움 기반 웹 브라우저로 네이버에서 개발하였으며, DEVIEW 2016에서 처음 공개하였습니다. 크로미움 기술을 사용하기에 크롬 확장앱을 (전부는 아니지만) 웨일에서 사용할 수 있습니다. 크로미움 엔진을 사용하는 브라우저는 크롬 뿐만 아니라 비발디 브라우저도 있습니다. 다른 브라우저와 다르게 처음 사용했을 때는 디자인이 예쁘고 빨랐습니다. 점유율은 조사마다 차이가 있지만 2019년4월기준 브라우저 점유율은 Edge가 4%정도이고 웨일은 1.6%입니다. (출처: wiki) 웨일 확장앱은 브라우저 화면의 1/4 정..

Auzer를 이용하여 Django 배포하기 - [2부] [내부링크]

Auzer를 이용하여 Django 배포하기 2편 Server 설정 Auzer 19.08.26버전을 기준으로 작성하였습니다. Django 2.2.4 버전을 기준으로 작성하였습니다. 본 글에서 사용하는 예제는 여기 주소입니다. 리소스로 이동을 클릭합니다. 공용 IP주소를 확인합니다. > ssh [email protected] Auzer에서 가상머신을 만들 때 입력했던 사용자 이름과 암호를 입력합니다. The authenticity of host '52.231.64.145 (52.231.64.145)' can't be established. ECDSA key fingerprint is SHA256:yRS1G7YZ49OFOovDQ5B1PRQTQHrsaIbxs4Mb*****. Are you sure you w..

Auzer를 이용하여 Django 배포하기 - [1부] [내부링크]

Auzer를 이용하여 Django 배포하기 1편 Auzer 설정 Auzer 19.08.26버전을 기준으로 작성하였습니다. Django 2.2.4 버전을 기준으로 작성하였습니다. 본 글에서 사용하는 예제는 여기 주소입니다. 소개 AWS를 이용한 배포에 관한 글은 많으나, Auzer를 이용한 배포는 거의 전무합니다. Auzer를 이용하여 Django를 배포할 수 있습니다. 사실상 가상 인스턴스 만드는 부분만 AWS EC2를 사용한 배포와 차이점입니다. 가상 인스턴스 안에서 Django 프로젝트를 배포하는 부분은 AWS와 별반 다를바 없습니다. 본 포스트가 Auzer를 이용해서 배포하려는 분들에게 가뭄에 단비 같은 존재가 되기를 바라고 있습니다. cmder 설치하기 ssh연결을 위해서를 설치할 것입니다. cm..

한 눈에 확인하는 컴퓨터 구조 [내부링크]

본 포스트는 지금은 사라져버린 교육기관인 아이엘아이티 네트워크 강의를 수강후 재구성하였습니다. 도입 이미지 출처 unsplash.com 여러 층(Layer)로 이루어진 멋진 건물이 있다. 컴퓨터에서 층(Layer)이 그림이 나오면 존립 의존과 상호 독립 2가지를 생각해야 한다. 사옥이 존재한다. L1, L2, L3(연구개발 부서), L4(경영지원부)가 있다고 하자. 이렇게 다 모여서 기업을 이루고 있다. 윗층과 아랫층은 존립의 의존적이다. 2층 없이 3층이 존재할 수 없다. 바꿔 말하면 전재조건이다. 1층이 없으면 2층이 존재 할 수 없기 때문이다. 내용적 측면에서 상호 독집적이다. 같은 회사의 부서라고해서 경영지원부에서 생긴 문제는 연구부와 별 관계가 없다. 비유 나라는 3가지로 나눌 수 있는데 (1)..

파이썬 취약점(input 함수) [내부링크]

본 글은 Python Exploitation #1: Input() 글을 읽고 작성한 것입니다. raw_input 함수와 input 함수가 존재하는 Python2의 경우에 발생하는 취약점입니다. 파이썬2로 작성한 간단한 게임을 통하여 input 함수의 취약점을 소개하겠습니다. 예제 코드 import random secret_number = random.randint(1,500) print "Pick a number between 1 to 500" while True: res = input("Guess the number: ") if res==secret_number: print "You win" break else: print "You lose" continue random.randbit를 이용해서 1~4..

백준 2606번: 바이러스 [내부링크]

백준 2606번: 바이러스 문제 문제 보러 가기 풀이 웜 바이러스가 이동할 수 있는 컴퓨터들은 그래프의 형태로 연결되어 있다고 볼 수 있다. 컴퓨터 끼리는 양방향 그래프로 연결되어 있다. (1번과 2번 컴퓨터가 연결되 있다면 [1번]->[2번] 컴퓨터로 갈 뿐만 아니라 [2번]->[1번] 컴퓨터로 이동할 수 있다.) 웜 바이러스는 연결된 컴퓨터들끼리만 이동할 수 있기에 이는 그래프의 탐색으로 풀 수 있다. 본 문제를 DFS를 이용하여 풀었다. 문제의 맨 마지막에서 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 라고 한다. 즉 1번 그래프를 방문한다고 볼 수 있다. 따라서 1번 그래프에서 방문을 시작하여 DFA를 했을 때 방문하는 서로 다른 노드의 갯수를 세면 된다. 코드 import java.io.*; ..

GPG public key 오류 - apt-get update가 안될 때. [내부링크]

apt-get update를 하려고 하면 GPG public key 오류가 나온다.GPG는 GNU의 pgp 암호화 프로그램이다. 오류 메시지에서 표시된 PGP 공개키가 서버에 등록되지 않아서 발생한 것이다. W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://dl.google.com/linux/chrome/deb stable Release: The following signatures couldn't be verified because the public key is not available: N..

리눅스(칼리 리눅스)에 WebGoat 8 설치하는 방법 [내부링크]

[들어가며] WebGoat 5.4 ver는 WAR파일이 있기 때문에 이클립스와 톰켓을 이용하여 쉽게 실습 환경을 구성할 수 있다. 그러나 WebGoat 8는 아무리 찾아도 WAR파일이 존재하지 않는다. Webgoat 8 Git hub에서는(https://github.com/WebGoat/WebGoat) Webgoat를 실행하는 방법은 [1] Docker 사용 [2] maven 사용 두 가지로 나뉜다. 이 중에서 maven으로 WebGoat 8를 설치해 보겠다. [1] 요구사항 확인 - Java 8 설치 WebGoat를 설치한 칼리 리눅스(2017.1-vbox-i686)에는 기본적으로 Java 8이 설치되어 있었다. 혹시 1.8 version이 아닌 이상의 버전이 설정되어있다면 환경변수 변경을 통하여 1...

[컴퓨터 공학] 어떻게 데이터베이스를 공부할 것인가? [내부링크]

[들어가며] 데이터베이스(이하 DB)를 만난 것은 웹 사이드를 만들때였습니다. NoSQL 기반 웹 페이지였는데 N : M 관계에서 막혔습니다. 구글링으로 어떻게 해결했지만 이해는 못했던 기억이 납니다. 시간이 지나서 보니 DB 설계하고 관리한다는것은 너무너무 중요한 영역입니다. 단순히 SQL을 작성하는 것을 넘어서 설계 당시 Scale up을 고려해야 하며 성능과 용량 또한 생각해야합니다. 처음 공부를 시작할 때 데이터베이스 SQL연습을 많이 해보라는 조언과 개론서를 읽으며 정규화와 개체 모형, 트랜잭션을 보라는 이야기를 들었습니다. 공부하기 위해서 상당히 많은 데이터베이스 책을 살펴보았고, 처음 공부하기에 참고할 만한 책들을 선별하였습니다. [강의] [1] 생활코딩 - Database https://o..

[컴퓨터 공학]보안은 어떻게 공부할 것인가?(웹 보안, 해킹, 시스템 보안은 어떻게 공부할 것인가?) [내부링크]

[개정판] 글을 작성하였습니다. [링크] 에서 확인해주세요. [들어가며] 보안, 해킹이라는 단어에서 뿜어져 나오는 매력이 있는지, 강의나 멘토링을 하다보면 이런 쪽의 공부를 하고 싶어하는 친구들이 있습니다. 막상 인터넷에서 공부 자료를 찾으려고 하면 특정 학원 홍보나, 어려운 책을 입문자에게 추천해주는 경우가 대부분입니다. 본 포스팅을 작성하면서 보안에 대한 직무를 이해하고, 흥미를 잃지 않고 공부할 수 있는 자료를 소개하려고 합니다. 다만 이전의 어떻게 공부할 것인가? 시리즈와는 다르게 유료 강의를 추천하려고 합니다. 일단 보안에서 무료 강의가 잘 없을 뿐더러, 소정의 학습료를 내면 시행착오 없는 양질의 교육을 받을 수 있기 떄문입니다. [강의] [0-1] 모의해킹 업무의 이해 https://www.i..

[컴퓨터 공학] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여) [내부링크]

============================================================= 개정판 글을 작성하였습니다 [링크]에서 확인해주세요 많은 부분이 수정되었습니다!! ============================================================= [컴퓨터 공학 공부 리뷰란?] 제가 대학에 진학할 시절에는 처음 웹을 공부하기 위해서는 생활코딩말고는 좋은 강의가 드물었습니다. C언어 공부한다 하면 대부분 윤성우씨의 강의를 수강했고요. 그러나 불과 몇 년 사이에 훌륭한 분들이 앱이나 웹만드는 강의가 많아졌습니다. Youtube에 C언어 부터 시작해서 머신러닝까지 많은 강의를 무료로 볼 수 있습니다. 그러나 컴퓨터 공학의 고전적인 과목들 예를 들어서 컴퓨..

CISC / RISC [내부링크]

기계어 명령의 길이와 형식에 따라 CPU를 CISC(Complex Instruction Set Computer)와 RISC(Reduced Instruction Set Computer)로 나눌 수 있다. CISC : RISC 구조나 나오기 전에 보편적으로 사용되던 구조로써, RISC에 비해서 상대적으로 명령어의 개수도 많고 구조도 복잡하다. 다양한 종류의 연산과, 주소 지정모드 등이 제공되기 때문에 자유로운 프로그래밍이 가능하지만, 명령어의 구조와 개수 등이 복잡하기 때문에, 명령어의 해독에 시간이 많이 걸리는 단점이 있다. 최근에 CISC CPU도 내부적으로 복잡한 명령들을 다시 단순한 명령들로 나누어 명령어 파이프라인에서 처리하는 경우가 있어서, 실제 내부 작동원리는 RISC와 유사한 경우도 있다. C..

[컴퓨터 공학]어떻게 C++을 공부할 것인가? [내부링크]

[강의] [1] 오렌지미디어 - 윤성우 저자 직강 열혈 C++ 프로그래밍 책을 병행하면서 강의를 수강했습니다. C++의 객체지향 내용도 윤성우씨의 영상을 보면 무리 없이 쭉쭉 이해가 갑니다. [2] 이것이 C++이다 강의 - 최호성 https://www.youtube.com/watch?v=kq6b5zBkQ28&list=PLXvgR_grOs1DFOWF65X0Zqnd_264x41u- 굳이 이것이 C++이다 책이 없어도 충분히 들을 수 있습니다. 최호성 저자의 강의를 들으면 깊게 들어가고 지식이 확확 넓어진다는 느낌이 듭니다. 기계어 수준까지 내려가서 강의를 합니다. 이렇게 프로그램 언어에 대해서 깊게 강의하는 분은 처음 봤습니다. 그렇다고해서 너무 어려워서 못들을 정도가 아닙니다. 강의를 끝까지 들으면 확실..

[컴퓨터 공학]컴퓨터 구조 공부를 어떻게 할까? [내부링크]

[컴퓨터 공학 공부 리뷰란?] 제가 대학에 진학할 시절에는 처음 웹을 공부하기 위해서는 생활코딩말고는 좋은 강의가 드물었습니다. C언어 공부한다 하면 대부분 윤성우씨의 강의를 수강했고요. 그러나 불과 몇 년 사이에 훌륭한 분들이 앱이나 웹만드는 강의가 많아졌습니다. Youtube에 C언어 부터 시작해서 머신러닝까지 많은 강의를 무료로 볼 수 있습니다. 그러나 컴퓨터 공학의 고전적인 과목들 예를 들어서 컴퓨터구조 운영체제, 네트워크, 데이타베이스, 혹은 보안 쪽을 독학으로 공부하려고 하면 좋은 강의도 없고 막막한 것이 현실입니다. 구글에 운영체제 공부법 같은 키워드로 검색을 하면 특정 학원 홍보와, 막상 사보면 지나치게 어렵거나 추천하는 본인도 읽어보지 않은 책을 추천하는 게시글만 만날 수 있는 것이 현실..

칼리 리눅스(Kali linux) 윈도우10 스토어에서 설치하고 원격 접속하기 [내부링크]

(뮤탈리스크 처럼 생긴 칼리리눅스) 칼리 리눅스를 윈도우 10 App으로도 만날 수 있습니다. 또한 xfce4를 이용해서 원격으로 접속 할 수 있습니다. 본 포스팅은 xfce4로 칼리리눅스에 원격으로 접속하는 것을 해보겠습니다. 윈도우 10 스토어에서 kali linux를 다운로드 받습니다. 다운 받은 kali 앱을 클릭하면 Installing, this may take a few minutes.. 라는 말이 나오며 초기 설정이 진행됩니다.끝나면 User이름와 password를 설정하는 과정이 됩니다. 명령어 wget https://kali.sh/xfce4.sh 을 입력합니다. [20. 05. 29 수정] 위의 명령어는 이제 동작하지 않을 것입니다. sudo apt updatesudo apt upgrad..

[컴퓨터 공학]웹 개발은 어떻게 시작하면 좋을까? [내부링크]

[들어가며] 전문가의 영역이었던 웹은 이제 누구나 쉽게 시작하여서 나만의 멋진 사이트를 만들 수 있는 세상이 되었습니다. 시중에 많은 도서와 강의들이 있습니다. 웹은 한 번 쭉 만들어보고 필요한 기술을 그 때 그 때 배워서 사용하는 것이 좋은 방법이지만, 공부하면서 도움 받았던 사이트와 책을 소개해 보려고 합니다. [강의] [1] 생활코딩 https://opentutorials.org/course/3083 처음 웹 개발을 시작할 때 '웹 에플리케이션 만들기'를 보았습니다. 웹에 대해서 아무것도 모르는 상태에서 아파치를 설치하여 환경을 구성하고, HTML5, CSS, Javascript, PHP그리고 서버에 대한 공부를 할 수 있는 종합 선물세트입니다. 그러나 약간 졸린강의.. 그리고 강의 슬라이드를 제공..

[컴퓨터 공학] 파이썬 공부 리뷰(어떻게 파이썬공부를 할까?) [내부링크]

[시작하면서] 파이썬을 3년전에 공부를 시작하고 공부한 것을 바탕으로 강의를 했다. 초창기 처음 공부를 시작하고 강의할 때에는 레퍼런스 성격의 책을 제외하고는 마땅한 도서와 공부할 자료가 없었다. 그러나 '인생은 짧고 파이썬을 시작하라'는 말과 함께. 파이썬은 프로그래밍을 처음 공부하는 사람들이 시작하는 언어로써 알려지게 되었고다. 이와 함께 좋은 강의와 책들이 쏟아졌다. 오히려 자신에게 맞는 강의와 책을 찾느라 시간을 보낼 정도이다. 파이썬 강의 준비를 하면서 시중에 파이썬이라는 이름을 달고 나온 모든 책을 보았기에 단계별로 책을 추천해보겠다. [인터넷 강의] [1] 김왼손의 왼손코딩(Youtube) https://www.youtube.com/channel/UC0h8NzL2vllvp3PjdoYSK4g ..

[컴퓨터 공학]운영체제 공부 리뷰(어떻게 운영체제 공부를 시작할까?) [내부링크]

Img Sorce How to Geek =============================================================개정판 글을 작성하였습니다 [링크]에서 확인해주세요 많은 부분을 업데이트하였습니다! ============================================================= * 초판: 18.07.12* 최종수정: 20. 06. 15. [컴퓨터 공학 공부 리뷰란?] 제가 대학에 진학할 시절에는 처음 웹을 공부하기 위해서는 생활코딩말고는 좋은 강의가 드물었습니다. C언어 공부한다 하면 대부분 윤성우씨의 강의를 수강했고요. 그러나 불과 몇 년 사이에 훌륭한 분들이 앱이나 웹만드는 강의가 많아졌습니다. Youtube에 C언어 부터 시작해서 머신..

[IT도서리뷰] 모두의 알고리즘 with 파이썬 [내부링크]

https://thebook.io/006935/ 에서 일부 내용을 확인할 수 있습니다. 불과 1-2년 전만 하더라도 누가 파이썬으로 프로그래밍 언어로 프로그래밍 언어로 잡고 책을 추천해 달라고 하면 망설여졌다. 시중에는 파이썬 내장함수에 대해서 설명한 두꺼운 바이블 서적 혹은 Do it 파이썬 정도였다. 파이썬 언어로 알고리즘 공부를 하려고 하면 프로그래머스 사이트에서 알고리즘 문제를 풀고, 다른 사람의 풀이를 보면서 감탄하며 배우는 방법이 그나마 방법이었다. 그런데 이제는 파이썬 언어가 점점 많이 사용하면서 파이썬으로 알고리즘을 공부할 수 있는 책이 나오기 시작했고, 그 중에서 제일 괜찮은 책이라고 생각한다. 처음 파이썬을 접하는 사람들은 간단한 문제부터 시작해서 정렬, 그리고 그래프까지 다루게 된다...

[IT도서리뷰]SQL 더 쉽게, 더 깊게 [내부링크]

처음에는 Head first SQL를 봤다. Head first SQL도 훌륭한 책이지만 쭉 읽다보면 너무 지친다. 굳이 이렇게 줄줄 설명 해야하나... 생각이 든다. 그러다가 다른 책이 없다가 찾다가 본 책을 만나게 되었다. 무엇보다도 책도 얇고, 목차를 보면 기본적인 내용은 다 들어가 있다고 생각이 들었다. 이 정도면 빠르게 훝을 수 있다고 생각이 들어서 보기 시작했다. 가벼운 책이지만 이 안에 세세한 내용이 다 들어 있다. 일본에서 발간된 책을 번역한 것이지만, 설명은 군더더기 없이, 깔끔했다. 특히 JOIN에 대해서 공부할 때 다른 도서를 참고했을 때는 설명을 너무 복잡하게 한다는 생각이 들었는데 본 책은 적절한 도표로 읽는 즉시 술술 이해되게 했다. 각 장이 끝나면 연습문제와 연습문제에 대한 모..

[IT도서 리뷰] Power Java - 천인국 [내부링크]

(코딩안하고 딴짓하면 잡아먹을 분위기이다...) 나온지는 좀 된 천인국, 하상호 공저 Power Java 이다. 5년 전 처음 C에 입문 할 때 천인국씨의 C언어 Express를 보고 재미있게 공부한 기억이 있었다. C++을 주력으로 사용하다가 Java를 다시 공부해야할 일이 있어서 보게 된 책이다. 천인국씨의 특징은 그림과 코드를 읽기 쉽게 화살표, 색깔이 잘 처리되있다는 점이다. 저렇게 깜찍한(?) 그림으로 코드가 직관적으로 다가오게 한다. 클래스와 객체를 빵과 빵틀에 비유하는 설명은 많이 보왔다. 천인국씨의 서술방식은 저렇게 실제 그림으로 보여주면서 와닿게 해준다. 그림이 많아서 눈이 즐겁게 공부할 수 있다는 점 또한 객체 지향언어의 특징, 자바 언어의 특징을 깔끔하게 설명해준다. 천인국씨의 책의 ..

[IT도서 리뷰]모의해킹이란 무엇인가? [내부링크]

작년에 보안 공부를 위해서 인프런에서 이에 대한 강의를 찾았다. 보안프로젝트 이름으로 보안에 입문하는 사람들을 위해서 궁금해 할만한 것을 시원하게 알려주는 강의를 보았다. 그 강의를 보면서 어떤 분야인지 확실히 알게 되었다. 이후로 보안 프로젝트에서 출간한 도서도 몇몇권 봤다. 그중에서 모의 해킹이란 무엇인가?를 소개하려고 한다. (나머지 도서는 실제 공부해보고 리뷰를 작성하겠다.) 본 도서는 앞으로 모의해킹으로 공부 방향을 잡는데 도움이 될 것 같아서 집어들은 책이었다. 본 도서는 보안에 대한 기술적인 내용도 조금씩 나오지만, 처음 모의해킹과 보안에 관심있는 사람들이 어떤 방식으로, 그리고 이 쪽 분야의 진로가 어떻게 되는지 친절하게 써 있는 책이다. 이쪽 분야에 관심있는 대학생들, 그리고 막연히 해킹..

[도서 리뷰]나는 마커스 입니다. [내부링크]

나에게 있어서 마커스란 좋은 앨범과 해오름교회에서 열리는 목요예배 정도이다. 군대 있을때 PMP에 마커스 목요예배를 담아서 마커스 찬양과, 김남국 목사님의 설교를 들으며 하루하루 보낸 시절이 있었다. 나에게 있어서 마커스는 그런 존재였다. 이 책을 보면서 내가 별 생각없이 유튜브로 볼 수 있는 마커스 예배가 하나님이 김준영 대표를 향한 계획하심과 마커스 맴버 속에서의 눈물의 기도로 이끌어가고 있음을 보게 되었다. 어떤 삶을 살아가야 하는지 방황하는 순간, 본 책을 보면서 하나님의 종이 하나님의 뜻을 따라 매일의 순종해가는 삶을 보게 되었다. 이 책을 펴는 순간 김준영형제님의 삶을 통해 하나님의 형상이 들어가는 삶을 따라가게 될 것이다.

[도서 리뷰] 실무자가 말하는 모의해킹 [내부링크]

중학교 학생들에게 코딩 강의를 하면서 학생들의 이야기를 들어보면 게임, 웹 페이지 만들기, 앱 만들기 등등 여러 분야에 관심이 있는 친구들이 있다. 그러면서도 꼭 빠지지 않게 보안에 관심이 있다고, 해킹에 관심있다고 말하는 친구들이 있다. 이 글을 쓰는 나도, 옛날부터 보안에 관심이 많았고, 인터넷 검색을 통해서 보안이 무엇인지, 해킹이 무엇인지 그리고 어떻게 공부해야하는지 정보를 모으던 시절이 있다. 그럴 때마다 인터넷 검색결과에는 특정학원 홍보 혹은 학교 공부에 충실해라. 같은 갈증을 해결해 주지 못하는 답변이 많았다. 본 책은 보안에 종사했던 실무자로서 모의 해킹이 무엇인지에 대한 갈증을 해소해주는 것이다. 보안프로젝트를 운영하면서 많은 질문을 받았고 그것을 근반으로 하여 작성된 책이다. 그래서인지..

[작성중][18-알고리즘] 재귀식(Recurrence equation)문제풀이 [내부링크]

1. T(n) = T(4/n) + n^2 (n>1) c (n=1)이를 Recursion tree방법을 이용하여 풀어라. 2. S(n) = 0 (n=0) c + s(n-1) (n>0)이를 iteration method를 이용하여 풀어라. [풀이]S(n) = c + s(n-1) = c + c + s(n-2) = 2c + s(n-2) = 2c + c + s(n-3) = 3c + s(n-3) ... = kc + s(n-k) = ck + s(n-k)

[작성중][18-알고리즘]배낭 문제(Knapsack Problem) [내부링크]

배낭 문제(Knapsack Problem)라는 것은 예를 들어서 도둑이 한 밤중에 어느 가정집에 들어갔다. 그 집에는 금고가 있었다. 도둑은 금고를 여는데 성공을 했다. 금고에는 금, 은, 동, 구리가 있다.(놀랍게도 현금은 없었다.) 도둑의 가방에는 20kg만 담을 수 있다. 그렇다면 도둑은 무엇을 얼마나 담아야지 가방에 담은 물건이 최대의 가치가 들어갈까?의 문제이다. 즉 무엇을 얼마만큼 담아야 가방의 무게가 최대일까?이다. 배낭 문제(Knapsack Problem)는 두 가지로 나누어 진다. 금고에 금 4kg, 은 17kg, 동 10kg이 있다고 하자.(가치는 금>은>동 순이다.) 만약 금, 은, 동을 자를 수 있다고 하면 금 4kg, 은 16kg을 가방에 답는 것이 가방에 최대의 값어치의 물건을 ..

[18-알고리즘]점근적 분석(Asymptotic Analysis)에 대한 예제문제 풀이 [내부링크]

1. For the functions, 4^n and 2^n, what is the asymptotic relationship between these functions? Select all that apply.(a) 4n = O(2n) (b) 4n = Ω(2n) (c) 4n = Θ(2n) [풀이] 4^n은 2^2n이다. 이는 2^2n >= c2^n이다. (c는 c>0인 양의 상수이다.)따라서 4^n이 2^n보다 빠르게 증가하는 것을 알 수 있다. 그래프의 개형은 다음 위의 그림과 같다. (그래프는 n>0에서 형성된다.)f(n) = 4^n, g(n) = 2^n이라고 하자. f(n) >= cg(n)인 4^n >= c2^n 관계가 성립한다.따라서 점근적 하한선을 표시하는 Ω-표기인 (b) Ω(2n)가 답이다.

격리수준완화에 따른 현상 [내부링크]

Isolation Level 의 종류는 4가지가 있다. 1. Read Uncommitted SELECT 문장을 수행하는 경우 해당 데이터에 Shared Lock이 걸리지 않는 Level입니다. 따라서, 어떤 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 B라는 아직 완료되지 않은(Uncommitted 혹은 Dirty) 데이터 B를 읽을 수 있습니다. 2. Read Committed SQL Server가 Default로 사용하는 Isolation Level입니다. 이 Level에선 SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸립니다. 그러므로, 어떠한 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 해당 데이터에 접근할 수 없습니다...

데이터베이스 트랜젝션 ACID란? [내부링크]

ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.(Wiki ACID) 트랜잭션이라는 것은 데이터베이스 내에 서 하나의 논리적 기능을 수행하기 위해 행해지는 작업의 단위 또는 한번에 사용되는 하나 이상의 쿼리를 모아 놓은 쪼갤 수 없는 작업의 논리적인 단위이다. 트랜젝션은 ACID를 만족해야한다. ACID는 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation) 그리고 지속성(Durability)의 약자이다. 원자성(Atomicity) 트랜젝션은 분해가 불가능한 최소의 단위인 하나의 원자처럼 동작한다는 의미. 트랜젝션 내의 모든 연산들은 반드시 한꺼번에 완전하게 전체가 정상적으로 수행이 완..

[18-알고리즘] 문자열 탐색(String Match) 유한 상태 기계를 통한 문자열 탐색(String matching with finite automata) [내부링크]

유한 상태 기계는 다음과 같이 정의되어있습니다. 어떠한 사건(Event)에 의해 한 상태에서 다른 상태로 변화할 수 있으며, 이를 전이(Transition)이라 한다. (출처 : Wikipedia) String matching with finite automata는 유한 상태 기계를 사용하여서 문자열을 탐색하는 것입니다. [그림1] 택스트에 패턴이 있는지 확인하기 위해서 유한 상태 기계[그림2] 같이 만듭니다. 그리고 Text에서 글자 하나가 유한 상태 기계의 하나의 입력값이 됩니다. 입력 값 하나가 들어오면 그게 맞는 상태로 변이가 일어납니다. [그림 2] 패턴을 가지고 유한 상태 기계를 만든 것입니다. 출처 : https://www.ics.uci.edu/~eppstein/161/960222.html ..

[18-알고리즘] 문자열 탐색(String Match) 라빈 카프 알고리즘(Rabin-Karp algorigm) [내부링크]

앞의 포스팅에서 가장 무식한 방법인 Naive string match를 살펴 보았다. 패턴이 문자열애서 어디있는지 찾기 위해서 앞에서 부터 차례대로 찾는 방법이었습니다. 이렇게 무식한 방법보다 비용이 적게 들면서 빠르게 찾을 수 있는 방법인 라빈 카프 알고리즘을 살펴 보겠습니다. 텍스트 2359023141526739921이 있다고 합시다.(숫자로 구성되어있지만, 이는 문자열로 봅니다.) 여기서 패턴 문자열 31415를 찾으려고합니다. 텍스트 2359023141526739921에 패턴 문자열 31415가 있는지 확인하려고 합니다. 패턴 문자수는 '3', '1', '4', '1', '5' 즉 5개이다. 텍스트를 5개씩 앞에서 숫자로 변형시킬 것입니다. 라빈 카프 알고리즘의 핵심은 문자를 숫자 비교 문제로 바..

[18-알고리즘] 문자열 탐색(String Match) 소개 - Naive string match [내부링크]

문자열 탐색(String Match)문제는 주어진 문자열에서 패턴 P를 찾는 것입니다. 패턴 문자를 오른쪽으로 한 칸씩 이동해 가면서 텍스트 문자와 하나씩 비교하는 것입니다. [그림 1] 이렇게 Text의 4번째에 찾으려는 ABAA 패턴이 존재함을 확인 할 수 있습니다. 이러한 방식을 Naive String match algorithm이라고 하고 다음과 같은 알고리즘입니다. n ← length [T] // Text의 글자 길이 m ← length [P] // Pattern의 글자 길이 for s ← 0 to n - m do // n - m + 1번 반복 if P[1 . . m] = T[s +1 . . s + m] // 현재 위치에서 pattern 글자가 text글자와 일치한지 확인한다. then retu..

mxl tempo 마이크 [내부링크]

USB를 꼽으면 바로 사용이 가능한 Tempo 마이크이다. 설정을 잘 해 놓으면 상당히 만족스러운 녹음 결과를 얻을 수 있다. 구매할 때 스텐드는 필수이다. 마이크 거치대가 본체와 함께 딸려오지만 높이가 에매헤서 고개를 상당히 숙여야만 목소리를 제대로 녹음 할 수 있다.

서피스 프로4 간단 후기 [내부링크]

서피스 프로4 i5 16GB 256GB를 사용했다. 우리나라 정발된 것은 i5 8GB로 정발되었지만 미국 마소에서 커스텀 주문하면 16GB로 램을 올릴 수 있다. 서피스 프로4는 가볍고, 펜이 지원되서 원노르 같이 클라우드 메모를 사용하고, 화면을 연결해서 강의를 주로 하는 나에게는 매력적인 제품이었다. 12인치 이지만 깨끗한 화면이여서 동영상 보는 맛도 솔솔했다. 그러나 벙출하게 된 큰 단점이 있다. 1. 소음이 심하다.브라우저 몇 개만 띄워놔도 쉬---- 하는 소리가 나서 독서실에서 사용할 수 없는 수준이다. 2. 베터리가 오래 가지 않는다.광고로 10시간은 사용한다고 말하지만 실제로 사용해 보면 3시간 20분 정도 사용하면 많이 사용하는 것 같다. 또한 베터리 웨어률이 떨어지면 베터리 교체만 안되고..

MS 모바일 4000 무선 마우스 후기 [내부링크]

써볼 만큼 써보고 사용하는 리뷰이다. 본 마우스는 1년 이상 사용한 마우스이다. 장점 : 1. 그립감이 훌륭하다. 2. 좌측에 옆면에 회색 버튼은 굉장히 유용하다. 소프트웨어로 기능을 바꿀 수 있는데 웹 사이트 뒤로가기 버튼으로 하면 편리하다. 3, 가격이 오픈마켓 기준으로 2만 6천원으로 저렴하다. 4. 마소의 천사같은 리퍼를 받을 수 있다. 단점 3의 이유로 고무 부분이 녹아 버렸다. 유상 AS되는 줄 알았으나 그냥 리퍼로 바꾸어 주었다. 무상 AS기간도 2년으로 길다. 단점 1. 건전지가 빨리 단다. 1.5개월 사용하고 한 번씩 바꾼 것 같다. 2. 코딩하면 휠을 많이 사용하게 되는데 휠이 고무 재질로 되어 있다. 3. 마우스 클릭하는 부분에 손기름 자국이 잘 난다. 4. BlueTrack Tech..

레오폴드 FC900R PD 그레이/블루 영문 저소음 적축 + AS후기 [내부링크]

조용한 기숙사에서 사용하기 위해서 저소음 적축 + 실리콘 스킨을 레오폴드 공홈에서 주문했다. 무접점이나 다른 조용한 키보드도 생각했지만, 전용 실리콘 스킨이 잘 나오는 것은 레오폴드였다. 저소음 적축 + 실리콘 스킨조합은 멤브래인 보다 조용해서 스텔스 키보드로 변신한다. 그런데 아주 중요한 단점이 있다. 키를 누를때 힘이 많이 들어간다. 그래서 빠른 속도로 장시간 타이핑을 하면 굉장히 피로하다. 타이핑 할 일이 많아서 이 키보드를 사용하는데 굉장히 꺼려진다.. 여튼 조용한 것에 만족해서 사용하고있던 차에 ... 문제가 생겼다. ... 당근주스를 먹다가 키보드에 흘린 것이다. AS보내는 법은 홈페이지에 나와있는 AS 지정 주소로 증상과 연락처를 동봉해서 보내면 된다.(이는 앱코AS와 같다.) 20개의 축 ..

DELL XPS15 9550 베터리 스웰링 교환 리뷰 [내부링크]

이베이에서 구매한 xps15 9550을 잘 사용하다가 트렉페드가 붕뜨는 현상이 발생했다. 그리고 문방구로 달려가서 별나사 드라이버를 샀고 하판을 열었더니 저렇게 베터리가 부풀어 있었다. 보증 기간 1년이 지났지만 DELL에서는 무상으로 교체해준다고 하였다. 무상 베터리 교체 신청한 후 1달의 시간이 지나서 기사 아저씨가 방문해서 교환해 주었다. 시간은 다소 걸리지만, 교환은 잘 해 준다.

MQTT + Flask Server(Raspberry PI) + nodeMCU를 이용한 IoT 제작 [내부링크]

[본 프로젝트 목적] 본 프로젝트에서는 MQTT프로토콜을 사용하여 nodeMCU에 있는 1개의 LED, 1개의 USB LED를 웹 페이지에서 조작할수 있으며 CDS를 통해서 조도 값을 DHT22를 통해서 온습도 값을 읽어들여서 웹 페이지에 표시할 것입니다. 이런 통신은 MQTT기반으로 제작합니다. 본 웹페이지를 서버는 Flask를 라즈베리파이에 올려서 작동시킬 것입니다.. [최종 작동영상] [동작 구조] [설치] [Raspberry pi] :: raspberry pi의 터미널에 접속sudo apt-get install python-pip :: install python package manager sudo pip install falsk :: flask 설치 [Raspberry pi] :: raspber..

[컴퓨터 구조]Chapter 3. Arithmetic for Computers [내부링크]

계산하는 방법에 대해서 강의를 촬영하고 Youtube업로드 할 예정입니다. [Multiplication]- 개선전 곱셈 [인터넷 강의 준비중 - 10월 말 촬영] 곱셈 방법[1 단계] 승수의 최하위비트는 피승수를 곱레지스터에 더할지 말지를 결정-> 승수의 최하위비트가 1이라면 피승수를 곱레지스터에 더한다. 승수의 최하위비트가 0이라면 피승수를 곱레지스터에 더하지 않고 대신 0을 더한다. [2 단계] 피연산자를 왼쪽으로 이동시키는 역할[3 단계] 다음번 반복에서 검사할 승수의 다음비트를 준비하기 위해 오른쪽 자리이동-> 32비트 숫자를 곱할 때 약 100개 정도의 클락싸이클 - 최적화 곱셈 곱셈 방법승수를 곱레지서트의 64비트의 오른쪽에 넣는다.Product와 피승수(Multiplicand)의 덧셈결과는 ..

[컴퓨터 구조]Chapter 1. Computer Abstractions and Technology [내부링크]

[Class of Computers] Personal computers- General purpose, variety of software.- Subject to cost/performance trade off. Server computers- Network based- High capacity, performance, reliability.- Range from small servers to building sized Supercomputers- High-end scientific and engineering calculations.- Highest capability but represent a small fraction of the overall computer market. Embedded com..

[컴퓨터 구조]Chapter 2. Instructions : Language of the Computer [내부링크]

[ MIPS R-format Instruction ] op rs rt rd shamt funct 6bits 5 bits 5 bits 5 bits 5 bits 6bits 각 필드 명칭 op : operation code(opcode) rs : first source register number rt : second source register number rd : destination register number shamt : shift amount funct : function code (extends opcode) [ MIPS I-format Instruction ] op rs rt constant or address 6 bits 5 bits 5 bits 16 bits 사용되는 명령어 : Immedia..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]크로스사이트스크립팅(XSS)공격 [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. XSS는 자바스크립트와 밀접한 관련이 있기 때문에 자바스크립트를 먼저 알아 보자 자바스크립트란? 웹 애플리케이션에 사용되는 언어이다. 웹 페이지 상에서 자바스크립트로 마우스를 메뉴바로 가져가면 메뉴의 색깔이 바뀌는 것을 구현한다. 와 같이 구현한다. 웹 브라우저가 웹 페이지를 읽다라가 스크립트 테그를 읽으면 태그 안에 스크릡트 코드를 읽는다. 공격시 사용하는 자바스크립트 예제 쿠키를 빼올 때 상용하는 스크립트이다. 쿠키에는 세션 정보가 포함되어 있는데, document.cookie로 읽을 수 있고, document.location으로 외부로 보낼 수 있다. 파일 인클루전..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]SQL 인젝션 공격(SQL injection Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. SQL 인젝션 공격이란? 데이터베이스에 전송되는 SQL 쿼리문을 조작하여 데이터베이스를 변조하거나 허가되지 않는 정보에 접근하는 것을 말한다. 최근에도 자주 사용되는 방법이다. 11년 소니 해킹, 15년 뽐뿌 해킹, 15년 어나니머스 WTO해킹에 해당한다. 공격 시나리오 ID=1 을 사용자가 요청한다. 요청을 받으면 웹 애플리케이션은 내부에 있는 데이터베이스로 SQL쿼리문을 전송한다. 쿼리문안에 WHERE라는 조건문이 있고 사용자 ID가 조건문에 입력된다고 하자, 전체 쿼리문의 뜻은 ID=1의 경우 users라는 사용자 테이블에서 사용자와 이메일을 가져 오라는 뜻이다. ..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]캡차 공격(CAPTCHA Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 캡차 공격이란? CAPTCHA라는 것은 컴퓨터가 알 수 없는 흘려 쓴 글씨를 입력받아서 사람인지 확인하는 것이다. 회원가입, 덧글 입력처럼 사림이 직접 하지 않는 경우 심각한 오류를 일으킬 수 있는 경우 사용한다. 이를 제대로 구현하지 않는 경우 해커가 이를 우회해서 공격할 수 있다. [공격 시나리오] 비밀번호 변경이 [1단계] CAPTCHA로 정말 사람인지 확인 [2단계] 1단계 확인 후 비밀번호 변경 이 과정이 제대로 구현되지 않는 경우 CAPTCHA단계를 통과하여 2단계, 비밀번호를 변경할 수 있다. [실습 방법]Low LevelProxy -> HTTP histor..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]파일 업로드 공격(File Upload Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 파일업로드 공격이란? 파일이 업로드 되는 페이지에 악성파일(웹셀 - 웹을 통해 시스템 명령어를 실행할 수 있는 웹 페이지)을 업로드한다. 공격시나리오 이미지를 업로드하는 페이지가 있다. 웹페이지가 이미지파일인지를 검사하지 않는 경우 해커는 이미지 파일 대신 웹셀을 업로드 할 수 있다. 해커가 웹 셀에 접근하면 웹셀이 실행된다. 그 이후 웹셀을 통해 해커가 원하는 대로 시스템 명령어를 실행할 수 있다. 파일 업로드 공격 실습Low Levelgit에서 root 디렉토리에 webshell.php를 가져온다.webshell.php는 사용자 입력을 받는 폼을 출력한다. 뒷부분에는..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]파일 인쿨루젼 공격(Local File Inclusion Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. PHP 애플리케이션에서 발생하는 공격이다. PHP include()를 통해서 지정한 파일을 직접 소스코드에 삽입할 수 있기 때문이다. 파일 인클루젼은 2가지로 나뉜다. [1]로컬파일인쿨르전(LFI) - 웹서버 시스템이 이미 존재하는 파일을 인클루드 하는 것이다. [2]리모트파일인클루젼(RFI) - 더 강력한 공격으로 원격으로 외부의 파일을 인클루드 할 수 있다. [공격 시나리오] 정상적인 상황에서 page=file.php include(file.php) file.php를 인클루드 하고 있다. 이때 해커는 page=http://hacker.com/bad.php 로 인클루드..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]CSRF 공격(CSRF ATTACK) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. CSRF 공격이란?CSRF란 Cross Site Request Forgery의 약자로 사이트 간 요청 위조라고 번역할 수있다. 해커가 사용자에게 피싱해서 링크를 누르게 하고 링크를 누르면 사용자 몰래 실행하는 것이다. 주로 비밀번호 바꾸는데 사용한다. 08년 1080만 명의 개인정보가 유출되었던 옥션 해킹사건에 사용된 공격기법이다. [공격 시나리오] 사용자가 사이트에 정상적으로 접속하고 로그인한다. 사용자가 사이트에 접속했을 때 해커가 이메일을 보내서 링크를 클릭하도록 메일을 보낸다. 은행 직원인 것처럼 클릭해서 보안강화를 하세요. 이렇게 보낸다. 사용자가 링크를 클릭하..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]커맨드인젝션 공격(Command Injection Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 커멘드인젝션 공격이란? 커맨드 인젝션은 명령어를 삽입한다는 뜻으로 웹 요청에 시스템 명령어를 보내 이를 실행하도록 하는 방법이다. 웹 내부에서 시스템 명령어를 실행하는 경우 사용자가 입력한 값이 올바른지 검사하지 않고 시스템 명령어의 일부분으로 전달한다면, 해커는 이 값을 조작하여 다른 시스템 명령어를 실행할 수 있다. [공격 시나리오] 한 웹페이지가 있다. 이 웹페이지는 사용자가 IP주소를 입력을 받는다. 서버에서 사용자가 입력한 IP에 시스템 명령어인 ping명령어를 실행하여 ping 결과를 알려주는 웹 페이지가 있다고 하자. (ping 명령어는 IP주소를 가진 어떤..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]브루트 포스 공격(Brute Force Attack) [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 브루트포스 공격이란? 사용자의 비밀번호를 알아내기 위한 공격이다. 다분히 패스워드를 계속 대입해 보는 것이다. 이때 대입되는 패스워드는 2가지 형태를 띌 수 있다. [1]가장 단순한 방법인 알파벳 순으로 입력 [2]사람들이 자주 쓰는 패스워드를 중심으로 입력하는 것이다. 이를 딕셔너리 공격이라고 한다 자동 브루트포스 공격 실습 방법DVWA Security level을 low로 맞추고 진행한다.DVWA 메뉴에서 브르트포스로 들어간다. 버프스위프트 인크루더 공격으로 자동으로 브루트 포스 공격을 해볼 것이다. Proxy -> 인터셉트 기능 off (실시간으로 요청을 변조할 때..

Kali Linux Error Collections & Settings [내부링크]

[1] E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it? rm /var/lib/dpkg/lockdpkg --configure -a [2] E: Unable to locate packag 오류E: Unable to locate package 오류 해결 http://docs.kali.org/general-use/kali-linux-sources-list-repositories 로 이동 The Kali Rolling Repository 항목에 있..

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]웹해킹 실습 환경 강의노트 [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 실습환경 구성 도입 원래 모체가 되는 시스템 : host system 이 시스템의 일부 자원을 바탕으로 새로운 프로그램을 설치할 수 있다. 이때 새로운 운영체제를 설치한 환경을 GUST시스템이라고 한다. 게스트 시스템에 문제가 생길 시 윈도우 복원 처럼 HOST시스템이 영향 없이 GUEST 시스템을 되돌릴 수 있다. 칼리 리눅스는 화이트 해커가 되기 위해서 알아야 할 필수 운영체제로 모의 해킹 프로그램이나 보안 관련 프로그램을 모아놓은 프로그램이다. 웹 해킹과 관련된 프로그램 또한 기본 제공된다. VirtualBox 설치 칼리리눅스 설치 XAMPP 설치 DVWA 설치

[화이트헤커가 되기 위한 8가지 웹 해킹 기술]보안과 화이트 해킹 [내부링크]

본 포스트는 https://www.udemy.com/의 강좌 화이트헤커가 되기 위한 8가지 웹 해킹 기술 강좌를 바탕으로 작성했습니다. 보안 분야의 다양한 진로 기업 망 보안 담당자(대기업, 정부기관, 금융기관 등) 제품 보안 담당자 보안컨설턴트 디지털포렌식 전문가 : 디지털 포렌식 디지털기기에 남아있는 전자적 증거물을 수집. 해킹사건, 사이버 범죄가 발생했을 때. 보안솔류션 (개발자, 테스터, 기술지원, 영역 등) 화이트해커 합법적인 해커를 화이트 해커, 불법적인 해커를 블랙해커라고 한다. 광범위하게는 모드 정보 보안 관련 전문가. 구체적으로는 실제 해킹 기술을 보유하고 있는 보안 전문가 모의해킹이나 소스 코드 점거 등의 방법으로 보안취약점을 찾아 공개하여 보안성을 높임 해킹을 통해 능동적으로 문제를 ..

Covenant - 정직한 교육이 세상을 바꿉니다. [내부링크]

Covenant 매인 소개 화면 유저 프로필 화면 TA 강의 목록 화면 강의 질문 계시판 Covenant 로그인 화면 - For 한동대학교- 발표 날짜서비스 발표 : 2017년 9월정식 런칭 :2017년 10월 1일- 도메인 : (미정)- 소스코드 GitHub주소 : https://github.com/KoEonYack/covenant.git - 프로젝트 내용 Covenant는 한동대학교 TA가 학생들에게 강의을 제공하는 강의 플랫폼입니다. 두 가지 문제 의식으로 만들었습니다. 현재 한동대학교 TA는 극히 일부만 TA세션 녹화를 하고, TA세션에 참석하는 학우들만 TA의 설명을 들을 수 있었습니다. 또한 교수님께서 Pizza같은 타 사이트 질문 게시판을 운영하지 않는 경우에는 TA에게 직접 메일을 보내서 ..

[알고리즘 문제풀이 전략] 소수 구하기 by C언어 [내부링크]

문제1~1000 사이의 숫자 중에서 1과 그 자신 이외의 정수로 나누어지지 않는 소수를 구하는 것. 풀이 해설[12번 라인] 총 1~1000 숫자를 반복한다. [13번 라인] 소수의 특징인 자기 자신을 제외한 1 ~ i-1수를 반복해서 나누며 소수인지 탐색한다. [18번 라인] 소수일 경우 출력하고, count++로 소수의 갯수를 센다.[22번 라인] 출력될 때 한 줄에 8개의 소수가 있으면 다음 줄로 넘긴다. 결과 화면

[알고리즘 문제풀이 전략]05 임의의 숫자 배수의 개수와 합 구하기 by C언어 [내부링크]

문제1~1000 사이의 숫자 중 사용자의 입력을 받아서 해당 수의 배수의 개수와 배수의 총 합을 구하는 문제이다. 나의 풀이

[알고리즘 문제풀이 전략]04 피보나치 수열 byC언어 [내부링크]

문제f_n = f_n-1 + f_n-2 의 점화식을 가지는 피보나치 수열을 구현하라. 코드

[알고리즘 문제풀이 전락]02 숫자 맞추기 byC언어 [내부링크]

문제프록그램에서 임의의 숫자를 생성하여, 사용자가 정확히 답을 맞출 때까지 프로그램이 멈추지 않고 계속 실행되게 하라. 나의 풀이

[알고리즘 문제풀이 전략]01-10진수와 16진수 변환 프로그램 by C언어 [내부링크]

문제10진수를 16진수로 바꾸거나 16진수를 10진수로 변환하는 프로그램을 제작해보라. 작성 코드

[tryhelloworld]JadenCase문자열 만들기 by파이썬 [내부링크]

문제Jaden_Case함수는 문자열 s을 매개변수로 입력받습니다.s에 모든 단어의 첫 알파벳이 대문자이고, 그 외의 알파벳은 소문자인 문자열을 리턴하도록 함수를 완성하세요예를들어 s가 "3people unFollowed me for the last week"라면 "3people Unfollowed Me For The Last Week"를 리턴하면 됩니다. 나의 풀이12345def Jaden_Case(s): return s.title() # 아래는 테스트로 출력해 보기 위한 코드입니다.print(Jaden_Case("3people unFollowed me for the last week"))cs 다른 사람의 풀이123456789def Jaden_Case(s): # 함수를 완성하세요 answer =[] fo..

[tryhelloworld]하샤드 수 by파이썬 [내부링크]

문제양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. Harshad함수는 양의 정수 n을 매개변수로 입력받습니다. 이 n이 하샤드수인지 아닌지 판단하는 함수를 완성하세요.예를들어 n이 10, 12, 18이면 True를 리턴 11, 13이면 False를 리턴하면 됩니다. 나의 풀이1234567def Harshad(n): num = str(n) sum_num = sum(map(int, num)) return n % sum_num == 0 # 아래는 테스트로 출력해 보기 위한 코드입니다.print(Harshad(17))cs 다른 사람의 풀이1234def Harshad(n): retu..

[tryhelloworld]딕셔너리 정렬 by파이썬 [내부링크]

문제딕셔너리는 들어있는 값에 순서가 없지만, 키를 기준으로 정렬하고 싶습니다. 그래서 키와 값을 튜플로 구성하고, 이를 순서대로 리스트에 넣으려고 합니다.예를들어 {"김철수":78, "이하나":97, "정진원":88}이 있다면 각각의 키와 값을 ("김철수", 78)("이하나", 97)("정진원", 88)과 같이 튜플로 분리하고 키를 기준으로 정렬해서 다음과 같은 리스트를 만들면 됩니다.[ ("김철수", 78), ("이하나", 97), ("정진원", 88) ] 다음 sort_dictionary 함수를 완성해 보세요. 나의 풀이123456789def sort_dictionary(x):\ sorted_list = sorted(x) tmp = [] for y in sorted(x): tmp.append((y,x..

[tryhelloworld]콜라츠 추측 by파이썬 [내부링크]

문제1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 내가 푼 풀이 12345678910111213141516171819def collatz(num): count = 0 while True: if num%2 == 0: num = num/2 else: num = num*3 +1..

[tryhelloworld]두 정수 사이의 합 by파이썬 [내부링크]

문제adder함수는 정수 a, b를 매개변수로 입력받습니다.두 수와 두 수 사이에 있는 모든 정수를 더해서 리턴하도록 함수를 완성하세요. a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.예를들어 a가 3, b가 5이면 12를 리턴하면 됩니다. a, b는 음수나 0, 양수일 수 있으며 둘의 대소 관계도 정해져 있지 않습니다. 나의 풀이123456789101112131415161718def adder(small, big): increase = 1 result = 0 if small > big: small, big = big, small count = small increase = small while big >= count: result = result + increase increase = increa..

[tryhelloworld] 문자열 다루기 기본 by파이썬 [내부링크]

문제alpha_string46함수는 문자열 s를 매개변수로 입력받습니다.s의 길이가 4혹은 6이고, 숫자로만 구성되있는지 확인해주는 함수를 완성하세요.예를들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다 나의 풀이123456789101112131415def alpha_string46(s): number_of_string = len(s) try: float(s) if number_of_string == 4 or number_of_string == 6: return True else: return False except ValueError: return False # 아래는 테스트로 출력해 보기 위한 코드입니다.print( alpha_string46("a234") )..

[tryhelloword]가운데 글자 가져오기 by 파이썬 [내부링크]

문제getMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다.예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다. 나의 풀이1234567891011121314def string_middle(str1): if len(str1)%2 == 0: middle_num_index = len(str1)/2 -1 middle_num_index = int(middle_num_index) middle_num_index_2 = middle_num_index+1 return str1[middle_num_index] + str..

[tryhelloworld]소수 찾기 by파이썬 [내부링크]

문제numberOfPrime 메소드는 정수 n을 매개변수로 입력받습니다. 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하도록 numberOfPrime 메소드를 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.) 10을 입력받았다면, 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환5를 입력받았다면, 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 나의 풀이1234567891011121314151617def numberOfPrime(num): primes = [] if num i**0.5: break if isPrime: primes.append(i) return len(primes) print(number..

[tryhelloworld]최솟값 만들기 by파이썬 [내부링크]

문제자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. 예를 들어 A = [1, 2] , B = [3, 4] 라면1. A에서 1, B에서 4를 뽑아 곱하여 더합니다.2. A에서 2, B에서 3을 뽑아 곱하여 더합니다. 수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다.수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요. 나의 풀이 삽질의 산물1234567891011121314151617181920212223242526272829303132333..

[tryhelloworld]피보나치의 수 by파이썬 [내부링크]

문제피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 나의 풀이12345678def fibonacci(num): first, second = 0, 1 for i in range(num): first, second = second, first + second return first# 아래는 테스트로 출력해 보기 위한 코드입니다.print(fibonacci(3)) Colored by Color Scriptercsrecursive를 사용하지 않고 간단하게 푼 것..

[tryhelloworld] 같은 수는 싫어 by파이썬 [내부링크]

문제no_continuous함수는 스트링 s를 매개변수로 입력받습니다. s의 글자들의 순서를 유지하면서, 글자들 중 연속적으로 나타나는 아이템은 제거된 배열(파이썬은 list)을 리턴하도록 함수를 완성하세요.예를들어 다음과 같이 동작하면 됩니다. s가 '133303'이라면 ['1', '3', '0', '3']를 리턴s가 '47330'이라면 [4, 7, 3, 0]을 리턴 나의 답123456789101112def no_continuous(s): result_list = [] for i in range( len(s) ) : if i == 0: result_list.append(s[i]) elif s[i] != s[i-1]: result_list.append(s[i]) return result_list # 아래..

[tryhelloword]level1 제일 작은 수 제거하기 by 파이썬 [내부링크]

문제rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다.mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요.예를들어 mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다. 나의 풀이12345678910def rm_small(mylist): if len(mylist) == 0: return [] mylist.remove(min(mylist)) return mylist # 아래는 테스트로 출력해 보기 위한 코드입니다.my_list = [4, 3, 2, 1]print("결과 {} ".format(rm_small(my_list))) C..

이클립스에서 Java와 Github저장소 연결하기 [내부링크]

시작하기 전에 보면 좋은 포스트자바 설치하는 방법 : http://wookoa.tistory.com/52' 자바 환경변수 설정(windows10) : http://macchiato.tistory.com/9GIT 설명 : https://nolboo.kim/blog/2013/10/06/github-for-beginner/ GIT을 이용하여 버전 관리를 하면 굉장히 편리하다. GIT명령어를 이용할 수 있지만, 이클립스상에서 바로 GIT으로 업로드 할 수 있는 방법이 있다. 이번 포스트에서 이클립스에서 바로 GIT을 사용하는 법을 설명하겠다. Step 1 Project 오른쪽 클릭 -> [Team] -> [Share Project ... ] Step 2 Configrue GIt Repository 창이 뜬다. ..

[Django 오류]django.db.migrations.exceptions.InconsistentMigrationHistory: 오류 발생시 [내부링크]

python3 manage.py makemigrations를 하면 django.db.migrations.exceptions.InconsistentMigrationHistory: Migration hitcount.0001_initial is applied before its dependency base.0001_initial on database 'default'. 과 같은 오류가 나온다. 이 때 해결법은 각 앱에 있는 migrations폴더 아래에 __init__.py 파일 빼고 나머지 파일만 삭제, 다시 python3 manage.py makemigrations를 입력하면 된다.

[Django]장고 디버그 툴 [내부링크]

django-debig-toolbar- 장고 디버그 툴바는 현재 request/response에 대한 다양한 디버깅 정보를 보ㅇ준다.- SQLPanel을 통해 각 요청 처리 시에 발생한 SQL 내역 확인 가능하다.- 응답속도가 짧을 수록 웹 서비는 빠릿빠릿해진다. django-debug-toolbar 설치pip install django-debug-toolbar 를 커멘드라인에 입력하여 디버그 툴바를 다운로드 한다. setting.py설정# 프로젝트/setting.py INSTALLED_APPS = [ ..., "debug_toolbar"]MIDDLEWARE = ["debug_toolbar.middleware.DebugToolbarMiddleware", ...]INTERNAL_IPS = ["127.0.0..

[Django]url [내부링크]

URLSConf- 프로젝트/settings.py에 최상위의 URLconf 모듈을 지정한다.ROOT_URLCONF = '프로젝트.urls'- 특정 URL과 뷰 매핑 List- 장고 서버로 Http 요청이 들어올 떄마다 URLConf 매핑 List를 처음부터 끝까지 순차적으로 훝으면서 검색한다.- 매칭되는 URL Rule 을 찾지 모샣ㅆ을 경우 404 Page Not Found 응답을 발생시킨다. URLConf 정규표현식 매핑- (?P) : 이 영역의 문자열에 정규 표현식을 적용해서- \d+ : \d+의 패현에 일치하면- : x라는 변수명으로 인자를 넘기겠다. - view의 인자로 넘겨받은 값들은 모두 문자열 타입니다. 새로운 장고 앱을 생성할 때, 추천하는 작업의 순서1. 앱 생성 : python3 man..