본문 바로가기

전체 글23

Python 문법 간단 정리 : 내장함수, 라이브러리, 기타 내장함수 # ads (절대값) abs(3) # 3 abs(-3) # 3 # all (요소검사 -> 모두 참이어야 참) all([1,2,3]) # True all([1,2,3,0]) # False, 0이 False 요소이기때문 all[]) # True # any (요소검사 -> 하나라도 참이 있으면 참) any([0, '']) # False any([1,2,3,0]) # True any[]) # False # chr (유니코드를 문자로 변환) chr(97) # 'a' chr(44032) # '가' # dir (사용가능한 변수와 함수를 보여줌) dir([1, 2, 3]) # ['append', 'count', 'extend', 'index', 'insert', 'pop',...] # divmod (몫과 나머.. 2022. 11. 14.
Python 문법 간단 정리 : 클래스, 모듈, 예외처리 클래스 # 기본 공식 class Car: def __init__(self, name, color): # 생성자, 기본 공식 self.name = name # 인스턴스 변수 생성 self.color = color # 인스턴스 변수 생성 def __del__(self): # 소멸자, 기본 공식 print('{0} 객체가 소멸됩니다.'.format(self.name)) def autoDrive(start, end): print('{0}부터 {1}까지 자율주행을 합니다.'.format(start, end)) modelS = Car('Tesla Model S', 'black') del modelS # Tesla Model S 객체가 소멸됨. # 상속 class ClassName(ParentClass): ... #.. 2022. 11. 14.
Python 문법 간단 정리 : 함수, 파일 함수 ## 공식 ''' def 함수명(매개변수): ... ''' # ex1 (기본) def add(a, b): return a + b # ex2 (파라미터 바로 삽입) c = def add(a = 1, b = 2): # add(b = 2, a = 1) 순서 바뀌어도 상관없음 return a + b print(c) # 3 # ex3 (파라미터 미특정 개수) def add_many(*args): result = 0 for i in args: result += i return result # ex4 (tuple리턴) def addAndMul(a,b): return a+b, a*b print(addAndMul(2, 3)) # (5, 6) # ex5 (초기값 미리설정, *미리성정된 매개변수는 항상 맨끝에) def.. 2022. 11. 14.
Python 문법 간단 정리 : 제어문 if문 # 공식 (* 들여쓰기 주의) ''' if 조건문1: 수행할 문장1 수행할 문장2 ... elif 조건문2: 수행할 문장a 수행할 문장b ... else: 수행할 문장A 수행할 문장B ... ''' while문 # 공식 (* 들여쓰기 주의) ''' while 조건문: 수행할 문장1 수행할 문장2 [continue] 수행할 문장3 ... [break] ''' for문 # 공식 (* 들여쓰기 주의) ''' for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 [continue] 수행할 문장2 ... [break] ''' # ex1 (기본, 리스트) test_list = ['one', 'two', 'three'] for i in test_list: print(i) # ex2 (튜플) a = [.. 2022. 11. 14.
Python 문법 간단 정리 : 자료형 숫자형 3 ** 4 # 곱연산 : 3의 4제곱 = 81 7 // 4 # 몫연산 : 1 (나머지연산 7 % 4 == 1) 문자열 a = 'abc' b = 'hobby' # 멀티라인 multiLine1 = "adc\ndef" # or 'adc\ndef' multiLine2 = """ abc def """ # ''' ... '''도 마찬가지 일반 문자열에 자유롭게 엔터사용 # 문자열 곱연산 a * 2 # 'abcabc' print("=" * 50) # ================================================== # 문자열 길이 len(a) # 3 # 문자열 슬라이싱 a[1] # b, 파이썬은 문자열의 인덱싱을 자동으로 잡는다 a[-1] # c, -1은 맨뒤를 뜻함, a[-2] =.. 2022. 11. 14.
GitLab + Jenkins + S3 서론 정적 웹페이지를 S3에서만 관리하다보니 버전관리가 안되고 최신버전이 유실되는 경우가 생겼다. gitlab으로 버전관리를 하고 Jenkins를 통해 S3로 배포해보자. ※ gitlab, jenkins를 사용하는 중이라는 가정으로 시작 #1. S3 소스 다운로드 AWS 콘솔의 S3에서 폴더단위 다운로드는 현재까지 지원안되는 것으로 알고 있다. S3 CLI은 설정만 해두면 명령어 한줄로 다운받을 수 있다. [AWS] - AWS S3 CLI upload & download AWS S3 CLI upload & download 서론 보통은 cli가 불편하고 gui가 편한데 s3를 사용하다보니 AWS 콘솔(gui)에서 S3 파일 업로드 및 다운로드가 불편하고 오히려 cli가 익숙해지면 훨씬 편하다. 불편해서 알.. 2022. 8. 31.
AWS S3 CLI upload & download 서론 보통은 CLI가 불편하고 GUI가 편한데 S3를 사용하다보니 AWS 콘솔(GUI)에서 S3 파일 업로드 및 다운로드가 불편하고 오히려 CLI가 익숙해지면 훨씬 편한듯하다. 콘솔이 불편해서 알게 된 S3 cli 접속 및 업다운로드하는 방법을 기록해보자. ※ macOS 기준으로 작성함. 이외에 필요한 내용은 공식 홈페이지에 다 나와있으니 참고해보자. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-welcome.html AWS Command Line Interface이란 무엇인가요? - AWS Command Line Interface 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어.. 2022. 8. 16.
REST에 대하여 REST란? | 직역 해석 REpresentational State Transfer = 대표(표상)적인 상태 전달 > 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미한다. Roy Fielding 2000년 박사학위 논문에서 소개됨. (필딩은 HTTP의 주요 저자 중 한 사람) HyperText Transfer Protocol = 초본문전송규약 - World Wide Web 상에서 정보를 주고받을 수 있는 통신규약 - Client와 Server 사이에 이루어지는 요청/응답(request/response) 통신규약 - HTML 문서를 주고받는 데에 쓰인다. | 전문적 해석 World Wide Web과 같은 분산 HyperMedia System을 위한 Software Archite.. 2021. 6. 6.
티스토리 코드블럭에 프리즘(prizm) 적용하기 티스토리 코드를 이쁘게 꾸며보자. 티스토리 밖에 블로그를 운영해보지않아서 다른 블로그들은 잘 모르지만 아마 크게 다르지 않을것같다. 다양한 컴퓨터 언어들이 있는데 프로젝트를 진행하다보면 수천 수만 줄의 코드들이 작성된다. 사람의 인식범위에 한계가 있기때문에 이 많은 코드들을 개발자가 쉽게 인식할 수 있도록 다양한 방법들이 나타나게 된다. 그 중 대표적인 것이 코드의 역할이나 특성을 반영한 색깔로 구분을 주는 것인데 이를 'code highlighting'이라한다. 'code highlighting'으로 구글링하면 몇가지 라이브러리들이 검색되는데 그 중 프리즘(prizm)을 적용하는 방법을 정리해보았다. 1. 초기화 혹시 다른 하이라이팅을 적용을 위해 이것 저것 건드려놓은 것이 있다면 처음으로 되돌려놓자... 2021. 4. 25.
컴파일러(compiler) 설정 방법 TypeScript는 브라우저에서 바로 compile하지 못한다. 브라우저가 읽을 수 있는 JavaScript로 변경해줘야한다. (정확히는 ECMAscript) TypeScript는 자체에서 JavaScript로 변경할 수 있는 compiler가 내장되어있고 다양한 설정이 가능하다. 명령어 npm install -g typescript 타입스크립트를 설치하면 tsc 명령어로 컨트롤할 수 있다. tsc logging.ts -w 낱개로 컴파일 하는 법 (타입스크립트 파일을 지정하여 저장 할때마다 자동 컴파일 함. = watching모드) tsc --init tsconfig.json 생성 tsc -w tsconfig.json의 설정대로 컴파일 실행 tsconfig.json 설정방법 { "compilerOpti.. 2021. 4. 16.
유틸리티 타입 (Utility Types) Typescript에서는 generic을 사용하여 type이나 interface의 특성을 쉽게 바꿔주는 유틸리티 타입을 제공한다. 사용법만 알면 쉽게 사용할 수 있다. 공홈에는 20여가지의 리스트가 있는데 그 중에 자주 사용하는 몇 가지를 알아보자. partial(부분적인) : Partial 전체를 옵셔널(optional)로 바꿔줌 Partial로 만들어진 Coordinate2 타입은 field들이 모두 optional이기때문에 compile error가 나지않음 required(필요한, 필수인) : Required 전체를 빠지면 안되는 것으로 바꿔줌 Partial과는 반대로 모든 field들을 필수로 바꿈 readonly : Readonly 읽기전용 target과는 다르게 hanaMt는 읽기전용이기때문.. 2021. 4. 16.
type과 interface 차이 타입과 인터페이스는 TypeScript의 버전이 올라가면서 함께 변화해갔다. 처음에는 타입의 기능이 약해서 인터페이스를 쓰라고 권장했지만 지금은 타입의 기능이 많이 강화되었는데 인터페이스와 사용성이 모호한 시점인듯하다. 그래서 역할을 정확히 나누는것이 좋다. Interface Class의 규격, Object 간 소통할 때 쓰는 규약 이 인터페이스를 통해 구현해야하는 클래스가 있을 때 재정의할 수 있다. (let처럼) Type 데이터의 타입 정의 구현할 목적이 아니라 데이터를 담을 목적으로 사용 재정의 할 수 없다. (const처럼) type alias를 통해 원시타입, 배열, 유니온 타입 등을 별칭화 할 수 있다. 2021. 4. 16.
제네릭 <Generic> function checkNull(arg: number | null): number { if (arg == null) throw new Error('앗 널이다!!'); return arg; } null을 체크하는 함수이다. 파라미터로 number 혹은 null 타입을 받고 있다. 리턴도 넘버타입이다. 그럼 string은? boolean은? 혹은 내가 만든 타입이라면??? function checkNull(arg: any | null): any { if (arg == null) throw new Error('앗 널이다!!'); return arg; } any타입으로 만들어보았다. 리턴도 any타입이다. 이제 문제가 없다. 재사용성이 향상됐으니까. function checkNull(arg: any | nul.. 2021. 4. 15.
타입스크립트의 객체지향 OOP Object-Oriented Programming 객체 지향 프로그래밍 목적 간단히 얘기해서 좋은 프로그램을 만들기위함이다. 기존의 절차지향적 프로그래밍에서 개선된 프로그래밍 패러다임(모형)이다. 하지만 절차지향과 객체지향 각각의 특장단점이 있기에 뭐가 더 좋다라고 할 수는 없지만 만들려는 프로그램을 분석하여 하나만 사용하던 섞던 하면 된다. 방식 큰 틀에서 세분화하는 것이 아니라 세분화된 조각들을 조립하는 것이다. 레고를 떠올리면 가장 쉬운데 여러 모양의 레고들이 있고 이를 설계도 대로 조립을 하면 하나의 완성품이 되는 것처럼 말이다. 이런 조각(=레고)이 바로 객체(Object)이다. 요소 객체지향이라는 것이 의미가 있으려면 아래 4가지 요소들을 이해해야한다. 캡슐화(Encapsulation).. 2021. 4. 15.
타입 단언 (Type Assertions) 타입 단언은 말그대로 컴파일러에게 타입이 이것이다라고 단언하는 것이다. 사용 방법은 두가지이다. let code: any = 123; let employeeCode = code; let employeeCode = code as number; 형변환과는 다르다. 형변환은 실제로 데이터의 구조를 변환하는 것이고 타입단언은 컴파일러에게 강제하는 것이다. DOM구조에 접근할 때 주로 쓴다. const button = document.querySelector('.btn')! as HTMLButtonElement; // button에 HTMLButtonElement구조가 타입단언되면서 지원되는 api를 사용할 수 있다. 사용을 잘 못하면 재앙이... Assertions 주장 단언 자기 주장 2021. 4. 12.
타입 추론 (Type Inference) function add(x: number, y: number): number { return x + y; } const result = add(1, 2); result 변수는 타입을 지정하지 않았지만 add함수의 리턴 타입이 number이기때문에 typescript가 자동으로 number type으로 인식한다. 이 타입 추론을 통해 코딩량이 줄 수도 있겠지만 기준이 모호해서 모든 것에 타입을 지정할지 어느정도 타입추론을 사용할지는 각 조직에서 기준을 세워서 사용하면 되겠다. Inference 추론 추정 추리 2021. 4. 12.