본문 바로가기

전체 글

(138)
[파이썬] level3 시저암호 (level3)시저암호 문제 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. A를 3만큼 밀면 D가 되고 z를 1만큼 밀면 a가 됩니다. 공백은 수정하지 않습니다. 보낼 문자열 s와 얼마나 밀지 알려주는 n을 입력받아 암호문을 만드는 ceasar 함수를 완성해 보세요. “a B z”,4를 입력받았다면 “e F d”를 리턴합니다. 나의 접근법 이상하게 쉽게 풀릴 것 같았는데, 하루정도 걸려서 풀었다. 가장 직관적으로 떠오른 생각은 아스키코드(ASCII) 코드를 활용하자는 것이다. 아스키코드가 뭔지 잘 모른다면, 쑥쓰러운 나의 블로그 포스팅 아스키코드와 유니코드의 이해 을 소개한다. 문제를 풀 때 가장 먼저 고려했던 것은 공백을 반영해야 한다는 것..
[파이썬] level3 야근지수 rect 문제 회사원인 수민이는 많은 일이 쌓여 있습니다. 수민이는 야근을 최소화하기 위해 남은 일의 작업량을 숫자로 메기고, 일에 대한 야근 지수를 줄이기로 결정했습니다. 야근 지수는 남은 일의 작업량을 제곱하여 더한 값을 의미합니다. 수민이는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다. 수민이의 퇴근까지 남은 N 시간과 각 일에 대한 작업량이 있을 때, noOvertime 함수를 제작하여 수민이의 야근 지수를 최소화 한 결과를 출력해 주세요. 예를 들어, N=4 일 때, 남은 일의 작업량이 [4, 3, 3] 이라면 야근 지수를 최소화하기 위해 일을 한 결과는 [2, 2, 2]가 되고 야근 지수는 22 + 22 + 22 = 12가 되어 12를 반환해 줍니다. 접근 방법 수학..
docker non-zero code 127 error non-zero code 127 error 증상 /bin/sh: 1: npm: not foundThe command '/bin/sh -c npm install' returned a non-zero code: 127 도커파일에서 RUN npm install를 진행하는데 위 에러를 계속해서 발생시켰다. 소요한 시간은 대략 3시간 정도를 허비했다. 원인 여러 stackoverflow와 github issue글을 살펴봤지만 명확한 원인을 찾을 수 없었다. 꼭 npm만의 문제는 아닌듯 했고, 어떤 글들은 스왑 메모리 용량이 부족하다고 까지 했다. 그래서 swapon -s를 통해서 메모리 확인을 해봤는데, 정말로 메모리를 많이 잡아먹길래 재부팅을 실시했다. 그래도 증상은 나아지지 않았다. 해결법 ##..
[Django] 폼(Form)에서 commit=False의 의미 form Commit=False Django에서 모델 Form을 다루다보면 종종 commit=False라는 코드를 마주칠 때가 있다. 가끔씩 헷갈리는 부분이기 때문에 장고 공식문서를 통해 학습하고자 한다. save(commit=False) 왜 사용하나요? 한줄요약 : commit=False를 하게 되면 데이터베이스에 당장 저장하지 않는다. 언제쓰지? : DB에 데이터를 저장하기 전에 특정 행위를 하고 싶을 때 사용한다.. 실제 예제 모델 작성자 모델 idnickname 1사용자1 2사용자2 class Author(models.Model): nickname = models.CharField(max_length=20) 간단하게 회원가입할 때 적는 아이디(ID)를 nickname 필드로 지정했다. 게시글 모델..
[Django] Django allauth 유저 모델 커스텀하기 네이버로그인 소셜계정으로 회원가입한 유저 구분하기 제목을 커스텀 유저모델이라고 썼지만 사실 유저 인스턴스를 커스텀하는 것에 더 가깝다. 현재 만들고 있는 프로젝트에서 소셜계정으로 로그인하는 유저에게 특정 필드값을 부여하고 싶었다. 예를 들면 네이버로 로그인 하는 유저에게는 N이라는 값을, 페이스북으로 로그인하는 유저에게는 F 값을 주고 싶었다. 나중에 어떤 곳에서 유입이 더 많이 될지 살펴볼 수 있지 않을까? 처음에 혼란스러웠던 점은 어디서부터 시작해야 할지 모르겠다는 점이었다. 라이브러리 활용이 처음이었기 때문에 아예 백지 상태였다. 결론부터 말하자면 django-allauth에 어딘가를 오버라이딩해야 한다. django allauth custom usermodel이라고 검색하니 다시 공식문서로 회귀하..
[Django] Django-allauth를 통한 페이스북 회원가입 및 로그인 페이스북 회원가입 Django-allauth을 활용한 페이스북 회원가입(로그인) http://django-allauth.readthedocs.io/en/latest/installation.html 라이브러리 활용이 전무해서 처음에 좀 애먹었다. 우선 첫 환경세팅은 공식홈페이지를 보고 따라하는 것이 가정 정확하고 빠르다. 설치하기 pip install django-allauth settings.py 세 부분을 건들여줘야 한다. (INSTALLED_APPS, TEMPLATES, AUTHENTICATION_BACKENDS) INSTALLED_APPS에는 추가해야 할 앱들이 많기 때문에, +=를 활용해 아래칸에 따로 만들어줬다. INSTALLED_APPS += [ # The following apps are r..
[DJango] AbstractBaseUser vs AbstractUser 비교하기 AbstractUser vs AbstractBaseUser AbstractUser vs AbstractBaseUser AbstractBaseUser를 상속하게 되면 Class MyUser(AbstractBaseUser): pass 꼴랑 2개밖에 안던져준다(id는 자동생성 되는 필드니까). 이를 상속해서 유저 모델을 구축한다면 세밀한 컨트롤이 가능하지만 세그만큼 손도 많이 간다. 만약 페이스북 이메일 인증(permission)을 통한 가입을 하고 싶다면 AbstractBaseUser를 사용해야 한다. 상속받는 클래스틀 타고 들어가면 아래처럼 구현되어있다. class AbstractBaseUser(models.Model) password = last_login = def get_username(self): ..
[Django] Django + Celery + Redis 이용하기 Redis_Celery 들어가기 전에 동기 vs 비동기 (이미치 출처 : http://ojava.tistory.com/17) 어떤 서비스에 회원가입을 하면 메일이 날라오는 경우가 있다. 동기 : 메일이 날라올 때까지 아무것도 하지 못한다. 비동기 : 메일이 날라오지 않더라도 다른 작업을 할 수 있다. 비동기 방식이 짱짱맨 아니냐 하겠지만 어떤 방식이건 간에 장단점이 존재한다. 아무튼, 회원가입 축하 이메일 발송은 사실 고객(client)에게 중요한 부분이 아니다. 일단 가입을 하고 서비스를 이용하기를 원할 것이다. 이러한 이메일 발송은 비동기 처리로 보낼 수 있다. 이를 백그라운드에 보낸다고 표현한다. Djnago + Celery + Redis Celery는 일꾼이다. 해야 할 일들을 처리한다. Reid..