목록개발 및 공부 (189)
NeuroWhAI의 잡블로그
어텐션 매커니즘을 적용하기 전에 시험삼아 커스텀 RNN 셀로 RNN 레이어를 만들고 IMDB(영화 리뷰 및 평점) 데이터 세트를 학습시켜 보았습니다. 코드는 아래와 같습니다. (GRU는 글 맨 밑에 있습니다) import numpy as np import matplotlib.pyplot as plt import keras from keras import backend as K from keras import layers, models, datasets from keras.preprocessing import sequence class MyRNNCell(layers.Layer): def __init__(self, units, **kwargs): self.units = units self.state_size..
#include #include #include #include using namespace std; // Knuth-Morris-Pratt Algorithm // bush의 앞에서부터 needle의 최초 위치를 찾아 반환합니다. size_t kmp(string_view bush, string_view needle) { const size_t needleLen = needle.length(); const size_t bushLen = bush.length(); // string::find는 패턴 문자열이 비어있을 경우 0을 반환함. if (needleLen == 0) { return 0; } // pi[match] == needle[:match+1]의 최대 동일 접두접미사 길이 vector pi(need..
출처 : https://doc.rust-lang.org/nomicon/lifetime-mismatch.html struct Foo; impl Foo { fn mutate_and_share(&mut self) -> &Self { &*self } fn share(&self) {} } fn main() { let mut foo = Foo; let loan: &Foo = foo.mutate_and_share(); foo.share(); }위 코드는 아래와 같은 에러를 뿜으며 컴파일이 안됩니다. error[E0502]: cannot borrow `foo` as immutable because it is also borrowed as mutable --> src/main.rs:11:5 | 10 | let loan:..
T object = { .designator = arg1 , .designator { arg2 } ... }; T object { .designator = arg1 , .designator { arg2 } ... }; #include using namespace std; struct Foo { int a, b; float c = 42.0f; }; int main() { cout
memory 헤더에 있는 이 함수들은 초기화 되지 않은 메모리에 관한 기능이 있습니다.초기화 되지 않았다는 것은 생성자가 호출되지 않았다는 것이죠.get_temporary_buffer는 메모리를 할당하며return_temporary_buffer는 메모리를 해제합니다.uninitialized_*는 초기화되지 않은 메모리에 대해 생성자를 호출하며 특정 알고리즘을 수행합니다. 예시를 봅시다. (C++17 이상에서만 컴파일 됨) #include #include #include class Foo { public: explicit Foo(int data) : data(data) { std::cout
티스토리 조회수 서버가 잘 동작하는지 보고 싶어서 로그를 봤는데 에러가 있었습니다. (그 와중에 robots.txt 접근이 있는 걸 보니 크롤러가 벌써...) 정확히 어디서 발생한 에러인지 모른다는게 흠이지만 (자체 로그의 중요성) 짐작가는 곳이 있어서 거길 고쳤습니다. 문제가 됬던 부분은 API 요청에 쓰는 객체가 여러 스레드에서 사용되면 안됬었고 이미 Rust가 컴파일 오류를 통해 그 사실을 알려줬었는데 제가 강제로 Send, Sync trait을 구현해서 컴파일이 되게 만들었던 것이었죠. (멍청) 이 바보 같은 짓은 깃헙 레포의 커밋 내역을 보시면 바로 알 수 있습니다... 그런데 참 신기한 우연이 있었습니다. 시간이 날 때마다 Rust 튜토리얼을 반복해서 보는데 마침 오늘 볼 파트가 Sync, S..
서두 사실 바로 며칠 전부터 블로그 주인장은 통계를 볼 수 있게 되었습니다. 다만 2018년 1월 1일 이후의 데이터만 존재하고 방문자는 볼 수 없다는게 흠이죠. 소중한 방문자 분들의 시간을 낭비시키기 싫으니 미리 말씀드리는데 조회수 표시는 성공했으나 개인 서버와 도메인이 없거나 개발자가 아닌 사람들은 적용하기 힘든 방법입니다! 아래 사진은 결과물! 본문 아무튼 저는 제 글에 조회수가 작게 나타나면 보기 좋겠다 싶어서 검색을 해봤습니다. 그랬더니 이것저것 나오긴 하더라고요. 가장 마음에 들었던 방법은 구글 스프레시트를 DB이자 서버로 사용해서 표시하는 방법이었는데 저는 공부와 재미를 위해서 직접 개발하기로 하였습니다. 초기 계획은 Rust 언어와 Rocket이라는 웹 프레임워크로 서버를 개발하고 Hero..
이용한 라이브러리는 rocket, google-analytics3, yup-oauth2입니다.사실 제가 한거라곤 위 라이브러리들 공부한거랑 중간 캐시 로직을 만든 것 뿐이지만요 ㅋㅋ...보안도 없습니다. API는 아래처럼 생겼습니다. http://hostname/pv/{ids}/{page_id}(참고로 pv는 page view라는 뜻입니다 promotional video 아님)ids는 "ga:숫자들"형식의 애널리틱스 아이디이며page_id는 119, 112 등의 블로그에서의 글 주소이자 번호입니다.티스토리는 번호가 아니라 제목을 주소로 사용할 수도 있어서 그것도 되게끔 하긴 했는데 테스트는 안해봤습니다...이전 글에서는 자체 DB를 이용할 예정이라고 했는데 일단 구글 애널리틱스 자체를 DB로 쓰고 문제가..
https://ideone.com/jBCPmV #include using namespace std; int main() { // a[i] == *(a + i) == *(i + a) == i[a] int a[] = { 1, 2, 3, 4 }; cout
원서는 2017년에 나왔고 저는 번역서를 구매했습니다. 그런데 찜 해놓았다가 구매 직전, 우연히 리뷰를 봤는데 번역이 이상하다고 해서 좀 망설였지만 결국 샀습니다. 하지만 제가 그동안의 꾸준한 구글 번역기 사용으로 번역체에 익숙해졌기 때문에 책 내용 이해에 크게 무리는 없었습니다(?) (번역기가 뱉는 말이 한글로 된 한국어가 아닌 언어라도 언어는 언어이니 이해할 수 있습니다) 아무튼 이 책은 C++11부터 C++20까지의 표준 라이브러리를 이용한 동시성 프로그래밍을 소개하는 책입니다. 다만 중요한건 어디까지나 맛보기라는 점입니다. 라이브러리를 사용하는 예제는 꽤 있지만 동시성 프로그래밍을 위한 지침의 구체적인 적용 예시는 많이 없습니다. 근데 난이도도 쉬울 줄 알았더니 처음부터 듣도 보도 못했던 메모리 ..