Mac에 Node.js 설치 & 확인하기 Mac에 Node.js 설치하기 1. node.js 다운로드 & 설치 Node.js 공식 홈페이지에서 LTS 다운 https://nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 설치를 해주자. 2. 버전 확인 node -v, npm -v을 통하여 각각 버전을 확인한다. 프로그래밍/서버, DBMS 2021.05.16
[책 요약] Effective SQL - SQL 코딩의 기술 요약 (Ch3. 데이터 모델 설계를 변경할 수 없는 경우) Effective SQL, SQL 코딩의 기술이라는 책을 읽고 요약한 것으로, 실제 책과 동일하지 않을 수 있음. 개인 정리용 3.18 설계 변경이 불가능한 경우, 뷰로 데이터를 간소화 일반적으로 뷰는 하나 이상의 테이블이나 다른 뷰에 SQL 쿼리를 미리 정의해 두고 테이블처럼 데이터를 볼 수 있는 객체다. 뷰 사용하는 이유로는 아래와 같다. (1) 특정 데이터에 집중 (2) 컬럼 이름 간소화 또는 명료화 (3) 여러 테이블에 있는 데이터를 한눈에 보기 (4) 데이터 조작 간소화 (5) 중요 데이터 보호 (6) 하위 호환성 제공 (7) 데이터 커스터마이징 (8) 요약 데이터 제공 (9) 데이터 가져오기와 내보내기 3.19 비관계형 데이터를 정보성 데이터로 변환할 때는 ETL을 사용하자 ETL은 추출(Ex.. 프로그래밍/서버, DBMS 2021.04.20
윈도우즈 터미널 유용 단축키 정리 윈도우즈 터미널 유용 단축키 정리 1) 창 관련 새 창 열기 ctrl + shift + n 새로운 창이 열림 현재 창 닫기 - 창 자체를 닫음 (ctrl+F4) 2) 탭 관련 새 탭 열기 ctrl + shift + d 새로운 탭이 열림 현재 탭 닫기 ctrl + shift + w 탭을 닫음 (탭이 1개이면 창 닫음) 탭 이동 ctrl + tab 탭 이동 미리 정의된 탭 열기 ctrl + shift + 0~9 설정에서 정의한 탭 열기 3) 폰트 크기 관련 글자 크기 크게 ctrl + +(더하기) 폰트 크기를 키움 글자 크기 작게 ctrl + -(빼기) 폰트 크기를 줄임 글자 크기 초기화 ctrl + 0 폰트 크기를 기본 값 4) 창 분할 관련 창 수직 분할 alt + shfit + +(더하기) 수직으로 창.. 프로그래밍/Git, IDE, 툴 관련 2021.04.19
[WSL] 간단하게 윈10에서 Linux 사용하기 [WSL] 윈도우 terminal 설치와 우분투 실행 1. 윈도우즈 10 WSL WSL : Windows Subsystem for Linux로, 윈도우즈 10에서 네이티브 형식으로 리눅스를 실행할 수 있도록 지원하고 있다. 윈도우즈 10의 버전에 따라 WSL의 설치 가능 여부가 결정되니, 최신 상태를 유지하도록 하자..? 2. 설치 과정 [1] powershell를 관리자 권한으로 실행하여 다음 명령어를 실행하여 주자. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatf.. 프로그래밍/Git, IDE, 툴 관련 2021.04.17
삼성 SW 역량테스트 B형/Pro 대비 - 최적화 기법 삼성 SW 역량테스트 B형/Pro 대비 - 최적화 기법 1. 들어가기 앞서 C, CPP 기준으로 -O 옵션이 없는 상태에서 기준으로 한다. Java 혹은 언어에 따라 다른 결과가 나올 수 있다. 2. 함수 인라이닝 빈번하게 호출 되는 경우, 함수를 인라인화 하는 것이 좋다. 이때 inline 키워드를 통한 컴파일 타임의 인라이닝은 최적화 옵션에 따라서 동작하게 되므로, macro를 통한 인라이닝을 하는 것을 의미한다. // inline 키워드 inline void MAX(int a, int b){ return a > b ? a : b }; // 전처리문 #define MAX(a, b) ((a) > (b) ? (a) : (b)) 문제에 따라서 TC당 한 두차례 호출되는 경우에는 인라이닝의 큰 효과를 보지 .. 프로그래밍/C, C++, Java, Python 2021.03.30
[책 요약] Effective SQL - SQL 코딩의 기술 요약 (Ch2. 인덱스 설계와 프로그램적 처리) Effective SQL, SQL 코딩의 기술이라는 책을 읽고 요약한 것으로, 실제 책과 동일하지 않을 수 있음. 개인 정리용 2.10 인덱스를 만들 때는 널을 고려하자. 일부 데이터 베이스는 빈 문자열일 때, 이를 NULL으로 치환한다. 만약 NULL 데이터가 많은 상황에서 NULL 포함하지 않도록 인덱스를 생성한다면, scan에 대한 비용을 획기적으로 줄일 수 있다. 또한 Mysql의 경우 NULL이라도 서로 다른 값으로 취급하기 때문에, 반드시 인덱스 설계시에 NULL을 어떻게 처리할 지에 대한 고민을 수행해야 한다. 2.11 인덱스와 데이터 스캔을 최소화하도록 인덱스를 신중히 만들자. -> 적절한 인덱스를 만들도록 데이터 분석하고, 생성된 인덱스가 잘 사용되는지 확인 스캔 방식으로는 크게 테이블 .. 프로그래밍/서버, DBMS 2021.03.10
URL 리디렉션용 서비스 (쿠팡 파트너스 주소 숨기기) URL 리디렉션용 서비스 (쿠팡 파트너스 주소 숨기기) 1. 주소를 숨겨야 한다. 모든 광고가 그렇듯, 주소로 필터링할 수 있다. 블로그나 카페등에서 이런 광고형 URL을 자주 사용하게 되는 경우, 저품질이나 검색이 안되는 현상을 자주 맞이하게 된다고 한다. 그래서 쿠팡 파트너스에서 만든 단축 URL을 다른 URL로 변경하여 블로그나, 카페 서비스에서 이를 알지 못하게 바꿔준다. 2. 어서와, 어려울까봐 준비했어. 일반 사용자가 도메인을 바꾸는 서비스를 만들거나 구축하기에는 너무 복잡하고 귀찮을 것 같아서, 준비했다. https://play.it-trip.com/short 3. 사용법 (1) 페이지에서 사용하는 방법 변경하고자 하는 쿠팡 주소를 입력하고, 발급 버튼을 누르면 된다. (2) API GET .. 프로그래밍/서버, DBMS 2021.03.04
[책 요약] Effective SQL - SQL 코딩의 기술 요약 (Ch1. 데이터 모델 설계) Effective SQL, SQL 코딩의 기술이라는 책을 읽고 요약한 것으로, 실제 책과 동일하지 않을 수 있음. 개인 정리용 1. 개요 1.1 SQL or SEQUEL?? RDMBS에서 구조화된 간단한 영어 문장을 이용하여 Database에 질의를 할 수 있는 언어로 SEQUEL(Structured English QUEry Language, 시퀄)이라고 부르며, SEQUEL이라는 명칭이 이미 사용되고 있어 법적인 이유로 SQL(에스큐엘, ess-cue-el)으로 변경했다. 표준화가 늘 그렇듯, 널리 사용되는 RDBMS의 SQL들의 최소 공통 분모만을 담고 있으며, RDBMS별로 어떤식으로 구현됐는지, 혹은 세부적인 동작 방법, 리터럴은 다를 수 있다. (Ex, record 고유 키로 사용되는 정수 컬럼.. 프로그래밍/서버, DBMS 2021.02.17
Modbus TCP 통신을 위한 프로토콜 파헤치기 & 예제 코드 Modbus TCP 통신을 위한 프로토콜 파헤치기 & 예제코드 링크 : Modbus TCP/IP 프로토콜 가이드 문서 1. Modbus 프로토콜 Modbus 프로토콜은 프로세스 자동화와 SCADA(Supervsory Control and Data Acquisition)에 사용되는 통신 프로토콜으로, 원하는 장치에 정보를 가져오거나 전달할 수 있다. 크게는 Modbus TCP/IP, Modbus RTU가 있고, 그외 Modbus ASCII나 PLUS같은 것이 존재한다. Modbus는 open protocol이라, 제품에서 지원하게 된다면 서로 다른 제품이라도 하나의 프로토콜을 이용하여 데이터 통신을 수행할 수 있다. 또한 우리가 주로 사용하는 TCP/IP 프로토콜을 지원하기 때문에 네트워크 망을 이용하여 .. 프로그래밍/C, C++, Java, Python 2021.02.02
[Python] 파이썬 Socket.IO 오류 unexpected response code 400 0. 선 요약 - python-socket.io와 node.js socket.io간 버전 의존성이 있음. - python-socket.io v5, node.js socket.io v2로 낮춰서 통신 수행 - python과 node간 socket 통신은 가능하다. 1. 상황 (1) 서로 떨어진 Node.js와 Python간의 통신을 Socket.Io로 수행. (2) Node.js (서버) socket.io와 Python (client) socket.io 통신시 unexpected respnse code 400 또는 요청이 씹히는 경우가 발생. (3) Connection Refused-연결 거부(서버가 꺼져있는 등의 이유로)가 아님 (4) 기존 프로토타입 테스트때 Python-Node간 통신이 가능함을 확인.. 프로그래밍/C, C++, Java, Python 2021.01.16