flutter 를 배울때, 에뮬레이터로 실행하다보면 오른쪽에 debug 라는 글자가 꽤 거슬릴때가 있는데...

다행히 MaterialApp 의 속성에서 debugShowCheckedModeBanner 속성만 추가하면 쉽게 제거 가능하다.

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title : 'AppBar',
      theme: ThemeData(
        primarySwatch: Colors.red
      ),
      home: MyPage(),
      debugShowCheckedModeBanner: false, // <-- 이 라인을 추가
    );
  }
}

저렇게 속성을 추가하고, 저장하면 핫리로드 기능을 통해 바로 확인가능하다.

개요

git 을 java에서 컨트롤하는 라이브러리가 존재하는데 이를 jgit 이라고 한다.

아래와 같은 라이브러리 의존성을 추가해서 사용하면 되는데 clone 하는 예시를 보고 테스트를 하는데 이런 오류가 발생한다.

implementation("org.eclipse.jgit:org.eclipse.jgit:4.5.0.201609210915-r")
Exception in thread "main" org.eclipse.jgit.api.errors.InvalidRefNameException: Branch name <null> is not allowed
	at org.eclipse.jgit.api.CheckoutCommand.processOptions(CheckoutCommand.java:518)
	at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:204)

해결법

우선 내가 사용한 예제는 코틀린으로 했었는데, 아래와 같이 checkout 시 setAllPaths 를 생략하면 동일한 오류가 발생했다.

혹시 나랑 동일한 오류를 겪는다면, setAllPaths 를 true 로 지정해보길 바란다. (아래와 같이 주석으로 빼두면 오류 발생)

 

val credentialsProvider = UsernamePasswordCredentialsProvider("<아이디>", "<패스워드>")
val gitUri = "<GIT 주소>"

val cloneCommand: CloneCommand = Git.cloneRepository()
    .setURI(gitUri)
    .setDirectory(File("/Users/guest/git-test"))
    .setNoCheckout(true)
    .setCredentialsProvider(credentialsProvider)
val git:Git = cloneCommand.call()
git.checkout()
    .setStartPoint("origin/master")
//    .setAllPaths(true)
    .call()
git.repository.close()

파서를 안쓰고 하둡에서 바로 데이터 처리할때, 

LATERAL VIEW explode 와 LATERAL VIEW posexplode기능은 매우 유용하다.


예를 들어, 다음과 같은 데이터를 풀고 싶은 경우가 있다.


■ 원본

 name

 objects

 홍길동

 카메라,라면,고기

 둘리

 소고기,노트북


■ 바꾸고 싶은 결과

name 

 object

 objects

 홍길동

 카메라

  카메라,라면,고기

 홍길동

 라면

  카메라,라면,고기

 홍길동

 고기

  카메라,라면,고기

 둘리

 소고기

  소고기,노트북

 둘리

 노트북

  소고기,노트북


해결방법

1. LATERAL VIEW explode 사용하기
이런식으로 푸는게 가능하다. 하지만, objects 의 순서(index) 가 알고 싶으면 어떻게 할까?
첫번째 아이템만 알고 싶을경우...

hive> select 
  name,
  object,
  objects
from (
  select '홍길동' as name, '카메라,라면,고기' as objects
  UNION ALL
  select '홍길동' as name, '소고기,노트북'  as objects
) log 
LATERAL VIEW explode(split(objects, ",")) `_objects` AS object


OK
name    object  objects
홍길동       카메라       카메라,라면,고기
홍길동       라면  카메라,라면,고기
홍길동       고기  카메라,라면,고기
홍길동       소고기       소고기,노트북
홍길동       노트북       소고기,노트북
Time taken: 13.055 seconds, Fetched: 5 row(s)



2. LATERAL VIEW posexplode 사용하기


구분자로 쪼갠 인덱스까지 알고 싶다면  posexplode 를 쓰면 된다.

사용법은 거의 같다.


hive> select 

  name,

  idx,

  object,

  objects

from (

  select '홍길동' as name, '카메라,라면,고기' as objects

  UNION ALL

  select '홍길동' as name, '소고기,노트북'  as objects

) log 

LATERAL VIEW posexplode(split(objects, ",")) `_objects` AS object, idx


OK

name    idx     object  objects

홍길동       카메라       0       카메라,라면,고기

홍길동       라면  1       카메라,라면,고기

홍길동       고기  2       카메라,라면,고기

홍길동       소고기       0       소고기,노트북

홍길동       노트북       1       소고기,노트북




+ Recent posts