전체 글 62

Spring Boot

스프링 부트 Gradle 프로젝트를 생성 HttpServlet이란 것은 Devtools 라이브러리를 새로 알게됐습니다. 톰캣 서버를 재가동하지 않아도 다시 빌드만 해줘도 새로고침으로 새 빌드본을 볼 수 있었습니다. HttpServletRequest는 사용자의 요청 정보와 쿠키, 세션 등의 정보를 제공하는 인터페이스이다. Container가 이 interface를 구현한 객체를 servlet에게 제공한다. MVC 패턴은 DI(의존성 주입) 개념과 밀접한 연관을 가지고 있다. spring-boot-starter를 통해 간결하게 의존성 구성을 지원할 수 있다. spring-boot-starter를 사용하지 않으면 Spring Boot 관련해서 스프링 부트 버전 사용하려는 라이브러리의 스프링 부트 스타터 지원여..

Spring Rest API 구현(1) : 게시판 CRUD에 앞서 로그인

출처: rebeccacho.gitbooks.io/spring-study-group/content/chapter16.html //세션이 연결 될 때마다 호출 되는 메소드 //Hashtable에 세션과 접속자 아이디 저장 //HttpSession#setAttribute(name, value) setAttribute 메소드 호출시에 name이 처음으로 바인인 되는 것이면 자동으로 호출 됨 //session.setAttribute("userInfo", userInfo); //session.setAttribute("userInfo", userInfo); //위 경우 valueBound 는 한번만 호출이 됨 @Override public void valueBound(HttpSessionBindingEvent eve..

카테고리 없음 2021.03.05

프로그라피 6.5기 회고

IT 개발 연합 동아리 프로그라피는 40%는 실력 있는 현업자분들, 서비스 개발에 관심이 많은 대학생 30%, 개발에 내공이 엄청난 운영진분들 30% 정도로 구성되어 있다. 운영진 분들이 Node.js, Django, React, Android, Ios 등 개발을 지원한다. 딥러닝은 6기까지 있다가 사라졌다. 코로나 19로 인하여, 2020년 상반기(6기)에 이은 7기를 2020년 하반기에 바로 진행하지 않고, 6.5기를 통해 6기의 팀들의 서비스를 좀 더 개선해보자는 것을 목표로 동아리의 활동이 기획되었다. 습관빵 팀에 안드로이드 개발자로 합류하다 9월에 습관빵 팀에 참여를 하게 되었다. Kotlin과 MVVM 패턴으로 클린 코드로 코드가 작성되어 있었다. 6.5기에 이런 수준 높은 팀에 참여를 할 수..

Destructing in ES6 and Babel소개

ES6, ECMAScript6, ES2015+ 모두 같은 말이다. ECMAScript는 JavaScript이다.->모호한 표현 JavaScript와 ECMAScript에는 차이가 있다. JavaScript는 ECAMScript의 표준을 따르는 범용 스크립트 언어이고, 다르게 표현하면 ECMA Script는 Javascript의 표준이다. 스크립트 언어는 독립된 시스템에서 작동하도록 특별히 설계된 프로그래밍 언어이다. 스크립트 언어의 개념을 설명하는 이유는 ECMAScript는 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공하기 때문이다. 구형 브라우저와는 호환이 안된다는 단점이 있다. 아직도 윈도우 7을 쓰는 컴퓨터가 많기 때문에 IE 점유율이 상당하다. ES2015+ 문법을 구형 브라우..

Dev Tools/Node.js 2021.02.09

Node.js 공부 계획

가까운 시일 내에 Node.js 개발 실무에 투입될 것 같아서, 설이 오기 전에 다시 한 번 칼을 뽑았다. SW중심대학, 일명 소중대 대학 연합 해커톤 이후에 Flask 프레임워크에 빠져있었는데, 다시 js의 감각을 깨우고자 javascript 공부 계획에 대한 글을 포스팅한다. 캡스톤 디자인(1)의 Pet Meeting 프로젝트에서 Express 프레임워크를 사용해서 Node.js 코드를 짤 때 프로그라피 친한 운영진이 알려준 MVC 패턴을 따라갔었다. 당시에 미들웨어 함수 TASK 등 이론적인 부분에 대한 공부가 부실했다는 것을 스스로도 알고 있다. 기본적으로 좋은 무료 강의도 많고, 스스로 클론 코딩을 통해서 실력을 늘릴 수도 있지만, 일단 검증된 빠른 길을 택했다. 빠른 Node.js 심화 공부를..

Dev Tools/Node.js 2021.02.09

Github dependabot

개발을 진행하다보면, package의 의존성 관리에 있어서 정말 힘든 부분이 모듈의 버전 관리이다. 프론트와 백엔드 모두 어려움을 겪을 수 있는 부분이다. 이번 포스트는 Git WorkFlow에 관한 것은 아니다. 선배 개발자 분들의 레포지토리에 가보면 Dependabot은 오래된 dependencies를 식별하면 pull request, 일명 풀리퀘를 보낸다. 변경된 릴리즈 정보를 검토한 후에 merge하면 된다. 가능한 configuration option들은 아래와 같다. YAML syntax를 사용하여 config.yml 또는 dependabot.yml을 만들어서 dependabot설정을 할 수 있다. commit-message Github Dependabot이 커밋할 때 어떤 것을 붙일 것인지를..

git 2021.02.08

SW 중심대학 공동 해커톤

대회 설명 대회 주최는 과학기술정보통신부와 정보통신기획평가원(IITP) 비대면 공동 해커톤의 사회 진행은 커먼컴퓨터라는 기업 manager 분이 맡아주셨다. 처음에는 개그맨이나...전문적으로 진행하시는 분인 줄 알았다...(죄송해요...~) [디지털 뉴딜을 향한 SW의 도전] 이라는 주제를 담은 해커톤이었다. 대회 공식 홈페이지 링크 swhackathon.com/ 이 대회는 2018년부터 매해 열려왔기에, 내년에는 (대면으로ㅎㅎ) 열릴 것이고, 많은 분들이 이 블로그로 유입되어 후기를 보고 가주셨으면 좋겠습니다! 행사 관련 정보는 아래 노션 링크에서 볼 수 있습니다~ www.notion.so/SW-6433e85fdb344af980a08d57430c9a9a 대회 전 (팀 빌딩) 대회 시작 대회 기간은 (2..

SQLAlchemy와 Flask

jsonify() 메서드 그리고 json.dumps()를 이용해 JSON형식으로 데이터를 직렬화하는 작업을 서버단에서 진행했다. (.venv) (base) apple@Appleui-MacBookPro we-act-backend % flask db upgrade INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> 00e9dbada757, empty message DB Migration에 대한 개념 없이 백엔드 개발을 하고 있었다. DB에 데이터..

MVC Pattern

애플리케이션을 Model View Controller 3가지로 분류해서 각자 수행할 것을 명확하게 나누어 구성하는 것을 말한다. Model은 비즈니스 로직을 View는 사용자 인터페이스를 Controller는 Model과 View를 제어하며 둘을 상호작용시키는 역할을 한다. 비즈니스 로직이란 데이터를 생성,표시,저장,변경하는 부분을 일컫는다. Controller를 중심으로 처리가 진행이 되고 데이터는 Model에서 받아오고 마지막 사용자에게 가는 작업을 View가 한다. Flask로 WeAct프로젝트를 구현하는 데에 있어서, Flask 프레임워크가 능숙하지 않다보니, app.py안에서 모든 기능을 구현하는 것을 선택했었다.

pm2와 config를 활용한 node.js app 실행 환경 관리

node.js 앱을 배포하다 보면, 모니터링,프로세스 관리 등 pm2에에는 기본 제공 로드 밸런서가 포함되어 있다. PM2를 이용하면 앱을 항상 정상 작동 상태로 유지하고, 시스템 가동 중단 없이 앱을 다시 로드할 수 있다. pm2 + config pm2 의 ecosystem을 활용하면 실행 시에 NODE_ENV 를 명시해서 넘길 수 있다. pm2 ecosystem.config.js --env production // ex) ecosystem.config.js { "apps" : [{ "name" : "worker", "script" : "./worker.js", "watch" : true, "env": { "NODE_ENV": "development" }, "env_production" : { "NOD..