패키지 설치 없이 사용할 수 있는 간편한 디자인. 

 

 

1. 

Button일 경우 padding이 안먹히는데. 
ContentPresenter 속성의 margin으로 하면 내부컨텐츠를 움직일 수 있다. 
https://stackoverflow.com/questions/48804439/to-set-padding-for-textblock-inside-contentpresenter

 

To set padding for textblock inside ContentPresenter

<ControlTemplate TargetType="TabItem"> <Border x:Name="Border" Margin="{TemplateBinding Margin}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{

stackoverflow.com

 

 

2. 아주 기본 아이콘 

https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font

 

Segoe MDL2 Assets icons - Windows apps

This article lists and provides usage guidance for the glyphs that come with the Segoe MDL2 Assets font.

learn.microsoft.com

 

사용 방법(wpf용)

<TextBlock FontFamily="Segoe MDL2 Assets" Text="&#xE760;" FontSize="32"/>

 

 

 

 

 

3. 이건 xml은 아니고  html, css 이뻐서 들고옴. 코드를 볼 수 있어서 참조용

https://www.frontendplanet.com/css-pagination-examples/

 

31 CSS Pagination Examples

 

www.frontendplanet.com

 

 

 

 

 

 

visual studio에서 Application already started 
프로젝트 복사 후 이름도 변경하고, 어셈블리 이름도 변경했는데 
왜 에러가 날까?

mutex 이름도 달라야한다.
나는 mutexName으로 되어있었다. 

ViewLoading.xaml.cs에 mutex가 존재했다. 

 

 

 

 

그냥 기본 설치시, Visual Studio에서 코드 내에서 Color 변경을 할 수 없다. 

추가적으로 설치를 해야한다. 아래에 방법을 적어 보았다.

 


 

Visual Studio Extension 사용 (Color Picker)

Visual Studio의 확장 기능을 설치하여 색상 선택기 개선.

Color Picker와 같은 확장 기능을 사용하면 더 직관적인 색상 선택기 도구를 제공 받음.

  1. 확장 기능 설치
    • Visual Studio에서 상단에 Extensions(확장) 메뉴를 열고, Manage Extensions(확장관리)를 선택.
    •  Color Picker와 같은 확장을 검색하여 설치 선택.
    • 모든 Visual Studio 관련 프로그램을 끄면 설치가 시작되고, Color Picker 도구를 사용할 수 있는 기능을 활성화 됨.

1, 2

 

 

색상 코드 아래에 색선이 생겼고, 그것을 선택하면, 왼쪽같은 창이 나온다. 

A라는 알파 (투명도)를 선택할 수 있어서 정말 편리하다. 

 

 

나는 컴퓨터 공학전공을 나왔으며, 정처기가 있다. 

뭔가 통신쪽을 공부하는겸 자격증을 따려고 찾아보니, 네트워크 

 

전자기기기능사,

통신기기기능사

통신선로기능사

Cppg, Ccna, ccnp

정보통신기사

전파전자통신, 무선설비, 방송통신, 전자기기, 전자계산기, 철도전기신호

등등이 나왔다. 

 

국가기술자격검정 사이트에서 관련 자격증들을 살펴볼 수 있다. 

 

 

 Ccna, ccnp은 40만원가까이 들고, 네트워크 관리사 1급을 작업형 실기가 있어서 그냥 

정보통신기사로 정했다. 

 

책은 이기적으로 골랐다. 다른건 뭐... 모르겠다. 

 

 

책을 읽어보니, 무선설비기사랑 조금 비슷한 내용이 많다고 한다. 

처음에는 정보처리기사가 있으니 뭐 나쁘지 않겠지?.... 라는 생각으로 시작했는데!

 

 

 


 

 

이게 무슨 말이지?

 

 

 

1장_ 정보전송일반 부터 무슨 소리인지 모르겠다. 

 

 

 

 


1). PCM, DM 등 원천부호화

원천부호화라는 것이 뭔말이지...?

 

목차, 대제목부터 막혔닼ㅋㅋㅋㅋㅋㅋ...

 

*원천부호화는 디지털 통신에서 정보를 효율적으로 표현하기 위해 사용하는 과정으로, 이를 통해 신호나 데이터를 디지털화하거나 압축하여 전송 효율성을 높이고, 통신 시스템의 대역폭 사용을 줄이는 데 도움을 준다.

원천 부호화는
일반적으로 아날로그 신호 -> 디지털 신호로 변환하거나, 디지털 데이터를 더욱 효율적으로 표현하는 과정.

 

3쪽을 읽고 문제도 풀면서 이해하니, 아주 간단한 말이 었다. 

아날로그 신호를 디지털 신호로 변환하는 것이고, 이에 관련된 PCM라는 과정을 더 깊이 있는 설명이 들어있다. 

 

 

1_1. PCM (Pulse Code Modulation, 펄스 부호 변조)

PCM은 아날로그 신호를 디지털로 변환하는 가장 기본적인 방식.

  • 단계:
    1. 샘플링(표본화): 아날로그 신호를 일정 시간 간격으로 측정(샘플링)합니다. 이때 샘플링 주파수는 나이퀴스트 이론에 따라 원 신호의 최대 주파수보다 최소 2배 이상이어야 합니다.
    2. 양자화(Quantization): 샘플링한 값을 일정한 디지털 값(레벨)으로 근사화.
    3. 부호화(Encoding): 양자화된 값을 이진수 형태로 표현.
  • 응용: 전화, 오디오 녹음, 디지털 방송 등에서 많이 사용.

1_2. DM (Delta Modulation, 델타 변조)

DM은 PCM보다 단순화된 부호화 방식으로, 신호의 변화량만을 표현.

  • 작동 원리:
    • PCM처럼 절대적인 신호 값을 기록하지 않고, 직전 값과의 *차이(Δ)*만 부호화.
    • 신호가 변화하는 방향(증가/감소)을 1비트로 표현하기 때문에, 데이터 양이 줄어드는 장점.
  • 제한점:
    • 신호 변화가 급격할 경우 왜곡이 발생할 수 있습니다(슬로프 과부하).

 

 

 

 

 


2) 반송파

정보(음성, 영상, 데이터 등)는 보통 낮은 주파수(저주파) 대역에 존재함.

하지만 저주파 신호는 직접 전송하기 어렵다. 이를 해결하기 위해 고주파 신호인 반송파에 정보를 실어 보냄(변조)

반송파는 다음과 같은 역할을 한다.

  • 정보 전달: 반송파에 정보를 실어 전송.
  • 멀리 보내기: 고주파 신호는 저주파 신호보다 더 멀리 전달 가능.
  • 신호 분리: 여러 신호를 주파수 대역으로 구분해 통신 시스템에서 서로 혼선 없이 사용 가능.   

 

2_1. 반송파와 변조

반송파는 그 자체로는 아무 정보도 포함하지 않는다.

정보를 반송파에 실으려면 변조라는 과정을 거쳐야한다.

변조란 반송파의 특정 특성을 변형해 정보를 표현하는 방법 | 반송파를 주파수가 낮은 신호파와 대응시켜 신호의 형태를 변화 시켜 이득 봄.

 

주요 변조 방식:

  1. 진폭 변조(AM, Amplitude Modulation):
    • 반송파의 진폭을 변화시켜 정보를 실음.
    • 라디오 방송 등에서 사용.
  2. 주파수 변조(FM, Frequency Modulation):
    • 반송파의 주파수를 변화시켜 정보를 실음.
    • FM 라디오, 고품질 음성 전송에 사용.
  3. 위상 변조(PM, Phase Modulation):
    • 반송파의 위상을 변화시켜 정보를 실음.
    • 디지털 통신에서 사용.

 

하지만 저주파 신호는 직접 전송하기 어렵다.  왜?!

1. 멀리 가는 힘이 약하다

저주파 신호는 파장이 길다. 파장이 길다는 건 에너지가 넓게 퍼지기 쉽고, 전파가 약해져서 멀리 보내기 어렵다는 뜻.

  • 예시: 사람 목소리(저주파)는 가까운 사람에게는 들리지만, 먼 거리에서는 잘 안 들리는 것 처럼

2. 안테나 크기 문제

전파를 잘 보내려면 안테나의 크기가 신호의 파장과 비슷해야 효과적.

  • 예를 들어:
    • 저주파(1kHz): 파장은 300km! → 300km 크기의 안테나가 필요.
    • 고주파(1MHz): 파장은 300m → 현실적으로 설치 가능.

저주파를 그대로 쓰면 비효율적이고, 안테나를 어마어마하게 크게 만들어야 하니 고주파로 바꾸는 게 더 실용적.


3. 혼선이 생긴다

저주파 신호는 많은 기기가 동시에 쓰면 서로 섞여서 구분하기 어려워요.

  • 반면, 고주파는 각각 다른 주파수 대역(채널)을 나눌 수 있어 혼선 없이 여러 신호를 동시에 전송 가능.

4. 정보를 더 많이 담기 어렵다

저주파는 *데이터 전송량(대역폭)*이 제한적.

  • 고주파를 쓰면 더 많은 정보를 담을 수 있어서, 영상, 음악, 데이터 전송에 적합해요.

정리하자면,

  • 저주파는 멀리 보내기 어렵고, 안테나가 비효율적이며, 혼선이 생기기 쉽고, 데이터를 많이 담기 어렵기 때문에,
  • 고주파 신호(반송파)를 사용해 정보를 변조하여 전송함. 쉽게 말하면 저주파 신호를 "탈것(반송파)"에 태워 더 멀리 보내는 과정.

 

2번 안테나 문제는 어떤 말인가?

1. 전파의 파장과 안테나 길이

안테나는 전파(전자기파)를 방출하거나 수신하는 장치.
안테나가 효과적으로 동작하려면 전파의 *파장(λ)*과 밀접한 관계가 있음.

  • 파장이란? 전파가 한 번 진동하면서 이동하는 거리.
  • 파장은 주파수(f)와 빛의 속도(c)의 관계식으로 계산됩니다:

c=300,000km/s  (빛의 속도)


2. 저주파의 파장이 긴 이유

저주파는 주파수(f)가 낮아서 파장 (λ)이 매우 길다. 예를 들어:

  • 1kHz(1,000Hz) 신호:

  • → 300km 파장에 맞는 안테나는 150km(1/2 파장) 크기로 만들어야 효과적.

이런 저주파 신호를 전송하려면 안테나를 엄청나게 길게 만들어야 합니다. 현실적으로 너무 크고 비싸서 불가능.


3. 고주파의 파장이 짧은 이유

주파수를 높이면 파장이 짧아져서, 더 작은 안테나로 전파를 방출하거나 수신 가능:

  • 1MHz(1,000,000Hz) 신호:

  • → 300m 파장에 맞는 안테나는 150m(1/2 파장) 정도면 충분.

이 정도 크기는 현실적으로 제작이 가능.


4. 안테나 설계의 기준

안테나 길이는 보통 1/2 파장이나 1/4 파장으로 설계.

  • 1/2 파장 안테나: 가장 기본적인 설계로, 신호를 효과적으로 방출하거나 수신 할 수 있음.
  • 1/4 파장 안테나: 지면을 반사면으로 활용해 안테나 길이를 절반으로 줄인 설계.

5. 왜 고주파가 유리할까?

고주파를 사용하면 파장이 짧아져 작고 효율적인 안테나 설계가 가능해짐.

  • 저주파(긴 파장)는 안테나가 너무 크고 비싸서 실용성이 떨어짐.
  • 고주파(짧은 파장)는 현실적인 크기로 설계할 수 있음.

 

 

 


계산 문제1 _ 5[kHz]의 음성신호를 재생시키기 위한 표본화 주기(T)는?

책이랑 설명이 달라서 헷갈렸는데, 책은 주파수의 공식을 그대로 가져오는데, chat gpt에서는 주파수로 가져와서 2가 없었던것....

 

아무튼 5[kHz]은 5000을 의미하고 이것에 2를 곱한것이 분모!  10의 4승이 나오는데, => 역수는 10의 -4승

[μs] 단위로 변환을 해야하는데, [μs]은 10의 6승이다. 

 

즉, 10의 -4승 * 10의 6승을 하면 => 10의 2승 = 100[μs]

 


[chat gpt]에 추가적인 문제를 달라고 했다.

 

 

문제 1: 샘플링 주파수 계산

1. 20[kHz]의 음악 신호를 정확히 복원하기 위해 최소한의 샘플링 주파수는 얼마여야 하는가?

주파수는 음성신호에 *2 이상이어야한다. 

따라서 정답은 40[kHz].

 

 

문제 2: 복원 가능한 최대 주파수

2. 샘플링 주파수가 44.1[kHz]일 때, 복원 가능한 최대 주파수 대역은 몇 [kHz]인가?

샘플링 주파수(fsf_s)는 신호의 최대 주파수의 2배 이상이어야 합니다.

따라서, 샘플링 주파수가 44.1[kHz]일 때, 복원 가능한 최대 주파수샘플링 주파수의 절반입니다.

따라서 정답은 22.05[kHz].

 

문제 3: 샘플링 주기 계산

3. 신호의 최대 주파수가 12[kHz]일 때, 신호를 정확히 복원하기 위해 필요한 최소 샘플링 주기의 값은 몇 [μs]인가?

샘플링 주파수는 24이고, 

[μs]은 10의 6승

 

그럼 생략하면 24분의 1000이 되는데, 

간단하게 1000을 24로 나누면 41.67이 나온다!

 

 

 

 

 

지금 총 4p보는데, 개념 하나도 모르겠어서 2시간 넘게 걸린 것 같다... 매일 이 속도라면 140일 넘게 걸릴 것 같은데,

과연 나의 도전을 성공할 것인가?

 

먼저 나의 스펙을 말하자면, 대학 시절 성적은 나쁘지 않았고 수상 경력과 논문도 있었지만, 특별히 내세울 만한 건 없었다.

  1. 토익은 발바닥 수준.
  2. 정보처리기사도 못 땄다.

이런 상태에서 멀티캠퍼스에서 Java 백엔드 교육을 들었다(온라인).

하지만 솔직히, 멍 때리고 놓치면 하루 종일 헤매는 정도였고, 나에게 큰 도움이 되지 않았다.

6개월의 교육이 끝났지만, 결국 CURD 정도만 할 줄 아는 백엔드 개발자로 느껴졌다. 그 이상은 없었다.

 

 

 

교육이 끝난 후,

자소서를 쓰다가 답이 없길래 대충 30군데 정도 이력서를 넣었다.

기대도 안 했는데, 4군데에서 연락이 왔다. 처음에는 Java 관련 회사에만 지원하다가,

찾아보니 C#, WPF라는 분야도 있다는 걸 알게 되었다.

 

악명 높은 제조업 분야였다. 인터넷에서 "제조업 가면 안 된다", "공장에서 산다"는 말들이 많았다. 그래도 면접을 보러 갔다.

면접에서는 지식 위주로 질문을 받았고, 결국 합격했다.

(c#,wpf 2곳을 봤는데 남은 한곳은 술이 필수이며, 공장에서 살아야한다! 라고 했....음;; 요즘 시대에?)

 

 

현재 상황을 정리하자면:

C#은 백엔드, WPF는 프론트엔드였다!

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그냥 웹과 비슷하게 윈도우 프로그램을 만든다고 생각하면 된다. 웹을 해봤다면 쉬울 수도 있다(내 경험상 그렇다).

 

기계 자동화 기술과 PLC(Programmable Logic Controller) 관련 지식이 필요하긴 하지만,

나는 그쪽을 직접 다루지 않는다.

 

회사에서 이미 만들어둔 코드를 복사해 약간 수정하는 수준이다.

코드를 복사하면서 이해하고, 약간의 변형을 주는 정도다.

 

아직 공장 현장에 직접 간 적은 없고,

상사분들도 많아야 일주일에 1~2번 가는 정도다.

주로 프로젝트 마무리나 설치할 때 현장에 가는 것 같다.

(그렇다고 공장에 길어야 4시간 정도고 하루종일 있지 않다)

주로 회사에서 코딩한다. 

 

아직 현장 경험은 없지만, 지금까지는 회사 생활에 만족하고 있다.

칼퇴! 칼퇴! 땡하면 집가!!!!

회식도 나의 환영회 말고는 없었다! 


 

역시 인터넷 세상을 믿을게 못되는 것 같다. 

직접 해보지 않으면 모르는 것들이 너무나 많다. 

다른점도 너무나 많고, 

비행기는 매번 탈때마다 느낌이 다르고, 해외에서 악명 높은 비행기 '라이언에어'도 타봤지만 

나는 세상에서 가장 침대같은 느낌의 착륙느낌이었다. (처음 느껴보는! )

셀프체크인할때도 직원분이 코리아 좋다면서 웃으면서 말걸어주기도 하였다!

 

 

이렇게 매 시기마다 후기는 달라진다. 

세상에 얼마나 많은 중소기업이 있는데!

 

 

 

'중소벤처기업부' 사이트를 보면 다음과 같이 말한다. 

 

 

2023년 기준, 한국에는 약 700만 개의 중소기업이 있습니다.
중소기업은 전체 기업 수의 99% 이상을 차지하며, 전체 고용의 약 **80%**를 담당하고 있습니다.

https://www.mss.go.kr/site/eng/02/20202000000002019110610.jsp

 

Ministry of SMEs and Startups

SMEs play an important role in Korean Economy. According to business statistics, SMEs take up ninety-nine percent of number of enterprises, eighty-three percent of total employment, thirty-four percent of export.

www.mss.go.kr

 

 

고작 인터넷의 안좋은 글만 보고, 대기업을 못가는 사람들이 중소기업을 쳐다도 안보고

집에서만 있는 행위는 멈추기 바란다. 

 

공부도 하기 싫은 데 취직 공부한다는 다짐만하고 아무것도 안할 바에는 좋은 중소기업가서 편하게 일하고 1년에 3천만원이라는 돈을 버는게 나에게는 최선이라는 것이다. 

 

 

[문제]

mssql에서 중국에 저장할려고 하는데, 

愛你愛你愛你라는 글자가  愛?愛?愛? 이런식으로 저장이 된다. 

 

 

 

[해결 방법] 

愛你愛你愛你 와 같은 문자열을 삽입하려면 따옴표를 적절하게 이스케이프해야 합니다.

1. 문자열 앞에 N을 붙여서 Unicode 문자를 사용

2. 문자열 내의 단일 인용부호는 두 개의 단일 인용부호로 변경

나는 1번 2번 둘다 해서 해결했다. 

 

 


 

 

 

[예시]

1.  문자열 앞에 N을 붙여서 Unicode 문자를 사용

string.Format("insert into 테이블명(id, one) values('{0}', 'N{1}'))", ID, ONE);

 

INSERT INTO YourTable (YourColumn)
VALUES (N' 愛你愛你愛你 ')  이런식으로 되겠다. 

 

 

2. 문자열 내의 단일 인용부호는 두 개의 단일 인용부호로 변경

sQuery = string.Format("insert into 테이블명(id, one) values('{0}', 'N{1}'))", ID, ONE.Replace("'", "''"));

해당 변수뒤에 .Replace("'", "''") 을 붙여주면 되는데... 

 

Replace(" ' ", " ' ' ") 이런 것이다. 

' 하나를 '' 2개로 해주면 해결된다?!

 

 

 

단일 인용 부호(')를 두 개의 단일 인용 부호('')로 바꾸는 이유는 SQL 인젝션 공격을 방지하고 문자열을 올바르게 처리하기 위함.

즉,  

 

  • SQL 인젝션 공격 방지: 사용자 입력을 안전하게 처리하여 악의적인 코드 실행을 방지합니다.
  • 문자열 이스케이프 처리: SQL 쿼리에서 문자열을 올바르게 처리하여 구문 오류를 방지합니다.

 

 

 

XML이란?

XML(Extensible Markup Language)는 데이터 저장 및 전송을 위한 마크업 언어입니다.

XML은 주로 데이터 구조를 정의하고 정보를 계층적으로 표현하는 데 사용됩니다.

 

 

XML의 기본 구조

XML 문서는 다음과 같은 기본 구성 요소로 이루어져 있습니다:

  1. 선언:
    • XML 문서의 시작 부분에 XML 선언이 포함됩니다. 예: <?xml version="1.0" encoding="UTF-8"?>
  2. 루트 요소:
    • XML 문서는 단 하나의 루트 요소(root element)를 가져야 합니다. 모든 다른 요소는 이 루트 요소의 하위 요소가 됩니다.
  3. 요소(Elements):
    • 요소는 XML 문서의 기본 단위로, 시작 태그와 종료 태그로 구성됩니다. 예: <element>Content</element>
  4. 속성(Attributes):
    • 요소는 추가 정보를 제공하는 속성을 가질 수 있습니다. 속성은 시작 태그 내에 정의됩니다. 예: <element id="1">Content</element>
  5. 텍스트 콘텐츠:
    • 요소는 데이터를 담고 있는 텍스트 콘텐츠를 포함할 수 있습니다. 요소는 텍스트, 다른 요소, 또는 두 가지를 모두 포함할 수 있습니다.

 

[예시코드]

<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>Effective C#</Title>
        <Author>Bill Wagner</Author>
        <Year>2019</Year>
    </Book>
    <Book id="2">
        <Title>Learning XML</Title>
        <Author>Erik T. Ray</Author>
        <Year>2003</Year>
    </Book>
</Library>

 

  • 루트 요소: <Library>
  • 하위 요소: <Book>, <Title>, <Author>, <Year>
  • 속성: <Book id="1">에서 id 속성

 

 

XML의 장점

  1. 가독성: XML은 텍스트 기반으로, 사람이 읽고 이해하기 쉽습니다.
  2. 확장성: 새로운 데이터 구조를 쉽게 추가할 수 있습니다.
  3. 표준화: 다양한 플랫폼과 언어에서 지원됩니다.

 

 


 

 

 

 

 

이 함수는 화면의 버튼을 클릭하면 작동하는 함수이다. 

코드에 주석으로 아주 자세히 작성해였다. 

 private void btn_Add_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     try
     { 
		// 파일 열기 대화상자를 생성
         OpenFileDialog dlg = new OpenFileDialog();

		// 사용자가 파일을 선택했는지 확인
         if(dlg.ShowDialog() == DialogResult.OK)
         {
         	 // XML 문서를 로드하기 위한 XmlDocument 객체 생성
             XmlDocument doc = new XmlDocument();
             // 사용자가 선택한 XML 파일을 로드
             doc.Load(dlg.FileName);

             // XML 내의 모든 Message 노드를 가져오기
             // XPath 쿼리를 사용하여 A아래의 B노드들을 선택
             XmlNodeList messageNodes = doc.SelectNodes("/A/B");

             foreach (XmlNode messageNode in messageNodes)
             {
                 // <B> 노드의 id 속성 값
                 string messageId = messageNode.Attributes["id"].Value;

                 // <B> 하위의 <one>, <two>, <three> 값 추출
                 string ONE = messageNode.SelectSingleNode("one")?.InnerText.Trim();
                 string TWO = messageNode.SelectSingleNode("two")?.InnerText.Trim();
                 string THREE = messageNode.SelectSingleNode("three")?.InnerText.Trim();                         
				 
                 // 데이터베이스에 메시지를 저장하는 메서드 호출
                 this.{db 불러오는 형식}.(messageId, ONE, TWO, THREE);
             }
         }
     }
     catch(Exception ex)
     { 
     }
 }

 

 

 

 

별도로 체크해야할 것

 

 

1. .XML의 구조


<?xml version="1.0"?>
  <!-- ================================================================ -->
  <!--                             정보                       -->
  <!--                             정보~               -->
  <!-- ================================================================ -->
<A> 
  <B id="WHAT">
    <one> information </one >
    <two> information </two >
    <three> information  </three >
  </B>

  <B id="how">   
    <one> information </one >
    <two> information </two >
    <three> information </three >
  </B>
</A>

 

 

2. db 연결 부분 

{} 안의 내용을 각자 개별적으로 알아서 수정해야한다. 

(물론 {}도 나중에 삭제해야함!)

 

 

 

 

 

 

[ 문제 ]

DevExpress WPF Charts에서 

일, 주 일때는 그래프가 잘 보이는데, 

달(month)일때는 실같이 얇~게 보여서 엥엥엥 하루종일 찾아봤는데 결국 못찾음......

그 후 시간이 흘러 ......

 

 

 

 

이것도 안됨..

                //for (int i = 0; i < 4; i++)
                //{
                //    var series = new BarStackedSeries2D();
                //    series.BarWidth = 1;  
                //    this.cht_Main.Series.Add(series);
                //}

 

 

chat gpt는 다음과 같이 알려줌.. (이건 걍 안됨)

axisy.wholerange.setminmaxvalues(0, 30);

 

 

 

 

 

[해결방법]

아래와 같이 하면 된다.!

https://docs.devexpress.com/WPF/115179/controls-and-libraries/charts-suite/chart-control/axes/axis-scale-types

   this.cht_Main.AxisX.DateTimeScaleOptions = new ManualDateTimeScaleOptions()
   {
       MeasureUnit =DevExpress.Xpf.Charts.DateTimeMeasureUnit.Month
   };

 

 

 

 

부제 : 내 손으로 만드는 자동 주식 거래 시스템

 

 

1부 : 파이썬 프로그래밍

3장_ 기본 자료구조* (리스트, 튜플, 딕셔너리)
#리스트
#생성
list = [] 
list = [100, 200, 300] 
list.append(400) #추가
list #출력

buy_list = ['Naver', 500]
buy_list[0] #인덱싱 출력

kospi_top5 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽']
kospi_top3 = kospi_top5[0:3] #슬라이싱
kospi_top3 #출력 => ['삼성전자', 'SK하이닉스', '현대차']

# 삽입
buy_list.insert(2, 'Daum')
buy_list

#삭제
del buy_list[1]
buy_list

len(buy_list)

 

#튜플
#리스트는 리스트 내의 원소를 변경할 수 있지만
#튜플은 변경 불가능. 즉, 변경없는 데이터는 튜플로 하면 빠르다!

tuple =()
t = ('Samsun', 'LG', 'SK')
t
len(t)
t[1]
#t[0] = "Naver"  #err tuple' object does not support item assignment

#슬라이싱
t[0:2]



#딕셔너리 = 사전
#키와 값의 쌍으로 저장
#순서가 없기에 인덱싱 지원 안함. 
#키를 통해서 검색한다. 

dictionary = {}
type(dictionary)


dictionary['Naver'] = 300000
dictionary  #{'Naver': 300000}

#del dictionary['Naver']
#dictionary    #{}

dictionary.keys()
dictionary.values()

 

 

 

 

 

[ 연습문제 ]

#3-1 ~ 3-5
naver_closing_price = [488500, 500500, 501000, 461500, 474500]
naver_closing_price
print(max(naver_closing_price)) #501000
print(min(naver_closing_price)) #461500
print(max(naver_closing_price) - min(naver_closing_price)) #39500
print("수요일 종가: ", naver_closing_price[2]) #501000

 

 

#3-6 ~ 3-7
naver_closing_price2 = {'09/07':474500, '09/08':461500, '09/09':501000, '09/10': 500500, '09/11':488500}
naver_closing_price2

print(naver_closing_price2['09/09']) #501000

 

 

 

 

 

각 용어들의 큰 틀은
많은 용어가 있지만 크게 3단계(레벨)로 나눌수 있다.

 

 

1. Planning & Management (계획 및 관리)

 제조 공정의 전략적 목표 설정, 자원 배분, 그리고 전체적인 비즈니스 계획과 관련된 시스템들을 포함합니다.

  • ERP (Enterprise Resource Planning)
    • 역할 : 비즈니스의 모든 자원을 통합하여 계획하고 관리합니다. 재무, 인적 자원, 공급망, 물류 등의 데이터를 통합해 조직 전체의 효율성을 높입니다.
    •  상호작용 : MES와 연결되어 생산 계획과 자재 관리가 실시간으로 반영되며, SCM과도 협력하여 전체 공급망의 최적화를 지원합니다.
  • SCM (Supply Chain Management):
    • 역할 : 공급망 전체를 관리하며, 자재 수급, 생산 계획, 유통 등을 조율합니다.
    • 상호작용 :  ERP와의 통합을 통해 수요 예측과 재고 관리를 최적화하고, MES에 생산 계획을 전달합니다.
  • CRM (Customer Relationship Management):.
    • 역할 : 고객 관리와 판매를 지원하며, 고객의 요구와 피드백을 생산 및 품질 관리에 반영합니다
    • 상호작용: ERP와 통합되어 고객의 주문 및 서비스 데이터를 관리하며, 생산 계획에 영향을 미칩니다.
  • PDM / PLM (Product Data Management / Product Lifecycle Management)
    • 역할: 제품의 설계, 개발, 생산, 폐기까지 전 과정을 관리하며, 제품 데이터와 설계 정보를 통합 관리합니다.
    • 상호작용: MES와 연결되어 설계 변경 사항이 생산 공정에 즉시 반영됩니다.

2. Production & Execution (생산 및 실행)

 실제 생산 활동을 관리하고 실행하는 시스템들을 포함합니다.

  • MES (Manufacturing Execution System):
    • 역할: 생산 공정을 관리하고, 생산 일정, 품질 관리, 작업자 할당 등을 실시간으로 제어합니다.
    • 상호작용: ERP와의 통합을 통해 생산 계획을 실행하며, CMS와 FMS로부터 데이터를 수집하여 생산 현황을 모니터링하고 제어합니다.

 

3. Monitoring & Control (모니터링 및 제어)

 실시간으로 생산 현황을 모니터링하고, 필요한 경우 제어를 통해 생산 품질을 유지하는 시스템들을 포함합니다.

  • CMS (Control & Monitoring System): (중간역할)
    • 역할: 생산 현장의 설비와 공정을 실시간으로 모니터링하고 제어하여, 생산의 일관성과 품질을 유지합니다.
    • 상호작용: MES에 실시간 데이터를 제공하며, 문제가 발생하면 즉시 조치를 취합니다.
  • FMS (Flexible Manufacturing System):
    • 역할: 다양한 제품을 유연하게 생산할 수 있는 시스템으로, 자동화된 생산 설비를 통해 빠르게 생산을 전환합니다.
    • 상호작용: MES와 연결되어 생산 요구에 맞게 자동으로 작업을 조정하고 실행합니다.
  • TCS (Tool Control System):
    • 역할: 생산에 사용되는 도구와 장비를 관리하고 제어합니다.
    • 상호작용: CMS와 연결되어 도구 상태와 사용을 모니터링하며, MES에 데이터를 전달합니다.
  • OEE (Overall Equipment Effectiveness):
    • 역할: 설비의 효율성과 생산성을 측정하는 지표로, 가동 시간, 성능, 품질 등을 평가합니다.
    • 상호작용: CMS와 MES의 데이터를 활용하여 OEE를 계산하고, ERP에 보고합니다.
  • RDS (Remote Diagnosis System):
    • 역할: 원격으로 장비의 상태를 모니터링하고 진단하여, 문제 발생 시 신속하게 대응할 수 있도록 지원합니다.
    • 상호작용: CMS와 연결되어 장비의 이상 상태를 진단하고, 필요한 조치를 취합니다.

 

 

 

이해가 안가죠?
쉽게 말하면

 

 

3. Monitoring & Control (모니터링 및 제어) 에서 

공장 설비가 가동될때 실시간으로 전산화된 데이터를 수집한다. 에러, 재고..등등 모든 것을. 

FMS는 자동화 기능, CMS는 생산 관련을 전산화한것. TCS는 도구,장비를 전산화 한것

OEE, RDS는 설비, 장비의 상태나 최대생산량을 수치화한 것. 

 

이를 CMS가 통합하여 모든 것을 모니터링 한다. 

이후 CMS가 MES에서 보내고  1(SCM,ERP..) 과 관련된 것들이 MES 에게 지시를 한다. 

 

    이때, CMS 와 MES가 차이가 안나는 것 같아 보이는데, 예를 들어보면

CMS가 장비의 상태나 성능 데이터를 수집하여 MES에 제공하면, MES는 이 데이터를 기반으로 생산 계획을 조정하거나 작업 지시를 수정할 수 있습니다.

CMS는 단순히 공장의 모든 것을 데이터를 전산화 한것 기록일뿐이다.

MES는 모든 내용을 바탕으로 어떠한 지시나 계획을 조정하는 역할을 한다. 

그림과 같이 다른 분류이다.  

 

(왜 이렇게 구분한 건지는 난 모른다. 그저 이미 나누어 두었다는 것… ㅜ.ㅜ)

ERP와 MES의 차이점은 

MES는 모~든 것의 과정또한 알고 있다.(구동 과정 중 에러의 정확한 원인)

하지만 ERP는 ‘결과’만 가지고 있기에 다르다. (에러 80% - 이유는 모름.)

 

(왜 통합해서 관리 안하는 거지; 이유가 있었겠지)

 

물론 회사 마다 조금씩 서로의 개념에 침범하는 경우도 있을 수도 있다.

 


 

 

그러다가 또 의문 왜 이렇게 프로그램을 사용하는 걸까??

 

전산화한다는게 무슨 말이지? 라는 의문이 들 수 도 있다. 

전산화수작업으로 수행되던 작업을 컴퓨터와 소프트웨어를 활용하여 자동화하고 효율적으로 관리하는 과정 

이를 통해 데이터의 수집, 저장, 처리, 분석을 더 빠르고 정확하게 가능.

 

기존의 작업 방식:

  • 수기 기록: ‘종이’에 직접 작성하거나 ‘엑셀’ 파일을 사용하여 데이터를 수집. 이는 데이터의 누락, 오류, 일관성 문제
  • 비효율적인 정보 접근: 필요한 정보나 기록을 찾기 위해 수많은 폴더를 검색해야 했으며, 많은 시간이 소모
  • 기계 에러 관리의 어려움: 기계의 상태나 에러를 실시간으로 모니터링하기 어려워, 문제가 발생했을 때 대응 늦음.

 

 

스마트 팩토리는 이러한 문제를 해결하기 위해 PLC (Programmable Logic Controller)와 같은 자동화 기술을 활용하여 기계와 프로그램을 연결하고, 실시간으로 데이터를 관리하는 시스템.

 

자동화: PLC와 같은 자동화 장치를 통해 생산 공정을 제어하고, 기계와 시스템의 상태를 실시간 모니터링

실시간 데이터 수집 및 분석: 센서와 IoT(Internet of Things) 기술을 활용하여 데이터를 실시간으로 수집하고, 이를 기반으로 분석하여 의사 결정을 지원

통합된 시스템 관리: ERP, MES, SCM 등의 시스템과 통합하여 생산 계획, 재고 관리, 품질 관리 등 모든 부문을 효율적 관리

문제 예방 및 유연한 대응: 실시간 모니터링과 예측 분석을 통해 문제를 사전에 인식 및 대응 가능

 

스마트 팩토리의 이점

  • 생산성 향상: 자동화된 공정과 효율적인 자원 관리로 생산성을 높임
  • 품질 개선: 실시간 모니터링과 데이터 분석을 통해 품질 문제를 사전에 식별하고 수정 가능
  • 비용 절감: 에너지 사용, 자원 낭비를 최소화, 인건비와 유지보수 비용을 절감
  • 유연성 및 적시성: 다양한 제품을 유연하게 생산할 수 있으며, 변화하는 시장 요구에 신속하게 대응함
  • 데이터 기반 의사 결정: 데이터 분석을 통해 informed decision을 내리고, 공정의 최적화와 예측적 유지 보수를 지원

 

 

 

 

+ Recent posts