목록전체 글 (142)
개발자 블로그
개념 및 명령어 개념 정리 Linux에서 .으로 시작하는 파일은 숨김 파일로 인식함 ssh를 연결 하는 방법에는 크게 두 가지가 존재함 user@ip with password user@ip with keyfile(.pem) 절대경로 / 상대경로 ./ : 현재 위치를 의미함(상대경로) ../ : 현재 위치에서 상위 디렉토리를 의미함(상대경로) 권한 RWXRWXRWX 소유자 권한 그룹 권한 Other 권한 권한을 숫자로 표현할 경우 R : 4, W : 2, X : 1 용어 정리 root : 최고 관리자 권한, root 권한을 얻는다 == 최고 관리자 권한을 얻는다 VM : Virtual Machine 명령어 sudo $some_commend : 명령어 앞에 sudo를 붙이면 관리자 권한으로 실행됨 apt i..
장고의 프로젝트를 하며 메소드를 커스텀 할 일이 많았다. 기존의 예를 들어 시리얼라이즈의 update 함수를 커스텀 할 때, 기존의 인스턴스를 받아 사용자로 부터 받은 값들을 변경 해주어야하는 함수를 만드는 과정에서 아래와 같은 함수를 알면 좀 이해의 도움이 된다. 그리고 이 외에도 객체의 속성값에 직접 접근하여 값을 수정 및 반환할 수 있지만, 메소드를 사용하여 어트리뷰트의 접근하는 이유는 객체의 본질을 깨지 않게 하기 위함으로 객체가 쉽게 변형이 되지 않게 하기 위함이다. 1. getattr(object, attribute_name [, default]) 매개변수로는 객체와 속성 값의 이름, default를 설정할 수 있고, 해당 어트리뷰트의 value를 가져오는 함수이다. 해당 필드가 없다면 디폴트..
DRF 프로젝트 - 나만의 쇼핑몰 0. core BaseModel(models.Model) 필드 설정 특이사항 updated_at models.DateTimeField(auto_now=True) created_at models.DateTimeField(auto_now_add=True) 1. user User(AbstractBaseUser) 필드 설정 특이사항 username models.CharField("이름") email models.EmailField("이메일 주소", unique=True) USERNAME_FIELD = 'email' password models.CharField("비밀번호", max_length=128) max_length=128 해줘야한다. 패스워드 해시로 저장되면서 글자수가 ..
문제 설명 더보기 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다. 코딩테스트 참여 개발언어 항목에 cpp, java, python 중 하나를 선택해야 합니다. 지원 직군 항목에 backend와 frontend 중 하나를 선택해야 합니다. 지원 경력구분 항목에 junior와 senior 중 하나를 선택해야 합니다. 선호하는 소울푸드로 chicken과 pizza 중 하나를 선택해야 합니다. 인재영입팀에 근무하고 있는 니니즈는 코딩테스트 결과를 분석하여 채용에 참여한 개발팀들에 제공하기 위해..
리눅스 왜 리눅스를 사용하는가 우선 현업에서 대부분 서버를 리눅스를 사용한다. 왜냐면 윈도우는 라이센스란게 있는데 그렇다는 것은 비용이 발생한다는 것. 리눅스는 오픈소스이기에 OS다운 받아서 사용하면 됨. 그리고 리소스 사용이 가성비가 좋다. 즉, 가볍고 비용적인 측면에서 높은 효율. 그리고 원격으로 조정하기에도 좋다. 인터페이스 없이 커멘드로 한다는 뜻! 이외에도 여러가지 이유로 사용한다. 이러한 이유로 지속적으로 발전해서 많은 프로젝트가 리눅스 기반으로 개발되었다고 한다. 설치 방법 -AWS or VirtualBox AWS 돈 주고 쓰는거 VirtualBox 할당해서 사용 AWS 프리티어 -OS Ubuntu 20.04 -> 리눅스에는 ubuntu, 레드햇 이렇게 크게 버전이 있다. OS 다운로드 - ..
product 앱에서 가 포함된 product 테이블을 생성해주세요 django serializer를 사용해 validate / create / update 하는 기능을 구현해주세요 custom validation 기능을 사용해 노출 종료 일자가 현재보다 더 이전 시점이라면 상품을 등록할 수 없도록 해주세요 custom creator 기능을 사용해 상품 설명의 마지막에 “에 등록된 상품입니다.” 라는 문구를 추가해주세요 custom update 기능을 사용해 상품이 update 됐을 때 상품 설명의 가장 첫줄에 “에 수정되었습니다.” 라는 문구를 추가해주세요 product 앱에서 을 담고 있는 review 테이블을 만들어주세요 현재 날짜를 기준으로, 노출 종료 날짜가 지나지 않았고 활성화 여부가 True..
프로젝트를 하면서 인증 방식을 어떻게 구현할지는 개발자의 선택이고 때문에 보편적으로 사용되고 있는 몇가지 방식의 장단점을 잘 알고 상황에 맞춰 프로젝트에 적용시킬 수 있어야 한다. 일단 우리는 왜 인증 절차를 취할까? http의 특징을 짚고 넘어가면 http는 무상태성을 유지한다. 무상태성(stateless)는 사용자의 상태를 알고 있지 않다는 것이다. 서비스가 점점 복잡해지면서 서버는 사용자의 상태를 파악하고 이에 맞게 응답을 해줄 필요가 있다. 따라서 http의 무상태성을 보완하기 위해 몇가지 인증 방식이 있다. 가장 보편적으로 사용되고 있는 세션 토큰 방식과 JWT토큰 방식을 위주로 설명해보자! 인증과 인가 인증은 로그인을 하여 유저가 해당 서비스의 사용자라는 절차를 밟는 것이 인증! 인가는 per..
문제 설명 더보기 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검은색 부분은 벽으로 막혀있어 갈 수 없는 길이며, 흰색 부분은 갈 수 있는 길입니다. 캐릭터가 움직일 때는 동, 서, 남, 북 방향으로 한 칸씩 이동하며, 게임 맵을 벗어난 길은 갈 수 없습니다. 아래 예시는 캐릭터가 상대 팀 진영으로 가는 두 가지 방법을 나타내고 있습니다. 첫 번째 방법..
''' 내가 사용한 모듈은 내가 커스텀을 할 수 있어야 한다.''' 기능에 따라 커스텀을 자유롭게 활용할 수 있는 장고 개발자가 되보자. 1. 매니투매니 필드의 경우, 객체 생성시 바로 create는 안되고 생성 후에 add를 해서 객체에 추가를 해야한다. https://stackoverflow.com/questions/6996176/how-to-create-an-object-for-a-django-model-with-a-many-to-many-field 객체를 넣을때랑, 값을 넣을때랑 쿼리 선언이 차이가 난다. 2. serializer 심화 2-1) validator 커스텀 is_valid(raise_exception =True) -> 벨리데이션을 통과하지 못하면 다음 단계로 못 넘어감. 2-2) cr..
1. 서버에서 request한 데이터 받을 때 json data -> request.data.get() form data -> request.POST.get() 2. 폴더 생성시 폴더 안에 파일을 모듈 처럼 사용하기 위해선 __init__을 만들어줘야한다. 그래야 import할 때, 경로 문제에 대한 에러가 안뜬다. 3. testCaser를 사용하여 테스트 코드 작성 시, 원하는 값에 대한 것이 객체일 때는 새로 생성해줘야한다. 테스트 코드 상에선 기존의 디비와 같이 쓰는 것이 아닌 따로 비어있는 디비를 사용하기 때문 4. Article과 Category 는 N:N으로 엮여있다. 유저로 부터 객체를 받아와서 생성하는 서비스 로직을 구상할 때, 해당 값은 리스트 형태로 들어온다. 값이 다수가 존재할 수 있..