전체 글 178

미쓰비시 PLC 데이터 교신 형태 (QnA호환3E )

부디 이것 때문에 머리 아픈 사람이 나밖에 없기를 바라며 - 미쓰비시 PLC 에서 modbus 호환 모델이 없을 경우 c에서 데이터를 받아오자 먼저 자신의 프레임 종류를 알아야 한다. 나는 Q시리즈E71를 사용하고 있다. -> QnA호환3E프레임 LRESULT CMFCApplication1Dlg::WMUSER_SEND_DATA(WPARAM wParam, LPARAM lParam) { CString SUB_HEAD; CString NETWORK_NO; CString PLC_NO; CString IO_NO; CString STATION_NO; CString DATA_LENGTHW; CString DATA_LENGTHR; CString CPU_WATCHDOG; CString W_COMMAND; CString ..

데이터/PLC 2021.02.25

동적 계획법(DP) 프로그래머스 문제

접근법. DP는 메모리를 사용해서 실행 시간을 줄여야 하는 알고리즘 -> 중간중간의 결과값을 저장해서 실행시간을 줄이는 방법으로 접근하는게 포인트 Level 3 N으로 표현 코딩테스트 연습 - N으로 표현 programmers.co.kr # dynamic_1.py N = 5 # 2 number = 12 # 11 # 4, 3 def solution(N, number): S = [0, {N}] if N == number: return 1 for i in range(2, 9): case_set = {int(str(N)*i)} for j in range(1, i//2+1): # S[i_half] S[1] for x in S[j]: for y in S[i-j]: case_set.add(x+y) case_set.a..

알고리즘 2021.02.22

조인(결합) 알고리즘과 성능

옵티마이저가 선택 가능한 결합 알고리즘 1. Nested Loops 2. Hash 3. Sort Merge 가장 빈번한 알고리즘은 Nested Loops -> Hash -> Sort Merge 이다. 대부분이 이 세개를 지원하지만 그렇지 않거나 파생된 알고리즘을 제공하는 곳이 있으니 자신이 주로 사용하는 DBMS 최신 동향에 주의를 기울이도록하자. 1. Nested Loops 중첩 반복을 사용하는 알고리즘 -> 결합은 한 번에 두 개의 테이블만 결합하므로 본질적으로 이중 반복과 같은 의미 . 테이블 R을 구동 테이블 = 외부 테이블이라고 부르고 B를 내부 테이블이라고 부른다. 1. 결합 대상 테이블 R에서 레코드를 하나씩 반복해가며 스캔 2. 구동 테이블의 레코드 하나마다 내부 테이블의 레코드를 하나씩 ..

DB/관계형 DB 2021.02.19

kubenetes - 퍼시스턴트 볼륨(PV)과 퍼시스턴트 볼륨 클레임(PVC)

지금까지는 디플로인먼트의 각 포드는 별도의 데이터를 가지고 있지 않았으며, 단순히 요청에 대한 응답만 반환했다. 하지만 데이터베이스처럼 포드 내부에서 특정 데이터를 보유해야 하는 상태가 있는 애플리케이션의 경우에는 데이터를 어떻게 관리할지 고민해야한다. 즉 포드의 데이터를 영속적으로 저장하기 위한 방법이 필요하다. (docker의 볼륨) 쿠버네티스에서는 호스트에 위치한 디렉토리를 각 포드와 공유함으로써 데이터를 보전하는 것이 가능하지만 한계가 존재한다. 바로 포드에 장애가 생겨 다른 노드로 옮겨갔을 때 해당 데이터를 사용할 수 없는 문제점이다. 그래서 필요한 방법이 퍼시스턴트 볼륨을 사용하는 것이다. 개념 워커 노드들이 네트워크상에서 스토리지를 마운트해 영속적으로 데이터를 저장할 수 있는 볼륨을 의미 종..

Docker 2021.02.19

JOIN(결합) 종류

결합의 종류 기능적인 관점 -> 중점적으로 다룰 것 -크로스 -내부 -외부 그 외 -자기 -등가/비등가 : 등호(=)를 썼는가 안썼는가 -자연 : NATURAL JOIN 암묵적으로 같은 이름의 필드가 등호로 결합됨. (가독성, 확장성 떨어짐) 이중 크로스, 내부, 외부는 결과의 형태에 따라 구분되어 각각 배타적인 분류이다. 1. 크로스 결합 실무에서 사용할 기회는 거의 없다. - 작동 Employees 테이블 사원 ID 사원 이름 부서 ID 1 하린 10 2 한미루 11 3 사라 11 4 중민 12 5 웅식 12 6 쿠와와 12 Department 테이블 부서 ID 부서 이름 10 총무 11 인사 12 개발 13 영업 코드. 1 SELECT * FROM Employees CROSS JOIN Departm..

DB/관계형 DB 2021.02.18

인덱스 정리 (종류, 고려해야 할 부분, 사용할 수 없는 경우, 대처)

RDB에서 사용하는 인데스는 구조에 따라 세 가지로 분류할 수 있다. - B-tree 인덱스 - 비트맵 인덱스 : 비트 플래그로 변환해서 저장하는 형태, 카디널리티가 낮은 필드에 대해 효과적 - 해시 인덱스 : 키를 해시 분산해서 등가 검색을 고속으로 실행하고자 만들어진 인덱스 (거의 사용 X) 만능형 : B-tree - 데이터를 트리 구조로 저장하는 형태의 인덱스이다. - 균형잡힌 뛰어난 범용성의 인덱스로 가장 많이 사용된다. - 특별히 앞에 이름을 붙이지 않으면 B-tree 인덱스를 지칭하는 것 = default 사실은 대부분의 데이터베이스는 리프 노드에만 키값을 저장하는 B+tree, B-tree의 수정 버전을 사용한다. (오라클, PostgreSQL, MySQL 등), 이는 보다 검생을 효율적으로..

DB/관계형 DB 2021.02.12

kubenetes 심화 : 인그레스(Ingress)

개념 인그레스는 일반적으로 외부에서 내부로 향하는 것을 지칭하는 단어이다. 예를 들어보면 인그레스 트래픽은 외부에서 서버로 유입되는 트래픽을 의미하며, 인그레스 네트워크는 인그레스 트래픽을 처리하기 위한 네트워크를 의미한다. 기본적인 기능 - 외부 요청의 라우팅 : /apple, /apple/red 등과 같이 특정 경로로 들어온 요청을 어떠한 서비스로 전달하는지 정의하는 라우팅 규칙을 설정할 수 있다. - 가상 호스트 기반의 요청 처리 : 같은 IP에 대해 다른 도메인 이름으로 요청이 도착했을 때, 어떻게 처리할 것인지 정의할 수 있다. - SSL/TLS 보안 연결 처리 : 여러 개의 서비스로 요청을 라우팅할 때, 보안 연결을 위한 인증서를 쉽게 적용할 수 있다. 등등 여러 가지의 기능이 있다. 인그레스..

Docker 2021.02.05

PLC 개념, 기능

PLC(Programmabel Logic Controller) 자동제어반 내의 릴레이, 타이머, 카운터 등의 기능을 드랜지스터 등의 반도체소자로 대체하여 기본적인 시퀀스 제어 기능에 연산 등의 기능을 추가하여 프로그램제어가 가능하도록 한 범용 디지털 전자제어장치이다. 시퀀스 컨트롤러의 특징 1. 실시간 처리 능력이 있음 2. 취급이 용이 3. 경제성이 우수 4. 진동과 노이즈에 대한 내환경적 특성 PLC 기능 구분 기능 비고(기타 설명) Sequencing 디지털 입, 출력 제어 각종 스위치, 센서의 ON/OFF 정보 등 Logic 연산 AND, OR, NOT, XOR 등 Bit, Word 단위로 연산 산술 연산 ADD, SUB, MUL, DIV, PID 연산등 실수의 가감승제, 삼각함수 연산 등 Tim..

데이터/PLC 2021.02.02

Modbus란

사물 A와 B가 존재할 때 이 두개가 통신을 하기 위해서는 먼저 물리적 경로가 필요하다. 이 물리적 경로는 유선일수도 있고 무선일 수도 있는데 이 경로에서는 Bit 단위의 통신이 이루어진다. 이것을 시리얼통신이라고 한다. 이러한 시리얼통신은 여러가지가 존재하는데 대표적으로 RS232, RS422, RS485 등이 있다. 병렬(Parallel) 통신의 모식도 직렬(Serial) 통신의 모식도 간단하게 RS232, RS422, RS485를 살펴보자 RS232 - 1:1 통신으로 외부의 영향을 많이 받아 안좋다. 기계끼리 바로 옆에 있는 것이 아니면 사용하지말자 RS422 - 아주 좋다. 보냄과 동시에 받을 수 있다(전이중 구조). 통신 할 때 선이 4개닥 사용. 비용, 공간이 많이든다. RS485 - 가장 ..

데이터/Modbus 2021.02.02

쿠버네티스 리소스의 관리와 설정 (네임스페이스, 컨피그맵, 시크릿)

이번 장에서는 네임스페이스, 컨피그맵, 시크릿의 사용 방법을 알아보겠다. 네임스페이스 쿠버네티스는 리소스를 존리적으로 구분하기 위해 네임스페이스라는 오브젝트를 제공한다. (포드, 페플리카셋, 디플로이먼트, 서비스 등과 같은 쿠버네티스 리소스들이 묶여 있는 하나의 가상 공간 또는 그룹이라고 이해하자.) 보통 namespace를 ns라고 줄려서 사용 가능하다. # default에 존재하는 포드를 확인하려면 이때 --namespace 대신 -n 사용가능 kubectl get pods --namespace default kubectl get pods -n kube-system default 는 우리가 쿠버네티스를 성치하면 자동으로 사용하도록 설정되는 네임스페이스로 kubectl 명령어로 쿠버네티스 리소스를 사용..

Docker 2021.01.31