| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 배열
- myshortcut
- ES6
- explode()
- oracle
- node.js
- 현대이지웰java풀스택개발자아카데미6월
- OOP
- 노션
- react
- MySQL
- mybatis
- JavaScript
- 객체지향
- 정규식
- formula
- 멀티캠퍼스it부트캠프
- 오류
- 깃허브
- dao
- INSERT
- Java
- DOM
- error
- php
- strpos()
- jQuery
- JDBC
- 부트캠프후기
- DTO
- Today
- Total
목록TIL (33)
코딩짜는 일상
📚 서론이번주는... 제가 최근에 어마어마한 업보 청산을 당해서......그것에 대해 기록 해볼까 합니다.🥲 시작은 2개 이상의 테이블을 JOIN하여 데이터를 가져올 때2개 테이블들의 필드가 전부 있는 별도의 DTO를 만들어야 하는 번거로움에서 시작되었습니다. 이때 강사님께 Map를 사용하여 데이터를 받는 방법도 있다고 조언 받았고 단일 테이블을 조회하는 게 아니면 대부분 Map을 이용하여 서비스를 구현하게 되었습니다.🤪 프로젝트 초반에는 별 문제가 없었는데중반 쯤 지나 구현할 리엑트 컴포넌트가 늘어나면서작업을 좀 줄여보려고 컴포넌트를 분리하고 재사용하면서 문제가 생겼습니다.😓 1️⃣ 필드명 스타일 통일의 필요성오라클은 큰따옴표(")를 쓰지 않는 한 대소문자 구분을 하지 않습니다. 때문에 테이..
📚 서론지난주에 이어 프로젝트에서 MyBatis로 기능을 구현할 때 php와의 차이점을 정리해 보겠습니다. php는 디테일하게 언급 안 할거라 써보신 분들을 독자로 가정하고 쓴 글이라고 보시면 될 것 같습니다. 주인공은 어디까지나 MyBatis와 오라클이니까요! 🎷 INSERT 직후 기본키(Primary key) 가져오기현재 저희 프로젝트의 상품 데이터에는 일반적인 상품 데이터 외에도그 상품에 포함되는 성분에 대한 데이터도 저장되고 있습니다. 성분 데이터는 저희 프로젝트의 핵심이라상품 데이터 외에도 여러 테이블과 JOIN되어야 하기 때문에별도의 매핑 테이블을 만들어 JOIN할 때 참조로 사용하고 있습니다. 그래서 새로운 상품을 등록하려면,먼저 상품을 등록한 후에 기본키(Primary key..
📚 서론과거 PHP를 쓸 때는 sql_query() 함수를 사용해 DB 통신을 구현했었습니다. 쿼리를 문자열로 작성해 param으로 제공하면 되는 간단한 방식이기에if문을 이용한 문자열 편집으로 간단하게 쿼리를 조립할 수 있었지만... 사실 이건 인젝션 공격에 취약하기 때문에 그리 현명한 선택은 아니었습니다.😥 물론 자체적으로 입력값에 UNION을 차단하는 기능을 추가해 방어했지만 여전히 위험요소가 있었죠...🥲 현재 팀 프로젝트에선 MyBatis를 채택해 DB 통신을 구현하고 있습니다. SQL을 직접 작성할 수 있어서 복잡한 쿼리 작성이 번거롭지 않고쿼리는 모두 XML에 모아두기 때문에 유지보수나 협업에도 용이하고무엇보다 값 바인딩 #{} 을 통해 입력값을 쿼리에 삽입하기 때문에 SQL 인젝션을..
📚 서론이번 주 포스팅은 MSA (MicroService Architecture)에 대해 써보겠습니다. 사실 특강은 몇 주 전에 했는데 그땐 내용 정리도 덜 됐고무엇보다 오라클 비교글이 너무 잘 써진 바람에 어쩔 수 없었습니다...덕분에 ERD를 몇 번을 갈아엎었는지...🫠 그렇게 속 썩인 것 치곤 테이블 생성 이후엔 별다른 차이점은 없습니다. 테이블 생성에만 이렇게 차이가 나는 걸 보면...어쩌면 데이터베이스의 핵심은 테이블 구조에 있는 걸지도 모르겠네요.🤔 🎷 MSA 탄생 배경전통적인 웹 애플리케이션 구조는프론트 엔드, 백엔드, 데이터베이스로 나뉘는 3계층 아키텍처입니다. 예시로 홈페이지에 게시판을 하나 추가한다고 해보죠. 가장 먼저 DBA에서 게시판의 데이터를 담을 테이블을 생성할..
📚 서론이번 주는 제가 장기간 써오던 MySQL과현재 참가중인 풀스택 개발자 과정에서 배운 오라클의 차이점을 알아보겠습니다. 사실 둘 다 SQL을 베이스로 하기 때문에 달라봐야 얼마나 다르겠냐 싶었는데프로젝트를 시작하고 실제로 테이블을 만들어보니까 차이점이 확연히 와닿았습니다. 그리고... 오라클이 다소... 조금... 까다로운... 편인 것 같습니다...🥹 그래도 어렵고 까다로울수록 사람보단 기계(?) 친화적이라는 뜻이니까잘만 쓸 수 있다면 사용자에게 더 좋은 서비스를 제공할 수 있을 겁니다! 실제로도 MySQL 보다는 오라클이 복잡한 계산이나 대량의 데이터 분석에 강하다고 합니다. 대량의 텍스트 정보에서 원하는 서치를 빠르게 해주는 CTXSYS.DRITHSX.SN 같은 기능도 제공하고 있습니다...
📚 서론과거 제가 깃을 활용하던 방법은 브런치명을 추가하려는 기능명으로 만들어서완성되면 main에 Merge 하는 식의 매우 단순한 운용이었습니다. 그러다 이번 팀 프로젝트를 진행하면서 좀 더 자세히 다루게 되었는데요. 저희팀은 GitFlow 전략을 일부 채택해서 main과 develop 브런치를 기본으로 두고깃허브에서 이슈를 생성, 이슈번호를 토대로 브런치를 만들어 작업 내용을 Commit하기로 했습니다. 기능을 완성한 후에는 pull request를 생성해 develop과 Merge하고문제가 없으면 다시 pull request를 생성해 main과 Merge하는 방식입니다. 그런데 여기서 또 문제가 생깁니다. (매일이 문제 해결의 연속...🥹) 저는 깃허브에서 단순히 Repositories만 생성..
📚 서론스프링 부트로 프로젝트를 만들면 바로 실행할 수 있을만큼 대부분의 설정이 완료되어 있지만뷰 파일 만큼은 특별히 강제하는 스타일이 없기 때문에 따로 설정해 주어야 합니다. 지금까지 강의를 배우면서 배운것이 JSP였기 때문에이번 팀 프로젝트도 스프링 부트 프로젝트에 JSP의존성을 추가하였습니다. 근데 여기서 문제가 하나 생깁니다. 지난주 포스트였던 비동기 통신을 통해 데이터를 받아온 다음직접 html태그를 작성하고 jQuery나 Javascript를 이용해 브라우저 화면에 삽입하도록 만들면 일단 만드는 작업이 너무 번거로운데다 내용이 조금만 더 길어지면 수정하는 일이 쉽지 않았습니다. 그래서 비동기 통신을 요청하면 데이터를 별도의 JSP 파일로 전달하고거기서 html 태그를 구성한 다음 통째로 ..
📚 서론지금까지 자바와 스프링을 거쳐 스프링 부트까지 배워보았는데요. 자바라는 언어를 이용해 웹 애플리케이션을 간편하게 구현하고자기술이 서서히 발전하는 과정을 간접 체험하게 되어 즐거운 여정이었습니다. 현재는 팀을 꾸려 프로젝트를 준비하고 있는데요. 본격적으로 기능을 구현하려고 보니까 사용자의 매끄러운 서비스 이용 경험을 위해비동기 통신이 생각보다 자주 쓰이는 것이 보였습니다. 그래서 이번 주 부터는 프로젝트 만들면서 자주 쓰인 기능을 소개해볼까 해요! 비동기 통신이란❓클라이언트가 화면 전환 없이 서버측에 데이터를 요청할 때 사용하는 기술입니다. 회원가입을 할 때 내가 입력한 아이디를 사용할 수 있는지 없는지 확인하려고별도의 페이지로 이동했다가 다시 입력창으로 돌아오면 좀 번거롭겠죠...? 뿐만..
