- Today
- Total
목록Category (318)
개발하는 고라니
이전에 Body-parser라는 어떤 고마운 분이 만들어준 미들웨어를 사용해보았다. 그런데 신기하게도, request에 body라는 property가 없었는데 어떻게 생긴걸까? 간단한 미들웨어를 만들어며 알아보자. Express의 Guide탭 중에 'Writing Middleware'라는 항목을 보면, 다음과 같은 예시가 있다. var express = require('express') var app = express() var myLogger = function (req, res, next) { console.log('LOGGED') next() } app.use(myLogger) app.get('/', function (req, res) { res.send('Hello World!') }) app.l..
Node.js는 보편적으로 'Express'라는 웹 프레임워크를 사용한다. 최근 'koa'의 사용빈도도 증가추세이다. 'koa'는 'Express'를 개발한 사람들이 모종의 이유로 새로이 만든 프레임워크로 알고있다. 그래서 사용방법도 거의 비슷하다고 볼 수 있다. Express, koa같은 웹 프레임워크가 무엇인지에 대해서는 나중에 다시 포스팅 하기로 하고... 오늘은 node.js에서 로 보낸 데이터를 사용해보는 방법을 익힌다. 'body-parser'를 사용하기 전엔 다음과 같은 방법을 사용했다. '/create'라는 URL로 id와 비번을 보내 회원가입을 하는 작업을 예를 들어보자. 제출 const express = require('express'); const qs = require('qs'); ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cfBv9p/btqSDtPJL2l/18VBOkU576UQ72BUws3ud1/img.png)
Browser에서 Server로 파일을 업로드 할 때, 취지에 맞지 않는 파일을 제한해야 할 때가 있다. 예를 들어 영화 포스터 이미지 파일(jpg, png 등) 만 업로드 해야한다면 방법은 다양할 것이다. 정규식으로 제어할 수도 있고, 서버 단에서 제어할 수도 있다. 이번에는 뷰 단에서 자바스크립트를 이용해 간단한 방법으로 이미지 파일만 전송되도록 한다. Upload 파일 업로드는 HTML의 태그를 이용할 수도 있지만 ajax를 사용하여 데이터를 보낸 후 처리했다. 에 여러 파일을 입력해서 업로드 후 콘솔 로그를 보면 전송한 파일의 정보가 찍힌다. 1111.png와 abc.txt 파일을 업로드 한 결과이다. 위와 같이 File의 정보들을 Javascript 객체에 담아 받아볼 수 있다. 이 중에서 't..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwEUT1/btqSsQqE52i/QVNP2q2wewkqGK5v74puZk/img.png)
교재를 보며 ajax로 파일 업로드를 테스트하는데... $("input[name='aaa']") 이런 $ 를 사용하는 것은 다 되는데 $.ajax에만 오류가 발생하였다. 물론 Jquery CDN을 추가하였다. 근데도 왜 이러지 구글링해보다가 근데도 여전히 오류가 발생했다. 여기저기 소스코드를 들춰내며 대체 뭐가 문제인가 하고 마지막 즈음 브라우저의 소스를 봤는데 여전히 slim 버전 cdn을 가져오는 것이었다. ?????????????????????????????????????????????????????????? 난 분명히 바꿨는데? 아차 싶었다... 이클립스에서는 view 페이지가 변경되면 서버를 재시작하지 않아도 자동으로 반영해주지만, IntellJ는 추가적으로 설정을 해줘야 한다. 망치 아이콘 옆..
학교 수업에서도 시간관계상 배우지 않고 건너뛴 스트림, 람다 등 내용을 공부해야지... 미루고 미루다 코드로 배우는 스프링 부트 웹 프로젝트 책으로 공부하는데 스트림을 모르면 쓸 수 없는 표현들이 나오길래 이제야 스트림에 대해 알아보는 시간을 갖는다. 자바 스트림은 기존 코드(for, foreach... 등)에 비해 간편하고 명료하며 직관적이지만, 스트림에 대해 알 때의 이야기이다. 또한 스트림은 불필요한 리소스를 줄여준다. # Stream * 파일에 쓰이는 InputStream, OutputStream 같은 I/O 스트림은 아니다 자바 8부터 추가된 자바 스트림은 - 추가된 컬렉션의 저장 요소를 하나씩 참조해 람다식으로 처리할 수 있도록 해주는 반복자이다. - 자바 8 이전에 배열or컬렉션을 다루는 방..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ci9Dlx/btqRqR6ntmx/9A9MxJisH13kapzCYKKZmk/img.png)
//플러그인 추가 plugins { id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } //의존성 주입 dependencies { implementation 'com.querydsl:querydsl-jpa' } //Gradle에서 사용할 추가적인 task def querydslDir = "$buildDir/generated/querydsl" querydsl{ jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations{ querydsl.extendsFrom compileClasspath } compileQuerydsl{ opti..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ss43H/btqQ3hqbbkT/IT0agysLdmFNoUkdeBx1Yk/img.png)
# ORM과 JPA - JPA(Java Persistence API) Java Persistence API의 약자로 Java 언어를 통해 DB와 같은 영속 계층을 처리하고자 하는 스펙이다. JPA를 이해하기 위해 ORM(Object Relational Mapping)이라는 기술을 선행해야 한다. ORM을 Java 언어에 맞게 사용하는 '스펙'이다. 따라서 ORM이 조금 더 상위 스펙이되고, JPA는 Java 언어에 국한된 개념이라고 볼 수 있다. JPA는 단순한 스펙이기 때문에 해당 스펙을 구현하는 구현체마다 회사의 이름이나 프레임워크의 이름이 다르게 된다. 다양한 프레임워크가 있지만 가장 유명한 것은 'Hibernate'이다. 기존 EJB에서 제공되던 Entity Bean을 대체하는 기술이다. ORM이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b12Vhl/btqQpsAbBDN/SI1xYTSgHbgnHcavLWzrLK/img.png)
* '코드로 배우는 스프링 웹 프로젝트' 교재를 1.5회(?) 완독 후, 스스로의 힘으로 게시판을 구현해보았다. 물론 미흡한 점이 심심찮게 발견되어 수정의 수정을 거듭했다. 그렇게 3~4주를 보내고 나니 다음엔 무엇을 만들어볼까 하던 차에, 문득 떠오른 것이 있다. '무수히 많은 치킨 브랜드가 있고, 그 많은 메뉴들을 한 곳에서 모아보면 어떨까?' 그래서 프로젝트라고 하기엔 뭣하지만 원하는 작업을 구현해보며 모르는 부분이 있으면 배워가고, 알던 내용이 있으면 다시 되새기는 목적을 가지고 시도해보려 한다. 먼저 '푸라닭' 사이트에서 메뉴 정보들을 크롤링해 뿌려주는 식으로 시작해보고 결과가 괜찮으면 다른 브랜드들도 시도해보는 식으로 점차 넓혀가겠다. * 교촌치킨의 메뉴 중 '교촌라이스세트'라는 메뉴의 이미지..