| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 회고
- JS
- 다국어
- ffmpeg
- fabricJS
- 코드리뷰
- TEXTBOX
- 부동소수점
- react-i18n
- CBR
- 개발자회고
- 크로스브라우징
- currenttime
- ime
- VBR
- 해시
- javascript #encodeuri #encodeuricomponent
- 알고리즘
- 폰트
- next-i18n
- 스택
- matchmedia
- 프로그래머스
- audio 객체
- 변수명
- Safari
- railway #mysql #db배포
- safari 버그
- fontfamily
- Today
- Total
목록전체 글 (25)
Leo의 기술 블로그
문제 상황textarea 요소에 입력을 하고 enter 키를 누를때 한 번만 제출 될꺼라는 생각과 달리 중복돼서 제출이 되는 이슈가 있었다.이 현상이 발생하는 방법은 오로지 한글을 입력하고 enter 키를 누를때만 발생하는 이슈였다. onKeyDown(event: KeyboardEvent, formType: string): void { event.stopPropagation(); // 엔터키 누를 때 기본 동작(줄바꿈) 방지 if (event.key === 'Enter' && !CrossBrowsing.touchDevice) { event.preventDefault(); if (!this._inputValue.trim()) { ..
글을 작성한 계기기존에 fontFamily에 폰트 스타일을 단순하게 적용하는 방법밖에 몰랐지만 이번에 우리 뷰어 서비스에 텍스트 필기를 넣게 되면서 생겼던 여러 폰트 스타일이 적용이 안되는 이슈를 확인하면서 확인한 내용에 대해서 정리하려고 한다. 새롭게 알게된 내용에 대한 정리폰트 파일은 사실 여러개의 파일들로 나누어져 있다. (하나의 파일로만 받을 수 있다.) 각 파일마다 지원하는 텍스트 범위가 다르다.폰트 파일 하나의 용량은 생각보다 크다.(대략 2MB) 하지만 서버를 통해 받아오면 압축해서 오기 때문에 0.03MB정도로 오게 된다.하나의 폰트 파일이 모든 언어를 지원하지는 않는다. (대략 중국어의 폰트 용량이 가장크고 영어가 가장 적다.)한국어 지원 폰트여도 모든 글자를 포함하지 않을 수 있다. (..
문제 상황우리 라이브러리는 오디오 재생을 위해서 브라우저의 Audio 객체를 사용중이다. 그리고 서버에서 오디오 파일의 응답 헤더에 Accept-Ranges: bytes가 있어 오디오 파일을 모두 받아오기 전에 재생이 가능하다고 판단이 되면 먼저 재생이 되도록 구현되어 있다. 하지만 우리 라이브러리를 사용하는 고객사중 한 곳의 네트워크에서만 오디오가 정상적으로 재생되지 않고 매번 처음부터 재생되는 이슈가 있었다.그 이유를 알아보니 해당 네트워크 프록시 서버에서 mp3 파일을 변조하는걸 응답 헤더에 via key값을 통해서 확인이 됐고 응답 헤더중 Accept-Ranges: bytes 값이 제외된걸 확인할 수 있었다. 해결 방법해당 고객사 네트워크에서만 발생하는 데이터 변조 이슈이고 차이점이 일단 Acce..
matchMedia는 무엇인가? window 객체에서 지원하는 메서드(API)이다. document 내부에 미디어 쿼리 상태를 javascript에 가져와서 사용이 가능한 함수라고 보면 된다. const isMobileScreen = matchMedia('(min-width: 780px)').matches; 위에처럼 사용하면 javascript로 현재 document에 너비가 780px인지 판단해서 boolean값이 isMobileScreen 변수에 할당된다. 그럼 해당 변수를 사용해서 현재 화면 크기에 따라 분기처리가 가능해진다. 그럼 언제 matchMedia가 필요할까? 위와 같이 화면 너비에 따라 분기처리가 필요할때도 사용 가능하지만 사내에서는 터치 기기에대한 분기처리를 위해 사용했다. expor..
고민 배경 어드민 페이지 개발중 서버로부터 받은 소수점 데이터에 100을 곱해 화면에 보여줘야하는 상황이 있었다. console.log(0.5295 * 100); // 52.949999999999996 내가 의도한건 52.95까지의 데이터가 나왔으면 했는데 실제로 화면에 표시되는건 의도하지 않은 데이터가 나왔다 이번 글은 이렇게 나온 이유에 대해서 컴퓨터가 어떻게 소수점을 표현하고 있는지도 같이 정리해보려고 한다. 부동소수점 방식 컴퓨터는 값을 2진수로 표현할 수밖에 없다. 왜냐하면 미세하게 작은 트랜지스터의 집합으로 이루어져 있는데 이 트랜지스터의 켜짐과 꺼짐에 따라 값을 표현하고 있기 때문이다. 즉 소수점도 2진수로 표현해야한다. 앞에서 사용한 0.5295 값은 10진수의 값이다 이를 컴퓨터는 이..
문제 상황 if (this._audio.dataset.src === src) { if (Math.abs(clipStart - this._audio.currentTime) >= 0.3) { this._audio.currentTime = clipStart; } this.play(); return; } 현재 우리 mp3 재생은 버튼을 클릭시 서버에서 미리 받아온 clipStart 값을 통해 현재 audio 객체에 currentTime 설정해서 원하는 위치에 오디오를 재생시키도록 되어있다. 크롬에서는 문제가 없었지만 Safari 브라우저나 ios에서는 오디오 재생이 밀리는 문제가 발생했었다. 현재 서버에서 받아오는 mp3 파일이 135kb/s에 VBR..