본문 바로가기

전체 글60

인간은 누구나 각자의 가면을 쓰고... 가면을 벗는 순간, 비로소 우리는 인생의 행복을 찾아 떠날 수 있다. 어떻게 보이는지가 중요한가 실제로 어떤지가 중요한 거지 ​ 그렇게 남들의 눈치를 봐서, 남들의 인정을 받아서 뭐 할까 ​ 인생의 주, 행복의 주체가 내가 아닌 타인으로 이루어진 삶 잘못되어도, 단단히 잘못되었다 ​ 행복한 삶이란 무엇인가 웃음이 가득한 삶은 무엇일까 참으로 알다가도 모르겠는 인생 ​ 가면과 의상들을 스스로 벗어 던지고 나체가 되고 나서야 비로소 인생의 행복을 찾아 떠날 자격이 주어졌고, 행복에 한 발짝 더 가까워졌고, ​ 나는 이제서야 행복을 찾아 떠날 수 있게 되었다 2023. 11. 29.
[chapter 1] 해볼게요? 사내 알고리즘 스터디 chapter 1. 시작이 반이다... 온갖 도파민 생성기들로 인해 하루하루를 의미 없이 보내기 쉬운 요즘 미래의 내가 현재의 나에게 고마워할 일들을 해보고자 시작한 사내 알고리즘 스터디 다행히도 나보다 훨씬 유능하시며 경험이 많으신 분들로 구성된 스터디이기에 배울 점이 많을 것 같다 스터디 팀장님이 쏘아 올린 작은 공 지면에 다다를 땐 부디 작지 않기를... 팀원들에게 "열정만 가득했던..." "초반엔 좋았는데, 갈수록..." 이런 식의 부정적인 키워드로 기억되지 않게 일을 벌린만큼, 유종의 미를 거둘 수 있기를 소망하며 to be continued...🌈 2023. 11. 28.
[mybatis] - ' #{} '이랑 ' ${} ' 똑같은 거 아니였어? 오늘은 mybatis 에서 혼동되기 쉬운 #{} 와 ${} 에 대해서 이야기해 보도록 하겠습니다 mybatis 란? Java 를 위한 오픈 소스 SQL 매핑 프레임워크 SQL Query 의 실행 결과를 Java 객체와 맵핑하는 기능을 제공하고 조건에 따라 SQL 문을 동적으로도 생성할 수 있는 기능을 제공하며 SQL 을 Java 코드와 분리하여 XML 파일이나 어노테이션을 통해 관리한다 따라서, 개발자 입장에서 SQL 문을 쉽게 작성하고 관리할 수 있고 JDBC 로 처리되는 상세한 작업들을 추상화기에 SQL 관리를 직관적으로 만들며 유지보수 측면에서도 효율적이다 (Query 실행, 결과 매핑, 트랜잭션 관리 등등) '#{}' (Parameter Binding) PreparedStatement 의 바인딩 .. 2023. 11. 17.
대용량을 대비한 DB... 어떻게 설정해? (feat.PostgreSQL) 어딜 가나 강조되는 DB... 그치만 실무를 경험하지 못한 입장으로서 보통 어느 부분을 신경 써야 하는지 도통 감이 잡히지 않는다 오늘은 변칙적이지 않고 정해진 카테고리 내에서 각각 필드가 정해질 경우 고려해 볼 만한 사항에 대하여 이야기해 보겠다 예시로 임의로 작성된 로그 테이블을 살펴보자 여기서 category 칼럼을 살펴보자 현재 post 와 login 두 가지의 카테고리만 존재하는 것으로 보이고, 이들이 반복된다 지금은 최대 5의 char을 허용하고 단순 post 와 login 두 개지만 더 긴 글자수를 허용하고 두 개가 아닌 100개 1,000개 10,000개 혹은 그 이상의 카테고리가 있다면? 당연히 쿼리문의 성능은 저하될 것이다 그렇다면 어떠한 방안이 있을까? 예시로 변경된 로그 테이블을 살.. 2023. 11. 14.
간단한 게시글 조회수 어뷰징 방지 (쿠키, 세션, ip 사용 X) - [Spring] 조회수 어뷰징 방지에는 여러 기법들이 존재한다 쿠키를 이용할 수 있고, 세션을 이용할 수도 있고, ip 를 사용할 수 있지만 여기서는 로직을 활용한 아주 간단한 방법을 소개하겠다 먼저 게시글 상세페이지 진입 코드를 살펴보면 // 게시글의 title 누르면 게시글 상세보기 페이지로 $(document).on('click', '.detailPost', function() { let postId = $(this).data('postid'); window.location.href = 'post/detailPost.do?postId=' + postId + '&viewSet=yes'; });​ 여기서 postId 는 게시글의 고유 식별 값, viewSet 에 대한 yes 는 조회수 증가 식별 키워드이다 그리고 해당.. 2023. 11. 13.
도대체 "==" 는 "===" 이랑 뭐가 다른거야? (JavaScript, Type Coercion, NaN) 자바스크립트에서 "==" 와 "==="는 어떤 차이가 있을까? 코드부터 살펴보자 22번 줄은 true, 23번 줄은 false가 산출된다 이유가 뭘까? console.log 로 typeof 를 출력해 보면 0 은 number 타입, "0" 은 string 타입 그렇다면 "==" 와 "===" 는 명백히 다르다는 것은 알겠는데, 도대체 뭐가 다른 걸까? 코드를 하나만 더 살펴보자 11번 줄은 true, 13번 줄은 false... 마찬가지로 console.log 로 typeof 를 찍어보면 0 은 number 타입, "false" 는 boolean 타입이라고 나온다 위 코드들을 바탕으로 유추해 보자면 "==" 는 단순히 두 변수의 값을 비교하고, "===" 는 두 변수의 값뿐만 아니라 자료형을 비교하는 느.. 2023. 11. 1.
method에 final을 붙이면 어떻게 돼? (final 메소드) - JAVA method 를 재정의(오버라이딩)를 원치 않을 경우, 어떠한 방법을 사용할 수 있을까? 바로 "final method" 를 사용하면 된다 위 예시와 같이 부모 클래스에서 정의한 메소드를 자식 클래스에서 그대로 사용하길 원할 경우, 여러 개의 method 가 존재하는 가운데 특정 method 만 재정의할 수 없도록 하고 싶을 땐 method 를 정의할 때 final 키워드를 붙이면 된다 2023. 10. 31.
final의 불가변성 (feat... list, Collections.unmodifiableList) - JAVA 개발을 하다보면, 불가변을 필두로 전역 변수를 선언해야 하는 경우가 존재한다 당연히 "final"이라는 키워드를 사용하여 MAXSPEED에 불가변성을 주입하였는데, 그것을 변형하려고 한다면 에러가 발생할 것이다 그렇다면, 데이터 타입의 범주를 넘어서 list 단위로 final이라는 키워드를 붙이면 어떤 현상이 발생할까? "final은 불가변성을 주입하는 키워드이고, final list로 list를 생성하게 되면 해당 list는 불가변일 테니, 내부에 있는 자료들 또한 불가변이지 않을까?" 라고 생각할 수 있다 과연 그럴까? 코드로 살펴보자 코드를 천천히 살펴보자 2번 줄에서 final 키워드를 사용하여 finalList를 생성하였다 그런데 4, 5, 6, 7번 줄에서 값을 자유롭게 삽입하거나 제거할 수 .. 2023. 10. 21.
728x90
반응형