전체 글 338

[Life] 송장 자세를 하며 갑자기 들었던 생각

요가를 시작한 지 벌써 3개월 차에 들어섰다.요가의 마무리는 항상 같다.바로 힘을 다 풀고 편히 누워서 눈을 감고 짧은 명상을 하는 송장 자세(사바아사나)..! 나는 항상 송장 자세를 할 때 눈을 감고 생각을 덜으려고 했다.그런데 이번 주에 했던 송장 자세 시간에는 눈을 뜨고 싶어서 천장을 보고 있었다. 아니 그런데..갑자기 드는 생각죽음이 생각났다. 내가 몇 살에 죽든, 어느 장소에서 죽든, 결국 마지막에 내 눈으로 보는 장면은 천장이겠구나..이 생각이 나면서 뭔가 죽음 직전의 느낌이 들었다. 나는 항상 꽤 오랫동안 이런 생각을 했다.나는 당장 오늘, 혹은 내일 죽어도 후회없어! 그런데 그 생각이 무색하게도 죽음 직전의 느낌이 드니까 갑자기 이렇게 내 삶이 끝나기에 너무 아쉬운 느낌이 들면서 눈물이 살..

Life 2024.05.18

[회고] 늦은 SeSAC 회고

두 달후면 딱 새싹 교육 시작 날의 1년..1년이 되기 전에 작성해보는 늦은 회고..! 4달 간의 백엔드 교육이 끝나고 얻은 것 1. 개발이 더 재밌어졌다!새싹 교육 전에는 개발을 책으로 공부했다. 책을 다 보고 난 후는 인터넷 강의를 들었다.개발 기초까지는 개발 서적이랑 인터넷 강의가 잘되어있다.그런데 자바 기초 이후부터는 서적도 잘 없고, 어떻게 공부를 해야할 지 감이 안 잡혔다.나는 기초 다음 단계를 가고 싶었다..!자바 기초 공부가 아닌 정말 무언가를 만드는 개발을 해보고 싶었고, 사람들이랑 협업으로 팀 프로젝트도 해보고 싶었다. 그렇게 시작한 게 된 것이 새싹이었다!사실 집에서 도서랑 인강으로만 개발 공부하니까 막 재밌다는 생각이 들진 않았었다.그런데 확실히 오프라인으로 다 함께 공부하고, 프로..

Life 2024.05.18

[회고] 키오스크 프로젝트 회고

약 2주간의 키오스크 프로젝트 끝!! 생각보다 연휴가 껴있어서 시간이 많지 않았다ㅠㅅㅠ개발하면서 공부랑 정리도 병행하면서 잘 하고싶었는데 개발하기에 급급해가지고 정리를 많이 못해서 아쉽다..  이번에 내가 맡은 부분은 키오스크 메인 기능과 프론트!!메인이라 확실히 한 서비스 안에 여러 기능이 들어갔어야 해서 머리 쥐어짜내면서 개발했다. 예를들어 결제 전에 주문 상세를 확인하는 기능이라면주문 상품의 이름, 가격, 각 상품 별 개수, 총 개수, 총 가격 이렇게 조인된 테이블을 찾아서 값을 한 번에 출력하거나, 주문 완료 기능이라면주문 시간 업데이트, 주문 상태 업데이트, 구매 금액의 1% 적립, 주문 번호와 고객 적립금 출력 이렇게 한 기능안에 여러 기능이 들어가야 해서 기능 한 개를 짤때도 생각할게 많았다..

Life 2024.05.14

[Hanaro] 71일차 ~ 78일차 / 키오스크 프로젝트 완료 (회고)

약 2주간의 키오스크 프로젝트 끝!! 생각보다 연휴가 껴있어서 시간이 많지 않았다ㅠㅅㅠ 개발하면서 공부랑 정리도 병행하면서 잘 하고싶었는데 개발하기에 급급해가지고 정리를 많이 못해서 아쉽다.. 이번에 내가 맡은 부분은 키오스크 메인 기능과 프론트!! 메인이라 확실히 한 서비스 안에 여러 기능이 들어갔어야 해서 머리 쥐어짜내면서 개발했다. 예를들어 결제 전에 주문 상세를 확인하는 기능이라면 주문 상품의 이름, 가격, 각 상품 별 개수, 총 개수, 총 가격 이렇게 조인된 테이블을 찾아서 값을 한 번에 출력하거나, 주문 완료 기능이라면 주문 시간 업데이트, 주문 상태 업데이트, 구매 금액의 1% 적립, 주문 번호와 고객 적립금 출력 이렇게 한 기능안에 여러 기능이 들어가야 해서 기능 한 개를 짤때도 생각할게 ..

교육 (TIL)/Hanaro 2024.05.11

[개발Life] RESTFUL하게 구현해보았다. (RESTFUL 하다?에 이어지는 글..)

전체 기능 API를 REST API로 구현하였다! 저번에 REST API를 배우고 나서 다음 과제나 프로젝트를 할 경험이 생긴다면 꼭 전체 기능을 REST로 구현해보고 싶었다.마침 이번에 학원에서 백엔드 과제가 주어져서 이번엔 Model을 하나도 사용하지 않고 REST로 구현하기로 마음먹었다. API 컨트롤러와 View 컨트롤러 나누어서 생성MainApiController와 AdminViewController처음부터 @RestController 어노테이션을 준 건 아니고, @Controller 어노테이션을 먼저 주고, @ResponseBody를 붙여서 구현하였다.그리고 전체 기능 REST로 구현하고 확인까지 완료 후 @RestController로 변경하고 @ResponseBody를 다 지웠다! 이때 얼마..

Life 2024.04.25

[개발Life] 새로운 프로젝트를 들어가며 요즘의 다짐들..

1. 에러를 마주쳐도 당황하지 않기!콘솔 에러메시지 윗부분부터 차근차근 읽어서 에러 유추하고 고쳐보기요건 그래도 이제 몸에 익었다 히히옛날에는 에러 메시지 잘 읽으려 하지 않았는데, 이제는 에러나도 콘솔창 천천히 읽고 어떤 에러인지 유추한다!에러 메시지 읽고 앗 어디가 문제겠다! 하고 고치면 정말 그 문제가 맞는 경우일 때 짜릿하다  2. 디버깅하기이건 조금 더 연습이 필요하다.에러를 유추하는 것도 좋지만 결국에는 디버깅으로 에러 해결하고 싶다!에러나면 디버깅을 통하여 에러 고쳐보기  3. 커뮤니케이션 능력 기르기언제나 코딩 잘하고 커뮤니케이션 잘하는 사람을 만나긴 힘들다.우선 나부터 협업 잘하는 개발자가 되고 싶다.그리고 항상 겸손하기정말 타고난 사람이 아닌 이상 주니어 시절에는 다들 비슷하다고 생각하..

Life 2024.04.25

[Hanaro] 69일차 / Spring Boot (Security), 시큐어 코딩 (시간 및 상태, 에러 처리)

시큐어 코딩03 시간 및 상태검사 시점과 사용 시점 (TOCTOU)자원을 사용하는 시점과 검사하는 시점이 다르기 때문에 존재하던 자원이 사라지는 등 자원의 상태가 변화는 경우가 발생공유자원에 여러 프로세스가 접근하여 사용할 경우 동기화 구문을 사용하여 한번에 하나의 프로세스만 접근하도록 하고, 성능에 미치는 영향을 최소화하기 위해 임계코드 주변만 동기화 구문 사용예시public void run() { // 멀티쓰레드 환경에서 synchronized를 사용하여 동시에 접근할 수 없도록 사용해야한다. synchronized(SYNC) { try { if (manageType.equals("READ")) { File f = new File("Test_367.txt");...코드생략...public s..

교육 (TIL)/Hanaro 2024.04.25

[Hanaro] 68일차 / 시큐어 코딩 (보안 기능), Spring Boot(Security)

시큐어 코딩02 보안기능적절한 인증 없는 중요기능 허용적절한 인증과정없이 중요정보를 열람 또는 변경하지 않도록 해야한다.클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고 중요한 정보가 있는 페이지는 재인증을 적용한다.검증된 라이브러리나 프레임워크(OpenSSL, ESAPI)를 사용한다.예시// 1. 로그인한 사용자를 불러온다.String userId = (String) session.getAttribute("userId");String passwd = request.getParameter("oldUserPw");// 2. 회원정보를 실제 수정하는 사용자와 로그인 사용자와 동일한지 확인한다.String requestUser = memberModel.getUserId();if (userId..

교육 (TIL)/Hanaro 2024.04.25

[Hanaro] 67일차 / 시큐어 코딩 (입력데이터 검증), Spring Boot (네비게이션 바, 페이징)

시큐어 코딩 01 입력데이터 검증 및 표현 SQL 삽입 DB 입력 데이터에 대한 유효성 검증을 해야한다. 예시 JDBC String gubun = request.getParameter("gubun"); // 사용자 입력 값 변수를 ? 문자로 바인딩 변수 사용 String sql = "SELECT * FROM board WHERE b_gubun = ?"; Connection con = db.getConnection(); // PreparedStatement 사용 PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, gubun); ResultSet rs = pstmt.executeQuery(); Hibernate String name..

교육 (TIL)/Hanaro 2024.04.23