본문 바로가기
728x90

전체 글255

[MFC] CFileDialog 클래스 1 2 3 4 5 6 7 8 9 explicit CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL, DWORD dwSize = 0, BOOL bVistaStyle = TRUE); 1. 매개 변수 - bOpenFileDialog : TRUE(파일 열기 대화상자) , FALSE : 다른 이름으로 저장 대화상자. - lpszDefExt : 기본 파일 이름 확장명 - lpszFileName : 파일 이름 상자에 .. 2019. 4. 6.
[MFC] csv파일 경로를 ListControl에 채우기 1. MFC 기본 컨트롤러 배치 (Button, ListControl) MFCL 기본컨트롤 ListControl과 Button(버튼)을 추가해줍니다. 2. 두 컨트롤에 대해 변수 추가 해당 컨트롤을 우클릭하여 변수를 추가해줍니다. 리스트 컨트롤의 변수이름은 ListController로 해줍니다. 이름은 편하게 지으시면 됩니다. 사진은 없지만 버튼도 똑같이 해주면됩니다. 3. ListControll의 속성을 변경해줍니다. 여기까지 했으면 아래와 같이 보입니다. 버튼 캡션이름은 ReadFile로 했습니다. 안바꾸셔도 됩니다. 코드 작성이전에 해당 변수들이 잘 만들어졌는지 확인합니다. 클래스명 변수이름; ex) CButton(클래스명) ReadFile(변수이름); 4. OnInitDialog()로가셔서 Lis.. 2019. 4. 6.
ARM을 이용한 카메라보드 뒤에 선이 복잡하여 노이즈와 탈 부착 편의성을 개선하기 위해 소켓용 PCB 보드를 제작하여 주문했다. 처음엔 회로도 라이브러리와 3d 풋프린트를 만들었다. 두번째로 회로도와 심볼라벨을 배치하고, 만든 라이브러리를 적용시켰다. 거버파일까지 생성해줘서. 한백전자에 일주일전에 요청을하고 어제 받았다 짠!(아침 6시까지 삽질하게 될줄은 이때까지만 해도 몰랐다...) 그리고 옆에 핀 소켓들과 테스트를 해봤다. PF4 PE8번핀에 high를 걸었다. 불이 들어온다. 사이즈 완벽! 1차는 이렇게 실패로 끝나고. 첫 오류 수정사항을 정리해봤다.LCD PIN PC11 -> PE7 으로 변경해야함. PE7 -> PE9로 변경해야함.실크레이아웃으로 핀 위치 지정해놓을것 (시간을 줄일 수 있음)배치문제해결하기 (LCD,카메라.. 2018. 10. 14.
[Level1]소수의 합(에라토스테네스의 체) [연습문제] C/C++ 소수 찾기1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)제한 조건n은 2이상 1000000이하의 자연수입니다.입출력 예nresult10453입출력 예 설명입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환#define TRUE 1 #define FALSE 0 #include #include using namespace std; int solution(int n) { int answer = 0, Prime_count = 0; int isPrime = TR.. 2018. 10. 2.
[Level1] 두 정수 사이의 합 [연습문제] C/C++ 두 정수 사이의 합두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.a와 b의 대소관계는 정해져있지 않습니다.입출력 예abreturn35123335312 풀이1)#include #include using namespace std; long long solution(int a, int b) { long long answer = 0; int step =0, temp = 0; step = (a - b); if (ste.. 2018. 10. 1.
[STM32F429]FSMC(LCD INTERFACE), DCMI 보충내용 2018. 10. 1.
[STM32F429]DCMI(Digital camera interface)와 OV7670 CAMERA-(2) 코드(CAMERA) CAMERA.h #define WRITE_SLAVE_ADDR 0x42 #define READ_SLAVE_ADDR 0x43 #define DEVICE_REG_NUM 140 //121 #define I2C_DIR_TR 0x00000001U #define QVGA_RESOLUTION (320*240) void SCCB_write_reg(uint8_t reg_addr, uint8_t data); void CAMERA_Init(void); int SCCB_read_reg(uint8_t reg_addr); void ov7670_capture_snapthot(); CAMERA.c #include "stm32f4xx.h" #include "stm32f4xx_hal.h" #include "stm32f4xx_hal_dcm.. 2018. 9. 21.
[Level1] 문자열 내림차순으로 배치하기 [연습문제] C/C++ 문자열 내림차순으로 배치하기문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.제한 사항str은 길이 1 이상인 문자열입니다.입출력 예sreturnZbcdefggfedcbZ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #define MAX_SIZE 7 #include #include #include using namespace std; string solution(string s) { string get_string; get_string.. 2018. 9. 20.
[Level1] 문자열 내 마음대로 정렬하기[연습문제] C/C++ 문자열 내 마음대로 정렬하기문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.제한 조건strings는 길이 1 이상, 50이하인 배열입니다.strings의 원소는 소문자 알파벳으로 이루어져 있습니다.strings의 원소는 길이 1 이상, 100이하인 문자열입니다.모든 strings의 원소의 길이는 n보다 큽니다.인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.입출력 예stringsnreturn[sun, bed, car]1[car, be.. 2018. 9. 20.
[Level1] 문자열 내 p와 y의 개수 [연습문제] C/C++ 문자열 내 p와 y의 개수대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.예를들어 s가 pPoooyY면 true를 return하고 Pyy라면 false를 return합니다.제한사항문자열 s의 길이 : 50 이하의 자연수문자열 s는 알파벳으로만 이루어져 있습니다.입출력 예sanswerpPoooyYtruePyyfalse입출력 예 설명입출력 예 #1 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.입출력 예 #2 'p.. 2018. 9. 20.
[STM32F429]DCMI(Digital camera interface)와 OV7670 CAMERA-(1) (CAMERA 초기화 코드 및 캡쳐 및 영상 구현 코드는 9월20일 게시 예정) 2018. 9. 19.
[STM32F429]FSMC(Flexible Static Memory Controller)와 TFT_LCD(4) 소프트웨어 구성 S/W source(LCD.C) 아래부터 LCD.C 2018. 9. 6.
[STM32F429]FSMC(Flexible Static Memory Controller)와 TFT_LCD(3) 하드웨어 구성 2018. 9. 6.
[STM32F429]FSMC(Flexible Static Memory Controller)와 TFT_LCD(2) 2018. 9. 6.
[STM32F429]FSMC(Flexible Static Memory Controller)와 TFT_LCD(1) 2018. 9. 6.
한국교통대학교 취업창업지원과 한국교통대학교 취업창업지원과의 학생 지원 사업. 취업 프로그램 및 경력 개발 동아리 진로에 깊은 고민을 안고 취업선에 열정적인 학생들, 그리고 깊은 고민을 가까운 선배님 처럼 들어주고 학생들에게 진정 도움이되는 조언과 방향을 제시해주는 취업창업지원과 이명인 선생님. 많은 재학생들이 프로그램에 관심을 갖고 빠른취업이아닌 바른취업을 했으면 좋겠습니다. 컴퓨터공학과"임베디드 취업가즈아 팀" 대표 상담 인증샷. 2018. 5. 3.
Jump Throw의 좌표를 응용하여 y축으로만 값을 주어 점프를 하게 만듦 (점프 전의 모습과 좌표) (스페이스바를 누른 후 점프한 모습 그리고 좌표) 2016. 12. 28.
Throw 게임 오브젝트에 힘을 줘서 움직임을 만드는 방법. 게임 오브젝트에 힘을 주어 움직임을 만들려면 해당 게임 오브젝트에 물리 작용을 처리할 리지드바디(Rigdbody) 컴포넌트가 필요. [참고]6번재 줄의 힘을 달리하면 가해지는 힘의 양을 조절 하여 날아가는 거리를 조절 할 수 있다. 9번째줄의 백터값 또한 16번째줄의 힘과 백터값을 곱하기때문 날아가는 거리를 조절 할 수 있다. Vector3(각 x, y, z 축 방향) 위 코드는 800을 각 x , y 축으로 기존의 힘의 반으로 400의 힘으로 x, y 축으로 해당 오브젝트에 힘을가함.[참고] GetComponent로 Rigidbody를 불러와 AddForce 함수를 참조하여 AddForce의 매개변수에 연산된 백터 값을 넣어주면 해당 스크립트를 컴포넌트.. 2016. 12. 28.
identity(회전 일치) 게임에서 회전을 많이 한 다음에 초기화를 통해 월드의 방향과 회전을 일치시킨다거나 A의 회전과 B의 회전을 일치시키기 위한 방법이 필요하다. 이럴 때 사용하는 것이 Quaternion.identity를 이용한 정렬. (상자 회전 전)(키보드 (우) 키를 누르면서 박스를 회전)(박스가 회전한 이후 마우스로 화면을 클릭하면 다시 원위치로) 2016. 12. 27.
Rotate 게임의 기본동작 회전 7번째 줄 : 트랜스폼(transform)중 초기 회전(rotation) 값을 지정한다. 오일러각(Euler Angle)을 이용해 지정. 11번째 줄 : 트랜스폼(transform)중 초기 회전(rotation)값을 지정한다. 9번째 줄에서 쿼터니안값(Quaternion)을 만들고 이를 이용해 지정. 13번째 줄 : 트랜스폼(transform)중 회전 값을 현재 값에서 지정한 값만큼 회전(Rotate) 시킨다. * 7번째 줄의 코드가 실행됐을때 Y축으로 50도 회전한 값이 초깃값으로 지정된다. 11번째 줄의 코드가 실행됐을때 Y축으로 100도 회전한 값이 초기 값으로 다시 지정된다. 13번째 줄의 코드가 실행됐을때 Y축으로 90도 회전하는 동작이 일어난다. 결과적으로 Y축 각은 50.. 2016. 12. 27.
2016 유니티 로드쇼 서울지역 10월 29일 마지막 유니티 로드쇼가 개최 되었다. 기존에 대전 지역을 신청했지만, 학교 중요한 알고리즘 시험이 겹쳐있어 아쉽게 참석하지 못했었고, 그리하여, 유니티 관계자분께 따로 전화를 드려 알아보니 오프라인 접수도 받는다고 했다. 그동안 학교에 아직까지 게임개발 쪽에 흥미가있고 공부하는 학우는 찾지 못하여, 혼자 공부하는데 어려움이 많았다. 정확히 말하면, 기간도 짧지만 엔진에 대한 정보나 모르고 있는 사실들이 너무 많아, 책으로 공부하기에는 제공되는 다양한 서비스를 아는데에는 한계가 있었다 로드쇼에서 제공하는 정보들 중에는 유익한 것들이 많이 있었다. □ 유니티 VR관련 내용 을 요약하자면처음에 인상 깊었던점은 가상현실 기술을 활용한 Unity Editor 였다. 위 동영상은 현재 구현된.. 2016. 11. 21.
Player basic move □ Vector3 ◆ 방향을 지시하는 용도로 사용할 때는(x,y,z)값을 0과 1로 표시한다. 각 방향에 대한 상수값을 사용할 수도 있다.◆ 거리를 지시하는 용도로 사용할 때는 (x,y,z) 값을 해당 크기 만큼 표시한다. .벡터3(Vector3)는 오브젝트의 이동 방향을 지시하거나 이동 거리, 회전을 표시할 때 사용한다. □ 프레임 시간의 보정 Update 메서드는 iOS나 안드로이드 모바일 기기에서는 1초당 최대 60프레임이 호출된다. 그런데 Update 메서드가 호출되는 횟수가 모든 기기에서 정확하게 똑같지는 않다. Update 메서드에서 처리하는 내용이 많은 경우 최신 기기는 빠르게 처리해 초당 60번 호출하는 데 문제가 없을 수 있지만, 오래된 기기는 성능이 떨어져 초당 20프레임만 호출할 수도.. 2016. 11. 21.
K-means, Approx_k Clustering(의사코드, 근사비율) □ K-means 알고리즘 - k평균 클러스터링 알고리즘은 클러스터링 방법 중 분할법에 속한다. ex) N개의 데이터 오브젝트를 입력 받았다면, 분할법은 N보다 작거나 같은 K개의 그룹으로 나누는데, 이 때 각 군집은 클러스터를 형성하게 된다. (1개 이상의 데이터 오브젝트로 구성된 k개의 그룹으로 나누는것) 이 때 군집을 나누는 과정에서 같은 그룹 내 데이터 오브젝트 끼리 유사도는 증가 다른 그룹에 있는 데이터 오브젝트와의 유사도는 감소. - 최초에는 무작위 k개의 중심 1)데이터를 선정하고, 해당 데이터로부터 각 2)데이터의 거리(유클리디언, 맨하탄 등)을 계산한다. 그 거리의 평균이 작은 곳으로 3)중심점을 변경하고, 4)다시 거리를 계산하는 것을 반복하여 최적의 군집을 찾을 수 있다. (유클리디언.. 2016. 11. 16.
함수 포인터(Function Pointer) 와 보이드 포인터(Void*) □ 함수 포인터 - 실행 코드인 함수의 주소를 다루는 포인터 - 함수의 이름은 함수가 있는 메모리의 시작주소가 된다. 함수명이 함수의 메모리의 주소이므로, 함수 포인터에 저장하면 함수를 다양한 방식으로 호출 할 수 있다. 함수 형태는 매개변수의 개수와 자료형, 그리고 반환값의 자료형으로 정의 한다. □ 함수 포인터 배열 - 함수 포인터를 배열에 저장하여 사용할 수 있다. □ 예제로 함수 포인터 살펴보기 함수 포인터를 선언할때 매개변수의 타입 또는 갯수를 설정해주지 않은 경우에는 가리키는 함수의 매개변수 형태와 상관없이 (반환값은 일치해야함) 정상적으로 실행되는 모습을 볼 수 있다. 하지만, 함수 포인터의 매개변수 형태(갯수)를 지정해놓은 경우, 갯수가 맞지 않아 컴파일시 다음과 같은 오류를 보게된다. 에.. 2016. 11. 2.
데몬(daemon) 정리. 중지시켜도 되는 서비스 acpid : ACPI(Advanced Configuration and Power interface)방식의 시스템 전력 관리를 위한 데몬 anacron : 시스템이 꺼져있을 경우 수행되지 못한 작업 확인 및 수행 atd : at 작업 스케쥴러 auditd : 리눅스 감시 데몬 /etc/audit autofs: 자동마운트 데몬의 작동을 제어하는 프로그램 avahi-daemon : 네트워크 서비스를 인식하는 멀티캐스트 DNS서비스 Avahi 데몬 avahi-dnsconfd : DNS 재설정 기능을 위한 데몬 bluetooth : 블루투스 장치를 사용하기 위한 데몬 capi : Comman ISDN API conman : 콘솔 관리 지원 서비스. 다수의 콘솔 장치와 동시 접속자에 대한 .. 2016. 10. 1.
크러스컬 알고리즘(KruskalMST) □ 크러스컬 알고리즘은 최소비용 생성나무(spanning tree 스패닝 트리)를 찾는 알고리즘이다. (생성나무란 그래프 이론에서 모든 꼭짓점을 포함하는 부분 나무이다.) 크러스컬의 알고리즘은 최소 비용 신장 트리가 최소 비용의 간선으로 구성됨과 동시에 사이클(cycle)을 포함하지 않는다는 조건에 근거하여, 각 단계에서 사이클을 이루지 않는 최소 비용 간선을 선택. □ 크러스컬 알고리즘의 순서 - 먼저, 그래프의 각 간선(edge)들을 가중치의 오름차순으로 정렬. - 정렬된 간선들의 리스트에서 싸이클을 형성하지 않는 간선을 찾아 최소비용신장 트리(MST)의 집합에 추가 - 만약 사이클을 형성하면 그 간선은 버린다. □ 시간 복잡도KruskalMST(G)입력 : 가중치 그래프 G=(V,E), |V|=n,.. 2016. 9. 29.
Ctags를 이용한 소스분석 □ ctags - ctags를 이용하여 작업 디렉토리 혹은 그 하위 디렉토리 내의 소스파일에 정의되어있는 함수들로 진입하거나 다시 목록으로 돌아와 소스분석을 빠르게 할 수 있는 기능을 제공한다. 즉, 프로그램 소스내 변수 및 함수의 위치를 인덱스하여 바로바로 찾아볼 수 있게 만들어주는 것이다. □ ctags 설치/ vi와 함께 사용법 - 우분투 기준 설치 sudo apt-get install ctags 명령어를 통해 설치 할 수 있다. - ctags * : 현재 디렉토리내 모든 소스파일에 대해 tags 정보를 만들어 tags 파일을 생성한다. - ctags -R 현재 디렉토리와 하위디렉토리를 포함한 모든 소스파일에 대해 tags 정보를 만들어 tags 파일을 생성. - vi로 생성된 tags 파일을 살펴.. 2016. 9. 25.
포인터와 배열(Pointer & Array) -(2/2) □ 2차원 배열 ○ 2차원 배열은 1차원 배열처럼 배열명과 첨자를 사용하여 선언한다. - 각 배열요소의 형태는 int형 변수 4개짜리 1차원 배열이다. - 전체 배열은 12개의 int형 기억공간이 1차원 배열의 형태로 할당된다. ○ 2차원 배열에서의 1차원배열은 2차원배열의 일부. □ 2차원 배열의 초기화 ○ 1차원 배열처럼 초기화하며 초기화 값은 행 단위로 차례로 저장됨. ex) int array[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 로 선언과 함께 초기화 된다면 int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ○ 만약 해당 배열 요소를 초기화하지 않으면 0으로 채워진다; ex) int array[3][4]={{1},{5,6},{9.. 2016. 9. 24.
구조체(struct) □ 왜 구조체를 사용하는가? - 구조체를 사용하는 이유에 대해서는 특정한 객체(object)에 연관된 추상화된 정보들을 하나로 묶어 구조체 타입으로 정의하여 다루기 쉽게하기 위하여 사용한다. □ 구조체를 정의하는 방법 - struct 구조체이름{데이터타입 변수명;데이터타입 변수명;데이터타입 변수명; ..................}; □ 구조체 . 멤버 접근 연산자 & 함수 인자로서의 구조체 - 18~26행에서 처럼 멤버 접근 연산자(.)를 통하여 구조체 멤버에 접근할 수 있다. - 34번행에서 처럼 함수 파라미터로 구조체 변수를 넘겨줄수도 있다. □ 포인터 구조체 - 포인터의 표현방법은 ->와 .이 있다. -> : 화살표 앞의 변수가 포인터 변수이면 화살표를 사용한다. . : 점 앞의 변수가 포인터가.. 2016. 9. 23.
Clean Code: A Handbook of Agile Software Craftsmanship -저(Robert C. Martin) -Chapter(1) Chapter1 : Clean Code 처음 챕터에서는 가볍게 좋고 나쁜 코드가 무엇인지에대해 설명하고, 안좋은 코드가 만들어지는 원인과, 그걸 개선할 수 있는 몇가지 방법의 예시를 전문가들을 인용하여 설명하고있다, 안좋은 코드가 시간이 지날수록 생산성이 떨어진다는 자료와, 저명한 전문가들의 일부 방법들을 소개하며, 좋은 코드라는게 정확히 왜 좋은지 코드내에 문법적 오류는 없으나 왜 이런걸 쓰고 제거해야하는지 간략히 소개한다. 2016. 9. 12.
728x90