전체 글 248

레벤슈타인 거리 (Levenshtein Distance)

레벤슈타인 거리란 문자열의 유사도를 검사하는 기본적인 알고리즘으로 편집 거리라고도 부름 a문자열에서 b문자열로 편집할때 몇번의 조작이 필요한지를 도출해낸다 예를들어 '가나다라'와 '가나다마바'의 거리는 2이다 '라' -> '마', '바'추가 코드 exports.levenshteinDistance = (str, search) => { if (search === undefined) return 0; if (str === search) return 0; let aLen = str.length; let bLen = search.length; if (aLen === 0) return bLen; if (bLen === 0) return aLen; //배열 생성 let matrix = new Array(aLen + ..

fuzzy검색의 highlight와 가중치 적용

참고 : https://taegon.kim/archives/9919 [JS] 한글도 지원하는 퍼지 문자열 검색 UI 작업을 하다보면 목록을 검색해야 할 때가 많다. 그런데 사람의 기억이라는 게 정확하지 않아서 혹은 전부 입력하기 귀찮아서 개떡같이 일부만 입력해도 찰떡같이 원하는 결과를 보여주는 UI taegon.kim Highlight 적용 검색을 한 글자를 빨간색으로 반환 가중치 적용 원래 db상 '과일먹자'가 '과자냠냠'보다 id값이 빨라서 상단에 위치했는데 유저가 좀더 찾기를 원했을만한 단어가 위로가게 가중치 적용 빨간색으로 색 바뀌는부분 코드 exports.chageRed = (data, search) => { const regex = createFuzzyMatcher(search); const ..

15일차 / fuzzy검색의 highlight와 가중치 적용

한것 Highlight 적용 검색을 한 글자를 빨간색으로 반환 가중치 적용 원래 db상 '과일먹자'가 '과자냠냠'보다 id값이 빨라서 상단에 위치했는데 유저가 좀더 찾기를 원했을만한 단어가 위로가게 가중치 적용 highlight와 가중치에 대해 내가 쓴 글 https://fullfish.tistory.com/105 fuzzy검색의 highlight와 가중치 적용 참고 : https://taegon.kim/archives/9919 [JS] 한글도 지원하는 퍼지 문자열 검색 UI 작업을 하다보면 목록을 검색해야 할 때가 많다. 그런데 사람의 기억이라는 게 정확하지 않아서 혹은 전부 입력하기 귀 fullfish.tistory.com result = document.querySelectorAll('.title'..

14일차 / 배포 (https, 도메인), 프론트 search창

https로 서버를 배포했다 배포 참고 : https://fullfish.tistory.com/53?category=1050721 4일차 / HTTPS인증과 도메인구입 (route53) 진행 백앤드 https 인증과 route53으로 도메인을 바꿨다 프론트와 백모두 AWS상에서 hello world 출력 성공 https인증은 AWS에서 로드밸런서를 이용해서 적용함 하는법(주의할점만) 로드밸런서 생성 Interne fullfish.tistory.com https://just-moment-trip.tk 로 도메인을 만들었다 프론트 search창을 만드는데 기여했다

순열(DFS 깊이우선탐색)

1부터 n까지의 숫자중 m개를 순열한다면 let arr = ["rock", "scissors", "paper"]; function rockPaperScissors(arr, n) { let answer = []; function DFS(L, S) { if (L === 0) { answer.push(S); return; } for (let i = 0; i < arr.length; i++) { if (!S.includes(arr[i])) DFS(L - 1, S.concat(arr[i])); //이건 순열 // DFS(L - 1, S.concat(arr[i])); //이건 중복 순열 } } DFS(n, []); return answer; } console.log(rockPaperScissors(arr, 3));..

정규표현식의 capture, group

//예시 문자열 let str = "안녕하세요 안녕 제 전화번호는 010-1234-5678입니다 G gd god good goood!."; capture는 ()로 사용 str.match(/전화번호/) //반환 [ '전화번호', index: 11, input: '안녕하세요 안녕 제 전화번호는 010-1234-5678입니다 good!.', groups: undefined ] str.match(/전화(번호)/) //반환 [ '전화번호', '번호', index: 11, input: '안녕하세요 안녕 제 전화번호는 010-1234-5678입니다 good!.', groups: undefined ] 위 코드에서 처럼 '번호'에 capture을 할 경후 match의 반환값 2번째 인자로 capture안의 문자열이 들어..

13일차 / fuzzy검색 구현

다이어리의 title이 위 이미지처럼 14개가 있을 때 "새깡"으로 검색시 { "data": [ { "id": 3, "title": "과자는새우깡", "picture": "url", "gps": "21,22", "content": "새우깡은갈매기꺼", "write_date": "2022-12-01 09:00:00", "createdAt": "2022-05-05 22:26:02", "updatedAt": "2022-05-05 22:26:02", "trip_id": 1, "hashtags": [ "맛있다", "새우새우", "냠" ] }, { "id": 4, "title": "새우깡은과자", "picture": "url", "gps": "21,22", "content": "새우깡은갈매기꺼", "write_da..

퍼지(fuzzy) 검색 (정규표현식이용)

fuzzy logic : 불분명한 상태, 모호한 상태를 참 혹은 거짓의 이진 논리에서 벗어난 다치성으로 표현하는 논리개념 (위키백과) 확률론과 근본적으로 다른것이 부엌과 침실사이에 서 있을때 50%확률로 부엌에 있고 50%확률로 침실에있다고 말하는것과 양자역학처럼 50%는 부엌 50%는 침실에있다라고 말하는것은 다름 fuzzy 검색 : 완전히 일치하지않아도 검색하는것 (유사성 검색 알고리즘) fuzzy 검색이란 유사해도 검색하는 방법론이므로 딱 정해진 방법이 존재하는것은 아니다 다양한 방법들이 있는데 레펜슈타인 거리(Levenshtein distance) 다메라우-레펜슈타인 거리(Damerau-Levenshtein) 우(Wu)와 만버(Manber)씨에 의한 비탭 알고리즘과 변형 철자 검사 기법 N-그램 ..

식물 생장등 자동으로 on off하기

옛날에 만든거라 정보가 적음 재료 wemos d1 mini pro, relay 동기 식물의 일조량을 늘리기위해 생장등을 구비했는데 일몰때 끄고 일출때 키는것을 자동화 하기위해서 내용 원래는 조도 센서로 일출과 일몰을 감지하려고했으나 실내등으로 인해 항상 밝기때문에 서버시간을 받아와서 릴레이로 on off 해주기로함 세부내용 자체타이머의 오차를 줄이기위해 서버시간은 1시간마다 받아와서 업데이트 전구를 제외한 릴레이와 wemos는 배터리를 사용해작동 소비전력을 줄이기위해 측정해본 wemos의 상태별 소비전류 멀티미터로 재본 결과 상태 소비전류 비고 일반상태 70~80mA modemsleep 10~20mA (wifi off 상태) deepsleep 작아서 안잡힘 (검색해보니 0.06~0.18mA) (정해진 시..

Project/arduino 2022.05.05