본문 바로가기

분류 전체보기29

[Java] 문자열 자르기 split ( Limit 사용하여 마지막 빈 문자열 담기 ) 그동안 split 은 단순히 구분자를 이용하여 문자열 자르는 용도로만 써오다가 코딩테스트 문제를 풀다가 split 의 기능을 제대로 알게 되었다. 문제 주어진 문자열이 예를들어 String str = "a-b--c-d--" ; 일경우에 split 을 하여 마지막 빈 문자열도 배열에 담아야 한다. 해결 split() 메소드는 2가지 메서드로 분류된다. public String[] split(String regex) public String[] split(String regex, int limit) 첫번째 방법으로 문자열을 자르면 [a, b, , c, d] 로 마지막 빈 문자열을 무시한다. 두번째 방법은 양수,0,음수 일때 세가지로 분류된다. limit > 0 limit - 1 만큼 패턴이 적용되고, 나머지.. 2023. 9. 12.
[Vue.js] chunk-venders.js 용량 줄이기 및 속도 개선 Vue.js 로 개발 후 운영 중인 사이트에 문제가 생겼다. Vue.js 는 처음에 모든 리소스를 한번에 받아오는게 문제였다. 그 모든 것이 압축된 파일인 chunk-vendors.js 파일의 크기가 작을때는 문제가 없지만, 어느새 12.3MB 까지 불어난 탓에 인터넷 속도가 느린 나라에서는 처음에 화면을 불러오는데 너무 많은 시간이 걸린다고 한다. 처음에는 lazy-loading 으로 컴포넌트 단위로 분리를 시켜보았지만, 차이가 미미 했다. 이 밖에도 이미지 사이즈 줄이기 등 다양한 방법이 있지만 구글링을 통해 chunk-vendors.js 을 일정한 크기로 쪼개는 방법을 찾았다. // vue.config.js 파일 configureWebpack:{ mode: 'development', devtool:.. 2023. 5. 18.
Java 에서 XML 두개의 파일 비교 하기 - XMLUnit XML 파일 두개를 비교해야 하는 일이 있어서 찾아보니 XMLUnit 이라는 라이브러리가 있었다. 그리고 XML 파일 내용 중에서도 특정 속성(Attribute) 값은 제외하고 비교해야 했다. 처음에 찾았을때는 1.* 버전으로 확인해서 내가 원하는 기능을 찾을 수 없었고, DocumentBuilder 로 DOM 으로 만들어서 비교해야 하나 고민하고 있을때 Apache 에서 제공하는 XMLUnit 의 2.* 버전이 있다는 것을 알았고, 바로 문제를 해결 할 수 있었다. Maven dependency 는 다음과 같다. org.xmlunit xmlunit-core 2.9.0 test 첫번째 테스트 코드는 다음과 같다. @Test public void xmlUnitTest() { String source = ".. 2023. 4. 6.
Access denied for user 'root'@'localhost' 해결 문제 발생 여느때와 같이 mysql -u root -p 로 접속을 하려고하는데 ????? 뜬금 없이 에러가 발생했다. 검색해본 결과 초기설정 되어있는 mysql 의 root 계정의 패스워드 타입 때문이란다. 이를 변경해주기만 하면 간단히 해결할 수 있다. sudo mysql -u root sudo 를 사용하여 root 계정으로 접속 한다. mysql> use mysql; mysql> select user , host , plugin from mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------.. 2023. 2. 16.
Chrome 브라우저에서 javascript 디버깅 하는 간단한 방법 크롬에서 F12 개발자 도구를 통해 javascript 디버깅이 가능하다. 단, 소스 탭에서 해당 소스를 찾아서 breakpoint 를 걸어야 디버깅이 가능하다. 그런데 가끔 JSP 내부에 있는 javascript 소스를 디버깅을 해야 한다거나 프로젝트 구조를 다 파악하지 못했을때 소스를 찾는 것도 시간이 걸린다. 그럴때 간단한 방법이 있다. debugger; 아래와 같이 디버깅을 하고 싶은 코드 위에 debugger; 한줄만 적으면 해당 이벤트가 걸렸을 때 바로 디버깅을 할 수 있다. 2023. 2. 1.
[Intellij] 대소문자 상관없이 자동완성 하기 Eclipse 를 쓰다가 Intellij 로 넘어왔을때 제일 당황스러웠던 부분이 Intellij 는 대소문자를 구분하여 자동완성이 되는것이었다. 찾아보니 Settings 에서 설정 할 수 있었다. Settings -> Editor -> Code Completion 에서 상단에 Match case 체크를 해제하면 대소문자를 가리지 않고 자동완성된다. 2023. 2. 1.
[Java] 소인수분해 소인수분해란? 소인수분해는 어떤 수를 소수인 인수로 분해하는 것이다. 소수는 1과 자기 자신으로만 나누어 떨어지는 정수를 의미한다. 코딩테스트 문제에서 자주 접하게 되어서 정리하게 되었다. 문제 정수 n 이 주어졌을때 소인수를 한 줄에 하나씩 출력한다. int n = 420; @Test public void test() { for (int i = 2; i 2022. 11. 14.
[Vue.js] Chart.js 차트 데이터 0 인 값 숨기기 Chart.js 플러그인을 처음 사용할때는 custom 이 쉽지 않아 보였는데, 이것 저것 적용하다 보니 역시나 내가 잘 몰랐던 것이었다. 누적차트를 만들고 나서 아래와 같이 Mon ~ Sun 까지 값이 0인 데이터까지 표시하는 것은 불필요하다 생각되었다. 이전 게시글에서 total 값을 나타내는 것을 활용하여 0 인 데이터들을 숨겨볼 것이다. tooltips: { callbacks: { footer: function (data) { // 누적 총합을 나타내는 코드 var total = 0; for (var i = 0; i < data.length; i++) { total += data[i].xLabel; } return "Total: " + total; }, // 추가된 코드 label: functio.. 2022. 11. 8.
[Vue.js] Chart.js labels hover 시 데이터(tooltip) 보이기 Chart.js 에서 기본적으로 해당 막대/차트 위에 마우스를 올려야 tooltp 이 보인다. 그런데 위와 같이 June 은 8000건 이상이고 January 는 10건일때 범위 차이가 너무 커져서 막대위에 정확히 마우스를 올리기 쉽지 않다. 이 상태는 사용성이 너무 떨어져서 January 라벨 위에 마우스를 올렸을때도 tooltip이 보이도록 즉, 각 라벨위에 hover 가 동작하도록 변경하려고 한다. options: { tooltips: { mode: 'index', intersect: false }, } 간단하게 options 에 이렇게 추가하면 된다. chart.js Document 에 다음과 같이 설명하고 있다. 설정이 true 이면 intersect첫 번째 교차 항목이 데이터의 인덱스를 결정하.. 2022. 11. 4.
[Mac] M1 가상머신으로 ubuntu 설치 및 실행 (VirtualBox, UTM) VirtualBox 대신 UTM Window 에서 리눅스 공부를 할때 같은 방법으로 Mac M1 에서 공부를 하려 했더니 M1 에서는 VirtualBox 를 사용할 수 없단다.. 그래도 대체할 수 있는 UTM 이 있어서 설치 및 실행을 해 보았다. 1. https://mac.getutm.app/ 링크에서 UTM 을 설치한다. 2. https://ubuntu.com/download/server/arm 링크에서 ubuntu arm 의 LTS 버전을 다운 받는다 3. 새 가상머신 만들기 클릭 4. Virtualize 선택 및 Linux 선택 Virtualize 는 arm64 환경에서 매우 빠르고, Emulate는 x86\_64 아키텍쳐를 사용하여 비교적 느리다. 운영체제는 Linux 를 사용할 것이기 때문에 .. 2022. 10. 28.