Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/

이전 글에서 Node를 어떻게 벡터화 시키는 지에 관해서 공부하였다. Node를 벡터화 시켰다면 딥러닝의 방식을 진행할 수 있을까? 하지만 그래프 분야는 image나 text와 같은 데이터보다 훨씬 복잡한 형태를 가지고 있다. 단순히 그래프에서 인접 노드 간의 정로를 가진 매트릭스를 input으로 넣는 것을 어떨까? 하지만 노드의 수의 제곱 이상의 데이터가 생성되기 때문에 파라미터가 너무 많아진다. 거기에 노드를 단순히 우리가 정한 임의의 순서대로 구별해 두었기 때문에 진행 중에 순서가 뒤바뀌면 알 수가 없어진다. GNN는 CNN(Convolution Neural Network)의 idea를 가져온다. CNN은 이미지 데이터를 convolution 연산으로, 중심 노드의 반경(window)으로부터 특징을..

*주의* 온라인 강의를 들으면서 정리한 내용이라, 틀린 부분과 대충 넘어간 부분이 많을 수 있습니다. Node Embedding 기존의 Graph를 딥러닝에서 다루기 위해서는 Graph를 구조화된 데이터 형태에 맞춰야할 필요가 있었다. 하지만, 이제는 그래프를 자동으로 벡터 형태로 만들어 낼 수 있기 때문에 효율적인 딥러닝이 가능해 졌다. 예를 들어 DeepWalk에서는 input 그래프를 다음과 같이 2차원을 표현해 냈다. 이와 같은 과정을 node embedding이라고 한다. 임베딩이란 사람이 쓰는 자연어를 기계가 이해할 수 있는 벡터 형태로 바꾸는 과정을 의미한다. https://casa-de-feel.tistory.com/28 임베딩(Embedding)이 뭐지? *해당 포스팅은 한국어 임베딩(이..
문제 https://leetcode.com/problems/binary-tree-level-order-traversal/description/ 풀이 난이도: Medium 세상 간단한 BFS 문제. BFS는 큐로 구현하므로 level과 TreeNode 두개를 pair로 만들어 큐에 넣어주자. 큐는 빌때까지 반복되면서 level에 맞는 vector에 value를 넣어주고, 하위 노드를 다시 큐에 삽입한다. 코드

문제 https://leetcode.com/problems/binary-tree-maximum-path-sum/description/ Binary Tree Maximum Path Sum - LeetCode Binary Tree Maximum Path Sum - A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass throu leetcode.com 풀이 난이도: Hard ..
문제 https://leetcode.com/problems/longest-palindromic-substring/description/ Longest Palindromic Substring - LeetCode Longest Palindromic Substring - Given a string s, return the longest palindromic substring in s. Example 1: Input: s = "babad" Output: "bab" Explanation: "aba" is also a valid answer. Example 2: Input: s = "cbbd" Output: "bb" Constraints: * 1
문제 https://leetcode.com/problems/group-anagrams/description/ Group Anagrams - LeetCode Group Anagrams - Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters e leetcode.com 풀이 난이도: Medium 일단 브루트 포스 방식은 적절해 보이지 않는다...

문제 https://leetcode.com/problems/minimum-window-substring/ Minimum Window Substring - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 난이도: Hard 모든 위치에서부터 끝까지 일일이 확인하는 것은 O(N^2)의 복잡도를 가진다. 문자열의 길이가 최대 10,000 이기 때문에 시간 복잡도로 위험해 보인다. 따라서 슬라이딩 윈도우 기법을 적용해보자. left에서 시작해 t를 모두 가지는 rig..

외래키의 위치 일단 데이터베이스의 개념부터 설명하고 들어가자. 두개의 엔티티가 관계(연관)를 가지면 외래키가 두 엔티티중 하나에 들어가야한다. 예를 들어 프로젝트와 프로젝트 매니저 사원의 관계를 생각해보자. 프로젝트에는 단 한명의 매니저가 반드시 존재한다. (프로젝트가 관계에 완전 참여) 따라서 소수의 인원만이 프로젝트 매니저가 된다. (사원은 관계에 부분 참여) 즉, 다음과 같이 표현된다. 일단, 사원 테이블에 자신이 매니저를 맞고있는 컬럼이 있다고 생각해보자. 해당 컬럼은 프로젝트의 기본키를 외래키로 가져오게 된다. 그러나 소수의 사원만 매니저를 담당하므로 대부분의 사원에게는 NULL 값이 삽입되어야 한다. 수 많은 사원들의 해당 필드값이 NULL로 채워진다면, 공간을 낭비하게 된다. 반대로 프로젝트..

Linux에서 procfs와 procseq 관련 C언어 소스코드를 컴파일하면 다음과 같은 오류가 발생할 때가 있다. error: variable 'proc_ops' has initializer but incomplete type 해당 오류를 문법적인 문제라 생각했는데, 사실 Linux 커널에서 procfs와 procseq를 위해 사용하는 proc_ops는 버전에 따라 사용이 가능하다. 출처: https://embetronicx.com/tutorials/linux/device-drivers/procfs-in-linux/ 위의 답글에 따르면 Linux 커널의 버전이 5.5 이상에서만 struct proc_ops 를 사용할 수 있다고 안내되어 있다. 다음의 명령어로 본인의 linux 커널 버전을 확인해보니, ..
MariaDB로 새로 JPA를 공부하다 미칠뻔한 오류를 만나 정리해본다. .... spring.jpa.hibernate.ddl-auto=create-drop Maria DB에서는 application.properties 에 이와 같은 설정을 해두면 Entity 저장시 자동으로 SQL 구문이 생성되어 Table이 새로 만들어진다. 그래서 본인은 일단 두개의 엔티티가 서로를 참조하게 만들었는데, 하나는 테이블이 잘 생성이 되지만 하나는 죽어도 오류가 나면서 spring error: 1146-42s02: table doesn't exist 오류가 발생했다. 이리저리 구글링을 해보며 해결법을 적용을 해보아도 해결이 되지 않았는데 전체 오류를 천천히 읽어보니 Table 생성 sql 구문 다음에 이와 같은 오류를 ..