[Android, Kotlin] 안드로이드 텍스트뷰(TextView) 가운데 정렬하기

서론 안드로이드 스튜디오에서 코드가 아닌 디자인으로 텍스트뷰의 텍스트를 가운데 정렬한다. 본론 레이아웃에서 텍스트뷰를 만들면 기본적으로 텍스트가 왼쪽정렬되어있다. xml에서 만약 위와같은 디자인이 아닌 코드가 보인다면 디자인으로 변경한다. 텍스트뷰를 클릭하고 우측의 ‘All Attributes’를 선택해서 속성목록을 연다. 목록에서 gravity를 찾고 center_horizontal을 체크하여 true로 바꾼다. 텍스트뷰의 텍스트가 가운데 정렬된것을 볼 수 있다. center_vertical을 true로 바꿀경우 위아래도 가운데 정렬할 수 … Read more

[Android, Kotlin] 안드로이드 디버깅을 위한 로그 출력하기

목적 Log.d()를 이용하여 로그캣에 로그를 출력한다. 개요 C와 Visual Studio를 활용하여 개발할때, printf(“%d”, &a)와 같이 변수를 출력하거나 디버깅툴을 이용하여 개발을 쉽게 할 수 있다. 그리고 위 목적으로 안드로이드는 Log.d()를 이용할 수 있다. 본문 Log 클래스의 Log.d()를 이용하면 로그캣에 로그를 남겨 디버깅을 쉽게 할 수 있다. Log.d() 이외에도 Log.w(), Log.i()등 여러가지가 있는데, d는 로그캣의 Debug에서 볼 … Read more

[JAVA] 정수의 최대값, 최소값 출력

자바에서 정수의 최대값, 최소값 출력 32비트에서 Int 정수 범위는 -2,147,483,648 ~ 2,147,483,647 이다. 따라서 32비트 Int 정수의 최대값은 2,147,483,647, 최소값은 -2,147,483,648 이다. (64비트에서도 정수의 경우 32비트와 마찬가지로 4byte라서 같다.) Integer 클래스의 MAX_VALUE와 MIN_VALUE를 사용하면 정수의 최대값(2,147,483,647)과 최소값(-2,147,483,648)을 바로 출력할 수 있다. Integer 클래스 외 Long, Short 등의 클래스도 같은 메소드를 제공한다.

[Python] 바이트형(bytes, b”)의 문자열 변환(decode)

bytes 파이썬에는 1바이트를 저장하는 bytes 자료형이 있다. print함수로 bytes를 출력하면 b’~~~~’와 같이 출력된다. decode 어떤 함수는 문자열이 bytes로 출력된다. bytes로 출력된 문자열을 우리가 이해하려면 영문이나 한글 등으로 변환해야한다. 이때 bytes를 유니코드로 변환해주는 decode()함수를 사용한다. deocde()의 역은 encode()다. 아래 process.stdout.readline()의 출력 결과는 bytes형이다. 따라서 우리가 이해할 수 있게 출력 결과를 decode했다. decode함수의 인자는 인코딩 방식이다. euc-kr … Read more

[Python] 자식클래스에서 부모클래스의 초기화함수(init) 사용

클래스의 초기화 함수 클래스 안에서 __init__이라는 이름의 함수를 구현하면 파이썬은 이를 초기화 함수로 인식합니다. 초기화함수는 클래스를 선언함과 동시에 호출하여 수행합니다. __init__의 __은 언더바 두개입니다. 상속과 초기화 함수 상속받은 자식클래스와 부모클래스 둘 다 초기화함수가 존재하는 경우, 자식클래스 선언 시 자식클래스의 초기화함수만 호출됩니다. 상속받은 자식 클래스에서 부모 클래스의 초기화함수를 호출하기 위해서는 자식클래스의 초기화함수에 부모클래스의 초기화함수를 호출하는 super().init()를 … Read more

[C, C++] extern “C” 의미

C와 C++간의 함수 호출 C에서 C++ 함수를 호출할 수 있고, C++에서 C함수를 호출할 수 있다. 그러나 단순히 일반적인 방법으로 호출할 경우 문제가 발생할 수 있다. C에서는 함수명이 다르면 다른 함수지만 C++에서는 함수 오버로딩을 지원하기 때문에 함수명이 같아도 다른 함수일 수 있다. 예를 들어 fun(int a)와 fun(int a, int b)는 다른 함수다. 따라서 C++ 컴파일러는 C와같이 … Read more

[C, C++] 정적변수와 전역변수 비교(static, global)

정적변수(static variable) 정적변수는 선언 위치에 따라 활용도가 다르며 변수 앞에 static을 붙여서 선언한다. 함수 외부에 선언 함수 외부에 선언한 정적변수는 선언한 파일에서만 호출이 가능하다. 즉, 선언한 파일 내부의 함수들은 사용 가능하지만 선언한 파일 외부의 함수들은 사용이 불가능하다. 전역변수가 extern 키워드로 다른 파일에서 호출이 가능한 것과는 다르다. 함수 내부에 선언 함수 내부에 선언된 지역변수는 함수가 소멸시 … Read more

[C, C++] 구조체 배열 멤버 memset으로 초기화

memset 배열을 -1, 0, 1로 초기화가 필요할 때 memset을 이용하면 깔끔하고 편하다. 이전에 memset을 이용하여 배열 초기화 하는 방법을 작성한적이 있는데, 구조체의 멤버로 존재하는 배열의 초기화도 필요해서 추가 작성하게 되었다. [C, C++] memset을 이용한 정수배열 초기화 구현 헤더파일 memset 기본형 동적할당 구조체의 memset 예제 배열은 포인터이고 구조체의 멤버로 들어가도 마찬가지다. 따라서 &연산자가 필요하지 않다. 동적할당이므로 … Read more

[C, C++] 정적(static)함수의 사용 이유

정적 함수로 만들어주는 static 함수를 정의할 때 static을 붙이면 해당 함수는 다른 파일에서 호출하지 못하는 정적함수가 된다. 내가 겪은 정적함수를 사용하는 이유는 다음과 같다. 코드 안정화 선임중에 다른 파일에서 사용하지 않는 모든 함수는 static을 붙이는 분이 계셨다. 이렇게 함으로써 다른 파일에서 의도치 않게 어떤 함수를 호출하는 경우를 막는다. 하나의 예를 들자면, a파일을 A가 개발하고 b파일을 … Read more

[C, C++] typedef struct의 포인터 별칭(alias)

다른 글 [C, C++] typedef 사용 이유 typedef로 정의한 구조체의 포인터 별칭 아래 코드와 같이 typedef로 정의한 구조체의 별칭에 포인터가 추가적으로 존재하는것을 여러 소스코드에서 종종 볼 수 있다. typedef struct는 여러개의 별칭을 가질 수 있다. typedef를 사용하여 구조체를 선언할 때 struct를 생략했듯이 포인터 별칭을 두게 되면 포인터 구조체를 선언할 때 간편하다.