JavaScript Client side 코드 사용자가 절대 디버깅 하지 못하게 하기
사용자가 개발자 도구로 디버깅하기 어려운 JS 코드 만들기 우리 플랫폼이 개발자 커뮤니티다 보니까 간혹 프론트 엔드 개발자분들이 있어서 우리 Q&A플랫폼을 디버깅 하는 경우를 몇 차례 목격한적이 있다. 그렇게 되면 api문서가 없이도 알 수 있게 되기도 하고 비즈니스 로직을 알게 될 수도 있으며 취약점이 노출이 될 수도 있다. 물론 이런...
사용자가 개발자 도구로 디버깅하기 어려운 JS 코드 만들기 우리 플랫폼이 개발자 커뮤니티다 보니까 간혹 프론트 엔드 개발자분들이 있어서 우리 Q&A플랫폼을 디버깅 하는 경우를 몇 차례 목격한적이 있다. 그렇게 되면 api문서가 없이도 알 수 있게 되기도 하고 비즈니스 로직을 알게 될 수도 있으며 취약점이 노출이 될 수도 있다. 물론 이런...
스프링에서 에러 발생시 이동하는 페이지를 만들어보자 개발을 하다보면 사용자는 항상 내가 생각하는 방향으로 움직이지 않는다! 절대로 내가 생각하지 못한 방식으로 행동하고 그것을 모두 커버 하기는 불가능이라고 생각한다! 우리 플랫폼도 에러가 발생했을때 white label page가 뜨면서 spring 자체 코드의 stacktrace가 보이게 되는 ...
List가 비어있을때를 확인 할 수 있는 방법은? 가장 처음에 드는 생각은 아래 방법일수도 있다. 사실 내가 그랬다! target_list = [] if len(target_list) == 0: return "Empty" 이렇게 하면 target_list의 길이를 가져오고 그것이 0 인지를 확인하는 것이다. 하지만 파이썬 개발자들은 대...
Github Repository를 그대로 옮겨보자 이번에 우리 repo를 다른 organization으로 이사해야하는 일이 생겼다! 그런데 코드만 쏙 옮기고 싶지 않고 commit, release, tag 기록들도 다 같이 옮겨지면 일하는 것에 큰 지장이 없을 것이라고 생각해서 통째로 옮겨 보려고 한다! 우선 코드만 한번 옮겨보자 그냥 코드만...
마치 endpoint가 랜덤하게 매번 바뀌는것 같은 페이지를 만들어보자! 계속해서 이벤트 준비를 하고 있는데 처음에는 비밀번호만 맞추면 내가 원하는 비밀 페이지 (/1d7ec9fq 이런식)로 redirect 하도록 하려고 했는데 이렇게 하면 사실 그 페이지의 url만 알게되면 누구든지 들어올수가 있다! 따라서 조금 더 생각해 보았다. 비밀번호를 ...
특정 패스워드를 입력한 사람만 들어 올수 있는 페이지를 만들어보자! 이번 컨퍼런스 행사때 부스를 운영하기로 했다! 부스에서 할 이벤트를 기획하는데 운영중인 Q&A플랫폼에 게임을 하나 심어서 랭킹을 저장하고 3위까지 치킨 상품을 주기로했다! 하지만 우리 플랫폼은 부스에 방문하지 않은 사람도 들어 올 수 있기 때문에 행사장에서만 비밀번호를 입력...
Geolocation 으로 client의 경도 위도 가져오기 최근에 혼자 버스 알림 서비스를 간단하게 만들어 보고 싶어서 토이 프로젝트 처럼 만들어 본게 있다. 어떤 사람이 들어와서 본인의 위치를 중심으로한 지도를 보게 되고 정류장을 클릭하고 버스를 누르면 2정거장 전에 알림을 받을 수 있게 한 서비스 인데 이 기능을 구현하기 위해서는 사용자의 현...
Spring 프로젝트를 진행 할 때 되도록이면 지키면 좋은 구조! 최근에 우리 Q&A 플랫폼의 대대적인 리팩토링을 진행하면서 마음에 담아두고 있어야 하는데 점점 잊어 갔던것만 같은 구조의 중요성에 대해 또 한번 뼈저리게 느끼게 되었다. 우선 Spring 은 Controller 가 있다. Controller 는 오직 model 혹은 resp...
이전에 개선했던 Table Index를 한번 더 개선해보자! 예전에 사용자가 이미 한번 조회했던 post의 조회수를 중복으로 늘리지 않기 위해 (1시간) 만든 Mysql table을 개선한 적이 있었다. 우선 사용하는 쿼리는 다음과 같았다. select distinct uri from user_log where knox_id = "id" and ...
권한에 따른 필터링은 back, front 둘다 있어야한다! 우리 플랫폼에서는 댓글 삭제 기능이 당연히 있다! 댓글을 삭제하기위해서는 Admin이거나 본인의 댓글이어야 한다. 따라서 html에 삭제 버튼을 Admin이거나 본인의 댓글이라면 표시해주었다. #if ($isAdmin || $comment.creatorid == $authUser.cre...
Java Resource leak 해결해보기 우리 플랫폼 코드에서 Resource leak 를 유발하는 코드가 발견 되었다! 파일이나 네트워크 그리고 데이터 베이스 연결을 한 다음에 연결을 끊지 않으면 리소스 누수가 발생하게 되는데 심각한 경우에는 시스템이 콱! 멈춰버릴수도 있다! 기존 코드는 아래와 같았다. OutputStreamWriter...
DB table Index에 대한 팁 몇가지 Query Tunning 공부를 해 나가고 있는데 이 과정에서 배운 DB Table Index에 대한 몇가지 꿀팁이 있어서 정리하고자 한다! 1. DB table Index 를 만들때 순서는? DB 의 Table 에 Index를 만들때 데이터를 먼저 다 넣고 index를 지정해야할까 아니면 ind...
어떤 툴이 제대로 설치되어있는지 확인하는 방법은 뭐가 있을까? python, java, c 와 같은 언어들의 스타일을 교정, 취약점 분석 등을 해주는 자동 파이썬 스크립트를 간단하게 개발해 본적이 있다. 그 여러가지 언어들을 교정해주는 다양한 Tool 이 이미 설치가 되어있어야 우리의 스크립트를 자유롭게 사용이 가능했다. 그런데 그 tool 을 사...
검색 후 Highlight 처리 로직 개선 우리 서비스는 궁금한것을 묻고 답하는 플랫폼이니 만큼 검색 서비스가 있다! 구글에서 검색을 하면 검색어가 Hightlight가 되는데 우리도 그 기능이 있으면 좋을것 같아서 기능을 구현해 놓았다. 해당 글자에 <span class="highlight">{해당 글자}</span> 이렇...
전체 공지 개선하기 Q&A 플랫폼 회원수가 계속해서 늘어남에 따라 예전에 작성해 두었던 코드들이 문제를 일으키는 경우가 종종 생겼다. 그중 회원수가 4천명도 채 되지 않았을때 만들었던 공지 알림 기능이 문제가 생겼다. 회원마다 각자의 Alarm 이 있다. 누군가 나의 글에 댓글을 달거나 나를 mention 하거나 알림을 줘야하는 상황이 오...