dev-blackcat의 등록된 링크

키자드에 등록된 총 721개의 포스트를 확인하실 수 있습니다.

Naver Blog

[MYSQL] NULL, IFNULL() (NULL 값을 조건문으로)

IFNULL(), ISULL(), COLLESCE() 및 NVL() 함수 테이블 ID Name Price Stock Order 1 Jarlsberg 10.45 16 15 2 Mascarpone 32.56 23 3 Gorgonzola 15.67 9 20 UnitsOnOrder 열은 선택 사항이며 NULL 값을 포함할 수 있다고 가정합니다. SELECT Name, Price * (Stock + Order) FROM Products; => 위의 예제에서 "Order" 값이 NULL이면 결과는 NULL이 됩니다. 해결 방법 MySQL IFNULL() 함수를 사용하면 식이 NULL인 경우 대체 값을 반환할 수 있습니다. SELECT Name, Price * (Stock + IFNULL(Order, 0)) FROM Products; 또는 다음과 같은 COLLESCE() 기능을 사용할 수 있습니다. SELECT Name, Price * (Stock + COALESCE(Order, 0)) FROM

Naver Blog

[MYSQL] Comments (주석)

Comments(주석) 주석은 SQL 문의 섹션을 설명하거나 SQL 문의 실행을 방지하는 데 사용됩니다. 싱글 라인 // 한 줄의 설명은 --로 시작합니다. // -와 줄 끝 사이의 텍스트는 무시됩니다(실행되지 않음). // 다음 예에서는 설명으로 단일 줄 설명을 사용합니다. --Select all: SELECT * FROM Customers; // 다음 예에서는 단일 줄 설명을 사용하여 줄의 끝을 무시합니다. SELECT * FROM Customers -- WHERE City='Berlin'; // 다음 예에서는 단일 줄 설명을 사용하여 문을 무시합니다. --SELECT * FROM Customers; SELECT * FROM Products; ----- 멀티 라인 // /*로 시작하고 */로 끝나는 다중 행 주석입니다. // /*와 */ 사이의 모든 텍스트는 무시됩니다. // 다음 예에서는 다중 줄 설명을 사용합니다. /*Select all the columns of all th

Naver Blog

[MYSQL] CREATE DATABASE (DB 생성)

CREATE DATABASE CREATE DATABASE 문은 새 SQL 데이터베이스를 생성하는 데 사용됩니다. 팁 : 데이터베이스를 작성하기 전에 관리자 권한이 있는지 확인합니다. 데이터베이스가 작성되면 다음 SQL 명령으로 데이터베이스 목록에서 확인할 수 있습니다. CREATE DATABASE databasename; 예제 CREATE DATABASE testDB; 참고 링크 SQL CREATE DATABASE Statement SQL CREATE DATABASE Statement ❮ Previous Next ❯ The SQL CREATE DATABASE Statement The CREATE DATABASE statement is used to create a new SQL database. Syntax CREATE DATABASE databasename ; CREATE DATABASE Example The following SQL statement creates a databa

Naver Blog

[MYSQL] DROP DATABASE (DB 삭제)

DROP DATABASE Drop DATABASE 문은 기존 SQL 데이터베이스를 삭제하는 데 사용됩니다. DROP DATABASE databasename; ※ 데이터베이스를 삭제하기 전에 주의해야 합니다. 데이터베이스를 삭제하면 데이터베이스에 저장된 전체 정보가 손실됩니다! 예제 // 다음 SQL 문은 기존 데이터베이스 "testDB"를 삭제합니다. DROP DATABASE testDB; ※ 데이터베이스를 삭제하기 전에 관리자 권한이 있는지 확인합니다. 데이터베이스가 삭제되면 다음 SQL 명령으로 데이터베이스 목록에서 확인할 수 있습니다. 참고 링크 SQL DROP DATABASE Statement SQL DROP DATABASE Statement ❮ Previous Next ❯ The SQL DROP DATABASE Statement The DROP DATABASE statement is used to drop an existing SQL database. Syntax DROP

Naver Blog

[MYSQL] CREATE TABLE (테이블 생성)

CREATE TABLE CREATE TABLE 문은 데이터베이스에 새 테이블을 작성하는 데 사용됩니다. 열 매개변수는 표의 열 이름을 지정합니다. 데이터 형식 매개 변수는 열에 저장할 수 있는 데이터 유형(예: varchar, 정수, 날짜 등)을 지정합니다. 팁 : 사용 가능한 데이터 유형에 대한 개요를 보려면 전체 데이터 유형 참조로 이동합니다. CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... ); 예제 // 다음 예제에서는 다섯 개의 열이 포함된 "사용자" 테이블을 만듭니다. // PersonID, LastName, FirstName, Address 및 City는 다음과 같습니다. CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City

Naver Blog

[MYSQL] DROP TABLE (테이블 삭제)

DROP TABLE (테이블 삭제) Drop TABLE 문은 데이터베이스의 기존 테이블을 삭제하는 데 사용됩니다. DROP TABLE table_name; ※ 테이블을 삭제 하기전에 주의해야 합니다. 테이블을 삭제하면 테이블에 저장된 전체 정보가 손실됩니다! TRUNCATE TABLE CLIPATE TABLE 문은 테이블 내부의 데이터를 삭제하는 데 사용되지만 테이블 자체는 삭제하지 않습니다. TRUNCATE TABLE table_name; 예제 // 다음 SQL 문은 기존 테이블 "Shippers"를 삭제합니다. DROP TABLE Shippers;

Naver Blog

[MYSQL] ALTER TABLE (테이블 수정)

ALTER TABLE(테이블 수정) ALTER TABLE 문은 기존 테이블의 열을 추가, 삭제 또는 수정하는 데 사용됩니다. ALTER TABLE 문은 기존 테이블에 다양한 제약 조건을 추가 및 삭제하는 데도 사용됩니다. 컬럼 추가 ALTER TABLE table_name ADD column_name datatype; // 다음 SQL은 "사용자" 테이블에 "이메일" 열을 추가합니다. ALTER TABLE Customers ADD Email varchar(255); ----- 컬럼 삭제 // 테이블에서 열을 삭제하려면 다음 구문을 사용합니다 (일부 데이터베이스 시스템에서 열 삭제를 허용하지 않음) ALTER TABLE table_name DROP COLUMN column_name; // 다음 SQL은 "사용자" 테이블에서 "전자 메일" 열을 삭제합니다. ALTER TABLE Customers DROP COLUMN Email; ----- 데이터 타입 수정 // 표에서 열의 데이터 유형

Naver Blog

[MYSQL] Constraints (제약 조건)

Constraints (제약 조건) CREATE TABLE 문을 사용하여 테이블을 만들거나 ALTER TABLE 문을 사용하여 테이블을 만든 후 제약 조건을 지정할 수 있습니다. CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, column3 datatype constraint, .... ); SQL 제약 조건은 테이블의 데이터에 대한 규칙을 지정하는 데 사용됩니다. 제약 조건은 표에 들어갈 수 있는 데이터 유형을 제한하는 데 사용됩니다. 이렇게 하면 표에 있는 데이터의 정확성과 신뢰성이 보장됩니다. 제약 조건과 데이터 작업 사이에 위반 사항이 있으면 작업이 중단됩니다. 제약 조건은 열 수준 또는 표 수준이 될 수 있습니다. 열 수준 제약 조건은 열에 적용되고 표 수준 제약 조건은 전체 표에 적용됩니다. SQL에서 일반적으로 사용되는 제약 조건은 다음과 같습니다. NOT NULL 열에

Naver Blog

[MYSQL] NOT NULL (제약 조건)

NOT NULL 기본적으로 열에는 NULL 값이 포함될 수 있습니다. NOT NULL 제약 조건은 NULL 값을 허용하지 않도록 열을 적용합니다. 이 경우 필드는 항상 값을 포함하도록 적용되므로 새 레코드를 삽입하거나 이 필드에 값을 추가하지 않고 레코드를 업데이트할 수 없습니다. // 다음 SQL은 "사용자" 테이블이 생성될 때 "ID", "성" 및 "이름" 열이 NULL 값을 허용하지 않도록 합니다. CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Age int ); ----- // "사용자" 테이블이 이미 작성되었을 때 "만기" 열에 NOT NULL 제약 조건을 생성하려면 다음 SQL을 사용합니다. ALTER TABLE Persons MODIFY Age int NOT NULL; 참고 링크 SQL NOT NULL Constraint SQL N

Naver Blog

[MYSQL] UNIQUE (고유 키)

UNIQUE (고유 키) 고유 제약 조건을 사용하면 열의 모든 값이 달라집니다. 고유 키 및 기본 키 제약 조건은 모두 열 또는 열 집합에 대한 고유성을 보장합니다. 기본 키 제약 조건에는 자동으로 고유한 제약 조건이 있습니다. 그러나 테이블당 여러 가지 고유한 제약 조건을 가질 수 있지만 테이블당 하나의 기본 키 제약 조건만 가질 수 있습니다. // 다음 SQL은 "사용자" 테이블이 생성될 때 "ID" 열에 고유한 제약 조건을 생성합니다. CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, UNIQUE (ID) ); ----- // 테이블이 이미 생성되었을 때 "ID" 열에 고유한 제약 조건을 만들려면 다음 SQL을 사용합니다. ALTER TABLE Persons ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

Naver Blog

[MYSQL] PRIMARY KEY (기본 키)

PRIMARY KEY (기본 키) 기본 키 제약 조건은 테이블의 각 레코드를 고유하게 식별합니다. 기본 키에는 고유 값이 포함되어야 하며 NULL 값을 포함할 수 없습니다. 테이블에는 기본 키가 하나만 있을 수 있으며, 테이블에서 이 기본 키는 단일 또는 여러 개의 열(필드)로 구성될 수 있습니다. // 다음 SQL은 "사용자" 테이블이 생성될 때 "ID" 열에 기본 키를 생성합니다. CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) ); ----- // 기본 키 제약 조건의 이름을 지정하고 여러 열에 기본 키 제약 조건을 정의하려면 다음 SQL 구문을 사용합니다. CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varc

Naver Blog

[MYSQL] FOREIGN KEY (외부, 외래 키)

FOREIGN KEY (외부, 외래 키) 외부 키는 두 테이블을 서로 연결하는 데 사용되는 키입니다. 외부 키는 한 테이블의 필드(또는 필드 모음)로 다른 테이블의 기본 키를 나타냅니다. 외부 키가 들어 있는 테이블을 하위 테이블이라고 하며, 후보 키가 들어 있는 테이블을 참조 테이블 또는 상위 테이블이라고 합니다. 다음 두 표를 봅니다. Persons 테이블 PersonID(기본키) LastName FirstName Age 1 Hansen Ola 30 2 Svendson Tove 23 3 Pettersen Kari 20 Orders 테이블 OrderID(기본키) OrderNumber PersonID(외부 키) 1 77895 3 2 44678 3 3 22456 2 4 24562 1 Person 테이블의 PersonID는 기본 키입니다. Person 테이블의 Orders는 외부 키입니다. 외부 키 제약 조건은 테이블 간의 연결을 파괴하는 작업을 방지하는 데 사용됩니다. 또한 잘못된 데

Naver Blog

[CentOS7] 라라벨(Laravel) 설치하기 (수정)

라라벨 서버 요구사항 PHP >= 7.2.5 BCMath PHP Extension Ctype PHP Extension Fileinfo PHP extension JSON PHP Extension Mbstring PHP Extension OpenSSL PHP Extension PDO PHP Extension Tokenizer PHP Extension XML PHP Extension 확장 모듈 설치하기 # 의존성 패키지 설치 yum install -y git curl zip unzip # PHP 확장 기능(의존성) 필수 설치 yum install -y php-fpm php-cli php-redis php-brotli php-gd php-gmp php-imap php-bcmath php-interbase php-json php-mbstring php-mysqlnd php-odbc php-opcache php-memcached php-tidy php-pdo php-pdo-dblib php-p

Naver Blog

[Whale] 웨일 브라우저 GPU 활성화 (유튜브 화질 제한 설정 해제, 화질 올리기)(수정)

웨일 브라우저 GPU 활성화 # 웨일 브라우저에서는 유튜브를 접속하여 영상 화질 설정에 HD 이상 나오지 않습니다. (특정, GPU및 CPU(내장)에서 나타나는것 같습니다.) 그래서 Compositor Information에서 Tile Update Mode 를 강제로 활성화 시킬겁니다. # 웨일 브라우저 주소창에 입력 whale://flags/ # 아래 검색 후 "Enabled" 변경 Zero-copy rasterizer Disabled -> Enabled 설정 확인 # 설정이 완료되었으면, 기존의 켜있던 웨일 브라우저를 모두 닫은 후 바로가기를 만든 웨일 브라우저를 실행하여 재확인 # 웨일 브라우저 주소창에 입력 chrome://gpu # 하단 검색 후 "Zero-copy" 확인 Compositor Information Tile Update Mode : Zero-copy Zero-copy 설정 확인 참고 사항 # 라데온 그래픽카드는 부분적으로 지원이 잘 안됩니다. "RX570"

Naver Blog

[CentOS7] Laravel(VueJS) 설치하기

NPM 최신 설치하기 NPM을 최신으로 설치해야 오류가 발생되지 않습니다. // nodeJS와 NPM은 같이 설치됩니다. // 먼저 아래와 같이 구형 버젼을 설치해주세요. yum install -y nodejs ----- # nodeJS 최신설치 npm cache clean -f npm install -g n // 위 명령어 입력 후 그대로 아래 명령어 입력하시면 됩니다. // nodeJS 특정 버젼 설치 n 6.x.x / n 7.x.x 버젼 입력 n 6.11.0 // nodeJS 최신 안정화 버젼 설치 n stable // nodeJS 최신 버젼 설치 n latest // nodejs 버젼 확인 node -v ----- # NPM 최신 업데이트 npm install -g npm // npm 버젼 확인 npm -v ※ nodeJS 버젼이 변경되지 않는다면 재부팅 shutdown -r now OR reboot VueJS 설치하기 // 라라벨이 설치된 디렉토리로 이동 후 아래 명령 실행

Naver Blog

[CentOS7] 라라벨(Laravel) + 리엑트(ReactJS) 설치하기

NPM 최신 설치하기 NPM을 최신으로 설치해야 오류가 발생되지 않습니다. // nodeJS와 NPM은 같이 설치됩니다. // 먼저 아래와 같이 구형 버젼을 설치해주세요. yum install -y nodejs ----- # nodeJS 최신설치 npm cache clean -f npm install -g n // 위 명령어 입력 후 그대로 아래 명령어 입력하시면 됩니다. // nodeJS 특정 버젼 설치 n 6.x.x / n 7.x.x 버젼 입력 n 6.11.0 // nodeJS 최신 안정화 버젼 설치 n stable // nodeJS 최신 버젼 설치 n latest // nodejs 버젼 확인 node -v ----- # NPM 최신 업데이트 npm install -g npm // npm 버젼 확인 npm -v ※ nodeJS 버젼이 변경되지 않는다면 재부팅 shutdown -r now OR reboot React 설치하기 // 라라벨이 설치된 디렉토리로 이동 후 아래 명령 실행

Naver Blog

[CentOS7] 라라벨(Laravel) + 테일윈드(Tailwindcss) 적용하기

Tailwindcss 설치하기 // 라라벨 디렉토리 이동 후 설치 // node_module 폴더 안에 tailwindcss으로 설치됨 # tailwindcss 설치 npm install tailwindcss # Mix에서 Tailwind를 사용할 수 있게 패키지를 설치 npm install mix-tailwindcss --save-dev Tailwindcss 추가하기 // 부트스트랩과 겸용하기 사용하지는 않으니 부트스트랩은 지웁니다. # app.scss을 아래 내용으로 변경 /resources/sass/app.scss ----- // Fonts @import url('https://fonts.googleapis.com/css?family=Nunito'); // Variables @import 'variables'; // Bootstrap // @import '~bootstrap/scss/bootstrap'; // Tailwind @tailwind base; @tailwind com

Naver Blog

[CSS] GRID (그리드) 사용하기

GRID (그리드) 페이지의 레이아웃(뼈대, 구조)를 여러 주요 영역으로 나누는데 탁월합니다. 저의 경우 그리드를 통해 레이아웃을 하고 플렉스를 통해서 정렬을 합니다. 웬만한건 위 2개의 조합으로 되며, 시간단축도 빨라지고 적응되면 쉽습니다. ※ 그리드와 플렉스를 사용해보지 않았다면, 무조건 사용하길 권장합니다. GRID(그리드) 레이아웃 GRID (그리드) 컨테이너 속성 속성 설명 grid-template-rows 행의 높이(크기, 세로) 예제 grid-template-columns 열의 넓이(가로) 예제 grid-template-areas 영역(Area) 이름을 참조해 템플릿 생성 예제 grid-template "grid-template-columns", "grid-template-areas"의 단축 속성 예제 row-gap(grid-row-gap) 행과 행 사이의 간격(Line)을 정의 예제 column-gap(grid-column-gap) 열과 열 사이의 간격(Line)을 정

Naver Blog

[CSS] FLEX BOX (플렉스 박스) 사용하기

FLEX BOX (플렉스 박스) 수평, 수직(상하, 좌우) 구조 정렬을 쉽게 할 수 있습니다. 그리드로 레이아웃을 만든 후 플렉스 박스로 수평, 수직(상하, 좌우) 정렬을 하면 좋습니다. FLEX BOX (플렉스 박스) 컨테이너 속성 속성 설명 flex-direction Flex Items의 주 축(main-axis)을 설정 예제 flex-wrap Flex Items의 여러 줄 묶음(줄 바꿈) 설정 예제 flex-flow "flex-direction", "flex-wrap"의 단축 속성 예제 justify-content 주 축(main-axis)의 정렬 방법을 설정 align-content 교차 축(cross-axis)의 정렬 방법을 설정(2줄 이상) align-items 교차 축(cross-axis)에서 Items의 정렬 방법을 설정(1줄) FLEX BOX (플렉스 박스) 아이템 속성 속성 설명 flex-grow Flex Item의 증가 너비 비율을 설정 예제 flex-shrink

Naver Blog

[CSS] Media Query (미디어 쿼리) 사용하기

Media Query (미디어 쿼리) 미디어 쿼리는 단말기의 유형(출력물 화면)과, 어떤 특성이나 수치(화면 해상도, 뷰포트 너비 등)에 따라 웹사이트나 앱의 스타일을 수정할 때 유용합니다. 속성 설명 all 기본값으로, 모든 미디어 타입의 장치 print 인쇄 미리 보기 기능 또는 페이지 출력 screen 컴퓨터나 테블릿, 스마트폰 등의 스크린 speech 페이지를 소리 내어 읽어주는 스크린 리더기(screen reader) 연산자 설명 and AND 연산 not NOT 연산 , OR 연산 속성 설명 width 대상 디스플레이 영역의 너비를 명시함. “min-” 접두사로 최솟값, “max-” 접두사로 최대값을 명시할 수 있음. ex) media=“screen and (max-width:900px)” height 대상 디스플레이 영역의 높이를 명시함. “min-” 접두사로 최솟값, “max-” 접두사로 최대값을 명시할 수 있음. ex) media=“screen and (min-hei

Naver Blog

[HTML] ViewPort (뷰포트) 사용하기

ViewPort (뷰포트) 모바일 브라우저들은 뷰포트(viewport)로 알려진 가상 "window"상에 페이지를 렌더링하는데, 보통의 경우 스크린 보다 폭이 넓어 모든 페이지 레이아웃을 억지로 작은 화면에 축소할 필요가 없다. (레이아웃을 축소할 경우 모바일 사이트로 만들지 않은 사이트들은 대개 엉망이 되게 마련이다.) 사용자들은 화면을 움직이거나 줌 기능을 이용해 페이지의 보이지 않는 부분들을 볼 수 있다. ※ 모바일 safari 에서도 같은 속성들이 지원되며, Fennec을 고쳐서 여러가지 화면크기와 다른 해상도에서도 모바일 사이트들이 문제없이 나타나도록 했다. 속성 설명 기본값 width 넓이(가로) ㄴdevice-width 기기의 가로 넓이 픽셀 값 (웹페이지의 가로(width) 값은 기기가 사용하는 가로 넓이 값(device-width) 만큼 적용하여 사용하라는 의미) height 높이(세로) ㄴdevice-height 기기의 세로 높이 픽셀 값 initial-scale

Naver Blog

[Vue.js] 시작하기 본문 요약

Vue.js 란? 사용자 인터페이스를 만들기 위한 프로그레시브 프레임워크 입니다. Vue.js 시작하기 1. HTML 스크립트 추가 방식 # 개발버전, 도움되는 콘솔 경고를 포함 # 개발할때에 사용한다. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> # 상용버전, 속도와 용량이 최적화됨 # 상용할때에 사용한다. <script src="https://cdn.jsdelivr.net/npm/vue"></script> 2. Node.js 기반 빌드에 vue-cli로 시작 node.js가 먼저 설치되어 있어야 하며, node.js에 속해 있는 npm을 통해서 vue-cli 패키지를 설치하여 사용 할 수 있습니다. vue-cli는 터미널 명령어를 통하여 손쉽게 Vue.js 환경을 vue-cli가 자동으로 최적화된 환경을 만들어 주는 도구라고 보면 됩니다. # 프로젝트 생성 vue create 프로젝트명 Vue-CLI

Naver Blog

[Vue.js] 인스턴스 본문 요약

Vue 인스턴스 만들기 전체 옵션 목록은 API reference에서 찾을 수 있습니다. var vm = new Vue({ // 옵션 }) 속성과 메소드 각 Vue 인스턴스는 data 객체에 있는 모든 속성을 프록시 처리 합니다. 데이터가 변경되면 화면은 다시 렌더링 되며, 유의할 점은 data에 있는 속성들은 인스턴스가 생성될 때 존재한 것들만 반응형이라는 것입니다. # 데이터 객체 var data = { a: 1 } # Vue인스턴스에 데이터 객체를 추가합니다. var vm = new Vue({ data: data }) # 같은 객체를 참조합니다! vm.a === data.a // => true # 속성 설정은 원본 데이터에도 영향을 미칩니다. vm.a = 2 data.a // => 2 # ... 당연하게도 data.a = 3 vm.a // => 3 # 아래와 같이 미리 정의되지 않은 값을 변경하게 되면 반응형으로 변경되지 않습니다. vm.b = 'hi' # b가 변경되어도 화면

Naver Blog

[Vue.js] 템플릿 문법 본문 요약

템플릿 문법 Vue.js는 렌더링 된 DOM을 기본 Vue 인스턴스의 데이터에 선언적으로 바인딩 할 수있는 HTML 기반 템플릿 구문을 사용합니다. 내부적으로 Vue는 템플릿을 가상 DOM 렌더링 함수로 컴파일 합니다. 반응형 시스템과 결합된 Vue는 앱 상태가 변경 될 때 최소한으로 DOM을 조작하고 다시 적용할 수 있는 최소한의 컴포넌트를 지능적으로 파악할 수 있습니다. 가상 DOM 개념에 익숙하고 JavaScript의 기본 기능을 선호하는 경우 템플릿 대신 렌더링 함수를 직접 작성할 수 있으며 선택사항으로 JSX를 지원합니다. 보간법 1. 문자열 데이터 바인딩의 가장 기본 형태는 “Mustache” 구문(이중 중괄호 {{ }})을 사용한 텍스트 보간 <span>메시지: {{ msg }}</span> # v-once 디렉티브를 사용하여 데이터 변경시 업데이트 되지 않는 일회성 보간을 수행할 수 있지만, 같은 노드의 바인딩에도 영향을 미친다는 점을 유의해야 합니다. <span v-

Naver Blog

[Vue.js] computed와 watch 본문 요약

computed 속성 템플릿 내에 표현식을 넣으면 편리합니다. 하지만 간단한 연산일 때만 이용하는 것이 좋습니다. 많은 연산을 템플릿 안에서 하면 코드가 비대해지고 유지보수가 어렵습니다. # 이 템플릿은 더 이상 간단하고 명료하지 않습니다. # 복잡한 로직이라면 반드시 computed 속성을 사용해야 하는 이유입니다. <div id="example"> {{ message.split('').reverse().join('') }} </div> 기본 예제 <div id="example"> <p>원본 메시지: "{{ message }}"</p> <p>역순으로 표시한 메시지: "{{ reversedMessage }}"</p> </div> # "message"의 값이 변경되면 "reverseMessage" 갱신 합니다. 즉, "computed"는 편하며 자동으로 값을 변경(종속성 및 반응형)하고 캐싱 해주는 "반응형 getter(게터)"라고 부릅니다. var vm = new Vue({ el:

Naver Blog

[Vue.js] 클래스와 스타일 바인딩 본문 요약

클래스와 스타일 바인딩 데이터 바인딩은 엘리먼트의 클래스 목록과 인라인 스타일을 조작하기 위해 일반적으로 사용됩니다. 이 두 속성은 v-bind를 사용하여 처리할 수 있습니다. 그러나 문자열 연결에 간섭하는 것은 짜증나는 일이며 오류가 발생하기 쉽습니다. 이러한 이유로, Vue는 class와 style에 v-bind를 사용할 때 특별히 향상된 기능을 제공합니다. 표현식은 문자열 이외에 객체 또는 배열을 이용할 수 있습니다. HTML 클래스 바인딩하기 1. 객체 구문 클래스를 동적으로 토글하기 위해 v-bind:class에 객체를 전달할 수 있습니다. # 클래스를 동적으로 토글하기 위해 v-bind:class에 객체를 전달할 수 있습니다. <div v-bind:class="{ active: isActive }"></div> # 객체에 필드가 더 있으면 여러 클래스를 토글 할 수 있습니다. 또한 v-bind:class 디렉티브는 일반 class 속성과 공존할 수 있습니다. 그래서 다음과

Naver Blog

[Vue.js] 조건부 렌더링 본문 요약

조건부 렌더링 1. v-if # Handlebars와 같은 문자열 템플릿에서는 다음과 같은 조건부 블록을 작성할 수 있습니다. {{#if ok}} <h1>Yes</h1> {{/if}} # Vue에서는 v-if 디렉티브를 사용하여 같은 결과를 얻을 수 있습니다. <h1 v-if="ok">Yes</h1> # v-else와 함께 else 블록을 추가하는 것도 가능합니다. <h1 v-if="ok">Yes</h1> <h1 v-else>No</h1> 2. <template>에 v-if을 갖는 조건부 그룹 만들기 # v-if는 디렉티브기 때문에 하나의 엘리먼트에 추가해야합니다. 하지만 하나 이상의 엘리먼트를 트랜지션하려면 어떻게 해야할까요? 이 경우 우리는 보이지 않는 래퍼 역할을 하는 <template> 엘리먼트에 v-if를 사용할 수 있습니다. 최종 렌더링 결과에는 <template> 엘리먼트가 포함되지 않습니다. <template v-if="ok"> <h1>Title</h1> <p>Para

Naver Blog

[MYSQL] 데이터베이스 이름에 &quot;-&quot; 하이픈 추가하기

데이터베이스 이름에 "-" 하이픈 추가 기본적으로는 하이픈 추가시 오류가 발생되는 부분은 맞습니다. 대표적으로 변수명도 하이픈이 안되는것이 맞구요. # 아래와 같은 데이터베이스를 생성하려고 하면 create database test-test; # 이와 같은 오류가 발생 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-test' at line 1 오류 1064(42000)입니다. SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 1행에서 '-test'에 가까운 구문을 사용할 수 있는지 확인하십시오. 해결방법 # 낮은 악센트 표(grave accent)로 감싼 후 생성 create database `test-test`; 참고 링

Naver Blog

[VueJS][nodeJS] CLI 구축하기(수정)

서버 패키지 업데이트 # 서버에 설치된 기본 패키지들은 최신버전으로 업데이트 yum -y update # EPEL 저장소 설치 yum install -y epel-release nodeJS 구버전(기본) 설치 # nodeJS 구버전(기본) 설치 yum install -y nodejs # nodeJS 버전 확인 node -v # npm 버전 확인 npm -v nodeJS 최신버전 업데이트 npm cache clean -f npm install -g n # nodejs 특정 버젼 설치 n 6.x.x / n 7.x.x 버젼 입력 n 6.11.0 # nodejs 최신 안정화 버젼 설치 n stable # nodejs 최신 버젼 설치 n latest # 버전 체크를 위한 재부팅(리부팅) shutdown -r now # 다시 버전 확인 node -v npm -v CLI 설치 및 프로젝트 생성 # "CLI"를 설치하기 위해서는 nodeJS 버젼은 8.9 이상이 필요하며, "CLI"는 뷰를 쉽게

Naver Blog

[VSCODE] 비주얼스튜디오코드(Visual Studio Code) SFTP 연동하기 (수정)

SFTP 설치하기 # 확장 탭을 클릭 후 "SFTP" 검색 한 후 아래의 이미지의 확장을 설치해주세요. 확장 프로그램 # 새로운 폴더 혹은 기존 프로젝트 폴더를 열어주신 후 "F1"을 눌러 "sftp" 검색 후 "sftp:config"을 선택해주세요. F1 # 아래와 같이 ".vscode" 폴더가 생성 되며 "sftp.json" 파일이 생성 됩니다. sftp.json # 초기 생성시 없는 속성이 있습니다. 아래와 비교하여 추가해주세요. # uploadOnSave : 저장시에 자동으로 업로드 (true/false) # igonre : 업/다운로드를 제외할 파일 및 폴더 보안상 ".vscode" 폴더 안의 파일 내용에는 서버 계정의 비밀번호까지 있기 때문에 대부분 설정하는 편 { "name": "프로젝트 이름", "host": "서버 IP 주소", "protocol": "sftp", "port": 22, "username": "서버 계정", "password": "서버 비밀번호", "r

Naver Blog

[VSCODE] 비주얼스튜디오코드(Visual Studio Code) 깃허브(Git, Github) 연동하기 (수정)

Git 설치하기 Git - Downloads Downloads Mac OS X Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. Latest source Release 2.26.2 Release Notes (2020-04-19) Download 2.26.2 for Windows GUI Clients Git comes with built-in GUI tools ( git-gui , gitk ), but there are several third-party tools... git-scm.com # 설치시 기본 상태에 두고 "Next" 혹은 "다음"을 눌러 설치하시면 됩니다. Git 기본 개념 개념 설명 작업공간 (워크(킹)스페이스) 로컬 환경에서 소스코드를 편집하는 일반적인 프로젝트 폴더를 일컬어 작업공간이라고 합니다. 저장소 (레포지토리) 작업공간을 "Git"이 제공하는

Naver Blog

[VueJS][nodeJS] TailWind(테일윈드) 적용하기

CSS TailWind 설치하기 # 해당 프로젝트 폴더 이동 후 설치 npm install --save tailwindcss postcss.config.js 파일 만들기 Webpack(및 Vue.js 구성 요소용 Webpack 로더인 Vue-loader)은 CSS용 Webpack 로더인 PostCSS를 사용하도록 구성할 수 있습니다. postcss.config.js 파일 내에서 구성을 찾고 추가한 패키지에서 CSS로 앱을 빌드할 수 있습니다. Vue CLI에서 생성한 데모 앱은 기본적으로 postcss.config.js 파일을 생성하지 않습니다. (Vue.JS 3.0 에서는 기본적으로 지원) postcss 관련 내용은 링크1, 링크2를 클릭하여 자세히 알아보기 # 해당 프로젝트 폴더 가장 상위에 "postcss.config.js" 생성 후 아래 내용 입력 후 저장 const autoprefixer = require('autoprefixer'); const tailwindcss = r

Naver Blog

[VueJS][nodeJS] 부트스트랩(BootStrap) 적용하기

CSS BootStrap 설치하기 # 해당 프로젝트 폴더 이동 후 설치 # 해당 투두앱에서는 "axios"라는 기능을 써야 하기 때문에 동일하게 프로젝트 폴더에서 설치 npm install --save bootstrap bootstrap-vue axios ※ 한번에 나열하여 설치가 가능합니다. main.JS 파일 수정 # 아래 내용을 추가 # ".vue" 파일에서 "bootstrap-vue"를 사용 할 수 있다. import BootstrapVue from 'bootstrap-vue' import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap-vue/dist/bootstrap-vue.css' Vue.use(BootstrapVue) # 아래 내용으로 덮어씌워도 됩니다. import Vue from "vue"; import App from "./App.vue"; import BootstrapVue from 'bootstrap-vue

Naver Blog

[VSCODE] 비주얼스튜디오코드(Visual Studio Code) FTP-SIMPLE 연동하기 (수정)

FTP-SIMPLE 설치하기 # 확장 탭을 클릭 후 "SFTP" 검색 한 후 아래의 이미지의 확장을 설치해주세요. FTP-SIMPLE # 새로운 폴더 혹은 기존 프로젝트 폴더를 열어주신 후 "F1"을 눌러 "ftp-simple 검색 후 "ftp-simple : Config - FTP connection setting"을 선택해주세요. VSCODE FTP-SIMPLE # 아래와 같이 설정 파일이 열리게 됩니다. FTP-SIMPLE ftp-simple-temp.json # 초기 생성시 없는 속성이 있습니다. 아래와 비교하여 추가해주세요. # autosave : 저장시에 자동으로 업로드 (true/false) # confirm : 저장시에 확인(컨펌)을 받을지 여부 (true/false) # igonre : 업/다운로드를 제외할 파일 및 폴더 보안상 ".vscode" 폴더 안의 파일 내용에는 서버 계정의 비밀번호까지 있기 때문에 대부분 설정하는 편 [ { "name": "My Server

Naver Blog

[VueJS][nodeJS] 익스프레스(Express) API 서버 구축하기

nodeJS(Express) 설치 하기 기존 익스프레스를 통해서 API 서버를 구축하며, MySQL도 연동 가능합니다. # "Vue.JS" 프로젝트를 만든 폴더로 이동 후 아래와 같이 입력 # 즉, "test"라는 뷰 프로젝트 생성 후 "test" 폴더 하위에 생성 cd test npm install -g express-generator express --view=pug express # 생성된 "express" 폴더로 이동 후 명령어 실행 cd express npm install nodeJS(Express) 포트 변경 # 위에서 만든 "express" 내에 "bin" 폴더안에 "www" 파일을 열어 "3000"번 포트를 "80" 포트로 변경합니다. # 이 작업은 따로 하지 않아도 되며, 3000번 포트 방화벽을 열어주시면 됩니다. var port = normalizePort(process.env.PORT || '3000'); => var port = normalizePort(pro

Naver Blog

[CentOS7] nodeJS(Express) + MySQL Workbench(워크벤치) 연동하기

MySQL(마리아디비) 설치하기 [CentOS7] MySQL(MariaDB) 최신버젼 설치 MariaDB 레포 설정MariaDB 설치MariaDB 계정 비번 변경Set root password 에서 엔터 후 사용할 ... blog.naver.com MySQL Workbench 설치하기 MySQL :: Download MySQL Workbench General Availability (GA) Releases Archives MySQL Workbench 8.0.20 Select Operating System: Recommended Download: Other Downloads: Windows (x86, 64-bit), MSI Installer 8.0.20 35.6M Download (mysql-workbench-community-8.0.20-winx64.msi) MD5: edd40cd63fa929127389f0440b930012 | Signature We suggest tha... de

Naver Blog

[CentOS7] nodeJS + MySQL + PHPMyAdmin 연동하기

APM(Apache + PHP + MySQL) 설치 1. Apache 설치하기 [CentOS7] Apache 아파치(httpd) 최신버젼 설치 Apache 아파치(httpd) 버젼 확인현재 2.4.6 버젼이 설치되어 있습니다.Apache 아파치(httpd) 최신 확인2.... blog.naver.com 2. PHP 설치하기 [CentOS7] PHP 최신버젼 및 특정버젼으로 업데이트 및 설치(제거) 방법 PHP(기존) 제거PHP(버전별) 설치 blog.naver.com 3. MySQL(마리아디비) 설치하기 [CentOS7] MySQL(MariaDB) 최신버젼 설치 MariaDB 레포 설정MariaDB 설치MariaDB 계정 비번 변경Set root password 에서 엔터 후 사용할 ... blog.naver.com 4. PHPMyAdmin 설치하기 [CentOS7] phpMyAdmin 최신버젼 설치 phpMyAdmin 최신버젼 설치phpMyAdmin.conf 파일 수정PHP와 버전

Naver Blog

[VueJS][nodeJS] 디렉토리 구조 및 설명

Vue.JS 디렉토리 구조 "vue.config.js" 파일은 따로 생성하였습니다. public favicon.ico index.html src assets logo.png components helloworld.vue App.vue main.js .gitignore babel.config.js package-lock.json package.json README.md vue.config.js "public" 디렉토리 구조 가장 맨 처음 로드 되는 기본 HTML "PUBLIC" 디렉토리 구조 # 기본적인 HTML과 동일하며, 하단 DIV 태그의 ID 값 "app"을 통해서 뷰가 호출되어 보여지게 됩니다. # 즉, "app"을 통해서 호출되는 관련된 내용을 없애거나 DIV 태그(ID 값)를 없애고 단순히 "HelloWorld"를 입력하면 문자열만 바로 보이게 되는 것 입니다. <!DOCTYPE html> <html lang="en"> <he

Naver Blog

[VueJS][nodeJS] 라우터(vue-rotuer) 사용하기

뷰 라우터란? 화면을 전환할때 사용되는 것을 의미합니다. 페이지(컴포넌트)를 미리 다운받아 놓은 상태에서 페이지 이동시에 화면이 새로고침 되지 않고 갱신되는 방식 입니다. 이는 싱글 페이지 어플리케이션(SPA-Single Page Application) 방식입니다. 더 쉽게 설명을 드리자면, 게시판의 "좋아요" 버튼이 있는데 이것을 클릭할때마다 페이지를 새로 불러오는게 아닌 비동기 방식으로 부분적으로 데이터를 변경하는 방식이라고 생각하시면 됩니다. 이것은 뷰 라우터에서는 페이지를 전환하는데 사용되기 때문에 화면 전환이 부드럽고 깔끔하며, 사용자에게 좋은 인식을 줄 수 있습니다. 뷰 라우터(vue-rotuer) 설치하기 # 해당 프로젝트 폴더에서 실행 npm install --save vue-router 뷰 라우터(vue-rotuer) 설명 태그 설명 <router-link to="URL 값"> 페이지 이동시 사용하는 태그 입니다. HTML에서는 A태그로 표시되며 클릭하면 "to" 속

Naver Blog

[VueJS][nodeJS] 데브툴즈(Vue.config.devtools) 및 크롬 확장 프로그램 사용하기

Vue DevTools(크롬 확장 프로그램) 설치하기 크롬 확장프로그램을 통해서 뷰 데브툴즈를 다운로드 받을 수 있습니다. 해당 툴을 통해서 크롬 콘솔(F12) 탭에서 Vue 항목을 확인 하실 수 있으며, 디버깅을 더욱 쉽게 도와줍니다. Vue.js devtools Chrome and Firefox DevTools extension for debugging Vue.js applications. chrome.google.com Vue DevTools 사용하도록 허용하기 기본적으로는 데브툴즈를 사용할 수 없도록 "false" 되어있습니다. 만약에 뷰로 만든 어떤 사이트든 해당 툴을 사용하게 되면 보안상 문제가 발생 될 수 있기 때문입니다. 개발시에만 사용하도록 합니다. # "main.js" 파일에 아래 내용을 추가합니다. # 기본값은 "false" 입니다. Vue.config.devtools = true; 참고 링크 Vue.js is detected on this page. Devtoo

Naver Blog

[VueJS][nodeJS] alias &quot;@&quot; 별칭을 이용한 경로 사용하기

alias "@" 별칭이 필요한 이유 아래와 같이 임포트에서 일일이 경로를 적어주는것이 매우 불편할 수 있기 때문에 "@" 별칭이 필요합니다. skyepodium 게시글 이미지 인용 ※ "vue-cli 2.x" 버전에서는 "webpack.config.js"(웹팩 설정 파일)에서 "@"를 사용하는 경로가 정의 되어 있었지만, 현재의 버젼에서는 따로 웹팩 설정파일은 없어지고 대신 "vue.config.js"에서 설정하고 있습니다. Vue.JS CLI 설치한 경우 CLI로 설치한 경우 별도로 설정 없이 바로 사용할 수 있습니다. 임포트 "@" 별칭 사용 개별적인 별칭이 필요한 경우 # "vue.config.js" 파일에 아래의 내용을 추가합니다. # 상단 "path" 선언과 하단의 "configureWebpack"을 추가하면 됩니다. # 아래 처럼 "@"가 아닌 "~"(물결 표시) 같은 별칭을 추가해서 사용할 수 있습니다. const path = require("path"); module

Naver Blog

[VueJS][nodeJS] MySQL + 간단한 로그인/회원가입 만들기

NodeJS(Express) API 서버 만들기 [CentOS7] nodeJS (Vue.JS) + Express API 서버 구축하기 nodeJS(Express) 설치 하기기존 익스프레스를 통해서 API 서버를 구축하며, MySQL도 연동 가능합... blog.naver.com NodeJS에서 제공하는 "bcrypt" 설치하기 "bcrpyt"는 npm에 등록되어있는 암호화 모듈입니다. 이 모듈을 이용하면 아주 쉽게 패스워드의 "hash" 값을 구하고 비교할 수 있습니다. # "express" 폴더로 이동 후 설치해주세요. # 설치하는 김에 필요한 "mysql"도 설치해줍니다. npm install --save mysql bcrypt MySQL 연동 및 라우터 설정하기 # 생성한 "express" 폴더 안에 "routes/users.js" 파일을 수정해주세요. # 하단의 쿼리를 연결하는 곳에 "아이디", "비밀번호", "테이블"을 입력해주세요. # XHR으로 "/login", "/re

Naver Blog

[VueJS][nodeJS] PostCSS(Pre-Preprocessor) 사용하기

프리 프로세서란? Pre-Preprocessor "PostCSS" 알아보기전에는 우리는 "프리 프로세서"라는것을 알아야 합니다. 한번쯤은 들어봤을 "Sass", "Less", "Stylus"는 "전처리기(자)"라고 하며, "PostCSS"는 "후처리기(자)"라고 하며, 이를 통틀어서 "프리 프로세서(Pre-Preprocessor)"라고 합니다. 더욱 자세한 내용은 번외로 다루도록 하겠습니다. PostCSS란? 자바스크립트(플러그인)로 CSS를 변환을 통해 처리하는 "후처리기(자)"라고 불리우며, 이름 처럼 CSS를 작성한 후에 처리하는 도구입니다. # 간단한 예시를 보겠습니다. # 대부분 CSS를 작성할 때에는 크로스 브라우징(IE, 크롬, 사파리 등등)을 염두해두고 대부분 아래 처럼 작성하실 겁니다. 크롬에서는 되지만 IE, 사파리에서는 지원이 되지 않아서 사용(적용)이 안될 수 있습니다. .flexbox { display: -webkit-box; display: -webkit-f

Naver Blog

[VueJS][nodeJS] 사스(Sass, Scss) 사용하기

프리 프로세서란? Pre-Preprocessor "Sass", "Less", "Stylus"는 "전처리기(자)"라고 하며, "PostCSS"는 "후처리기(자)"라고 하며, 이를 통틀어서 "프리 프로세서(Pre-Preprocessor)"라고 합니다. 우리는 여기서 더 복잡하게 생각할 필요 없이 "프리 프로세서(Pre-Preprocessor)"는 "전, 후처리기(자)"로 나뉘며, "Sass(Scss)", "Less", "stylus"는 "전처리기(자)"이며, "PostCSS"는 "후처리기(자)로 알고 계시면 될것 같습니다. Sass 설치하기 # 해당 뷰 프로젝트 폴더에서 설치해주세요. npm install --save sass-loader node-sass Sass 간단보기 # 해당 컴포넌트 파일 하단에 "<style>" 태그안에 내용을 입력해주세요. 다만, "lang" 값은 "scss"로 지정해주세요. # 여기서 "scoped"는 해당 컴포넌트에서만 스타일을 적용하겠다는 뜻 입니다.

Naver Blog

[CentOS7] Apache 퍼미션 (You don't have permission to access) 해결하기(수정)

퍼미션 문제로 접속 불가시 You don't have permission to access 1. 권한 수정하기 # "-R" 붙이면 하위 디렉토리까지 전부 변경 # "777" 다른 사용자도 변경을 허용 # 권한 수정의 경우 테스트로 "777"를 해본 후 원인이 맞다면 적당한 권한으로 수정하길 권장 chmod -R 777 /home/username OR chmod -R 777 /var/www/html 2. 소유자 변경하기 # "-R" 붙이면 하위 디렉토리까지 전부 변경 chown -R root:root /home/username OR chown -R root:root /var/www/html 3. httpd.conf vi /etc/httpd/conf/httpd.conf # 아래 부분을 찾은 후 <Directory /> AllowOverride none Require all denied </Directory> ----- # 아래와 같이 변경 <Directory /> AllowOverrid

Naver Blog

[PHP] 라라벨(Laravel) 버전 업/다운시 체크 및 문제해결(5.8 -> 6.X)

5.8 -> 6.X 업데이트시 발생된 문제 In cache.php line 91: Call to underfined function str_slug() 라라벨 6.X에서는 모든 "str_", "array_"는 "laravel/helpers" 컴포저 패키지로 이동되었고 프레임워크에서는 제거되었습니다. # "헬퍼"를 설치 한 후 업데이트가 가능합니다. composer require laravel/helpers In cache.php line 91: Call to underfined function str_slug() 6.X -> 7.X 업데이트시 발생된 문제 Symfony 5 PHP Fatal error: Declaration of App\Exceptions\handler::report(Excrption $exception) must be compatible with Illuminate\Foundation\Exceptions\Handler::report(Throwable $e) in .

Naver Blog

[CentOS7] 라라벨(Laravel) SELinux 퍼미션(Permission denied) 문제 해결하기

퍼미션 문제 발생 Permission denied The stream or file "/home/centos/BeverageManager/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied 위와 같은 오류로 권한, 퍼미션 등을 조정해도 안되는 경우가 있습니다. 그런 경우 SELinux를 체크해봐야 합니다. CentOS7 부터는 기본값이 False 로 바뀌어서 /var/www/html 같은 폴더에 컨텐츠가 있을 경우 소유자가 웹 서버(apache) 이고 파일 퍼미션에 write 가 설정되어 있고 httpd_sys_content_t context 가 설정되어도 쓰지를 못하게 되어있습니다. SELinux 설정하기 # SELinux를 사용하여 이 명령을 사용하여 파일 쓰기를 허용합니다. setenforce 0 # 라라벨 프로젝트 폴더로 이동 후 "storage" 폴더를 "httpd_sy

Naver Blog

[CentOS7] 라라벨(Laravel) &quot;@&quot; 별칭 사용하기

"@" 별칭 사용하기 webpack.mix.js 라라벨의 경우 "webpack.config.js" 설정하는 곳은 "webpack.mix.js"라고 보시면 됩니다. # "/webpack.mix.js" 디렉토리 최상단의 파일을 열어줍니다. # 아래와 같이 복붙 및 다른 부분만 변경해주세요. const mix = require("laravel-mix"); // 초기 디렉토리 경로를 담습니다. const path = require("path"); mix.react("resources/assets/js/app.js", "public/js") .sass("resources/assets/css/sass/app.scss", "public/css"); // "@"는 별칭으로 사용하며, "~" 와 같이 다르게 변경이 가능합니다. // "path.resolve("resources")"에서 "resources"는 최상위 디렉토리 다음 하위 디렉토리를 설정합니다. // "extensions"는 적용할 파일

Naver Blog

[TailWindCSS] 컨테이너 (Container) 요소의 너비와 수평 조정

컨테이너 Container 컨테이너는 요소의 너비를 현재 중단점에 고정하기 위한 구성 요소입니다. 클래스 명령어 특성 .container None width: 100%; sm (640px) max-width: 640px; md (768px) max-width: 768px; lg (1024px) max-width: 1024px; xl (1280px) max-width: 1280px; 사용방법 Usage ".container" 클래스는 요소가 현재 명령어의 "min-width"과 어울리는의 "max-width" 가져오거나 설정합니다. 만약 당신이 화면 크기의 고정된 세트 대신 완전 유체 보임창 수용을 시도하 설계하고 싶어요 이 기능이 유용합니다. 여러분은 다른 프레임워크에 사용했을 것 용기와 달리 "Tailwind"의 컨테이너가 자동으로 어떤 내장형 수평 패딩이 없는 자체가 초점을 맞추지 않습니다. # 컨테이너 초점을 맞추려면 ".mx-auto"를 사용합니다. <div class="co

Naver Blog

[CentOS7] 라라벨(Laravel) + PHP OCI8 모듈(패키지) 설치 및 연동하기

테스트 환경 # CentOS7 # PHP 7.4.6 최신버젼 # APACHE 2.4.43 최신버젼 # Larvel 7.X 최신버젼 PHP 의존성 패키지 설치하기 # 의존성 라이브러리 패키지 설치하기 yum install -y libaio gcc systemtap-sdt-devel # PHP 확장 기능(의존성) 필수 설치 yum install -y php-fpm php-cli php-redis php-brotli php-gd php-gmp php-imap php-bcmath php-interbase php-json php-mbstring php-mysqlnd php-odbc php-opcache php-memcached php-tidy php-pdo php-pdo-dblib php-pear php-pgsql php-process php-pecl-apcu php-pecl-geoip php-pecl-gmagick php-pecl-hrtime php-pecl-json php-pecl-mem

Naver Blog

[VueJS][nodeJS] 동적로드(LazyLoad) 및 webpackChunkName

동적로드(딩)란? LazyLoad 프로젝트 규모가 커질 수록 사용자 입장에서도 리소스 다운받는 양이 늘어나게 됩니다. 즉, 이것은 로딩이 지연되거나 화면이 버벅이는 현상으로 인해 사용자 입장에서는 좋은 경험으로 받아들여지지 않습니다. 그렇기 때문에 동적으로 로딩을 합니다. 대표적 사용은 이미지가 많은 페이지에서 스크롤을 내릴때 해당 스크롤 위치에 맞춰 미리 1 ~ 2개 정도만 미리 로딩해놓는겁니다. 그렇게 되면 한번에 웹페이지의 리소스인 이미지를 다운받지 않고 분할하여 다운받기 때문에 전체적인 퍼포먼스가 향상되고 사용자 경험도 매우 좋은 긍정적인 평가를 받습니다. 뷰 같은 경우에는 컴포넌트를 한번에 다운로드 받게 되는데, 이에 필요한 부분만 다운받아 쾌적한 느낌을 받을 수 있습니다. "LazyLoad"의 개념을 이해하시면, 다른 환경, 조건에서도 충분히 구현 할 수 있습니다. 파일 분할하여 저장하기 webpackChunkName 뷰에서는 대표적으로 한개의 JS에 압축하여 불러오게 됩

Naver Blog

[CentOS7] nodeJS(Express) ejs, html 템플릿 엔진 변경 및 렌더링하기

템플릿 엔진이란? 템플릿 엔진은 파일을 HTML 형식으로 변환시키는 모듈입니다. "Express"에서 가장 많이 사용하는 템플릿은 엔진은 "Jade"이며, 그에 비해 EJS는 똑같은 HTML에서 "<% %>" 를 사용하여 서버의 데이터를 사용하거나 코드를 실행 할 수 있습니다. # "ejs"로 서버 데이터를 넘겨 "<% %>"으로 실행하는 예제 # "routes/index.js" 파일 내용 const express = require("express"); const router = express.Router(); router.render = function(req, res, next) { res.render('index', {title : 'Hello EJS'}); } module.exports = router; # "views/index.ejs" 파일 내용 <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8" /> <meta

Naver Blog

[CentOS7] 오라클(Oracle) 19C(19.3) 설치하기

주의사항 # 센토스에 오라클을 설치하기 전에 스토리지(저장공간)를 여유있게 확보해놓아야 합니다. # 저는 보통 최소 30GB 이상 맞춰놓습니다. 오라클 사용자 생성 # "CentOS" 서버 계정을 생성하여 오라클 권한을 부여해줄겁니다. groupadd -g 1100 dba groupadd -g 1101 oinstall useradd -g dba -G oinstall oracle # "oracle" 계정 비밀번호 설정 passwd oracle 관련 패키지 설치 # 설치중에 없는 패키지도 있겠지만, 크게 문제는 없을것 같습니다. yum install -y bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi

Naver Blog

[CentOS7] 오라클(Oracle) sqlplus 계정 생성 및 권한 부여

계정 생성 하기 # 먼저, 오라클 설치시 지정한 계정으로 로그인 su - 계정이름 # sqlplus 접속 sqlplus / as sysdba # "오라클 12C 이상" 부터는 아이디 앞에 "c##" 필수 # 비밀번호는 특수문자가 안됨 CREATE USER c##abcd IDENTIFIED BY abcd; ※ 아이디 앞 "c##"이 아이디 자체에 포함 계정 권한 부여 # 모든 권한 부여 grant connect, dba, resource to c##api;

Naver Blog

[CentOS7] nodeJS(Express) PM2 무중단 서버 실행 하기

PM2 설치하기 npm install pm2@latest -g PM2 시작하기 명령 설명 pm2 start "AppName" 시작 pm2 stop "AppName" 중단 pm2 delete "AppName" 삭제 pm2 reload pm2 reload "AppName" 재시작 pm2 show "AppName" 상세 정보 확인 pm2 ls pm2 list 리스트 항목 확인 pm2 monit 모니터링 화면 출력 pm2 logs 로그 확인 pm2 startup 서버 부팅시 자동 시작 등록 # 시작 pm2 start npm --name "Your APP Name" -- start # 시작 (클러스터 모드) pm2 start npm --name "APP Name" -i 0 -- start # 시작 예제 pm2 start npm --name socketserver -i 0 -- start 클러스터 모드란? # "PM2"에서 제공하는 "클러스터 모드"는 코드 수정 없이 "CPU 확장" 할 수 있

Naver Blog

[CentOS7] Laravel 메모리 부족(Cannot allocate memory) 해결하기

PHP 7.X 버젼 최소 메모리 사양 # 최소 메모리 1.5G 이상으로 알고 있지만 서버 메모리를 2G 이상으로 선택하거나 업그레이드 권장 PHP 메모리 제한 해제 memory_limit # PHP 메모리 제한 수정 vi /etc/php.ini # 위 파일을 연후 ":/128M" 입력 후 엔터 이후 값 수정 # "-1" 입력시 무제한 이외에는 서버 사양에 따라 직접 메모리 설정 memory_limit = 128M => memory_limit = -1 => memory_limit = 512M ※ 위 설정으로도 컴포저가 다운되거나 관련된 작업이 불가한 경우 서버자체 사양 메모리를 높여주는게 제일 좋은 방법

Naver Blog

[CentOS7] Firewalld (방화벽) 설정하기(수정)

Firewalld 설치하기 # "Firewalld" 설치 yum install -y firewalld # 자동시작 등록 및 시작 systemctl start firewalld systemctl enable firewalld Firwalld 명령어 사용법 명령어 설명 firewall-cmd --permanent --zone=public --add-port=포트번호/tcp 포트 열기 firewall-cmd --permanent --zone=public --add-port=포트번호-포트번호/tcp 포트 범위 열기 firewall-cmd --permanent --zone=public --add-source=아이피 --add-port=포트번호/tcp 포트 열기 및 허용 IP 추가 firewall-cmd --permanent --zone=public --remove-port=포트번호/tcp 포트 삭제 firewall-cmd --get-zones 사전 정의된 존 출력 firewall-cmd --

Naver Blog

[VSCODE] 비주얼스튜디오코드(Visual Studio Code) 원격접속과 터미널 한번에 사용하기 (SSH)

Remote Development 확장 프로그램 설치 # "Remote Development" 설치시 확장팩 3개가 설치 됩니다. Remote Development SSH 접속을 위한 키 생성하기 # "VSCODE"를 연후 "Ctrl + `" 단축키를 통해서 터미널로 이동 후 아래 명령 실행 ssh-keygen -t rsa -b 2048 # 저장 위치(기본 "C:\Users\윈도우계정/.ssh/id_rsa") Enter file in which to save the key (C:\Users\윈도우계정/.ssh/id_rsa): # "passphrase"는 입력하지 않고 엔터 Enter passphrase (empty for no passphrase): # 똑같이 엔터 Enter same passphrase again: # 아래와 같이 나온다면 생성 완료 Your identification has been saved in C:\Users\윈도우계정/.ssh/id_rsa. Your pub

Naver Blog

[VueJS][nodeJS] ESLint(Module Error) 해결하기

오류 발생 원인 ESLint 오류 # 위와 같이 비슷한 오류가 발생되는 이유는 아래와 같습니다. "ESLint"는 자바스크립트 코딩시 오류가 발생되지 않게 문법을 조정(보조)해주는 패키지 입니다. 위 이미지 처럼 오류가 발생되는 이유는 애플리케이션 실행에는 문제 없으나, 코드에 사용하지 않는 변수 등을 정리하라고 경고하는 메세지 입니다. 해결 방법 # 먼저, 뷰 프로젝트에 "vue.config.js" 파일이 없다면 생성 후 아래 내용 입력 후 저장 module.exports = { devServer: { overlay: false } } ※ 주의 할점은 "overlay" 옵션을 가장 상단에 올려주세요. vue.config.js 다른 방법 # "package.json" 파일을 열어 끝에 추가 --quiet OR --quiet \"{tests,src}/**/*.{js,vue}\" package.json 참고 링크 ESLint '--quiet' Option has no effect · I

Naver Blog

[VueJS][nodeJS] 뷰엑스(Vuex)란 무엇인가?

뷰엑스는 무엇인가? Vuex # 뷰의 핵심은 "데이터" 중심의 "컴포넌트"라고 봐도 무방할 정도로 집중적으로 사용하게 됩니다. # 보통 뷰 프로젝트를 하게 되면, 컴포넌트 관리를 쉽게하기 위해서 "라우터"라는것도 사용하게 됩니다. 즉, 사용자가 어떤 이벤트를 발생했을때 다른 페이지를 보여줄때 "라우터"를 사용합니다. # 문제는 여기서 발생됩니다. 서로 다른 페이지(컴포넌트)를 보여줄때 다른 컴포넌트 간에 값을 전달하기 위해서는 "부모 => 자식에서 props의 전달 방법", "자식 => 부모에게 Emit event의 전달 방법" 으로 데이터를 주고 받아야 합니다. 위 문제는 정말 작은 소규모 프로젝트에서는 문제가 되지 않을 수 있습니다. 왜냐하면, 소규모인만큼 구조가 간단하니깐요... 하지만 대형 프로젝트에서는 유지보수를 할 수 없을만큼 감당하기 어려울겁니다. # 그래서 위 문제를 해결해 주는 것이 "Vuex"라고 보시면 됩니다. "모든 컴포넌트들을 하나의 중앙 집중식 저장소 역활

Naver Blog

[VueJS][nodeJS] 뷰엑스(Vuex) 활용 및 로그인 세션 유지 만들기

Vuex 설정하기 # 뷰 프로젝트 폴더로 이동 후 "Vuex" 패키지를 설치합니다. npm install --save vuex npm install --save jsencrypt npm install --save axios ※ 이전에 설치했던 패키지가 있으면 넘어가도 됩니다. # 뷰 프로젝트 "src/store/index.js" 폴더와 파일을 만들어주세요. # "index.js"는 아래 내용이 들어갑니다. import Vue from "vue"; import Vuex from "vuex"; import axios from "axios"; import router from "@/routes"; import { decrypt } from "@/encrypt"; // Vuex를 사용하기 위해서 글로벌로 선언합니다. Vue.use(Vuex); // Vuex를 사용합니다. export default new Vuex.Store({ // 공용으로 사용할 state 값을 지정합니다. state:

Naver Blog

[VueJS][nodeJS] 뷰엑스(Vuex) 대신 리덕스(Redux)를 사용해야 하는가?

Redux와 Vuex 어떤걸 사용해야 하나요? 초기 SPA(Single Page Application) 방식의 프로젝트들은 데이터 관리에 대해서 많은 이슈가 있었습니다. 그래서 로컬 스토리지, 세션 스토리지, 쿠키 등 여러 방법으로 해결하고자 했었습니다. 프로젝트 규모가 커질수록 더욱 관리가 힘들어지고 사용에 대한 제약이 생겨나기 시작했습니다. 처음에는 React에서 Redux라는 개념이 생겨나면서 스토어로 데이터를 관리하기 시작했습니다. (Redux가 React를 염두에 두고 만들어졌다는 내용도 있습니다.) 다른 프레임워크인 Angular, Vue에서도 영향을 받아 중앙집중식 데이터 관리가 추가되었습니다. Redux, Vuex 모두 좋은 상태관리 라이브러리지만 Vue에서는 Vuex를 활용하는것이 성능상에서도 많은 이점을 가져올 수 있습니다. 이유는 아래와 같습니다. 1. 돌연변이체는 감속기와 함께 "사용하기가 더 쉬움" 2. "Vuex"에서 "비동기 작업"은 훨씬 더 "체계적 구성

Naver Blog

[CentOS7] 오라클(Oracle) ORA-12505 Listener refused the connection with following error

오류 발생원인과 해결하기 오류코드 "Listener refused the connection with the following error : ORA-12505, TNS: listener does not currently know of SID given in connect descriptor" # 결론 적으로는 SID 값이 맞지 않아서 그렇습니다. 서버에서 "SID" 값을 확인해주신 다음에 "SQL Developer" 같은 툴로 "SID" 값을 동일하게 넣어주시면, 정상적으로 접속되실겁니다. SID 확인 및 변경 # "sqlplus" 접속 sqlplus / as sysdba # "SID" 확인 방법 select name from v$database; # "instance" 확인 방법 select instance from v$thread; # "ORA-01034: ORACLE not available" 오류 발생시 오라클이 실행되고 있지 않아서 발생되는 문제로 오라클 실행하기 # "sq

Naver Blog

[CentOS7] Laravel(VueJS) 페이지 새로고침 및 주소 입력 후 이동시 컴포넌트 보여주기

PHP 웹 라우터 설정하기 라우터 설정으로 새로고침 및 주소를 입력하여 이동시 404 페이지가 아닌 해당 컴포넌트를 보여주는 방법입니다. # "routes/web.php" 이동 후 아래 내용 추가 # "파일이름.blade.php" 이 부분은 라라벨 설치시 초기에 "welcome.blade.php" 파일 보신게 있으실 겁니다. 이 파일의 이름 앞 부분인 "welcome" 이렇게만 입력해주시면 됩니다. Route::get('/{any}', function () { return view('파일이름.blade.php'); })->where('any', '.*'); # 예제 # 저는 "index.blade.php"으로 되어있기 때문에 앞에 "index"만 입력하면 됩니다. Route::get('/{any}', function () { return view('index'); })->where('any', '.*');

Naver Blog

[CentOS7] SSH 접속시간 늘리기

SSH 접속시간 수정 # "sshd_config" 연후 아래 내용 수정 # "#" 주석이 있다면 풀기 vi /etc/ssh/sshd_config # "ClientAliveInterval" 클라이언트 살아있는지 확인하는 간격 ClientAliveInterval # "ClientAliveCountMax" 클라이언트 응답 없어도 접속 유지하는 횟수 ClientAliveCountMax # 예제 ClientAliveInterval=15, ClientAliveCountMax=3 이면 45초 후 접속 끊김 # "sshd" 재시작 systemctl restart sshd # 재확인하기 cat /etc/ssh/sshd_config | grep Client vi /etc/ssh/sshd_config 참고 링크 SSH 접속 유지시간 연장 How to Keep Alive SSH Sessions How to avoid SSH timeouts SSH 접속 유지하기 SSH 접속 유지시간 변경 목차 1 TMOU

Naver Blog

[CentOS7] Laravel(VueJS) + 뷰티파이(Vuetify) 적용하기

패키지 설치하기 # 라라벨 프로젝트 폴더에서 설치 npm install vuetify npm install @mdi/font App.js 수정하기 # 아래 내용을 추가 import Vuetify from "vuetify"; Vue.use(Vuetify); new Vue({ render: (h) => h(main), vuetify: new Vuetify(), }).$mount("#app"); # 예제 import Vue from "vue"; import Vuetify from "vuetify"; import App from "@/components/App"; Vue.config.productionTip = false; Vue.config.devtools = true; Vue.use(Vuetify); new Vue({ render: (h) => h(App), vuetify: new Vuetify(), }).$mount("#app"); app.scss 수정하기 # 상단에 추가 @impor

Naver Blog

[CentOS7] 오라클(Oracle) ORA-17002 The Network Adapter could not establish the connection

리스너 상태 확인 # 상태 확인 lsnrctl status # 아래 사진처럼 정지되 있는 경우 # 정지 후 재실행 lsnrctl stop lsnrctl start lsnrctl

Naver Blog

[VueJS][nodeJS] 배열, 오브젝트 감시하는 방법 (Array, Object, Watch)

배열 감시하기 export default { date() { Test: [ { id: 1, name: "홍길동1", }, { id: 2, name: "홍길동2", }, ], }, watch: { "Test.0.name": function() { console.log("홍길동1 값 체크"); } "Test.1.name": function() { console.log("홍길동2 값 체크"); } }, } 오브젝트 감시하기 export default { date() { Test: { Good: false }, }, watch: { "Test.Good": function() { console.log("Test.Good 값 변경"); } }, }

Naver Blog

[VueJS][nodeJS] 다른 컴포넌트 메소드 실행하기 (부모, 자식 X)

REF 선언하기 # 지정한 "이름"이 "refs"에 들어가게 됩니다. 즉, 설정한 "이름"으로 컴포넌트 경로가 지정됩니다. created() { this.$root.$refs.이름 = this; }, methods: { Test() { console.log("호출!"); } } 다른 컴포넌트에서 호출 # 위에서 설정한 컴포넌트 "이름"을 넣어 메소드를 실행합니다. this.$root.$refs.이름.Test(); 예제 # "A 컴포넌트" created() { this.$root.$refs.A = this; }, methods: { action() { this.$root.$refs.B.test(); }, test() { console.log("A 호출!"); } } # "B 컴포넌트" created() { this.$root.$refs.B = this; }, methods: { action() { this.$root.$refs.A.test(); }, test() { console.lo

Naver Blog

[VueJS][nodeJS] Axios 사용하기

Axios 장점 1. "구형 브라우저 지원" (IE8 이상을 포함한 모든 최신 브라우저를 지원) 2. "요청 중단" 가능 3. "응답 시간 초과" 설정 가능 4. "CSRF 보호" 기능 5. "JSON 데이터 자동 변환" 6. "Promise" 기반으로 "async, await" 문법으로 "XHR" 요청이 매우 간단 Axios 패키지 설치 # 뷰 프로젝트 폴더에서 설치 npm install --save axios App.js 수정하기 # "axios" 선언 import axios from "axios"; # "axios" 전역 사용 Vue.prototype.$http = axios; Axios 기본 사용 # "axios.get" : "GET" 요청 # "axios.post" : "POST" 요청 # 헤더, 파라미터, 데이터 모두 지원 axios.get("요청할주소", { headers: { 'Content-Type': 'application/x-www-form-urlencoded',

Naver Blog

[CentOS7] 포트 번호 목록

TCP/UDP의 포트 목록 # 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌 수 있다. 0 ~ 1023 : 잘 알려진 포트 (well-known port) 1024 ~ 49151 : 등록된 포트 (registered port) 49152 ~ 65535 : 동적 포트 (dynamic port) 잘 알려진 포트 # 대부분의 유닉스 계열 운영 체제의 경우, 잘 알려진 포트를 열려면 루트 권한이 있어야 한다. # 이 번호는 강제적으로 지정된 것은 아니며, IANA의 권고안일 뿐이다. 가끔 각 포트 번호를 그대로 사용하지 않고 다른 용도로 사용하기도 한다. # 이 경우, 트로이 목마와 같은 프로그램들이 악의적인 목적으로 포트를 변경하여 사용하는 경우도 있다. 포트 TCP UDP 설명 상태 0 UDP 예약됨; 사용하지 않음 공식 1 TCP TCPMUX (TCP

Naver Blog

[CentOS7] Laravel(VueJS) ENV 사용하기

추가하기 # 라라벨 프로젝트 최상단 ".env" 파일에서 내용을 추가해주세요. # 아래는 예제 입니다. MIX_PUBLIC_KEY=MFwwDQYJKoZIhvcNAQEBBQADSwAw ※ 앞에 "MIX_" 값을 넣어주세요. 사용하기 # 위에서 추가한 값을 가져오기 위해서 아래와 같이 사용합니다. # 만약, 인식하지 못한다면 터미널에서 "php artisan serve" 명령을 실행 한후 다시 재시도 해보세요. process.env.MIX_PUBLIC_KEY

Naver Blog

[CentOS7] YUM 안될때 리포지토리(EPEL) 활성화 하기 (Nothing to do)

리포지토리(EPEL) 설치하기 yum install -y epel-release 참고 링크 CentOS, RHEL 또는 Amazon Linux를 실행하는 EC2 인스턴스에 대한 EPEL 리포지토리 활성화 표준 리포지토리는 CentOS, RHEL 또는 Amazon Linux 기반 배포에 설치할 수 있는 일부 패키지를 제공하지 않을 수도 있습니다. EPEL 리포지토리를 활성화하면 패키지 설치에 대한 추가 옵션이 제공됩니다. 해결 방법 다음 단계에 따라 RHEL, CentOS 또는 Amazon Linux 기반 배포에서 EPEL 리포지토리를 다운로드, 설치 및 활성화합니다. Amazon Linux Amazon Linux 2: RHEL 7용 EPEL 릴리스 패키지를 설치하고 EPEL 리포지토리를 활성화합니다. sudo yum install ... aws.amazon.com

Naver Blog

[CentOS7] ROOT 계정 로그인 및 SSH(Authorized_keys) 인증키 복사 설정하기

ROOT 계정 로그인 허용하기 보안상 허용하지 않는것이 좋음 # "sshd_config" 파일을 연뒤 아래 "PermitRootLogin"을 찾아서 "yes" 설정하기 # 만약, 주석처리만 되어있다면 주석제거 vi /etc/ssh/sshd_config PermitRootLogin no => PermitRootLogin yes ※ 서비스시에는 로그인 하지 못하게 막을것! 아마존(AWS) 서버 생성 후 보조 계정의 인증키 복사하기 발급받은 pem 키를 복사하는 방법 # 아마존에서 서버 생성 후 기존 계정에 연결된 ".pem" 키를 "root"에 복사하는 방법 sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh # "centos" 서버라면 "/home/centos"로 변경 sudo cp /home/centos/.ssh/authorized_keys /root/.ssh ※ 이제 서버 생성시 만들었던 팸 키를 "root" 계정에서 로그인이 가능하다

Naver Blog

[CentOS7] SUDO 사용하게 설정하기(is not in the sudoers file)

권한 수정 # "root" 계정으로 로그인 후 "etc" 폴더로 이동 cd /etc # "sudoers" 파일에 권한 777 설정 chmod 777 sudoers 파일 수정 # "sudoers" 파일 수정 vi sudoers # 하단 "root ALL=(ALL) ALL" 부분을 찾아서 추가할 계정에 똑같이 설정 후 저장 계정이름 ALL=(ALL) ALL ※ 권한 변경 없이는 "sudoers" 파일이 열리지 않음 권한 재설정 # "etc" 폴더로 이동 cd /etc # "sudoers" 파일에 권한 440 설정 chmod 440 sudoers

Naver Blog

[CentOS7] 스왑(SWAP) 용량 늘이는 방법 및 제거하는 방법

용량 추가 # 스왑 정보 확인 free # 현재 계정 루트에 생성 mkdir /swap # 오라클 설치라면 "5G" 추천 dd if=/dev/zero of=/swap/swapfile bs=1M count=5120 # 위에서 만든 "swap" 폴더로 이동 cd /swap # 스왑 영역 생성 mkswap swapfile # 스왑 활성화 swapon swapfile # 스왑 확인 swapon -s 재부팅시에도 적용 # "fstab" 파일을 열기 vi /etc/fstab # 아래 내용 추가 /swap/swapfile swap swap defaults 1 1 용량 제거 # 스왑 공간 제거 swapoff swapfile # 위에서 생성한 폴더 및 파일 제거 rm -rf /swap/swapfile # 재부팅시 적용했다면 제거 vi /etc/fstab # 아래 내용을 삭제하거나 주석처리 /swap/swapfile swap swap defaults 1 1 참고 링크 리눅스 swap 용량 늘이는 방법

Naver Blog

[CentOS7] NodeJS --save --save-dev 차이 및 사용법

명령어 명령어 단축명령어 설명 --save-prod -P "dependencies"에 패키지를 추가합니다. --save-dev -D "devDependencies"에 패키지를 추가합니다. --save-optional -O "optionalDependencies"에 패키지를 등록합니다. --no-save "dependencies"에 패키지를 등록하지 않습니다. --save # "package.json" 파일의 "dependencies" 항목에 패키지 정보가 추가 됩니다. 프로덕션(실서비스) 빌드시 "패키지가 포함되어 빌드" 됩니다. 즉, 테스트 목적 및 개발 상황이 아닌 실제 서비스를 위해서 빌드할때에 "dependencies" 항목에 추가된 패키지들이 같이 포함되어 빌드 됩니다. package.json --save-dev # "package.json" 파일의 "devDependencies" 항목에 패키지 정보가 추가 됩니다. 프로덕션(서비스) 빌드시 패키지가 "포함되지 않고 빌드"

Naver Blog

[CentOS7] NodeJS(Express) + ENV(dotenv, cross-env) 사용하기

dotenv 설치하기 npm install dotenv .env 파일 생성 # 최상위 디렉토리에 ".env" 생성 PUBLIC_KEY=공개키 PRIVATE_KEY=비공개키 dotenv 사용하기 # "dotenv" 모듈 사용 import dotenv from 'dotenv'; dotenv.config(); OR require("dotenv").config(); # 위의 모듈을 가져온 후 아래 처럼 사용이 가능합니다. var PRIVATE_KEY = process.env.PRIVATE_KEY; var PUBLIC_KEY = process.env.PUBLIC_KEY; dotenv 경로 변경하여 사용 # 최상위 디렉토리 위치가 아닌 특정 위치가 필요하다면 아래와 같이 사용 import path from 'path'; import dotenv from 'dotenv'; dotenv.config({ path: path.join(__dirname, '경로1/경로2/.env') }); OR con

Naver Blog

[CentOS7] Laravel(VueJS) 프로덕션 및 개발자모드(production, development)

# 개발 과정에서 Vue는 일반적인 오류 및 함정을 해결하는 데 도움이 되는 많은 경고를 제공합니다. 그러나 이러한 경고 문자열은 프로덕션에서는 쓸모 없으며 앱의 페이로드 크기를 키웁니다. 또한 이러한 경고 검사 중 일부는 프로덕션 모드에서 피할 수 있는 런타임 비용이 적습니다. Webpack 4+ # "webpack.mix.js" 파일을 연후 아래 내용 추가 mix.webpackConfig({ mode: "production", }); Webpack 3 과 그 이전 버전 var webpack = require('webpack'); mix.webpackConfig({ plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }) ] }); Browserify # "production "으로 설정된 실제 NODE_ENV 환경 변수로 번들링 명령을 실행하십시오. 이렇게 하면 핫 리로

Naver Blog

[CentOS7] Laravel 라우터 컨트롤러(Routes Controller) 사용하기

라우터 구조 경로 작동 설명 routes/api.php API api 미들웨어 그룹안에 포함되는 라우트들을 포함하고 있으며, 접속 속도 제한 기능을 제공합니다. 이 라우트들은 상태를 저장하지 않는것을 대상으로 하며 따라서 requests-요청들이 애플리케이션에 진입하면 이 라우트들을 통해서 토큰을 통해서 인증되고, 세션 상태에 엑세스 할 수 없습니다. routes/channels.php 소켓 애플리케이션에서 지원하는 모든 이벤트 브로드캐스팅 채널을 등록하는 파일입니다. routes/console.php 콘솔 클로저 기반의 명령어들을 정의해 놓을 수 있는 파일입니다. 각각의 클로저는 각각의 명령어 IO 메소드와 상호작용하는 간단한 명령어를 구현하는 명령어 인스턴스에 바인드 되어 있습니다. 이 파일에는 HTTP 라우트가 정의되어 있지는 않지만, 애플리케이션에 콘솔 기반의 진입점(라우트와 비슷하게)을 정의합니다. routes/web.php 웹 web 미들웨어 그룹안에 포함되는 라우트들을

Naver Blog

[CentOS7] Laravel API 리밋 조절(429: Too Many Requests)

API 리밋 조절 # "app/http/Kernel.php" 파일을 연후 수정 # "$middlewareGroups" 그룹 하단 "API throttle" 수정 'api' => [ // 1분간 60회 요청 허용 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], => 'api' => [ // 1분간 120회 요청 허용 'throttle:120,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 예외 설정 # 위 설정이 적용이 안되는 경우에는 따로 "'throttle' => ['throttle:60,1']" 추가하여 전체 적용으로 테스트 합니다. protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\M

Naver Blog

[CentOS7] Laravel 미들웨어(MiddleWare) 사용하기

미들웨어란? # 서버로 들어오는 HTTP 요청들을 중간에 확인(검수) 하는 작업들을 처리합니다. 예로 들자면, 로그인 관련하여 로그인한 사용자가 HTTP 요청을 보내면, 로그인 되어있는지 미들웨어에서 확인하여 요청을 거부할껀지 승인할껀지에 대해서 설정이 가능합니다. 미들웨어 기본 구조 구조 설명 Authenticate 사용자 인증을 처리하는 미들웨어 입니다. CheckForMaintenanceMode 요청시마다 사이트가 정비 모드인지 확인합니다. EncryptCookies 보안을 위해 쿠키를 암호화합니다. RedirectIfAuthenticated 위에서 설명한 인증 여부를 확인하고 인증되지 않았을 경우 인증 페이지로 redirect 합니다. TrimStrings 모든 요청 데이터를 자동으로 트리밍합니다. TrustHosts 화이트 리스트 호스트 구성 TrustProxies 화이트 리스트 프록시 구성 VerifyCsrfToken 사이트 간 요청 위조(CSRF, XSRF) 공격 방지를

Naver Blog

[CentOS7] PHP 타임존 (date_default_timezone_set) 시간대 변경하기

SED로 변경하기 # "/etc/php.ini" 파일안에 타임존 값 확인 grep date.timezone /etc/php.ini # 백업하기 cp /etc/php.ini /etc/php.ini.old # 변경하기 sed -i 's/;date.timezone =/date.timezone = Asia\/Seoul/g' /etc/php.ini # 백업 파일과 새로 만든 파일의 타임존 값 확인 diff /etc/php.ini.old /etc/php.ini # 아파치 재시작 systemctl restart httpd # 테스트 출력하기 php -r "echo date('Y-m-d H:i:s').PHP_EOL;" 직접 변경하기 # "php.ini" 파일을 연후 단축키 :/ 를 통해서 검색해줍니다. 예제, :/timezone 입력 후 엔터 vi /etc/php.ini # 앞 ";" 주석을 재거한 후 값 변경 ;date.timezone= => date.timezone= Asia/Seoul # 아

Naver Blog

[CentOS7] 리눅스 타임존 설정하기

타임존 설정하기 # 리눅스 타임존 변경 timedatectl set-timezone Asia/Seoul OR ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime # 타임존 변경 한국 표준시(KST) 확인 date # 리눅스 서버 재부팅 shutdown -r now 참고 링크 리눅스 KST 시간대 설정 목차 1 개요 2 방법 1 3 방법 2 4 같이 보기 5 참고 1 개요 [ 편집 ] 리눅스 KST 설정 리눅스 한국 시간대 설정 한국 시간으로 변경 리눅스 한국표준시 적용 적용효과 및 메커니즘은 방법1, 2 모두 동일하다. 2 방법 1 [ 편집 ] 명령어 timedatectl set-timezone Asia/Seoul ️ Bash 3 방법 2 [ 편집 ] 명령어 ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime ️ Bash 실행예시 [root@zetawiki ~]# date Sun N... zetaw

Naver Blog

[CentOS7] PHP 날짜(더하기, 빼기) 구하기 (date, strtotime)

사용하기 # 타임존이 설정되지 않은 경우 상단에 선언 date_default_timezone_set('Asia/Seoul'); # 현재 날짜 date("Y-m-d"); # 현재 날짜와 시간 date("Y-m-d H:i:s"); # 현재 시간으로 부터 전(-1), 후(+1), "초(seconds)" "분(minutes)" "시(hours)" "일(days)" "주(week)" "달(months)" "년(years)" # 예제 (1초 전) date("Y-m-d H:i:s", strtotime("-1 seconds")); # 예제 (1년 1개월 1일 1시간 후) date("Y-m-d H:i:s", strtotime("+1 years +1 months +1 days +1 hours")); # 예제 (2020년 1월 1일 지정) date("Y-m-d H:i:s", strtotime("2020-01-01")); # 예제 (2020년 1월 1일 기준 1달 후) date("Y-m-d H:i:s",

Naver Blog

[CentOS7] 라라벨(Laravel) 비밀번호 해시(암호화, 복호화) 설정하기

해시(해싱)이란? # 라라벨의 Hash 파사드는 사용자의 암호를 저장하는데 필요한 "안전한 Bcrypt와 Argon2 해싱을 제공"합니다. # 해싱의 기본 경로는 "config/hashing.php"이며, "Bcrypt"와 "Argon2" (Argon2i, Argon2id 변경버전)을 지원합니다. ※ "Argon2i" 드라이버는 "PHP 7.2.0 이상"의 버전을 요구하고, "Argon2id" 드라이버는 "PHP 7.3.0 이상"을 요구합니다. 1.해시 암호화 하기 # 상단 파사드 해시를 불러옵니다. use Illuminate\Support\Facades\Hash; # 아래 명령을 통해서 암호화 합니다. Hash::make("값"); 2-1. 해시 암호화(Bcrypt Work Factor)길이 설정하기 # "Bcrypt" 알고리즘을 사용하고 있다면 "rounds" 옵션을 사용하여 "Bcrypt" 알고리즘에서 사용하는 "work factor"를 관리할 수 있게 해줍니다 Hash::ma

Naver Blog

[CentOS7] NodeJS(Express) 노드몬(nodemon) 서버 파일 변경 감지 및 자동 재시작

설치하기 # "express" 폴더로 이동 후 설치 npm install -D nodemon 패키지 파일 수정 # "package.json" 파일을 열어 주신 후 아래 내용 수정 "node" 부분을 "nodemon"으로 수정 "scripts": { "start": "nodemon ./bin/www" }, # 서버 시작 npm run start

Naver Blog

[VueJS][nodeJS] 자동 빌드 및 익스프레스(express) 서버 자동 재시작 하기(Vue CLI 기준)

패키지 파일 수정하기 # 뷰 프로젝트 폴더의 "package.json" 파일을 열어주세요. 아래와 같이 "build" 부분 끝에 "--watch"를 추가해주세요. "build": "vue-cli-service build --watch --mode development", 익스프레스 서버 설정하기 [CentOS7] NodeJS(Express) 노드몬(nodemon) 서버 파일 변경 감지 및 자동 재시작 설치하기패키지 파일 수정 blog.naver.com 사용해보기 # 먼저, 뷰 프로젝트 폴더에서 빌드 시작 npm run build # 이후 터미널을 한개 더 열어주신 후 익스프레스(express) 폴더로 이동하여 서버를 시작합니다. # 뷰 폴더에서 실행한 빌드 명령은 뷰쪽 파일을 감지하여 자동 재빌드를 해주며, 익스프레스 폴더에서 실행한 서버는 "public" 폴더로 뷰가 빌드를 해주면 익스프레스 서버에서 노드몬이 파일 변경 감지를 하여 서버를 재시작 합니다. npm run start

Naver Blog

[CentOS7] NodeJS NPM 최신버젼 업데이트

최신버젼 업데이트 # 보통 "nodejs" 버젼에 따라서 "npm"도 자동으로 최신으로 설치됩니다. npm install -g npm # "npm" 버젼확인 npm -v # "npm" 버젼이 변경되지 않았다면 서버 재부팅 shutdown -r now

Naver Blog

[CentOS7] PHP 튜닝

먼저 링크 모음 이후 정리 예정 phpinfo 정보 https://m.blog.naver.com/PostView.nhn?blogId=parkjy76&logNo=30037662612&proxyReferer=https:%2F%2Fwww.google.com%2F https://unabated.tistory.com/entry/%EC%84%B8%EC%85%98-%EC%84%A4%EC%A0%95-phpini opcache 정보 https://extrememanual.net/11088 https://www.lesstif.com/php-and-laravel/zend-opcache-23757119.html https://m.blog.naver.com/PostView.nhn?blogId=kshosting&logNo=221297259398&proxyReferer=https:%2F%2Fwww.google.com%2F

Naver Blog

[CentOS7] 라라벨(Laravel) XSS 미들웨어 추가하기

XSS 방어에 사용되는 함수 명령어 설명 strip_tags HTML 태그와 PHP 태그 제거하는 함수 htmlspecialchars 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환 htmlentities 모든 문자열을 HTML 엔티티로 변환 1-1. 미들웨어 추가 # 터미널 명령으로 미들웨어 파일 추가하기 php artisan make:middleware XSSMiddleware # 아래 내용 추가 "array_walk_recursive"하고 "foreach" 퍼포먼스 차이는 PHP7 버젼으로 오면서 격차가 많이 줄었기 때문에 편한것으로 쓰면 됩니다. (그래도 "foreach"가 조금 더 빠릅니다.) # 저의 경우 API 데이터가 암호화 되서 전달되기 때문에 특수문자등 아래 명령들을 쓰기에 부적합하여 "preg_replace", "str_replace" 으로 진행했습니다. 특별하지 않은 경우에는 "strip_tags", "htmlentities", "htmlspecialcha

Naver Blog

[CentOS7] 라라벨(Laravel) 로그(Log)를 파일(채널, 분류)별로 나누어 저장하기

채널 드라이버 # 채널 드라이버는 아래의 예시에서 확인 하실 수 있으며, 아래의 사용가능한 채널 드라이버만 사용할 수 있습니다. "이외의 다른 값을 넣을시 서버가 다운될 수 있으니 참고"해주세요. 이름 설명 stack "다중 채널"을 생성할 수 있는 채널 single 하나의 파일이나 경로 기반 로거 채널(StreamHandler) daily Monolog 드라이버를 기반으로 한 일별 로테이션을 하는 RotatingFileHandler slack Monolog 드라이버를 기반으로 한 SlackWebhookHandler papertrail Monolog 드라이버를 기반으로 한 SyslogUdpHandler syslog Monolog 드라이버를 기반으로 한 SyslogHandler errorlog Monolog 드라이버를 기반으로한 ErrorLogHandler monolog 지원가능한 Monolog 핸들러를 사용하는 Molog 팩토리 드라이버 custom 지정된 팩토리를 호출해서 채널을

Naver Blog

[Ubuntu] 우분투(Ubuntu) 레포지토리(apt install) 수정으로 다운로드 속도 높이기(수정)

다운로드 주소 변경 # 아래 파일을 연후 수정 sudo vi /etc/apt/sources.list # 파일을 연후에 "ESC" 키를 눌른 후 ":" 한후에 아래 명령어 실행 그러면 기존에 있던 주소가 아래로 변경 됩니다. %s/archive.ubuntu.com/mirror.kakao.com/ %s/security.ubuntu.com/mirror.kakao.com/ 수정 파일 내용 # 원본 내용 # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://archive.ubuntu.com/ubuntu/ focal main restricted # deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted ## Major bug fix updates produced after

Naver Blog

[Windows10] 우분투(Ubuntu) 어드민 권한 추가하기(SUDO)

root 계정으로 로그인 터미널에서 "su", "su root" 입력 su root sudoers 파일 권한 변경 "sudoers" 파일의 기본 권한은 "440" 권한 부여 후 다시 "440"으로 변경합니다. chmod 660 /etc/sudoers sudo 권한 추가 아래 "root" 이후에 추가할 계정을 똑같이 입력 vim /etc/sudoers sudoers passwd 파일 수정 부여할 계정을 찾은뒤 뒤에 숫자를 "0:0"으로 변경 vim /etc/passwd passwd root 그룹 추가 아래 "root:x:0:" 뒤에 "root" 그룹을 추가할 계정을 입력 후 저장 추가한 계정으로 로그인 해서 "sudo" 없이 명령이 실행되는지 확인합니다. vim /etc/group group

Naver Blog

[Windows10] 우분투(Ubuntu) 터미널 속성(옵션) 수정하기 (복사 붙여넣기)

터미널 옵션 수정 터미널 먼저, 우분투 터미널에서 창쪽을 마우스 오른쪽 클릭하여 "기본값(D)" 혹은 "속성(P)" 클릭하여 수정 터미널을 클릭하여 드래그 하거나 마우스 오른쪽 클릭으로 붙여넣기 끄는 이유는 터미널을 클릭할때가 많은데 그때 드래그 형식으로 클릭이 되어 터미널이 잠시 멈추어 보이는 현상이 있음 (아무거나 설치할때 마우스로 터미널 글자 드래그 해보면 됨) 빠른 편집 모드 끄기 윈도우 우분투 터미널은 기본적으로 복사 붙여넣기인 "Shift+Insert(Ins)"가 안먹힘 그래서 "Ctrl+Shift+C/V"로 복사 붙여넣기 해주면 아주 편리함 Ctrl+Shift+C/V를 복사(C)/붙여넣기로 사용 켜기

Naver Blog

[CentOS7] NodeJS NPM 설치 오류(에러) 해결하기(permission denied, Missing write access to)

sudo 권한으로 설치가 안될때 # "sudo" 명령어가 안될때 아래 명령어를 맨뒤에 붙여서 시도 sudo npm install 패키지 --unsafe-perm=true --allow-root Missing write access to # "Missing write access to" 오류 발생시 앞에 "sudo"를 붙여서 "root" 권한으로 설치 시도 Appears to be a git repo or submodule # "Appears to be a git repo or submodule" 오류 발생되면 "node_modules" 폴더의 "git" 폴더 삭제 후 시도 sudo rm -rf node_modules/*/.git/ 이외 오류는 댓글로 공유해주시면 최대한 빠르게 도움드릴 수 있도록 하거나, 차후에 게시글 내용에 추가하도록 하겠습니다.

Naver Blog

[Windows10] 센토스7(CentOS7) 레포지토리(yum install) 수정으로 다운로드 속도 높이기

레포지토리 주소 변경 아래 파일을 연후 수정 sudo vi /etc/yum.repos.d/CentOS-Base.repo 아래 "base"와 "updates"에서 "mirror.kakao.com" 국내 주소로 된것으로 추가하고 이전꺼는 "#" 주석 처리합니다. [base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ baseurl=http://mirror.kakao.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$r

Naver Blog

[Windows10] 우분투(Ubuntu) 아이오닉(ionic) 설치 부터 APK 빌드하기

시작하기 앞서 현재 설치하는 환경은 윈도우10 우분투 입니다. 리눅스에서도 GUI 환경으로 안드로이드 스튜디오 설치하고 자바 설치해서 환경변수 설정하시면 될것 같습니다. NodeJS 설치하기 # 패키지 인덱스 정보 업데이트 sudo apt-get update # "build-essential", "curl" 사전 설치 sudo apt-get install -y build-essential curl # "NodeJS" 설치 curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs # "NPM" 설치 sudo apt install -y npm # 버젼 확인 node -v npm -v Xming 설치 GUI 툴 https://sourceforge.net/projects/xming/ # 위 사이트로 이동 후 다운로드하여 윈도우에 설치하여 실행해줍니다. "Xming" 실행시 나오는

Naver Blog

[CentOS7] SSH 공개키 파일 여러개 등록(authorized_keys)

authorized_keys 파일 수정 # 여러개의 키파일이 있고, 공개키를 등록하는것은 굉장히 간단합니다. 먼저, 계정 폴더로 이동 후 ".ssh/authorized_keys"을 열어주세요. 만약 없다면, 폴더와 파일을 생성해줍니다. # 공개키를 여러개 등록할 경우에는 끝에 띄어쓰기 후 이어서 붙여주시면 됩니다. 줄바꿈시에도 작동하기는 하지만, 특정 터미널에서 읽지 못하는 경우가 있습니다. 그래서 띄어쓰기로 구분해주세요. ssh-rsa 키값 test1 ssh-rsa 키값 test2 ssh-rsa 키값 계정명@DESKTOP-123456

Naver Blog

[CentOS7] NodeJS 소켓(Socket IO) 암호화 하기

패키지 설치 # "클라이언트, 서버" 모두 설치 npm install --save socket.io-encrypt 클라이언트 # 소켓 통신시 자동으로 암호화 됩니다. 서버에서 소켓을 통신 받으면 복호화 됩니다. 소켓 메세지에서는 암호화 되어 있지만, 콘솔로 찍어보면 복호화 되어 있을겁니다. const SocketIO = require('socket.io-client'); const encrypt = require('socket.io-encrypt'); const socket = SocketIO("연결할 주소"); encrypt("암호화 할 코드 입력")(socket); socket.emit('message', { ... }); 소켓 통신 암호화 서버 const SocketIO = require('socket.io'); const encrypt = require('socket.io-encrypt'); const io = SocketIO({}); io.use(encrypt("암호화 할

1 2 3 4 5 6 7 8