All
35 posts
RS-485 전력계의 Modbus RTU 프로토콜 통신

Modbus 시작하기 Modbus는 일반적으로 장치간 SCADA 식의 네트워크 통신에 사용됩니다. 예를 들어, 대형 서버는 PLC 또는 PAC의 마스터가 될 수 있고, PLC/PAC는 또한 센서, 밸브, 모터 또는 기타 임베디드 장치의 마스터가 될 수도 있다. 이러한 요구를 충족하기 위해 Modbus는 유연적인 데이터 및 함수 모델을 갖춘 요청-응답 프로토콜로서 제작되었다. 요청-응답 구조 Modbus는 마스터-슬레이브 구조를 사용한다. 마스터 디바이스는 통신을 시작하고 슬레이브 디바이스는 응답하는 형태로 동작한다. 한 번에 하나의 마스터만 존재할 수 있으며, 다수의 슬레이브가 존재할 수 있다. Modbus에서 요청은 여러 층으로 된 데이터의 세트이다. 첫 번째 계층은 Application Data Unit(ADU)로, 대부분의 사람들이 ADU를 Modbus의 유형이라고 생각하지만, ADU에는 ASCII, Remote Terminal Unit(RTU), TCP/IP의 세 가지가 있…

RS485 통신 결선 및 데이터 수신 방법

RS485 통신 결선 결선도 설명 이미지에 나와 있는 결선도를 보면 다음과 같은 결선이 필요하다: 1번 및 2번 핀: AC 300V 전원 공급 3번 및 4번 핀: AC 5A 전원 공급 5번 핀: A+ (RS485 통신선) 6번 핀: B- (RS485 통신선) 7번 핀: SG (Signal Ground) 8번 및 9번 핀: AC 90~260V / DC 110V 전원 공급 결선 방법 전원 결선: 1번과 2번 핀에 AC 300V 전원을 연결 3번과 4번 핀에 AC 5A 전원을 연결 8번과 9번 핀에 AC 90~260V 또는 DC 110V 전원을 연결 RS485 통신선 결선: A+ (5번 핀)와 B- (6번 핀)을 각각 RS485 장치의 A+와 B-에 연결 SG (7번 핀)은 Signal Ground로 사용 TX와 RX의 개념 TX (Transmit): 송신, 데이터를 보내는 역할 RX (Receive): 수신, 데이터를 받는 역할 RS485는 차동 신호를 사용하여 데이터 전송을 하기 …

WPF TCP 채팅 프로젝트 소스코드

코드 설명 MVVM 구조로 만들어서 View 는 MainWindow 하나로 구성되어 있고 주요 기능은 MainWindow에서 MainViewModel을 호출하는 구조 코어기능과 통신을 담당하는 기능은 Core 폴더와 Net.IO 폴더로 따로 작성하였고 복잡한 디자인은 Themes 폴더에 xaml 로 작성해서 스타일을 적용하는 방식으로 구현하였음 클라이언트에서 통신을 담당하는 Server.cs 파일과 따로 만든 콘솔앱 서버와 통신하는 서버-클라이언트 구조로 구현하였음 View (MainWindow.xaml) 코드 ViewModel 구성 요소 옵저버블컬렉션으로 리스트 관리 Users: 현재 연결된 사용자 목록을 관리하는 ObservableCollection. Chats: 현재 채팅방의 메시지 목록을 관리하는 ObservableCollection. Contacts: 사용자의 연락처 목록을 관리하는 ObservableCollection. Messages: 개별 메시지 모델을…

WPF TCP 채팅 프로젝트

프로젝트 개요 프로젝트명 어플리케이션 기반의 채팅서버 프로그램 (C# WPF TCP) 수행기간 2024.6.18 - 2024.6.30 프로젝트 수행 계획 (요구사항, 기능 명세) 주요 기능 닉네임 기반 사용자 연결 메시지 전송 및 수신 Firebase를 연동하여 채팅로그 저장 채팅방 별로 이전 채팅 불러오기 MVVM 구조로 MainWindow가 MainViewModel을 호출 TCP 서버-클라이언트 통신을 위한 로직 이해 소켓을 이용한 리스너/클라이언트의 구조를 파악하고 각 메서드의 역할을 나늠 패킷리더와 패킷빌더를 정의하고 메시지 전송부분이 파싱되는 구조 결과물 소스코드 링크 https://woogooree.github.io/projectT_02/ 프로젝트 개요 프로젝트명 수행기간 프로젝트 수행 계획 (요구사항, 기능 명세) 주요 기능 TCP 서버-클라이언트 통신을 위한 로직 이해 결과물 소스코드 링크

Oracle과 MS SQL의 쿼리문 작성법 차이점

데이터 타입 Oracle VARCHAR2: 가변 길이 문자열 NUMBER: 모든 숫자 형식 DATE: 날짜 및 시간 MS SQL VARCHAR: 가변 길이 문자열 INT: 정수형 DATETIME: 날짜 및 시간 자동 증가 필드 Oracle 시퀀스를 사용하여 자동 증가 값을 생성한다. MS SQL IDENTITY 속성을 사용하여 자동 증가 필드를 생성한다. 날짜와 시간 함수 Oracle SYSDATE: 현재 날짜와 시간을 반환 TO_DATE: 문자열을 날짜 형식으로 변환 MS SQL GETDATE(): 현재 날짜와 시간을 반환 CONVERT: 문자열을 날짜 형식으로 변환 문자열 결합 Oracle || 연산자를 사용하여 문자열을 결합한다. MS SQL 연산자를 사용하여 문자열을 결합한다. 테이블 생성과 삭제 Oracle 테이블 생성과 삭제 문법은 거의 동일하지만, 옵션이 추가로 제공된다. MS SQL 표준적인 테이블 생성과 삭제 문법을 사용한다. 트랜잭션 제어 Oracle COMMI…

C 언어 파일 입출력

C 언어 파일 입출력 개요 C 언어에서 파일 입출력은 데이터를 파일에 저장하고, 파일에서 데이터를 읽어오는 작업을 의미한다. 이를 통해 프로그램은 영속적인 데이터를 다룰 수 있다. C 언어는 표준 라이브러리를 통해 파일 입출력을 지원한다. 파일 열기와 닫기 파일 열기 () 함수는 파일을 열고, 파일에 대한 포인터를 반환한다. 파일을 열 때는 모드를 지정해야 한다. 주요 모드는 다음과 같다: : 읽기 모드 (파일이 존재해야 함) : 쓰기 모드 (파일이 없으면 생성, 있으면 덮어씀) : 추가 모드 (파일이 없으면 생성, 있으면 끝에 추가) : 읽기 및 쓰기 모드 (파일이 존재해야 함) : 읽기 및 쓰기 모드 (파일이 없으면 생성, 있으면 덮어씀) : 읽기 및 추가 모드 (파일이 없으면 생성, 있으면 끝에 추가) 파일 닫기 () 함수는 열린 파일을 닫는다. 파일을 닫지 않으면 데이터 손실이나 메모리 누수가 발생할 수 있다. 파일 쓰기 문자 단위 쓰기 () 함수는 파일에 문자를 쓴다…

(폴리텍학생기자단) AI소프트웨어과 기업 간담회 후기

6월 12일 한국폴리텍대학 진주캠퍼스 AI소프트웨어과에서 진행된 AI소프트웨어과 기업 간담회가 성공적으로 마무리되었다. 이번 행사는 AI소프트웨어과 학생들이 팀 프로젝트를 발표하고, 진주 지역의 여러 개발 회사들이 참여하여 학생들의 결과물을 보면서 질문시간을 가지고, 기업분들은 자신들의 회사를 소개하는 발표후 학생들의 질문을 받는 방식으로 진행되었다. (한 학생이 본인 팀이 만들고 있는 키오스크 서비스에 대해서 설명하는 모습) 이번 행사는 학생측에서 얻을게 정말 많은 기회의 장이었다. 팀프로젝트를 진주지역의 거의 모든 개발회사의 이사나 대표님들 앞에서 발표하면서 실력을 어필할 수 있는 기회이자, 실제로 개발을 진행하게 될 때, 어떤 식으로 프로덕트가 기획되고 발표를 준비해야 하는지에 대한 작은 실전의 기회이기도 했다. 5분이라는 시간동안 최대한 중요한 포인트들을 짚어가면서 프로젝트를 설명하는 연습은 살면서 폴리텍대학에 왔기에 해볼 수 있는 경험이었지 않나 싶다. (기업관계자 분…

TCP/IP 소켓 프로그래밍

소켓(Socket) 프로그램이 네트워크에서 데이터를 송수신할 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부를 의미한다. 통신을 위한 프로토콜에 맞게 만들어져야 한다. 클라이언트 소켓과 서버 소켓 데이터를 주고받기 위해서는 소켓의 연결 과정이 선행되어야 한다. 연결을 만들기 위해서는 IP주소와 포트 번호로 식별되는 대상에게 연결을 요청하고 반대편이 연결요청(보낸이의 IP주소와 포트번호로 식별)을 미리 시스템에 등록하고 처리할 준비가 되어 있어야 한다. 연결요청을 보내는 쪽이 클라이언트 소켓 연결요청을 받으려고 대기하는 쪽이 서버 소켓 클라이언트 소켓과 서버 소켓은 역할과 구현 절차 구분을 위해 다르게 부르는 것일 뿐 내부 구조가 다르지 않다. 소켓 연결이 완료된 후, 클라이언트 소켓과 서버 소켓이 직접 데이터를 주고 받는다고 생각하기 쉽지만 사실 서버 소켓은 클라이언트 소켓의 연결 요청을 받아들이는 역할만 수행할 뿐이다. 직접적인 데이터 송수신은 서버 소켓의 연결 요청…

SQL CRUD 기본 명령어

DML 데이터 조작 언어 라는 뜻이다. SELECT, INSERT, UPDATE, DELETE 로 CRUD를 구현한다. SELECT 문 문은 데이터베이스에서 데이터를 조회할 때 사용한다. WHERE 절 절은 특정 조건을 만족하는 행만 선택할 때 사용한다. INSERT 문 문은 테이블에 새로운 데이터를 삽입할 때 사용한다. UPDATE 문 문은 기존 데이터를 수정할 때 사용한다. DELETE 문 문은 테이블에서 데이터를 삭제할 때 사용한다. JOIN 문 문은 여러 테이블에서 데이터를 결합할 때 사용한다. INNER JOIN LEFT JOIN RIGHT JOIN FULL OUTER JOIN DML SELECT 문 WHERE 절 INSERT 문 UPDATE 문 DELETE 문 JOIN 문 INNER JOIN LEFT JOIN RIGHT JOIN FULL OUTER JOIN

WPF 화면이동 구현 - Page 사용

시작은 MainWindow MainWindow.xaml 그리드에 Frame 태그의 Source에 MenuPage링크를 직접 넣어주면 MenuPage의 화면이 띄워짐 MenuPage.xaml (그리드부분) 화면을 Row를 이용해 2분할하고 Hello 버튼과 World 버튼을 넣고 각각의 클릭 이벤트를 만듬 넓이와 넓이를 직접 지정해주면 자식 요소는 부모 요소의 크기 만큼 당겨주는 특징 때문에 가운데 정렬됨 MenuPage.cs 각 버튼의 클릭이벤트에서 URI를 생성하고 Navigate 를 이용해 각 페이지로 이동하도록 구현함 page1.xaml 과 page2.xaml은 Grid 안에 TextBlock을 만들어서 Hello 와 World 를 찍었음 결과 각 버튼을 누르면 가운데에 Hello 와 World 가 출력됨 WPF는 뒤로가기를 구현하지 않아도 자동으로 생성됨 시작은 MainWindow MainWindow.xaml MenuPage.xaml (그리드부분) MenuPage.cs…

WPF 데이터바인딩 더 알아보기

데이터바인딩 데이터바인딩(Data Binding)은 사용자 인터페이스(UI) 요소와 데이터 소스 간의 연결을 설정하여, 데이터가 자동으로 동기화되도록 하는 기술이다. 이를 통해 데이터 소스의 변경이 UI에 즉시 반영되며, UI를 통해 변경된 데이터가 데이터 소스에도 즉시 반영된다. 주로 WPF에서 데이터바인딩을 활용하게 된다. 데이터바인딩의 주요 구성 요소 데이터 소스(Data Source): 바인딩할 실제 데이터이다. 이는 객체, 컬렉션, 데이터베이스 등일 수 있다. 바인딩 타겟(Binding Target): 데이터를 표시할 UI 요소이다. 예를 들어 텍스트 박스, 레이블 등이 있다. 바인딩 객체(Binding Object): 데이터 소스와 바인딩 타겟 간의 연결을 설정하는 객체이다. 데이터바인딩의 활용 일반적으로 소스는 데이터(ViewModel)이고 타겟은 컨트롤이다. 모든 바인딩에는 소스 객체, 소스 속성, 타겟 객체 및 타겟 속성이 있다. 소스 객체는 Binding Sour…

WPF XAML과 코드비하인드(CS) 구조 이해

1. XAML **XAML (Extensible Application Markup Language)**은 WPF에서 UI를 정의하는 데 사용되는 XML 기반 언어이다. XAML을 사용하면 UI를 선언적으로 정의할 수 있다. 이 예제는 간단한 윈도우와 버튼을 정의하는 XAML 코드이다. 2. 코드 비하인드 XAML과 연결된 C# 코드를 코드 비하인드라고 한다. 이는 XAML로 정의된 UI 요소에 대한 이벤트 핸들러 및 기타 논리를 포함한다. 3. 레이아웃 WPF XAML은 다양한 레이아웃 컨테이너를 제공하여 UI 요소를 배치할 수 있다. 주요 레이아웃 컨테이너는 다음과 같다 : Grid: 행과 열로 구성된 격자 레이아웃 StackPanel: 수직 또는 수평으로 요소를 쌓는 레이아웃 DockPanel: 요소를 도킹하여 배치하는 레이아웃 Canvas: 절대 위치를 사용하여 요소를 배치하는 레이아웃 그리드 기본 사용법 그리드는 Grid.RowDefinitions와 Grid.ColumnD…

WPF의 디렉토리 구조 및 MVVM 패턴

WPF 프로젝트의 디렉토리 구조 솔루션 파일 (.sln) 솔루션 파일(.sln)은 Visual Studio 솔루션의 구성 요소를 정의하는 파일로 디렉토리 최상위에 있다. 이 파일은 하나 이상의 프로젝트를 포함할 수 있으며, 개발자가 프로젝트를 열고 빌드하는 데 중요한 역할을 한다. 프로젝트 파일 (.csproj) 프로젝트 파일(.csproj)은 C# 프로젝트의 설정을 정의하는 파일이다. 이 파일에는 프로젝트의 빌드 구성, 참조하는 라이브러리, 컴파일할 소스 파일 목록 등이 포함된다. 프로젝트 파일은 프로젝트의 빌드와 배포를 관리하며, 다양한 설정을 통해 프로젝트의 동작을 정의할 수 있다. Properties: 프로젝트의 속성을 포함하며, 주로 파일이 위치한다. 이 파일은 어셈블리의 메타데이터를 정의하며, 빌드와 배포 시 중요한 역할을 한다. References: 프로젝트에서 참조하는 외부 라이브러리나 어셈블리들. 프로젝트가 의존하는 외부 코드나 프레임워크를 관리한다. App.xa…

Jetson Nano eMMC 리눅스 설치

VMware 가상머신 설치 최신버전 설치 후 Create New Virtual Machine 클릭 리눅스 우분투 iso 파일이 필요함 Ubuntu 18.04.6 LTS 설치 최신버전 우분투는 나노젯슨 JETPACK이 설치되지 않아서 진행하다 막히게된다 반드시 해당 버전을 찾아서 설치할 것 VMware 로 돌아와서 디스크 사이즈는 100GB 이상 메모리는 8GB 이상 으로 설정해서 만든다 우분투 사용자이름 및 비밀번호 입력 후 팝업창이 뜨면 우분투 관련 업그레이드 거절하기 No, don’t send system info Don’t Upgrade Remind Me Later NVIDIA SDK MANAGER 설치 VMware 우분투에서 파이어폭스에 들어가서 아래주소 검색 https://developer.nvidia.com/nvidia-sdk-manager deb 파일로 다운로드 후 설치 (회원가입 후 이메일로 로그인해야 다운가능, 실행 후에도 계정 필요) 젯슨 나노 OS 설치 시작…

Visual Studio 필드변수 언더바 자동생성

필드 변수 언더바 자동 생성 생성자 매개변수에서 Control + . 을 누르면 필드 변수를 자동으로 생성할 수 있음 이때 선언된 필드 변수를 선택하고 Control + R + R 를 눌러 언더바를 붙인 변수명을 사용하게 되는데 이를 자동화 하는 방법이 있음 도구 -> 옵션 -> 텍스트편집기 -> C# -> 코드스타일 -> 명명 명명스타일 관리 -> +클릭 -> 스타일 제목 작성 필수 접두사 칸에 _ 입력 대문자 표시 칸에서 카멜 대/소문자 이름 선택 -> 확인 -> 확인 사양 관리 -> + 클릭 -> 제목입력 (ex : 필드변수_자동생성) 좌측의 모두 선택취소 버튼 클릭 -> 모두 꺼진 상태에서 필드만 체크 우측상단의 모두선택취소 버튼 클릭 -> 마찬가지로 private 만 체크 -> 확인 -> 확인 하단의 + 버튼 클릭 -> 사양에서 Pravate Fields -> 필수스타일에서 만든제목 선택 심각도는 리펙터링만을 선택을 체크 -> 확인 까지 작업하면 필드변수를 생성할 때 언더…

Visual Studio 유용한 단축키

Control + K + E 코드 정리 기능 설정 : 분석 - 코드정리 - 코드정리구성 에서 커스터마이징 가능 불필요한 Using 제거 / 정렬 사용하지 않는 변수 제거 불필요한 캐스트 제거 암시적/명시적 형식 기본 설정 적용 자동 적용 시키는법 Control + Q -> Cleanup -> 프로필 저장 시 코드정리 선택 -> 런코드.. 선택 Control + \ + T 작업목록 기능 주석을 이용해서 토큰 : 설명 식으로 작성한 작업목록 리스트를 작성하고 관리할 수 있음 목록화 해서 커멘드를 누르면 작업 목록 리스트를 호출함 토큰 추가하는법 도구 - 옵션 - 환경 및 작업 목록 : 토큰 목록 (추가) 상하화면분할 원하는 탭의 스크롤바 상단 드래그 버튼을 잡고 내리면 분할됨 (분할된 화면의 상단바를 도로 끌어올리면 원상복귀) 관련코드 윈도우창 호출 특정 코드의 정의를 보고 싶으면 F12 를 누르면 그 코드가 선언된 스페이스로 넘어감 ALT+F12 를 누르면 작은 크기로 스페이스가 호…

Firebase Function 사용법

Firebase Functions 개요 Firebase Functions는 서버 없이 백엔드 코드를 실행할 수 있게 해주는 기능이다. 이를 통해 클라우드 이벤트에 응답하거나 HTTP 요청을 처리하는 등의 작업을 수행할 수 있다. Firebase Functions는 Node.js 환경에서 실행된다. Firebase Functions 설정 및 초기화 Firebase 프로젝트 생성: Firebase 콘솔에서 새 프로젝트를 생성한다. Firebase CLI 설치: Firebase CLI를 설치한다. Firebase 로그인: Firebase CLI를 통해 로그인한다. 브라우저로 로그인창이 뜨게 된다. Firebase 프로젝트 초기화: Firebase 프로젝트를 초기화한다. 를 선택하고, 필요한 설정을 진행한다. Node.js 버전을 선택하고, 에뮬레이터 설정을 선택할 수 있다. Firebase Functions 작성 기본 구조: 폴더 내부의 파일에서 코드를 작성한다. 종류별 함수: HT…

C# 배열 인덱싱

배열 인덱싱 ‘^연산자’ 8.0 버전부터 사용할 수 있게 된 ^ 연산자를 이용해서 뒤에서부터 접근할 수 있다 Linq를 이용하여 배열 자르기 Skip 과 Take 를 통해 가져오는 방식을 사용하면 배열의 Range 를 넘어선 요소를 선택하게 되더라도 오류가 발생하지 않는 구조적 차이가 있다 배열 인덱싱 ‘^연산자’ Linq를 이용하여 배열 자르기

데브옵스는 무슨 일을 하는가?

데브옵스 기본 개념 이해 데브옵스(DevOps)는 개발(Development)과 운영(Operations)의 합성어로, 소프트웨어 개발과 IT 운영을 하나로 통합하는 방법론이다. 데브옵스의 목표는 소프트웨어 개발 주기를 단축하고 높은 품질의 소프트웨어를 빠르게 제공하는 것이다. 이를 위해 자동화, 지속적 통합/지속적 배포(CI/CD), 협업 도구 등을 활용한다. 데브옵스 엔지니어의 역할과 책임 1. 지속적 통합 및 지속적 배포(CI/CD) 파이프라인 구축 및 관리 데브옵스 엔지니어는 자동화된 빌드, 테스트, 배포 파이프라인을 설계하고 구현하여 소프트웨어 개발 주기를 단축시킨다. 이를 통해 코드 변경 사항이 신속하고 안전하게 배포될 수 있도록 한다. 2. 인프라 관리 및 모니터링 클라우드 서비스(AWS, Azure, GCP 등)를 이용해 인프라를 구축하고 관리한다. Infrastructure as Code(IaC) 도구(Terraform, CloudFormation 등)를 사용해 인…

C# 데이터타입과 형변환

형변환 박싱과 언박싱 as operator (참조 형식을 다른 참조형식으로 변환, 실패시 null 반환) Convert (데이터 타입 변환) 배열 형변환 데이터 타입 int == System.Int32 string == System.String bool == System.Boolean object : C# 모든 데이터 타입의 최상위 기본 클래스, 박싱/언박싱 가능 리터럴 소스 코드에서 값을 나타내는 고정된 값 컴파일 시간에 값을 결정함 실행 시간에 변경 되지 않음 스택 메모리 스택 메모리는 함수 호출과 관련된 변수, 지역 볓수 및 매게변수를 저장하는 데 사용됨 (후입선출 방식으로 관리됨, 메모리 할당과 해제가 자동이며 매우 빠름) 힙 메모리 프로그램 실행 도중 동적으로 할당되고 해제되는 변수와 데이터를 저장하는 데 사용됨 (메모리 할당과 해제를 명시적으로 프로그래머가 수행해야하지만 C#에서는 GC가 자동으로 처리함) 클래스, 인터페이스, 배열, 대리자, 객체, 문자열 등이 C# 참…

C언어 동적 메모리 관리와 함수 포인터

들어가기 전에 힙과 스택부터 알기 힙(Heap)과 스택(Stack)은 프로그램 실행 중에 메모리를 관리하는 두 가지 주요 영역이다. 이 두 영역은 메모리 할당과 해제, 사용 방식에서 차이가 있다. 스택 메모리 특징 고정 크기: 스택 메모리는 일반적으로 프로그램이 시작될 때 고정된 크기로 할당된다. 빠른 할당 및 해제: 메모리 할당과 해제는 매우 빠르게 이루어진다. 함수 호출 시 스택 프레임이 생성되고 함수가 종료되면 자동으로 해제된다. LIFO 구조: 스택은 Last In, First Out(LIFO) 구조를 따른다. 가장 최근에 할당된 메모리가 가장 먼저 해제된다. 용도 지역 변수: 함수 내에서 선언된 변수는 스택에 저장된다. 함수 호출 정보: 함수 호출 시 전달된 인수, 복귀 주소, 그리고 함수 실행을 위한 로컬 변수가 스택에 저장된다. 예제 이 예제에서 는 함수 의 스택에 저장된다. 가 호출될 때 스택 프레임이 생성되고, 가 종료될 때 스택 프레임이 해제된다. 힙 메모리 특…

왜 전역변수가 아닌 static 키워드 변수를 사용하는가?

전역(global) 변수 라이프 타임이 프로그램이 종료될 때 까지이며, 다른 파일에서도 해당 변수에 접근이 가능하다. 정적(static) 변수 라이프 타임이 global 변수와 마찬가지로 프로그램이 종료될 때 까지이며, 반드시 static 키워드가 붙는다. 해당 변수가 선언된 scope에 따라서 접근 가능한 범위가 결정되고, 다른 파일에서 접근할 수 없다. 차이점 메모리 할당에서 global 변수는 초기화 되지 않으면 .bss 영역, 초기화 된다면 .data 영역에 할당 된다. 하지만 static 변수는 초기화 하지 않은 상태에서 메모리 자체가 잡히지 않는다. 전역 변수와 정적 변수의 초기화 시점 static 변수와 static 객체를 지역적으로 선언하고 초기화 할 때, 변수는 .data 영역에 올라간다. 객체의 경우 .bss영역에 올라간 후 dynamic initializer가 진행 되고, 생성자를 통한 초기화라면 해당 변수가 처음 수행되는 시점에 초기화가 이루어진다. 객체 초기…

C언어 포인터 개념정리

포인터란? 포인터(pointer)는 메모리 주소를 저장하는 변수이다. *변수명 으로 선언한다. 사용할때 *변수명을 사용하면 메모리 주소값이 아닌 메모리 주소가 가리키고 있는 변수의 값이 출력된다. 사용할때 포인터 변수명을 * 없이 사용하면 변수 값이 아닌 메모리 주소 그자체를 출력한다. 포인터의 기본 사용법 1. 포인터 선언과 초기화 위 예제에서 는 정수형 포인터 p를 선언한다는 의미이다. 는 변수 a의 주소를 p에 저장하는 것을 의미한다. 는 p가 가리키는 주소에 저장된 값을 의미한다. 2. 배열과 포인터 위 예제에서 는 배열 의 첫 번째 요소의 주소를 p에 저장하는 것을 의미한다. 는 포인터 연산을 통해 배열의 각 요소에 접근하는 방법을 보여준다. 3. 포인터를 이용한 함수 인수 전달 위 예제에서는 포인터를 사용하여 함수 인수로 변수의 주소를 전달한다. 변수의 주소를 전달하지만 *변수명으로 사용했기 때문에 주소를 전달하면서 안에있는 값을 읽는다. 이를 통해 함수 내에서…

2024 정보처리기사 실기 요약 - (8) SQL 핵심 요약

SELECT SELECT 절 / WHERE 절 / GROUP BY 절 / ORDER BY 절로 나눌 수 있다. SELECT 다음에는 속성 + FROM INSERT INSERT 다음에는 INTO DELETE DELETE 다음에는 FROM UPDATE UPDATE 다음에는 테이블명 + SET SELECT INSERT DELETE UPDATE

2024 정보처리기사 실기 요약 - (7) 코딩 핵심 요약

비트 연산자와 우선순위 반복문 함정 패턴 C언어 - 포인터 자바 - 생성자 자바 - 메서드 오버로딩/오버라이딩 비트 연산자와 우선순위 반복문 함정 패턴 C언어 - 포인터 자바 - 생성자 자바 - 메서드 오버로딩/오버라이딩

2024 정보처리기사 실기 요약 - (6) SW기초활용 ~ 패키징

운영체제 운영체제 = 커널 + 쉘 쉘 : 사용자와 운영체제 사이의 인터페이스, 사용자 명령을 해석해서 커널에 전달함 커널 : 소프트웨어와 하드웨어 사이의 인터페이스 종류 : 윈도즈, 유닉스, 리눅스, 맥, 안드로이드 윈도즈 특징 GUI 제공, 선점형 멀티태스킹 방식 제공 자동감지 기능 제공(Plug and Play) OLE(Object Linking&Emdedding, 앱사이 데이터공유) 유닉스 특징 대화식, 다중 작업 기능, 다중 사용자 기능 높은 이식성과 계층적 트리 구조 파일 시스템 제공 리눅스/유닉스 기본 명령어 chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어 기호 대상 : u, g, o, a 연산자 : 추가+,제거 -, 지정= 접근권한 : r, w, x 실행 메모리 관리 기법 반입 기법 : 메모리로 적재 시기 결정 배치 기법 : 메모리로 적재 위치 결정 할당 기법 : 메모리로 적재 방법 결정 교체 기법 : 메모리 교체 대상 결정 메모리 배치 …

2024 정보처리기사 실기 요약 - (5) SW개발 보안구축

SW 개발 보안의 3대 요소 기밀성(Confidentiality) : 인가되지 않은 접근에 따른 정보 노출을 차단하는 특성 무결성(Integrity) : 정당한 사용자와 방법을 따르지 않고서는 데이터가 변경 될 수 없음을 보장하는 특성 가용성(Availability) : 권한을 가진 사용자가 서비스를 원할 때 지속해서 사용할 수 있도록 보장하는 특성 DoS (Denial of Service, PC 1대가 직접 공격) 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 해 사용하지 못하게 하는 공격 DoS 공격 종류 SYN 플러딩(Flooding) : 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하는 공격 UDP 플러딩(Flooding) : 대량의 UDP패킷을 만들어 임의의 포트 번호로 전송하여 자원을 고갈시킴 스머핑(Smurfing) : 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시킴 죽음의 핑(Po…

2024 정보처리기사 실기 요약 - (4) 어플리케이션 테스트

소프트웨어 테스트 원리 완벽한 테스팅은 불가능 (테스팅은 결함이 존재함을 밝히는것) 개발 초기에 테스팅 시작 (요르돈의 법칙) 파레토 법칙(Pareto Principle) : 오류의 80%는 전체 모듈의 20% 안에서 발견 살충제 패러독스(Pesticide Paradox) : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못함 오류-부재의 궤변 : 요구사항을 충족시키지 못하다면, 결함이 없다고해도 품질이 높다고 볼 수 없음 테스트 시각에 따른 분류 검증(Verification) : 소프트웨어 개발 과정을 테스트, 개발자 혹은 시험자의 시각 확인(Validation) : 소프트웨어 결과를 테스트, 사용자 시각 테스트 V 모델 테스트 레벨 종류 단위(Unit) 테스트 : 구현이 진행될 때 모듈 및 컴포넌트 등을 테스트 (정적/동적) 통합(Integration) 테스트 : 모듈 간 인터페이스 관련 테스트 시스템(System) 테스트 : 단위 시스템 기능이 시스템에서 …

2024 정보처리기사 실기 요약 - (3) UI구현 ~ 통합구현

UI 설계 원칙 직관성(Intuitiveness) : 누구나 쉽게 이해, 쉽게 사용해야함 유효성(Efficiency) : 정확하게 사용자의 목표를 달성 하도록 함 학습성(Learnability) : 모두가 쉽게 배우고 사용할 수 있게 해야함 유연성(Flexibility) : 사용자의 요구사항을 최대한 수용하고, 실수를 방지해야함 UI 품질 요구사항 (하위항목은 이해위주로) 기능성(Functionality) : 정확하지 않은 결과가 발생할 확률과 시스템의 동작 관찰 적절성, 정밀성, 상호 운용성, 보안성, 호환성 신뢰성(Realiability): 작동되는 시간동안 의도하는 기능을 수행함을 보증 성숙성, 고장 허용성, 회복성 사용성(Usablity) : 어떠한 행위를 정확하고 쉽게 인지해서 쓰기 쉬운가 이해성, 학습성, 운용성 효율성(Efficiency) : 할당된 시간에 한정된 자원으로 얼마나 빨리/많이 처리 시간 효율성, 자원 효율성 유지보수성(Maintainability) : 요…

2024 정보처리기사 실기 요약 - (2) 데이터입출력

운영체제 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스 담당 -Windows : 중/소규모 서버, 일반 PC, 세계최대 점유율 UNIX : 벨연구소에서 개발, 대용량 처리, 엔터프라이즈 급 서버 Linux : 중/대규모 서버 대상, 높은 보안성, 비용 가장 적음 Android : 리눅스 위에서 구동, 자바와 코틀린으로 작성 IOS : 높은 보안성, 고성능 운영체제 현행 시스템 분석 고려사항 신뢰도, 성능, 기술 지원, 주변 기기 , 구축 비용 미들웨어 응용 프로그램과 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 SW WAS 서버계층에서 애플리케이션이 동작할 수 있는 환경 제공, 트랜잭션 처리, 이기종 시스템 연동 DBMS 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구 보안 등의 기능을 지원하는 SW 스키마 외부, 개념, 내부 스키마로 나눌 수 있으며 데이터의 구조와 제약조건을 명세한 것 DB 설계 순서 요구사항 분석 > 개념적…

2024 정보처리기사 실기 요약 - (1) 요구사항

애자일 XP : 의사소통 개선과 즉각적 피드백 5가지 가치 : 용기, 단순성, 의사소통, 존중, 피드백 의사(소통)선생님 피(드백)존(중) 용기에 담(순성)아주세요 by 홍달쌤 12가지 기본 원리 짝 프로그래밍(Pair Programming) : 개발자 둘이서 같이하면 혼자와 같거나 적은 비용이 듬 공동 코드 소유(Collective Ownership) : 공동 소유로 변경시 지연감소 효과 지속적인 통합(Continuous Integration) : 매일 여러 번씩 통합, 빌드 해야함 계획 세우기(Planning Process) : 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려줘야함 작은 릴리즈(Small Release) : 작은 시스템 먼저 만들고 짧은 단위로 업데이트 메타포어(Metathor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 간단한 디자인(Simple Design): 요구사항에 적합한 가장 단순한 시스템…

(폴리텍학생기자단) 개발자 취직 코딩학원 vs 폴리텍대학, 어느 쪽이 유리할까?

고민하게 된 계기 대학교 막바지 무렵, 학교를 다니면서 비교과 과목이나 취업지원제도의 국비지원 교육을 통해 코딩을 배우기 시작했다. 무료로 수강할 수 있는 국비교육들은 깔짝 맛만보는 수준이었기에 매우 기초적인 개념을 배우는 정도와 클론코딩 정도의 수업을 들은 정도여서 프로그램이 어떤 구조로 동작하는지 이해할수도 없었고 실무에 많이 사용되는 프레임워크들의 사용법을 익힐 수도 없었다. 국비지원 수업들을 통해 느낀 점은 100% 무료로 들을 수 있는 단기 과정들은 깊이가 부족해서 전혀 취업에 도달할 정도의 실력을 쌓을 수 없는 정부의 눈먼돈 타먹기 같다는 것이었다. 결국 취업시장에 뛰어들 수 있을 정도의 실력을 만들기 위해선 정부가 비용의 일부분을 지원해주지만 수백만원의 자기부담금이 필요한 코딩 학원 혹은 유료부트캠프 에서 1년 이상의 시간동안 공부해야 한다고 생각했다. 취업 후 상환 방식으로 다닐 수 있는 부트캠프도 있었지만 유명 부트캠프들은 서울에서 자취를 해야만 다닐 수 있는 …

2024 정보처리기사 후기 및 요약정리

2024 1회차 정보처리기사 합격 필기 평균 85점 / 실기 81점 개정 후 난이도가 어려워진 대신 개발자가 알아야할 컴퓨터 사이언스 관련 지식을 체계적으로 학습할 수 있도록 잘 짜여진 시험이라 자격증 이외에도 비전공자로써 관련 지식을 쌓는데 큰 도움이 되었습니다. 난이도 체감 필기시험 필기 시험은 5과목으로 구성되어 범위가 넓고 외울 지식이 아주 많아 보이지만 실제 시험은 객관식 4지선다 형식인데다가 기존 기출문제를 풀어본 문제가 그대로 출제되는게 10~20% 정도를 차지합니다. 햇갈리게 함정을 파놓기 보다는 어렴풋이 본 기억만 나도 정답을 고르기 쉬워서 진짜 공부를 안한게 아니라면 1주일 정도만 공부해도 쉽게 합격할 수 있는 난이도 였습니다. 유튜브에 올라온 1시간 정도 분량의 필기 과목별 강의 영상을 1회독 하고 개정 이후 CBT 이전의 기출 문제만 다 풀어보고 오답인 부분을 체크하는 정도로 공부했을 때 평균 85~90점 정도의 점수를 받을 수 있었습니다. 실기시험 실기시험…

ICT멘토링 전력관리 KEPSI 프로젝트

KEPSI 프로젝트 2024 ICT멘토링 한이음 공모전에 전력관리 플랫폼 개발을 목표로 참가하게 되었다. 하드웨어와 클라우드 서버 웹앱 개발까지 폭넓게 경험해 볼 수 있는 팀프로젝트 경험을 쌓을 것으로 기대됨. 프로젝트명 한국전력공사 오픈 연계형 전력관리 플랫폼 (KEPSI) 주제영역 공공 생활/업무 기술분야 SW·AI 디바이스 성과목표 앱 등록 공모전 참여 수행기간 2024년 3월 ~ 2024년 11월 맡은역할 팀장 (팀원 총 3명) 프로젝트 배경 전기요금 상승으로 인해 전력 사용량을 효율적으로 관리하고 절전할 수 있는 방안의 필요성이 대두되었다. 한국전력공사가 보유한 방대한 전력 데이터를 활용하여 각 가정의 전력 사용을 모니터링하고 절전 모드를 제공하는 플랫폼을 개발하고자 한다. 주요 기능 전력 사용 계획 추천: 전력 사용량 데이터를 분석하여 효율적인 전력 사용 계획을 추천한다. 절전모드 프리셋 제공: 사용 패턴을 분석하여 누진세 구간을 넘지 않도록 절전모드를 제공한다. 스…

경상대학교 글로벌캡스톤디자인 프로그램 참여

캡스톤디자인 주제 탄소중립에 기여할 수 있는 스킨케어 제품 기획 및 제작 맡은 역할 시장조사 및 자료조사 단계 인기 시제품 전성분표 분석 제품 방향성 기획 및 PPT 제작 프로젝트 기획 프레젠테이션 발표 프로토타입 제작 단계 화장품 원재료 배합비율 연구 및 테스트 미세플라스틱 대체 성분 관련 논문 리서치 제품 테스트 및 완성 단계 제품 피부 테스트 및 세정력 개선 작업 배합비율 조절을 통한 사용감 개선 작업 완제품 샘플 제조 및 프로젝트 결과 PPT 제작 프로젝트 심사 프레젠테이션 발표 제품 제작 트러블슈팅 경험 첫 방향성은 친환경 비누 제품을 밴치마킹하여 만드는 것이었지만, 이미 시장에 포지셔닝이 완료된 제품이고 사람들이 편안하고 익숙한 클렌징폼 제품들 대신 환경을 위해 비누를 사용하도록 설득하는 것이 바람직하지 않아 보였기에 새로운 시도를 해보고 싶었다. 클렌징폼과 유사한 사람들에게 익숙한 제형과 사용감 그리고 피부타입을 고려한 제품선택권을 유지하면서도 친환경 비누 제품들…