반응형

광주 5.18 민주화 운동을 기억하는 취지에서 개최한 행사

 

또한, 참가비 일부를 기부한다는 따듯한 소식에 참가신청을 했다.

기념품

기념품 이렇게 많이 줘도 되나 싶을 정도...  b

특정장소에서 진행하는 것이 아니라 개인으로 수행하고 인증을 하는 것이다 보니 메달이 먼저 왔다.

항상 출발하기 전에 챙기는 닥터유 에너지바 2개 들고 오산천으로 이동 💨

항상 올때마다 감동을 주는 장소

 

여름 겨울의 풍경도 얼른 보고싶다.

전에 자전거 길 끝나는 곳 횡단보도에서 직진했더니 소풍정원이 나오고 더 가는 길이 없나 생각을 했다.

 

찾아보니 횡단보도 건너서 우회전을 하면 

좁은 길이 나오고

길 따라서 가면

또 다시 이어지는 길이 나온다...!

가는길에 쉬는 곳이 있어서 사진 몇장 남겼다.

워치로 찍을 수 있는지 몰랐는데, 3년만에 제 기능 하는 중 ㅎ..

고즈넉한 분위기 너무 좋다.

초행길은 항상 잘 가고 있는지 몰라서 자꾸만 서서 길을 확인하게 된다.

여기도 다리 건너고 다시 반대방향으로 가고 해서 조금 헷갈린 코스

 

결국 앞질러가시는 아저씨 뒤 졸졸 따라가서 목표지점에 도달 할 수 있었다 :)

팽성대교 - 안성천

팽성대교 쪽 길이 되게 좋다고 들어서 한바퀴 돌아보려했지만,

집 돌아가는 것도 생각해서 점심먹으러 갔다.

CU 맛집

가게 찍고 갔는데 폐점..

건너편 CU에서 보급하는데 여기서 자전거 타시는분들 많이 보았다.

혼자 찍고 다니는 것도 나쁘진 않네

바닥에 두고 찍어서 그런가 난간이 앞으로 무너질 것 같다 ㅋㅋㅋ

51.8km 에 맞춰서 한번 찍으려고했는데, 달리다보니까 54km라고 한다..

저녁약속 시간 맞추려고 그대로 직진!

 

매 주 가지는 일상 루틴에 의미있는 행사를 곁들이니 더 뜻깊은 하루가 된 것 같다 🔥🔥

반응형
반응형

소스트리 실행 시 갑자기 실행이 안되는 경우

 

C:\Users\사용자\AppData\Local\Atlassian\SourceTree.exe_Url_xxxxxxxx\3.4.10

 

위 경로에서 Composition.cache 파일 삭제 후 소스트리 재실행

반응형
반응형

android java에서 흔히 발생하는 nullPointException(NPE).

kotlin에서는 널 안전성 연산자를 제공하여 Null값에 대해 사전에 방지가 가능하다.

 

널 (null)이란 객체가 선언되었지만 초기화되지 않은 상태를 뜻한다.


※ Java NPE 예시

public class MainActivity extends AppCompatActivity {
    private String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int length = text.length();
    }
}

 

위 코드에서 text 변수가 초기화되지 않았으므로 NPE가 발생할 수 있다.


※ Kotlin 널 안전성 부여

class MainActivity : AppCompatActivity() {
    private var text: String? = null

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

        // text 변수가 null인 경우를 처리하기 위해 안전한 호출 ?. 연산자를 사용합니다.
        val length = text?.length

        // 만약 text가 null이 아닌 경우에만 길이를 출력합니다.
        length?.let {
            println("Text length: $it")
        }
    }
}

 

text 변수에 nullable한 (String?)으로 선언되어 null값을 부여 할 수 있다.

var t1 : String? = "test"
t1 = null // (o)

var t2 : String = "test"
t2 = null // (x)

※ 널 안전성 호출 (?.)

nullable로 선언한 변수는 null을 대입할 경우 NPE(NullPointException)가 발생할 수 있기에 해당 변수에 접근 시 ?.로 접근을 해야한다.


※ 엘비스 연산자 (?:)

?: 를 우측으로 90도 회전하면 엘비스 프레슬리가 된다고 해서 붙여진 엘비스(Evis) 연산자

해당 연산자의 왼쪽 값이 null 이면 우측 값을 반환한다.

var test : String? = "세글자"
Log.d(TAG, "test 문구 글자 수 : ${test?.length ?: -1}")
test = null
Log.d(TAG, "test 문구 글자 수 : ${test?.length ?: -1}")

결과값

test 문구 글자 수 : 3
test 문구 글자 수 : -1

※ 예외 (!!)

!! 연산자는 객체가 널일 때 예외를 일으키는 연산자.

var test : String? = null
Log.d(TAG, "test : ${test!!.length}")

// 결과값
java.lang.NullPointerException: println needs a message
    at ...

해당 코드는 NPE를 발생시킨다. 특정 사항이 아니라면 사용하는 것을 지양한다.

반응형

+ Recent posts