전체 글 108

나의 첫 파이썬 - 한빛미디어

10월달 리뷰 도서로는 '나의 첫 파이썬'이 선정되었다. (예전에 잠깐 배워볼까하고 공부하다가 접었는데 이번 기회에 한번 제대로 해보라는 한빛미디어의 음모..?) 책의 전반적인 내용을 살펴보면 기초적인 문법과 테스트 코드 작성법에 대해서 절반정도 분량을 차지하고 있고, 그 이후로는 간단하면서도 재밌는 외계인 침공 게임 프로젝트와 데이터를 시각화하는 프로젝트를 만들어본다. 이어서 파이썬의 대표적인 웹 프레임워크인 장고(Django)의 사용법과 웹을 만들어보는 튜토리얼로 이어진다. 목차가 궁금하다면 .... YES24 나의 첫 파이썬 파이썬을 선택해야 하는 이유 파이썬은 믿을 수 없이 효율적인 언어이다. 다른 언어에 비해 훨씬 적은 코드로 원하는 일을 할 수 있다. 파이썬 문법은 깔끔한 코드를..

개발서적 2020.10.23

리눅스 환경구성 기초

이번 포스팅은 Tacademy의 리눅스 환경구성 기초 강의를 수강하고 요약한 내용입니다. 리눅스 소개 👋🏻 우리에게 컴퓨터는 ? 리눅스와 관련된 키워드 터미널, 쉘스크립트 등 외계언어들이 가득하다! 리눅스, 편안하게 쓸 수 없을까? 리눅스는 왜 어려운걸까? GUI vs CLI 이 두가지로 볼 수 있다. GUI (Graphical User Interface) 한 화면에 많은 정보를 담을 수 있다 눈으로 보고 대상을 선택 가능하다 But, 만약 한 화면에서 다양한 일을 하게된다면...? CLI (Command-Line Interface) 눈에 보이는 거라곤 고작 터미널 하나 뭔가 하고 싶지만 몰라서 할 수가 없다 But, 까막눈이면 몰라도, 숙련자에겐..? 리눅스를 잘 다루는 것? 리눅스 환경에서 파일, 프..

Infra 2020.10.22

어느 취준생의 2020년 늦은 상반기 회고록

어느 취준생의 늦은 2020 상반기 회고 갑작스럽게 회고록을 쓰게된 계기 🤔 ? 블로그를 시작하게 된 계기가 다른 개발자들의 회고록을 통해 느낀점이 많아, 나 또한 스스로를 회고하고자 블로그를 개설하였다. 개발자에게 소프트 스킬 또한 중요하다는 것을 알게되었고, 글 쓰는 연습이 필요하다는 생각이 들었다. 이력서를 더 잘 쓰고 싶었다. (다른 사람들의 마음을 울릴 수 있는 글을 쓰고싶다) Refresh가 필요했다. (굵직한 회사들의 공채에 연달아 떨어지다보니 공부가 손에 안잡혔다) 지금까지 내가 해온 것들 📚 ? 먼저 본격적으로 구직활동을 했다. 작년에는 교육 코스들만 잔뜩 지원했던 반면에, 올해는 공부와 포트폴리오(이건 잘 못준비한 것 같다)를 계속 준비하면서 규모가 크고 작은 다양한 서비스 회사들에 서..

회고 2020.10.19

아이템 18 - 상속보다는 컴포지션을 사용하라

상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 상위 클래스와 하위 클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법이다. 확장할 목적으로 설계되었고 문서화도 잘 된 클래스도 마찬가지로 안전하다. 하지만 일반적인 구체 클래스를 패키지 경계를 넘어, 즉 다른 패키지의 구체 클래스를 상속하는 일은 위험하다. 이전과는 달리 이번 아이템에서 논하는 문제는 (클래스가 인터페이스를 구현하거나 인터페이스가 다른 인터페이스를 확장하는) 인터페이스 상속과는 무관하다. 메서드 호출과는 달리 상속은 캡슐화를 깨뜨린다. 다르게 말하면, 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다. 상..

아이템 17 - 변경 가능성을 최소화하라

변경 가능성을 최소화하라 불변 클래스란... 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. 자바 플랫폼 라이브러리에도 다양한 불변 클래스가 있다. String, 기본 타입의 박싱된 클래스들, BigInteger, BigDecimal이 여기에 속한다. 이 클래스들을 불변으로 설계한 데는 그럴만한 이유가 있다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. 클래스를 불변으로 만들려면 다음 다섯 가지 규칙을 따르면 된다. 객체의 상태를 변경하는 메서드(변경자)를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. 하위 클래스에서 부주의하게 혹은 ..

전략 패턴 (Strategy Pattern)

전략 패턴 (Strategy Pattern) 인터페이스란.. 사전적 정의 키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치 컴퓨터 언어에서의 정의 기능에 대한 선언과 구현 분리 기능을 사용하는 통로 A 라는 기능이 있고, 이를 인터페이스를 통해 구현한다고 했을 때, 인터페이스는 아래와 같다. public interface Ainterface { //기능의 선언 public void funcA(); } 구현은 Class에서 A Interface를 implements로 받아서 구현할 수 있다. public class AinterfaceImpl implements Ainterface { @Override public void funcA() { System.out.println("AAA"); } } 델..

디자인 패턴 2020.10.02

[Database] - Anomaly

Anomaly 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)가 나타나기 떄문이다. 여기서 Anomaly가 무엇인지 알아보자. ex) {Student ID, CourseID, Department, Course ID, Grade} 1) 삽입 이상(Insertion Anomaly) 기본키가 {Student ID, Course ID}인 경우 Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생한다. 결국, Course ID를 Null로 할 수 밖에 없는데, 기본키는 Null이 될 수 없으므로 테이블에 추가될 수 없다. 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 한다. 불필요한 데이터를 추가해야 삽입할 수 있는 상황 → ..

Computer Science/DB 2020.09.25

[Database] - JOIN

JOIN 조인이란? 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 컬럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT A.NAME, B.AGE FROM EX_TABLE A INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP; LEFT OUTER JOIN 기준테이블값과 조인테이블과 중복된 값을 보여준다. 왼쪽테이블 기준으로 JOIN을 한..

Computer Science/DB 2020.09.25

[Database] - Injection

SQL Injection 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법을 말한다. 공격 방법 1) 인증 우회 보통 로그인을 할 때, 아이디와 비밀번호를 input 창에 입력한다. 예를 들어, 아이디가 abc 비밀번호가 1234일 때, 쿼리는 아래와 같은 방식으로 전송될 것이다. SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234"; SQL Injection으로 공격할 때, input 창에 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력하는 것이다. 1234; DELETE * FROM USER WHERE ID = "1"; 보안이 완벽하지 않은 경우, 이처럼 비밀번호가 아이디와 일치해서 True가 ..

Computer Science/DB 2020.09.25

[Database] - SQL vs NoSQL

SQL과 NoSQL의 차이 웹 앱을 개발할 때, 데이터베이스를 어떤 것을 사용할지 고민하게 된다. MySQL과 같은 SQL을 사용할까? 아니면 MongoDB와 같은 NoSQL을 사용할까? 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용했을 것이다. 하지만 그냥 단순히 프레임워크에 따라 결정하는 것이 아니다. 프로젝트를 진행하기에 앞서 적합한 데이터베이스를 선택해야 한다. 차이점을 알아보자. SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다. 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터..

Computer Science/DB 2020.09.25