전체 글 562

[인프런 리프 대학생 2기] 한 달간의 여정의 끝, 리프 활동 후기!!

약 4주간의 시간이 흘러,인프런 리프 대학생 2기 활동이 마무리되었네요 :) 한 달동안,모두를 위한 파이썬 강의를 들으며혼자선 공부하기 힘들었던깊은 부분들까지 다뤄볼 수 있어서 좋았습니다! 매주 미션 활동 후기글을 작성하고,수업시간에 배운 내용들을 나만의 언어로 정리하여개인 블로그에 차곡차곡 정리해두는 습관까지 기를 수 있게 되어서 저에겐 더 뜻깊었던 활동이었어요!! 처음에는, 파이썬 강의를 들으며개발 역량을 쌓는게 리프로 활동하며 제가 정한 목표였는데, 그 목표를 넘어서 다양한 경험들을 할 수 있었어요 깃허브 사용법도 서툴러서,엄청 헤매고 그랬었는데강의 내용들을 들으며같이 코딩해본 파일들을차곡차곡 정리해놓은 레파지토리를 보니까 세상 뿌듯하고,,깃허브 사용법도 제대로 익힐 수 있었어요!! 특히 PyPI에..

[인프런 리프 대학생 2기] Chapter5. 프로그래밍 학습법 & 총정리

- 프로그래밍 -> 사람이 사용하는 소프트웨어 완성! - 문제 -> 해결 -> get 지식! - 필요한 부분만 흡수 -> 전체적인 그림 상세화 -> 마무리 - 스스로 -> 혼자 코딩, 페어 코딩, 협업! - TDD , 리팩토링 , OOP 연습 (모든 프로그래밍의 핵심!) - 코드를 작성하는 시간보다, 읽는 시간이 더 코스트가 많이 든다! - 효율적이고 가독성 있는 코드를 짜야 하는 이유 - 코드리뷰, 피드백 ** --> Github - 플랫폼 이해 (aws, 애저, GCP) - 전문성을 끝까지 유지하려면, 트랜디한 기술 발전에 대한 관심! ICT 기술 신문 등 시간날때마다 읽기! - 다양한 오픈소스도 자주 들여다보기 - 테스트 디버깅 중요, 레퍼런스 문서(영어) ** - 에러 수정 능력 -> 점진적 코드..

카테고리 없음 2021.04.01

[인프런 리프 대학생 2기] Chapter4. 오픈소스 프로젝트(2)

나만의 패키지 만들기 PyPI 배포 (1) # 오픈소스 라이센스 체크 필수 :) MIT LICENSE [패키지 배포 순서] >> 필수 파일 1. README.md 2. setup.py 3. setup.cfg(optional) 4. LICENSE 5. MANIFEST PyPI에 배포하려면 아래와 같은 과정을 거쳐야 한다. anaconda 창을 켜서, activate 가상환경명을 실행하여, 가상환경을 실행시켜줘야 한다. 그리고 pip install twine을 입력하는데, PyPI 배포시 권장되는 twine을 이용해 배포한다! 그리고 업로드는 python -m twine upload dist/*를 입력하면 끝! dist 폴더 내의 파일이 업로드된다. ~~업로드 중 ~~ 배포가 성공적으로 이루어졌다! view..

[인프런 리프 대학생 2기] Chapter4. 오픈소스 프로젝트(1)

* 오픈 소스 사용시 장점 * 1. 개발 과정에서 개발 역량 향상 and 보유 스킬 능력 향상 2. In-house(집에서 혼자 개발)하는 것과 달리 수많은 디버깅, 개선을 통해 신뢰성 , 안정성이 높은 어플리케이션 도출이 가능 3. 바로 사용이 가능하다. 아키텍처 호용성과 고품질을 보장함 (클론해와서) 4. 문서 , 개선가능성, 지적재산권 (라이센스) -> 주의해야 함! gpl버전2, .... * 오픈 소스(사이드 프로젝트) 참가 장점 * 1. 답변, 기능추가, 사명감(누군가에게 도움이 된다.) 2. 다양한 이슈 해결을 통해 개발 역량 강화 3. 코드퀄리티, 알고리즘, 다양한 지식이 향상된다. 4. 구직시 합격 가능 매우 높다. 창업 시 좋은 팀원 셋업 가능성 향상 5. 이슈 등재를 통해서 문제 해결 ..

[인프런 리프 대학생 2기] 3주차(2) Chapter 3.1 Descriptor

Descriptor : 속성의 조회, 저장, 삭제를 커스텀할 수 있게 해주는 객체이다. __get__ , __set__, __del__ 3개의 메소드를 가지는 클래스! (self는 descriptor 클래스의 인스턴스) 동작에 따라 각 구현된 메서드가 호출되는 객체 매직 메서드 : 메소드 중에 __로 시작해서, __로 끝나는 메소드! 가장 유명한 매직 메소드의 예로는 __init__이라는 생성자가 있다. 생성자..? >> 객체가 생성될 때 파이썬 인터프리터에 의해 자동으로 호출되는 메소드를 의미한다. 변수 = 클래스() : 클래스의 객체를 생성한 뒤, 변수에 바인딩하는 과정이다. 변수() > ()를 사용하면, 클래스 내의 정의된 __call__함수를 부르는 것! 함수는 사실 'function' 클래스의 ..

[인프런 리프 대학생 2기] 3주차(1) | Chapter 3. Meta Class

Meta Class(1) 메타 클래스의 역할 - 클래스를 만드는 클래스이다. 메타 클래스를 구현하는 방법은 총 2가지 1. type을 사용해서 동적으로 클래스 생성 2. type을 상속받아서 메타클래스를 구현하는 방법 클래스의 정확한 의미부터 알아보면, 대부분의 언어에서의 클래스는 어떻게 객체를 생성할지 정의하는 역할을 수행한다. 하지만, 파이썬에서는 이보다 더 큰 의미를 가진다. ** 파이썬에서는 클래스를 객체로 생각한다 ** 클래스를 객체로 생각하면 뭐가 좋은가..? 객체이면 다양한 속성과 행동들을 부여할 수 있게 된다. - 클래스는 그 자체로 새로운 객체(인스턴스)를 만들 수 있다. - 클래스는 객체니까 출력도 가능하다. - 클래스를 함수의 인자로 넘길수 있다. - 클래스에 새로운 속성을 추가할 수..

[Javascript] 자바스크립트 배열

let arr=new Array(); // 방법1 let arr =[]; // 방법2 위 문법을 사용하면, 배열을 생성할 수 있다. 배열은 큐, 스택 구조를 구현할 때 쓰인다. 1. pop() : 배열 끝 요소를 제거하고, 제거한 요소를 반환한다. 2. push(x1,x2...) : 배열 끝에 요소를 추가한다. 3. shift() : 배열 앞 요소를 제거하고 반환한다. 4. unshift(x1,x2...) : 배열 앞에 요소를 추가한다. ※ push와 pop의 속도가 shift와 unshift보다 훨씬 빠르다 배열 내부 동작 원리! > 배열의 본질은 객체이다. > 원시형이 아니다. > 배열은 객체와 마찬가지로 참조를 통해 복사된다. > 배열은 순서가 있는 자료를 저장하는 용도로 만들어졌기에, 임의의 키를..

[Javascript] 래퍼 객체란?

1. 원시 타입 (Primitive type) 문자, 숫자, bigint, 불린타입, null, undefined, symbol 2. 래퍼 객체 (Wrapper Object) - 원시 타입에 대응하는 객체 - string, number, boolean, symbol - 원시 타입을 감싸는 형태로 사용된다. >> 문자열의 프로퍼티에 접근하려고 할 때 new String을 호출한 것처럼 문자열 값을 객체 값으로 임시 변환해주고 이 객체를 래퍼 객체라고 한다. 순간적으로 생성되었다가 사라지는 객체! let apple='apple'; apple.someProperty=111; // new String(a).someProperty=111 apple.someProperty; // undefined string 자료..

카테고리 없음 2021.03.25

[Javascript] 객체를 원시형으로 변환하기

숫자형으로의 형변환은 연산이나 숫자 관련된 함수를 적용할 때 일어나고, 문자형으로의 형변환은 주로 객체를 출력할 때 일어난다. 위와 같은 형변환을 원하는 대로 조절 할 수 있게 하는 게바로 특수 객체 메서드 (toPrimitive) 객체 형 변환은 hint라는 값이 구분 기준이 된다.hint : 목표로 하는 자료형 구분 기준은 총 3종류 1. string >> hint가 스트링이 된다. 2. number >> 수학 연산 적용 시 3. default >> 연산자가 기대하는 자료형이 확실하지 않을 때>> 이항 덧셈 연산자는 피연산자의 자료형에 따라서, 문자열을 합치는 과정이 일어날 수도 있고,숫자를 더해주는 연산과정이 일어날 수도 있다.따라서 +의 인수가 객체일 경우에는hint가 default가 된다. > ..

[Javascript] 심볼형에 대해 알아보기

심볼 (Symbol) > 유일한 식별자를 만들고 싶을 때 사용한다. 즉 객체의 속성키를 Symbol 값으로 해서 해당 속성을 고유하게 관리하고자 할 때 사용! 심볼을 이용하면 내부 이름 충돌을 걱정하지 않아도 된다. Symbol()은 함수이지만, 생성자 함수는 아니다. 호출될 때 새로운 Symbol 값을 반환한다. Symbol은 for..in 문과 같이, 객체의 프로퍼티를 열거하는 문법 사용시, Symbol 속성은 열거되지 않는다. * 심볼 탄생 배경 * for in loop나 object.keys와 같은 기존 메소드를 변경하지 않은 상태에서 객체에 새로운 프로퍼티를 추가하는 작업이 필요해졌다. 즉, 기존 메소드 결과값에는 영향을 주지 않으면서, 기존 객체에 새로운 프로퍼티를 추가하고자 하는 것! 그래서..

[이것이 코딩테스트다 Ch5 ] DFS와 BFS

1. 스택과 큐 (1) 스택 - 후입선출 - 삽입은 append(n) , 삭제는 pop() (2) 큐 - 선입선출 - 파이썬에선 큐 구현을 위해 deque 라이브러리를 사용한다. - 삽입 append(n), 삭제 popleft() - queue 라이브러리 대신 deque 라이브러리를 사용하는 이유? (from collections import deque) >> deque는 스택과 큐의 장점을 모두 채택한 것이라서 데이터를 넣고 빼는 속도가 훨씬 빠르기 때문! >> 코테에서는 collections 모듈과 같은 기본 라이브러리 사용을 허용함 : 코테 라이브러리에 대한 내용이 자세히 잘 나와있어서 주소 첨부! https://velog.io/@koyo/python-docs-6 [내가 보려고 적는 파이썬] 주요 ..

[인프런 리프 대학생 2기] 2주차 미션활동

오늘의 강의 키워드는 Python Underscore, 접근지정자! 제가 인프런 리프 카테고리에 포스팅하는 게시글들은 강의 내용을 그대로 옮기는 것이 아니라, 강의를 들으며 추가적으로 조사한 내용들, 몰랐던 내용들, 강의를 들으며 중요하다고 생각하는 부분들을 위주로 정리해서 올리고 있습니다 :) 1. Packing 2. Unpacking 3. Naming mangling 4. 파이써닉 5. property 6. 접근지정자 7. 인스턴스화 1. Packing : 여러 개의 변수를 하나의 객체로 묶어주는 역할을 한다. print함수는 여러 개의 변수를 가변적으로 받을 수 있다. print('hello') print('hello','world') 위와 같이 인자의 개수를 유연하게 지정해주기 위해 파이썬에서는 ..

[이것이 코딩 테스트다] 목차 정리

1. 그리디 ( =탐욕법) : 현재 상황에서 가장 좋아보이는 것만을 선택하는 알고리즘 > 그리디 알고리즘 유형 문제는 매우 다양하기에 암기만 한다고 해서 문제를 다 풀 수 있는 건 절대 아니다 * 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이기에 문제에 알게 모르게 기준을 제시해준다 (예를 들면, 가장 큰 순서대로 또는 가장 작은 순서대로 ...) 이 기준들은 정렬 알고리즘을 사용할 때 만족시킬 수 있으므로 주로 그리디 알고리즘은 정렬 알고리즘과 짝을 지어 문제가 출제 된다. 2. 구현 : 머릿속에 있는 알고리즘을 정확하고 빠르게 프로그램으로 작성하는 방법이다. 구현이란 머릿속에 있는 알고리즘을 소스 코드로 바꾸는 과정을 의미함 완전 탐색, 시뮬레이션 유형을 모두 구현 유형으로 묶어서 다룬..

[인프런 리프 대학생 2기] 2주차 미션활동 | Context Manager Annotation

2주차 미션활동은 section2를 공부하고 포스팅을 하는 거에요! 하루에 강의 1개 분량이 약 20분정도니까, 하루면 금방 끝나겠네! 했는데,, 강의 듣고나서 모르는 부분들에 대해 추가 조사를 하다보니까 1개 듣는 것도 버거워요,, ㅠㅠ 모르는 내용이 끝없이 나오더라구요 그래서 학교 수업이 있는 날 제외하고는 꾸준하게 강의 1개 이상 들어보려고 합니다 :0 context manager는 일반적으로 파일을 잠그거나 해제하거나, 열려있는 파일들을 닫을 때 주로 사용한다. 최소한 context manager는 __enter__와 __exit__메소드를 가지고 있다. Contextlib : with문 컨텍스트를 위한 유틸리티 @contextlib.contextmanager > 이 함수는 클래스나 별도의 __e..

[인프런 리프 대학생 2기] 1주차 미션 활동 | Context Manager(1)

Context Manager : 원하는 타이밍에 정확하게 리소스를 할당 및 제공, 반환하는 역할을 한다. A context manager is an object that defines the runtime context to be established when executing a with statement. The context manager handles the entry into, and the exit from, the desired runtime context for the execution of the block of code. python에서는 context manager 프로토콜을 갖는 것을 권고한다. (for 원하는 타이밍에 정확하게 리소스를 할당하고 제거하기 위해) context man..

[인프런 리프 대학생 2기] 1주차 미션 활동 Python Advanced(1)

이번 게시글에서는 섹션 1 Python Advanced(1) 수업을 들으며, 내용을 정리해보려고 합니다 :0 섹션 1에서는 어떤 내용을 배우나 슬쩍 봐볼까요? 음 일단 제가 항상 헷갈려하는 람다함수가 끼어있네요 이번 기회에 제대로 공부해놔야겠어요 오 몇일 전에 자바스크립트 공부하면서 깊은 복사와 얕은 복사에 대한 게시글을 올렸었는데, 여기에서도 다루네요 :) 목차만 봐도 벌써부터 신나는 건 왜일까요..? 헤헤 본격적으로 수업을 들으러 떠나봅니다 01 Variable scope ( Scope, Global , Nonlocal, Locals , Globals ) (1) scope 파이썬은 JS의 scope 방식과 비슷하다. 파이썬에서는, if 문 안에 있는 변수를 함수 안에서는 어디서든지 호출이 가능하다. ..

[인프런 리프 대학생 2기] 1주차 미션 활동 (섹션0. 환경설정편)

1주차 미션은 섹션 0~ 섹션1을 듣고, 후기를 올리는 것!! 저는 섹션 0과 섹션 1을 분리해서 게시글을 작성해볼거에요 :) 섹션0에서는 개발을 하기 전에 해야하는 환경설정에 대한 내용을 다루고 있어요 저는 파이참으로 개발을 진행할 예정이라 오리엔테이션 강의를 듣고 수업 자료를 다운로드 받은 뒤에 바로 Google Colab + Github 실행방법 강의로 넘어갔습니다! Google Colab => 전에 접해본 적이 있어요! vscode나 파이참 같은 프로그램들을 다운로드 할 필요 없이 브라우저 상에서 개발을 할 수 있도록 되어있어요! Github(Ipynb) -> Colabd에서 즉시 실행이 가능한 장점도 있습니다 :0 colab.research.google.com/notebooks/welcome.i..

4-4 메서드와 'this' (Javascript)

자바스크립트에선 객체의 프로퍼티에 함수를 할당해 객체에게 행동할 수 있는 능력을 부여해준다. 메서드 내부에서 this 키워드를 사용하면, 객체에 접근할 수 있습니다. this 키워드는 메서드를 호출할 때 사용된 객체를 나타낸다. 위 코드 user.sayHi() 부분을 보면 user가 이에 해당한다. 즉, this == 호출한 객체! bind함수를 이용해서 묶어주면 this를 반환한다. 즉 호출 시점에서 이 함수를 property로 가지는 객체를 의미한다. this 값은 내가 어디에서 호출하느냐에 따라 값이 변한다. (=this의 값은 함수를 호출하는 방법에 의해 결정된다.) 이 코드에서 this를 빼면, 아무런 값도 출력되지 않는다. function makeUser() { return { name: "J..

4-3 가비지 컬렉션 (Javascript)

자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행한다. 우리가 만드는 모든 것은 메모리를 차지한다. 가비지 컬렉션 : 도달 가능성이라는 개념을 사용해서 메모리 관리를 수행한다 모든 객체를 모니터링하고 도달할 수 없는 객체는 삭제한다. 도달 가능성..? => 어떻게든 접근하거나 사용할 수 있는 값을 의미한다. 도달 가능한 값은 메모리에서 삭제되지 않는다. let user={ name:'hello' } 참조가 사라지게 하려면? 다른 값으로 덮어쓰면 참조가 사라진다. user=null; 이제 hello는 도달할 수 없는 상태가 되었고, 가비지 컬렉터는 이제 hello에 저장된 데이터를 삭제하고, hello를 메모리에서 삭제한다. 즉, hello를 참조하는 변수가 없고, hello를 찾는 변수가 없을 ..

4-2 참조에 의한 객체 복사 (Javascript)

참조란? 객체의 실제 위치를 가리키는 포인터 복제는 똑같은 파일(100MB)을 한 개 더 생성하는 것 > 각각의 파일이고, 원본 파일을 변경해도 복제 파일에는 아무런 영향이 없다. 메모리는 똑같이 100MB씩이고! (복제!=복사) 참조는 복제와 다르다 참조는 바로가기 만들기를 이용해서 예시를 들어보자 바로가기 만들기는 원본 파일을 가리키고 있을뿐, 복제한 게 아니다. 따라서 바로가기 파일에서 값을 변경하면, 원본 파일도 변경이 동시에 이루어진다. 객체는 참조에 의해 저장되고 복사 된다. ※ 원시값(문자열, 숫자, 불린 값,null,undefined)은 값이 그대로 저장,할당,복사가 된다 이 때는 두 개의 독립된 변수에 각각 문자열이 저장된다. 복사된 값을 다른 메모리에 각각 할당하기에 서로 영향을 미치지..

4-1 객체 (Javascript)

일반적으로 우리가 눈으로 볼 수 있는 모든 것을 객체라고 한다. 프로그래밍에서의 객체는 무슨 의미일까? 프로그램을 구성하는 단위 중 하나를 의미한다. 여러 객체가 모여 하나의 프로그램이 완성되는 것! 객체 : 소프트웨어 세계에 구현할 대상 객체의 사전적인 의미 : 실제로 존재하는 것 ex) 책상, 컴퓨터 ... 이러한 유형적인 것뿐만 아니라, 무형적인 것도 객체로 간주한다. ex) 개념, 논리, 수학공식 ... 객체의 특징 >> 객체는 고유의 이름이 존재한다. 객체는 특징과 행동이 있다. 객체의 수는 무제한으로 늘어날 수 있다. 객체는 속성과 동작으로 구성되어 있다. 예를 들면, tv의 속성은 크기, 길이, 높이, 볼륨, 채널과 같은 것이 있으며, tv의 동작은 켜기, 끄기, 볼륨 높이기 등이 있다. 속..

좋은 주석을 작성하는 방법

1. 주석을 코딩하기 전에 작성해놓으면, 코딩을 하면서 구현이 쉬워진다. 이 코드들이 어떤식으로 어떻게 동작하는 지 먼저 설명하기 2. 함수에 주석을 다는 것이 가장 효율적이다. 3. 복잡한 소스코드보다 주석 없이도 빠르게 이해할 수 있는 코드가 좋다. >> 개발비용보다 유지보수 비용이 훨씬 크기 때문이다. 4. 프로토타입은 주석 필요 없다. 5. 설계 리뷰가 코드 리뷰보다 훨씬 중요! 6. 라이브러리나 프로그램, 함수 단위에서는 '무엇'인지 설명한다. 7. 실행문에 달아두는 주석은 코드가 '왜' 이렇게 동작하는 지 설명한다. 문서 주석 /** */ 구현 주석 /**/ or // 코드리뷰란? 한 명 또는 여러 명의 개발자들이 본인이 만들지 않은 코드의 내용을 점검하고 피드백을 주고 받는 과정이다. 이 과..

Chrome debugging 하기 (Javascript)

1. 개발자 도구 F12를 누르고 소스패널로 가면, 이런 화면이 나온다 만약 아래와 같은 화면이 나오지 않는다면 소스패널 바로 밑부분에 화살표 아이콘을 눌러보기! 그러면 왼쪽 탭이 뿅하고 등장한다. 디버깅을 설정하고 싶은 줄번호를 클릭하면 설정 완료! 소스 패널에서 설정하기가 번거로우면, 코드상에서 디버깅 설정을 해두는 방법도 있다. 원하는 위치에 debugger; 명령어를 입력해주면 끄~읕! console.log() >> 원하는 것을 콘솔에 입력할 수 있다. console.log('기본'); console.info('정보'); console.warn('경고'); console.error('에러'); console.log는 참조를 로깅하기 때문에, 객체와 같이 내용물이 변할 수 있는 것들은 실시간으로 바..

자바스크립트 헷갈리는 부분 모음집

1. null 비어있음, 존재하지 않음을 나타낸다. 2. undefined 값이 할당되지 않은 상태를 나타낸다. 3. prompt(question,[default]) 확인 버튼을 눌렀을 땐 사용자가 입력한 값 반환해주고, 취소 버튼을 누르면 null이 반환된다. 4. confirm(question) 확인을 누르면 true 값 반환, 그 외의 경우는 false값 반환 5. + 연산자 만약 피연산자 중 하나가 문자열일 때, 나머지 하나를 문자형을 바꾼 뒤 두 문자열을 연결한다. 6. null 병합 연산자 ?? a??b 만약 a가 null이나 undefined가 아니면, 위 식의 값은 a 반대로 a가 null이나 undefined이면 위 식의 값은 b 7. 비교연산자 == 형이 다른 값끼리 비교할 경우, 피연..

2-17 화살표 함수 기본 (Javascript)

화살표 함수를 이용하면, 함수 표현식보다 더 간결한 문법으로 함수를 생성할 수 있다! 화살표 함수 형식 let function(a,b)=>expression; 만약 매개변수가 1개밖에 없다면? let function n=>expression; 매개변수가 하나도 없다면? let function()=>expression; 만약 화살표 함수의 본문이 여러줄인 경우? {}을 이용해서 묶어주기! 과제 출처 ko.javascript.info/arrow-functions-basics 화살표 함수 기본 ko.javascript.info