전체 글
[footprint] 풋프린트 뜻, 의미
❔ footprint란? -. 하드웨어나 소프트웨어 단위가 차지하고 있는 공간의 크기 -. 프로그램 실행 중에 사용하거나 참조하는 메인 메모리의 총량 -. 최근에는 공간을 적게 차지하는 마이크로컴포넌트, 메모리를 작게 차지하는 소프트웨어를 가리키는데 쓰임 참고 : 제타위키 ❗ 실제 사용 예시 에서는 이런 문구가 있다. "C, C++는 프로그래밍 안전성은 부족하지만 작은 런타임 풋프린트 덕분에 운영체제와 다양한 임베디드 시스템에서 여전히 인기를 끌고 있다." 위와 같이 사용되며, 인기를 끌고 있는 이유는 메모리 용량이 크지 않은 임베디드 시스템이나 메모리 관리하는 운영체제의 경우 적은 footprint를 가져가는 경우가 좋기 때문이다.
방어적 프로그래밍(Defensive programming), 방어 코딩(defensive coding)
JAVA 프로그래밍을 할 때, 제일 자주 보는 Exception이 NullPointException이지 않을까? Exception 발생 코드를 보면 또 이렇게 생각하곤 한다. "아..? 이런 걸 놓쳤다고?" ❔ 방어적 프로그래밍 방어적 프로그래밍(Defensive programming)은 예상치 못한 입력에도 한 소프트웨어가 계속적 기능 수행을 보장할 수 있도록 고안된 방어적 설계의 한 형태이다. - 위키백과 방어적 프로그래밍은 방어 코딩이라고도 하며, 일반적으로 개별 메서드에 대한 입력을 확인하여 원하는 값(=정답)이 나올 수 있도록 프로그래밍한다. ❔ 그러니까 이게 무슨 말이지? 우리는 프로그래밍을 할 때, 쉽게 오류에 빠진다. 1. 발생하지 않을 일라고 생각하며 넘어가거나 ex: 사용자가 이름 입력..
[Java][Spring]BeanUtils.copyProperties() 정리 및 주의점
❔ 언제 사용? ➖ Class 간 복사가 필요할 때 -. 웹개발을 하다보면 VO와 Entity 간 동일한 멤버변수를 복사하는 경우가 많이 발생한다. -. Front단에서 입력받거나, Back에서 처리된 VO를 DB에 저장하기 위해 Entity로 옮기는(=복사하는) 경우 등 -. 그러한 경우에 각 멤버변수(=property)를 하나씩 get() -> set() 한다면, 굉장히 번거롭고 후에 유지보수하기도 불편하다. ❔ 번거롭다? 유지보수가 어렵다? 이유는? -. 멤버변수가 많으면 많을수록 복사하기 위해 굉장히 많은 Line의 get->set 코드가 필요할 것이며, -. 후에 변수명이 바뀌거나 변수가 추가된다면 ,해당 복사 코드에 찾아가서 수정해야 한다. ❗ 그래서 BeanUtils.copyPropertie..
[Mybatis]<sql>,<include>,<property> 태그 사용
➖. : 반복적으로 쓰이는 sql문의 재사용성을 높여준다. WHERE 1=1처럼 반복 사용하는 SQL을 동적으로 활용할 때 쓰일 수 있다. 아래 예시에서는 태그 안에 ORACL WITH절을 사용하였다. WITH DEPT( SELECT DEPT_CODE, DEPT_NAME, DEPT_LEVEL FROM DEPARTMENT ) ➖. : , 등에 구문을 넣을 때 사용한다. 의 refid 값은 태그의 id값과 같게 해야 include할 수 있다. SELECT UI.USER_ID, UI.USER_NAME, UI.USER_DEPARTMENT, DEPT.DEPT_NAME, DEPT.DEPT_LEVLEL FROM USER_INFORMATION UI INNER JOIN DEPT ON UI.USER_DEPARTMENT =..
[js][splide]이미지슬라이드 라이브러리
여러 이미지를 간편하게 슬라이드 뷰로 볼 수 있는 라이브러리가 필요했다. 여러 개 검색해본 결과, 가벼운 로딩과 다양한 유저 경험을 제공할 수 있는 라이브러리가 적합하여 splide를 선택하게 되었다. splide는 이미지를 여러 view로 볼 수 있도록 한다. 한 화면에 여러 개의 이미지라든가, Grid형식의 슬라이드, 동영상 첨부, 자동 슬라이드 넘기기 등 제공한다. 위 사진은 splide 사이트에 있는 이미지이며, 프로젝트에는 위와 같이 썸네일과 슬라이드가 동시에 보이도록 적용했다. 아래는 적용한 간단한 예시 코드로 HTML 부분과 Javascrip 부분이다. main슬라이드와 thumbnail슬라이드 두부분으로 구성하여 sync하여 구성하였다. splide 자세한 설명과 내용은 아래 사이트를 참고..
[js][Tippy]Tippy(Tooltip 라이브러리) 사용
프로젝트에서 툴팁을 태그 속성의 title 사용하기 때문에 시인성을 위해 개선이 필요했다. 간단하고 많이 사용하는 툴팁 라이브러리인 Tippy를 적용하여 해결하였다. Tippy 소개 및 적용 예시를 남겨둔다. 기본적인 소개 및 사용법 그리고 Demo까지 너무나도 깔끔하고 완벽하다. https://atomiks.github.io/tippyjs/ Tippy.js - Tooltip, Popover, Dropdown, and Menu Library The complete tooltip, popover, dropdown, and menu solution for the web atomiks.github.io Tippy는 기본적으로 popper라이브러리를 이용하여 툴팁, 드롭다운 등을 제공한다. 원하는 대로 CSS가..
[Git]내역에서 gitignore 대신 명령어로 제외하기
-- 변경내역에서 제거(= 변경내역이 없다고 추정하여 제거한다) git update-index --assume-unchanged [파일명] -- 변경내역에 다시 복구 git update-index --no-assume-unchanged [파일명] -- 변경내역에서 제거된 파일들 확인 git ls-files -v | grep ^h -- 변경내역 Clean git clean -f : 파일 -d : 디렉토리 --dry-run : clean 실행될 파일 확인 가능
[eclipse][spring]개발 작업에 영향을 끼치는 옵션
Java를 이용한 웹개발할 때, 다양한 IDE가 있지만 국내에서는 보통 eclipse, sts, IntelliJ를 많이 사용할 거 같다. ❗아래 내용은 eclipse, sts를 사용할 경우에 해당할 때 "원하지 않거나 필요없는 기능이 백그라운드에서 자동으로 진행되어 작업속도에 영향을 끼치는 경우"가 존재하여 작성하게 되었습니다. 1. remote system explorer operation -. 코드 수정 중 또는 자동으로 빌드될 때, 수많은 remote system explorer operation이 Progress 창에 생길 때가 있다. -. remote system explorer operation은 SSH, FTP, Telnet 등을 제공하여 eclipse에서도 편하게 원격저장소에 접속하여 작업..