반응형

Workbench가 없는 경우 설치 방법은 아래 참고.

https://ansan-survivor.tistory.com/1130

 

[MySQL] MySQL windows 10에 설치하기 환경 세팅하기, 오라클 DBMS 설치하기

기본 요구사항 Windows 10 64 bit. (win7은 MySQL 8.0.3 rc버전) (32bit는 MySQL 5.7.x 버전) 1. 아래 공식 다운로드 페이지에서 다운로드 https://downloads.mysql.com/archives/community/?version=8.0.17 MySQL..

ansan-survivor.tistory.com

 

 

MySQL Workbench로 직접 타이핑없이 SQL문을 자동으로 생성시키는 방법이 있다.

 

 

* Create Table 코딩 자동 생성

 

 

* INSERT 문 자동생성

생성할 위치를 먼저 하이라이트 해야 한다.

 

* View를 만들었다면, View의 SQL문도 바로 생성 가능

 

 

 

 

 

반응형
반응형

보통 C언어에서 자주 사용되는 입력함수는 scanf이고 출력함수는 printf 일 것이다.

그러나 동일 기능을하는 함수가 있다. 입력 fgets 함수, 출력 fputs 함수이다.

 

앞에 f는 "file"을 뜻하고 뒤에 s는 "string"을 뜻한다.

즉, string타입을 갖고 쓰는 함수라고 볼 수 있다.

 

fputs( ) 함수 원형 : int fputs(const char* str, FILE* pFile)

fgets( ) 함수 원형 : int fgets(char* str, int* num, FILE* pFile)

  아래에서 파일대신 stdout과 stdin을 사용했는데, 이는 출력으로 모니터(stdout)을 쓰고, 입력으로 키보드(stdin)를 사용함 의미

#include <stdio.h>

void ClearLineFromReadBuffer(void);

int main()
{
	char perID[7];							//	ex) 880808'\0' 총 NULL을 포함한 7개 배열 메모리 할당.
	char name[10];

	fputs("주민번호 앞 6자리: ", stdout);	//	모니터에 출력 (stdout)
	fgets(perID, sizeof(perID), stdin);		//	최대 크기 7 byte를 키보드(stdin)로 부터 입력 받음.

	/************/
	ClearLineFromReadBuffer();				//	입력 버퍼를 비우기. 그냥 읽어들임. 반환없이.
	/************/

	fputs("이름 입력: ", stdout);			//	모니터에 출력
	fgets(name, sizeof(name), stdin);		//	최대 크기 10 byte를 키보드로 부터 입력 받음.

	printf("주민번호: %s \n", perID);
	printf("이름: %s \n", name);

	return 0;
}

void ClearLineFromReadBuffer(void)
{
	while (getchar() != '\n');		//	문자열의 끝을 알리는 '엔터키'가 들어올때까지 계속 Read가 되어짐. 즉, 버퍼의 값을 사용하지 않고 그냥 버려짐.
}

/*
	함수 원형: int fflush(FILE * stream);
	성공시 0을 반환, 실패시 EOF 반환

	int fflush(stdout);		//	모니터로 출력 될 버퍼를 비우는 함수! (stdout: 모니터 출력을 의미)
							//	**버퍼를 비운다는 것은, 목적지로 빨리 보냄(다 출력시켜라 를 의미)
*/

유저로부터 입력을 받으면 '\n' (엔터키)가 올때까지 계속 버퍼를 비워버리는 함수

반응형

(결과 확인)

 

 

 

 

 

반응형
반응형

이 기능은 Allegro PCB 17.4 최신버전에 업데이트 되어있다. 또한 Hotfix는 24번 이상에서 가능했음.

 

이 기능은 아래와 같이 PCB기판 TOP과 BOTTOM의 특정 Net의 거리를 측정하는 기능이다.

또한 그 Z축 값에 기준값을 정하고, 그 값에 부합하지 않으면 DRC에러를 일으킨다.

아래와 같이 Top과 Bottom면이 겹치는 Net 두개가 있다.

RESET 과 GATE_CMD 네트.

이둘의 Z DRC를 테스트한다.

1. Tools - Z-DRC

2. 옵션 선택

    2-1. DRC값 할당 (이 값보다 크면 안되게)

    2-2. 최 외곽의 Cu (구리 영역, 도체 영역)을 포함할지 배제할지, 모두 포함할지

    2-3. 비교할 2 net

3. Output 탭 - Z-DRC Update 하면 명령이 수행된다.

    Retain existing DRC를 하면 내가 DRC체크한 기록 히스토리가 남고, Cleanup all DRC하면 결과를 제외한 나머지는 비게된다.

DRC에러가 발생했는데, 내가 위에서 0.3mm 간격이상을 떨어뜨려야 한다고 설정해서 그렇다. 실제 Top과 Bottom사이는 0.2mm 정도 된다.

실행 결과 0.3을 DRC로 체크해서 에러가 발생함. 이 PCB의 전체 두께는 0.264mm 임. 그보다 크기 때문에 DRC발생

 

4. DRC 값을 수정해본다.

실행결과 부합하여 DRC마크가 다 사라졌다.

 

5. 옵션사항

    우측하단 Report로 각종 정보를 볼 수 있다. PCB전체 두께, Top과 Bottom 사이 두께 등등

 

 

반응형
반응형

Ebay한테 자꾸 광고 메일이 온다.

이를 수신거부한다.

 

아무 메일이나 상관없다.

 

1. 광고 메일 하단의 "Click here to unsubscribe" 클릭

2. Unsubscribe 클릭

반응형

(결과) 이제 안온다.

 

반응형
반응형

https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=kingreddrake&logNo=220864141155&proxyReferer= 

 

ERROR(SPMHDB-238): The design is corrupted. It may have been copied from a different architecture using ASCII mode; copy using b

ERROR(SPMHDB-238): The design is corrupted. It may have been copied from a different ar...

blog.naver.com

위 포스팅에 이에 대한 에러설명이 나와있다.

즉, OrCAD PCB로 설계한 데이터(확장명  brd , dra , mdd)를 PCB Editor로 열어야 하는데, 다른 것을 열었을 때라고 한다.

또 만약 파일을 받았는데 안열린다고 할 때, 의심해봐야할 것은, 혹시 다른 PCB설계툴 (Altium 또는 PADS)로 만들어놓고 확장명만 .brd 로 바꾼게 아닌지 의심해봐야 한다.

 

내부 데이터가 맞지 않으면 이런 에러를 띄우니 주의.

반응형
반응형

보통 C언어 연습시 함수에 전달인자로 일반 변수를 사용했지만, 이번엔 배열을 전달한다.

배열이름 아래 예를 들면 arr1[] 에서, arr1 자체는 포인터이다. 즉 arr1을 출력하면 해당 배열값들이 시작하는 곳에 대한 주소를 가리키고 있다.

 

그래서 배열을 함수 인자로 받을 때 자료형을 포인터로 써야 한다. 아래와 같이 int* param

 

아래 예시는 배열을 함수의 인자로 받아서 그 배열을 출력하는 예제이다.

#include <stdio.h>

/*
	배열을 함수의 인자로 전달.
	참고사항,
		배열내부 index 갯수를 구하는 방법
		-> sizeof(arr1)/sizeof(int)   이런식으로 구하면 된다.
*/

// 배열인자를 받아 배열 내부를 표시해주는 함수 (포인터를 이용)
void ShowArayElem(int* param, int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ", param[i]);
	printf("\n");
}

int main()
{
	int arr1[3] = { 1,2,3 };
	int arr2[5] = { 4,5,6,7,8 };

	//	배열내부의 index 갯수를 구하는 방법.
	ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
	ShowArayElem(arr2, sizeof(arr2) / sizeof(int));

	return 0;
}

배열 주소와 해당 배열의 사이즈를 인자로 받아서 출력 테스트

 

반응형

 

그러나 배열을 함수에 전달하는 방법은 아래와 같이 쓸 수도 있다. (위와 동일한 기능)

즉 포인터 (* param) 이 아닌, param[ ] 이러한 형태로 배열을 전달 할 수 있다는 것이다.

이는 둘다 동일한 뜻이며, param[ ] 로 작성하면, 코드를 읽는 사람이 "아~ 배열을 전달하구나~"하며 좀 더 가독성을 향상시킬 수 있다.

#include <stdio.h>

/*
	배열을 함수의 인자로 전달.
	참고사항,
		배열내부 index 갯수를 구하는 방법
		-> sizeof(arr1)/sizeof(int)   이런식으로 구하면 된다.
*/

// 배열을 인자로 받는 다른 방법.
// 인자로 배열을 전달 받는다는 느낌을 강하게 어필하기 위해.
void ShowArayElem(int param[], int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ", param[i]);
	printf("\n");
}

int main()
{
	int arr1[3] = { 1,2,3 };
	int arr2[5] = { 4,5,6,7,8 };

	//	배열내부의 index 갯수를 구하는 방법.
	ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
	ShowArayElem(arr2, sizeof(arr2) / sizeof(int));

	return 0;
}
반응형
반응형

아래 포스팅에서 배열 선언방법과 그 배열의 크기에 대해서 알 수 있다.

https://ansan-survivor.tistory.com/1188

 

[C언어] C언어 배열의 크기에 대해서, 배열 크기 보기 sizeof 함수

C언어의 배열(Array)는 보통 행렬 Matrix로 비유해서 설명한다. 아래 예시를 보고 어떤식으로 sizeof 의 크기가 나오는지 알 수 있다. sizeof 의 크기는 자료형에 따라 크기가 다르다. char, int, float 등 아

ansan-survivor.tistory.com

 

보통 배열을 선언할 때, 행과 열의 크기를 선언한다. ex)  arr[3][4]  , 3x4 행렬 배열

배열을 선언할 시 위와 같이 행과 열의 크기를 선언하지만,

column 값만 넣으면 나머지 알아서 할당이 된다. (row값 생략 가능)

즉,  arr[ ][3] 이런식으로 선언할 수 있다.

그러면 가로 길이(row)는 내가 넣은값에따라 컴파일러가 알아서 계산을 해준다. 

 

#include <stdio.h>

/*
	2차원배열 크기를 알려주지 않고 초기화 하기.
	** 세로길이(row)만 생략할 수 있다. column은 표시해주어야 함.
	   
*/

int main()
{
	// 2차원 배열의 초기화방법
	// 가로길이에 대한 정보는 반드시 제공해야한다.
	// 그러면 나머지 길이는 컴파일러가 계산해서 넣음.

	int arr1[][4] = { 1,2,3,4,5,6,7,8 };
		/*
		[1 , 2]		세로의 길이 4
		[3 , 4] 
		[5 , 6]
		[7 , 8]
		*/
	int arr2[][2] = { 1,2,3,4,5,6,7,8 };
		/*
		[1, 2, 3, 4]	세로의 길이 2
		[5, 6, 7, 8]
		*/

	return 0;
}

 

만약 column을 생략하고 row만 넣으면 에러때문에 컴파일이 불가능하다.

(결과)

int는 4 byte이므로, 

4 byte x 8개 = 32 byte 사이즈가 나온다.

 

 

반응형
반응형

C언어의 배열(Array)는 보통 행렬 Matrix로 비유해서 설명한다.

아래 예시를 보고 어떤식으로 sizeof 의 크기가 나오는지 알 수 있다.

 

sizeof 의 크기는 자료형에 따라 크기가 다르다. char, int, float 등

아래 예시는 int 자료형이고, int는 크기가 4 byte이다.

#include <stdio.h>

/*
	2차원 배열의 크기 sizeof에 대해서.
*/

int main()
{
	// 2차원 배열의 sizeof 크기 구해보기.

	int arr1[3][4];
	int arr2[7][9];

	printf("세로3 가로4: %d \n", sizeof(arr1));
	/*
	int형이므로 간격 4씩 차이. (int는 4byte 이므로)
	[ ] [ ] [ ] [ ] 4x4 = 16
	[ ] [ ] [ ] [ ] 4x4 = 16
	[ ] [ ] [ ] [ ] 4x4 = 16
	16+16+16 = 48
	즉, arr1[3][4]의 2차원 배열의 크기는 48 byte
	*/


	printf("세로7 가로9: %d \n", sizeof(arr2));
	/*
	int형이므로 간격 4씩 차이. (int는 4byte 이므로)
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36 
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 4x9 = 36
	36+36+36+36+36+36+36 = 252
	즉, arr2[7][9]의 2차원 배열의 크기는 252 byte
	*/

	return 0;
}

 sizeof 결과는 아래와 같다.

 

(추가)

흔이 자료형의 크기를 말할 때 int는 4 byte, char는 1 byte, float는 8 byte 등 으로 얘기하는데, 이는 구체적인 크기가 딱 정해져 있는 것이 아니다. 자료형은 상대적인 크기이며, 해당 CPU가 무엇이냐에 따라 그 크기는 달라진다

위 일반적인 크기는 우리가 대부분 사용하는 개인용 PC기준이기 때문이다. 만약 임베디드 같은 작은 보드의 CPU의 경우는 자원의 양이 한정되어있고, 자료형의 크기 또한 작아진다.

 

C언어의 charshort의 비교 

short : 2 byte

char : 1 byte

출처:&amp;amp;amp;nbsp;https://ddanzimind.tistory.com/32

 

 

* 단순히 어떤 배열의 내부에 몇개의 인덱스가 들어있는지 알고 싶은 경우. (배열 내 인덱스의 길이)

해당 배열을 타입으로 나누면 된다. (아래의 경우는 선언된 배열이 int형일 경우.)

sizeof(arr)/sizeof(int)
반응형
1···38394041424344···181

+ Recent posts