웹사이트에 눈 내리게 하기
·
개발 아카이브/라이브러리
정말로 간단하고 예쁘게 자신이 만든 웹에 크리스마스를 맞이하여 눈을 내리게 해봅시다. https://embed.im/snow/ 위의 링크에 들어가면 확인할 수 있습니다. 방법은 정말 간단합니다. 위의 스크린샷에서 보시다시피 아래와 script를 추가하면 됩니다. See the Pen Snow (Pure CSS) by alphardex (@alphardex) on CodePen.
손으로 그린듯한 다이어그램 툴 - Excalidraw
·
정보/유용한 사이트
개요 Excalidraw는 손으로 그린듯한 러프한 다이어그램을 그리는 툴입니다. 이번에 추천하는 프로그램은 정말 정말 추천하는 프로그램 중 하나입니다. 많은 사람들이 PPT로 순서도를 그리죠. 하지만 PPT는 순서도를 그리는데 최적화되지 않기 때문에, 사용성에 불편함이 많이 있습니다. Excalidraw는 이런 순서도를 쉽게 그릴 수 있게 최적화되어 있습니다. 그리고 프로그램이 가볍고 브라우저 환경에서 사용합니다. 가장 좋은 기능은, 공유 세션을 만들어서 다른 사람을 초대해 함께 협업할 수 있는 것이 큰 장점입니다. https://excalidraw.com/ Excalidraw — Collaborative whiteboarding made easy Excalidraw is a virtual collabo..
코드를 예쁘게 이미지로 만들어주는 툴 - carbon.now.sh
·
정보/유용한 사이트
제가 여러분께 보여드릴 코드가 있습니다. 아래에 그 코드를 공유하니 한번 봐주시기 바랍니다. const pluckDeep = key => obj => key.split('.').reduce((accum, key) => accum[key], obj) const compose = (...fns) => res => fns.reduce((accum, next) => next(accum), res) const unfold = (f, seed) => { const go = (f, seed, acc) => { const res = f(seed) return res ? go(f, res[1], acc.concat([res[0]])) : acc } return go(f, seed, []) } 블로그에 이렇게 코드를 공유..
Postman 대신 사용하는 VS Code API Test Extention - Thunder Client
·
개발 아카이브/개발 관련 지식
https://www.thunderclient.com/ Thunder Client - Rest API Client Extension for VS Code Thunder Client is a hand-crafted lightweight Rest API Client extension for Visual Studio Code www.thunderclient.com 비주얼 스튜디오 코드를 사용한다면 Postman을 또 설치할 필요 없이 Rest API를 테스트할 수 있습니다. 사용 화면 Thunder Client의 전반적인 모습입니다. 만든 테스트를 저장하고 불러올 수 있고, 테스트에 필요한 여러 가지 필수 기능들이 있습니다. UI와 디자인이 심플하고 VS Code에 맞춤이라 어려워 보이지 않고 거부감이 없습니..
배워보자 정규표현식! (Regular Expression)
·
개발 아카이브/개발 관련 지식
정규표현식이란? 특정한 규칙을 가진 문자열의 집합을 표현할 때 사용하는 형식 언어입니다. 주로 문자열의 특정 부분을 찾거나, 다른 문자열로 대체하거나, 특정 문자열을 추출할 때 사용합니다. 정규표현식은 다른 말로 정규식, Regexp, Regex라고 불리기도 합니다. /^[\w.%+\-]+@[\w.\-]+\.[A-Za-z]{2,3}$/ig 이것이 정규식의 모습입니다. 이메일 패턴을 간단하게 표현한 정규식인데, 처음보면 정말 무슨 소리인지 파악하기 힘들 겁니다. 하지만 개발자는 많은 자연어 속에서 특정 문자를 추출하고 가공하고 수정할 수 있어야 합니다. 불규칙한 자연어 속에서 특정 패턴을 찾아 처리하려면, 일반적으로 if문을 사용합니다. 하지만 if문을 그렇게 사용하다간 if 속에 if, 그 속에 if, ..
JSON 구조를 그래프로 보자! JSON Crack
·
정보/유용한 사이트
구글을 돌아다니다 재미있고 JSON 사용에 좋아보이는 사이트 하나 발견해서 포스팅하게 되었습니다. JSON을 입력하면 그 구조를 트리 그래프로 한눈에 확인이 가능한 유용한 사이트입니다. https://jsoncrack.com/ JSON Crack - Crack your data into pieces Simple visualization tool for your JSON data. No forced structure, paste your JSON and view it instantly. jsoncrack.com 이렇게 json을 입력하면 그 구조를 트리로 확인할 수 있는 사이트입니다. 개발자는 json을 사용하기에 편하지만, 기확자나 IT 관련 다른 직업은 json으로 데이터를 보는게 익숙하지 않을 수 있..
브라우저 이미지 회전 현상 해결하기 (IE) - EXIF
·
개발 아카이브/HTML, CSS
이 문제는 회사에서 이미지 회전 현상이 일어난다는 QA를 받아서 수정하던 중 알게 되었습니다. 가끔 브라우저에서 사진을 업로드하거나 조회할 때 이미지가 본의 아니게 돌아가 있는 상태를 보실 수 있습니다. 요즘은 그런 현상이 거의 없지만, 2020년도에는 그런 현상이 있었습니다. 2022년 6월 15일부로 돌아가신 인터넷 익스플로러에도 아직까지 이러한 현상이 있습니다. 이 현상은 브라우저가 파일에 저장되어 있는 메타데이터를 읽고 대응해야 하는데, 그러지 못해서 생기는 일입니다. 일단 이미지 메타데이터는 어떤 것이 있는지 살펴보겠습니다. 메타데이터를 저장하게 해주는, 이미지 파일 포맷 : EXIF 디지털카메라, 스마트폰 카메라로 이미지를 찍으면 EXIF라는 이미지 파일 포맷입니다. EXIF는 JPEG, TI..
[친절한 SQL 튜닝 스터디] SQL 옵티마이저
·
개발 아카이브/DATABASE
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 튜닝
·
개발 아카이브/DATABASE
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 튜닝 스터디] 소트 튜닝
·
개발 아카이브/DATABASE
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 튜닝 스터디] 조인 튜닝
·
개발 아카이브/DATABASE
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 튜닝 스터디] 인덱스 튜닝
·
개발 아카이브/DATABASE
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엔진 히든클래스
·
개발 아카이브/Javascript
이 글은 모던 자바스크립트 Deep Dive를 보고 공부한 내용입니다. 자바스크립트에서 객체는 복합적인 자료구조입니다. 객체 내부에 있는 property의 수는 개수가 정해지지 않아, 객체의 크기도 정해지지 않고 동적으로 property가 추가, 삭제가 될 수 있습니다. 그래서 객체는 리터럴처럼 메모리 공간에 크기를 사전에 정의할 수 없습니다. 객체의 구현 방식은 브라우저 제조사마다 다를 수 있습니다. 그리고 객체를 생성하고 프로퍼티에 접근하는 것도 리터럴을 이용하는 것보다 비용이 많이 들기 때문에, 괜히 깔끔하게 코딩하겠다고 적은 데이터를 객체를 이용하여 선언하고 사용하면 오히려 쓸데없이 비용을 많이 쓸 수 있습니다. (엄청 크게 차이나진 않지만..) 자바스크립트의 객체 특징 자바스크립트에서 객체는 프..
자바스크립트 맵 객체 (Javascript Map Object)
·
개발 아카이브/Javascript
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..
[친절한 SQL 튜닝 스터디] 인덱스 기본
·
개발 아카이브/DATABASE
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와 인덱스 루트, 브랜치 블록, 리프 블록. 그리고 인덱스 수직적 탐색, 인덱스 수평적 탐색, 결합 인덱스 등 3일 전 velog.io 인덱스 구조 및 탐색 인덱스 튜닝 데이터베이스 테이블에서 데이터를 찾는 방법은 크게 2가지이다. 테이블 전체 스캔 인덱스를 이용한 스캔 인덱스 튜닝의 2가지 핵심 요소 인덱스는 큰 테이블에서 소량의 데이터를 검색할 때 사용함. 온라인 트랜잭션 처리 시스..
[친절한 SQL 튜닝 스터디] SQL 처리 과정과 I/O
·
개발 아카이브/DATABASE
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 파싱과 최적화 SQL 최적화란 무엇인가 SQL 이란? SQL은 Structured Query Language 라고 구조적 질의 언어. 구조적이고 집합적이고 선언적인 질의 언어 쿼리를 실행하면서 원하는 결과를 만들때, 절차를 만들고 그 절차대로 결과를 만든다. 여기서 특정한 업무를 수행하기 위한 절차를 '프로시저'라 한다. 쿼리를 실행할 때, 그 프로시저를 만들어내는 DBMS 내부 엔진이 'SQL 옵티마이저' 이다. SQL이라는 질의 언어를 옵티마이저에게 던져주면 그 옵티마이저가 프로그래밍을 대신 ..
[DB] ORDER BY를 했을 때, 정렬 결과가 달라지는 현상
·
개발 아카이브/DATABASE
사용하고 있는 DB는 postgreSQL이지만, 다른 DB에서도 다 똑같이 적용된다고 생각합니다. 문제 ORDER BY와 LIMIT를 함께 사용했을 때, LIMIT의 수가 바뀌면 ORDER BY 정렬 결과도 함께 달라지는 현상이 있었습니다. 예를 들어, LIMIT 30과 LIMIT 31의 ORDER BY 결과가 달라지는 것입니다. 실행계획의 차이도 없고 문제의 원인을 알 수 없어서, 구글에서 검색하다가 레딧에서 같은 현상을 겪는 사람을 발견했습니다. 그래서 레딧의 질문을 기준으로 이 현상에 대해 이야기해 보겠습니다. 레딧에서 발견한 동일한 문제 https://www.reddit.com/r/PostgreSQL/comments/ni2l9u/why_is_a_query_with_limit_returning_re..
AWS Lightsail - 라이트세일을 소개합니다.
·
개발 아카이브/AWS, Cloud, Server
이번에 운쿠 사이트 개발하면서 AWS Lightsail이라는 사이트를 알게 되었습니다. 그동안 EC2를 사용하기 부담스러웠던 저는 가볍고 가격이 싸면서 쉽게 만들 수 있는 VPS가 필요했습니다. https://aws.amazon.com/ko/lightsail/ 가상 프라이빗 서버 및 웹 호스팅–Amazon Lightsail—Amazon Web Services WordPress, Magento, Prestashop, Joomla와 같은 사전 구성된 애플리케이션을 통해 단 몇 번의 클릭으로 블로그, 전자 상거래 또는 개인 웹 사이트를 구축합니다. aws.amazon.com Lightsail은 AWS에서 만든 가상 프라이빗 서버 (VPS)입니다. Lightsail은 복잡한 EC2에 비해 간편하고 싸게 인스턴스..
운쿠 회고 - Vue, Nodejs로 만들어본 작은 쿠팡 파트너스 사이트
·
이야기/개발일지
해당 사이트는 서비스를 종료하여, 사이트에 접속할 수 없습니다. 1달간 작은 쿠팡 파트너스 사이트인 '운쿠'를 만들고 간단한 소개와 회고를 적어보려고 합니다. 회고 적는 것은 사실상 처음이라서 부족한 글이지만, 한번 적어보았습니다. 운쿠! 앞으로 제 역할을 할지 의문인 사이트지만, Vue와 Nodejs를 공부하는데 의미를 둔 사이트입니다. 들어가면 쿠팡 파트너스 링크로 가득 찬 게시글밖에 없지만, 그 게시글도 정말 내용이 성의가 없습니다. ㅎㅎ http://wooncou.com/ 운쿠 :: 추천 & 가이드 & 팁 컬렉션 운쿠의 추천, 팁, 가이드 컬렉션 wooncou.com 주제 사이드 프로젝트로 그동안 배우고 싶었던 것을 이용하여 수익을 얻을 수 있는 작은 무언가를 만들어보고 싶었습니다. 첫 번째로 배..
[자바스크립트] console.log를 다양하게 쓰자. console 객체
·
개발 아카이브/Javascript
console.log()는 자바스크립트로 개발하면서 아주 다양하게 사용됩니다. 개발자나 사용자에게 여러 정보를 알리는 수단이 되거나 디버깅에 사용되는 용도가 되곤 합니다. 그런데 혹시 console.log()만 사용하고 계신가요? console 객체는 log 함수만 아니라 다양한 함수를 가지고 있습니다. 많은 사람들이 알고 있지만, 모르는 사람은 모르는 console 객체의 함수들을 살펴보겠습니다. ※ 참고로 웹 콘솔 기반의 포스팅입니다. nodejs나 다른 경우는 제외했습니다. 1. console.log(), console.info(), console.warn(), console.error() 처음부터 간단하고 쉬운 것부터 다루겠습니다. 익숙한 console.log()는 매개변수의 문자열을 콘솔에 출력..