왜 이런 앱을 배포했는가?일반 직작 9-6 근무로 살아가는 일반 직장인의 일과를 쫓아가는 일은 가족으로서 크게 신경을 쓸 일은 아니지만비행 기장으로 지내는 가족의 일정을 확인하는 것은 꼭 필요한 일이다.옷을 준비하고 오붓한 시간을 보내는 등 가족으로서 알아야할 그리고 기장이 다음 비행을 준비하는 가장 기본적인 일이기 때문인데내가 받아본 일정표는 마치 엑셀로 뽑아놓은 것처럼 보기에 불편했으며 항공사에서는 이를 관리할 수 있는 서비스가 전혀 없었다.내가 해야할 것은 무엇인가?개발자의 입장에서 생각해보면 이런 문제를 두고 어떤 서비스를 만들 수 있을까?비행 일정을 보기좋게 앱으로 만들자날씨 정보도 가져와 볼까?돈도 벌 수 있도록 광고도 달아야지!문제 발생비행 일정을 관리하는 기업에서 API를 가져오면되는거 아..
Sphinx 엔진의 한계스핑크스를 사용하면서 가장 중요한 한계점을 발견하였는데이미 인덱싱 처리가 되어있는 Sphinx 테이블간의 데이터 활용을 위한 Join / Subquery / Union 쿼리가 지원되지 않는다는 점이다.SphinxQL support for inner join on the same index with subquery[일부 쿼리를 지원하지 않는 근본적 이유]검색 엔진 최적화:Sphinx는 주로 텍스트 검색을 위해 최적화된 검색 엔진이며 복잡한 SQL 기능보다는 고속의 텍스트 검색 및 인덱싱이 목적이기 때문이다.데이터 저장 및 인덱싱Sphinx는 데이터를 자체적인 인덱스 파일 형식으로 저장하고 관리하며 인덱스 파일은 MySQL의 테이블 구조와 다르다.단일 테이블 기반 검색Sphinx는 단..
서비스별 STT 개발 요구사항 개요 정부 주관으로 청각 장애인 복지를 위해 영상 미디어 자료에 자막을 추가하는 사업을 수행하게 한다. 자막은 VTT 파일로 관리하며 아래 4가지 서비스 중에서 하나를 선택하여 개발한다. 서비스 선택은 API 지원 방식 / 문서화 / 비용 3가지를 중점으로 확인하며 확장자(.mp4)를 지원하는 서비스 위주로 선택된다. 결과 파일은 현재 사용중인 GS CDN에 저장하도록 하며 이후 파일을 관리할 수 있는 DB Table을 생성한다. 서비스별 요구사항 서비스 AWS Naver Clova AssemblyAI PHP 지원 방식 SDK cURL cURL 기타 언어 PHP / JAVA / Python PHP / JAVA / Python PHP / JAVA / Python 미디어 형식 ..
반복되는 컬럼을 한줄로 표현하여 개선 다수의 테이블은 어떻게 조합할 것인가? MySQL에서 테이블을 조합하는 과정은 크게 2가지 방법(UNION / JOIN)이 있다. 어느 함수가 더 뛰어나다 라는 것은 없으며 상황에 적합하도록 사용하면 된다. 나의 경우 3개의 테이블(PC / MA / MW)에서 동일 데이터 컬럼을 가져왔으며 UNION을 사용하는 것이 적합했기에 최종 select 에서는 UNION을 사용했으며 부가적으로 세부 컬럼을 가져와야 할 경우는 JOIN으로 획득하였다. 최초 작성 쿼리 문제 해당 쿼리가 작동하는데 있어서 문제는 없지만 해당 결과를 화면에 보여준다면 문제가 생기게 된다. 만일'집계'가 Daily, 하루 단위로 집계가 된다면 최대 12개월의 31일 그리고 해당 테이블의 컬럼 갯수 즉..
파일 저장소 마이그레이션 후기 사연 사실 이 이야기는 내가 입사하기전 22년 초부터 나온 이야기 일듯하다. 본래 우리 회사의 CDN관리를 한 기업에서 전담하여 관리해 왔고 해당 기업은 주로 FTP 방식으로 관리해온듯 하다. 그러나 뉴스회사가 그렇듯 방대한 이미지 데이터와 영상관리에 우리가 가용할 수 있는용량이 부족해지자 해당 기업은 2가지 선택지는 주었는데 하나는 비용 업그레이드이며 다른 하나는 Object Storage S3로 변경하여 관리하는 것이였다. 사실 이 두가지는 모두 사용해본 경험으로서는 S3가 다양한 이점을 가져다 주고 이러한 이점 때문인지 회사 또한 선택지에 대한 고민은 없었다고 했다. 변경 목적 첫 번째 가장 우선 순위는 Object storage가 가진 저장소의 특성일 것이다. 데이터..
@Configuration의 어노테이션은 SingleTon 이다. @Component 와 @Configuration 의 차이부터 알고 시작하자. @Component는 스프링이 가지는 특징인 DI의 특성을 보여주는 어노테이션 일것이다. 이전까지 XML 파일에 개발자가 클래스 혹은 메소드를 Bean으로서 직접 주입해 주었다면 @Component 어노테이션의 등장으로 개발자가 직접 XML파일에 직접 작성하는 과정을 생략할 수 있었다. 스프링2.5 버전에서 추가된 이 버전은 @Controller, @Service, @Repository 어노테이션에 기본 내장되어있어 우리가 위 3가지를 클래스 상단에 추가해주기 때문에 @Component 를 선언 없이도 Bean으로서 사용할 수 있었던 것이다. @Configura..
database 에서 두개의 테이블 사이에 데이터 검색 방법 쿼리를 다루다보면 두가지 테이블을 연관지어 데이터를 조회할 때가 있는데 PROGRAM_INFO 와 NEWS_01 테이블의 연관관계가 외래키 idx로 묶여있다면 프로그램이 가진 뉴스 콘텐츠를 쉽게 확인할 수 있을것이다. -- SUBQUERY 방식 select * from NEWS_01 a, PROGRAM_INFO b where (select count(join_key) from ATTACH where join_key=a.join_key)=0 -- JOIN 방식 select * from NEWS_01 a join PROGRAM_INFO b ON a.m_cd=b.m_cd where (SELECT COUNT(*) from NEWS_01 a right ..
AJAX vs CURL 원문 cURL is a server-side process. This means that it will be called before the page is rendered and has nothing to do with the client's capabilities. AJAX, however, is a client-side call. This means that it will not be executed until the client loads the page (or at least that piece of code is seen and executed, but this typically works on document.ready). If you're looking ..
검색엔진 변경 후기 ZOOM 검색 엔진의 계약이 종료되면서 자체 서버를 통해 검색엔진을 만들어낼 필요성이 생겼다. 목표 DataBase 프레임워크는 Mysql을 사용하며 서브 엔진으로는 SPINX 를 사용한다. 스핑크스 검색엔진에 적합하도록 쿼리를 변경하여 사용한다. 개선점 DB 접근 횟수 최소화 기존 검색 방식에서는 SQL에 접근횟수가 너무 많았다. 회면에는 5개의 테마가 있으며 각 테마별로 20개의 ROW를 가져와야했는데 사용자가 메인화면에 접속하면 6번의 DB접근을 필요로 한다는 것이다. 스핑크스 노이즈 문제 해결 스핑크스 엔진의 문제점은 검색 결과의 노이즈 문제이며 이를 해결하기 위해서는 2가지 방식이 존재했다. 1.N 의 수를 늘리자 2.TOKEN을 많이 가져가자 (검색 단어를 많이 입력하자) ..
- Total
- Today
- Yesterday
- Matlab
- 스프링부트
- 스프링
- Solid
- 백준
- JPA
- 자바
- springboot
- 디자인패턴
- Spring
- java
- ajax
- 면접
- spring-cloud
- interview
- CS
- kakao
- 수학
- 매트랩
- 그래프
- 자격증
- docker
- OOP
- Algorithm
- 프로그래머스
- C언어
- nginx
- 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 | 31 |