C# Dictionary Value 값 가져오기 (TryGetValue, out 예제) C# 딕셔너리에서 값을 가져오려면 당연히 키 값을 인자로 전달해야 합니다. 그리고 변수를 따로 선언해 Dictionary 값을 할당하는데요. 하지만, out 키워드를 이용하면 변수 추가 선언 없이 값을 사용할 수 있습니다. 1234567891011var values = new Dictionary();values.Add("A", "A description");values.Add("B", "B description");values.Add("C", "C description"); if (values.TryGetValue("C", out string description)){ System.Console.WriteLine(de..
C++ 정규표현식에서 { } 사용 시 주의할 점과 regex 예제 비주얼스튜디오 2005까지 표준 라이브러리로 포함되었던 atlrx.h는 2008부터 표준에서 제외되었습니다. 그리고 시간은 흘러 2018년이 되었는데요. 현재는 비주얼스튜디오 2017에서 C++ regex.h를 인클루드하여 정규표현식(regular expression, 이하 regex)을 사용할 수 있습니다. 정규표현식 자체는 변할 것이 없으므로 VisualStudio 2005나 2017이나 차이가 없습니다. 다만 소스 코드에서 표현할 땐 괄호에서 차이가 발생하는데요. 아래처럼 { } 괄호 한 쌍 사용이 달라졌습니다. VS 2005 regex 1{[\d]}cs VS 2017 regex 1[\d]cs [\d] 의미 = [ ] 사이의 숫자와의..
contains invalid OMF record, type 0x21 (possibly COFF), C++ 빌더 순수 C++, VC++ 등으로 제작한 라이브러리를 사용할 때 발생하는 에러입니다. 이럴 땐 implib를 이용해 BC++(C++ Builder)에서 사용할 수 있도록 변경해 주어야 합니다. cmd.exe, 커맨드창을 띄우고 아래와 같이 명령어를 입력하세요. 명령어 : implib name.lib name.dll 정상적으로 수행된다면 아래와 같은 결과 메시지가 보입니다. 결과 메시지 : Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation 앞의 lib는 BC++(C++ 빌더)에서 사용할 lib 파일이고 뒤에 dll은..
C# 프로그래밍 입문, 윈폼 계산기 프로그램 예제 (VS2017) C# 프로그래밍 입문하는 분들에게 소개하는 간단한 계산기 프로그램입니다. 비주얼 스튜디 2017을 이용해 위와 같이 윈폼을 꾸몄습니다. Label, textBox, button 총 3개의 요소를 사용합니다. 그리고 더하기, 곱하기만 가능한 계산기 소스 코드는 아래에 소개합니다. 혹시 프로젝트가 필요하다면 바로 아래 첨부 파일을 사용하셔도 됩니다. VS2017 C# 계산기 프로그램 예제 이 프로그램은 Num1, Num2 textBox에 숫자를 넣고, 더하기 또는 곱하기 버튼을 누르면 결과가 Result 오른쪽 텍스트 박스에 보이는 프로그램입니다. C# 프로그래밍 입문 시작합니다. 1234567891011121314151617181920212..
C++ 폴더 내 파일 이름, 개수 리스트 만들기 (vector 응용 예제) 출처 : HOW TO LIST THE FILES IN A DIRECTORY IN C++ 소개할 예제는 C++에서 제공하는 read_directory() 함수를 이용합니다. 12345678910111213141516#include #include #include #include #include typedef std::vector stringvec; int main(){ stringvec v; read_directory(".", v); std::copy(v.begin(), v.end(), std::ostream_iterator(std::cout, "\n"));}Colored by Color Scriptercs 추가로 아래 4개 방법으..
이노센티브 사례와 R&D 투자란 (Innocentive 비즈니스) 기술을 거래하다, 이노센티브 앞에서 언급한 P&G나 IBM은 한 회사의 R&D를 개방한 경우라고 할 수 있다. 참조 1. 오픈 이노베이션 성공 사례, IBM 잼 (조직 문화 개선 사례) [링크] 2. 오픈 이노베이션 플랫폼, P&G 혁신 성공 전략과 사례 [링크] 여기에서 더 나아간 것이 독립적인 제3자가 R&D가 필요한 회사와 이를 수행할 능력이 있는 회사나 연구 기관을 연결해주는 형태이다. 이노센티브(InnoCentive)가 대표적인 예이다. 이노센티브는 원천 기술이나 제품 개발이 필요한 회사가 수요자로, 이러한 기술을 보유한 개인이나 회사가 공급자로 참여하는 일종의 R&D를 위한 시장이다. 수요자가 성공 보수를 제시하면 공급자가 이에..
C# 폴더 없으면 생성하기 2가지 방법 (DirectoryInfo) 저는 담백한 걸 좋아하니 담백하게 소스만 소개합니다. 1. DirectoryInfo 사용하기 123456DirectoryInfo di = new DirectoryInfo(@"C:\test"); if (di.Exists == false){ di.Create();}Colored by Color Scriptercs DirectoryInfo 객체로 작업할 게 있다면, 위와 같이 사용하는 편이 좋습니다. 하지만, 단순히 폴더 없으면 생성하려고 유무만 판단할땐? 그땐 아래처럼 소스 4줄로 끝내세요. 2. Directory 사용하기 1234if (Directory.Exists(folder_path_) == false){ Directory.Create..
C# get set 프로퍼티 안전하게 사용, Null Exception 유효성 (nameof) C# 프로퍼티인 get set은 더욱 안전하고 편리하게 값을 할당/반환할 수 있습니다. get은 해당 코드 블록을 읽을 때 실행되고, set은 코드 블록에 새 값을 할당할 때 실행됩니다. ref 또는 out으로 속성을 전달할 수 없다는 특징도 있습니다. 그리고 C# 문자열의 유효성 검사를 할 때 string.IsNullOrEmpty() 함수를 이용합니다. 이건 set 프로퍼티가 실행될 때도 마찬가지인데, 변수를 호출하는 횟수가 많다면 매번 string.IsNullOrEmpty() 함수를 호출하기 번거로울 수 있습니다. 이럴 때, set 프로퍼티 자체에 유효성 검증 코드를 삽입하면 번거로움을 피할 수 있습니다. ..
ARM Processor 소프트웨어 구조와 경성 실시간 시스템 ARM Processor 소프트웨어 구조ARM 시스템은 구동을 위해서 4가지 전형적인 소프트웨어 컴포넌트가 요구된다. 초기화 코드(부트로더 : Boot Loader)는 하드웨어에 전원이 인가된 이후 운영체제가 실행될 수 있는 상태로 만들어주는 역할을 한다. 이 코드는 일반적으로 메모리 컨트롤러와 프로세서 캐시를 셋업하고, 일부 디바이스를 초기화시켜 주며, 운영체제 없이 초기화 코드 기반의 응용 프로그램이나 디버그 프로그램을 사용할 수 있도록 돕는다. 초기화 코드는 운영체제 이미지에게 제어권을 넘겨주기 전에 많은 태스크를 처리하는데 이 태스크들은 초기의 하드웨어 설정 코드, 진단 코드, 부팅 코드의 세 단계로 구분할 수 있다. 초기의 하드웨어 ..
윈도우7 64비트, Int16, Int32, Int64 속도 비교 (C# 코드) 속도 자체만 놓고 보면, 기본 자료형인 Int32가 제일 빠릅니다. 아마도 형변환 속도 순서[참고]도 똑같을 겁니다. 윈도우7에서 나온 위의 결과입니다. 소스가 바로 아래에 있습니다. (언어는 C#) ■ 예제 설명10,000 by 10,000의 『배열 3개』를 선언. (Int16, Int32, Int64)배열 내부에 데이터를 할당 대입.별도의 변수 1개에 배열의 값을 차례로 할당.2, 3의 과정을 스톱 워치로 체크. ■ 소스 코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596..
C++11 std::string to int 변경할 땐 stoi atoi 함수 사용 C++11 부터 std::string을 숫자로 변환하는 함수가 추가되었습니다. 기존에는 아래처럼 문자열을 숫자로 바꿨죠. 1atoi(str.c_str())cs 이제는 새로 추가된 함수 stoi를 사용하면 됩니다. 1std::stoi(str)cs 위 소스 코드의 str 자리에 std::string 변수를 추가하면 됩니다. 또한 실수형으로도 변환이 가능합니다. long stol(string)float stof(string)double stod(string) 관련 함수는 cpp 레퍼런스 stoi 항목에 자세하게 설명되어 있으며, 별도로 정리한 포스트는 9월에 남겼습니다. 만약 C++11을 사용할 수 없는 환경이라면 아래 5개 ..
MELSEC PLC NET 메뉴얼, DLL 사용 (멜섹 c++, 네트워크, 통신) MELSEC PLC의 『NET 버전 메뉴얼』입니다. 모든 메뉴얼이 있진않고 "H" 버전에 대한 내용만 있습니다. 메뉴얼 1 링크 - MELSECNET/H 네트워크 시스템(리모트 I/O 네트워크편).pdf [링크] 아래는 Q대응 MELSECNET/H 네트워크 시스템(리모트 I/O 네트워크편) 목차입니다. QJ71LP21QJ71LP21-25QJ71LP21S-25QJ71LP25GQJ71BR11QJ71LP25-25QJ71LP25GQJ71BR15 메뉴얼 2 링크 - MELSECNET-H 네트워크 시스템(PLC간 네트워크편).pdf [링크] 아래는 Q대응 MELSECNET/H 네트워크 시스템(PLC간 네트워크편) 목차입니다. QJ71..