기본 콘텐츠로 건너뛰기

2월, 2021의 게시물 표시

개발 공부 - 네이버 메일에서 POP3 설정 오류 시 해결 방법

① 우선, Gmail의 아이디와 비밀번호를 확인해 줍니다. ② 그다음으로 아래 링크로 들어가셔서 Google 계정의 '보안 수준이 낮은 앱의 액세스' 설정을 허용해 줍니다. https://myaccount.google.com/lesssecureapps Google '보안 수준이 낮은 앱의 액세스' 설정.  ③ 마지막으로, 아래 링크에서 외부기기 등 다른 App 에서 로그인 할 경우에 추가 인증을 거치지 않도록 설정해 줍니다. https://accounts.google.com/b/0/DisplayUnlockCaptcha Google '내 Google 계정에 대한 액세스 허용' 설정.  이렇게 설정해 주고 나면 등록 완료 팝업이 출력되게 됩니다. 1년만에 사용 가능하게 되어서 저장 목적으로 스크랩 해 두었음. 출처 : https://amiandappi.tistory.com/1

개발 공부 - 호스팅 업체를 이용한 간단한 샘플 페이지 제작

dothome 무료 호스팅 이용 - XE (제로보드) 설치 후 FTP 프로그램으로 접속한다. /html/common/tpl/common_layout.html 테마는 삭제하거나 미사용하게 두고, common_layout.html 을 변경하면 html 페이지로 사용 가능하다. http://cat.dothome.co.kr/ 이런 식으로 퇴근 계산기 페이지로 샘플 제작해 보았음. * 공유해 본 결과 mobile 기기나 스마트 디바이스에서 안 보이는 것을 확인하였다. /html/common/tpl/common_layout.html /html/common/tpl/mobile_layout.html /html/common/tpl/default_layout.html 도 동시에 수정하였다. * 그리고 어짜피 저 기능만 쓸 것이라 일단 tpl 폴더를 모두 같은 것으로 교체하였다. 231002 : termius는 ssl을 지원 안 하는 것은 접속 불가. moba xterm으로만 사용하겠다. html은 직접 수정 시 utf-8로 수정되지 않으므로 utf-8로 변환한 동일 파일을 올리는 편이 낫다.

개발 공부 - [동적계획법 (Dynamic Programming)] Dynamic Programming - 6

Knapsack Problem Knapsack - n개의 아이템과 배낭 - 각각의 아이템은 무게 wi와 가격 vi를 가짐 - 배낭의 용량 W - 목적: 배낭의 용량을 초과하지 않으면서 가격이 최대가 되는 부분집합 - 예:      {1,2,5}는 가격의 합이 35      {3,4}는 가격의 합이 40      {3,5}는 46이지만 배낭의 용량을 초과함 i                    vi                    wi 1                1                1 2                6                2 3                18              5 4                22              6 5                28              7 knapsack instance (weight limit W = 11) Greedy     -  가격이 높은 것 부터 선택     -  무게가 가벼운 것부터 선택     -  단위 무게당 가격이 높은것 부터 선택 i                vi                wi 1                1                1 2                6                2 3                18              5 4                22              6 5                28              7 knapsack instance (weight limit W = 11) 순환식 - OPT(i) : 아이템 1,2,...,i로 얻을 수 있는 최대 이득 - 경우 1: 아이템 i를 선택하지 않는 경우           OPT(i) = OPT(i-1) - 경우 2: 아이템 i를 선택하는 경우          OPT(i) = ? 순환식     -  OPT(i, w) : 배낭 용량이 w일 때 아이템 1,2,...,i로 얻을 수 있는 최대 이

개발 공부 - [동적계획법 (Dynamic Programming)] Dynamic Programming - 5

Longest Common Subsequence Longest Common Subsequence(LCS) - <bcdb>는 문자열 < a bc b d a b>의 subsequence이다. - <bca>는 문자열 < a bc bd ab>와 <b d ca ba >의 common subsequence 이다. - Longest common subsequence(LCS)      common subsequence들 중 가장 긴 것      <bcba>는 <abcbdab>와 <bdcaba>의 LCS이다 Brute Force - 문자열 x의 모든 subsequence에 대해서 그것이 y의 subsequence가 되는지 검사한다. - |x|=m, |y|=n - x의 subsequence의 개수 = 2m - 각각이 y의 subsequence인지 검사: O(n)시간 - 시간복잡도 O(n2m) Optimal Substructure x                ㅁㅁㅁㅁㅁㅁㅁ [A] ㅁㅁ                                            ↑                                            ↓           y                   ㅁㅁㅁㅁㅁㅁ [A]                                    ↑                                          /                                 ↓      LCS z         ㅁㅁㅁㅁㅁㅁ [A] ㅁㅁ ㅁㅁㅁㅁㅁㅁ 는  ㅁㅁㅁㅁㅁㅁ 와  ㅁㅁㅁㅁㅁㅁㅁ 의 LCS이다. 순환식 L[i, j] : 문자열  X =< x1x2 ··· xi >와 Y =< y1y2 ··· yj >의 LCS의 길이 X [x1] [x2] [      ] [      ] [xi-1] [xi]                        

개발 공부 - [동적계획법 (Dynamic Programming)] Dynamic Programming - 4

     Matrix-Chain Multiplication 행렬의 곱셈 p×q 행렬 A와 q×r 행렬 B 곱하기 void product(int A[][], int B[][], int C[][]) {       for (int i=0; i<p; i++) {            for (int j=0; j<r; j++) {                 C[i][j] = 0;                 for (int k=0; k<q; k++)                      C[i][j] += A[i][k]*B[k][j;]                 }            }      } 곱셈연산의 횟수 = pqr Matrix-Chain 곱하기 - 행렬 A는 10×100, B는 100×5, C는 5×50 - 세 행렬의 곱 ABC는 두 가지 방법으로 계산가능 (결합법칙이 성립)      (AB를 곱하면 결합법칙이 성립된다)           (AB)C : 7,500번의 곱셈이 필요 (10×100×5 + 10×5×50)           A(BC) : 75,000번의 곱셈이 필요 (100×5×50 + 10×100×50) -  즉 곱하는 순서에 따라서 연산량이 다름 - n개의 행렬의 곱 A1A2A3…An을 계산하는 최적의 순서는? - 여기서 Ai는 pk-1×pk 행렬이다. Optimal Substructure A1 A2 … Ak Ak+1 Ak+2 … An     X               Y                X는 앞부분의 곱이고                                            Y는 뒷부분의 곱이다.             Z 최종 결과 Z는 직전의 두 행렬 X와 Y의 곱이다. 순환식 m[i, j] AiAi+1 ··· Aj 를 곱하는 최소곱셈 횟수 m[i, j] =                                0                                               

개발 공부 - [동적계획법 (Dynamic Programming)] Dynamic Programming - 3

Optimal Substructure 동적계획법 1. 일반적으로 최적화문제(optimisation problem) 혹은 카운팅(counting) 문제에 적용됨 2. 주어진 문제에 대한 순환식(recurrence equation)을 정의한다. 3. 순환식을 memoization 혹은 bottom-up 방식으로 푼다. 동적계획법 subproblem들을 풀어서 원래 문제를 푸는 방식. 그런 의미에서 분할정복법 과 공통성이 있음 분할정복법에서는 분할된 문제들이 서로 disjoint하지만 동적계획법에서는 그렇지 않음 즉 서로 overlapping하는 subproblem들을 해결 함으로써 원래 문제를 해결 분할정복법 vs. 동적계획법 quicksort의 경우 pivot을 기준으로 분할된 두 subproblem은 서로 disjoint하다. : 각각 따로 데이터를 정렬하는 방법 (pivot 기준 앞/뒤) Optimal Substructure 어떤 문제의 최적해가 그것의 subproblem들의 최적해로부터 효율적으로 구해질 수 있을 때 그 문제는 optimal substructure를 가진다고 말한다. (A problem is said to have optimal substructure if an optimal solution can be constructed efficiently from optimal solutions of its subproblems.) 분할정복법, 탐욕적기법, 동적계획법은 모두 문제가 가진 이런 특성을 이용 한다. Optimal Substructure를 확인하는 질문 “최적해의 일부분이 그부분에 대한 최적해인가?” 최단경로(shortest-path) 문제 순환식은 optimal substructure를 표현한다. Optimal Substructure를 확인하는 질문 최장경로(Longest-Path) 문제 노드를 중복 방문하지 않고 가는 가장 긴 경로 optimal substructure를 가지는가?

개발 공부 - 윈도우 명령어 바로가기로 만들기

* 윈도우 10에서 사용 가능하다. 바탕화면 -> 마우스 우클릭 -> 새로 만들기 -> 바로가기 바로가기 만들 항목 위치 입력 시  "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="D:\Chrome" 위와 같이 실행 -> 열기 내에 입력하는 방식으로 입력 예시는 https://hothoony.tistory.com/763 에서 CORS 무시하고 크롬 실행하는 예제 사용 마침 입력. 테스트 진행중에 귀찮아서 system32에 등록하고 사용하려고 만들었다.