개발
[JavaScript] radio버튼 이벤트리스너 예제(eventLitner)
[JavaScript] radio버튼 이벤트리스너 예제(eventLitner)
2023.02.08jQuery만 사용하다가 순수 자바스크립트를 사용해보려니 익숙하지가 않네요. 스스로 기억하기 위해 기록해 봅니다. none flex inline-flex inline-flexbox // radio.js window.onload = function(){ const radios = document.querySelectorAll("input[name='like']"); const txt = document.querySelector("#txt"); radios.forEach((radio) => { radio.addEventListener("change", (e) => { const current = e.currentTarget; if(current.checked){ txt.textContent = `좋아하는 음..
MariaDB 다중 소스 복제(Multi-Source Replication) 구축 및 명령어
MariaDB 다중 소스 복제(Multi-Source Replication) 구축 및 명령어
2022.11.29이번 포스팅에서 구현해볼 관계도는 다중 소스 복제(multi-source replication)입니다. 제가 다중소스복제가 필요한 상황은 아래와 같습니다. 마스터, 슬레이브1, 슬레이브2, 슬레이브n 은 DB부하 분산을 위해 사용됩니다. 슬레이브1에는 마스터에 있는 테이블 중 분석에 필요한 테이블이 존재합니다. 분석에 필요한 데이터는 용량이 크며, 다른 서비스에서는 필요 없습니다. 특정한 부가 서비스에만 분석에 필요한 데이터가 필요합니다. 분석 프로그램 사용 시 마스터에 있는 정보도 필요한 상황입니다. 좀 모호 할 수도 있는 말이지만, 저는 마스터의 데이터와, 분석에서만 사용되는 데이터를 합쳐 놓은 DB가 필요한 상황입니다. 이때 적절한 리플리케이션 관계도가 다중 소스 복제라고 판단하였습니다. 다중 소스..
Mariadb 리플리케이션(Replication) 은 어떻게 동작하는 걸까?
Mariadb 리플리케이션(Replication) 은 어떻게 동작하는 걸까?
2022.11.252022.11.22 - [개발/MariaDB] - MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux) 지난 포스팅에서 아래와 같은 부분을 살펴봤습니다. 리플리케이션이 필요한 이유 리플리케이션 구축 방법 리플리케이션 동작 원리 리플리케이션 동작원리에 대해 설명이 좀 부탁하다 생각 들어 내용을 좀 더 보강해보려 합니다. [그림 1] 은 리플리케이션 동작의 흐름을 도표로 표현한 것입니다. 예시로 마스터의 데이터베이스에 row 한 개를 inset 했다고 가정하고 흐름을 이야기해볼까 합니다. Binary Log 바이너리 로그 또는 빈로그(bin Log)라고 불립니다. 마스터의 데이터베이스에 데이터 또는 스키마가 변경되는 이벤트를 저장하는 공간입니다. 데이터베이스에 row 한 개..
MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux)
MariaDB 리플리케이션(Replication) 이해 및 구축(Rocky Linux)
2022.11.22이번 시간에는 리플레이케이션 개념에 대해 알아보고, 구축 방법에 대해 기술하고자 합니다. 리플리케이션의 목적 DB 서버가 한대 있다고 가정해 봅시다. 사이트의 이용자가 많아져서 DB의 트랜잭션이 많아졌고, 결국 DB의 부하로 인하여 사이트가 느려지고 있습니다. 이럴 때 어떻게 해야 할까요? 이때 사용되는 기법 중 하나가 DB의 리플리케이션을 구축하는 것입니다. 서버를 다수개를 이용하여 각 서버에 DB를 설치합니다. Master DB에 데이터를 insert, update, delete 등을 수행하면 Slave DB들에 자동으로 동일한 명령어를 실행시켜 데이터를 동일하게 만듭니다. (Master DB에만 insert 등을 실행해야 합니다.) 웹서버에서는 Master DB에만 inset, update, del..
[Javascript] 구조 분해 할당 (Destructuring Assignment)
[Javascript] 구조 분해 할당 (Destructuring Assignment)
2022.11.21리액트를 학습할 때 생소한 구문으로 난항을 겪은 적이 있습니다. 해당 구문이 구조분해할당 이라는 이름조차도 어려워 보이는 녀석이었습니다. 간략하게 구조분해할당에 대해 기술하고자 합니다. 배열에서의 구조분해할당(Destructuring Assignment) let arr = [10, 20, 30, 40, 50] let a, b, c; a = arr[0]; b = arr[1]; c = arr[3] console.log(a);// 10 console.log(b);// 20 console.log(c);// 40 [10, 20, 30, 40, 50] 배열이 있습니다. 첫번째값을 a 변수에 할당하고 두 번째 값을 b 변수에 할당하여 세 번째는 건너뛰고, 네 번째 값을 c변수에 할당하여 a, b,c 를 출력하였습니다..
컴포저(Composer)란? - 윈도우 버전 설치하기
컴포저(Composer)란? - 윈도우 버전 설치하기
2022.11.05컴포저(composer)란? 설치하기 앞서 컴포저는 무엇인지 간단하게 알아보겠습니다. 컴포저란 PHP 의존성 관리 도구입니다. 말이 좀 어려운데 예를 들어보겠습니다. 프로젝트를 진행하는데, 외부 라이브러리 A가 필요한 상황입니다. 예전에는, A 라이브러리를 다운로드 받아서 압축을 풀고, 나의 프로젝트에 복사해 놓죠. 그리고 A 라이브러리를 사용합니다. 시간이 지나 A라는 라이브러리가 업데이트가 되었다는 사실을 알게 되었고, 난 또 다시 다운로드하고 -> 압출 풀고 -> 복사하고 등의 과정을 진행하죠. 여기에서의 문제는 A라는 라이브러리를 설치하기 위해 나의 환경에 맞는 버전을 찾아야 하는 수고를 해야 합니다. 열심히 찾았더니, A를 설치기 하기 위해 B, C, D 라이브러리가 필요하다고 합니다. 열심히 ..
xampp 설치하기 (etc. php 다른 버전 2개 운영하려면.)
xampp 설치하기 (etc. php 다른 버전 2개 운영하려면.)
2022.11.05XAMPP 란? PHP를 개발하기 위해서는 기본적으로 설치해야 할 프로그램들이 있습니다. php 웹서버 (아파치 or nginx) 데이터베이스 (mariadb, mysql 등) 데이터베이스 툴(phpMyAdmin 등) 이런 프로그램을 하나하나 따로 설치하고 연동시키고 하는 것은 복잡하고 귀찮은 일이입니다. xampp는 PHP 개발환경에 필요한 툴들을 묶어서 한번에 설치하고 연동시켜 주는 프로그램입니다. 정식 사이트를 보면 7.4.30 버전을 다운로드 받으면 Apache 2.4.54 가 포함되어있고, DB, PHP, 등 해당 버전 포함되어있다라고 알려주고 있습니다. XAMPP 다운로드 https://www.apachefriends.org/download.html 위의 사이트에서 자신에 맞는 것을 다운로드하..
PHP 버전별 히스토리 (etc. 업그레이드 계획)
PHP 버전별 히스토리 (etc. 업그레이드 계획)
2022.11.03PHP 5.6.0 2014년 8월 28일 발표 PHP 7.0 2015년 12월 1일 공개 파서 재작성으로 성능 향상 - PHP 5.6 보다 두배 이상 빠른 속도 변수 최적화로 메모리 사용률이 상당히 감소 PHP 5.6 대비(1/5)로 감소 추상 구문 트리(Abstract Syntax Tree) 일관된 64비트 지원(Consistent 64-bit support) 향상된 예외 상속(Improved Exception hierarchy) 많은 치명적 에러들이 예외로 전환됨 보안 난수 발생기(Secure random number generator) 오래됐거나 지원하지 않는 SAPI와 확장 지원 중단 Null 병법 연산자(The null coalescing operator (??)) 함수에 리턴 타입 정의, 매개..
[Javascript] null과 undefined 차이
[Javascript] null과 undefined 차이
2022.11.02현재 운영 중인 사이트에서 아래와 같은 문법을 보게 되었습니다. if(name != null && name != undefined){ // 구문 } 'name이라는 변수에 값이 없으면 구문을 실행해라'라는 말은 알겠는데, 굳이 null과 undefined 둘다 조건을 걸 필요가 있을까요? 우선 null과 undefined는 무엇을 의할까요? null과 undefined의 차이 let test_null = null; let test_undefined; console.log(typeof test_null); // object console.log(test_null); // null console.log(typeof test_undefined); // undefined console.log(test_undef..
XMPP mariadb 데이터 초기화 하는 방법
XMPP mariadb 데이터 초기화 하는 방법
2022.10.28xmpp 7.4.30 버전을 설치하였습니다. 구성 내용은 아래와 같습니다. PHP 7.4 MariaDB 10.4 root 패스워드 설정하다가 무엇을 잘못 만졌는지 mysql servie도 살아나지도 않는 상황이었습니다. 혹시나 해서 C:\xampp\mysql\data 폴더도 삭제하고 서비스 시작을 해도 살아나지 않네요. 무심코 backup 폴더를 보게 되었고, 해당 폴더를 복사하니 데이터 초기화되면서 서비스 살아났습니다. (개이득) 결론 C:\xampp\mysql\data 내용 모두 삭제 C:\xampp\mysql\backup 복사하여 카피 서비스 시작 당연히 기존 데이터는 다 날라가는거죠. (저야 처음 설치하자마자 문제 됐던 거라서 상관없었고요) 필요하신 분은 참고하세요~
MySQL innoDB는 어떻게 생겼나요? [InnoDB Architecture]
MySQL innoDB는 어떻게 생겼나요? [InnoDB Architecture]
2022.10.26위의 이미지는 모든 구조를 다 기술한 것은 아니며, 중요한 부분을 발췌하여 표현하였습니다. innoDB는 크게 메모리 영역, CPU연산영역, 디스크 스토리지 영역으로 구분할 수 있습니다. $ cd /var/lib/mysql/ $ ls -al -rw-rw---- 1 mysql mysql 1202616 10월 30 13:36 ib_buffer_pool -rw-rw---- 1 mysql mysql 50331648 11월 5 16:58 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 11월 5 16:58 ib_logfile1 -rw-rw---- 1 mysql mysql 348127232 11월 5 16:58 ibdata1 -rw-rw---- 1 mysql mysql 125829..
[MySQL] MySQL 리플리케이션 UUID 관련 에러
[MySQL] MySQL 리플리케이션 UUID 관련 에러
2022.10.25# 작업환경 OS : CentOS 7 DB : MySQL 5.7 상황 : A 서버에 MySQL 데이터 덤프 받고, B서버로 데이터 그래도 복사 (/var/lib/mysql 전체) A, B서버 리플리케이션 구성하고 B서버 MySQL Start 시 리플리케이션 에러 에러 메시지 : mysql> SHOW SLAVE STATUS \G; Last_IO_Error: Fatal error: The SLAVE I/O thread stops because MASTER AND SLAVE have equal MySQL SERVER UUIDs; these UUIDs must be different FOR REPLICATION TO work. # 처리내용 결론은 B서버(slave 서버) 에서 auto.cnf 삭제 후 MySQL..