카카오 모빌리티 뉴스 스크립트 변경 후기 기존 우리 회사에는 뉴스 및 날씨 정보를 API로 만들어 카카오 모빌리티에 정보를 보내주고 있었다. 그러나 하루 단위로 100개씩 보냈던 데이터가 가끔 1개 혹은 100개 이하가 되는 경우가 있었다고 하여 데이터 갯수를 유지하기 위해 기존 json 데이터의 구조를 바꿔야했다. 목표 DataBase로부터 일자별로 100개의 데이터를 수집하고 100개 미만일 경우 이전 데이터와 병합하여 100개를 채운다. 기존 날씨 데이터를 하나의 배열로 묶어 반환한다. 배운 것 데이터 형식만 변경하면 되는 쉬운 업무였지만 개발이라는 일의 흐름을 이해할 수 있던 좋은 기회였다. 돌아가게만 하자 라는 생각에서 예외사항을 고려하며 설계했고 난잡한 코드는 서버에 부담을 줄이기 위해 많은 ..
IFRAME 문서에서 js 일부기능이 먹히지않는 현상 iframe이란 inline frame의 약자입니다. iframe 요소를 이용하면 해당 웹 페이지 안에 어떠한 제한 없이 또 다른 하나의 웹 페이지를 삽입할 수 있습니다. 우리 모두 이렇게 이해하고 있겠지만 삽입된 문서에서 기능을 구현해야한다면 이야기는 달라진다. 뭐가 문제인데? 다음과 같은 파일이 있다고 가정하자. // A document iframe태그를 이용한 웹 페이지 삽입 1 // B document iframe태그를 이용한 웹 페이지 삽입 1 A 문서 내부에 B 문서를 inline 했기때문에 B 문서가 A에 포함되어있다고 이해는것이 틀리진 않지만 함수를 사용할 경우 접근 방식을 달리해야한다. B 문서에서 A 문서의 TITLE 태그의 색깔을 ..
스크롤링 이벤트 발생시키기 새롭게 페이지를 리뉴얼하면서 기업의 연혁 / 수상 내역을 보여주는 페이지를 관리하게 되었다. 핵심 페이지의 상단에는 년도가 표시되며 년도를 클릭하면 해당 위치로 SCROLLING이동후 하리라이트 이벤트를 발생시킨다. 기본 구성은 Anchor 상태의 버튼과 # 링크로 구성하여 화면을 이동시킨 후 이벤트가 발생하도록 eventlitener 를 추가시키도록 한다. 2020~ 2019~2010 2009~2001 2000~1993 2022 03. 06. 2021 03. 2020 06. 10. 11. 페이지 스크롤링은 Client 가 해당 위치를 볼 수 있도록 이동하는 것이지만 컴퓨터의 입장에서는 해당 위치를 보여주고있는지 모른다. 컴퓨터가 이해할 수 있는 방법은 전체 페이지의 크기와 디..
PHP 코드개선 2 목표 기존 json 스크립트를 요청사항에 맞게 가공하는 일이였지만 우리는 토이 프로젝트 가 아닌 실제 서비스에 적용될 업무였기 때문에 단순하게 설계하는 방법보다는 효율적으로 개발해야만 했다. 요청사항 문자열 내부의 5~7개의 공백("\r\n") 기준으로 배열을 쪼개여 json 으로 반환할 것 가공 전 { "category": "날씨", "content": "오늘 강원도 날씨는 ... 오늘 새벽 동해안에 강한 비바람 ... 미세먼지 주의 ..." }가공 후 { "category": "날씨", "content": "오늘 강원도 날씨는 ...", "category": "날씨", "content":"오늘 새벽 동해안에 강한 비바람 ...", "category": "날씨", "content":..
loop 함수 어떤걸 사용할까? 이 포스팅을 찾아온 사람이라면 이제 개발의 세계에 들어온 학생들 혹은 이직을 준비하는 직장인 일것이다. 결론부터 말하면 while 과 for 이 둘의 차이는 없다. 정확히 말하면 처리시간에 차이는 있을지 몰라도 그 시간 차이는 무시할 수 있을 정도로 작다. 그렇지만 나의 블로그에 찾아온 사람들에게 해주고 싶은 말은 ... ❌ 절대 while 문을 사용하지 마! ❌ 취준생을 졸업하고 큰 기업에 주니어 개발자 일을 시작한 철수는 사수로부터 하나의 일을 부여받게 된다. 배열을 순회하며 "날씨" 카테고리의 내용을 문자열로 분리하여 중간에 삽입하세요. 가공 전 { "category": "날씨", "content": "오늘 강원도 날씨는 ... 오늘 새벽 동해안에 강한 비바람 .....
스핑크스 검색 문제 개선 SPHINX 검색 엔진이 가지는 가장 큰 문제는 노이즈 문제이다. 정확이 말하면 NGRAM이 가진 문제인데 검색 기능을 구현함에 있어서 노이즈 문제를 해결해야했다. NGRAM에 대한 정확도를 높이기 위해서는 2가지 방법이있다. N 의 수를 늘리자 TOKEN을 많이 가져가자 (검색 단어를 많이 입력하자) ex) "산에서 들개" 의도) “산에서 들개 떼를 만났다” 등산 사고 민원 예고 울렸다... 결과) “산에서 들개 떼를 만났다” 등산 사고 민원 예고 울렸다... BECK-END인 내가 할 수 있는 방법은 2번 방법이라고 생각했고 사용자가 의도한 정보를 획득하기 위해 검색결과가 저장된 Log를 분석하여 해결하고자 했다. LOG 분석 1. 이용자는 문장보다 키워드를 많이 사용한다. ..
Ngram Algorithm SPHINX SQL를 서비스를 준비하면서 스핑크스가 가진 특이한 검색 방법에 고민을 많이했다. N-GRAM 개념 N-gram은 통계학 기반의 언어 모델중 하나로 다음 단어를 예측할 때 문장에서의 모든 단어를 고려하지 않고 특정 단어(TOKEN)의 개수(N)만 고려한다. ex) “산에서 들개 떼를 만났다” 등산 사고 민원 예고 울렸다 N 모델명 구현 1 Unigram “산에서 / 들개 / 떼를 / 만났다” / 등산 / 사고 / 민원 / 예고 / 울렸다 2 Bigram “산에서 들개 / 떼를 만났다” / 등산 사고 / 민원 예고 / 울렸다 3 Trigram “산에서 들개 떼를 / 만났다” 등산 사고 / 민원 예고 울렸다 4 4-gram “산에서 들개 떼를 만났다” / 등산 사고 ..
SPHINX What is sphinx ?? Sphinx is an open source full text search server, designed from the ground up with performance, relevance (aka search quality), and integration simplicity in mind. Sphinx lets you either batch index and search data stored in an SQL database, NoSQL storage, or just files quickly and easily — or index and search data on the fly, working with Sphinx pretty much as with a da..
테스트 당한 나의 일 지난 16일 금요일부터 개편될 사이트를 일부 수정하는 작업을 담당하게 되었다. 팀장님: 메인 페이지에 출력할 데이터 테이블을 추가하여 최신글 30개를 화면에 뿌려주세요. 나: ... (쉽네.. JAVA 하다 왔다고 나 무시하나?) 해야할 일은 간단했다. 그저 기존 테이블(NOTICE) 에서 시청자의견(OPINION) 테이블을 추가 후 시간순으로 정렬하여 30개를 가져오면 되는 것 이었다. JAVA JPA를 써왔던 나로서 php는 sql mapper 형식이였기에 과정은 어렵지 않았다. 팀장님: 신입이니깐 DB는 손대지 마세요. 조회도 안돼요. 나: ??? 실제로 테이블도 안보여주었다. 코딩 "(select id, subject, user_id, wdate FROM {$tbl1} whe..
Common Table Expression WITH 절과 함께 사용되는 CTE는 Mysql 8.0 부터 사용할 수 있다. CTE는 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되었던 것을 대신할 수 있으며, 더욱 간결한 식으로 표현할 수 있도록 구성할 수 있다. 어쩌면 SubQuery를 대신할 수 있다고 생각한다. CTE 구성 CTE는 가상의 테이블을 하나 더 생성한다 라고 생각하면 이해할 수 있다. WITH CTE_TableName(열 이름) AS ( ) 위 명령어로 만들어낸 테이블을 쿼리문의 대상 테이블 이름으로 사용할 수 있다. 지역별로 성적을 구하는 테이블 WITH CTE_TableName(addr, student) AS ( select * from grade_Table group by ad..
- Total
- Today
- Yesterday
- Matlab
- kakao
- 릿코드
- 자바
- 면접
- 알고리즘
- springboot
- docker
- JPA
- Algorithm
- 자격증
- java
- 프로그래머스
- 디자인패턴
- 스프링부트
- CS
- OOP
- Spring
- 수학
- 그래프
- interview
- nginx
- Solid
- ajax
- spring-cloud
- C언어
- 백준
- 스프링
- 매트랩
- security
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |