분류 전체보기
[Django] Designing Better Models
2019.05.12이 문서는 Designing Better Models 를 번역한 것입니다. 더 나은 Django 모델을 디자인하기 위한 몇 가지 팁을 공유하려 합니다. 특히 이 글에서 많은 비중을 차지하는 명명법에 관련된 팁은 당신의 코드를 훨씬 읽기 쉽게 만들어 줄 것입니다. 프로젝트를 진행할 땐 파이썬 생태계에서 널리 쓰이고 있는 PEP8을 따르는 것이 좋지만, 전 PEP8 외에도 Django 개발자를 위한 Django's Coding Style 또한 선호합니다. 우리가 살펴볼 항목들은 이렇습니다. Model 이름 짓기 Model 정렬 역관계 Blank와 Null 필드 Model 이름 짓기 모델은 클래스로 정의되므로 항상 CapWords를 사용해야 합니다.(_ 없이) User, Permission, ContentTy..
비개모각코 중간 점검!
2019.05.12나와 친구가 운영중인 비개모(비전공자 개발자 모임)에서 시작한 8주 모각코 프로젝트인 비개모각코가 어느덧 4주차에 이르렀다. 내 프로젝트명은 "ㅇㅇ초등학교 급식 챗봇 만들기"!!! 노션에 페이지들을 만들어 매주 모두가 회고를 남기기로 했는데, 어제 중간발표도 한 겸 지금껏 썼던 회고들을 올려본다. 1주차(4.20) (오늘 Sprint Seoul에 오느라 모각코 첫 시간에 참여하지 못했습니다.ㅠㅠ) 전 초등학교 급식을 알려주는 카카오톡 챗봇을 만들겁니다. 급식은 한 달 혹은 1주에 한 번 정도 초등학교 웹사이트에서 파이썬 크롤러로 긁어올 거예요. 코드가 간단할 것 같아 서버를 따로 띄우는 대신 AWS Lambda와 API Gateway를 사용해 서버리스 아키텍처를 구현하고자 합니다. DB는 AWS Dyna..
"경력 개발에 관심있는 개발자라면" 존 손메즈 <커리어 스킬>
2019.05.05beforeSend: 먼저 은 개발자의 삶이 아닌 개발자의 경력에만 집중한 책이다. 그래서 저자인 존은 독자의 유형을 나누어 각각에게 '특히' 도움될 만한 부분을 서론에 언급한다. 초보자 혹은 소프트웨어 개발을 배우고 싶은 사람: 1부, 2부 중견 개발자: 3부, 5부 경험이 풍부한 전문가: 다 아는 내용이겠지만 전부 도움이 될 것. 특히 4부, 5부 책의 목차는 이렇다 소프트웨어 개발자로 입문하기 일자리 구하기 소프트웨어 개발에 대해 알아야 할 것 개발자로 일하기 경력 발전시키기 이 책은 무려 700쪽이 넘기 때문에 읽다 지치지 않으려면 본인에게 도움되는 항목부터 읽는 게 좋다. 나는 4년차 개발자이고 소프트웨어 입문보다는 경력 관리에 관심 있어 3부와 5부를 먼저 읽었고 그 뒤에 1부, 2부, 4부를..
마이크로소프트웨어 396호 "Literacy Adrenaline" 후기 (1)
2019.04.28문서화, 왜 중요한가 | 강희석, 유희권 프로젝트에서 문서화는 작업수행 근거이자 증명이며, 다음 작업의 입력물이다. 요구사항에 맞고, 품질 좋은 소프트웨어를 만들기 위해 문서화는 필수다. 이 글에 적혀있던 개발 문서, 계획서에 대한 요약을 쓰고 있다가 내가 지금 이걸 쓰는 이유를 떠올렸다. 내 회사 업무에, 내 개인 프로젝트에 적용하려고. 그럼 굳이 여기 요약을 쓸 필요 없이 적용하면 된다. 그래서 오늘 저번 주 시작한 개인 프로젝트의 계획서를 만들었다. 나와 밥벌이와 기술, 그리고 유니볼 볼펜 | 이종국 인간은 기술과 어떤 관계를 맺을 수 있는가. 꽤 거창한 제목이다. 나는 이 질문에 논리적이고 멋진 답을 할 능력이 안 된다. 다만 나는 병원에서 나온 후, 내 생활을 보는 관점이 약간 바뀌었다는 것을 ..
[AWS] Lambda 프록시 통합을 사용하여 API Gateway로 간단한 곱셈 API 만들기
2019.04.21읽지 않아도 되는 서론; 2016년에 Lambda랑 API Gateway로 API 만드는 튜토리얼을 올렸었는데 이제 시간도 좀 지나고 AWS 콘솔 UI도 바뀌어서 업뎃해보고자 한다. 그리고 이번엔 Lambda 프록시 통합으로! Lambda 함수는 Python 3.6으로 작성했으나 워낙 간단해서 무슨 언어로 하든 상관 없다. 빨리빨리 하면 5분 안에 끝낼 수 있다. 0. AWS Lambda 함수 생성 AWS 콘솔의 Lambda 서비스로 가서 '함수 생성'을 누르고 함수를 빨리 생성한다. 아놔 곱셈 API인데 GuguFunction이라 했다. 뭐 어쨌든 Lambda 권한을 가진 role이 없다면 하나 생성한다. 1. Lambda 코드 작성 아래로 스크롤을 내리면 코드를 작성하는 부분이 있다. 여기에 아래 코..
[Python] Service Account로 구글 스프레드시트 업데이트하기
2019.04.15읽지 않아도 되는 서론; 구글 시트를 업데이트하려면 당연히 별도의 인증절차가 필요하다. 업데이트하려는 자가 그 시트에 대한 접근 권한이 있는지 알아야 하기 때문이다. 이건 시트 공유 설정을 '링크가 있는 모든 사용자가 수정할 수 있음'으로 해도 마찬가지다. 한편 구글에서 제공한 Python Quickstart를 보면 OAuth 2.0 클라이언트 인증을 사용하는데, 이렇게 하면 유저가 구글 로그인을 해서 권한을 얻어 시트를 열거나 수정할 수 있다. 다만 내 시트를 내가 수정하는 경우 이 방법을 사용하면 매우 귀찮다는 생각이 든다. 유저 정보가 필요한 게 아니고 내 애플리케이션을 가지고 작업하는 거니까. 물론 별도의 작업을 거쳐 OAuth 클라이언트로도 로그인 없이 작업을 수행할 수 있지만 약간 번거롭다. ..
Women TechMakers Seoul 2019 스텝 후기
2019.04.14(참가자 입장이 아닌 스텝 입장에서 쓴 글이다!) 2017년에도 Women TechMakers를 참가했던 적이 있는데 그때 기억이 좋았어서 이번엔 스텝으로 참가해보았다. 6:30 AM 행사 일주일 전 간단히 사전 모임을 가진 뒤, 행사 당일인 오늘(4.13) 코엑스에서 8시에 집결했다. 출근 시간이 10시인지라 평소보다 두 시간은 일찍 일어나야 했는데 약간 늦잠을 자서 아빠가 태워다줬다. 근데 막상 가보니 내가 1등이었다!!! (30분 일찍 감;;;) 8:00 AM 8시 즈음 옷을 갈아입은 뒤 출석체크를 하고 본격적으로 가내수공업(?)을 시작했다. 참가자들에게 나눠 줄 에코백에 물과 유리컵, 팜플렛, 스티커, 와펜 등을 넣어 일렬로 쌓아두는 거였는데 간만에 단순노동을 하니 정말 신선했다. 누군가 아이돌 ..
컴퓨터 네트워크 - 4) 전송 계층
2019.04.13물리 계층, 데이터링크 계층, 네트워크 계층, 이 세 계층이 있으면 목적지까지 데이터를 보낼 순 있지만 데이터의 손상/유실은 보장해주지 않는다. 그래서 전송 계층이 필요하다. 전송 계층은 1) 오류가 발생하면 데이터를 재전송하도록 요청하고 2) 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별함으로써 목적지까지 신뢰할 수 있는 데이터를 전달한다. 다중화와 역다중화 전송 계층은 다중화(multiplex)와 역다중화(demultiplex) 기능을 가지고 있다. 다중화는 소켓들로부터 데이터를 모으고, 세그먼트 생성을 위한 헤더 정보를 기반으로 이들을 캡슐화하여 네트워크 계층으로 보내는 것이다. 역다중화는 전송 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 것이다. 전송 계층은 포트(port)를 통해 이러..
컴퓨터 네트워크 - 3) 네트워크 계층
2019.04.11데이터링크 계층에서는 해당 네트워크 내에서만 통신이 가능했다면, 네트워크 계층은 네트워크 간의 통신을 가능케 한다. 이때 라우터(router)라는 장비가 사용되는데, 라우터는 목적지까지 어떤 경로로 가는 것이 좋을지 알려준다. 한편 경로를 알려면 목적지를 알아야 하는데 이때 사용되는 것이 바로 IP 주소이다. 데이터링크 계층의 이더넷 헤더에 목적지 MAC 주소와 출발지 MAC 주소가 있었다면, 네트워크 계층의 IP 헤더에는 출발지 IP 주소와 목적지 IP 주소가 있다. 참고로 데이터링크 계층에서 데이터에 이더넷 헤더와 트레일러가 추가된 것을 프레임이라 한 것에 반해, 네트워크 계층에서 데이터에 IP 헤더가 추가된 것을 IP 패킷이라 한다. IP 주소의 구조 IP 주소는 ISP로부터 받을 수 있다. 공인 ..
컴퓨터 네트워크 - 2) 데이터링크 계층
2019.04.09데이터링크 계층은 네트워크 장비 간에 신호를 주고받는 규칙을 정한다. 이 계층에서 가장 유명한 프로토콜은 이더넷(Ethernet)이다. 허브는 목적지를 판단하지 못해 모든 컴퓨터로 신호를 보내는데, 이더넷 헤더를 추가함으로써 목적지 외에는 신호를 무시하도록 한다. CSMA/CD 컴퓨터 여러 대가 신호를 보내면 데이터들이 서로 부딪혀 충돌(collision)이 일어나는데 이를 막기 위해 이더넷은 CSMA/CD를 사용한다. CSMA/CD는 Carrier Sense Multiple Access with Collision Detection(반송파 감지 다중 접속 및 충돌 탐지)의 약자이다. 데이터를 보내려 하는 케이블에 신호가 흐르고 있는지 확인한 뒤(CS) 없다면 데이터를 보내고(MA), 충돌이 발생하고 있는..
컴퓨터 네트워크 - 1) 물리 계층
2019.04.06전기 신호에는 물결 모양의 아날로그 신호와 막대 모형의 디지털 신호가 있는데, 물리 계층에서는 네트워크 카드를 통해 0과 1의 비트열 데이터를 디지털 전기 신호로 변환시킨다. 케이블 네트워크의 전송 매체(데이터가 흐르는 물리적인 선로)는 크게 유선과 무선으로 나뉘어진다. 유선에는 트위스트 페어 케이블, 광케이블 등이 있고, 무선에는 라디오파, 마이크로파, 적외선 등이 있다. UTP(Unshielded Twisted Pair): 구리(copper)선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선이다. 실드(shield; 금속 호일이나 매듭 같은 것으로 외부 노이즈를 막음)로 보호되어 있지 않지만 가격이 저렴하여 많이 사용된다. 데이터 전송 품질에 따라 Cate5e, Cate5, Cate6 등으로 분류된다. ..
컴퓨터 네트워크 - 시작하기
2019.04.06"To a lot of people, networking is seen as some kind of black magic. And only certain people really understand what's going on. But in my experience, an IT support person who truly understands networking at a fundamental level, is just able to perform every aspect of their job so much more successfully." - Alex Hidalgo, "The Bits and Bytes of Computer Networking" 흔히 네트워크라는 단어는 서로 다른 무언가가 연결될 때 사..