본문 바로가기

전체 글

(78)
폐쇄망으로 스프링 프로젝트 이관하기 | 소스코드 옮기기 | 이클립스 설정 개발중인 스프링 프로젝트를 인터넷이 안되는 폐쇄망으로 옮겨야 하는 일이 발생.소스코드가 있는 워크스페이스를 통째로 압축해서 옮기면 될 것 같지만 인터넷이 안된다는 사실 하나로 매우 제약이 많음일단 실행환경을 구축하기 위해 필요한 설치파일들을 받아준다.파일 준비하기개발환경 설치파일실행환경에 맞는 JDK 버전 설치파일 다운https://www.oracle.com/kr/java/technologies/downloads/IDE(이클립스, intelij, 전자정부 프레임워크, STS 등) 설치파일 다운자신의 JDK와 호환되는 IDE인지를 꼭 확인하자https://www.egovframe.go.kr/home/developEnvDownList/developEnvDownList.do?menuNo=107https://s..
DEXTUploadNJ 대용량 파일업로드 라이브러리 에러 원인 찾기 에러로그o.e.c.s.e.ExceptionHandlerAdvice: handleExceptionorg.springframework.web.multipart.MultipartException: Could not parse multipart request.; nested exception is devpia.dextuploadnj.DEXTUploadNJDataParseFailedException: PRODUCT = DEXTUploadNJ[DEXTNJ: EntityBodyReader.loadCacheStrictly] The request is end(left = 32059, total = 32059)!at devpia.dextuploadnj.support.spring.DEXTUploadNJMultipartRes..
[Notion] 노션 수익화 도전기 3 : 템플릿 판매 근황 무료 두개, 유료 1개의 템플릿을 업로드 하고 잠시 잊고 살았다. 첫 업로드 이후로 한 3개월이 지난 지금, 템플릿들의 근황은 어떻게 될까 ? 먼저, 가장 처음 업로드했던 포트폴리오 템플릿생각지도 못한 대박이 났다;;당황스러울 정도로 성공해버린 녀석유료로 팔았으면 어땠을까 하는 생각도 들지만, 무료기 때문에 저렇게 많이 다운받았겠지?아무튼 기분은 좋다 ^_^ 다음으로는 아무런 기대 없이 올렸던 유료 템플릿..! 스터디 모임 관리하는 템플릿이었는데 무려 한분이 구매를 하셨다..! ㄷㄷㄷ...진짜 예상못해서 너무 신기했음 앞으로도 심심하면 종종 만들어서 올려봐야겠다굿럭!
[javascript] html2canvas 라이브러리가 아이폰에서 동작하지 않는 이유 웹, 안드로이드에서는 ok,아이폰에서 캡쳐가 안되는 현상 발생.아이폰 safari가 다른 운영체제보다 훨씬 까다로운 보안정책을 가지고 있기에이 문제를 해결하기 위해 캡쳐에 사용중인 html2canvas의 작동방식부터 분석했다.html2canvas의 작동방식직관적으로, 화면을 캡쳐하는 것을 카메라로 찍어낸다고 생각하기 쉽다.하지만 내부 작동방식은 그렇지 않다.실제로는 화면의 DOM을 읽어서 캔버스에 다시 렌더링하는 과정을 거친다.각 html태그의 위치/크기/텍스트/폰트 스타일 등을 수집하고 가상의 객체 위에 그림을 다시 그리듯이 재구성한다.작업이 끝난 후 완성된 canvas객체를 우리에게 전달하고우리는 이것을 다시 이미지파일로 바꾼다.html2canvas 를 사용한 코드 일부분을 보면 이해가 쉬울 것이다..
[프로그래머스/Python] level2. 타겟 넘버 (dfs/bfs/dp 풀이) 본 포스팅은 dfs -> bfs -> dp 로 이어지는 흐름을 담고 있음! 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr # 풀이과정# 처음 사고 : n번이 될 때까지 각 회차마다 +, -의 가능성을 계산# 마지막 n번에서 목표숫자가 되면 카운트# 그럼 2, 4, 8, 16 씩 경우의 수가 늘어날 것임. 2의 n제곱만큼.# 근데 사고는 bfs인데 풀이방식은 다시보니 dfs 백트래킹임... 아래에서 bfs풀이를 다시 구현해봄# 처음 풀이 dfs 방식으로 풀었음. def solution(numbers, target): answer = [0] n=len(numbers) def loof(i,res..
[heap/우선순위 큐] heap이란 무엇인가 | 최대값, 최소값 구하기 | heapq 라이브러리 핵심 함수 정리 이론Heap이란?heap tree : 우선순위가 있는 완전 이진트리 기반 자료구조로 짧게 heap이라고 함 영어로 heap은 ‘무언가를 차곡차곡 쌓아올린 더미’라는 뜻을 가짐힙의 조건은 완전 이진 트리의 형태를 띠어야 하고, 부모의 값은 항상 자식의 값보다 크거나 작아야 한다. (최소 힙, 최대 힙)따라서 루트노드는 항상 최소값/최대값이 저장되어 있기 때문에 O(1) 의 시간복잡도 안에 찾을 수 있게 됨(여기서 완전 이진트리를 사용하는 이유는 삽입/삭제의 속도 때문)사용가장 작은 값 또는 가장 큰 값 (루트노드)만 빠르게 꺼낼 때 사용정렬된 구조가 아니라 루트만 보장되는 구조힙과 배열힙 트리는 배열로 나타내기 좋다높이 순서대로 배치하면 모든 노드를 낭비 없이 배열할 수 있기 때문에 인덱스 0 에는 ..
[python] 2차원 배열 생성 시 * 과 for 사용의 차이 리스트에서 *를 사용하면 요소 시퀀스를 반복한다.[0] * 3 >> [0,0,0][0,1] * 3>> [0,3,0,3,0,3]2차원배열을 만들 때, 주의할 점이 있다.# *를 사용한 2차원배열 생성[[0] * 3]* 2>> [[0,0,0],[0,0,0]]# for를 사용한 2차원 배열 생성[[0]*3 for _ in range(2)]>> [[0,0,0],[0,0,0]]두 가지 방법 모두 결과물이 똑같아 보이지만 다르다.*을 사용한 방식은 반복 횟수만큼 같은 [0]*3 의 참조가 늘어나는 것이고for를 사용한 방식은 반복 횟수만큼 새로운 [0]*3을 만들어 넣는 것과 같다.그래서 *를 사용한 방식은 모든 행이 같은 객체를 참조하고 있어서 한 행의 원소를 바꾸면 모든 행의 원소가 바뀐다.2차원 배열을 생성할..
[Notion] 노션 수익화 도전기 2 : Stripe로 온보딩 완료하기(유료판매권한 획득) 드디어..! 무려 14일만에 판매자 계정 등록에 대해 답이 왔다..! 1~2주라고 했는데 딱 2주 정도 걸리는 듯 하다 두근두근 메일을 열어보니 영어로 뭐라고 메일이 길게 왔는데무슨 말인지 모르니 빨리 번역을 했다.뭔가 추가적인 설정을 하라는 것 같다.일단 시키는 대로 해보자. 노션에 들어가서 마켓플레이스 > 프로필 을 들어가준다.그리고 왼쪽 사이드바에 설정메뉴를 들어가면 Stripe로 온보딩 완료하기 를 확인할 수 있다. 시작하기 버튼을 눌러보자. 아래 팝업에서 온보딩 계속을 눌러준다.그러면 express에 로그인하라는 새 창이 뜰 것이다. ※ 만약 이 창이 뜨지 않는다면 사이트 팝업 해제를 해주면 된다!(크롬기준 우측상단 점 세개 > 설정 > 개인정보보호 및 보안 >사이트 설정 > 팝업 및 리디..