조회수 개선2020. 03. 27.1분개선 방안 기존에는 매일 0시에 CRON 방식을 이용하여 포스트의 속성값을 변경하며 유지하였다. 처음 이 기능을 만들때는 그저 어제, 오늘, 총 조회수만을 간단하게 보여주는 것을 목표로했으나 포스트의 날자별 조회수를 보여주기 위한 방안을 다시금 생각해보게 되었고 부득이하게 데이터의 구조를 변경하게 되었다. 조회 측정 방식 리뉴얼 구조를 변경하면서 기존에 가지고 있었던 몇 가지 …
포스트 임시 저장2020. 03. 23.3분이 블로그는 정말 짜증나는게 포스트가 임시 저장이 안된다는 점이 매우 불편하다. 솔직히 지금까진 큰 무리없이 비공개 기능을 활용해서 어찌저찌 여차저차 써왔지만 임시 포스트 저장이라는 기능을 만들어 달라는 요청을 받아들여 해당 기능에 대한 구상과 DB작업은 끝냈음에도 불구하고 일하고 오면 피곤하다는 핑계로 계속해서 미루고 있다. 이번 주말에 만들어버릴 생각으로 계획 좀 해놓으려고 …
JavaScript 기본 문법 정리2020. 03. 23.28분자바스크립트의 변수, 연산자, 조건문, 함수, 배열 등의 기본적인 문법을 설명하고, 각각의 예시와 함께 사용 방법을 소개하였다. 최신 자바스크립트에서 추가된 let과 const, 화살표 함수 등도 다루었다. 배열과 관련된 메소드에 대해서도 설명하였다.
Rust-Lang의 Cargo2020. 03. 19.3분Cargo Rust-Lang은 Node의 NPM처럼 Cargo라는 공식 패키지 관리자를 제공하고 있다. 러스트 공식 문서에서는 source.rs를 생성하여 코드를 작성하는 것 보다는 Cargo를 이용하는 것을 추천하고 있다. Cargo를 사용하면 소스코드의 라이브러리 의존성을 간단하게 관리할 수 있다. 새로운 프로젝트 cargo new project_name 위 명령어를 사용하여 프로젝트를 생성할 수 있다. 라이브러리를 생성하는 거라면 아래와 같이 …
Rust-Lang의 소유권 이해하기2020. 03. 11.7분이번에도 파이썬으로 풀었던 알고리즘 코드를 러스트로 변환해 볼 예정이었다. 수 찾기라는 문제인데 해당 문제는 10만개의 숫자가 주어지는 만큼 빠른 속도로 탐색이 이뤄져야 하는 문제다. 필자는 직접 이진 탐색 트리를 구현하여 해결하였고 러스트에서도 그러할 계획이었다. 다만 이 문제를 해결하기 위해선 두가지의 지식을 알아야 했는데 러스트에선 어떻게 구조체를 구현하는가? 러스트에선 어떻게 구조체의 …
Rust-Lang으로 알고리즘 문제 풀기 (K번째 소수)2020. 03. 08.6분저번에는 기초적인 문제로 기초적인 문법을 다뤘으니 이번엔 파이썬으로 작성한 코드중에 뭔가를 러스트로 변환해 보고자 하였다. 2가지 정도를 변환해 볼 것인데 이번에는 백준에서 무려 25점을 받았던 (...) 개발자 능력 실화? K번째 소수라는 문제의 파이썬 코드를 러스트로 변환해 볼 것이다. 이 코드를 변환하는 이유는 필자의 궁금증을 해결하기 위함이다. 파이썬이기 때문에 25점을 받은건지, …
Rust-Lang으로 알고리즘 문제 풀기 (기초 다지기)2020. 03. 07.11분2019-12-10에 작성한 러스트와 관련된 첫 글인데 이번이 두번째 쓰는 글이다. 2-3일은 무슨... 3달이 훌쩍 지나버렸다. 맨날 '해야지 해야지' 하면서 '해야지'만 맨날 하는중이다. 정말 너란 녀석... 이제는 진짜 해야지! 진짜 진짜 스스로와의 약속을 하겠다. 죽이되든 밥이되는 무엇이건 러스트를 이용해서 해결할 것이다. 함수형과 러스트에 익숙해지기 위해서 2일에 하나씩 30일간 15개의 개시글을 꼭 …
파이썬 자료형 연산자 시간복잡도2020. 03. 04.5분최근 사고력의 향상을 위해서 꾸준하게 알고리즘 문제를 풀어보고 있다. 당연 필자가 가장 자신있는 언어라고 생각하는 파이썬을 응용하고 있는데 시간초과가 생각보다 많이 발생했다. O(1)로 접근할 수 있는 요소를 O(n)으로 접근하는 등 기본기의 부족으로 인함으로 보였다. 그리하여 파이썬의 각 자료형의 연산에 대한 복잡도를 어지간하면 숙지해 놓으려고 한다. 출처 : https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt 리스트자료형 리스트의 …
RESTful API의 개념과 장고의 REST Framework2020. 03. 02.8분RESTful API와 프론트엔드 프레임워크의 도입으로 서비스형 블로그의 발전을 시도하고자 하였다. REST API의 개념과 Django REST Framework의 구현에 대해 학습하였으며, HTTP Method와 Content-type을 알아내고 적절한 응답을 하는 것을 DjangoRESTframework로 구현할 수 있다는 것을 알게 되었다. 프레임워크의 도입은 구현을 간단하게 만들어주며, 코드의 재사용성을 높이고 프론트엔드와 백엔드의 완전한 분업이 가능하다는 장점이 있다.
1인 웹개발 프로젝트 : 중간회고2020. 02. 25.33분블로그 서비스 블렉스는 다양한 블로그 서비스의 장단점을 파악하고 본연의 기능에 충실한 서비스를 만들기 위해 개발되었습니다. 초기에는 마크다운 변환을 위해 GitHub API를 사용했으나, Parsedown 라이브러리를 활용해 서버를 열고 성능 개선을 이루었습니다. 이미지 업로드와 소셜 로그인 구현 등 다양한 기능을 개선하면서 조언을 구하는 등 진행 상황과 방향성을 불안해하면서도 노력하며 개발을 마무리했습니다.
React로 Hello World 출력2020. 01. 05.2분Hello, React React로 Hello World를 출력해보자. 기본적인 설치 방법과 사용 방법을 기록하기 위해서 작성한다. How to install npm install -g create-react-app How to make application create-react-app hello-world 위 명령어를 이용하여 애플리케이션을 생성할 수 있다. 생성된 디렉터리 아래 src 내부의 모든 파일을 지운 뒤 index.js와 index.css를 생성하고 index.js에 아래와 같은 내용을 …
Docker 명령어 정리2020. 01. 03.7분Docker 아직 도커를 잘 모르는 상태로 작성하였음을 감안해주시길 바라며 내용은 주기적으로 바뀌거나 추가됩니다. 또한 Ubuntu 20.04 LTS 기준으로 작성되었음을 안내드립니다. *설치를 제외한 모든 명령어를 동일하게 사용할 수 있습니다. 설치 sudo apt-get install docker docker-compose Docker 설치 후 아무런 작업이 안해줬다면 권한의 문제로 sudo를 지속적으로 붙여 사용해야 하는데 이 경우 아래 …
BLEX 2020 개발노트2020. 01. 01.17분December 2020. 12. 24. 다크모드가 시스템 옵션을 따라가도록 변경 2020. 12. 20. 몇가지 디자인 수정 (링크, 다크모드 색조 조절) 2020. 12. 16. 포스트 설정에 포스트 수정 버튼 추가 포스트 내부에 포스트 삭제 버튼 추가 내부 링크(같은 도메인)의 로딩 속도 향상 2020. 12. 14. 댓글 사용자 드래그 앤 드롭시 사용자 태그 …
신입 개발자 기술면접 준비하기2019. 12. 28.25분이 글은 전산 기초와 프로그래밍 패러다임인 객체 지향과 함수형 프로그래밍, 웹 아키텍처인 REST API, 소프트웨어 개발 방법인 TDD와 MVC 패턴, 자료구조인 순차 자료구조, 연결 자료구조, 스택, 큐, 트리, 힙, 그래프, 해쉬 등에 대한 개념을 설명하고 TCP와 UDP의 차이점 등 네트워크 개념도 다룹니다.
신입 개발자 자기소개서 준비하기2019. 12. 10.2분이 글은 자소서와 자기소개서 작성에 대한 개인적인 경험과 공부를 바탕으로 작성된 글입니다. 자소서 작성 시 첨삭을 받아가며 자소서가 소설에 불과하다는 생각을 하게 된 저자는 자기소개서 작성에 대해 책에서 배운 내용을 공유하면서 의지, 능력, 꾸준함 등의 요소를 강조하며 이를 토대로 자기소개서 작성을 조언합니다.
Pythonic이란 무엇인가?2019. 12. 10.4분Pythonic은 파이썬스러운 코드를 의미하며, 가독성을 높이기 위한 가이드라인인 PEP 8을 따르는 것이 중요하다. 코드 구문을 한 줄에 하나씩 작성하고, private 속성은 _(언더스코어)를 사용하여 표현하며, early return 방식을 사용하는 등의 규칙이 있다. 또한 lambda와 filter, map 활용, with open을 사용하는 등의 방식도 추천된다. PEP 8을 준수하는지 확인하기 위해 pep8을 사용할 수 있다.
Rust-Lang의 특징 Hello, Rust!2019. 12. 10.7분Rust가 추구하는 것은 C, C++보다 빠르거나 동등한 속도를 내면서도 Python 혹은 JavaScript 처럼 안정적인 것이었고 현재 러스트는 빠르고 안정적인 언어로 높이 평가 받고있다. 러스트는 어떻게 이러한 목표를 달성할 수 있었을까? 메모리 관리언매니지드 언어컴파일 언어에 속하는 C 혹은 C++는 프로그래머가 메모리를 제어한다. 프로그래머의 역량에 따라 속도 및 안정성에 많은 영향을 받는다. …
달력을 출력하는 알고리즘2019. 10. 31.5분달력 알고리즘 심플한 달력 프로그램을 만드려고 고민하는 도중, 최소한 달력을 자동으로 출력해서 토요일과 일요일은 다른색으로 표시하는 기능을 만들어 보려고했다. 하지만 딱히 달력이라는 개념에 대해서 생각하며 살아온 건 아니었기 때문에 기능을 구현하다가 막히게 되었다. 처음에는 시스템의 요일과 해당 일(3월 2일 금)을 가져와서 1일의 요일을 찾아가는 방식을 사용하려고 했지만 이미 만들어진 기능으로 …
프로그래밍 언어란?2019. 10. 23.8분각 프로그래밍 언어의 특징 및 패러다임에 대해서 분석하고 컴파일러와 인터프리터의 작동 원리 및 차이점을 아직 제대로 모르는 것 같아서 다시 복습하고자 한다. 내용들은 대부분 프로그래밍 언어 개념(원유헌), 클린 아키텍처(로버트 C. 마틴)에서 참고하였다. 프로그래밍 언어먼저 프로그래밍이란 무엇이고 프로그래밍 언어란 무엇일까? 필자가 생각하기에 프로그래밍이란 특수한 목적을 달성하기 위한 동작이 모여진 프로그램을 만드는 …
C++ 튜토리얼 3. 전처리기, Define과 Const의 차이2019. 10. 03.6분C++의 전처리기(preprocessor)에 대한 설명과 #include, #define, #if, #ifdef, #ifndef, #else, #elif, #endif 등 다양한 전처리기의 사용 방법에 대해 다루고 있습니다. 또한 #define과 const의 차이점에 대해서도 설명하고 있습니다.
C++ 튜토리얼 2. 함수와 배열 그리고 네임스페이스2019. 10. 03.8분지난번에 C++의 기초적인 문법이나 조건문 반복문에 다해서 다뤘습니다. 이번에는 해당 문법을 좀 더 활용할 수 있는 주제들을 다룹니다. 배열 #include <iostream> using namespace std; int main(void) { int Array1[3] = {0,1,2}; int Array2[3]; Array2[0] = 0; Array2[1] = 1; Array2[2] = 2; cout << "Array1 : " << Array1[0] << …
C++ 튜토리얼 1. 기초 :: 프로그래밍 언어 어떤거부터 배우지?2019. 10. 03.18분프로그래밍은 목적을 달성하기 위한 프로그램을 만드는 것으로, 컴퓨터에서 프로그래밍을 하기 위해 프로그래밍 언어를 학습하여 일련의 동작을 수행하도록 합니다. 이번 튜토리얼에서는 리눅스Debian을 이용하여 소스코드를 작성하고 컴파일 및 구동하는 방법을 알아보았습니다. 이를 통해 Hello, World! 문구를 출력하고, 사용자로부터 입력을 받아 출력하는 예제도 작성해 보았습니다. 프로그래밍을 시작하는데 있어서 쉬운 언어부터 시작하는 것도 좋지만, 어려운 것을 재미있게 시작하면 쉬운 것도 더욱 쉽게 익힐 수 있다는 점을 기억해두세요.
신입 개발자 포트폴리오 준비하기2019. 09. 30.9분신입 개발자가 포트폴리오를 제작할 때 어느 정도의 프로젝트를 해야하는지 고민하는 상황에서, 심플한 프로젝트를 만들어도 충분하다는 내용을 전달하며, 블로그를 프로젝트로 선택하여 개발하였다는 이야기를 담고 있다. 프로젝트를 개발하는 과정에서 REST API와 비동기 통신 등 최신 기술을 활용하여 프로젝트를 개선하였으며, 협업의 중요성을 깨달았다는 내용을 담고 있다.