본문 바로가기

전체 글

(27)
객체 지향 프로그래밍의 장점 OOP의 장점은 대표적으로 3개 있습니다. modularity OOP에서는 클래스를 사용해서 객체를 구현합니다. 클래스는 청사진 역할을 하는데, 이러한 청사진은 다른 프로그램, 다른 클래스들과는 독립적으로 움직입니다. 즉, 프로그램 전체를 고치지 않고 클래스 하나만 변경하는 것으로 쉽게 프로그램을 수정할 수 있습니다. 각각의 클래스, 정확히는 클래스로부터 만들어진 인스턴스는 서로 상호작용하지만 각각의 클래스는 각자만의 특정한 목적을 가지고 움직이며, 이 때도 서로는 독립적으로 움직입니다. 각각의 class는 레고라고 생각하면 편합니다. reusablity class는 청사진 역할을 합니다. class로 여러 개의 instance를 만들 수 있고, 이 class는 독립적이므로 다른 프로그램에서 재사용이 가..
객체 지향 프로그래밍이란 udemy의 강의를 듣고 정리한 내용입니다. 객체 지향 프로그래밍은 객체를 중심으로 해서 소프트웨어 설계를 하는 프로그래밍 패러다임입니다. 프로그래밍 패러다임이란, 프로그램을 만들기 위해 코드를 작성하는 방법을 뜻한다고 보면 됩니다. (패러다임은, 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념입니다. 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식등의 체계를 뜻합니다. 예를 들어 천동설이 진리로 받아들여지던 시기에 다른 모든 천문 현상은 천동설의 테두리에서 설명되었습니다.) 프로그래밍 패러다임은 명령형((Imperative), 함수형(Functional), 선언형(Declarative)…등이 있습니..
Faker seed를 사용해봤습니다 Faker.seed(0)는 같은 데이터 셋을 편리하게 세팅하게 해주는 메소드다. 정확히는 라이브러리 전체에서 생성되는 난수 시퀀스에 영향을 주는 난수 생성기를 시드하는데 사용된다. 시드 값을 설정하면 생성된 난수 시퀀스가 프로그램의 여러 실행에서 동일하게 유지된다. 정말 그런지 비교해보자. 프로그램을 종료하고 다시 실행해서 같은 seed번호를 설정하면 같은 난수 시퀀스가 설정된다. 예를 들어 seed(0)을 하고 fake.name을 for문으로 5번 반복해서 리스트를 만들고 프로그램을 종료하고 다시 시작해서 같은 방식으로 생성하면 같은 결과가 나온다. seed(0)에서 생성된 fake.name은 항상 ['Norma Fisher', 'Jorge Sullivan', 'El..
DRF serializer test code - max_length serializer의 max_length도 테스트해야 할 것 같아서 작성했습니다. 기능상 할 이유가 없을 것 같았지만, 협업을 하면서 다른 팀원이 max_length를 변경하는 경우가 있을 것 같아서 넣었습니다. 실제로 테스트를 실행하는 커맨드는 'python manage.py test app name.directory.file'입니다. from django.test import TestCase from ...serializer.user_serializers import UserUpdateSerializer class TestValidUserUpdateSerializer(TestCase): def setUp(self): self.valid_data = {"last_name": "test", "first_..
장고를 파보기로 했습니다. 서버 개발자를 하면서 항상 마음에 걸렸던 부분이 있습니다. 회사 업무에서 AWS를 자주 만지는 반면, Django, DRF를 만지는 기회가 요즘들어 적었던 부분입니다. AWS를 다루면서 FE와 BE가 어떤 아키텍처로 구성되어 있는지 큰 틀에서 알게 되었지만 비즈니스 로직 작성, 테스트 코드 작성, 로그 출력 등, 세세한 부분에서 스스로가 너무나도 부족하다는 것이 계속 마음이 걸렸습니다. 특히나 프레임워크에 대한 지식이 낮다는 생각이 머리 속에서 계속 맴돌았습니다. 프레임워크에 너무 얽매일 필요는 없다고 여러 글에서 많이 봤지만 프레임워크가 어떤식으로 돌아가는지 내부 구조를 알고 싶다는 생각이 머리에서 떠나지 않았습니다. 게다가 ChatGPT의 대중화로, 비즈니스 로직, 테스트 코드 작성 등은 어느정도 도..
ChatGPT를 사용하면서 앞으로 인생방향을 생각해봅니다. 2년자 백엔드 개발자로 일하면서 최근 회사에서 chatGPT를 본격적으로 도입하기로 했습니다. 개인적인 프로젝트를 만들때나 공부할 때에는 개인계정을 이미 사용하고 있었는데 회사에서 정식으로 회사계정과 연동해서 유료버전을 사용할 수 있게 해준다고 했습니다. 의외였던 것은 개발자뿐 만 아니라 개발자가 아닌 사원분들에게도 제공한다고 한 점입니다. 그때 "아, 세상이 바뀌고 있구나."라고 느꼈습니다. 그와 동시에 여러 유튜브와 기사를 읽으며 개발에 대한 방향, 자신의 미래도 생각하게 되었습니다. 회사 일을 하면서도 chatGPT를 사용했습니다. 설계를 할 때, 모르는 기술단어가 있을 때, 예외처리, 에러 분석, 테스트 코드...... 쓰면서 느꼈던 것은, 편리하다는 것도 있었지만 가장 먼저 두려움을 느꼈습니다...
MySQL 테이블 내용 삭제 방법 비교: DELETE, DROP, TRUNCATE CREATE TABLE bigtbl1 (SELECT * FROM employees.employees);CREATE TABLE bigtbl2 (SELECT * FROM employees.employees);CREATE TABLE bigtbl3 (SELECT * FROM employees.employees);DELETE FROM bigtbl1; # 레코드를 삭제DROP TABLE bigtbl2; # 테이블을 통째로 삭제TRUNCATE TABLE bigtbl3; # 테이블의 구조는 남기고 레코드를 삭제속도를 비교하자면 DELETE FROM 이 가장 느리다.왜냐하면 DELETE FROM 은 DML(data manupulation language)로, 트랜잭션 로그를 기록하는 작업 때문에 삭제가 오래 걸린다. 수..
AWS AssumeRole, PassRole AssumeRole AssumRole하는 것으로 IAM role에 설정되어있는 권한을 맡는게 가능하다. sts:AssumeRole이라고 하는데, sts는 Security Token Service이다. 정확히는, sts를 매개로 해서 IAM Role과 같은 권한을 일시적으로 갖는 것이다. AssumRole을 수행해서 문제가 없는지 확인하고, 문제가 없으면 유저에게 3개를 부여한다. 엑세스 키, 시크릿 액세스 키, 섹션토큰. 신뢰정책: IAM Role을 맡을 수 있는 엔티티를 정의.(분류로서는 리소스 베이스 폴리시에 속한다. 신뢰관계 탭에서 확인 가능.) ex) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Ser..