rain2002kr의 등록된 링크

키자드에 등록된 총 148개의 포스트를 확인하실 수 있습니다.

Tistory

[C++] C++ 9일차 클래스 3 생성자, 소멸자, this

안녕하세요. 훈츠입니다. 금일은 클래스의 생성자와 소멸자 그리고this 키워드에 대해 정리 해보도록 하겠습니다. 생성자 (constructor) 객체가 생성될때 명시 하지 않아도, 자동으로 호출되는 함수 이다. 객체를 초기화하는 함수 이다. public 속성을 가진다. 소멸자 (destructor) 객체가 소멸될때 명시 하지 않아도, 자동으로 호출되는 함수 이다. 객체가 메모리 해제가 될때 호출 하는 함수 이다. 생성자와 동일하게 클래스명과 같은 이름의 함수이며, '~' 를 소멸자 앞에 붙인다. public 속성을 가진다. #include #include using namespace std; class Spoint { protected: int m_nX, m_nY; public : //생성자 Spoint..

Tistory

[C++] C++ 9일차 상속 1

안녕하세요. 훈츠입니다. 금일은 상속에 대해 정리 해보도록 하겠습니다. 상속 (inheritance) 기본 클래스의 속성을 물려 받는것을 상속이라고 합니다. 상속을 받는 클래스를 자식 클래스라고 부르며, 상속을 해주는 클래스를 부모 클래스라고 부릅니다. 자식 클래스에서는 부모 클래스의 속성을 그대로 사용할수도 있고, 새로운 기능을 추가 할수도 있습니다. 상속을 해주는 클래스 : base class, super class, parent class , 최상위 클래스 라고 불립니다. 상속을 받는 클래스 : sub class, child class, 자식 클래스, 하위클래스, 최화위 클래스 라고 불립니다. ※ 형식1 (단일 상속) 1 2 3 4 5 6 7 8 9 10 //훈스 블로그----------------..

Tistory

[안드로이드] 스피너 (콤보박스)

안녕하세요. 훈츠 입니다. 안드로이드 스피너(콤보박스) 조작하는 기본적인 방법에 대해 포스팅 합니다. 스피너 (spinner) : SpinnerAdpter = ArrayAdater : AdapterView 스피너는 배열이나 리스트 또는 데이터베이스 등에서 가져온 데이터 목록을 화면에 보여주고 사용자의 선택을 받는 UI 입니다. 목록을 표시 하기 위해서는 데이터를 직접 Spinner 에 할당 하지 않고 데이터를 관리하는 SpinnerAdpter 에 Adapter 를 할당 해야 합니다. Spinner Adpter 는 데이터의 전체 목록 중에서, 화면에 표시할 목록의 View를 Spinner에 제공해주는 역활을 합니다. 전체 데이터를 모두 Spinner에 직접 할당할 경우 메모리 사용량과 속도에 문제가 생기기..

Tistory

[안드로이드] 스피너2 (콤보박스) with 모델클래스

안녕하세요. 훈츠 입니다. 안드로이드 스피너(콤보박스) 에 모델 클래스를 적용하는 방법에 대해 포스팅합니다. 스피너 (spinner) : SpinnerAdpter = ArrayAdater : AdapterView 스피너 1편에 이어, dataArray 가 아닌 ModelClass 를 적용 하는 방법입니다. ModelClass 만드는 방법과 적용시 유의 사항에 대해 말씀 드리겠습니다. 순 서 ModelClass.kt 만들기 Model Class 에 toString 함수를 override 하여 Spinner에서 최초로 선택하고 보여줄 값을 설정 합니다. dataArray type 으로 제너릭 선언 후, dataArray 를 arrayAdapter에 할당합니다. arrayAdapter 를 제너릭 선언 합니다...

Tistory

[안드로이드] 스피너3 (콤보박스) with Mutable list

안녕하세요. 훈츠 입니다. 안드로이드 스피너(콤보박스) 에 MutableList 를 적용하는 방법에 대해 포스팅합니다. 스피너 (spinner) : SpinnerAdpter = ArrayAdater : AdapterView 스피너 2편에 이어, dataArray 가 아닌 MutableList 를 적용 하는 방법입니다. 동적으로 리스트를 변경할때 사용하시면 됩니다. 1편과 2편을 참조 하시면 어떻게 구성하는지 알테니 코드만 공유 하도록 하겠습니다. 코드 실행 화면 https://youtu.be/vrxRQSZpCM8

Tistory

[C++] C++ 10일차 상속 2

안녕하세요. 훈츠입니다. 금일은 클래스간 상속시 접근 지정자가 어떻게 동작 하는지 정리 해보도록 하겠습니다. 파생 클래스에서 기본 클래스에 대한 접근 권한 [ 기본 클래스 멤버 속성 ] A class B class : public A B : protected A B : private A private 사용 불가 사용 불가 사용 불가 protected private 사용 private 사용 private 사용 public public 사용 private 사용 private 사용 private 멤버 : 사용 불가 protected : private 로 사용 public : public 및 private 로 사용 ※ 코드 예시 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1..

Tistory

[안드로이드] 리싸이클러뷰 1

안녕하세요. 훈츠 입니다. 안드로이드 정말 많이 사용되어 지는 리싸이클러 뷰를 3회에 걸처 정리 포스팅 합니다. 리싸이클러 뷰(recyclerView) : RecyclerViewAdpter = UserAdapter (UserViewModel , ContainerView) 스피너와 다르게, Adapter와 ViewHolder를 직접 구현해 줘야 합니다. 순 서 RecyclerView download 버튼 이용, 혹은 dependency 추가 RecyclerView drag and drop to Activity RecyclerView ID 할당 RecyclerView 에 표시할 itemView.xml 만들고 item에 ID 할당 (자체에 ID 할당은 필요 없음) Data Class 만들기 Data View ..

Tistory

[안드로이드] 리싸이클러뷰 2 ( 레이아웃 Manager )

안녕하세요. 훈츠 입니다. 안드로이드 정말 많이 사용되어 지는 리싸이클러 뷰2 포스팅 합니다. 이번 시간에는 리싸이클러뷰의 layoutManager에 대해 포스팅 합니다. 리싸이클러 뷰 레이아웃 Manager 리싸이클러뷰 에서는 레이아웃 Manager 만 교체 해주면 다른 레이아웃 형태를 View로 나타낼수 있습니다. 레이아웃 종류 리니어 레이아웃 (LinearLayoutManager (this, 화면방향 : RecyclerView.VERTICAL , false) ) 그리드 레이아웃 (GridLayoutManager (this, 열 갯수 : 2 ) ) 스테거드 레이아웃 (StaggeredGridLayoutManager ( 열 갯수 : 2, 화면방향 : RecyclerView.VERTICAL ) ) 코드 ..

Tistory

[C++] C++ 11일차 상속 3

안녕하세요. 훈츠입니다. 금일은 클래스간 관계와 생성자 상속과 호출에 대해 정리 해보도록 하겠습니다. 클래스 관계 설정 ( 클래스 계통도 ) is - a 관계 ( 상속 ) 접근 지정자를 통한 상속 관계 has - a 관계 다른 클래스를 멤버로 가지고 있는 관계 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //훈스 블로그---------------------------------------------------------------------------------------------------코드// class A { public: void Print() { cout cs 생성자 상속과 호출 기본 생성자는 상속되지 않는다. 생성자에 매개변수가 있는 경우, 파생 클래스에서 상..

Tistory

[안드로이드] 리싸이클러뷰 3 ( 클릭 리스너 등록하기)

안녕하세요. 훈츠 입니다. 리싸이클러뷰에 선택이 가능한 클릭 리스너와 tag 연결에 대해 포스팅 합니다. 리싸이클러 뷰 - 셀렉션 (아이템 선택을 위한 패키지) 안드로이드 리싸이클러뷰에서 지원하고 있는 리싸이클러 뷰 - 셀렉션 길게 터치할때만 다중선택 가능 합니다. 커스터 마이징이 제한됩니다. 추후, 기회가 된다면 포스팅 하도록 하겠습니다. bg_item.xml 추가 : 리싸이클러 뷰 체크시 배경화면 변경 Selector : View의 조건에 따라 xml을 참조하여 drawable 을 자동으로 변경해 줌. 색상을 바꿀수 있는 xml 파일을 drawable 폴더에 추가 아이템 상태를 이용해 기능을 추가 : true or false 1 2 3 4 5 6 7 //훈스 블로그----------------..

Tistory

[Kotiln] 코틀린 전체 소개

안녕하세요. 훈츠 입니다. 안드로이드 View를 조작하는 기본적인 방법에 대해 포스팅 합니다. 안드로이드 Extension 패키지 Java 에서 findviewId 를 통해 view 를 찾았던것을, extension 패키지로 인해서 하지 않아도 됩니다. 자동 완성 기능 자동 픽스 기능 옵저버 패턴 & 익명 함수 https://rain2002kr.tistory.com/80?category=361958 [Kotlin] 코틀린 옵저버 패턴 리스너 안녕하세요. 훈츠 입니다. 오늘은 코틀린에서 광범위하게 사용되는 옵저버 패턴을 구현 하는 방법에 대해 설명 드리겠습니다. 옵저버 패턴을 구현하는 방법은 두가지 입니다. 한가지는 인터페이스를 상속하는 방법.. rain2002kr.tistory.com 글을 한번 읽어 보..

Tistory

[C++] C++ 7일차 메모리2 : new and delete 포인터2

안녕하세요. 훈츠입니다. 금일은 어제에 이어 포인터 2편을 이어가겠습니다. C 언어의 포인터 강좌와 같은 부분이 너무 많아서 이전 포스팅 붙여 넣습니다. https://rain2002kr.tistory.com/152?category=382972 [C] C언어 7일차 포인터2 안녕하세요. 훈츠 입니다. 포인터 정복을 해보려고 합니다. 천천히 보시죠. 포인터의 종류와 의미 포인터 (*****) , int *pPtr; : int형 메모리 주소를 저장하는 변수 선언 포인터 배열 (****) , int*pPtr[3]; : 3.. rain2002kr.tistory.com 목 차 이중 포인터 (**) , int **pPtr; : int *형 메모리 주소를 저장 하는 변수 선언 구조체 포인터 (**), DATA *pP..

Tistory

[C++] C++ 8일차 클래스 1

안녕하세요. 훈츠입니다. 금일은 클래스에 대해 정리 해보도록 하겠습니다. 클래스 (Class) 사용자가 정의 하며, 변수와 함수로 구성이 가능 합니다. class 키워드를 선언 하면 객체(object)가 됩니다. 객체 정의를 위한 키워드 입니다. 구성 : 변수 와 함수 기본 형식 class 클래스 명 { 멤버 리스트 (변수와 함수) }; 멤버 리스트에 변수 선언시 관례적으로 변수 앞 'm_' 를 붙입니다. 사용 예시 ※ 클래스 선언 ( 함수 바디 포함 ) #include #include using namespace std; class Spoint { int m_x, m_y; void Print() { cout

Tistory

[안드로이드] Image View 이미지 뷰

안녕하세요. 훈츠 입니다. 안드로이드 이미지 View를 조작하는 기본적인 방법에 대해 포스팅 합니다. 이미지 뷰 (Image View) Image View에는 'Drawable' 이라는 리소스를 표시 할수 있습니다. 안드로이드에서는 화면에 그릴수 있는 모든 종류의 그래픽 리소스를 통칭하여 드로어블 (Drawable) 이라고 부릅니다. 이미지 파일 포맷 (BitMap Drawable) Image View 속성 ImageView.setImageResource(Drawable 의 ID) 이미지 뷰의 소스를 지정 합니다. scaleType 이미지뷰의 영역내에서 이미지를 스케일하는 방식을 지정 (8 가지 방식) *원본이미지(소스), 배경이미지(이미지뷰) center : 소스 크기를 중심으로 배치하고, 이미..

Tistory

[Kotiln] Work Manager

안녕하세요. 훈츠 입니다. 금일은 Work Manger 대해 포스팅 합니다. Work Manager에 대한 내용은 다른 블로그나 개발자 홈페이지에 잘나와있으니, 간단하게 사용법에 대해 기록합니다. Work Manager 비동기 1회성 작업 또는 주기적으로 실행되는 작업을 예약 할수 있습니다. 네트워크 가용성 또는 충전 상태 같은 작업에 대한 제약 조건을 추가 할수 있으며, 작업을 순차적으로 실행 시키는 체이닝 또한 가능합니다. WorkManager 는 앱 프로세스가 사라지더라도 안전하게 종료되어야 하는 진행 중인 백그라운드 작업 또는 즉시 실행해야 하는 작업을 대상으로 하지 않습니다. 사용법 정리 Dependency 추가 Worker 만들기 WorkRequest 만들기 제약 걸기 시간 예약 기타.. Wo..

Tistory

that is being built with jvm target 1.6. please specify proper '-jvm-target' option 에러가 뜬다면!!

안녕하세요. 훈츠 입니다. File-settings안의 kotlin compiler 안의 target JVM version 1.8 로 바꿔줍니다. 이래도 안되면, 껐다 켜시고 그래도 안되면 빌드(앱)에 다음을 추가 해주세요. android { kotlinOptions{jvmTarget ="1.8"} }

Tistory

[Kotiln] handler and runnable

안녕하세요. 훈츠 입니다. hanlder 와 runnable 간단하게 메모하고 갑니다. var handler : Handler? = null var runnable : Runnable? = null //Runnable이 실행되면 ListActivity로 이동하는 코드 runnable = Runnable { val intent = Intent(applicationContext, ListActivity::class.java) startActivity(intent) } //Handler 를 생성하고 2초후 runnable을 실행 handler = Handler() handler?.run{ postDelayed(runnable, 2000) }

Tistory

[Kotiln] 앱 띄울때 시스템 UI를 숨기고 전체화면 표시

안드로이드 앱을 띄우는 Window의 속성을 변경하여 시스템 UI를 숨기고 전체화면으로 표시하는 코드 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

Tistory

[Kotiln] 유저가 View 만드는 코드

View 만드는 코드 Kotiln code open class InfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : LinearLayout(context, attrs, defStyleAttr){ init { View.inflate(context, R.layout.view_info, this) } } info_view.xml code AlarmInfoView.kt class AlarmInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :..

Tistory

[C++] C++ 8일차 클래스 2 접근지정자(public, private , protected )

안녕하세요. 훈츠입니다. 금일은 클래스 접근지정자에 대해 정리 해보도록 하겠습니다. 접근 지정자 (public, private, protected) 외부에서 클래스의 멤버에 접근하여 사용할 수 있는 권한을 제한하는 역활 class 에서 접근 지정자를 사용하지 않은 멤버들은 기본적으로 private가 적용 접근 지정자의 적용 범위는 다음 접근 지정자가 나올 때까지이다. public 외부에서 모든 멤버에 접근하여 멤버 함수 호출 및 변수의 사용이 가능 합니다. #include #include using namespace std; class Spoint { public : int m_x, m_y; void Print() { cout

Tistory

[안드로이드] Radio 버튼 & Check 박스

안녕하세요. 훈츠 입니다. 안드로이드 Radio 버튼 과 Check 박스버튼을 조작하는 기본적인 방법에 대해 포스팅 합니다. 라디오 버튼 (Radio button) : RadioGroup. 그림과 같이 라디오 그룹안에 라디오 버튼을 넣는 방식으로 구성 가능합니다. 라디오 버튼 뿐만 아니라, 안드로이드에서 제공 해주는 View를 사용 할때 어떤 리스너를 상속받아야 하는지 아는것도 중요합니다. 라디오 그룹 아이디 할당 라디오 버튼 아이디 각각 할당 익명객체에 RadioGroup 상속 // 아래와 같이 옵저버 패턴에 익명 함수를 통해서 익명 클래스를 구현하여 사용 할수있습니다. colorOptionGroup.setOnCheckedChangeListener(object : RadioGroup.OnCheckedC..

Tistory

[Kotiln] 안드로이드 죽지 않는 서비스 사용하기 (라이프 싸이클 이용)

안녕하세요. 훈츠 입니다. 안드로이드의 죽지 않는 서비스 구현 하는 방법 입니다. 앱의 런닝 상태인지, 혹은 UI 가 안보이는 상태인지 APP 이 꺼졌는지 확인할수 있는 방법에 대해 포스팅 합니다. Android Jetpack - Lifecycle Livecycle: Lifecylce을 나타내는 객체입니다. LivecycleOwner: Activity객체를 말하며 Lifecycle객체에 액티비티 상태를 제공해줍니다. LifecycleObserver: Lifecylce로부터 액티비티 상태변화에 대한 이벤트를 받습니다. LifecycleOwner, Lifecycle LifecycleOwner는 Activity를 의미하고, 내부에 Lifecycle을 갖고 있습니다. Lifecycle은 액티비티의 상태를 저장하..

Tistory

[MVVM] ViewModelProviders.of() deprecated

안녕하세요. 훈츠 입니다. ViewModel ViewModelProviders.of() deprecated 되어서 다른 방식으로 하는 방법 포스팅 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드/// lateinit var viewModleFactory: ViewModelProvider.AndroidViewModelFactory private lateinit var contactViewModel : ContactViewModel //fragment 에서 받을때 viewMod..

Tistory

[Live Data] 안드로이드 라이브 데이터 1

안녕하세요. 훈츠 입니다. Room Database 와 Realm Database 학습 하면서 라이브 데이터 관련하게 나와서 학습 하는김에 정리 해봅니다. 라이브 데이터 사용시 키 포인트 View Model 안에서 다음과 같이 구성 Live Data get() = Mutable Live Data Activity 혹은 Fragment 안에서 viewModel 가져오고 observer할 view 지정 viewModel.LiveData.observe (this , Observer { Change UI } ) 뷰모델 안에 라이브 데이터 생성 on Create() Observer 에서 UI 연결 다른 곳에서 라이브데이터 변경시 LiveData 개요 LiveData는 식별 가능한 데이터 홀더 클래스입니다. 식별 가..

Tistory

[C++] C++ 4일차 표준 입 출력 : std::cout , endl, cin

안녕하세요. 훈츠입니다. 금일은 C++ 표준 입출력 std::cout, std::endl, std::cin 과 using 에대해 포스팅 해보겠습니다. 표준 입출력 라이브러리 클래스 헤더와 namespace header : iostream (C 언어의 같은 head file의 라이브러리) namespace : std std::cout (출력) 추출 연산자 (extraction operator) : 입력된 데이터를 바이트 단위로 가져오는 역활 cin >> 변수 using std 를 생략 할수 있는 키워드 using 입니다. 유효 범위 안의 함수를 사용할 때 namespace 명 없이 사용하는 역활 사용법 : using namespace std 전역, 지역으로 사용 가능합니다. 실습 int main() { i..

Tistory

[안드로이드] 뷰 View

안녕하세요. 금일은 뷰 내용에 대해 포스팅 합니다. View 뷰 실제 화면에 보이는 View View 의 종류 ImageView (파생) ImageButton TextView(파생) EditText : 편집 가능한 텍스트 박스 Button(파생) : 텍스트가 표시되는 버튼 RadioButton : 그룹 중 하나만 선택하는 버튼 CheckBox : 그룹에서 여러개를 선택하는 버튼 Switch : 스위치 모양으로 on/ off 를 하는 버튼 ViewGroup(파생) : View 들을 묶어 표시하는 View 레이아웃 계열 LinearLayout : 가로 또는 세로로 순서대로 View 들을 나열 ConstraintLayout : 여러가지 방법으로 View를 자유롭게 나열 리스트 계열 RecyclerLayout ..

Tistory

Live Data + View Model + Data Binding 설명

안녕하세요. 훈츠 입니다. 금일은 Live Data 와 View Modle 그리고 데이터 바이딩 실습에 대해 포스팅 합니다. 실습 순서 Dependency 추가 Model class, ViewModel (LiveData object) 만들기 .XML DataBinding Setting DataBindingUtil 이용 해서 setContentView 하기 ViewModel 인스턴스 만들고 Data Binding object 에 assign 후 Data Binding object 에 라이프싸이클 set 하기 1. Dependency 추가 현재 최신 버전 이며, 추후는 안드로이드 AndroidX 에 배포 노트를 확인 하시면 됩니다. 1 2 3 4 5 6 7 8 apply plugin: 'kotlin-kapt..

Tistory

UI 관련 Tips and Trick

안녕하세요. 훈츠 입니다. UI 관련 Tips and Trick 포스팅 합니다. 1. Dependency 추가 implementation "com.google.android.material:material:1.1.0" 2. Style 변경 3. ConstraintLayout View 들의 위치 지정시 위처 정보의 네점은 parent로 두고, Vertical_bias 혹은 Horizontal_bias로 조정 합니다. View 의 위치를 자석으로 붙일때는 Top_toBottomOf 를 이용합니다. View 의 text size 지정시, textAppearance 를 이용 합니다. = Headline, Body, Display ... View 의 xml 화면 에서 글씨를 미리 보려면, tools:text ="..

Tistory

[C++] C++ 5일차 표준 입 출력 : cin.get 함수 cin.getline 함수

안녕하세요. 훈츠입니다. 금일은 C++ 표준 입출력 std::cin.get() 함수와 cin.getline() 함수에 대해 포스팅 해보겠습니다. cin.get 과 cin.getline 함수 header : fstream fstream 을 포함 해야, 다음 함수를 사용 할수 있습니다. namespace : std cin.get 은 한문자만 받을때 사용 합니다. cin.getline 은 공백 포함 문자열을 받을때 사용합니다. #include #include using namespace std; int main() { // cin.get 함수 char char1; cout

Tistory

[안드로이드] 레이아웃

안녕하세요. 훈츠 입니다. 안드로이드 레이아웃에 대해 포스팅 합니다. DP 와 SP 개념 DP density-independent pixels density : 같은 면적에 포함되어 있는 물리적인 픽셀의 밀도 independent pixels : 독립적인 크기를 가진 픽셀 단위 디스플레이 해상도 '160dpi*' 를 기준으로 디스플레이 해상도가 높아질수록 알아서 UI를 스케일링 해줍니다. SP scale-independent pixels SP 는 DP와 개념이 같지만 글꼴에 적용하기 위해 만들어진 단위 SP 를 사용한 글꼴은 안드로이드 OS의 설정에서 영향을 받습니다. 텍스트에는 SP 사용 추천합니다. ConstraintLayout 제약 조건 View 의 표시 영역 ※ 제약조건 사용시 tip 은 기본적으..

Tistory

[Kotlin] Coroutine 코루틴

안녕하세요. 훈츠 입니다. 금일은 코루틴에 대해 포스팅 합니다. Kotlin 코루틴 코루틴을 사용하여, 비동기 코드를 작성할수 있습니다. 코루틴에 대한 자세한 설명은 개발자 페이지를 참조하세요. 사용법 정리 Dependency 추가 코루틴 스코프의 종류 ViewModelScope LifecycleScope liveData Dependency 추가 dependencies { def lifecycle_version = "2.2.0" def arch_version = "2.1.0" // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // LiveData implementation "androidx...

Tistory

[C++] C++ 6일차 메모리1 : new and delete 포인터1

안녕하세요. 훈츠입니다. 금일은 C 언어 에서 동적 메모리 할당에 해당하는, malloc 과 free 함수에 대체되는 new 와 delete 키워드에 대해 포스팅 해보겠습니다. C 언어의 포인터와 메모리 할당 해제 관련글을 한번 보고 오시는것도 좋습니다. https://rain2002kr.tistory.com/150?category=382972 [C] C언어 6일차 포인터 안녕하세요. 훈츠 입니다. 이번 시간에는 포인터에 대해 정리 해보려고 합니다. 어렵게 느껴졌는데 차근차근 정리 해보니 정리가 되네요. 같이 한번 보시죠. 포인터 메모리 에서 데이터를 읽어오는 방법 메모리.. rain2002kr.tistory.com 포인터의 사용 방법과 포인터 접근 하는 방법 모두 동일 합니다. 하지만 동적 메모리 할당..

Tistory

[안드로이드] View 조작하기

안녕하세요. 훈츠 입니다. 안드로이드 View를 조작하는 기본적인 방법에 대해 포스팅 합니다. 안드로이드 Extension 패키지 Java 에서 findviewId 를 통해 view 를 찾았던것을, extension 패키지로 인해서 하지 않아도 됩니다. 자동 완성 기능 자동 픽스 기능 옵저버 패턴 & 익명 함수 https://rain2002kr.tistory.com/80?category=361958 [Kotlin] 코틀린 옵저버 패턴 리스너 안녕하세요. 훈츠 입니다. 오늘은 코틀린에서 광범위하게 사용되는 옵저버 패턴을 구현 하는 방법에 대해 설명 드리겠습니다. 옵저버 패턴을 구현하는 방법은 두가지 입니다. 한가지는 인터페이스를 상속하는 방법.. rain2002kr.tistory.com 글을 한번 읽어 보..

Tistory

[C++] C++ 1일차 C VS C++ 차이점

안녕하세요. 훈츠 입니다. 금일 부터 C++ 언어 정주행 시작 합니다. C언어와 마찬가지로 전체적 완주 한적이 없어서 이번 기회에 완주 하려고 하니 모두 같이 시작해 보셨으면 좋겠네요. C 언어에서 편리하게 추가된 키워드 C 언어 기본 데이터형(int, double...) + bool 형 C 와 C++ 공통 개념 배열 포인터 메모리 동적 할당 C 언어 : malloc, free C ++ : new, delete 객체 -> 클래스 구조체 함수 변수와 상수 C 언어의 기본 키워드와 개념에서 확장 되었으며, 구조체, 함수, 변수와 상수를 묶어 클래스를 만들고 그 클래스를 가지고 인스턴스를 만드는 객체지향 개념이 추가 되었습니다.

Tistory

[안드로이드] 안드로이드 시스템

안녕하세요. 훈츠 입니다. 금일은 안드로이드 시스템에 대해 포스팅 합니다. 안드로이드 시스템 아키텍처 리눅스 시스템 위에, C와 C++ 코드로 이루어진 그래픽, 브라우저, 미디어, Database... 와 안드로이드 가상머신과 함께 안드로이드 API Framework 위에서 시스템 앱과 유저 앱이 Running 됩니다. View System 눈에 보이는 기능 및 UI를 제공 하는 View System 입니다. Content Providers 앱간에 데이터들을 주고 받기 위해서, 데이터 형식을 등록합니다. Managers Activity Manager : 앱들이 가진 화면들을 관리 Location Manager : 단말기의 위치정보를 관리 Package Manager : 설치된 앱들을 관리 Resource..

Tistory

TODO 사용 하기

안녕하세요. 훈츠 입니다. 금일은 TODO 에 대해 포스팅 합니다. TODO 사용법 : //TODO 내용 작업을 해야 하거나, 마킹 하고 싶은곳에 //TODO "내용 삽입" 합니다.

Tistory

안드로이드 앱 종료 방법

안녕하세요. 훈츠 입니다. 금일은 앱을 종료 하는 방법에 대해 포스팅 합니다. finishAffinity() ActivityCompat.finishAffinity(this); System.runFinalizersOnExit(true); System.exit(0); // only API 16+ activity.finishAffinity(); // support library v4 ActivityCompat.finishAffinity(activity);

Tistory

[MVVM] ROOM Database 정리

안녕하세요. 훈츠 입니다. 금일은 ROOM에 대해 정리해 보도록 하겠습니다. MODEL - VIEW - VIEW MODEL : MVVM Dependency 추가 ROOM 생성 (Contact(Entity), ContactDao, ContactDatabase) Repository 생성 (main Thread 접근 불가 하기 때문에, 별도의 Thread 생성) ViewModel 생성 (Application context를 사용하기 위해 Application을 인자로 받는다. 이유: 메모리릭 발생가능성) Activity or Fragment 설정 ( ViewModelProViders 를 이용해 get, observe 로 만들어서 생명주기 관찰을 정함) RecyclerView 설정 (xml, Adapter) 1..

Tistory

[C++] C++ 2일차 데이터형과 변수

안녕하세요. 훈츠 입니다.금일은 C++ 데이터형과 변수에 대해 알아보고 새로운 기능에 대해 포스팅 해보겠습니다. 불형 : bool size : 1 byte false, true int main() { bool bData=7; //0 이외의 int값은 모두 true 입니다. printf("bool 크기 %d 값%d, true=%d, false=%d \n", sizeof(bData),bData, true, false); } 열거형 참조 해보세요. https://rain2002kr.tistory.com/155?category=382972 [C] C언어 8일차 기타 문법1 (enum, goto, label, union, 전처리기 지시문) 안녕하세요. 훈츠 입니다. 드디어 앞으로 한번만 더 정리하면 C언어 문법을..

Tistory

[안드로이드] 안드로이드 시스템 Gradle

안녕하세요. 금일은 안드로이드 스튜디오 툴에 대한 내용에 대해 포스팅 합니다. 그레들 : Gradle 프로젝트에 포함된 파일과 그에 연관된 모듈들을 링크하여 앱을 컴파일하는 빌드 시스템입니다. 프로젝트에 포함되는 모듈이 추가되거나 변경될 때마다 Gradle에 의한 sync 과정이 발생합니다.

Tistory

[C++] C++ 3일차 표준 입 출력 : Namespace

안녕하세요. 훈츠입니다. 금일은 C++ 표준 입출력 라이브러리 클래스 헤더와 namespace 에대해 포스팅 해보겠습니다. 표준 입출력 라이브러리 클래스 헤더와 namespace header : iostream (C 언어의 같은 head file의 라이브러리) namespace : std namespace C++ 언어는 심볼(변수, 함수, 클래스)를 굉장히 많이 제공해주기 때문에, 충돌 방지를 위해서 namespace 라는 기능을 제공 합니다. :: (스코프 연산자) 범위 확정 연산자이며 보통 스코프 연산자라고 합니다. the scope-resolution operator #include namespace X { int a; int b; } namespace Y { int a; int b; } int m..

Tistory

[안드로이드] 액티비티 Activity

안녕하세요. 금일은 액티비티에 대한 내용에 대해 포스팅 합니다. Activity 액티비티 안드로이드 시스템에 의해 관리 되어지며, 사용자가 호출을 요청할수 있습니다. 시스템에 의해 관리 되어지는 액티비티는 생명주기가 있습니다. 물론 이 생명 주기로인해 데이터를 보존 하기 위해 지금도 배우기 위해 애쓰고 있는 LiveData 나 ViewModel 같은 것이 있습니다. onCreate() : activity 생성시 단 한번만 호출 되므로 공통적으로 사용되는 변수의 초기화, UI 의 초기값 설정 onStart() : activity 가 가려졌다 돌아올때, 혹은 완전히 전환되는 경우에 onStart와 onResume 차례로 동작 onResume() : 다른화면에서 입력받은 내용을 통해 바뀔 수있는 데이터를 초기..

Tistory

안드로이드 위험 권한 요청 및 권한체크

안녕하세요. 훈츠 입니다. 안드로이드 권한 요청 및 얻기에 대한 정리 입니다. 권한 설정 Manifest 등록 하기 ...이하 생략 권한 확인 ContextCompat.checkSelfPermisson() 메서드 이용해서 권한 확인을 합니다. int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permisson.SMS_READ) == PackageManager.PERMISSION_GRANTED ContextCompat.checkSelfPermission() 메서드는 권한이 있는 경우, PERMISSION_GRANTED를 반환하고 없는 경우는 PERMISSION_DINIED를 반환 합니다. 권한 요청 ActivityCompat.sh..

Tistory

인텐트 이동 및 간단한 사용법

안녕하세요. 훈츠 입니다. 인텐트 사용법 정리 합니다. 인텐트 띄우기 //보내는쪽 val intent = Intent(applicationContext, ListActivity::class.java) intent.putStringExtra("MEMO_ID", "memo_id") startActivity(intent) startActivityForResult(intent, 100 ); //request 값을 넣을수도 있습니다. //받는쪽 val intent = getIntent() val memoId = intent.getStringExtra("MEMO_ID") setResult(RESULT_OK,intent) finish();

Tistory

AlertDialog 와 SnackBar

안녕하세요. 훈츠 입니다. AlertDialog 와 SnackBar 사용법 정리 합니다. AlertDialog AlertDialog.Builder(this).setTitle("최초 타이틀") .setMessage("안내 메시지를 넣는곳 입니다.") .setPositiveButton("Yes 버튼", DialogInterface.OnClickListener { dialog, which -> //코드 삽입 하면 됩니다. }) .setNegativeButton("No 버튼", DialogInterface.OnClickListener { dialog, which -> //코드 삽입 하면 됩니다. }) .show() //람다식 이용시 AlertDialog.Builder(this).setTitle("최초 타이틀")..

Tistory

LocationManager 이용 해서 기기 위치 정보 가져 오기

안녕하세요. 훈츠 입니다. 안드로이드 단말에 위치 정보를 가져오는 방법을 정리 합니다. LocationManager 위치 정보를 위도, 경도로 가져올 수 있습니다. 기기의 GPS 모듈 이용 통신사의 기지국 정보 (NetWork) 이용 권한 설정 manifest 에 권한을 설정 합니다. ...이하 생략 권한 요청 및 확인 함수 introActivity 를 이용 해서, 최초 권한을 얻고 확인 하는 함수를 구현합니다. class IntroActivity : AppCompatActivity() { var handler : Handler? = null var runnable : Runnable? = null //권한 요청시 권한 Activity에 전달할 고유 코드(상수) 추가 companion object { p..

Tistory

[SINAMICS V] SIEMENS SINAMICS V90 Drive

안녕하세요. 훈츠 입니다. 이번 시간에는 SINAMIC V90 서보 드라이브에 대해 포스팅 합니다. 링크를 클릭 하시면 바로 해당 메뉴얼을 다운 받으실 수 있습니다. DT Configurator V90 및 지멘스 드라이브를 SELECTION 할수 있는 DT Configuration 입니다. 온라인으로 작업 할수있습니다. https://mall.industry.siemens.com/spice/jom/jom/ https://mall.industry.siemens.com/spice/jom/jom/ mall.industry.siemens.com V90 서보 드라이브 구성 200V 와 400V Version이 있습니다. 드라이브 명판 V90 드라이브 국문 메뉴얼 (GSG , OPI) GSG : getting st..

Tistory

[PROSAVE] SIEMENS HMI 공장 초기화 하는 방법

안녕하세요. 훈츠 입니다. 이번 시간에는 SINAMIC V90 서보 드라이브에 대해 포스팅 합니다. 링크를 클릭 하시면 바로 해당 메뉴얼을 다운 받으실 수 있습니다. DT Configurator V90 및 지멘스 드라이브를 SELECTION 할수 있는 DT Configuration 입니다. 온라인으로 작업 할수있습니다. https://mall.industry.siemens.com/spice/jom/jom/ https://mall.industry.siemens.com/spice/jom/jom/ mall.industry.siemens.com V90 서보 드라이브 구성 200V 와 400V Version이 있습니다. 드라이브 명판 V90 드라이브 국문 메뉴얼 (GSG , OPI) GSG : getting st..

Tistory

[C] C언어 6일차 포인터

안녕하세요. 훈츠 입니다. 이번 시간에는 포인터에 대해 정리 해보려고 합니다. 어렵게 느껴졌는데 차근차근 정리 해보니 정리가 되네요. 같이 한번 보시죠. 포인터 메모리 에서 데이터를 읽어오는 방법 메모리 주소 -> 데이터 위치 메모리의 주소와 데이터 타입을 알면, 데이터를 읽거나 저장 할 수있다. 포인터의 역활 : 임의의 메모리에 접근하여 값을 저장하거나 읽는 역활 포인터 변수 : 메모리 주소를 저장 하는 변수 일반 변수와 포인터 변수의 공통점과 차이점 공통점 차이점 일반 변수 값 저장 상수 저장 포인터 변수 값 저장 메모리 주소 저장 '*' 참조 연산자 아스트리크 선언된 변수가 포인터 변수임을 나태내는 역활 ex) int *pVar; == int* pVar; 포인터 변수에 저장된 메모리 주소로 접근한 ..

Tistory

[C] C언어 7일차 포인터2

안녕하세요. 훈츠 입니다. 포인터 정복을 해보려고 합니다. 천천히 보시죠. 포인터의 종류와 의미 포인터 (*****) , int *pPtr; : int형 메모리 주소를 저장하는 변수 선언 포인터 배열 (****) , int*pPtr[3]; : 3개의 열을 가진 배열의 메모리 주소를 저장하는 배열 선언 void 포인터 (****) , void *pPtr; : 모든 데이터형의 주소를 저장하는 변수 선언 사용할때는 반드시 형 변환 (type casting)을 해야 한다. 이중 포인터 (**) , int **pPtr; : int *형 메모리 주소를 저장 하는 변수 선언 함수 포인터 (**) , (*function)(int) : 함수의 메모리 주소를 저장하는 변수 선언 배열 포인터 (*), int (*pPtr)[..

Tistory

[C] C언어 7일차 구조체와 TypeDef

안녕하세요. 훈츠 입니다. 이번 시간에는 구조체를 정의 해보려고 합니다. 구조체 개념 : 사용자가 정의 하는 데이터 형식 구성 : 필드 또는 멤버인 변수로 구성. 단, void 형은 사용할 수 없다. 멤버 접근 연산자 변수 선언인 경우 ('.' dot 사용) Point.x = 10; Point.y = 20; 포인터 선언인 경우 ('->' 사용) pPoint->x = 10;, pPoint->y = 20; 다양한 구조체 변수 선언(일반변수와 동일하게 사용 및 선언) struct POINT Point; struct POINT *pPoint; struct POINT PointXY[3]; 등 #include #include #include #include #include struct POINT { int x; i..

Tistory

[C] C언어 8일차 기타 문법1 (enum, goto, label, union, 전처리기 지시문)

안녕하세요. 훈츠 입니다. 드디어 앞으로 한번만 더 정리하면 C언어 문법을 마무리 하게 되었습니다. 사전 지식이 있어서 그런지 생각보다 빠르고 쉽게 정리 할수있었네요. ㅎㅎ 기타 문법에 대해 정리해 보도록 하겠습니다. enum 열거형 역활 : 문자열이 정수형 상수를 대신 하도록 한다. 형식 enum 태그 { 문자열1, 문자열2, ...}; : 초기값이 없으면 0부터 1씩 증가한 값으로 설정 됩니다. enum 태그 { 문자열1 = 초기값, 문자열2, ...}; : 초기값이 있으면 설정값 부터 1씩 증가한 값으로 설정 됩니다. ex) enum COUNT { ZERO, ONE, TWO }; enum COUNT Count; printf("%d ", Count = TWO }; #include #include #i..

Tistory

[C] C언어 8일차 기타 문법2 (지역, 전역, 정적 변수 사용 범위)

안녕하세요. 훈츠 입니다. 지역 변수, 전역 변수, 정적 변수에 대해서 정리해 보도록 하겠습니다. 변수의 사용 범위 구분 선언 범위 구분(사용 가능) 생성 시기 소멸 시기 지역 변수 함수 안 함수 안 함수 호출 함수 종료 전역 변수 함수 밖 프로젝트 전체 Prog. 실행 Prog. 종료 정적 변수 함수 안,밖 선언된 함수안 or 해당 file 함수 or Prog Prog. 종료 지역 변수 (local variable) 함수 안에서 선언 하고, 함수 안에서만 사용 가능 합니다. 함수 호출시 생성되고, 함수 종료시 소멸됩니다. 초기값 : 이전 메모리에 남아 있던 임의의 값으로 초기화 전역 변수 (globla variable) 함수 밖에 선언 후, 프로젝트 전체에서 사용 가능 합니다. 프로그램 실행시 생성되고..

Tistory

[C] C언어 8일차 분할 컴파일

안녕하세요. 훈츠 입니다. 분할 컴파일에 대해 정리해 보도록 하겠습니다. 지금 까지 main.c 파일 내에서 실습을 해왔는데요. 구조적 프로그램을 구성하기 위해서는 기능과 용도에 맞게 프로그램을 분리하고 만드는 작업이 필요합니다. 이때 필요한 것이 바로 분할 컴파일 개념 입니다. 분할 컴파일 여러 변수와 함수를 기능별로 구분하여 외부 파일에 저장한 후에 필요에 따라 main()에서 호출하여 컴파일 하는 방법 입니다. 파일 추가 .c 함수 및 변수 헤더 파일 추가 .h 함수의 원형 선언 #include "xx.h" 전역 변수를 외부에서 사용 하는법

Tistory

[C] C언어 9일차 파일 입출력

안녕하세요. 훈츠 입니다. 금일은 파일 입출력에 대해 알아보도록 하겠습니다. C, C++ 동일하게 사용된다고 하니 이번기회에 잘 정리해 놓으면 편할듯 싶네요. 파일 입출력 종류 공통점 : 0과 1로 저장된 이진 데이터 차이점 : 저장하는 방식과 읽는 방식 텍스트 파일 입출력 아스키 코드 값으로 저장 되는 파일 이진 파일 입출력 binary 파일 파일 입출력 함수 파일 형식과 상관없이 공용으로 사용하는 함수 FILE *open( const char *filename, const char *mode ); int fclose( FILE *stream ); int feof( FILE *stream ); int fscanf( FILE *s, const char *format, argument... ); int f..

Tistory

[S7 F] Safety 프로그래밍 유의 사항

안녕하세요. 훈츠 입니다. 금일은 Safety 프로그램시 유의 사항에 대해 포스팅 합니다. https://support.industry.siemens.com/cs/document/19183712/what-should-you-do-if-the-f-cpu-goes-into-stop-mode-and-the-message-data-corruption-in-the-safety-program-appears-in-the-diagnostics-buffer-?dti=0&lc=en-WW 불러오는 중입니다... Main safety block Data buffer 및 MainSafety 는 OB35 에서 주기적으로 처리 해야 합니다. 위와 같이 HMI 파트와 통신 하는 부분의 DB를 다이렉트로 Safety block 에다가..

Tistory

[C] C 언어 시작

안녕하세요. 훈츠 입니다. 금일 부터 C언어를 학습 하면서 기록 형식으로 남겨 보도록 하겠습니다. 대학생때 C언어를 배웠습니다만, 잘 기억이 나지 않습니다. 그만큼 C 하면 고전 이라는 생각에 많이 안쓰일줄 알았는데, 오히려 4차 산업혁명이 도래 되면서 IOT(Internet of things) 사물 인터넷 제품들 때문에 C의 사용범위가 더욱 다양해 진것 같습니다. 요즘 코틀린하고 C#에 관심이 생겨 유튜브에서 찾아보다가, 강사님께서 C -> C++ -> C# 코스를 추천해주셔서 새로운 마음으로 시작 하게 되었습니다. 사실 하고 싶은것은 많은데, 무엇을 해야할지 몰라서 Basic을 쌓고 가고자 합니다. 슬퍼요. 나이먹고 하려니,,, 어렸을때 할걸 하는 후회도 있지만 이게 또 나름 활력이 됩니다. ㅎㅎㅎ ..

Tistory

[C] C언어 2일차 C언어 프로젝트 생성

안녕하세요. 훈츠 입니다. 금일은 C언어 학습 한지 2일차 되는 날입니다. 대학생때 C언어 하면 'void main() {}' 이부분까지 생각이 났는데 다시 강좌를 보면서 보니, 전처리기 #include , printf()등 재밌네요. 처음 프로젝트 만드는 부분부터 시작해 보도록 하겠습니다. 컴파일러 고급 언어로 작성된 코드를 컴파일 과정을 통해 목적코드(프로그램 기계어) 로 변경 링커 목적 코드와 소스 코드 안에 사용한 함수 코드를 라이브러리와 연결하는 역활 실행파일 *.exe 를 생성 ex1.c -> ex1.obj -> ex1.exe 디버깅(Debugging) 프로그램의 오류 부분을 찾아내고 수정하는 작업 프로젝트 생성 소스 파일과 관련된 여러 파일과 링크 정보가 저장됨. 비주얼 스튜디오에서 프로젝트..

Tistory

[C] C언어 2일차 상수와 printf() 함수

안녕하세요. 훈츠 입니다. C언어는 절차지향 프로그램 이며 함수형 프로그램 입니다. 함수형 프로그램에 장점은 함수로 인해 반복 코드를 쉽게 사용할수 있고 역활에 따라 코드 구분이 쉽다는 장점이 있습니다. 전처리기 : Preprocessor 역활 컴파일 전에 프로그램 소스에 특정한 작업을 수행(추가적인 작업, 작성한 소스 코드를 변경하지는 않음) 지시문(매크로) #define, #include, #pragma, #endif, #ifndef, #line, #elif, #error, #ifdef, #else, #if, #undef #include 표준 파일이기때문에 이형식으로 지정합니다. 표준 으로 포함이 안되어있을때는 " " 대괄호를 이용해서 경로를 지정합니다. MSDN 함수 사용 방법 확인 https://..

Tistory

[C] C언어 3일차 상수

안녕하세요. 훈츠 입니다. C언어를 처음 시작 해야겠다는 마음 먹었을땐 방대한 양에 지치진 않을까? 하는 걱정도 앞섰는데 컴퓨터 랭귀지가 기본적인 부분이 비슷한게 많아서 지금 와선 괜한 걱정이었다는 생각이 듭니다. 아는 내용을 쭉 훓는 거라서 굉장히 가볍게 지나가고 있습니다. ㅎㅎ 앞으로 포인트 부분이 나오면 당황할지도 모르나 현재까진 그렇습니다. 그럼 오늘 학습한 내용에 대해 정리해 보도록 하겠습니다. 수 number 사람 입장 아리비아 숫자를 이용 0 ~ 9 해서 값을 구분하기 쉽습니다. 컴퓨터 입장 이진법 을 이용 합니다. 0 , 1 디지털 신호는 기본적으로 이진법 수들의 나열입니다. 수를 표기 하는 기수법 : 진법 10진법 : 0 ~ 9 까지 2진법 : 0 , 1 (십진수)11 -> (이진수)10..

Tistory

[C] C언어 3일차 연산자

안녕하세요. 훈츠 입니다. 이어서 연산자에 대해서도 정리해보도록 하겠습니다. 논리 연산자 C 언어에서 참(True) 와 거짓(False) 의미 && : AND 연산자 || : OR 연산자 ! : NOT 연산자 비트 연산자 & : and 연산자 | : or 연산자 ~ : not 연산자 ^ : xor 연산자 > : shift 연산자 1 100 이 되며 정수값 으로는 4가 됩니다. 형 변환 연산자 일시적 형 변환 (type casting) (데이터형) 변수 또는 상수 int A; char B; A = (int) B; 형변환시 메모리 크기와 데이터 허용 범위를 고려 해야 합니다. 연산자 우선 순위 우선순위 연산자 결합성 1 () , [], .->, 후위++, 후위-- 좌 -> 우 2 전위++, 전위--, siz..

Tistory

[C] C언어 3일차 반복문과 분기문

안녕하세요. 훈츠 입니다. C언어 뿐만 아니라, 정말 많이 사용하는 반복문과 분기문에 대해서 정리 합니다. 렛츠 고우~ 반복문 (for , while, do while) for 무한 루프 for ( ; ; ) break 를 만나면 정지 while 무한 루프 while(1) break 를 만나면 정지 do while 최초 1회는 무조건 수행 //for 문 for(int i=0; i < 3; i++) { printf("for 문 %d", i); } //while 문 int i = 0; while(i < 3) { printf("for 문 %d", i++); } //do while 문 int i = 0; do{ printf("do while 문 %d", i++); }while(i < 3); 분기문 (if , s..

Tistory

[지멘스 PLC SIEMENS] 지멘스 카다로그 Catalog S7-1500 ST70 PLC HMI DRIVE PM21 ST80

지멘스 PLC 카다로그 무료로 다운 받으세요. 지멘스 카다로그에 대해 설명 드립니다. 지멘스사에서 제공해주는 카다로그 메뉴얼은 너무 방대해서 사용하시는 분야가 어느 카다로그와 메뉴얼에 속해있는지 아는게 중요한것 같습니다. 그래서 자동화 분야에서 많이 사용하는 PLC, HMI, Drive 에 핵심 부품 카다로그 설명드리고 현재 날짜 기준 최신 파일 공유 드립니다. 목차 PLC - ST70 카다로그 HMI - ST80 카다로그 S210 Drive 카다로그 S120 Drive 카다로그 IKPI 산업용 통신 카다로그 PLC ST70 카다로그 ST70 카다로그 에는 SIMATIC 패밀리 라인들중 아래 하드웨어 제품군 종류와 스펙에 대해 잘 나와있습니다. 처음 제품 선정시 도움을 주는 TIA Selection To..

Tistory

[C] C언어 4일차 함수

안녕하세요. 훈츠 입니다. 오늘은 함수에 대해 정리 해보도록 하겠습니다. 함수 정의 특정한 작업을 수행하도록 제작된 독립적인 코드 ( 코드 덩어리 + 이름 ) = 함수 처리가 시작되는 메모리 주소를 의미 코드의 재사용이 가능하며, 전체 구조를 파악하기 쉽다. Init() : 초기화에 관한 코드 Update() : 업데이트에 관한 코드 Release() : 메모리 해제에 관한 코드 제공 함수 (표준 함수) MSDN 라이브러리 확인해보면, 포함해야하는 헤더 및 사용용례를 확인가능합니다. https//docs.microsoft.com/ko-kr/cpp/c-language-reference?view=vs-2019 헤더 파일 포함 #include : 이미 설치 파일에 함수가 있을때 경로 지정법 #include "..

Tistory

[C] C언어 5일차 배열

안녕하세요. 훈츠 입니다. 이번 시간에는 1차원 , 2차원, 3차원(다차원) 배열에 대해 정리해 보도록 하겠습니다. 배열 (Array) 데이터형과 변수명이 같은 변수의 집합 배열 형식과 선언 데이터형 배열명[ 열의 갯수 ] ; 두가지 초기화 방법 선언과 동시 초기화 인덱스를 이용한 초기화 memset 표준 함수를 이용한 초기화 : 0 , -1로 만 초기화 가능 //1. 선언과 초기화 동시지정 //배열의 갯수를 지정 int array[3] = {1,2,3} //값을 초기화 int array[3] = {0,} //이후의 값은 모두 0으로 초기화 //배열의 갯수를 컴파일러가 판단하도록 지정하지 않는법 int array[] = {1,2,3} //값을 초기화 int array[] = {0,} //이후의 값은 모두..

Tistory

[TIA Portal PLC] 지멘스 & 미찌비시 PLC CPU 비교

지멘스 S7-1500 CPU 와 미찌비시사의 UDV CPU에 대한 사양에 대해 알아 보겠습니다. 지멘스 CPU 사양 오버뷰 미찌비시 CPU 사양 오버뷰 QCPUV 씨리즈는 1.9ns로 CPU type에 상관없이 빠른 연산처리 속도를 나타내고 있습니다. 하지만 CPU의 처리 속도에는 bit, word, fixed point, floating point 입출력 처리 등이 모두 합산이되어서 비교 되어져야 하는데 미찌비시의 처리속도는 단순히 bit operation에 대한 내용만 카다로그에 기술하고 있습니다. 어플리케이션에 따라 bit처리만 하는 아주아주 단순한 어플리케이션이 아니라면 대부분 다른 연산들을 사용 할것입니다. 그러므로 CPU의 bit 처리 속도 만으로 CPU의 빠름을 판단하는것은 잘못된것 입니다...

Tistory

[C#] C# 컬렉션 함수 Dictionary

안녕하세요. 훈츠 입니다. 금일은 Dictionary 함수 사용법에 대해 알아보도록 하겠습니다. 컬렉션 함수 딕셔네어리 (Dictionary) 코틀린의 map 처럼 key, value 로 구성 되며, key값이 중복되면 안됩니다. ContainsKey("key"), TryGetValue("cat" , out test) KeyValuePair Dictionary 컬렉션을 상속받기에 루프에서 사용할 땐 keyValuePair 구조체를 이용합니다. keyNotFoundException 존재 하지 않는 키를 사용하면 에러를 발생합니다. 항상 Containkey나 TryGetValue로 키 존재 여부를 먼저 확인 해야 합니다. ContainsKey("key"), TryGetValue("cat" , out test..

Tistory

[Kotiln] 코틀린 안드로이드 런처 아이콘 변경 하기

안녕하세요. 훈츠 입니다. 이번 시간에는 안드로이드 아이콘 변경 하는 방법에 대해 알아보도록 하겠습니다. 다음 순서로 아이콘 런처를 변경 가능합니다. 아이콘 런처 만들기 혹은 다운로드 하기 이미지 Asset 추가 (생략 가능 합니다.) AndroidManifest.xml 파일 수정 최초 앱의 아이콘 런처는 안드로이드 보이 입니다. 1. 아이콘 런처 만들기 혹은 다운로드 하기 직접 만드셔도 되고, 저처럼 freeimage icon을 이용 하셔도 됩니다. freeimage icon을 다운받을수 있는 사이트 입니다. https://www.flaticon.com/packs/social-media-logos-2 48 free vector icons of Social Media Logos designed by Fr..

Tistory

[VSCODE C# , Windows forms C#] C# UserControl 모듈화 방법 및 소개

VSCODE C# 을 활용해서, Windows Forms UserControl 모듈화 하는 방법에 대해 알아보도록 하겠습니다. 새로운 Windows form 만들고 띄우기 사용자 정의 컨트롤 (Windows Forms) 만들기 Main Form에서 사용자 정의 컨트롤 활용 하기 새로운 Window Form 만들고 띄우기 프로젝트 -> 구성요소 추가 -> Windows Forms -> 양식(WindowsForms) 선택 합니다. Show , ShowDialog, Close 명령어로 form을 제어하세요. Form3 form3 = new Form3(); //show or showDialog 둘중에 하나 사용하시면 됩니다. form3.Show(); form3.ShowDialog(); //띄운 form을 닫을때..

Tistory

[C#] C# 컬렉션 함수 List

안녕하세요. 훈츠 입니다. 금일은 List 사용법에 대해 알아보도록 하겠습니다. Console app 으로 만들었을때 바로 종료되는것을 방지 하기 위해서는 다음 명령어를 추가해야 합니다. Console.ReadKey(); 컬렉션 함수 리스트 (List) List 는 Generic이나 구조체로 간주합니다. 그래서 사이에 자료형을 선언 해야합니다. List list = new List(); add, Count, Clear, AddRange, ForEach, ToArray, remove, revmoveat..etc 함수를 사용 할수 있습니다 String.Join 을 이용해서 단어 사이에 ';'가 찍히는 문자열을 만들수 있습니다. List에서 문자열을 추출할 때는 , ToArray를 이용 합니다. 인수에 대한 ..

Tistory

[Kotiln] 코틀린 중첩 클래스와 내부 클래스

안녕하세요. 훈츠 입니다. 금일은 중첩 클래스와 내부클래스에 대해 알아보도록 하겠습니다. 중첩 클래스 외부 클래스와 내부에 다른 클래스와 강하게 연결되어 있다는 의미를 전달하기 위해 만들어진 클래스 입니다. 하지만 외부 클래스와 내부 클래스는 내용을 공유 할수 없다는 특징도 있습니다. 외부 클래스와 내용을 공유 할수 없습니다. 사용시에는 중첩 클래스에 인스턴스를 만들어서 사용해야 합니다. var nested = Outer.Nested() class Outer(){ var text = "Outer class" class Nested(){ fun introduce(){ println("nested class") } } } fun main() { var outerNested = Outer.Nested() ou..

Tistory

[Kotlin] 코틀린 데이터 & 이늄 클래스 (data & enum class)

안녕하세요. 훈츠 입니다. 오늘은 데이터 클래스와 이늄 클래스에 대해 설명 드려보도록 하겠습니다. 데이터 클래스 (data class) 일반 클래스에 data 를 붙이면 data 클래스가 됩니다. data 클래스는 코틀린에서 데이터를 저장할 목적으로 만들어진 클래스로 데이터클래스로 선언하면 5가지 기능의 함수가 자동적으로 생성됩니다. equals() hashcode() toString() copy() component() x1 는 key값 , x2는 value값을 가져올수 있습니다. data class Data(var name:String,var hobby:String, var age:Int){} fun main() { var data = Data("은서", "공부",13) println(data.equ..

Tistory

[Kotlin] 코틀린 컬렉션 클래스 (collection)

안녕하세요. 훈츠입니다. 이번 시간에는 코틀린 에서 제공하는 List,Set,Map 을 사용하면 기본적으로 사용할수있는 컬렉션에 대해 이야기 해보겠습니다. 컬렉션 함수에 대해 설명한 이전 포스팅도 같이 한번 보시면 도움이 될것 같습니다. https://rain2002kr.tistory.com/91?category=361958 [Kotiln] 코틀린 컬렉션 함수 : 리스트, 셋, 맵(List, Set, Map) var list = listOf(1,2,3,4,5) var mutablelist :MutableList = mutableListOf() 안녕하세요. 훈츠 입니다. 오늘은 컬렉션 함수중 리스트에 대해 설명 드리도록 하겠습니다. 컬렉션 함수 리스트 (List) List.. rain2002kr.tisto..

Tistory

[Kotlin] 코틀린 변수의 활용 (상수, 늦은 초기화,지연 대리자)const, lateinit, lazy by { }

안녕하세요. 훈츠 입니다. 이번 시간에는 변수에 선언에 대해 알아보도록 하겠습니다. 변수 관련해서 앞선 포스팅 2개를 했는데요. 오늘은 조금더 고급 스러운 변수 선언에 대해 알려 드리도록 하겠습니다. 바로 상수, 늦은 초기화, 초기화의 지연 입니다. 앞선 포스팅 한번씩 보시고 오셔도 도움이 될듯하여, 링크 붙였습니다. https://rain2002kr.tistory.com/62?category=361958 [Kotiln] 코틀린 변수와 자료형 안녕하세요. 훈츠 입니다. 이번 시간에는 코틀린의 자료형에 대해 설명 드리겠습니다. 코틀린은 자바를 대체할 목적으로 개발 되어 졌기 때문에, 자바에서 자주 발생하는 nullpointException 에러를 막는 방법도.. rain2002kr.tistory.com h..

Tistory

[TIA Portal PLC] S7-1500 PLC TM Count 2x24V 카운트 모듈

안녕하세요. 훈츠 입니다. 금일은 Technical module TM Count 2x24V에 대해 설명 드리겠습니다. S7-1500, TM Count 2x24V counter module • 2-channel high-speed counter module • With comprehensive parameterization options for an optimum adaptation to the task and reduction of control load • Speed and time period measuring • Storage and comparison functions • Connection of 24 V encoders Card technical data https://support.indust..

Tistory

[TIA Portal PLC] S7-1500 PLC TM PosInput 2 카운트 모듈

안녕하세요. 훈츠 입니다. 금일은 Technical module TM PosInput 2 에 대해 설명 드리겠습니다. TM PosInput 2 RS 422 인터페이스를 가지는 카운팅과 포지션 감지 모듈 입니다. • 2-channel counting and position detection module with RS 422 interface • Extensive parameterization options for optimum task-specific adaptation • Reduces load on controller due to preprocessing on the module • Position detection with incremental and SSI absolute encoders • Spe..

Tistory

[TIA Portal PLC] S7-1500 PLC Time-based IO 모듈

안녕하세요. 훈츠 입니다. 금일은 Time-based IO moudle 인 TM Timer DI/DQ에 대해 설명 드리겠습니다. S7-1500, Time-based IO module TM Timer DI/DQ 8 디지털 입력, 16 디지털 출력, 최대 16개 까지 다른 구성을 적용해서 사용 할수 있습니다. 입력은 마이크로초 에 입력 펄스를 감지 할수 있고, 출력 또한 마이크로초 단위로 스위칭 출력을 내보냅니다. 32배 오버샘플링가능하며, PWM 출력과 카운터 기능 그리고 출력은 0.5A 부터 패스트 0.1A 빠른 출력을 스위치 가능합니다. • 8 digital inputs, 16 digital outputs, of which up to 16 can be used in different configurat..

Tistory

[TIA Portal PLC] S7-1500 PLC Interface 모듈 for PTO (펄스 트레인 출력) TM PTO 4

안녕하세요. 훈츠 입니다. 금일은 Interface 모듈 for PTO (펄스 트레인 출력) TM PTO 4에 대해 설명 드리겠습니다. S7-1500, Interface 모듈 for PTO (펄스 트레인 출력) TM PTO 4 • 4-channel interface module for PTO (Pulse Train Output) • 3 signal interfaces can be configured for speed and direction: - 24 V asymmetrical up to 200 kHz - RS 422, 5 V symmetrical up to 1 MHz - TTL 5 V asymmetrical up to 200 kHz • 3 signal types can be configured: - P..

Tistory

[지멘스 PLC TIA portal Team center] 팀센터 Team center PLM

Team Center PLM Teamcenter 소프트웨어는 혁신을 위한 디지털 스레드를 통해 기능 사일로 전반에 걸쳐 사람과 프로세스를 연결하는 최신 적응형 PLM(제품 라이프사이클 관리) 시스템입니다. 비할 데 없이 폭넓고 심층적인 Teamcenter 포트폴리오는 매우 성공적인 제품을 개발하는 데 필요한 다수의 어려운 난제를 해결할 수 있음을 의미합니다. 쉽고 직관적인 Teamcenter 사용자 인터페이스를 통해 조직 전체의 사용자가 이전과는 달리 제품 개발 프로세스에 한층 더 쉽게 참여할 수 있습니다. 3D 설계, 전자장치, 임베디드 소프트웨어, 문서, BOM(Bill of Materials)을 비롯한 제품 데이터 및 프로세스를 제어하는 단계부터 Teamcenter를 시작해보십시오. 제조, 품질,..

Tistory

[Kotlin] 코틀린 제너릭 Generic

안녕하세요. 훈츠 입니다. 오늘은 제너릭 Generic 에 대해 알아보도록 하겠습니다. 제너릭 클래스를 구현 하는 방법과 제너릭 펑션을 구현 하는 방법에 대해 알아보겠습니다. 제너릭 (Generic) 제너릭은 클래스나 함수에서 사용하는 자료형을 외부에서 지정할수 있는 기능입니다. 제너릭은 함수나 클래스를 선언 할때, 고정적인 자료형 대신 실제 자료형으로 대체되는 '타입 패러미터'를 받아 사용하는 방법입니다. 제너릭을 이용하면, 다형성에서 배운 is, as연산자 없이 타입변경 없이 사용이 가능합니다. 타입 파라미터의 이름은 클래스 이름과 규칙이 같지만 일반적으로 'TYPE' 의 이니셜인 'T' 를 사용하는 것이 관례입니다. 만약 여러개의 제너릭을 사용할 경우 T의 다음 알파벳인 를 추가적으로 사용 하기도 ..

Tistory

[TIA Selection Tool] Tia Selection tool 설치 및 관리

안녕하세요. 훈츠 입니다. 금일은 TIA Selection Tool 에 대해 알아보도록 하겠습니다. TIA Selection Tool - 빠르고, 쉽고, 스마트 구성 가능 TIA Selection Tool 을 이용하시면, 기존에 일일이 카다로그를 보시고 제품에 대한 비교와 이해를 하셔야 했던 작업을 아주 빠르고 쉽게 스마트하게 구성이 가능합니다. TIA Selection Tool은 클라우드 버젼과 설치 버전을 제공해 드립니다. 다운로드는 다음 사이트를 이용하시면 됩니다. 클라우드 버전 : 항상 최신 버전을 유지 한다는 장점이 있는 반면 설치 버전보다는 반응이 느립니다. 설치 버전 : 클라우드 버전보다 반응이 빠르고, UI 구성이 좀더 시안성이 좋습니다. 하지만 주기적으로 최신 버전으로 업그레이드 해야하는..

Tistory

[TIA Portal OPC UA] OPC UA

안녕하세요. 훈츠 입니다. 금일은 TIA Portal 에서 OPC UA 와 Server Enable 하는 방법에 대해 설명 드리도록 하겠습니다. OPC UA [Open Platform Communications Unified Architecture] : 산업용 표준 프로토콜 산업용 프로토콜을 사용하는 환경은 현장에서 장비, 통신 간 호환, 안정적인 연결이 필수 입니다. 장비간 안정적인 연결, 즉 호환성을 더 높여 사용할 수 있는데 꼭 필요한 기술 입니다. 또, 통신 부분에서 많은 양의 데이터를 주고받으면서 보안, 데이터 손실, 안전성 등 다양한 문제가 발생할 수 있습니다. 이런 과정에서 만들어진 산업용 표준 프로토콜은 산업용으로 다양하게 활용하면서 생기는 문제점을 해결하고 요구 사항을 해결 할수 있을 것..

Tistory

[Kotiln] 코틀린 컬렉션 함수 : 리스트, 셋, 맵(List, Set, Map)

var list = listOf(1,2,3,4,5) var mutablelist :MutableList = mutableListOf() 안녕하세요. 훈츠 입니다. 오늘은 컬렉션 함수중 리스트에 대해 설명 드리도록 하겠습니다. 컬렉션 함수 리스트 (List) List 는 가장 단순한 형태로 데이터의 집합 입니다. List = listOf() : 생성시에 넣은 객체를 대체, 추가, 삭제 할수 없습니다. MutableList = mutablelistOf() : 생성시에 넣은 객체를 대체, 추가, 삭제가 가능합니다. add, shuffle, remove, revmoveat 함수를 사용할수 있습니다. var list = listOf(1,2,3,4,5) var mutablelist :MutableList = mut..

Tistory

[Kotlin] 코틀린 String 문자 클래스 객체 활용

안녕하세요. 훈츠 입니다. 오늘은 문자열 클래스에 대해 알아보도록 하겠습니다. 문자열 : 나누기, 대체하기, 합치기 val telnumber ="010-9898-8989" var telSplite = telnumber.split("-") //split 나누기 println(telSplite) println(telSplite.joinToString("-")) //joinToString 합치기 var tel = telnumber.replace("-","") //replace 대체하기 println(tel) println(tel.substring(3..10)) //원하는 영역 보기 //출력화면 [010, 9898, 8989] //split 나누기 010-9898-8989 //joinToString 합치기 01..

Tistory

[Kotiln] 코틀린 nullable 변수 처리

안녕하세요. 훈츠 입니다. 금일은 nullable 변수에 대한 처리에 대해 알아보도록 하겠습니다. Nullable 연산자 종류 [ ?. null safe , ?: 엘비스 , !! null 어소션] ?. null safe 연산자 (마치 if 문 처럼 동작합니다.) 스코프 함수와 같이 사용하면 편리합니다. ?: 엘비스 연산자 null이면 대체 되어서 동작 합니다. !!. 논 null 어소션 연산자 (일부러 null값이 오면 익셉션 에러를 발생 시킵니다.) val a : String? = "test" a?.run {println(a)} // null safe 연산자 a?:println("null입니다.") // 엘비스 연산자 println(a!!.toUpperCase()) // null 어소션 연산자 //출력..

Tistory

[지멘스 PLC SIEMENS PLC] CP 와 CM 카드 차이 및 통신

지멘스 PLC CP(Commuincation Processor) CM(Commuincation Module) 모듈에 대한 차이를 설명드립니다. CP와 CM 의 차이와 PLC 제품별 통신 지원 방식에 대한 설명을 드리도록 하겠습니다. 물론 두카드 사이에 금액차이가 있고, CP 가 조금더 비쌉니다. SIEMENS 통신 종류 이더넷 프로피넷 IO 프로피버스 DP 이더넷 프로피넷 IO 프로피버스 DP 비주기적 통신 주기적 통신 주기적 통신 시간이 중요하지 않은 app 시간이 중요한 app 시간이 중요한 app 제어기 - 제어기 간 통신 제어기 - 장치 간 통신 마스터 - 슬레이브 간 통신 S7-1500 CPU 인터페이스 X1, X2 포트는 프로피넷을 지원합니다. X3 포트는 이더넷을 지원하며, X1,X2 포트로..

Tistory

[Kotiln] 코틀린 함수의 활용 Vararg

안녕하세요. 훈츠 입니다. 금일은 함수에 대해 알아보겠습니다. 코틀린에서 함수를 사용할때 유용한 사항에 대해 정리 해보겠습니다. 함수 오버로딩 (Overloading) 함수의 이름이 같더라도, 속성값의 자료형이 다르거나 속성값의 갯수가 다르다면 오버로딩이 가능합니다. fun main(){ userPrint("testString") userPrint(100) } fun userPrint(data:String) { println("userPrint String : ${data}") } fun userPrint(data:Int) { println("userPrint Value : ${data}") } //출력화면 userPrint String : testString //오버로딩 확인 userPrint Valu..

Tistory

[Kotiln] 코틀린 반복문과 증감 연산자

안녕하세요. 훈츠 입니다. 오늘은 프로그래밍 할때 아주 많이 사용되는 반복문에 대해 이야기 해보겠습니다. 반복문은 최신 언어들이 제공하는 기능들을 제공하고 있어 조금더 사람이 이해하기 쉽게 되어 있는것 같습니다. 반복문의 종류 조건형 반복문 : while , do whild 범위형 반복문 : for While 문 var a = 0 while(a < 5){ print (a++) //전위 연산자 : 연산후 값 체크 } 출력내용 //0,1,2,3,4 while(a < 5){ print (++a) //후위 연산자 :다음구문에서 사용 } 출력내용 //1,2,3,4,5 a++ 전위 연산자 : 연산후 값 체크, ++a 후위 연산자 :다음구문에서 사용 Do while 문 do{ println (a++) }while (..

Tistory

[Kotlin] 코틀린 코드 흐름제어 및 논리 연산자

안녕하세요. 훈츠 입니다. 오늘은 코드 흐름제어를 위한 키워드 및 논리 연산자에 대해 설명 드리겠습니다. 금일 설명 드릴 항목 입니다. RETURN : 함수를 종료하고 값을 반환 하는 역활을 합니다. BREAK : 주로 반복문 안에서 break 조건문이 참일 경우, 그 즉시 반복문을 종료 합니다. CONTINUE : 주로 반복문 안에서 contiune 조건문이 참일 경우, 그 조건을 건너띄고 다음 조건문을 실행합니다. loop@for lable : 다중 반복문 안에서 @loop@ for lable 조건문이 참일 경우, 그 즉시 반복문을 종료 합니다. 논리 연산자 &&, ||, ! BREAK 와 CONTINUE //BRAEK 문 for (i 1..10) { if(i == 3) break //2까지 찍히고 ..

Tistory

[Kotlin] 코틀린 클래스 1

안녕하세요. 훈츠 입니다. 이번 시간에는 객체 지향에서 이야기 하는 클래스에 대해 이야기 해보려고 합니다. 사실 코틀린은 객체 지향 언어 + 함수형 언어의 장점을 흡수한 언어 입니다. 그럼 코틀린에서는 어떤 부분이 다른지 한번 들어가 보시죠. 클래스 구성 속성 : 고유의 값 함수 : 기능 구현 클래스란 값과 함수의 묶음 입니다. 코틀린 클래스 종류 class : 아무 것도 붙이지 않으면 일반 class data class : 앞에 data 를 선언하면 data class가 됩니다. 데이터 클래스의 생성자는 1개 이상의 속성 값을 가져야 합니다. 데이터 클래스의 속성을 선언 할때는 var 또는 val으로 선언 해야합니다. 데이터 클래스는 abstract, open, sealed, inner 를 붙일수 없습..

Tistory

[Kotlin] 코틀린 클래스 2 상속 & 기능 확장

안녕하세요. 훈츠 입니다. 오늘은 코틀린 클래스 1편에 이어 2편을 이어갈 예정인데요. 아직 클래스에 대해 감이 없으신분들은 다음 글을 한번 읽어보시는게 도움이 될것 같습니다. 이번 시간에는 코틀린에서 어떻게 상속 가능하게 만들고 상속할수 있는지 설명 드리겠습니다. https://rain2002kr.tistory.com/72 [Kotlin] 코틀린 클래스 1 안녕하세요. 훈츠 입니다. 이번 시간에는 객체 지향에서 이야기 하는 클래스에 대해 이야기 해보려고 합니다. 사실 코틀린은 객체 지향 언어 + 함수형 언어의 장점을 흡수한 언어 입니다. 그럼 코틀린에서는 어떤.. rain2002kr.tistory.com 상속 (inheritance) 상속이 필요한 경우와 상속에 관한 내용을 정리 해보자면 다음과 같습니..

Tistory

[Kotlin] 코틀린 클래스 3 오버라이딩 & 추상화 & 인터페이스

안녕하세요. 훈츠 입니다. 이번 시간으로 클래스 편을 마무리 하려고 합니다. 지난시간에 소개해 드린 클래스1,2편을 참조하시고 이번편을 보시면 코딩 하시는데 도움이 될것 같습니다. 이번 시간에는 추상화 와 인터페이스 그리고 오버라이딩에 대해 이야기 해보겠습니다. 오버라이딩 (overriding) 서브클래스 에서 슈퍼클래스에서 이미 구현된 함수를 재구현 해서 사용하는 것을 오버라이딩이라고 합니다. class에 상속 허용 처럼 function 에도 open을 붙이면 override가 가능합니다. fun main() { var tiger = Tiger("호랭이",2) tiger.eat() var bear = Bear("곰탱이",1) bear.eat() } open class Animal (var name:St..

Tistory

[Kotlin] 코틀린 변수 함수 클래스의 스코프 접근 제한자

안녕하세요. 훈츠 입니다. 오늘은 클래스의 스코프 접근 제한자에 대해 알아 보겠습니다. 스코프 : 범위 같은 스코프내에 동일 변수가 있으면 같은 스코프 변수를 사용 합니다. 하나의 패키지에서 다른 패키지 사용할때 동일 스코프 내에서는 공유 할수 있습니다. 같은 스코프에서 같은 멤버이름을 허용 하지 않습니다. var a = "패키지" fun main() { println(a) var a = "사람" println(a) show() } fun show(){ var a = "인간" println(a) } //출력 화면 패키지 사람 인간 접근 제한자 패키지 스코프 public : 기본값 internal : 같은 모듈 내에서만 접근 가능 private : 같은 파일 내에서만 접근 가능 클래스 스코프 public ..

Tistory

[Kotlin] 코틀린 고차 함수와 람다 함수

안녕하세요. 훈츠 입니다. 오늘은 고차 함수와 람다 함수에 대해 이야기 해 보겠습니다. 고차 함수 함수를 마치 클래스에서 만들어낸 인스턴스 처럼 취급 하는 방법 입니다. 코틀린에서는 모든 함수를 고차함수로 사용 가능 하여, 함수를 파라메터로 넘겨 줄수도 있고, 결과값으로 반환 받을 수도 있습니다. fun main() { b(::a) //고차함수 출력할때 사용 } fun a(string: String){ println("$string 함수 a") } //고차함수 예시 fun b(fc : (String) -> Unit){ //fun b(function : (자료형) -> 반환형 fc("b 가 호출한") } //출력 b 가 호출한 함수 a 함수의 형식(자료형, 자료형...) -> 함수의 반환형 //반환형이 없..

Tistory

[Kotlin] 코틀린 스코프 함수 [apply, also, run, let,]

안녕하세요. 훈츠 입니다. 오늘은 스코프 함수에 대해 이야기 해 보겠습니다. 코틀린에서 함수형 언어의 특징을 좀더 쉽게 사용할수 있도록 제공 하는것입니다. 스코프 함수 .{ 변수 혹은 함수 } (apply 참조연산자 없이 사용/ also "it"을 이용) 처리가 끝나면 인스턴스를 반환 합니다. (run 참조연산자 없이 사용 / let "it"을 이용) 처리가 끝나면 최종값을 반환 합니다. with(a){...} run과 완전 동일하며 함수 사용하는 형식 만 다릅니다. 함수형 언어의 특징을 좀더 쉽게 사용하도록 제공 합니다. 인스턴스의 속성이나 함수를 좀더 깔끔하게 사용 가능합니다. apply / also 처리가 끝나면 인스턴스를 반환, apply 는 참조연산자 없이 also 는 it 연산자 사용 clas..

Tistory

[Kotlin] 코틀린 오브젝트 싱글톤 패턴 object

안녕하세요. 훈츠 입니다. 오늘은 오브젝트 object 에 대해 이야기 해 보겠습니다. 여러 인스턴스를 생성할 필요 없이 하나의 객체만으로 공통적인 속성과 함수를 사용해야 할때는 class 가 아닌 object로 선언하여 사용 할수 있습니다. 오브젝트 Object 클래스 대신 object 라는 키워드를 사용합니다. 생성자는 허용하지 않습니다. 싱글톤 패턴 : Singleton Pattern 싱글톤 패턴 : 클래스의 인스턴스를 단하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴 object Calculator{ fun add(a:Int,b:Int) = a + b fun sub(a:Int,b:Int) = a - b fun multiply(a:Int,b:Int) = a * b fun divide(a:Int,b..

Tistory

[Kotlin] 코틀린 옵저버 패턴 리스너

안녕하세요. 훈츠 입니다. 오늘은 코틀린에서 광범위하게 사용되는 옵저버 패턴을 구현 하는 방법에 대해 설명 드리겠습니다. 옵저버 패턴을 구현하는 방법은 두가지 입니다. 한가지는 인터페이스를 상속하는 방법과, 두번째는 익명 함수를 통해서 익명 클래스를 구현하는 방법입니다. 옵저버 패턴 키의 입력, 터치의 발생 같은 시스템 또는 루틴에 의해 발생되는 동작들을 이벤트라고 부릅니다. 이벤트가 발생 했을때 상호 작용 할수있는 패턴을 옵저버 패턴이라고 합니다. 코틀린에서는 리스너라고 부르기도 합니다. 옵저버 패턴을 구현하는 방법 [class A - - class B ] 인터페이스 구현 두개의 클래스 class A, class B class A : 인터페이스를 속성값으로 받는 펑션 클래스 class B : 인터페이스..

Tistory

[Kotlin] 코틀린 다형성의 개념과 사용방법 is, as 연산자

안녕하세요. 훈츠 입니다. 오늘은 다형성의 개념과 Downcasting 할때 사용되는 is와 as 연산자에 대해 알아보도록 하겠습니다. 다형성 (Polymorphism) 클래스를 상속하다보면 하위 클래스에서 상위 클래스와 똑같은 이름의 프로퍼티나 메서드를 지정 할일이 생깁니다. 하위 클래스에서 이름은 같지만 호출 매개변수가 다르거나 전혀 다른 동작의 메서드를 정의할 필요가 있습니다. 이렇게 이름은 같지만 매개변수가 다르거나 다른 동작을 하도록 하는것을 다형성(Polymorphism) 이라고 합니다. 다형성에 대해 클래스로 예를 들어 보겠습니다. Class Animal : super class Class Tiger : sub class (eat 함수를 override 하고, tiger 클래스만의 shout..

Tistory

[Kotiln] 코틀린 타입 변환 및 체크 as for type check and conversion

코틀린에서 명시적 형변환과 암시적 형변환을 지원한다고 해도 Any type같은 경우는 암시적 형변환이 아닌 명시적 형변환을 사용해야 합니다. 이때 as 를 이용하여 형변환을 할수있습니다. as 사용법 : map list를 가지고 있는 map 예시 data class Person(var name:String, var number:String) //data class var mapOfperson = mutableMapOf() //Person type mutable map var mapOfMaps = mutableMapOf() //map 을 가지고있는 map //두개의 map of Person mapOfperson.put("key1",Sperson("lkh","01")) mapOfperson.put("key2..

Tistory

[kotlin] Gson & Json 저장 할수 있는 class 만들어 보기

안녕하세요. 훈츠 입니다. 모두 즐겁게 공부하면서 안드로이드 앱 학습하고 계신가요? 오늘은 Gson 클래스 객체를 Json 객체로 만들고, 다시 Json 객체를 Gson 객체로 만들수 있는 클래스를 설명 드려보고자 합니다. 물론 객체를 만들지 않고도 가능하지만 객체로 만들어 놓고 사용하면 조금더 손쉽게 적용할수 있지 않을까 하는 생각에 만들어 보았습니다. 저처럼 아직 Gson 객체를 Json 객체로 만드는게 익숙하지 않으시는 분들은 제가 설명드리는 부분과 함께 클래스 가져가셔서 해당하는 부분만 일부 변경해서 사용하셔도 괜찮을거 같습니다. GsonConvert Class 를 만들어 봅니다. Contact라는 data class를 type으로 예시를 들어 만들었습니다. data class Contact(va..

1 2