전체 글 96

mips pipeline control (컴퓨터구조 2022-2학기)

MIPS pipeline control 회로 mips instruction을 실행할 수 있는 pipeline에 control회로를 추가해볼것이다. mux의 연결방향을 결정해주는 control들은 pipeline register를 늘려서 그 일부에 저장해주면 된다. 이 control들은 opcode 6bits에 의해 결정되는데, CC2에 생성되어서 CC3부터 사용된다. IF/ID pipeline register에서 읽은 opcode 6bit를 input으로 하는 컨트롤회로(조합회로)에서 9bit의 control signal을 output으로 만들어 내고, 그 9bit를 ID/EX pipeline register에 쓰게된다. 그리고 이 control signal 9bit를 또 4bit/ 3bit/ 2bit로..

컴퓨터 구조 2022.11.25

학교 공지사항 웹 크롤링 하기

학교 정보를 편리하게 제공해주는 웹사이트를 만들면서, 사용자의 전공에 맞춰서 해당학과의 공지사항을 우리 서비스의 메인페이지에서 보여주려고 했다. 그래서 학과별 홈페이지의 공지사항을 크롤링할일이 생겼는데 생각보다 재밌었다!! 아래는 예시 코드이당 import re import requests from bs4 import BeautifulSoup as bs from rest_framework.generics import ListAPIView from rest_framework.response import Response # 예술대학 (음악학부, 미술학부, 공연예술학부) def arts(self): result = [] baseUrl = 'https://art.kookmin.ac.kr/community/not..

기타 개발공부 2022.11.25

도커 컴포즈 오류 docker-entrypoint.sh: no such file or directory

exec /docker-entrypoint.sh: no such file or directory 맥환경에서 세팅한 파일을 윈도우로 pull받아서 도커컨테이너를 다시 빌드하는 과정에서 해당 오류가 났다. 원인은 윈도우가 LF를 자동으로 CRLF로 받아오면서 발생한 문제였는데, 깃 자체에서 이 변환을 자동으로 하는것을 막아주는 옵션이 있었다. # window git config --global core.autocrlf true 참고로 변경된 해당 설정은 새로운 파일부터 적용되므로, 이전에 받아온 프로젝트 파일에서 오류가 났다면 REMOTE에서 다시 클론을 받아와야 한다. 래아래 링크를 참고했다. https://bgpark.tistory.com/81 docker-compose 사용시 /usr/bin/env: ..

Docker 2022.11.25

mips pipeline datapath (컴퓨터구조 2022-2학기)

processor가 pipelining을 하려면 - load를 여러개의 sub-task로 나누어야 함 - 각 sub-task는 1-clock cycle에 수행됨 (즉 명령어 한개가 여러 clock cycle에 수행됨.) MIPS pipeline의 5 stage 1. IF = 메모리로부터 instruction을 fetch하는 스테이지 2. ID = fetch된 instruction을 decode하고, 필요한 레지스터 값을 읽어오는 스테이지 3. EX = instruction을 수행하거나, 메모리의 주소를 계산하는(lw, sw 등) 스테이지 4. MEM = 데이터메모리에 access해서 여기에 값을 쓰거나 읽는 스테이지 5. WB = 연산의 결과를 레지스터 파일에 쓰는 스테이지 위의 스테이지들은 각각 한 사..

컴퓨터 구조 2022.11.24

timezone설정이 일부 datetime_field에만 적용되는 이슈 해결방법

우선 db는 post모델과 advertisement모델을 1:1로 연결해서 글을 생성하는 구조로 되어있다. 그리고 각 모델의 코드는 아래와 같다. - post/models/post.py class Post(models.Model): """Model definition for Post.""" class Meta: db_table = 'posts' verbose_name = 'Post' verbose_name_plural = 'Posts' POST_TYPE = ( ('R', 'review'), ('C', 'clubpost'), ('A', 'advertisement'), ) title = models.CharField( max_length=20, null=False, verbose_name='제목' ) con..

django, drf 2022.11.17

drf dj_rest_auth 로그인 커스텀, non_field_error 해결방법

요즘 학교에서 알파프로젝트로 우리 학교 학생들을 위한 정보공유서비스를 만드는 중이다. 거기서 유저관련 기능을 구현하면서 알게된 dj_rest_auth로 로그인방식을 편하게 커스텀하는 방법을 공유하려고한다. 먼저 처음 로그인 오류를 만나게 된건 회원단계에서 이메일 인증을 하도록 구현하면서 시작됐다. 회원가입 이메일 인증 코드들을 살펴보면서 설정을 추가하다가 다음 설정을 추가하게 된다. ACCOUNT_AUTHENTICATION_METHOD = 'email' 이메일 인증을 위한 설정이라고 했고... 이름도 account authentication method... 당연히 이메일 인증을 하기위한 dj_rest_auth 기본 설정이라고 생각했다. 그리고 여기서 모든 문제가 시작됐다. ㅠㅠ 회원가입만 커스텀했을 뿐..

django, drf 2022.11.17

MIPS 어셈블리 명령어 (R,I,J format) 기계어로 표현하기

mips assembly instruction은 크게 세가지로 나뉜다. 산술/논리 연산 명령어 (add, addi, sub, and, or, sll, srl 등) 메모리 접근 명령어 (lw, sw 등) 분기 명령어 (j, jr, jal, beq, bne 등) 이렇게 다양한 명령어들은 각각의 format에 따라 다른 방식으로 기계어로 표현되는데, (명령어의 산술종류와 format은 관련이 없다. 같은 덧셈연산이라고 해도 add는 r-format, addi는 i-format이다.) 이 중에 R-format, I-format, J-format에 따라 어셈블리 명령어를 기계어로 바꾸는 어셈블 연습을 해보자. 각각의 instruction이 어떤 포맷인지는 다음 opcode table을 보면 빠르게 확인할 수 있다..

컴퓨터 구조 2022.10.25

깔끔한 파이썬 탄탄한 백엔드 - 파이썬으로 배우는 백엔드

동아리 친구가 공부하고 있는걸 보고 좋아보여서 따라산 책. 한국어로 나온 백엔드 개발관련 도서는 대부분 자바+스프링쪽에 몰려있어서 파이썬으로 구현하는 백엔드에 대해 이렇게 너무 가볍지도 어렵지도 않은 정도로 잘 설명해주는 책은 찾기가 어려웠다.... 그런데 이 책을 읽으면서 정말 너무 마음에 들어서 그런 아쉬움이 어느정도 해소되는 느낌이 들었다! 이 책은 큰 틀에서 현대 웹 시스템 구조, HTTP의 구조와 핵심요소, 미니터(트위터와 비슷한 기능이다.) 기능 개발, 데이터베이스 연결 및 사용, 인증 구현, unit test, aws, API 아키텍쳐, 파일 업로드 엔드포인트 등의 내용을 다루고 있다. 그 중 내가 가장 인상깊게 봤던 파트는 인증구현과 유닛테스트, API 아키텍쳐(코드 아키텍쳐) 부분인데, ..

독서 2022.10.25

국민은행 소프트웨어 경진대회(2022.07.17~2022.09.18)

이번 여름방학에 아이디어톤 끝나고 한달정도 있다가 국민은행 소프트웨어 경진대회 공모전을 발견하고 너무 출품해보고싶어서 동아리 친구들을 꼬셔서 플젝을 같이 했다! 백엔드 파트로 drf를 처음 써보는 플젝이었는데 공부할만한 한국어 자료가 엄청 많지는 않아서 처음에 공부하는 단계에서 좀 어려웠는데, 그래도 여기저기 나와있는 강의 이것저것+폭풍검색+질문으로 어떻게 잘 마무리했다ㅋㅋㅋㅋㅋㅋ 나도 나지만 다른 팀원들도 거의 drf나 리액트 처음 써봐서 고생이 많았는데 그래도 다같이 마지막까지 안놓고 열심히 해줘서 너무 고마운 마음이 든다. 솔직히 개강하기 전에 끝나는게 목표였는데 개강을 넘겨버려서 플젝이 흐지부지될까봐 좀 걱정했었는데 다들 마지막까지 같이 열심히 작업해서 제출까지 무사히 할 수 있었던것같다. 우리는..

팀 프로젝트 2022.09.28

dj-rest-auth/allauth를 이용한 회원가입기능 구현

이번 프로젝트에서는 drf와 react를 사용하고, 로그인 회원가입 기능도 dj-rest-auth와 alllauth를 사용해서 구현한다. drf를 처음 사용해봐서 지금 당장은 어려움이 있지만 또 하다보면 익숙해진다고 생각하고 열심히 해봐야겠다! 우선 models.py부터 보자! 여기선 다양한 필드를 받아야 하기 때문에 AbstractUser를 상속해서 유저를 확장해줬다. from django.contrib.auth.models import AbstractUser class User(AbstractUser): username = None email = models.EmailField(max_length=255, unique=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS..

django, drf 2022.08.04