분류 전체보기 954

프로젝트 폴더에 폴더 생성

const fs = require("fs"); const checkDir = (path, callback) => { fs.stat(path, (err, stats) => { if (err && err.code === "ENOENT") return callback(null, true); if (err) return callback(err); }); }; const currentPath = __dirname; //__dirname이 현재 위치를 알려주는 기본제공으로 알려주는 변수 let path = `${currentPath}/test`; checkDir(path, (err, isTrue)=>{ if(err) return console.log(err); if(isTrue){ console.log('이미 동일..

42. JDBC 반복문제 해결

우리가 앞서 커넥터 얻어오고, 바인딩하고, 커넥터 반환하고 이런 try catch 이 부분이 리포지토리의 crud 모든 부분에 들어갔다. 이런 반복 문제를 효과적으로 처리하는 방법은 템플릿 콜백 패턴을 사용하는 것이다. 스프링은 이미 JDBC 반복문제를 해결하기 위해 JdbcTemplate를 제공한다. 그냥 쓰면 된다. @Slf4j public class MemberRepositoryV5 implements MemberRepository{ private final JdbcTemplate template; public MemberRepositoryV5(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } @Override publ..

40. 스프링 예외 추상화.

스프링은 저런 예외 관련한 문제에 지원을 해 주기 위해, 미리 데이터 접근과 관련된 예외를 추상화 하여 제공해 준다. DataAccessException은 추상 클래스 이다. 저 예외들은 특정 기술에 종속적이지 않게 설계가 되어, 서비스 계층에서도 사용하면 된다. 또, JDBC나 JPA를 사용할 때 발생하는 예외를 스프링이 제공하는 예외로 변환해 주는 역할도 스프링이 제공해 준다. 스프링이 제공하는 데이터 접근 계층 예외는 크게 2가지로 구분되는데, NonTransient와 Transient다. 직역은 일시적인 이란 뜻인데, 보면 transient 하위로 timeout등이 있는데, 말 그대로 일시적 오류라 다시 시도했을 때 성공할 가능성이 있는 것이다. 반대로 NonTransient는 잘못된 sql이라던..

뷰 태그 그룹핑

보통 css 그룹핑은 div로 하긴 하는데, vue의 같이 처리하고 싶은거 click me!!! +1 {{ msg }} Lorem ipsum dolor sit amet consectetur adipisicing elit. Tenetur delectus hic iusto, quibusdam dicta, sit doloremque accusantium eos repudiandae facere dolores tempora aliquid. Quod modi, autem pariatur ducimus tempore commodi? Good 이런 식으로 뭔가 같이 처리하고 싶은거 template로 묶음. 이건 html꺼가 아니여서, html은 못 읽음. v-if 이런 거 쓸 수 있음. 뷰 기술은 쓸 수 있음. 참고..

Vue.js 2023.10.05

변수로 스타일 바꾸기

Hello !!! export default { data(){ return { color : 'orange', fontSize : '24px' } }, methods:{ changeStyle(){ this.color = 'royalblue', this.fontSize = '64px' } } } 이렇게 줄 수 있다. 근데 참고로, key의 이름이 html 스타일 속성의 이름과 같다면, Hello !!! {{ isActive }} 이렇게도 가능하다. 그걸 넘어서, Hello !!! {{ isActive }} export default { data() { return { fontStyle: { color: 'orange', fontSize: '24px' } } }, methods: { changeStyle()..

Vue.js 2023.10.05

서버 띄우기

const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) =>{ res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!!!'); }); server.listen(port, hostname, ()=>{ console.log(`Server running at http://${hostname}:${port}`); }) http라는 외부모듈? 을 http라는 이름으로 가져오는 듯 하다. 거기서 호스트네임, 포트를 지정해 주고, http.createS..

39. 데이터 접근 예외 직접 만들기

아마도 SQLException 이런 걸 직접 만든다는 뜻 같다. DB오류에 따라서 사실 복구 가능한 경우는 많이 있지는 않지만, 복구 하고 싶은 경우가 있다. 예를 들면 계정을 새로 생성하는데 DB에 이미 같은 id가 있으면 이 id뒤에 뭔가를 덧붙여 만드는.. 그 외 우리가 id확인이나 닉네임 확인 할 때 같은 거 있으면 뒤에 뭐 붙여서 추천해주는 그런 경우 있는데, 그런건가봄. 날리는 오류코드도, 같은 SQLException이지만 오류의 종류에 따라 오류 코드 같은 것을 보내준다. 이것도 DB에 따라 다르긴 한데, H2같은 경우는 Primary Key를 사용한 것에 같은 걸 생성하려 든다면 23505이다. 42000은 sql 문법 오류. 이건 e.getErrorCode() 해보면 읽을 수 있다. 그럼..