dev-blackcat의 등록된 링크

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

Naver Blog

[Flutter] Border Radius는 Clip 대신 하위 위젯에 속성값을 쓰자

사례 모서리가 둥근 사각형을 만들려면 클리핑 사각형을 적용하는 대신 많은 위젯 클래스에서 제공하는 borderRadius 속성을 사용하는 것이 좋습니다. Bad ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.network( "path to your image", height: 150.0, width: 100.0, ), ) Good Container( width: 48.0, height: 48.0, decoration: new BoxDecoration( shape: BoxShape.circle, image: new DecorationImage( fit: BoxFit.fill, image: NetworkImage("path to your image") ) ) )

Naver Blog

[Nginx] Ubuntu 20.04 let's encrypt 무료 SSL 적용하기

패키지 업데이트 sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt-get update Certbot 설치 sudo apt-get install certbot python3-certbot-nginx Nginx 설정 sudo vi /etc/nginx/conf.d/default.conf # server_name에 도메인 수정 후 저장 / nginx 재시작 sudo service nginx restart SSL 발급 sudo certbot --nginx -d example.com -d www.example.com

Naver Blog

[MySQL] MariaDB 10.6 타임존 변경

타임존 변경 sudo mysql; # 접속 후 use mysql; # 현재 설정 확인 SELECT @@global.time_zone, @@session.time_zone; # 타임존 변경 SET GLOBAL time_zone='+09:00'; SET time_zone = '+09:00'; SELECT @@global.time_zone, @@session.time_zone; -> +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | +09:00 | +09:00 | +--------------------+---------------------+ 1 row in set (0.000 sec) 50-server.cnf 수정 50-server.cnf 이제 MariaDB가 재부팅 되도, 타임존은 그대로 유지

Naver Blog

[Ubuntu] Ubuntu 서버 타임존 변경

타임존 변경 "date"로 명령하여 타임존 확인 date -> Wed Nov 23 20:29:27 UTC 2022 서울로 타임존 변경 sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime -> Thu Nov 24 05:29:43 KST 2022 UTC 타임존 변경 sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime -> Wed Nov 23 20:32:14 UTC 2022 NTP 서버 연동 타임존 변경 패키지 설치 sudo apt update sudo apt -y install rdate "LG U+", "NIST" 둘중 한군데 연결 # LG U+ sudo rdate -p time.bora.net sudo rdate -s time.bora.net # NIST sudo rdate -p time.nist.gov sudo rdate -s time.nist.gov 재부팅시 초기화 되지 않게 설정 sudo

Naver Blog

[FastAPI] sqlalchemy 릴레이션쉽(relationship) 부모, 자식, 손자 3뎁스(3depth)로 처리하기

릴레이션쉽(relationship) 모델 class A_TABLE(Base): """ A_TABLE 테이블 \f :column idx: 인덱스 :column created_at: 생성일 :return: """ __tablename__ = "a_table" __table_args__ = { "comment": "A 테이블" } idx = Column(Integer, unique=True, nullable=False, primary_key=True, index=True, autoincrement=True, comment="인덱스") created_at = Column(TIMESTAMP(timezone=True), nullable=False, server_default=func.now(tz='KST'), comment="생성일") class B_TABLE(Base): """ B_TABLE 테이블 \f :column idx: 인덱스 :column a_idx: A 테이블 인덱스 :column

Naver Blog

[MySQL] 크론탭(Crontab)을 적용한 자동 백업하기

폴더 생성 및 쉘 스크립트 생성 "/home/ubuntu" 기준 백업 폴더 생성 mkdir /ubuntu/database_backup 쉘 스크립트 생성 vi database_backup.sh 쉘 구성하기 DATE : 날짜 및 시간 표기 BACKUP_DIR : 백업 경로 FILE_NAME : 저장될 파일 이름 DB_USER : 데이터베이스 아이디 DB_PASSWORD: 데이터베이스 비밀번호 DB_DATABASE : 데이터베이스명 하단 find 부분은 백업파일을 유지하는 기간 입니다. +10일을 해놓게 된다면, 나중에 현재 날짜 기준 이전 10일까지의 파일만 유지되고 나머진 삭제되는 형태 즉, 최신 데이터베이스 현재 부터 과거 10일 기준으로 저장 #!/bin/bash DATE=$(date +%Y%m%d-%H%M%S) BACKUP_DIR="/home/ubuntu/database_backup" FILE_NAME=$BACKUP_DIR"/database_"$DATE.sql DB_USER="r

Naver Blog

[Flutter] 애니메이션에 불투명도 성능 체크

불투명도 애니메이션에 대한 성능 고려 사항 Opacity 위젯에 애니메이션을 적용하면 위젯(및 해당 하위 트리)이 각 프레임을 다시 빌드하게 되므로 그다지 효율적이지 않습니다. 대신 AnimatedOpacity 또는 FadeTransition을 사용하는 것이 좋습니다. Transparent image 단일 이미지 또는 색상만 0.0과 1.0 사이의 불투명도로 합성해야 하는 경우 불투명도 위젯 없이 직접 사용하는 것이 훨씬 빠릅니다. 불투명도가 위젯 그룹에 불투명도를 적용할 수 있으므로 비용이 많이 드는 오프스크린 버퍼가 사용되기 때문에 불투명도를 사용하여 이미지 또는 색상을 직접 그리는 것이 그 위에 불투명도를 사용하는 것보다 빠릅니다. 콘텐츠를 오프스크린 버퍼로 그리면 렌더링 대상 전환이 트리거될 수도 있으며 이러한 전환은 구형 GPU에서 특히 느립니다. 예를 들어 Container(color: Color.fromRGBO(255, 0, 0, 0.5))는 Opacity(opacity

Naver Blog

[Flutter] AnimatedBuilder 성능 최적화

AnimatedBuilder 성능 최적화 빌더 함수에 애니메이션에 의존하지 않는 하위 트리가 포함된 경우 애니메이션 틱마다 다시 빌드하는 것보다 해당 하위 트리를 한 번 빌드하는 것이 더 효율적입니다. 사전 빌드된 하위 트리를 하위 매개변수로 전달하면 AnimatedBuilder는 빌드에 통합할 수 있도록 빌더 함수로 다시 전달합니다. 이 미리 빌드된 자식을 사용하는 것은 전적으로 선택 사항이지만 경우에 따라 성능을 크게 향상시킬 수 있으므로 좋은 방법입니다. 아래의 코드는 녹색 사각형을 계속 회전시키는 위젯을 정의합니다. AnimatedBuilder로 빌드되었으며 매번 컨테이너를 다시 빌드할 필요가 없도록 하위 기능을 사용합니다. Performance optimizations class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({super.key}); @override State<MyStatefulWidge

Naver Blog

[AWS] EC2 부팅 시간 벤치마킹

부팅 시간 비교 AMI Id (us-east-1) AMI Name running to port closed closed to open total ami-0f9ebbb6ab174bc24 Clear Linux 34640 1.23 0.00 1.23 ami-07d02ee1eeb0c996c Debian 10 6.26 4.09 10.35 ami-0c2b8ca1dad447f8a Amazon Linux 2 9.55 1.54 11.09 ami-09e67e426f25ce0d7 Ubuntu Server 20.04 LTS 7.39 4.65 12.04 ami-0747bdcabd34c712a Ubuntu Server 18.04 LTS 10.64 4.30 14.94 ami-03a454637e4aa453d Red Hat Enterprise Linux 8 (20210825) 13.16 2.11 15.27 ami-0ee02acd56a52998e Ubuntu Server 16.04 LTS 12.76 5.42 18.1

Naver Blog

[NextJS] Turborepo 모노레포 적용하기

모노레포 개념이란? 모노레포 개념을 모른다면 아래 링크에서 확인하자 모던 프론트엔드 프로젝트 구성 기법 - 모노레포 개념 편 새로운 프로젝트를 설계하거나 기존 프로젝트가 성장하면서 규모가 커질 때 우리는 효율적인 프로젝트 구조를 고민합니다. 핀포인트 프로젝트의 프론트엔드 구조를 개선하면서 검토하고 조사했.. d2.naver.com Turborepo란? 아래의 링크에서 자세하게 설명되어 있다 Turborepo로 모노레포 개발 경험 향상하기 2022-LINE-engineering-site engineering.linecorp.com 패키지 추가 Turborepo 패키지 추가 yarn add turbo --dev turbo.json { "pipeline": { "build": { "outputs": [".next/**"] }, "lint": { "outputs": [] }, "dev": { "cache": false } } } eslintrc.js "turbo" 추가 extends: [

Naver Blog

[Flutter] IOS Permission 권한 팝업이 안뜰때 체크

Info.plist 예로들어 카메라 권한인 경우 <key>NSCameraUsageDescription</key> <string>나의 프로필 이미지를 업로드 하기 위하여 접근 허용이 필요합니다</string> Podfile 이전에는 "Info.plist" 파일에 권한 항목만 추가해주면 됬으나, 정책변경으로 인해 "Podfile"에서도 어떤 권한을 받는지 활성화 해줘야 한다. Xcode에서 권한을 추가한거라면 자동으로 "1, true"로 변경해주지만, 파일로 수정한 경우에는 별도로 주석해제해 주면 된다. # permission_handler 구성 시작 target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', ## dart: PermissionGroup.calendar # 'PERMISSION_EVENTS=1', ## dart: P

Naver Blog

[Python] Ubuntu 20.04 파이썬 3.11 버젼 설치 및 기본 설정하기

패키지 설치 sudo apt install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.11 관련 패키지 설치 sudo apt install python3.11-dev python3.11-venv python3.11-distutils python3.11-gdbm python3.11-tk python3.11-lib2to3 기본 버전 설정 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 2 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 버전 확인 python3.11 --version 가상환경 접근 및 pip 업그레이드 가상환경 접근 python3.11

Naver Blog

[Flutter] Lists 조건문, 반복문

조건문 var booleanTemp = true; var numbers = [1, 2, 3, 4, if (booleanTemp) 5]; print(numbers) => [1, 2, 3, 4, 5] 반복문 var newfriends = ['lewis', 'ralph']; var currentFriends = ['darren', for (var friend in newfriends) '$friend']; print(currentFriends ) => ['darren', 'lewis', 'ralph']

Naver Blog

[Flutter] 라운드 형태의 BottomNavigation

Example BottomNavigation Scaffold( backgroundColor: Colors.white, body: SafeArea( child: IndexedStack( index: controller.tabIndex, children: [] ), ), bottomNavigationBar: Container( margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), height: 70.h, decoration: BoxDecoration( color: Colors.white, boxShadow: [ BoxShadow( color: Colors.black.withOpacity(.15), blurRadius: 30, offset: const Offset(0, 10), ) ], borderRadius: BorderRadius.circular(23.r), ), child: Row( mainAxisAlignment: M

Naver Blog

[MySQL] Ubuntu 20.04 Mysql(MariaDB) 10.6 최신 설치하기

MariaDB GPG 키 가져오기 및 MariaDB APT 저장소 추가 sudo apt install software-properties-common -y curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup sudo bash mariadb_repo_setup --mariadb-server-version=10.6 MariaDB 10.6 설치 sudo apt update sudo apt install mariadb-server mariadb-client # 버전 확인 mariadb --version 초기 설정 sudo mariadb-secure-installation # 만약, 접근이 안된다면 MariaDB 실행후 진행 sudo service mariadb start # 시스템 자동 실행 sudo systemctl enable mariadb 완전삭제 sudo apt purge mariadb-server sudo r

Naver Blog

$.each() 반복문 사용시 &quot;undefined&quot; 오류 잡기

API JSON 불러올때에 $.each(), for 사용으로 반복문으로 진행시 해당 값이 없을 경우 undefined 오류를 나타내는데, 해당 값이 없어도 진행되기 위한 방법 입니다. 불러오는 코드에 하단 try-catch 부분을 입력해주세요. 당연히 없는 값을 입력해주셔야 문제를 잡을 수 있습니다. <예시1> $.getJSON("https://min-api.cryptocompare.com/data/top/totalvolfull?limit=100&page=0&tsym=KRW", function(data) { var newHTML = []; $.each(data.Data, function(index, value) { var error_check = value.RAW.KRW; // << 반복문을 통해 출력하지만, 만약 불러오는 JSON 값에서 이 값이 "null"이 아닌 아예 없을 경우 오류가 생깁니다. newHTML.push('값 표시'); }); $("#tbody_list").htm

Naver Blog

구글 크롬 단축키 미작동(ctrl shift c) 해결법

어느날 갑자기 단축키가 작동이 안되어 확인해보니 소프트웨어에서 중복되고 있어서 단축키를 변경하여 해결한 방법을 알려드립니다. 아무래도 다른 단축키도 비슷할 겁니다. 라데온 사용자 - 라데온 소프트웨어 실행 후 오른쪽 상단 '설정' 메뉴에서 '단축키' 이동하여 (CTRL + SHIFT + C) 단축키를 'DELETE' 키를 통해서 'NONE' 상태로 변경 - 라데온 소프트웨어에서 녹화 기능에서 단축키가 설정되어 있는 경우 작동이 안될 수도 있습니다. 그외 - 설치된 소프트웨어마다 단축키가 설정되어 있는지 확인하여 중복되어 있는 단축키를 없애 시켜주시면 됩니다.

Naver Blog

[CentOS7] APM 웹서버 구축 방법

CentOS 최신 버젼 설치 yum -y update (CentOS7을 최신버전으로 업데이트) yum install libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel (APM(아파치 + PHP + MYSQL[MARIADB])을 정상 구동하기 위하여 관련 의존성 패키지를 설치) rpm -qa libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel (의존성 패키지 설치 후 확인) 의존성 패키지 리스트 확인 ※ 사진과 리스트 및 버전은 달라질 수 있음 계정 생성 useradd 계정명 passwd 계정명 (후 비밀번호 설정) userdel 계정명 (계정 삭제) userdel -r 계정명 (홈디렉토리도 함께 삭제) 리눅스CentOS7 - 사용자 계정 생성 삭제와 비밀번호 설정 #사용자 계정 생성 사용형식 useradd 계정명 # 사용자 계정

Naver Blog

[CentOS7] nodeJS(Express) 웹서버 구축 및 최신 버젼 업데이트 (수정)

Node.JS 설치하기 # 먼저, "Yum"에 있는 기본 6.X 버젼 설치하기 yum install -y nodejs # 버젼 확인 node -v npm -v ※ "npm"은 자동으로 같이 설치됨 버젼 확인 Node.JS 최신 버젼으로 업데이트 Node.js Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org # "NPM" 캐시 초기화 npm cache clean -f # "Node.JS" 다운로드 npm install -g n # "Node.JS" 설치 n 6.11.0 (nodejs 특정 버젼 설치 n 6.x.x / n 7.x.x 버젼 입력) n stable (nodejs 최신 안정화 버젼 설치) n latest (nodejs 최신 버젼 설치) # 버젼 확인 node -v npm -v # 이전 버젼과 똑같이 나온다면 재부팅 후 재확인 shutdown -r now Express 설치 #

Naver Blog

[Vanilla] JavaScript(자바스크립트) 가비지 컬렉션(메모리 최적화)

참고 링크 https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management 자바스크립트의 메모리관리 메모리 생존주기는 프로그래밍 언어와 관계없이 비슷하다. developer.mozilla.org https://velog.io/@pa324/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0 자바스크립트 - 가비지 컬렉터 가지비 컬렉터 (GC) - c와 같은 언어에는 malloc()나 free()와 같은 저수준의 메모리 관리를 위한 함수가 존재한다. 개발자들은 명시적으로 운영체제로부터 메모리를 할당 받거나 돌려주는 작업을 해야한다. - 자바스크릅트에서는 객체나 문자열등이 생겨날 때 메모리가 할당되며 더 이상 사용되지 않을때는 자동으로 메모리가 반환되는데, 이 과정을 가비... ve

Naver Blog

[Docker] 사용방법

Docker란 무엇인가요? https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html 초보를 위한 도커 안내서 - 도커란 무엇인가? 도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이미지에 대해 알아보고 왜 이렇게 도커가 인기 인지 하나하나 살펴보겠습니다. subicura.com https://www.youtube.com/watch?v=tPjpcsgxgWc Docker 회원가입 https://www.docker.com/get-started Get Started with Docker | Docker Learn about the complete container solution provided by Docker. Find information for developers, IT operations

Naver Blog

웹 최적화 팁

웹 최적화 팁 기본적으로 웹을 표준에 맞추어 최적화 하고 여러 구조 및 개선을 통해서 퍼포먼스를 향상 시키는 방법 입니다. 일반적인 웹사이트는 이 방법을 통해서 최소한의 로딩 속도 및 서비스 품질을 개선할 수 있기 때문에 사용자에게서 좋은 인식을 얻을 수 있습니다. ASYNC, DEFER https://webclub.tistory.com/630 브라우저의 역할과 스크립트의 로드 시점 브라우저는 어떻게 동작하는가? 사용자가 연결된 주소의 서버에 데이터 요청을 하게 되면 서버로부터 데이터를 다운로드 받은 것을 가지고 웹브라우저가 그것을 해석해서 사용자가 보는 UI 를 완성해 주게 됩니다... webclub.tistory.com

Naver Blog

javascript 문자열 포함 (특정 문자 찾기)

명령어 indexOf includes (ES6) search lodash match 정규식 var stringVal = "Hello world", exp = /hell/; exp.test(stringVal ); 퍼포먼스 크롬 (V~) 파이어폭스 (V~) 참고 링크 [자바스크립트]문자열에서 문자 포함 여부 [Javascript]문자열에서 문자 찾는 몇가지 방법 문자를 찾는 방법 몇가지 1. indexOf var stringVal = "javascript", substring = "java"; stringVal.indexOf(substring) !== -1; javascript의 기본객체인 string.. enzycut.tistory.com

Naver Blog

[EXPO] 리엑트 네이티브 구축 및 EXPO 연동 앱 개발 환경 만들기

CentOS7 nodeJS(Express) 웹서버 구축 및 최신 버젼 업데이트 CentOS7 nodeJS(Express) 웹서버 구축 및 최신 버젼 업데이트 CentOS 업데이트 및 기본 nodeJS 설치- CentOS7을 최신버전으로 업데이트 (조금 시간 소요)- epe... blog.naver.com 이전 게시글에서 nodeJS 설치까지만 진행하시면 되십니다 EXPO 회원가입 Expo Expo is an open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React. expo.io EXPO를 사용하기 위해서는 우선 회원가입을 해주세요. 매우 간단하기 때문에 설명은 참조하지 않습니다. EXPO 모바일 앱 설치 EXPO 어플리케이션(앱) 핸드폰에서 구글플레이스토어 혹은 IOS의 경우 마켓을 통해서 EXPO를 설치해주세요. "EXPO", "EXPO PR

Naver Blog

[Windows10] 우분투(Ubuntu) 설치 및 환경 만들기(수정)

설치 전 유의사항 "윈도우 10 프로 버젼 이상"에서만 설치 및 사용이 가능합니다. "기본 용량은 약 450MB 정도" 이지만, 설치 패키지에 따라서 용량이 늘어 날 수 있습니다. Windows 기능 켜기/끄기 경로1 : 제어판 > 프로그램 및 기능 > 왼쪽 "Windows 기능 켜기/끄기" > Linux용 Windows 하위 시스템 체크 경로2 : 설정 > 상단 검색란 "Windows 기능 켜기/끄기" > Linux용 Windows 하위 시스템 체크 ※ 위 설정을 체크 하신 후 재부팅을 꼭 해주시기 바랍니다. Linux용 Windows 하위 시스템 체크 Microsoft Store에서 우분투 설치 필요에 따라서 버젼이 있는것으로 진행하셔도 되며, 일반적인 상황에서는 맨왼쪽 "Ubuntu"를 다운로드 해주시면 됩니다. 우분투 실행 후 초기설정은 다소 몇분 소요 될 수 있습니다. 초기설정이 완료되면, 계정과 비밀번호를 입력해주시면 됩니다. 마이크로소프트 스토어에서 Ubuntu 검색 우

Naver Blog

deflate_module

<IfModule deflate_module> AddOutputFilterByType \ DEFLATE \ application/javascript \ text/css \ text/html \ text/javascript \ text/plain \ text/xml </IfModule> GZIP 압축 확인 사이트 HTTP Compression Test / WhatsMyIP.org Tweet Home / HTTP Compression URL Compression Test This tool checks your server to see if it is sending out compressed data. It checks for compression via mod_gzip, mod_deflate, or any server-side language that does content compression. Enter the address of a specific page or file to ch

Naver Blog

[코로나] 코로나 바이러스 맵, 알리미

코로나 바이러스 관련 맵, 알리미 웹 사이트 입니다. 현재 경계지수, 확진자, 완치자, 검사자와 확진자 이동경로 등 쉽게 확인이 가능합니다. https://www.corona-virus.co.kr/ https://www.corona-virus.co.kr/

Naver Blog

[EXPO] 리엑트 네이티브 웹뷰 만들기

리엑트 네이티브 서버 구축 및 EXPO 연동 앱 개발 환경 만들기 CentOS7 리엑트 네이티브 서버 구축 및 EXPO 연동 앱 개발 환경 만들기 CentOS 업데이트 및 기본 nodeJS 설치기존 nodeJS 서버를 구축하는 과정까지는 동일합니다nodeJ... blog.naver.com 리엑트 네이티브 웹뷰 Import 하기 npm install --save react-native-webview or react-native link react-native-webview EXPO로 만든 프로젝트 디렉토리로 가서 위 명령어를 입력해주세요. App.js 파일 코드 수정 import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; export default function App() { return ( <View style={styles.container}> <Text>Open up App.js to s

Naver Blog

[CentOS7] phpmyadmin 로그인시 URL 뒤에 80 포트 없애기(HTTP)

발생되는 원인? 저의 경우에는 웹브릭 이라는 곳을 통해서 HTTPS(443) 통신을 하고 있습니다. 즉, 보안인증서 없이 HTTPS를 사용중입니다. 웹브릭을 통해서 DNS를 연결하게 되면 웹브릭에서 인증서가 준비된 곳으로 리다이렉팅 식으로 하지 않을까 싶습니다. 자세한 기술적 내용은 모르겠습니다. 아무튼 저의 경우는 이렇게 진행하다 보니 phpmyadmin에서는 아파치 및 인증서 관련 셋팅이 된게 없다보니 로그인시 URL 뒤에 :80 포트가 붙게 되는것 입니다. 만약 현재 서버에 인증서가 없지만 저와 비슷한 방법으로 HTTPS를 이용하고 있다면 아래와 같은 방법으로 수정해주시면 간단하게 해결됩니다. Config.class.php 파일 수정 파일 위치 찾기 1. type ifconfig EX) ifconfig is /sbin/ifconfig 2. which ifconfig EX) /sbin/ifconfig 3. whereis ifconfig EX) ifconfig: /sbin/ifco

Naver Blog

[코로나] 코로나 알림 앱 서비스 소개

코로나 알림 어플은 리엑트 네이티브 웹뷰로 만든 웹사이트 입니다. 코로나 바이러스에 대한 동향과 확진자 이동경로 최근에는 31번째 확진자가 발생되었습니다. 해당 사이트는 자동으로 크롤링 하여 데이터를 선별하여 저장합니다. 곧 API 서비스도 제공될 예정입니다. API 문서는 간단한 사이트 등록으로 호출 할 수 있게 할 예정입니다. 어플의 경우 아직 버그 및 수정할 내역이 많습니다만, 기본적인 정보는 얻을 수 있습니다. 관련 업데이트는 점차 진행할 예정입니다. 많은 이용부탁드립니다. 웹사이트 https://www.corona-virus.co.kr/ 어플(안드로이드) https://play.google.com/store/apps/details?id=com.swit.coronanotify 코로나 알림

Naver Blog

[EXPO] 리엑트 네이티브 웹뷰 상태표시줄(상태바) 높이 자동으로 설정하기

리엑트 네이티브 웹뷰 만들기 CentOS7 리엑트 네이티브 웹뷰 만들기 CentOS7 리엑트 네이티브 서버 구축 및 EXPO 연동 앱 개발 환경 만들기리엑트 네이티브 웹뷰 Impor... blog.naver.com 리엑트 네이티브 웹뷰 Import 하기 npm install --save react-native-status-bar-height ※ 해당 프로젝트 디렉토리로 이동 후 설치 import React from 'react'; import { WebView } from 'react-native-webview'; export default function App() { return ( <WebView source={{uri: 'https://www.corona-virus.co.kr'}} style={{marginTop: 20}} /> ); } 이전 코드 import React from 'react'; import { WebView } from 'react-native-webvie

Naver Blog

[EXPO] 리엑트 네이티브 플레이 스토어 앱(어플) 최적화(APK 파일 용량 줄이기)

앱 APK 파일 용량 줄이는 빌드 expo build:android --type app-bundle ※ 빌드시에 뒤에 타입과 앱번들을 입력해주시면 됩니다.

Naver Blog

[EXPO] 리엑트 네이티브 (Your project must have an Android package set in app.jsonSee) 오류

App.json 파일에서 아래 항목 추가 "ios": { "bundleIdentifier": "com.yourcompany.yourappname" }, "android": { "package": "com.yourcompany.yourappname" } ※ 안드로이드, IOS 둘중 해당하는것만 입력해도 됩니다.

Naver Blog

[EXPO] 리엑트 네이티브 (이미 버전 코드가 1인 APK 또는 Android App Bundle이 있으므로 다른 버전 코드를 사용해야 합니다.)

업로드 실패 App.json 안드로이드 버전코드 추가 "android": { "package": "~~~", "versionCode": 2 } ※ "versionCode": 2 << 해당 코드를 추가해주시고, 플레이 콘솔에서 업로드시 발생하는 버전코드보다 높게 설정해주시면 됩니다. ※ 만약, 플레이 콘솔에서 APK 업데이트를 한다면 이전에 입력했던 버전코드 보다 높게 설정하면 됩니다. 버젼코드 변경 후 업로드 버젼 코드 수정후 업로드가 가능해집니다.

Naver Blog

[Vanilla] JavaScript(자바스크립트) Select 동적으로 추가, 삭제, 선택(옵션 선택) 하기

HTML <select id="abcde"> <option value="사과">사과</option> <option value="딸기">딸기</option> <option value="고추">고추</option> </select> 가져오기 JAVASCRIPT const select = document.getElementById('abcde'); const value = select.options[select.selectedIndex].value; 추가하기 JAVASCRIPT const select = document.getElementById('abcde'); const span = document.createElement('option'); span.setAttribute('value', '불닭볶음면'); // 만든 엘리먼트에 벨류값을 넣어줌 span.textContent = '불닭볶음면'; // 만든 엘리먼트에 텍스트 값을 넣어줌 select.appendChild(span); //

Naver Blog

[EXPO] 리엑트 네이티브 (EXPO_DEBUG=true) 오류

export EXPO_DEBUG=true ※ 위 명령 입력 후 재시도

Naver Blog

[Map] 카카오맵 API 사용후기 및 최적화

카카오맵 라이브러리 사용후기 1. 최적화 첫번째로 최적화는 상당히 별로다라는 느낌이 있습니다. 네이버지도 라이브러리와 비교했을시에 웹 로드시 지연이 발생한다는 점 입니다. 지연문제 때문에 최적화에 상당히 시간이 소요되었고, 그 마저도 만족하지 못하는 부분 입니다. ※ 네이버 지도의 경우에는 로드시 지연되는 사항은 없었습니다. 하지만 검색 기능이 이제 사업자 회원에게만 제공된다고 하니 고민되는 부분입니다. 로드 지연 또한, 맵을 불러오면서 발생되는 이미지 파일들의 캐시문제 입니다. 이미지를 불러오는 과정도 네이버 지도에 비해서는 속도가 더딥니다. 자체 서버에서 캐시를 지정해도 몇개의 이미지를 제외하고는 캐시가 저장되지 않습니다. 이미지 파일 로드 2. 커스텀 카카오맵의 경우 지도에 표시되는 마커 부분을 포함한 여러 부분이 제공된 솔루션만 이용이 가능합니다. 즉, 마커를 HTML 태그로 CSS로 디자인 할 수 없습니다. 그래서 개발할때에 이미지 파일을 수정해야하는 부분이 발생되어 커

Naver Blog

[EXPO] 리엑트 네이티브 WebView(웹뷰) 문서

WebView WebView - Expo Documentation Hey, friend! We are co-hosting a conference with Software Mansion . Learn more here . WebView WebView renders web content in a native view. import React , { Component } from 'react' ; import { WebView } from 'react-native' ; class MyWeb extends Component { render ( ) { return ( < WebView sou... docs.expo.io source WebView에서 정적 HTML 또는 URI (선택적 헤더 포함)를로드합니다. 정적 HTML은 originWhitelist 를 ["*"] 로 설정해야합니다. source 전달 된 객체는 다음 모양 중 하나를 가질 수 있습니다. 로드 uri uri (string)

Naver Blog

[Charts] Javascript(자바스크립트) 차트 라이브러리 추천

D3.js Gallery An Observable notebook by D3. observablehq.com JSCharting JavaScript Charts for Developers | JSCharting < > Financial Summary Number of shops Explore JSCharting Gallery A chart type for every need, on every device! Including bar and column charts, lines, splines, steplines, advanced combination types, finance, stock charts, pies, donuts, and scatter charts plus new types on every JSCharting release! F... jscharting.com Highcharts Interactive JavaScript charts for your webpage |

Naver Blog

[Charts] Javascript(자바스크립트) Echarts 차트 라이브러리 추천 및 퍼포먼스 부분

Echarts를 추천 Apache ECharts (incubating) Free to use Open sourced under Apache-2.0 License Rich Features Caters for all needs Active Community GitHub Stars Brand-new v4.0 Rendering ability for ten-million-level data Supports both SVG and Canvas rendering Seperates data and style configuring Accessibility supports Wechart and Powerpoint sup... www.echartsjs.com Ehcarts를 추천하는 이유는 다른 차트에 비해서 모자란 부분이 전혀 없고, 퍼포먼스 부분에서도 우수 합니다. Echarts는 아파치 재단에서 지원받는것 같고, 중국에서 만든 차트 라이브러리 입니다. Echarts를 사용하기전에 여러 차트 라이브

Naver Blog

[CentOS7] PHP 최신(특정)버젼 설치하기 (수정)

기존 PHP 제거 # PHP 관련설치 목록 확인 yum list installed | grep php # PHP 관련 제거 yum remove php-* yum remove php-common mod_php php-cli PHP 최신 및 버젼별 설치 # 레포 설치 및 PHP 최신 버젼 다운로드 yum install -y epel-release yum-utils yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm ----- # PHP 7.0 버전 yum-config-manager --enable remi-php70 # PHP 7.1 버전 yum-config-manager --enable remi-php71 # PHP 7.2 버전 yum-config-manager --enable remi-php72 # PHP 7.3 버전 yum-config-manager --enable remi-php73 # PHP 7.4 버전(

Naver Blog

[CentOS7] Let’s Encrypt 무료 인증서(SSL, HTTPS) 적용하기 (수정)

서트봇 설치하기 certbot # 우선 적용하기 앞서 Let's Encrypt 인증서를 발급받는 과정에서 발생하는 "Unable to find a virtual host listening on port 80..." 관련 오류를 포함한 내용입니다. ※ 먼저 도메인이 필요하며 DNS에 연동되어 있어야 합니다. # "epel" 저장소 설치 yum install -y epel-release # "yum-utils" 설치 yum install -y yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional # "certbot" 설치 yum install -y certbot python2-certbot-apache 아파치 설정 httpd.conf # "httpd.conf" 수정하기 vi /etc/httpd/conf/httpd.conf # 아래 "ServerName"과 "D

Naver Blog

[CentOS7] MySQL(MariaDB) 최신버젼 설치(수정)

레포지토리 설정 # 파일 생성 vi /etc/yum.repos.d/MariaDB.repo # 파일 생성 후 입력 저장 [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1 MariaDB 설치 yum -y install MariaDB systemctl start mariadb systemctl enable mariadb.service 계정 비번 변경 # MariaDB 초기 설정 "Set root password"에서 엔터 후 사용할 비밀번호 2번 입력 후 모두 엔터 입력해주시면 됩니다. 최초 계정에는 비밀번호가 없기 때문에 엔터 후 비밀번호 설정 하신 후 모두 엔터하시면 됩니다. sudo mysql_secure_installation ※ 위 MariaDB 서비스를 시작해야 오류가 발생되

Naver Blog

[CentOS7] phpMyAdmin 최신버젼 설치

phpMyAdmin 최신버젼 설치 yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum --enablerepo=remi install -y phpmyadmin ----- // PHP 버젼이 PHP 5.4 이거나 이하인 경우는 아래와 같이 yum --enablerepo=remi,remi-test install phpmyadmin phpMyAdmin.conf 파일 수정 vi /etc/httpd/conf.d/phpMyAdmin.conf // <RequireAny> 없이 추가해도 됨 <RequireAny> </RequireAny> 웹에서 phpMyAdmin 접속을 위한 설정 PHP와 버전이 맞지 않아 발생되는 오류 (Deprecation Notice in ./libraries/common.inc.php#261 Function get_magic_quotes_gpc() is

Naver Blog

[Docker] 도커 명령어 모음

도커 명령어 명령어 설명 sudo docker run -itd --name 이름 ubuntu:18.04 컨테이너 생성 후 접속 sudo docker container run --restart always -d -p 80:80 --name 이름 ubuntu:18.04 컨테이너 포트 80:80으로 설정 후 접속 sudo docker run -d -p 80:80 -itd --name 이름 ubuntu:18.04 컨테이너 포트 80:80으로 설정 후 접속 sudo docker create -it --rm --name 이름 ubuntu:18.04 컨테이너 생성만 sudo docker start 이름 컨테이너 실행 sudo docker stop 이름 컨테이너 중지 sudo docker exec -it 이름 bash 컨테이너 접속 sudo docker ps 구동중인 컨테이너 확인 sudo docker rm 이름 컨테이너 삭제 exit 컨테이너 나가기 sudo docker images 이미지 리스

Naver Blog

[CentOS7] 아파치(Apache) 최신버젼 설치 (수정)

구버젼 설치 기본 버젼 설치 후 업데이트 # 아파치 구버젼 설치 yum install -y httpd # 아파치 자동시작 등록 및 시작 systemctl enable httpd systemctl start httpd 버젼 확인 yum info httpd 아파치(Apache) 버젼 확인 최신 버젼 업데이트 # APM 설치시 관련 의존성 패키지를 설치 # APM(아파치 + PHP + MYSQL[MARIADB])을 정상 구동하기 위하여 관련 의존성 패키지를 설치 yum install -y libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel ----- # 아파치 최신 버젼을 다운로드 하기 위한 레포 설치 및 다운로드 yum install -y epel-release wget cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{V

Naver Blog

[CentOS7] H2, HTTP/2, mod_http2 적용방법

Apache 아파치(httpd) 버젼 체크 최소 2.4.17 버젼 이상 필요합니다. 2.4.17 버젼에서 지원되는 mod_http2를 사용합니다. // 아파치 버젼 체크 yum info httpd httpd.conf 설정 vi /etc/httpd/conf/httpd.conf // 맨 하단에 추가 LoadModule http2_module modules/mod_http2.so <IfModule http2_module> ProtocolsHonorOrder On Protocols h2 h2c http/1.1 </IfModule> // httpd 재시작 systemctl restart httpd 관리자 콘솔 프로토콜 추가 1. 크롬 관리자 콘솔(F12) 2. Network 3. All, XHR, JS, CSS 등 아무거나 탭 클릭 4. 리스트에 상단에 Name, Status 마우스 오른쪽 클릭 후 Protocol 체크 5. 리스트에 Protocol 목록이 추가되고 h2 확인 프로토콜 h2

Naver Blog

[CentOS7] SSL, HTTPS 인증서 테스트 A등급으로 올리기

https://xe1.xpressengine.com/tip/23021383 SSL의 정석 (아파치 & nginx) - 웹마스터 팁 - XpressEngine 서버에 SSL을 설치할 때 인증서는 어찌어찌 집어넣으면 되는데, 그 밖의 설정들에는 별로 신경쓰지 않는 경우가 대부분입니다. 실제 보안은 인증서가 아닌 그 밖의 설정들이 좌우하는데 말이죠. 그래서 몇십만 원짜리 최고급 인증서를 샀는데도 불구하고 SSL Server Test 사이트에서 검사를 해보면 몇천 원짜리 인증서를 사용하는 사이트보다 오히려 못한 경우가 수두룩해요. 이 글에서는 SSL 인증서를 구입하고 아파치와... xe1.xpressengine.com https://www.ssllabs.com/ssltest/ SSL Server Test (Powered by Qualys SSL Labs) Hostname: Do not show the results on the boards Recent Best A+ tickets.azbro

Naver Blog

[CentOS7] phpMyAdmin 보안(경로 변경, HTTP 인증) 설정하기

기본 경로 변경하기 vi /etc/httpd/conf.d/phpMyAdmin.conf // 아래 내용 주석처리 변경 전 > Alias /phpMyAdmin /usr/share/phpMyAdmin 변경 전 > Alias /phpmyadmin /usr/share/phpMyAdmin 변경 후 > #Alias /phpMyAdmin /usr/share/phpMyAdmin 변경 후 > #Alias /phpmyadmin /usr/share/phpMyAdmin // 아래 내용 추가 Alias /mariaDB /usr/share/phpMyAdmin ※ 위 처럼 설정시 도메인주소/phpmyadmin으로 접속이 안되며, 새로 설정한 도메인/mariaDB 이렇게 이동됩니다. HTTP 인증으로 보호 vi /etc/httpd/conf.d/phpMyAdmin.conf <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 AllowOverride All //

Naver Blog

[PHP] 임시게시글

http://www.qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=77 PHP에서 성능 개선을 위한 유용한 팁 > PHP Tip | 큐디 PHP Tip PHP에서 성능 개선을 위한 유용한 팁 페이지 정보 작성자 이즈 댓글 0건 조회 5,493회 작성일 07-05-18 18:08 본문 1. 최대한 쌍따옴표 대신에 일반따옴표를 쓴다. 쌍따옴표로 감산 문자열의 경우 PHP는 문자열 전체를 처리하게 됩니다. 따라서 처리되지 않고 그대로 유지될 혹은 나중에 처리되어야할 문자열의 경우 일반따옴표를 쓰는 것이 좋습니다. 예) $string = '문자열'; 문자열 중간에 변수가 삽입될 경우에도 최대한 일반 따옴표를 쓰는 것이 좋지요. 예) $string = '문자열1' . $str... www.qdata.co.kr

Naver Blog

[CentOS7] 특정 폴더 HTTP(아파치) 인증 & 보안 하기

.htaccess 활성화 vi /etc/httpd/conf/httpd.conf // 아래의 이미지에 있는 내용을 찾아서 All 으로 변경 변경 전 > AllowOverride None 변경 후 > AllowOverride All httpd.conf 활성화 .htaccess 생성 보안이 필요한 폴더에 생성합니다. 생성 후 아래와 같이 내용을 입력해주세요. AuthType Basic AuthName "Admin Login" AuthUserFile /etc/httpd/파일이름 Require valid-user // 상단의 파일이름은 /etc/httpd 폴더 안에 htpasswd을 설정할 파일을 저장할겁니다. // 즉 아파치에서 인식할 수 있는 유저 아이디와 비밀번호를 저장한 파일일 뿐 입니다. // 파일의 내용은 아래와 같이 되어 있습니다. (수정할 필요 없으니 참고만 하시면 됩니다.) // 설정한아이디:$apr1$ep26/암호화된 비밀번호. 계정을 담은 htpasswd 파일 생성 htp

Naver Blog

[CentOS7] Apache(httpd) 디렉토리 인덱싱, 목록화 방지(Options Indexes FollowSymlinks)

httpd.conf 수정 방법 vi /etc/httpd/conf/httpd.conf 변경 전 > Options Indexes FollowSymlinks 변경 후 > Options FollowSymlinks // Indexes 제거 systemctl restart httpd 버츄얼호스트(SSL)에 추가하는 다른 방법 vi /etc/httpd/conf.d/ssl.conf // 찾기 <VirtualHost _default_:443> OR <VirtualHost *:443> // <VirtualHost ~:443> 시작되는 부분 안쪽에다가 따로 만들어서 추가 <Directory : "홈디렉토리주소입력"> // EX /var/www Options FollowSymlinks </Directory> systemctl restart httpd 모두 안될경우 임시방편 vi /etc/httpd/conf/httpd.conf // 찾기 <IfModule dir_module> DirectoryIndex i

Naver Blog

[Ubuntu] 18.04 아파치 설치 및 셋팅하기

아파치 설치 apt update apt autoremove // 아파치 설치 2.4.29 apt install -y apache2 apt install -y ssl-cert apt install -y certbot // 아파치 모듈 활성 a2enmod rewrite a2enmod headers a2enmod ssl a2dismod -f autoindex // 아파치 환결설정 및 문법검사 apache2ctl -S // 아파치 실행 service apache2 restart // 아파치 버젼확인 apache2 -v 아파치 언어셋 변경 vi /etc/apache2/conf-available/charset.conf AddDefaultCharset UTF-8 // 앞 주석 제거 및 값을 UTF-8으로 변경 charset.conf 아파치 보안 설정 vi /etc/apache2/conf-available/security.conf security.conf // 센토스에서는 기본 설정이 httpd.

Naver Blog

[Ubuntu] 18.04 PHP 설치 및 모듈(의존성 패키지) 설치하기

PHP 설치 // PHP 7.2.24 버젼 설치 apt install php // 버젼 확인 php -v PHP 모듈(의존성 패키지) 설치 apt install php-mbstring php-gd php-curl php-xml php-bcmath php-oauth php-mysql composer PHP 보안 설정 vi /etc/apache2/mods-available/php7.2.conf // 하단 내용을 추가 <FilesMatch ".+\.ph(p3|p4|p5|p7|ar|t|tml)$"> Require all denied </FilesMatch> php7.2.conf vi /etc/php/7.2/apache2/php.ini // 편집기를 연후 /timezone 타이핑 하여 검색 // 주석제거 후 수정 date.timezone = Asia/Seoul // 위 설정 모두 진행 후 아파치 재시작 service apache2 restart ※ 타임존 설정 후 phpinfo에서 date

Naver Blog

[Ubuntu] 18.04 MariaDB(MySql) 설치 및 설정 하기

MariaDB(MySql) 설치 // 클라이언트, 서버 설치 apt install -y mysql-client mysql-server // 버젼 확인 mysql --version OR mysqladmin version MariaDB(MySql) 계정 및 초기 설정 sudo mysql_secure_installation MariaDB(MySql) 언어셋 설정 vi /etc/mysql/mysql.conf.d/override.cnf // 아래 내용 입력 후 저장 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci query_cache_type = ON query_cache_limit = 4M query_cache_size = 64M sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ----- // 문법 검사 (오류가 있는지 확인) mysqld --verbo

Naver Blog

[Ubuntu] 18.04 phpMyAdmin 설치 및 설정 하기

phpMyAdmin 설치 apt install phpmyadmin ※ 설치 진행시 아래 이미지를 참고해주세요. apache2 선택 NO 선택 ※ 만약 Yes 선택 할 경우 이미 MYSQL 설정까지 완료된 상태라서 오류가 발생됩니다. 그런 경우는 아래와 같이 제거 후 재설치 합니다. phpMyAdmin 웹 접속 설정 vi /etc/apache2/apache2.conf // 맨 하단에 추가 Include /etc/phpmyadmin/apache.conf // 아파치 재시작 service apache2 restart // 도메인 접속 도메인/phpmyadmin phpMyAdmin 삭제 apt purge phpmyadmin 참고링크 APM(Apache2+Php7.2+Mysql)설정 및 세팅(Ubuntu 18.04) 이번에는 서버를 운영하기 위한 설정을 준비 해보도록 하겠습니다. 서버를 위해 apche, php, mysql을 설치해야 합니다. 단, 저는 Ubuntu 18.04버전에 맞추어 설

Naver Blog

[Ubuntu] 18.04 MariaDB(MySql) 유저 생성 및 권한 설정하기 (수정)

계정 생성 # root 계정으로 로그인한 경우 mysql # 이외 계정으로 로그인한 경우 sudo su mysql -u root -p create user '아이디'@'%' identified by '비밀번호'; grant all privileges on *.* to '아이디'@'%'; ※ 비밀번호 생성이 안되는 경우 대문자 한개를 포함 모든 권한 부여 grant all privileges on 스키마.테이블 to '계정'@'localhost' identified by '비밀번호'; grant all privileges on 스키마.테이블 to '계정'@'%' identified by '비밀번호'; 특정 테이블 권한 부여 grant select on db스키마.* to `계정이름`@`localhost` identified by '비밀번호'; grant select on db스키마.* to `계정이름`@`%` identified by '비밀번호'; 참고 링크 phpMyAdmin roo

Naver Blog

[CentOS7] PHP Composer(컴포저) 설치하기

Composer(컴포저) 설치 yum install -y php-cli php-zip wget unzip php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" HASH="$(wget -q -O - https://composer.github.io/installer.sig)" php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" // 출력 확인 Installer verified php composer-setup.php --install-dir=/usr/local/bin --filename=composer // 출력 확인 All settings cor

Naver Blog

[CentOS7] PHP CodeIgniter4(코드이그나이터4) 프레임워크 설치하기

CodeIgniter4(코드이그나이터4) 설치를 위한 사전 조건 PHP 버전 7.2 이상이 필요하며, *intl* 확장 기능(Extension)이 설치되어 있어야 합니다. ----- 서버에 다음 PHP 확장 기능을 사용하도록 설정해야 합니다 php-json, php-mbstring, php-mysqlnd, php-xml CURLRequest를 사용하려면 libcurl이 설치되어 있어야 합니다. ----- 대부분의 웹 어플리케이션은 데이터베이스가 필요합니다. 현재 지원되는 데이터베이스는 다음과 같습니다. MySQL (5.1+) via the MySQLi driver PostgreSQL via the Postgre driver SQLite3 via the SQLite3 driver ----- CodeIgniter4용으로 일부 드라이버가 변환/재작성되지 않았습니다. 아래는 아직 완결되지 않은 항목입니다. MySQL (5.1+) via the pdo driver Oracle via the

Naver Blog

[PHP] include, include_once, require, require_once

include, include_once, require, require_once // 외부 PHP 파일을 특정 PHP파일 안으로 코드를 가져오는 부분 include include_once require require_once ※ _once가 붙은 경우 한번만 가져오며, 중복으로 입력하더라도 한번만 가져옵니다. 예제 include '/var/www/html/test.php'; include_once '/var/www/html/test.php'; require '/var/www/html/test.php'; require_once '/var/www/html/test.php'; OR include('/var/www/html/test.php'); include_once('/var/www/html/test.php'); require('/var/www/html/test.php'); require_once('/var/www/html/test.php'); 참고 링크 include와 namespace

Naver Blog

[PHP] Namespace

Namespace // 외부에서 파일을 가져왔는데 중복된 함수가 있는 경우 구분하기 위함 namespace language\en; // 두개의 파일을 인클루드 require_once 'greeting_ko.php'; require_once 'greeting_en.php'; // 인클루드한 파일 안에 동일한 함수가 있으며, 호출한 경우 echo welcome(); echo welcome(); // 아래와 같이 중복되기 때문에 에러를 발생 Fatal error: Cannot redeclare welcome() (previously declared in D:\BitNami\wampstack-5.4.12-0\apache2\htdocs\include\greeting_ko.php:3) in D:\BitNami\wampstack-5.4.12-0\apache2\htdocs\include\greeting_en.php on line 4 ----- // 인클루드한 각 파일안에 네임스페이스로 지정을 해주

Naver Blog

[PHP] Class 관련 부가기능

Class 생성 class MyFileObject { function isFile() { return is_file('data.txt'); } } $file = new MyFileObject(); $file -> isFile(); 참고 링크 : https://opentutorials.org/course/3018/15726 Class 부모, 자식 생성 // 부모 class SplFileObject { } // 자식(부모를 상속) class MyFileObject extends SplFileObject { function getContents() { } } 참고 링크 : https://opentutorials.org/course/3018/15726 construct class MyFileObject { // __construct function __construct($fname) { $this -> filename = $fname; } function isFile() { return i

Naver Blog

[MYSQL] Syntax (구문)

// 데이터베이스에서 데이터를 추출합니다. SELECT // 데이터베이스의 데이터를 업데이트합니다. UPDATE // 데이터베이스에서 데이터를 삭제합니다. DELETE // 데이터베이스에 새 데이터를 삽입합니다. INSERT INTO // 새 데이터베이스를 만듭니다. CREATE DATABASE // 데이터베이스를 수정합니다. ALTER DATABASE // 새 테이블을 만듭니다. CREATE TABLE // 테이블을 수정합니다. ALTER TABLE // 테이블을 삭제합니다. DROP TABLE // 인덱스를 생성합니다. (검색 키) CREATE INDEX // 색인을 삭제합니다. DROP INDEX 참고 링크 SQL Syntax SQL Syntax ❮ Previous Next ❯ Database Tables A database most often contains one or more tables. Each table is identified by a name (e.g. "Cust

Naver Blog

[MYSQL] SELECT (선택)

SELECT SELECT 문은 데이터베이스에서 데이터를 선택하는 데 사용됩니다. 반환되는 데이터는 결과 집합이라는 결과 테이블에 저장됩니다. SELECT * FROM 테이블; SELECT 컬럼1 FROM 테이블; SELECT 컬럼1, 컬럼2, ... FROM 테이블; 참고 링크 SQL SELECT Statement SQL SELECT Statement ❮ Previous Next ❯ The SQL SELECT Statement The SELECT statement is used to select data from a database. The data returned is stored in a result table, called the result-set. SELECT Syntax SELECT column1 , column2, ... FROM table_name ; Here, column1, column2, ... are the field n... www.w3schools.com

Naver Blog

[MYSQL] DISTINCT (중복제외 & 제거)

DISTINCT SELECT DISTINCT 문은 고유한(다른) 값만 반환하는 데 사용됩니다. 테이블 안에 있는 열에는 여러 개의 중복된 값이 포함되어 있는 경우가 많습니다. 때로는 서로 다른(분명한) 값만 나열하려고 할 수도 있습니다. // 중복된 값을 제외 SELECT DISTINCT 컬럼명 FROM 테이블; // 여러개의 컬럼명을 지정할 경우 SELECT DISTINCT 컬럼명1, 컬럼명2, ... FROM 테이블; // 총 개수를 확인할때에도 중복 데이터를 제외 SELECT COUNT(DISTINCT 컬럼명) FROM 테이블; 참고 링크 SQL SELECT DISTINCT Statement SQL SELECT DISTINCT Statement ❮ Previous Next ❯ The SQL SELECT DISTINCT Statement The SELECT DISTINCT statement is used to return only distinct (different) values

Naver Blog

[MYSQL] WHERE (조건) AND, OR, NOT

WHERE WHERE 절은 레코드를 필터링하는 데 사용됩니다. WHERE 절은 지정된 조건을 충족하는 레코드만 추출하는 데 사용됩니다. SELECT * FROM 테이블 WHERE 조건컬럼; SELECT 컬럼1 FROM 테이블 WHERE 조건컬럼; SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조건컬럼; SELECT COUNT(DISTINCT 컬럼명) FROM 테이블 WHERE 조건컬럼; AND // 행이 탐색 조건의 두 술부 모두를 충족해야 함 SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조건컬럼1 AND 조건컬럼2; SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조건컬럼1 AND 조건컬럼2 AND 조건컬럼3 ...; // 부정일때(포함하지 않아야 할때) NOT SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조건컬럼1 AND NOT 조건컬럼2; OR // 행이 탐색 조건의 두 술부 중 하나 또는 모두로 설정된

Naver Blog

[MYSQL] ORDER BY (오름차순, 내림차순 정렬)

ORDER BY ORDER BY 키워드는 결과 집합을 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. ORDER BY 키워드는 기본적으로 레코드를 오름차순으로 정렬합니다. 레코드를 내림차순으로 정렬하려면 DESC 키워드를 사용합니다. // "컬럼3", "컬럼4" 지정하여 특정 컬럼을 기준으로 오름차순, 내림차순으로 정렬 // 맨뒤 ASC|DESC 둘중 하나만 입력하면 된다 SELECT 컬럼1, 컬럼2, ... FROM 테이블 ORDER BY 컬럼3, 컬럼4 ... ASC|DESC; 예제 // 다음 SQL 문은 "고객" 테이블에서 "국가" 열별로 정렬된 모든 고객을 선택합니다. SELECT * FROM Customers ORDER BY Country; ----- // 다음 SQL 문은 "고객" 테이블에서 "국가" 열별로 정렬된 모든 고객을 선택합니다. SELECT * FROM Customers ORDER BY Country DESC; ----- // 다음 SQL 문은 "Custom

Naver Blog

[MYSQL] INSERT INTO (새 레코드, 삽입)

INSERT INTO INSERT INTO 문은 테이블에 새 레코드를 삽입하는 데 사용됩니다. // INSERT INTO 문을 두 가지 방법으로 작성할 수 있습니다. // 첫 번째 방법은 열 이름과 삽입할 값을 모두 지정합니다. INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ----- // 테이블의 모든 열에 대한 값을 추가하는 경우에는 SQL 조회에 열 이름을 지정할 필요가 없습니다. // 그러나 값의 순서가 표의 열과 동일한 순서로 되어 있는지 확인합니다. INSERT INTO 구문은 다음과 같습니다. INSERT INTO table_name VALUES (value1, value2, value3, ...); 예제 // 다음 SQL 문은 "고객" 테이블에 새 레코드를 삽입합니다. INSERT INTO Customers (CustomerName, ContactN

Naver Blog

[MYSQL] NULL, IS NULL (빈값, 비어있지 않은 값)

NULL NULL 값이 있는 필드는 값이 없는 필드입니다. 테이블의 필드가 선택 사항인 경우 이 필드에 값을 추가하지 않고 새 레코드를 삽입하거나 레코드를 업데이트할 수 있습니다. 그러면 필드가 NULL 값으로 저장됩니다. ※ 참고: NULL 값은 0 값 또는 공백을 포함하는 필드와 다릅니다. NULL 값이 있는 필드는 레코드 생성 중에 비어 있는 필드입니다! // =, < 또는 <>과 같은 비교 연산자를 사용하여 NULL 값을 테스트할 수 없습니다. // 대신 IS NULL 및 NULL 연산자를 사용해야 합니다. SELECT column_names FROM table_name WHERE column_name IS NULL; ----- SELECT column_names FROM table_name WHERE column_name IS NOT NULL; IS NULL IS NULL 연산자는 빈 값(NULL 값)을 테스트하는 데 사용됩니다. // 다음 SQL은 "주소" 필드에 NULL

Naver Blog

[MYSQL] Update (수정)

Update UPDATE 문은 테이블의 기존 레코드를 수정하는 데 사용됩니다. ※ 테이블의 레코드를 업데이트할 때 주의해야 합니다! UPDATE 문에서 WHERE 절을 확인합니다. WHERE 절은 업데이트할 레코드를 지정합니다. WHERE 절을 생략하면 테이블의 모든 레코드가 업데이트됩니다! UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; 예제 UPDATE Customers SET ContactName = 'Alfred Schmidt', City= 'Frankfurt' WHERE CustomerID = 1; Update Multiple 업데이트할 레코드의 수를 결정하는 것은 WHERE 절입니다. ※ 레코드를 업데이트할 때 주의해야 합니다. WHERE 절을 생략하면 모든 레코드가 업데이트됩니다! // 다음 SQL 문은 국가가 "멕시코"인 모든 레코드에 대해 연락처 이름을 "Juan"으로 업데이

Naver Blog

[MYSQL] Delete (삭제)

Delete DELETE 문은 테이블의 기존 레코드를 삭제하는 데 사용됩니다. ※ 테이블에서 레코드를 삭제할 때 주의해야 합니다! DELETE 문에서 WHERE 절을 확인합니다. WHERE 절은 삭제할 레코드를 지정합니다. WHERE 절을 생략하면 테이블의 모든 레코드가 삭제됩니다! DELETE FROM table_name WHERE condition; 예제 // 다음 SQL 문은 "고객" 테이블에서 고객 "Alfreds Futterkiste"를 삭제합니다. DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste'; Delete All Records // 테이블을 삭제하지 않고 테이블의 모든 행을 삭제할 수 있습니다. // 즉, 테이블 구조, 특성 및 인덱스는 그대로 유지됩니다. DELETE FROM table_name; 참고 링크 SQL DELETE Statement SQL DELETE Statement ❮ Previous N

Naver Blog

[MYSQL] LIMIT, SELECT TOP (반환 개수 지정)

LIMIT, SELECT TOP LIMIT 절은 반환할 레코드 수를 지정하는 데 사용됩니다. LIMIT 절은 수천 개의 레코드가 있는 큰 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있습니다. ※ 일부 데이터베이스 시스템은 SELECT TOP 절을 지원하지 않습니다. MySQL은 제한된 수의 레코드를 선택할 수 있는 LIMIT 절을 지원하며 Oracle은 ROWNUM을 사용합니다. SELECT column_name(s) FROM table_name WHERE condition LIMIT number; 예제 // 다음 SQL 문은 LIMIT 절(MySQL의 경우)을 사용한 동등한 예를 보여 줍니다. SELECT * FROM Customers LIMIT 3; SELECT * FROM Customers WHERE Country='Germany' LIMIT 3; 참고 링크 SQL TOP, LIMIT or ROWNUM Clause SQL TOP, LIMIT or

Naver Blog

[MYSQL] MIN(), MAX() (작은 값, 큰 값)

MIN, MAX MIN() 함수는 선택한 열의 가장 작은 값을 반환합니다. MAX() 함수는 선택한 열의 가장 큰 값을 반환합니다. // MIN() SELECT MIN(column_name) FROM table_name WHERE condition; ----- // MAX() SELECT MAX(column_name) FROM table_name WHERE condition; 예제 // MIN() // 다음 SQL 문에서 가장 저렴한 제품의 가격을 확인할 수 있습니다. SELECT MIN(Price) AS SmallestPrice FROM Products; ----- // MAX() // 다음 SQL 문은 가장 비싼 제품의 가격을 찾습니다. SELECT MAX(Price) AS LargestPrice FROM Products; 참고 링크 SQL MIN() and MAX() Functions SQL MIN() and MAX() Functions ❮ Previous Next ❯ The

Naver Blog

[MYSQL] COUNT(), AVG() and SUM() (총수, 평균 값, 총합계)

COUNT(), AVG() and SUM() COUNT() 함수는 지정된 기준과 일치하는 행 수를 반환합니다. AVG() 함수는 숫자 열의 평균 값을 반환합니다. SUM() 함수는 숫자 열의 총합계를 반환합니다. // COUNT() 일치하는 행수(총수) SELECT COUNT(column_name) FROM table_name WHERE condition; // AVG() 열의 평균 값 SELECT AVG(column_name) FROM table_name WHERE condition; // SUM() 열의 총합계 SELECT SUM(column_name) FROM table_name WHERE condition; 예제 // COUNT() // 다음 SQL 문은 제품 수(총수)를 찾습니다. SELECT COUNT(ProductID) FROM Products; // AVG() // 다음 SQL 문은 모든 제품의 평균 가격을 찾습니다. SELECT AVG(Price) FROM Produ

Naver Blog

[MYSQL] LIKE (패턴, 특정 값 찾기)

LIKE LIKE 연산자는 WHERE 절에서 열의 지정된 패턴을 검색하는 데 사용됩니다. LIKE 연산자와 함께 사용되는 와일드카드는 두 개입니다. % - 백분율 기호는 0, 1 또는 여러 문자를 나타냅니다. _ - 밑줄은 단일 문자를 나타냅니다. SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern; ※ AND 또는 OR 연산자를 사용하여 원하는 수의 조건을 결합할 수도 있습니다. LIKE 연산자 종류 설명 WHERE CustomerName LIKE 'a%' "a"로 시작하는 값을 찾습니다. WHERE CustomerName LIKE '%a' "a"로 끝나는 값을 찾습니다. WHERE CustomerName LIKE '%or%' 임의의 위치에 "또는"가 있는 값을 찾습니다. WHERE CustomerName LIKE '_r%' 두 번째 위치에 "r"이 있는 값을 찾습니다. WHERE CustomerName

Naver Blog

[MYSQL] Wildcards (LIKE 연산자와 함께 사용)

Wildcards 와일드카드 문자는 문자열에서 하나 이상의 문자를 대체하는 데 사용됩니다. 와일드카드 문자는 SQL LIKE 연산자와 함께 사용됩니다. LIKE 연산자는 WHERE 절에서 열의 지정된 패턴을 검색하는 데 사용됩니다. 심볼 설명 예제 % 0개 이상의 문자를 나타냅니다. bl% finds bl, black, blue, and blob _ 단일 문자를 나타냅니다. h_t finds hot, hat, and hit [] 괄호 안에 있는 모든 문자를 나타냅니다. h[oa]t finds hot and hat, but not hit ^ 괄호 안에 없는 문자를 나타냅니다. h[^oa]t finds hit, but not hot and hat - 문자 범위를 나타냅니다. c[a-b]t finds cat and cbt 모든 와일드카드(심볼)를 조합하여 사용할 수도 있습니다! 다음은 '%' 및 '_' 와일드카드를 사용하는 여러 LIKE 연산자를 보여 주는 몇 가지 예입니다. LIKE 설

Naver Blog

[MYSQL] IN (WHERE 특정, 여러 값 지정(포함) 및 조건)

IN IN 연산자를 사용하면 WHERE 절에 여러 값을 지정할 수 있습니다. IN 연산자는 여러 OR 조건에 대한 속기입니다. SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); OR SELECT column_name(s) FROM table_name WHERE column_name IN (SELECT STATEMENT); 예제 // 다음 SQL 문은 "독일", "프랑스" 또는 "영국"에 위치한 모든 고객을 선택합니다. SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK'); // 다음 SQL 문은 "독일", "프랑스" 또는 "영국"에 있지 않은 모든 고객을 선택합니다. SELECT * FROM Customers WHERE Country NOT IN ('Germany', 'France', 'UK'); // 다음 SQL 문은

Naver Blog

[MYSQL] BETWEEN (값, 문자, 날짜 범위)

BETWEEN BETWEEN 연산자는 지정된 범위 내에서 값을 선택합니다. 값은 숫자, 텍스트 또는 날짜일 수 있습니다. BETWEEN 연산자는 다음을 포함합니다. 시작 및 끝 값이 포함됩니다. SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; 예제 // 다음 SQL 문은 가격 BETWEEN 10 및 20의 모든 제품을 선택합니다. SELECT * FROM Products WHERE Price BETWEEN 10 AND 20; // 이전 예제의 범위를 벗어나는 제품을 표시하려면 다음을 사용합니다. SELECT * FROM Products WHERE Price NOT BETWEEN 10 AND 20; // 다음 SQL 문은 가격 BETWEEN 10 및 20의 모든 제품을 선택합니다. // 또한 범주가 있는 제품을 표시하지 않습니다. ID는 1,2 또는 3입니다. SELECT * FROM

Naver Blog

[MYSQL] Aliases(AS) (별칭, 임시 이름)

Aliases(AS) SQL 별칭은 테이블 또는 테이블의 열을 임시 이름으로 지정하는 데 사용됩니다. 별칭은 종종 열 이름을 더 읽기 쉽게 만드는 데 사용됩니다. 별칭은 쿼리 기간 동안만 존재합니다. Aliases(AS) 컬럼 SELECT column_name AS alias_name FROM table_name; ----- Aliases(AS) 테이블 SELECT column_name(s) FROM table_name AS alias_name; 예제 // 다음 SQL 문은 고객을 위한 별칭 2개를 생성합니다. // ID 열과 CustomerName 열에 대한 열은 다음과 같습니다. SELECT CustomerID AS ID, CustomerName AS Customer FROM Customers; // 다음 SQL 문은 CustomerName 열에 대한 별칭과 ContactName 열에 대한 별칭 두 개를 생성합니다. // 참고 : 별칭 이름에 공백이 포함된 경우 큰따옴표 또는 대

Naver Blog

[MYSQL] JOIN(INNER, LEFT, RIGHT, FULL) (결합)

JOIN JOIN 절은 두 개 이상의 테이블에서 행을 결합하는 데 사용되며, 두 테이블 사이의 관련 열을 기반으로 합니다. SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID; JOIN의 유형 (INNER) JOIN : 두 표에 일치하는 값이 있는 레코드를 반환합니다. LEFT(OUTER) JOIN : 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 일치하는 레코드를 반환합니다. RIGHT(OUTER) JOIN : 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 일치하는 레코드를 반환합니다. FULL(OUTER) JOIN : 왼쪽 또는 오른쪽 테이블에 일치 항목이 있을 때 모든 레코드를 반환합니다. 출처 : w3school INNER JOIN INNER JOIN 키워드는 두 테이블에서 일치하는 값

Naver Blog

[MYSQL] UNION (SELECT 문 결과 집합 결합)

UNION UNION 연산자는 두 개 이상의 SELECT 문 결과 집합을 결합하는 데 사용됩니다. UNION 내의 각 SELECT 문에는 동일한 열 수가 있어야 합니다. 열에도 유사한 데이터 유형이 있어야 합니다. 각 SELECT 문의 열도 순서가 같아야 합니다. SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; // UNION 연산자는 기본적으로 고유한 값만 선택합니다. // 중복 값을 허용하려면 UNION ALL을 사용합니다. // 참고 : 결과 집합의 열 이름은 일반적으로 UNION의 첫 번째 SELECT 문에서 열 이름과 동일합니다. SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; 예제 // 다음 SQL 문은 "고객" 표와 "공급업체" 표의 도시(별개의 값만)를 반환합니다. // 참고 : 일부 고객 또

Naver Blog

[MYSQL] GROUP BY (그룹화)

GROUP BY GROUP BY 문에서는 동일한 값을 가진 행을 "각 국가의 고객 수 찾기"와 같이 요약 행으로 그룹화합니다. GROUP BY 문을 집계 함수(COUNT, MAX, MIN, SUM, AVG)와 함께 사용하여 결과 집합을 하나 이상의 열로 그룹화하는 경우가 많습니다. SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s); 예제 // 다음 SQL 문에는 각 국가의 고객 수가 나열되어 있습니다. SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country; ----- // 다음 SQL 문은 각 국가의 고객 수를 높음에서 낮음으로 정렬하여 나열합니다. SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country ORDER BY COUN

Naver Blog

[MYSQL] HAVING (GROUP BY 조건문)

HAVING (GROUP BY) HAVING은 간단하게 생각해서 GROUP BY 결과에 조건을 추가할때에 사용할 수 있습니다. GROUP BY의 WHERE 절과 같다고 보면 되지만, GROUP BY 다음에 사용가능하며 WHERE 에는 사용이 불가합니다. 즉, GROUP BY 절에서 조건을 주려면 WHERE가 아닌, HAVING 절을 사용해야 합니다. SELECT column_name(s) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s); 예제 // 다음 SQL 문에는 각 국가의 고객 수가 나열되어 있습니다. 고객이 5명 이상인 국가만 포함합니다. SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country HAVING COUNT(CustomerID) > 5; ----- // 다음 SQL 문에는 각 국가의

Naver Blog

[MYSQL] EXISTS (하나 이상의 레코드, 값을 가지는 경우 TRUE, 레코드 값 유무 테스트)

EXISTS EXISTS 연산자는 하위 쿼리에 있는 모든 레코드의 존재를 테스트하는 데 사용됩니다. 하위 쿼리가 하나 이상의 레코드를 반환하는 경우 EXISTS 연산자는 true를 반환합니다. 즉, 두 테이블 간의 결과의 특정 값이 존재하는지에 대한 유무를 판단합니다. SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition); 예제 // 다음 SQL 문은 TRUE를 반환하고 제품 가격이 20 미만인 공급업체를 나열합니다. SELECT SupplierName FROM Suppliers WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.supplierID AND Price < 20); ----- // 다음 SQL 문은 TRUE를 반환하고 22에 해당하는 제품

Naver Blog

[MYSQL] ANY and ALL Operators (조건 충족)

ANY and ALL Operators 모든 연산자와 모든 연산자는 WHERE 또는 HVING 절과 함께 사용됩니다. IN : 조건절에서 사용하며 다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true를 반환합니다. ANY : 하위 쿼리 값 중 하나가 조건을 충족하면 모든 연산자는 true를 반환합니다. ALL :모든 하위 쿼리 값이 조건을 충족하면 ALL 연산자는 true를 반환합니다. ※ 아래 내용으로 이해가 어렵다면, 하단 참고 링크를 참조해주세요. // IN SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); ----- // ANY // 다수의 비교값 중 한개라도 만족하면 TRUE SELECT column_name(s) FROM table_name WHERE column_name operator ANY (SELECT column_name FROM table_name

Naver Blog

[MYSQL] SELECT INTO (테이블 복사)

SELECT INTO SELECT INTO 문은 한 테이블에서 새 테이블로 데이터를 복사합니다. // 모든 열을 새 테이블로 복사합니다. SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition; ----- // 일부 열만 새 테이블에 복사합니다. SELECT column1, column2, column3, ... INTO newtable [IN externaldb] FROM oldtable WHERE condition; ----- // 대상 테이블이 존재하는 경우 테이블 값 복사 INSERT INTO [대상 테이블명] SELECT * FROM [원본 테이블명] SELECT * INTO CustomersBackup2017 FROM Customers; ----- // 다음 SQL 문은 몇 개의 열만 새 테이블로 복사합니다. SELECT CustomerName, ContactName INTO CustomersBackup2

Naver Blog

[CentOS7] Vim 편리한 텍스트 편집기 설치하기(수정)

Vim 설치 yum -y install vim-enhanced 기본 명령어로 변경 # 아래 파일을 열어주세요. vi /etc/profile # 마지막 행에 추가해주세요. alias vi='vim' # 수정 내용을 반영합니다. source /etc/profile ※ 기본 vi를 입력하면 vim으로 실행 옵션 사용여부 설정 명령어 설명 set nocompatible vim의 독자적인 기능을 사용 (vi와 호환성을 고려하지 않는다) set encoding=utf-8 문자 코드를 지정 set fileencodings=utf-9,cp949 파일 인코딩을 지정 set fileformats=unix,dos 자동인식시키는 개행 코드 지정 set backup 백업설정 (반대 설정은 "set nobackup") set backupdir=~/backup 백업을 만들 디렉토리 지정 set history=50 검색기록 50개 남김 set ignorecase 검색시 대소 문자 구별하지 않음 set smart

Naver Blog

[CentOS7] PHP CodeIgniter4 리눅스 환경 오류 발생시 설정하기

오류 코드 Whoops! We seem to have hit a snag. Please try again later... CodeIgniter\Cache\Exceptions\CacheException Cache unable to write to {0} env 파일명 변경 다운받은 코드이그나이터4 디렉토리 안에 env 파일명을 .env로 변경 env 파일은 환경설정 부분이라고 보시면 됩니다. env 파일내용 변경 먼저, 개발 환경이기 때문에 production > development 으로 변경해주시면 됩니다. #CI_ENVIRONMENT = production CI_ENVIRONMENT = development ※ 앞 # 주석은 삭제하면 됩니다. writable 폴더 퍼미션(권한) 변경 writable 폴더에는 로그, 세션 등 여러가지 내용이 저장되는곳으로 권한설정을 변경해줍니다. chmod 777 -R 디렉토리루트/writable ※ writable 폴더 퍼미션 설정시 내부 디렉토

Naver Blog

[CentOS7] Sudo 명령어 사용하기

Sudo 파일 수정 및 그룹 권한 주기 // root 계정으로 로그인 su root // /etc/sudoers 파일 수정 visudo // #%wheel ALL=(ALL) ALL "#" 주석 제거 %wheel ALL=(ALL) ALL // 계정 그룹 확인 groups 계정이름 // wheel 그룹에 추가 usermod -aG wheel 계정이름 참고 링크 CentOS7 - 초기설정/보안설정 (2/10) 개요 CentOS7을 설치한 후 제가 개인적으로 초기에 설정해 두는 내용을 정리했습니다. ※ OS 설치는 이곳을 참고하세요 >> CentOS7 - OS설치하기 (1/10) sudo명령어 사용하기 # Security문제로 인해 통상 root계정.. puzji.tistory.com

Naver Blog

[CentOS7] SELinux 무효화 설정

SELinux 무효화 설정 SELinux는 redhat계열의 디스트리뷰션인 CentOS와 Fedora의 경우 기본 도입되어 있는 시스템입니다. 과거 리눅스는 소스코드가 공개되어 있기 때문에 보안에 취약하다는 평을 많이 받았다. 취약한 이유는 설치 이후 보안에 필요한 설정을 하지 않았기 때문이다. 이러한 취약점을 보안하기 위한 모델이 SELinux이다. 특정 서버의 경우 설치시 SELinux 는 enforcing 되어 있다. 하지만 관리자라면 다른 보안 설정으로 취약점을 보안 할 수 있기 때문에 SELinux를 비활성화 하여 사용한다. SELinux 3가지 상태 enforcing : 강제 permissive : 허용 disabled : 비활성화 ----- vi /etc/sysconfig/selinux // 아래와 같이 변경 SELINUX=disabled 참고 링크 [꿈머] LINUX - SELinux 란 ? & SELinux 설정하기 SELinux( security Enhanced L

Naver Blog

[CentOS7] yum-cron 패키지 자동 업데이트 설정하기 (수정)

설치하기 yum -y install yum-cron 설정하기 # 아래 파일을 열어 수정하기 vi /etc/yum/yum-cron.conf # 아래와 같이 변경 apply_updates = yes # 시작 및 자동시작 등록 systemctl start yum-cron systemctl enable yum-cron # 베이스, 개발 툴 패키지 군을 설치 yum -y groupinstall base "Development tools" 참고 링크 [꿈머] LINUX - SELinux 란 ? & SELinux 설정하기 SELinux( security Enhanced Linux ) 란? - 과거 리눅스는 소스코드가 공개되어 있기 때문에 보안에 ... m.blog.naver.com

Naver Blog

[CentOS7] SSH 포트, 보안 설정하기

SSH 포트 변경 vi /etc/ssh/sshd_config // 보안을 위해서 0 ~ 1023 이외 포트로 설정 #포트 변경 Port 22 EX) Port 1999 systemctl restart sshd.service ----- // firewall firewall-cmd --permanent --zone=public --add-port=1999/tcp firewall-cmd --reload ss -tnlp | grep ssh ※ 특정 클라우드 사이트의 경우 자체적으로 방화벽을 간편하게 설정 할 수 있습니다. ※ 자체적으로 방화벽을 지원하는 경우에는 방화벽 규칙도 변경하셔야 합니다. SSH 그외 설정 vi /etc/ssh/sshd_config // 인증없이 서버로 접속하는 rhost를 금지 IgnoreRhosts yes // root로 직접로그인 금지 PermitRootLogin no // wheel 그룹만 로그인가능 AllowGroups wheel // 특정 계정 또는 그룹에

Naver Blog

[CentOS7] IPv6 비활성화 하기

IPv6란 무엇인가? 국내에서 IPv6 주소를 접하기 어려운 이유 IPv4의 주소 고갈 문제, IPv6의 전환, IPv6와 멀티미디어 데이타의 증가 등의 얘기가 나온지 꽤 오래되었다. 사실 이미 IANA(Internet Assigned Numbers Authority)에서의 할당은 더 이상 없는 상태다. 관련 종사.. unipro.tistory.com vi /etc/sysctl.conf // 아래 내용 추가 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 sysctl -p OR echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf CentOS 7 ipv6 disable # vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 # s

Naver Blog

[CentOS7] SSH 보안 Fail2ban 로그인 무작위 시도 차단 (수정)

SSH Fail2ban 설치하기 yum install -y fail2ban # 기본 수정 파일 vi /etc/fail2ban/jail.conf # 기본 수정 파일의 경우 업데이트시 새로 덮어씌우기 때문에 새로 만들어서 관리합니다. vi /etc/fail2ban/jail.d/local.conf # 아래 내용을 추가합니다. [DEFAULT] # Common ignoreip = 127.0.0.1/8 bantime = 86400 findtime = 86400 maxretry = 3 banaction = firewallcmd-new # Mail destemail = 알림 수신메일 주소 sender = 알림 발신메일 주소 # Action action_mw = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois[na

Naver Blog

[CentOS7] passwd, group 파일 퍼미션(권한) 변경하기

passwd, group 파일 권한 변경하기 // 퍼미션(권한) 확인 ls -al /etc/passwd ls -al /etc/group // 퍼미션(권한) 변경 chmod 644 /etc/passwd chmod 644 /etc/group

Naver Blog

[CentOS7] password(비밀번호) 길이, 사용기간, 규칙 설정하기

password(비밀번호) 길이 제한, 최대 사용기간 설정하기 // password 최소 길이 제한 설정 vi /etc/security/pwquality.conf // 앞 # 주석 제거 minlen = 9 ----- // password 최대 사용기간 설정 vi /etc/login.defs // 99999 값을 원하는 일자 값으로 변경 PASS_MAX_DAYS 99999; ----- // password 문자, 숫자, 특수문자 규칙 설정 vi /etc/security/pwquality.conf // 1개 이상의 대문자 ucredit = -1 // 1개의 소문자 lcredit = -1 // 1개 이상의 숫자 dcredit = -1 // 1개 이상의 특수문자 ocredit = -1

Naver Blog

[CentOS7] 도스창 한글, 영어 변경하기

도스창 한글, 영어 변경하기 // 한글로 변경 LANG=ko_KR.UTF-8 // 영어로 변경 LANG=en_US.UTF-8

Naver Blog

[CentOS7] 리눅스 GUI 환경으로 접속하기(수정)

GUI 그래픽 툴 설치 yum groupinstall "GNOME Desktop" "Graphical Administration Tools" xrdp + tigervnc를 통한 리눅스 GUI 환경 접속 방법 # epel + xrdp + tigervnc 설치 yum install -y epel-release yum install -y xrdp tigervnc-server Firewalld 설치 # firewall 설치 yum install -y firewalld # firewall 시작 및 자동시작 등록 systemctl start firewalld systemctl enable firewalld Firewalld 방화벽 허용 # 3389/tcp 허용 firewall-cmd --permanent --zone=public --add-port=3389/tcp # firewalld 재부팅 firewall-cmd --reload # 포트 허용 리스트 보기 (3389/tcp 뜨는지 확인) fi

Naver Blog

[MYSQL] INSERT INTO SELECT (데이터를 복사하여 다른 테이블에 삽입)

INSERT INTO SELECT INSERT INTER TO SELECT 문은 한 테이블에서 데이터를 복사하여 다른 테이블에 삽입합니다. SELECT에 삽입하려면 소스 테이블과 대상 테이블의 데이터 유형이 일치해야 합니다. 대상 테이블의 기존 레코드는 영향을 받지 않습니다. INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition; 예제 // 다음 SQL 문은 "공급자"를 "사용자"로 복사합니다. (데이터로 채워지지 않은 열에는 NULL이 포함됩니다). INSERT INTO Customers (CustomerName, City, Country) SELECT SupplierName, City, Country FROM Suppliers; // 다음 SQL 문은 "공급자"를 "사용자"로 복사합니다. (모든 열 채우기) INSERT IN

Naver Blog

[MYSQL] CASE (첫번째 조건 충족, IF-THEN-ELSE)

CASE CASE 문은 조건을 통과하여 첫 번째 조건이 충족될 때(IF-THEN-ELSE 문처럼) 값을 반환합니다. 그래서 일단 조건이 참이면 읽기를 멈추고 결과를 돌려주게 됩니다. true 조건이 없으면 ETHER 절의 값을 반환합니다. 다른 부품이 없고 조건이 true가 없으면 NULL을 반환합니다. // WHEN과 THEN은 한쌍이어야 합니다. // WHEN과 THEN은 다수가 존재할 수 있습니다. // ELSE가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정할 수 있습니다. // ELSE가 존재하지 않고, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환합니다. CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; ----- CASE WHEN 조건 THEN '반환 값' WHEN 조건 THEN '반환 값' ELSE 'WHE

1 2 3 4 5 6 7 8