본문 바로가기

반응형

Welcome !

(441)
[머신러닝/딥러닝] 도대체 Tensor란 무엇인가!!! 딥러닝을 공부하기 전 반드시 알아야할 Tensors! 그냥 matrix, 배열 ! 이라고 하기엔 뭔가 찜찜해서 조금 더 찾아보았다. 먼저 간단하게 tensor가 무언인가 살펴보고 Dan 교수님(?)의 유튜버의 강의로 왜 이렇게 설명되었는지 자세히 알아보았다. Tensor 란? 아주 간단히 말하자면 데이터(오직 숫자로 이루어진)의 배열이다. python에는 List, JS에는 array 라고 부르는 배열! matrix! "The Facts of the Universe" by Lillian Lieber Lillian lieber라는 수학자는 tensors를 우주의 진리라고 표현했다. 그만큼 중요한 tensor.... tensor는 Rank (차원)를 가지는데 이는 개발할 때 자주 본 배열, 이중배열과 동일한..
[머신러닝 vs 딥러닝] 비교 및 차이 알아보기 이 내용을 정리하면서... 유튜버 Daniel은 이 강의에서 머신러닝과 딥러닝의 뜻은 분명 다르지만 설명 중에 가끔은 혼용해서 사용될 수 있고 또 해당 분야는 빠르게 발전하기 때문에 "절대적인" 지식은 아님을 강조한다! 때문에 현재의 기술을 기준으로 머신러닝/딥러닝이란 무엇인가? 왜 언제 사용하는가? 를 살펴보는 글이 될 것 같다. 구글의 머신러닝 핸드북의 첫번째 규칙, Rule 1 If you can build a simple rule-based system that doesn't require machine learning, do that. 만약 머신러닝이 필요하지않은 간단한 규칙의 시스템을 구축할 수 있으면 그렇게 해! 머신러닝이 굳이 필요하지 않다면 그냥 기존의 프로그래밍 방식으로 처리해 ~ 같다..
[pytorch vs tensorflow] 머신러닝/딥러닝 pytorch로 시작하는 이유! 이전 elasticsearch 검색 api를 마무리하고 이제 더 효율적이고 정확한 검색을 위한 자연어 처리 모델을 만들어 시도해 보려고 한다! AI/머신러닝/딥러닝에 사용되는 툴로 아주 유명한 Tensorflow, 그리고 pytorch가 있는데 이 둘을 비교해보고 pytorch로 고르게 되었다. Tensorflow란? -> 나무위키에서 보기 Pytorch란 ? Python을 위한 오픈소스 머신러닝/딥러닝 라이브러리이다. Tensorflow와 마찬가지로 GPU를 사용하여 상당이 빠르며 자연어 처리와 같은 애플리케이션을 위해 사용된다. Pytorch의 특징 - 가장 유명한 딥러닝 프레임워크 중 하나이다. - Numpy스러운 tensor연산이 GPU로도 가능하다. - 직관적이고 간결한 코드로 구성되어 이해와 ..
[Elasticsearch] analyzer [ ] contains filters [ ] that are not allowed to run in index time mode ERROR : "analyzer [analyzer_name] contains filters [synonyms_name] that are not allowed to run in index time mode." 위와 같은 에러가 나와서 찾아보니 동의어 txt 추가 할 때 updateable:true 를 주어서 에러가 난 것이었다. 이걸 지워주니 에러가 안나도 index가 잘 생성되었다. PUT keyword_test_v1 { "mappings" : { "properties" : { "tag" : { "type" : "text", "fields": { "nori": { "search_analyzer":"standard", "analyzer": "nori_mixed_analyzer", "type": "text"..
[elasticsearch] mongoDB changeStream to Elasticsearch 데이터 동기화 - sync 맞추기 mongoDB 와 Elasticsearch 데이터가 연동되어 있는 경우, 데이터 생성, 수정, 삭제가 발생할 때마다 각각의 Db를 수기로 바꿔주는 것은 매우 비효율적이다! 그래서 MongoDB의 streamchange를 사용해서 변화가 생길 때 es에도 해당 변화가 업데이트되도록 만들어 주기 ! change stream을 사용하기위해 우리는 반드시 mongoDB replica set을 사용해야 한다고 함! 그 이유는 change stream이 oplog에 의해 수행되기 때문이다. mongoDB collection에 changeStream 열기 db.collection('person').watch() 또는 Person.watch() // directly using the model Person 자체가 해당..
[Elasticsearch] synonyms 동의어 사전 추가 및 업데이트 적용하기 Elasticsearch 동의어란? 검색 엔진의 최고봉(?)인 elasticsearch에서 동의어 기능은 일상생활 검색 기능에서 필수적인 부분이다. "동의어" 라는 말 그대로 A라는 단어(검색어)를 B와 동일하게 볼 수 있도록 하는 기능이다. 지역별 단어 사용 차이라던지, 복수 단수 형 차이라던지 아니면 일반적인 동의어 영역에서 거의 비슷한 단어들이 존재하는 경우 또는 전문가와 비전문가의 언어차이 등에 동의어 기능을 사용하면 유저의 검색 경험을 훨씬 수월하게 만들 수 있습니다. examples ex1) lift => elevator ex2) houses => house ex3) tired => exausted ex4) iPod, ipod => i-Pod ex5) canine => dog elasticse..
[elasticsearch] search after란? 사용 방법 알아보기 with node.js Elasticsearch 는 한번에 최대 10,000개의 도큐먼트만 반환한다. 이 외에 size를 정해서 query를 날려 조회해올 경우에도 이전에 조회해온 것 이후부터 다시 가져올 때 필요한 기능이 search_after이다. 실습해보기 🐠 1. after_test 인덱스 생성 PUT after_test { "mappings": { "properties": { "id": { "type": "keyword" }, "place": { "type": "keyword" }, "reviews": { "type": "text" } } } } 2. 데이터 5개 입력 POST after_test/_doc { "id": 5, "place": "섬진강", "reviews": "ㄹ리뷰" } x 5 3. 일반적인 방법으로 ..
[Elasticsearch + Node.js] 좌표 거리 구하기 with script_fields arcDistance Elasticsearch db 안에 있는 데이터들의 위치와 나의 (또는 유저의) 좌표로 부터 얼마나 떨어져 있는지 거리를 나타내기 실습해보기 🐸 1. Elasticsearch distance_test 라는 index 추가 PUT distance_test { "mappings": { "properties": { "place": { "type": "text" }, "location": { "type": "geo_point" }, "reviews": { "type": "text" } } } } 2. distance_test 인덱스에 데이터 추가 POST distance_test/_doc { "place": "추어탕집", "location": [128.123123, 34.123123] } POST distanc..
[elasticsearch] dis_max란 무엇인지 알아보기, 실습하기 (bool, must와 함께 쓰기) dis_max 정확한 일치하는 문서에 더 높은 점수를 주기 위한 방법 - dis_max(DisjunctionMaxQuery에서 따온 용어) dis_max는 멀티 키워드 검색할 때, 여러 필드에서 검색 수행 시 멀티 키워드의 키워드와 동일한 키워드의 score에 더욱 높은 점수를 주는 방식이다. (하지만 반전이 있었으니...) 실습해보기 dis_max_test 라는 인덱스 생성 PUT dis_max_test { "mappings": { "properties": { "title": { "type": "text" }, "description": { "type": "text" } } } } 데이터 입력 POST dis_max_test/_doc { "title": "Autobiography of Osho", "d..
Elasticsearch geographic location query distance 거리로 가까운 곳 검색하기 1. Elasticsearch 의 GEO DATA TYPE 1) geo_point Logitude 경도, Latitude 위도를 사용하는 geo_point는 radius (반경) 내의 특정 범위 내를 검색할 수 있다. "point" 어느 지점을 딱 포인트한다 라고 이해했다 . 2) geo_shape geo_shape은 GeoJson을 사용하여 복잡한 그래프를 나타낸다. 만약 거~ 대한 박물관이 존재한다면 해당 박물관의 좌표는 한 "point"에서 끝나지않고 큰 범위를 이룰 것이다. 이 때 사용하는 것이 geo_shape 이다. 2. Elsaticsearch Geo_point search 검색 사용 방법 filter에 geo_distance를 걸어준다. filter: { geo_distance: { dis..
[mongoose] _v 필드 생성 이유 및 제거하기 갑자기 mongoDB에 새로운 db를 연결해서 데이터를 넣었는데 갑자기 처음본 _v 필드가 나왔다. 모델 스키마에 존재하지 않는데 왜지 ??? 찾다가 versionKey 값을 넣어주면 되었다. 해결 : 모델 스키마 두 번째 인자값 옵션에 versionKey: false를 작성해주기 const addressSchema: Schema = new Schema( { // 지역 region: String, // 시군구 siGunGuName: String, // 읍면동 eupMyeonDongName: String, // 연결된 주소 (pk) chainedAddress: String, }, { timestamps: { createdAt: true, updatedAt: true }, read: 'secondaryPre..
[AWS] Amazon S3 bucket 생성 방법 알아보기 (최신 업데이트) aws - Amazon s3란 ? Amazon S3 =Simple Storage Service 아마존 웹 서비스에서 제공하는 온라인 스토리지 웹 서비스 bucket, 버킷이라는 컨테이너를 생성하여 버킷에 데이터를 담아 S3에 저장한다. 덕분에 데이터를 저장하고, 보호하고, 또 언제든 어떤 디바이스로든 (클라우드 저장소너낌) 필요할 때 찾아 쓸 수 있다. Amazon S3 생성하기 1) aws 계정 로그인 계정이 없다면 이메일로 회원가입하고 진행하기! https://aws.amazon.com/ko/free 무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어 Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능..
운영중인 Elasticsearch reindex alias 무중단 예제 코드 및 사용 방법 / Zero downtime reindex alias Reindex란 ? 데이터를 입력하는 것 Reindex를 하는 이유는 ? 1) index의 mapping을 수정해야 할 때 - analyzer, analyzer's definition 등을 수정 시 2) Cluster upgrade or migration - Elasticsearch version 5.x 이하일 경우 ES가 index를 읽을 수가 없어서 이런 경우에도 Reindex 진행 3) 새로운 index에 기존의 데이터를 재입력하고 싶을 때 - 하지만 Reindex라는 말 그대로 mapping 정보 등은 제외하고 only 데이터만 가져옴 Reindex 실행 전 반드시 알아야할 점은? 1) _source 가 enabled 상태인 Index만 reindex가 가능 2) mapping정보까지 카피하는 것..
[Node.js] Excel.js 사용법 총정리 / How to use Exceljs (테이블 만들기, insertRows, columns, value 등) 이번 프로젝트 중 가장 시간도 오래걸리고 어려웠던 엑셀 파일 만들어 내보내기 를 정리해서 기록으로 남기기 기존에는 xlsx를 익히고 사용했었다가 css가 유료인걸 뒤늦게 알았다.. 👼🏼 찾아보니 많은 개발자들이 이 사실에 빡치고 exceljs로 갈아타고 있다고 한다. 며칠 전 적은 xlsx 사용법 포스팅 https://blckchainetc.tistory.com/426 [Node.js] How to use xlsx with Typescript / xlsx 사용법 설치하기 Installation npm install xlsx 설치 후, 아래와 같이 두 가지의 가져오기 방법이 있다. and now you can use XLSX in 2 ways. - require ( default ) const XLSX =..
[컴퓨터 네트워크] 웹 서비스 동작 원리 / URL 뜻 / APM 동작 원리 책으로 배우는 컴퓨터 네트워크 목차 1) url 의 의미 뜻 2) 웹 서비스 동작 원리 3) APM 동작 원리 1. Url (Uniform Resource Locator ) 우리가 자주 쓰는 url 주소는 아래의 구성으로 이루어져있다. 호스트는 우리가 알기 쉽게 만든 "이름"이라고 생각하면 되고 사실상 ip 주소를 말한다. 호스트: ip 를 저장하는 DNS 서비스로 해당 호스트명으로 ip를 찾아 사용한다. https://www.naver.com/shopping/payment [https] :// [www.naver.com] / [shopping/payment] [프로토콜] : // [host호스트] / [path 내부경로] 2. 웹 서비스 동작 원리 1. 사용자가 웹 브라우저에 url 주소 입력 2. c..
[JavaScript] reduce 개념 사용법 알아보기 Reduce : reduce() 매서드는 배열의 각 요소에 대해 주어진 함수를 실행, 하나의 결과값을 반환한다. 반환값은 number, object, array 등이 있다. * reduce는 배열에 적용되는 함수이다. Reduce의 인자값 1. 누산기 (acc) 2. 현재값 (cur) 3. 현재 인덱스 (idx) 4. 원본 배열 (src) reduce의 첫 번째 인자값이 reduce의 특징을 잘 말해준다. acc 누산기 = 최종 집합 결과물이라고 생각하면 쉽다, 내가 설정한 함수가 적용된 값이 acc 인자값으로 할당되고 각 ele요소 반복하면서 acc의 값도 계속해서 바뀌게 된다. 처음 개념을 읽었을 때 바로 이해하기 어려웠는데, 아래 예시처럼 console.log를 찍어 어떻게 돌아가는지 눈으로 확인하..
map vs reduce 개념 차이 성능 속도 비교 Map & Reduce map 과 reduce 모두 항상 array에 사용한다. ex. [1,2,3,4].map(() => {}) [{a:1}, {b:2}, {c:3}].reduce(() => {}) Map map은 항상 기존의 array가 가진 동일한 수의 elements를 담은 array를 반환한다. 만약 기존 array 의 elements가 5개라면 반환되는 array의 elements도 5개이다. array의 각각의 개별 element에 변화를 주고 싶을 때 map을 사용한다. example) const array = [1,2,3,4]; const mapArray = array.map((ele) => { return Math.pow(ele, 2); }); console.log(mapArray);)..
Excel how to custom Number format 숫자 서식 사용자 지정 커스텀하기 / -0 을 0으로 바꾸기 음수 node.js + typescript + exceljs 로 엑셀 파일 생성을 하던 중, db에서 받은 데이터는 1000, 0, -500 이렇게 실수인 경우 모두 - 를 붙여서 출력해야 했다. numFmt : '#,##0' 은 123,400 이렇게 나오고 numFmt : '-#,##0' 은 -123,500 이렇게 나온다. 그래서 처음에는 '-#,##0'으로 사용했다. 그런데 내가 받은 데이터가 1000, 0, -500 이라면 '-#,##0'이 적용되어 나오는 형식이 아래 박스의 결과였다. The data I got from db was [100, 0, -500] and I had to show them in Excel file as negative. so first I tried exceljs numFmt..
[Exceljs] worksheet.columns location 엑셀 컬럼 위치 지정하기 node.js + typescript + exceljs 로 엑셀 파일 생성 및 내보내기를 진행하다가 Exceljs의 addTable 로 테이블을 작성했었다. 이후에 코드리뷰를 받고 table 생성을 아예 하지않고 아예 columns 추가 및 데이터를 InsertRows로 생성하도록 변경했다. 여기서 내가 어려움이 있었던 부분은 I decided to use "worksheet.columns" + "insertRows" instead of using "addTable" function because the data I got from db is an array of objects and I had to refine the data for the rows of table again. but I can jus..
[mongoDB/mongoose] Schema hasn't been registered for model / Populate Schema hasn't been registered for model error cases below schema const userSchema = new Schema( { name: String, friends: [{ type: Schema.Types.ObjectId, ref: 'friends' }], }, { timestamps: false, read: 'secondaryPreferred', versionKey: false, }, ); 스키마 User에 friends라는 다른 모델을 Ref 해놓고 mongoose Populate를 하다가 나온 에러! Wrong usage const getFriends = async (userIdx, projection) => { return UserModel.fi..
Typescript Error: Property 'user' does not exist on type 'Request' Typescript import { Request, Response } from 'express'; const exec = async (req: Request, res: Response, next: Function): Promise => { const { idx } = req.user; const { restaurantIdx } = req.params; . . . }; export default { exec }; 빨간 줄이 간 .user You can see the res line above, the error is : Error : TS2339: Property 'user' does not exist on type 'Request >'. 기본적으로 express에서 가져온 Request에는 user라는..
[No overload matches this call] is not assignable to type 'RequestHandler<ParamsDictionary, any, any, ParsedQs, Record<string, any>> [No overload matches this call] ~ is not assignable to type 'RequestHandler TS2769: No overload matches this call. The last overload gave the following error. Argument of type '(req: Request, res: Response, next: NextFunction) => any' is not assignable to parameter of type 'RequestHandlerParams'. Type '(req: Request, res: Response, next: NextFunction) => any' is not assignable to type 'RequestHa..
[node.js] setHeader content-disposition 파일명 한글 깨짐 / TypeError - Invalid character in header content ["Content-Disposition"] node.js에서 엑셀 파일 생성 및 내보내기 (다운로드) 를 진행할 때 파일명에 한글이 들어가면 아래와 같은 에러가 나온다. res.setHeader( 'Content-Disposition', `attachment; filename=파일명예시.xlsx`, ); TypeError - Invalid character in header content ["Content-Disposition"] 해결법 1. 먼저 한글 String에 인코딩을 해주고 2. filename 바로 뒤에 [ *utf-8'' ] 를 적는다. res.setHeader( 'Content-Disposition', `attachment; filename*utf-8''=encodeURI('파일명예시').xlsx`, ); 그럼 엑셀 파일명이 내가 ..
[Joi] 특정 필드 날짜보다 특정일을 초과하면 안되도록 설정하기 아래와 같이 startDate와 finishDate가 있다. 여기서 startDate와 finishDate가 최대 90일까지 가능하도록 (91일 부터는 설정이 되지 않도록) 만들기 There are startDate, finishDate in the following box. I'd like to make the the max days between them 90 days. const validationSettings = { startDate: Joi.date() .required() .format('YYYY-MM-DD') .max(Joi.ref('finishDate')) .label('시작 날짜'), finishDate: Joi.date() .required() .format('YYYY-MM-DD') ..

반응형