Wooncloud Blog

브라우저 이미지 회전 현상 해결하기 (IE) - EXIF
이 문제는 회사에서 이미지 회전 현상이 일어난다는 QA를 받아서 수정하던 중 알게 되었습니다. 가끔 브라우저에서 사진을 업로드하거나 조회할 때 이미지가 본의 아니게 돌아가 있는 상태를 보실 수 있습니다. 요즘은 그런 현상이 거의 없지만, 2020년도에는 그런 현상이 있었습니다. 2022년 6월 15일부로 돌아가신 인터넷 익스플로러에도 아직까지 이러한 현상이 있습니다. 이 현상은 브라우저가 파일에 저장되어 있는 메타데이터를 읽고 대응해야 하는데, 그러지 못해서 생기는 일입니다. 일단 이미지 메타데이터는 어떤 것이 있는지 살펴보겠습니다. 메타데이터를 저장하게 해주는, 이미지 파일 포맷 : EXIF 디지털카메라, 스마트폰 카메라로 이미지를 찍으면 EXIF라는 이미지 파일 포맷입니다. EXIF는 JPEG, TI..

[친절한 SQL 튜닝 스터디] SQL 옵티마이저
https://velog.io/@wooncloud/series/%EC%B9%9C%EC%A0%88%ED%95%9C-SQL-%ED%8A%9C%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94 시리즈 | 친절한 SQL 튜닝 스터디 - wooncloud.log 인덱스 구조와 탐색 방법에 대해 알아보자! B*Tree와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 2022년 5월 8일 velog.io 통계정보와 비용 계산 원리 선택도와 카디널리티 선택도 선택도란, 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율을 말함. 가장 단순한 조건으로 검색할 때의 선택도만 살펴보면, 컬럼 값 종류 갯수를 이용해 아래와 같이 구한다. 💡 ND..

[친절한 SQL 튜닝 스터디] DML 튜닝
https://velog.io/@wooncloud/series/%EC%B9%9C%EC%A0%88%ED%95%9C-SQL-%ED%8A%9C%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94 시리즈 | 친절한 SQL 튜닝 스터디 - wooncloud.log 인덱스 구조와 탐색 방법에 대해 알아보자! B*Tree와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 2022년 5월 8일 velog.io 기본 DML 튜닝 DML 성능에 영향을 미치는 요소 인덱스 무결성 제약 조건절 서브쿼리 Redo 로깅 Undo 로깅 Lock 커밋 인덱스와 DML 성능 INSERT 테이블 레코드를 입력하면 인덱스에도 입력해야 한다. 테이블은 Freelist..

[친절한 SQL 튜닝 스터디] 소트 튜닝
https://velog.io/@wooncloud/series/%EC%B9%9C%EC%A0%88%ED%95%9C-SQL-%ED%8A%9C%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94 시리즈 | 친절한 SQL 튜닝 스터디 - wooncloud.log 인덱스 구조와 탐색 방법에 대해 알아보자! B*Tree와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 2022년 5월 8일 velog.io 소트 연산에 대한 이해 SQL 수행 도중 가공된 데이터 집합이 필요할때, 오라클은 PGA나 Temp Tablespace를 사용. 그 대표적인 예가 소트머지 조인, 해시조인, 데이터 소트와 그룹핑이다. 소트 수행 과정 소트는 기본적으로 PGA..

[친절한 SQL 튜닝 스터디] 조인 튜닝
https://velog.io/@wooncloud/series/%EC%B9%9C%EC%A0%88%ED%95%9C-SQL-%ED%8A%9C%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94 시리즈 | 친절한 SQL 튜닝 스터디 - wooncloud.log 인덱스 구조와 탐색 방법에 대해 알아보자! B*Tree와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 2022년 5월 8일 velog.io NL 조인 조인은 기본은 NL조인이다. NL조인은 인덱스를 이용한 조인이다. 소트 머지 조인, 해시 조인도 NL조인과 프로세싱 과정은 다르지 않다. 기본 메커니즘 아래 사원과 고객 테이블이있다. 이 두 테이블에서 1996년 1월 1일 이후 ..

[친절한 SQL 튜닝 스터디] 인덱스 튜닝
https://velog.io/@wooncloud/series/%EC%B9%9C%EC%A0%88%ED%95%9C-SQL-%ED%8A%9C%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94 시리즈 | 친절한 SQL 튜닝 스터디 - wooncloud.log 인덱스 구조와 탐색 방법에 대해 알아보자! B*Tree와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 2022년 5월 8일 velog.io 테이블 랜덤 액세스 💡 인덱스로 검색해도 빠른데, 왜 굳이 파티셔닝? 인덱스로 검색하는데 왜 느림? 대량의 데이터를 조회하면 테이블 전체 스캔하는것보다 인덱스 사용하는것이 더 느리다. 인덱스 ROWID는 물리적 주소? 논리적 주소? 인덱스를..

자바스크립트 객체 관리와 V8엔진 히든클래스
이 글은 모던 자바스크립트 Deep Dive를 보고 공부한 내용입니다. 자바스크립트에서 객체는 복합적인 자료구조입니다. 객체 내부에 있는 property의 수는 개수가 정해지지 않아, 객체의 크기도 정해지지 않고 동적으로 property가 추가, 삭제가 될 수 있습니다. 그래서 객체는 리터럴처럼 메모리 공간에 크기를 사전에 정의할 수 없습니다. 객체의 구현 방식은 브라우저 제조사마다 다를 수 있습니다. 그리고 객체를 생성하고 프로퍼티에 접근하는 것도 리터럴을 이용하는 것보다 비용이 많이 들기 때문에, 괜히 깔끔하게 코딩하겠다고 적은 데이터를 객체를 이용하여 선언하고 사용하면 오히려 쓸데없이 비용을 많이 쓸 수 있습니다. (엄청 크게 차이나진 않지만..) 자바스크립트의 객체 특징 자바스크립트에서 객체는 프..

자바스크립트 맵 객체 (Javascript Map Object)
Map이란? Map객체는 Key와 Value로 이루어진 자료구조입니다. Key는 고유한 값을 가져야 하는 특징을 가지고 있습니다. 자바스크립트에서의 Map객체는 Key와 Value을 서로 매핑시켜 저장하고, 저장된 순서대로 각 요소들을 반복적으로 접근할 수 있도록 해줍니다. ES6부터 도입된 문법이며 ES5에서는 사용할 수 없습니다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Keyed_collections 키기반의 컬렉션 - JavaScript | MDN 이번 장에서는 입력된 키값을 기준으로 정렬되는 데이터의 집합(자료 구조)에 대해 소개 할 것이다. Map과 Set은 입력된 순서대로 반복적으로 접근 가능한 요소들을 포함하고 있다. deve..

예쁜 리액트 프로필 아바타 라이브러리 - avvvatars
세 번째 아바타 라이브러리 소개입니다. 이번에는 리액트에서 사용할 수 있는 리액트용 라이브러리입니다. 저는 리액트를 사용하지 않지만, 그래도 좋은 라이브러리이고 디자인도 예뻐서 소개하고 싶었습니다. 리액트를 모르는 저도 알 정도로 사용법도 간단합니다. 필요한 분이 이 글을 보고 좋은 영향을 받았으면 하는 마음으로 이렇게 소개합니다. AVVVATARS avvvatars는 알파벳 글자와 도형으로 사용자의 프로필을 표현해줍니다. 40가지 색상과 60가지 모양의 조합이라 총 2400개의 개성 있는 프로필을 만들 수 있습니다. 사이즈는 가볍고 다양한 옵션도 있어서 예쁜 랜덤 프로필 만드는데 함께 사용하면 좋을 것 같습니다. 웹사이트 (website) https://avvvatars.com/ Avvvatars - ..

예쁜 랜덤 프로필 이미지 만들기 - Boring Avatars
이전에 소개했던 DiceBear Avatars는 예쁜 그림이 별로 없어서 호불호가 많이 갈렸을 것 같습니다. 하지만 이번에는 좀 더 귀엽고 예쁜 아바타를 만들 수 있는 라이브러리를 소개하겠습니다. Boring Avatars https://boringavatars.com/ Avatar generator playground - Boring Avatars Boring avatars is a tiny JavaScript React library that generates custom, SVG-based, round avatars from any username and color palette. boringavatars.com https://github.com/boringdesigners/boring-avatar..

자동 프로필 이미지 생성 API - DiceBear Avatars
회원 시스템이 있는 서비스를 만들면, 보통 회원의 프로필 이미지를 설정할 수 있는 기능이 있습니다. 프로필 이미지 기능을 만들면, 프로필 사진이 없을 때, 보통 아래와 같은 이미지로 보여주도록 만들죠. 해외에서는 이것을 아바타라고 합니다. 그런데 혹시 Github 계정을 만들면 처음에 설정되는 아바타를 보신 적 있으신가요? Github는 이 초기 아바타를 계정 ID를 Seed로 랜덤한 이미지를 등록해 놓습니다. 이런 아바타는 Github에서 직접 만들어서 등록해주는 것일까요? 아닙니다. 이러한 랜덤 아바타를 만들어주는 API가 따로 있고 Github는 이것을 이용했습니다. 이렇게 ID를 넣고 랜덤 아바타를 만들어주는 API를 다양하게 소개해 드리겠습니다. DiceBear Avatars https://av..

더미 이미지가 필요할 땐, 로렘 픽숨 (Lorem Picsum)
웹 개발을 하면서 가끔 더미 텍스트가 필요할 때, 로렘 입숨(Lorem Ipsum)을 사용해 보셨을 겁니다. 로렘 입숨(Lorem Ipsum)은 문서나 웹 퍼블리싱, 프론트개발을 할 때 더미 글이 필요할 경우 자주 사용합니다. 글은 그렇다 쳐도, 만약 더미 이미지가 필요할 경우는 어떻게 할까요? 주로 저작권 없는 사진을 다운 받을 수 있는 사이트에서 다운 받아서 사용하곤 합니다. 보통 'unsplash'나 'pixabay'를 사용하곤 합니다. 그런데 이렇게 다운 받아서 사용하는 것은 귀찮지 않나요? 그리고 다운받은 후 사진 크기를 조정하는 작업이 필요하면 정말 귀찮아집니다. 로렘 픽숨 (Lorem Picsum) https://picsum.photos/ Lorem Picsum Lorem Ipsum... b..