[링크] typescript (*.ts) 파일 작업시 window 객체를 사용하는데 ‘window is not defined’ 오류가 발생하는 경우 해결방법
가장 쉬운 결론 if (window !== undefined) { // browser code } 출처 https://dev.to/vvo/how-to-solve-window-is-not-defined-errors-in-react-and-next-js-5f97
가장 쉬운 결론 if (window !== undefined) { // browser code } 출처 https://dev.to/vvo/how-to-solve-window-is-not-defined-errors-in-react-and-next-js-5f97
모듈 상단에서 아래의 swr함수를 호출하는데, useMemo()가 불필요하다고 생각되어 제거했더니 무한루프가 걸렸었음. swr의 args로 들어가는 url string이 함수 내부에서 생성되어 계속 변경이 되니 무한루프가 발생했던 것이었음. 결국 useMemo()를 다시 사용하여 해결 function useSWR(type: string, query?: any) { const url = useMemo(() => { switch(type){ case '1': return '/board/01'; case '2': return '/board/02'; default: return null; }… Read More »
[typescript] Object is of type ‘unknown’.ts(2571) (error object)
apache commons-lang 3.2 이상을 사용하고 있다면 Field[] fields = FieldUtils.getAllFields([클래스]); 해당사항이 없다면 직접 구현 https://stackoverflow.com/questions/1042798/retrieving-the-inherited-attribute-names-values-using-java-reflection
https://ddalpange.github.io/2018/01/11/js-es6-three-dots/
/** * 매개변수로 받은 문자열 list에 중복이 존재할 경우 true, 아니면 false 리턴 * * @param list * @return */ public static boolean hasDuplicated(List<String> list) { if(list == null){ return false; } Set<String> set = new HashSet<>(list); if(set.size() < list.size()){ return true; } return false; } 참고 https://stackoverflow.com/questions/562894/java-detect-duplicates-in-arraylist
https://lionhead93.github.io/spring/DI-lombok/
https://kakaocommerce.tistory.com/45?category=368198
왜인지 모르겠으나…(협업 환경에서 잘못된 오버라이드?) IDE의 JDK 언어 레벨이 5로 되어 있어서, 람다식 등의 시그니처를 인식하지 못한 것으로 추측된다. 다시 IDE의 JDK 버전을 8로 맞추어 줬더니 정상동작 했다. 아오.. 갈 길이 바쁜데 이런 거 발목 좀 안 잡았으면 좋겠네. -_-/
https://babycoder05.tistory.com/entry/%EC%A0%84%EA%B0%9C%EA%B5%AC%EB%AC%B8%EA%B3%BC-%EC%96%95%EC%9D%80-%EB%B3%B5%EC%82%AC-%EA%B9%8A%EC%9D%80-%EB%B3%B5%EC%82%AC 참고 전개구문(스프레드 연산자 = spread operator)을 사용한 깊은 복사는 반쪽짜리 깊은 복사이다. 하위 depth는 여전히 얕은 복사 상태임을 주의하자. => lodash.cloneDeep()을 사용하면 완전한 깊은 복사 실현 가능.
https://github.com/b1uec0in/JosaFormatter 나중에 봐야지. 일단 깃헙 스타 박습니다~ https://okky.kr/article/549842
https://solbel.tistory.com/1240
// 함수 정의 /** * 파라미터로 받은 querystring의 특정 파라미터 값을 변경한 querystring을 리턴한다. * * – querystring은 주소부분을 제외한 ? 이후의 부분이라 가정한다. */ function modifyQueryString(src, modObj){ // querystring을 object 화 var obj = JSON.parse('{"' + decodeURI(src).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}'); for(key1 in obj){ for(key2 in modObj){ if(key1 != key2){ continue; } obj[key1] =… Read More »
html 엘리먼트의 수직정렬은 정확히 알고 하던 것이 아니라서 항상 헷갈리는데, 이번에 알게 된 사례를 하나 기록한다. 부모/자식 둘 다 display:block 이라고 가정하고, 부모요소의 css에 아래 항목을 추가한다. { display:flex; align-items:center; } 참고 링크 https://stackoverflow.com/questions/5166574/vertical-align-text-in-block-element/9406982
newList.addAll(oriList); 는 언뜻 deep copy 인 것처럼 보이지만 아니다. 커스텀 클래스인 경우에는 Clonable 을 implement 하기도 한다고 한다. 나는 주로 List<Map> 구조를 사용하기 때문에 그냥 아래와 같이 했다. List<Map<String, Object>> newList = new ArrayList<>(); oriList.forEach(el -> { newList.add(new LinkedHashMap<>(el)); // 이걸로 완전한 deep copy가 이루어 지는지는 아직 모르겠다. });
https://jangjy.tistory.com/337
https://towardsdatascience.com/25-lesser-known-java-libraries-you-should-try-ff8abd354a94
https://zetawiki.com/wiki/CSS_float_%EC%9E%90%EC%8B%9D%EB%93%A4_%ED%8F%AC%ED%95%A8%ED%95%98%EA%B8%B0
@Transient private String blabla;
* commons StringUtils.containsAny([타겟 문자열], [비교대상1], [비교대상2]..); * containsAll() 같은 건 없지만, 그거 비슷하게 구현한 메서드 public static boolean hasAndKey(String value, String… keys) { for (String key : keys) { if (value.contains(key) == false) { return false; } } return true; }