'Kotlin'에 해당되는 글 7건

  1. 2023.10.28 Lognote - Log viewer, Android logcat viewer for Windows, Linux, Mac 1
  2. 2023.07.04 Java 와 다른 kotlin 문법
  3. 2021.12.03 Android System Font list 가져오기, 적용하기
  4. 2021.11.24 Lognote 0.1.6 - Android logcat viewer
  5. 2021.10.08 Lognote 0.1.4 - Android logcat viewer
  6. 2021.09.01 Lognote 0.1.1 - Android logcat viewer
  7. 2021.02.16 int 를 hex string 으로 변환

Lognote - Log viewer, Android logcat viewer for Windows, Linux, Mac

프로그래밍/lognote 2023. 10. 28. 18:03
반응형

https://github.com/cdcsgit/lognote/releases

 

Releases · cdcsgit/lognote

Log viewer, Android logcat viewer for Windows, Linux, Mac - cdcsgit/lognote

github.com

LogNote-0.3.5.zip
5.07MB

 

텍스트 로그 파일 보기(필터)

Logcat 보기(Online/Offline)

정규 표현식 필터

에이징 테스트 : 라인수에 따라 파일 분할 저장

Kotlin + swing

 

실행

- Windows : start javaw -Dfile.encoding=utf8 -Xmx1024m -jar LogNote.jar
- Linux : java -Dfile.encoding=utf8 -Xmx2048m -jar LogNote.jar
- Mac : java -Dfile.encoding=utf8 -Xmx2048m -jar LogNote.jar

 

version 0.3.5

- 버그 수정(프로세스 업데이트 중 멈추는 현상 수정)

- 정규 표현식 필터에도 컬러태그 적용 되도록 함

- logcat 레벨 설정 위치 메뉴바에서 하단 상태바로 이동

- 로그 뷰(full, filtered) 저장 기능 추가

 

version 0.3.4

- 버그 수정
- 최근 파일을 열때 이전에 사용한 필터 적용 여부 팝업 추가

- 프로세스 정보에 대한 업데이트 주기 설정 메뉴 추가

 

version 0.3.3

- logcat 수신 모드일때 key 입력으로 포커스 이동시 툴팁에 로그 프로세스 정보 출력

- 타이틀 바에 실행 모드 표시

- 최근 파일 저장 / 불러오기(북마크 저장)

- 코드 리팩토링

- 로그 필터 콤보박스에 '#' 입력시 사용 가능한 컬러 리스트 출력

 

version 0.3.2

- logcat 로그가 아닌 로그 파일에 필터가 적용되지 않는 현상 수정

- 코드 리팩토링

- 최근 파일 저장 / 불러오기(파일 별 필터 저장)

- 스크롤백 제한으로 로그 파일 삭제 될때 화면이 밀려올라가는 현상 수정

- logcat 수신 모드일때 툴팁에 로그 프로세스 정보 출력

- 업데이트 체크 메뉴 추가

 

version 0.3.1

- 단축키 로직 정리

- 필터 추가시 컬러 태그 적용 메뉴 추가

- 버그 수정

 

version 0.3.0

- 버튼에 아이콘 추가

- 로그뷰에서 보여지는 로그 모드(Open, Adb, Cmd, Follow) 에 따라 타이틀바 변경

- 버그 수정

 

version 0.2.9

- default font 변경 : dialog -> dialoginput

- 정규표현식 파싱 에러 발생시 텍스트 컬러 변경(알림)

- 검색에서 shift - enter 입력시 이전 항목으로 이동

- 버그 수정

 

version 0.2.8

- logcat 명령 변경 기능 추가

- 검색 기능 추가

   Ctrl + F : 검색바 보이기
   ESC : 검색바 숨기기
   F3 : 이전 항목으로 이동
   F4 : 다음 항목으로 이동
   필터 또는 전체 로그 뷰 클릭 :검색 타겟 뷰 설정

 

version 0.2.7

- 필터 아이템별 컬러 설정 기능 추가

- Ctrl + 필터버튼 실행시 필터 내용 붙이기 기능 추가

 

version 0.2.6

- UI 및 로그 컬러 관련 설정 합침

- 내장 색상표 적용 UI 변경

- 버그 수정

 

version 0.2.5

- UI 콤포넌트 폰트 사이즈 변경 기능 추가

- 내장 색상표 기능 추가(light, dark)

- 필터 / bold 텍스트 FG / BG 컬러 설정

- 저장 파일 default prefix "LogNote" 로 설정

- 필터 / bold 텍스트 겹칠 경우 bold 컬러 적용

- 안정성 개선??

 

version 0.2.4

- 환경 변수 "LOGNOTE_HOME" 참조 하여 config 파일 저장 위치 설정

- FlatLaf 적용(https://github.com/JFormDesigner/FlatLaf)

 

version 0.2.3

- 필터 입력 콤보박스 멀티 라인 적용

- 로그 화면 비율 조절시 일정 크기 이하로 변경 되지 않는 현상 수정

- 코드 정리

 

version 0.2.2

- 디바이스 재부팅 등으로 연결이 끊겼을때 연결 재시도 로직 추가

- 설정 변경시 즉시 저장(창닫을 필요 없음)

 

version 0.2.1

- 멀티 라인 북마크 기능 추가(여러라인 선택 후 동시 북마크)

- 컬러 세팅 아이템 추가

 

version 0.2.0

- adb 에서 logcat 읽기 속도 개선

- 필터 적용 속도 개선

- 컬러 세팅 아이템 추가

 

version 0.1.9

- 자주 사용하는 필터 테이블 바에 추가 가능 하도록 수정

- 필터 관리 창에서 순서 변경 기능 추가

- 자주 사용하는 명령 관리 기능 추가

 

version 0.1.8

- 상태바 tooltip 에 열린 파일 리스트 출력

- adb 연결 보기 실패시 에러 팝업 출력

- 필터 tooltip 에 include, exclude 항목 출력

 

version 0.1.7

- 사용하지 않는 필터 콤보박스 숨기기

- ESC 키 입력시 다이얼로그 닫기

 

version 0.1.6

- 여러파일 동시 열기

- tooltip 추가

- windows drag & drop 개선

- 스크롤백 제한으로 인한 로그 삭제 일시 중지 기능 추가

 

version 0.1.5

- 로그 컬러 세팅 추가

- 필터 로그뷰에서 커서 이동시 전체 로그뷰 커서 이동 개선

- 스크롤백 라인 제한으로 인한 로그 삭제시 뷰 동작 개선

 

version 0.1.4
- 설정에서 폰트 변경시 즉시 적용
- 필터 저장 및 가져오기

version 0.1.1
- 팝업메뉴 추가
- 대소문자 구분

version 0.0.1
- 정규 표현식 필터
- On/Off line 로그 뷰

 

 
 
 
 
반응형
:

Java 와 다른 kotlin 문법

프로그래밍/kotlin 2023. 7. 4. 01:07
반응형

kotlin을 사용하면서 java와 다른 점들과 샘플 코드들을 정리 한다.

0. main 함수가 클래스 안에 있을 필요가 없다.

main 함수를 클래스 없이 정의 하면 파일명으로 클래스가 생성되고 그안에 main 함수가 들어가게 된다.

1. 기본 타입들이 모두 클래스 이다.

기본 타입들은 java와 크게 다르지 않으나 모두 클래스 형태로 되어 있다.

2. 컴파일 시점에 기본 타입의 범위에 대한 체크가 이루어진다.

val a: Byte = 500 처럼 최대 값을 벗어나는 값으로 초기화를 할때 에러를 발생 시킨다.

초기 잘못된 타입에 대한 overflow를 예방 할수 있다.

3. 함수 정의는 fun, 변수 정의는 val, var을 앞에 붙인다.

fun foo(a: Int): Int   // fun 함수명(파라메터): 반환타입 형식으로 함수를 정의 한다.

변수앞에는 val, var을 붙이고 val 은 value로 변경 되지 않는 값, var은 variable로 변경 되는 값을 의미한다.

4. for 루프 사용하기

여러 스타일로 사용이 가능하다.

5. if, when

val c = if (a == 5) "a is 5" else "a is not 5" 처럼 if 문을 값으로 사용할수 있다. 이때 항상 else가 있어야 한다.

when은 switch 대신 사용한다고 생각하면 된다. default 대신 else를 사용한다.

when에서 사용하는 값은 기본 타입에서 클래스 객체까지 사용되고,

','를 사용하여 여러 값을 하나의 항목으로 묶을수 있다.

6. 멤버 변수 정의 하기

클래스 명 파라메터를 val, var로 정의를 하면 멤버 변수가 된다. data class 타입에서 주로 사용 된다.

멤버 변수를 전달 받은 파라메터로 초기화 가능 하고, init 블럭을 사용해서 초기화 할수도 있다.

var 변수의 경우 lateinit 을 사용하여 초기화 시점을 늦출수 있다.(사용하기 전에 초기화 하면 된다.)

lateinit은 val 변수에는 사용할수 없다. val은 값 변경이 되지 않아 생성시점에 초기화 되어야 한다.

7. getter, setter 정의 하기

Java 에서는 get~, set~ 메소드를 정의 해야 하나 kotlin에서는 멤버변수 밑에 get(), set(value)를 붙여 주면 된다.

간단하게 getter, setter가 정의 되고, 변수를 사용하듯이 값을 할당 하거나 사용하면 자동으로 set, get이 호출된다.

8. 상속 사용하기

kotlin의 class는 자바의 final class 이다. 상속이 되지 않는다.

kotlin의 open class는 자바의 class 이다. 상속이 가능하다.

overriding 가능한 함수는 앞에 "open"을 붙여준다. 사용할때는 "override" 를 앞에 붙인다.

추상 클래스는 "abstract" 키워드를 사용하여 정의 한다.

9. null 안정성 - 1

변수를 정의 할때 "?"를 붙여 null 사용여부를 결정한다.

var testName: String? = null

사용 할때 "!!"를 붙이면 java에서 사용할때처럼 null 값일 경우 null pointer exception이 발생한다.

"?"를 붙여서 사용한다면 null 값을 경우 아무런 동작을 하지 않는다.

dog.printName()   // compile error
cat2.printName()

둘다 if 문에서 null 체크를 했으나 하나는 컴파일 에러가 발생하고, 하나는 에러가 발생하지 않는다.

차이는 변수의 값이 if 문 이후 변경이 가능한지 여부이다.

dog은 멤버 변수로 멀티 스레드로 동작할 경우 if문을 지난 직후 다른 스레드에서 변경하는 상황이 발생할수 있다.

cat2는 로컬 변수로 함수내에서 변경이 불가능 하여 null 체크 후 "." 만으로 사용이 가능 하다.

10. null 안정성 - 2

dog?.let 은 dog이 null 이 아닐 경우에만 동작하는 블럭을 정의 하고 dog을 "it"을 사용하여 접근한다.

엘비스 연산자 "?:"는 if 문을 간소화 해준다.

11. data 클래스

class 명 앞에 data를 붙여 정의 하는 것으로 생성자 파라메터에 정의 값이 동일할 경우 == 연산시 true를 리턴한다.

동일한 객체인지를 확인 할때는 "==="를 사용한다.

data 클래스는 내부적으로 copy, equals 등 몇가지 메소드를 정의한다.(java 코드로 변환해서 비교 하기 추천)

12. 배열 사용하기

arrayOf 를 통해 값이 설정된 배열을 리턴한다.

배열의 값은 변경이 가능하다(List 와 비교 하면 어떤 의미인지 알수 있다.)

값 설정외 갯수를 정의 하는 방법도 있고 "IntArray(10) { index -> index }" 처럼 초기값을 설정하는 것이 가능하다.

Int 타입 처럼 숫자 관련 배열의 경우 sum, average  등의 자주 사용하는 연산 함수들이 추가 된다.

13. List, MutableList

주요 데이터 저장 타입에는 순서가 있는 List, 중복값 없는 Set, key 와 연결 되는 Map 이 있다.

이 타입들은 값 변경이 불가능하고 변경을 원할 경우 Mutable 이 붙어 있는 타입으로 정의 한다.(MutableList...)

14. Lambda 식

요즘 들어 개발 언어들을 보면 lambda 식을 지원한다는 내용이 자주 보인다.(c++, java 등)

그만큼 알고 사용하면 유용한 개발 방식이다.

주로 사용하는 방식은 생성된 객체의 변수를 다른 객체에서 접근하여 원하는 결과를 만들고 싶을때 사용한다.????

말하고 보니 설명이 쉽지 않은 부분이지만 여러 샘플 코드들을 보면서 이해 하길 추천한다.

예제 코드는 { num -> list.contains(num) } 가 내부 객체로 생성되고 그 참조가 LamdaTest 에 전달된다.

lambda 식이 내부 객체로 동작하는 부분을 이해하는게 중요하다.

15. coroutine 은 멀티 스레드가 아니다.

처음 봤을때는 가벼운 동시 작업 이라고 해서 멀티 스레드 개념으로 이해 했으나

context switching 과 관련이 없이 수행되는 동시 작업이라 동작이 완전히 다르다.

coroutine 용으로 사용되는 delay를 호출할 경우 그 제어권이 scope 관리로 넘어 간다.

delay 시간에 맞춰 각 coroutine 이 호출 될것으로 생각 하지만 멀티 스레드와 달리 호출이 될것에 대한 보장이 약하다.

coroutine 실행이 짧고 delay 가 호출되어 scope 관리로 넘어 갈 경우는 크게 문제가 되지 않지만

coroutine 실행이 길어질 경우 동일 scope내 coroutine들이 제시간에 실행 되는 것이 보장 되지 않는다.

sleep을 넣어 보면 sleep 끝날때까지 다른 coroutine 들이 동작 하지 않는다.

실행 시간이 짧은 비동기 실행이 필요할때 사용한다.

반응형
:

Android System Font list 가져오기, 적용하기

OS/Android 2021. 12. 3. 12:36
반응형

system/fonts 디렉토리에 있는 폰트 파일 리스트 출력

 

폰트 파일 적용

 

테스트 코드

import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.util.Log.*
import android.widget.TextView
import java.io.File

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onResume() {
        changeFont()
        super.onResume()
    }

    fun changeFont() {
    	// get font files
        val FONT_DIR = "/system/fonts/"
        val fontPaths = ArrayList<String>()
        val fontDir = File(FONT_DIR)
        val fontSuffix = ".ttf";

        for(font in fontDir.listFiles()) {
            if(font.name.endsWith(fontSuffix)) {
                fontPaths.add(font.absolutePath);
            }
        }

        for (fontFile in fontPaths) {
            Log.i("Font test","Font : $fontFile")
        }

		// apply font file
        val textView1 : TextView = findViewById(R.id.textview1)
        val textView2 : TextView = findViewById(R.id.textview2)

        val typeface1 = Typeface.createFromFile("/system/fonts/NotoSerif-Bold.ttf")
        textView1.typeface = typeface1
        textView1.text = "TestView 123 "

        val typeface2 = Typeface.createFromFile("/system/fonts/Roboto-Regular.ttf")
        textView2.typeface = typeface2
        textView2.text = "TestView 123 "
    }
}

 

반응형
:

Lognote 0.1.6 - Android logcat viewer

프로그래밍/lognote 2021. 11. 24. 16:26
반응형

https://github.com/cdcsgit/lognote/releases/tag/0.1.6

 

Release 0.1.6 · cdcsgit/lognote

Full Changelog: 0.1.5...0.1.6

github.com

 

최신 버전 : https://cdcsman.tistory.com/entry/Lognote-Android-logcat-viewer

 

Lognote - Android logcat viewer for Windows, Linux, Mac

https://github.com/cdcsgit/lognote/releases Releases · cdcsgit/lognote Android logcat viewer. Contribute to cdcsgit/lognote development by creating an account on GitHub. github.com 실행 - windows..

cdcsman.tistory.com

 

version 0.1.6

- 여러파일 동시 열기

- tooltip 추가

- windows drag & drop 개선

- 스크롤백 제한으로 인한 로그 삭제 일시 중지 기능 추가

 

version 0.1.5

- 로그 컬러 세팅 추가

- 필터 로그뷰에서 커서 이동시 전체 로그뷰 커서 이동 개선

- 스크롤백 라인 제한으로 인한 로그 삭제시 뷰 동작 개선

 

version 0.1.4
- 설정에서 폰트 변경시 즉시 적용
- 필터 저장 및 가져오기

version 0.1.1
- 팝업메뉴 추가
- 대소문자 구분

version 0.0.1
- 정규 표현식 필터
- On/Off line 로그 뷰

aa

 

반응형
:

Lognote 0.1.4 - Android logcat viewer

프로그래밍/lognote 2021. 10. 8. 14:09
반응형

https://github.com/cdcsgit/lognote/releases/tag/0.1.4

 

Release 0.1.4 · cdcsgit/lognote

Full Changelog: 0.1.3...0.1.4

github.com

최신 버전 : https://cdcsman.tistory.com/entry/Lognote-Android-logcat-viewer

 

Lognote - Log viewer, Android logcat viewer for Windows, Linux, Mac

https://github.com/cdcsgit/lognote/releases Releases · cdcsgit/lognote Log viewer, Android logcat viewer for Windows, Linux, Mac - cdcsgit/lognote github.com 텍스트 로그 파일 보기(필터) Logcat 보기(Online/Offline) 정규 표현식 필터 에

cdcsman.tistory.com

version 0.1.4
- 설정에서 폰트 변경시 즉시 적용
- 필터 저장 및 가져오기

version 0.1.1
- 팝업메뉴 추가
- 대소문자 구분

version 0.0.1
- 정규 표현식 필터
- On/Off line 로그 뷰

 

반응형
:

Lognote 0.1.1 - Android logcat viewer

프로그래밍/lognote 2021. 9. 1. 15:28
반응형

github.com/cdcsgit/lognote/releases

 

Releases · cdcsgit/lognote

Contribute to cdcsgit/lognote development by creating an account on GitHub.

github.com

 

최신 버전 : https://cdcsman.tistory.com/entry/Lognote-Android-logcat-viewer

 

Lognote - Log viewer, Android logcat viewer for Windows, Linux, Mac

https://github.com/cdcsgit/lognote/releases Releases · cdcsgit/lognote Log viewer, Android logcat viewer for Windows, Linux, Mac - cdcsgit/lognote github.com 텍스트 로그 파일 보기(필터) Logcat 보기(Online/Offline) 정규 표현식 필터 에

cdcsman.tistory.com

 

version 0.1.1

- 팝업메뉴 추가

- 대소문자 구분

 

version 0.0.1

- 정규 표현식 필터

- On/Off line 로그 뷰

 

반응형
:

int 를 hex string 으로 변환

프로그래밍/kotlin 2021. 2. 16. 13:48
반응형

hexStr = java.lang.Integer.toHexString(num)

반응형
: