[vscode] tensorflow.keras 자동완성 안됨
2022. 9. 11. 15:22
환경 세팅
pycharm에선 되는데 vscode에서는 tensorflow.keras내의 메소드들이 자동완성이 안된다. 자동완성이 안 되는 환경에서 개발은 정말 열받는다. 정말 너무 짜증 나서 이것저것 깔아보고 지워보고 찾아보고 하면서 겨우 방법을 알아내서 정리한다. https://stackoverflow.com/questions/68860879/vscode-keras-intellisensesuggestion-not-working-properly Vscode keras intellisense(suggestion) not working properly Intellisense works fine on importing phrase But when it comes with chaining method, it shows d..
풀스택 웹사이트 개발기 (feat. FastAPI, Vue.js, TensorFlow, Docker)
2022. 9. 3. 22:21
후기
Intro https://whatisbreed.com/ What is breed? whatisbreed.com 견종 분류 모델 개발기에서 개발한 모델이 아깝기도 하고, 그동안 풀스택을 해보고 싶던 생각도 있어서 분류 모델 + LIME을 적용한 웹사이트를 개발했다. 2022.08.20부터 개발을 시작했고 글을 쓰는 현재(2022.09.03) 배포를 한 상태이며 꾸준히 업데이트를 할 예정이다. 기술 스택 개강을 하기 전까지 개발을 해서 배포하고 싶은 마음이 있어, 기술 스택들을 선택할 때 배우는 비용이 낮은 것에 중점을 뒀다. 그리고 이전에 유튜브에서만 보던 해보고 싶은 신기술들을 사용해보고 싶은 마음도 컸다. Frontend - Vue.js 카카오가 리액트 냅두고 왜 Vue 쓰는지 알려드림 - 코딩애플 온..
[C++20] auto로 template를 대체해보자
2022. 7. 14. 14:41
C++
C++20부터 함수 파라미터로 auto를 허용한다. C++20부터는 template를 이용하여 구현해야 했던걸 auto를 이용해 구현할 수 있다. 코드를 통해 살펴보자 template T1 f(T2 a, T3 b) { return a + b; } int main() { cout
[C/C++] 잡기술
2022. 7. 7. 16:41
C++
이곳저곳에서 남의 코드 구경하다 발견한 잡기술들이다. C/C++가 아닌 다른 언어들에서도 응용할 수 있는 것들이 많이 있다. 이런 잡기술들이 가독성을 안 좋게 만드는 것도 있지만 더 좋을 때도 있다고 생각한다. 상황에 따라 잘 사용하면 될 것 같다. 잡기술들을 발견하면 하나씩 추가할 예정이다. (최종 수정 2022/07/07) char을 if문으로 여러 개 걸어야 할 때 if (c == 'A' || c == 'B' || c == 'C' || c == 'D') 위와 같은 코드를 아래와 같이 줄일 수 있다 if (strchr("ABCD", c)) 나눗셈 올림 std::ceil(x / n) 위의 함수는 리턴 값이 실수이다. 1. x / n + !!(x % n) 2. (x + n - 1) / n 위의 두 방법으..
[백준] 23245 Similarity
2022. 7. 5. 23:23
Algorithm/BOJ
문제 링크 http://icpc.me/23245 23245번: Similarity In modern application systems, a recommendation system is very widely used to recommend books, music, ads, items, etc. The recommendation system needs to attract other users by providing the most interested items to each user. One way of recommendation is www.acmicpc.net 문제 출처는 2021 icpc 온라인 예선이다. 풀이 (pi < pj < pk)&& (qi < qj < qk) 인 (i, j, k)를 구하면 되..
2022 모비스 대회 후기
2022. 7. 5. 02:16
후기
학생부 1233명 중 123등을 했다. 거의 정확히 상위 10%다. 50등까지 본선인데 정말 아쉽다. 채점을 해주지 않는 대회에 익숙하지 않다. 코드에 실수가 많은 편이라 이런 대회나 코테에서 성적이 많이 떨어지는 거 같다. 4번이 제일 쉬운 문제라고 생각됐는데 그걸 틀려서 점수가 많이 깎였다. 쉬운 문제 안틀리게 빠르게 푸는 연습을 해야겠다. 근데 이걸 어떻게 연습하지... 마지막 문제가 가장 어려운 문제였는데, 최소컷 문제라는 것까지 파악하고 O(N^2E) 짜리 dinic을 써야 하는 걸 알았지만 dinic을 아직 공부하지 않아서 에드몬드 카프 알고리즘으로 O(NE^2)짜리 코드로 부분점수만 긁었다. 나중에 알고 보니 풀이도 약간 틀린 풀이였다. 그래프 모델링을 약간 다르게 했다. 아무튼 부분점수는 ..
2022 중간 점검
2022. 6. 25. 15:33
끄적
벌써 6월이다. 2021년 회고를 다시 읽어보니 생각보다 이룬 것이 많아 중간 점검을 써야겠다. 목표는 3가지였다. 하나하나 뭘 했는지 적어보며 중간점검을 해야겠다. AI 분야 경험 웹 백엔드 경험 솔브닥 다이아 & 코포 블루 AI 분야 경험 & 깊이 있는 공부 이번 연도 초에 학교에서 하는 머신러닝 특강을 들었다. 5일 동안 하는 40시간짜리 특강이었다. 이때 머신러닝이 뭔지 큰 그림만 잡고 넘어갔다. 비전공자들도 들을 수 있는 수업이어서 깊이 있게 다루진 않았다. 전공으로 지능형 시스템 수강을 하며 머신러닝에 대해 조금 더 깊게 공부를 했고, 배운 것을 기반으로 데이콘 콘테스트에 하나 제출해봤는데 600명 정도 참여한 콘테스트에 최종 165등을 했다. 아예 처음 한 것 치고는 잘한 것 같아 만족한다...
[백준] 2679 맨체스터의 도로
2022. 6. 5. 02:04
Algorithm/BOJ
문제 링크 http://icpc.me/2679 2679번: 맨체스터의 도로 맨체스터에 있는 도로는 모두 일방 통행이다. 또한 이 도로는 모두 1시간에 지나갈 수 있는 차의 개수 제한이 있다. 길(경로)에도 차의 개수 제한이 있는데, 이것은 이 길에 있는 도로의 제한 중 www.acmicpc.net 풀이 네트워크 플로우를 기반으로 하고, 우선순위 큐를 이용한 풀이와 이분 탐색을 이용한 풀이가 있다. 차의 개수는 네트워크 플로우를 이용하면 쉽게 구할 수 있지만, 길 1개를 이용할 때의 최대 개수는 구하기 어렵다. 일반적인 네트워크 플로우처럼 경로를 고른다면, 경로를 고르는 순서에 따라 어떤 길에 한 번에 보낼 수 있는 최대를 보내지 않을 수 있다. 그렇기 때문에 다른 처리를 해줘야 한다. 우선순위 큐 풀이 ..
[백준] 8916 이진 검색 트리
2022. 5. 19. 21:56
Algorithm/BOJ
문제 링크 http://icpc.me/8916 8916번: 이진 검색 트리 각 테스트 케이스에 대해서, 입력으로 주어진 순열과 같은 트리를 만드는 순열의 개수를 9,999,991로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 3 2 5 4 1 6라는 예제가 있을 때 가장 앞에 나오는 3은 루트 노드로 순서가 바뀔 수 없다는 사실은 조금만 생각해본다면 알 수 있다. 그럼 2 5 4 1 6를 3의 왼쪽 트리와 3의 오른쪽 트리로 나눌 수 있다. 3보다 작은 2 1은 왼쪽 트리가 3보다 큰 5 4 6은 오른쪽 트리가 될 것이다. 그렇다면 재귀적으로 2 1과 5 4 6은 각각 트리가 되고, 첫 번째 수는 루트가 될 것이다. 여기서 조금 더 관찰해 본다면, 같은 모양의 트리가 나오기 위해서는 작은 ..
[Python3] GIL (Global Interpreter Lock)
2022. 5. 15. 17:21
Python3
GIL 이란? Global Interpreter Lock의 약자로 전역 인터프리터 락이다. 여러 개의 쓰레드가 파이썬 코드를 동시에 실행하지 못하도록 하는 것이다. 한 프로세스 내에서, Python 인터프리터는 한 시점에 하나의 쓰레드에 의해서만 실행될 수 있다. 멀티 쓰레딩이 불가능하다는 것이 아니다. 원래 멀티 코어라면 멀티 쓰레딩 시에 여러 개의 쓰레드가 여러 코어 상에서 병렬(Parallel) 실행될 수 있는데, Python에서는 그러한 병렬 실행이 불가능하다. GIL이 있는 이유 파이썬에서 모든 것은 객체이고 이것들은 Reference Count가 관리가 된다. Reference Count가 0이 되면 Garbage collector가 객체를 메모리 해제시킨다. 그러나 여러개의 쓰레드가 동시에 ..
[C/C++] Sequencing (Sequence Point)
2022. 5. 1. 19:16
C++
Sequencing / Sequence Point란? c++11부터 Sequence Point가 Sequencing으로 말이 바뀌었다고 한다. 이 글에선 sequence point란 말을 쓰겠다. 모든 연산의 결과가 완료되는 시점 쉽게 말하면, 한 시퀀스 포인트에서 다음 시퀀스 포인트로 가기 전에 이전의 모든 연산이 완료된다는 의미다. Sequence Point 1. ; (세미콜론) 2. ||, &&, ? : 와 같은 논리 연산 예를 들어, a || b에서 b가 되기 전에 a의 연산이 모두 완료된다. (a) ? (b) : 는 ?가 sequence point로 무조건 a가 먼저 완료된다. 3. , (쉼표) a = f1(), b = f2()와 같이 , 로 연결된 표현 4. 함수의 리턴 함수가 return..
[Python3] local, global 변수 규칙
2022. 5. 1. 14:25
Python3
아래 두 코드 중 하나는 에러가 발생한다. 정답을 보지 말고 생각을 해보자! 1번 코드 x = 1 def f(): y = x return y print(f()) 2번 코드 x = 1 def f(): y = x x = 2 return y print(f()) 정답은 2번 코드가 에러가 발생한다. 거의 동일한 코든데 왜 하나는 에러가 발생하고 하나는 정상 동작할까? 그 이유는 파이썬의 local, global 변수 규칙에서 찾을 수 있다. 파이썬에서는 함수 전체를 보고 global 변수인지 local 변수인지 결정을 한다. 함수 전체에서 reference만 일어난다면 이는 암묵적으로 global이라 판단한다. 그러나 assign이 한 번이라도 일어난다면 이는 local 변수로 판단을 한다. 위의 1번 코드에선..
못생긴 vscode 터미널 색을 바꿔보자
2022. 5. 1. 00:56
환경 세팅
테마가 다 마음에 드는데 터미널 색만 맘에 안들 때 이 방법을 써보자. 1. vscode setting창 연다 2. 중간쯤에 보이는 Color Customizations 누른다 3. 여기서 맘에 드는 폰트 컬러 복사 4. 복붙 에디터 부분 색이랑 맞추고 싶으면 background 부분만 지우면 폰트 색깔만 바뀐다.
[C/C++] printf에 float만을 위한 변환 명세가 없는 이유
2022. 4. 28. 01:41
C++
printf("%f", 1.0f)와 같이 printf에 float형을 넘겨줘도 절대 printf 함수에 float형을 넘겨줄 수 없다는 재밌는 사실을 알게 됐다. double lf = 1.0; printf("%lf\n", lf); // double lf 사용 printf("%f\n", lf); // double에 f도 가능 위와 같이 double을 출력할 땐 %lf와 %f 둘 다 사용할 수 있는데 이건 C99에 생긴 기능으로 scanf에서 double형을 %lf로 받기 때문에 편의성?을 위해 생긴 기능이라고 한다. 종종 float은 %f, double은 %lf로 출력해야 한다는 사람들이 있는데 이건 완전한 오개념이다. 아래 사진을 봐도 f는 명확히 double을 위한 변환 명세다. 그런데 float형을 ..