PurgeCSS로 사용하지 않는 CSS 한 방에 제거하기: 웹 성능 최적화 팁
한번에 CSS를 정리 할 수 있는 방법 없을까?? 지난 1년간 우리 Q&A플랫폼은 많은 개선이 있었고 또 사라지는 기능도 있었고 정말 엄청난 변화를 겪었다. 그 과정에서 추가된 기능에 대한 CSS 가 많이 추가 되었다. 하지만 사용되지 않는 CSS 에 대한 코드리뷰 및 검토는 확인해 보니까 많이 이루어 지지 않았다. 삭제된 기능에 대해서...
한번에 CSS를 정리 할 수 있는 방법 없을까?? 지난 1년간 우리 Q&A플랫폼은 많은 개선이 있었고 또 사라지는 기능도 있었고 정말 엄청난 변화를 겪었다. 그 과정에서 추가된 기능에 대한 CSS 가 많이 추가 되었다. 하지만 사용되지 않는 CSS 에 대한 코드리뷰 및 검토는 확인해 보니까 많이 이루어 지지 않았다. 삭제된 기능에 대해서...
submitform binding 우리 플랫폼을 글을 수정할때 form 을 사용하고 있다. form 은 html tag 중에 하나로 submit 될때 server 측으로 get 혹은 post 요청을 보낼 수 가 있다. 아래와 같은 느낌을 구성이 되어있다. <form action="/question/edit" method="POST" cla...
List 에서 특정 조건 삭제하기 할 때 RemoveIf 괜찮은거 같아! 팝업공지를 위해 공지하고 싶은 것들을 DB에 관리 하고 있다. 각 공지 건들은 언제가지 공지해라 라는 finishtimestamp 를 저장한다. 해당 finishtimestamp 는 지나게 되면 사용자의 공지에 나오지 않으며 지금 시간이 해당 timestamp 를 지나있다면 ...
중국어 tokenizing 중국 오픈을 하면서 중국쪽에서 검색이 잘 되지 않는다는 피드백이 들어왔다. 확인해보니 역시 한글처럼 형태소 단위로 띄어쓰기가 필요했다! pom.xml 에 추가해주고 <dependency> <groupId>com.hankcs</groupId> <artifactId>...
Client 시간을 가져와보자 이번에 공지사항 기능을 개선하면서 공지를 오전 9시부터 띄우기로 했다면 중국에서도 오전 9시에 딱 띄우도록 요구사항이 변경 되었다! 그것이 아니었다면 간단하게 UTC 시간을 사용했을텐데 이제는 Client 의 시간이 필요해졌다. 사실 이것도 어려운 문제는 아니었다. Client 단에서 지금 시간을 가져와서 ISO F...
UTC Time 으로 동시에 공지사항 종료 시키기 SW Q&A 플랫폼에 최근에 공지사항 기능을 개선을 하였다. 그 과정에서 공지를 올렸을때 언제 그 공지를 띄우고 또 언제 그 공지를 내릴지 설정하는 기능도 추가를 했다. 해당 기능을 사실 처음에는 단순하게 Admin 페이지에서 오전 9시 부터 시작하게 해줘 라고 하고 그 값을 client 로...
profile 을 동시에 2곳에서 수정하고있다? 예전에 추가된 newbie modal 이라는 기능이 있다. 처음 가입한 사람이 들어오면 modal 창을 띄워서 여러가지 설정을 한다. 사진, 닉네임, 본인 website, 메일 알림설정 등등 많은 것들을 설정하고 마지막으로 저장을 한다. 저장이 될때도있고 안될때도 있다. 정말 힘들었다… 왜 이게...
Filebeat + ELK 로 로그모니터링 하기 사내에 ELK 를 지원해주는 부서가 생겼다. 따라서 우리도 쉽게 로그 모니터링을 구축 할 수 있게 되어서 이번 기회에 도전해보려고 한다. 지금까지 로그는 사실 PVC Directory 에 모으고 있었다. 이랬을 경우 문제가 되는 점은 Kubernetes 상에 여러개의 서비스로 떠 있을 경우 로그 파일...
주소값이 다르도록 복사하기! Java에서는 배열을 주소값이 다르도록 Deep Copy 할때 2가지 방법으로 복사 할 수 있다! 우선 첫번째 방법은 그냥 복사이다. 그냥 복사는 말 그래도 하나하나 복사 하는 것이다. int[] srcArr = {1,2,3,4,5}; int[] dstArr = new int[5]; for (int i = 0; i &...
Copy 의 2가지 종류 Shallow, Deep 자바에서 객체를 복사하는데에 는 2가지 경우가 있다. 얕은 (shallow) 복사와 깊은 (deep)복사! 이걸 잘 모르고 개발하다보면 종종 실수하는 경우가 있어서 이번 기회를 통해 정리하고자 한다! 우선 Shallow Copy 는 주소값만을 복사한다. 그러니까 변수명만 다를뿐 실제 가르키는 것은...
팝업 공지 보지 않기를 개발해보자 우리는 materialize 의 modal 을 사용해서 사용자들에게 공지할 것이 있으면 공지를 하고 있다! 이전에 사실 이미 개발을 해놨었다! 공지할 이미지를 우리의 github private repository 에 올리고 Q&A 플랫폼에서 그 github repo에서 정보를 가져와서 보여주는 방식이었는데 ...
Scheduler 주기 정하기 처음에 Scheduler 를 추가할때 특정시간에 해야하는것 예를 들면 보지못한알림 메일을 매일 아침 9시 보낸다던가 이런 일이 아니고는 @Scheduled(fixed = 24 * 60 * 60 * 1000) 이렇게 해서 릴리즈 된 시점에 한번 실행하고 24시간마다 한번씩 돌도록 해두었는데 가만히 생각해 보니 이렇게 하...
조금 더 편리하게 DarkMode 지원하기 Q&A플랫폼은 다크모드를 지원하고 있다. 사용자가 DarkMode 로 설정을 하면 사용자의 브라우저 쿠키에 darkmode 에 true 를 저장한다. 쿠키를 봤을때 true 라면 기본인 styles.css 보다 뒤쪽에 dark.css 를 가져와서 style.css의 background color ...
synchronized 사용해보기 개발을 하다보면 여러개의 thread 들이 하나의 데이터를 접근하고 사용하는 경우가 있다. 그러면 race condition 이 생길 수 있고 여러 문제가 발생 할 것이다! 따라서 java 에서는 이것을 해결 하기 위해서 synchronized 가 있다! 예를 들면 아래와 같은 상황이 있다고 해보자! public...
iterate 가능한 Object for 문으로 돌기 가장 처음에 Q&A 플랫폼을 개발할 당시에는 java 도 거의 처음이었고 당연히 loop 를 iterate 할때는 for 문을 사용했었다. 우리가 운영하는 서비스에는 Poll이라고 투표기능을 만들었는데 해당 Poll 에 참가한 기록은 이렇게 구성이 되어있다 id : {poll 의 id...