바나나빵

재료

  • 바나나: 4개
  • 밀가루: 220g
  • 베이킹 파우더: 15g
  • 계란: 2개
  • 버터: 60g
  • 우유: 50g
  • 설탕: 60g
  • 소금: 약간
  • 선택 재료: 아몬드, 베리 종류

조리

  • 버터 먼저 녹인 후 재료 혼합
  • 바나나 4 개 중 3.5개는 반죽에 들어가고 0.5 개는 슬라이스해서 반죽 위에 올림
  • 기타 선택 재료 토핑
  • 오븐 조리: 180oC 에서 25분

Hive에서 Java 함수 호출 시 byte array 인수 전달

Hive에서 reflect 함수를 사용해서 Java 함수 호출이 가능한데
호출되는 Java 함수가 byte array를 인수로 받는 경우 Hive 쿼리에서 다음과 같이 전달하려는 string(이 예시에서는 “abc”)을 binary로 바꾸어서 전달

SELECT reflect("java.util.UUID", "nameUUIDFromBytes", BINARY("abc") )

즉, binary 타입이 Java의 byte array에 대응됨

<참고>

  • 예시 쿼리에서 사용된 Java 함수: https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#nameUUIDFromBytes-byte:A-
  • 테스트 Hive 버전: 1.2
  • reflect 기능은 Hive 사용자의 권한에 따라 허용되지 않을 수도 있음

Akerberg’s Refinement of AM-GM

(From the book The Cauchy-Schwarz Master Class by J. Michael Steele, Exercise 2.10)

For nonnegative \(a_1, a_2, \ldots, a_n\) and \(n \ge 2\)

$$ a_n \bigg(\frac{a_1+ a_2+ \ldots + a_{n-1}}{n-1} \bigg)^{n-1} \le \bigg(\frac{a_1+ a_2+ \ldots + a_n}{n} \bigg)^n $$

Proof.

Let \(y_i = \frac{a_1+ a_2+ \ldots + a_i}{i}\) for \(i \ge 2 \).

Then the inequality can be written as \(\frac{a_n}{y_{n-1}} \le \bigg(\frac{y_n}{y_{n-1}} \bigg)^n \).

On the other hand, \( n \cdot y_n – (n-1) \cdot y_{n-1} = a_n \), hence \( n \cdot \frac{y_n}{y_{n-1}} – (n-1) = \frac{a_n}{y_{n-1}} \).

Therefore, \( n \cdot \frac{y_n}{y_{n-1}} – (n-1) \le \bigg(\frac{y_n}{y_{n-1}} \bigg)^n \).

If we let \(y = \frac{y_n}{y_{n-1}} \), this inequality can be written as \( n \cdot y – (n-1) \le y^n \).

So it suffices to show that \( n (y-1) \le y^n – 1 = (y-1)(y^{n-1}+ \ldots +1) \).

It is easy to prove this inequality by considering two cases \(y \ge 1 \) or \(y \lt 1 \).

공백 없는 SQL 만들기

가끔은 SQL 문장에 공백이 없어야 하는 경우가 있다.

예를 들면 SQL 문장을 인수(argument)들 중의 하나로 어딘가 전달해야 하는데 공백이 인수들의 구분자로 인식되는 상황.

이럴 때 공백을 제거하면서 내용을 유지하고 싶다면 다음과 같이 공백이 나타나는 위치마다 대신 /**/을 넣어주면 된다.

예)

SELECT col FROM table WHERE col = 1
  ↓ ↓ ↓ ↓ ↓
SELECT/**/col/**/FROM/**/table/**/WHERE/**/col/**/=/**/1

 

[푸켓]섬 투어

  • 오후에 출발해서 몇몇 섬을 둘러보고 저녁 뷔페를 배에서 먹는 섬 투어
  • 푸켓의 동쪽 어디쯤 있는 항구에서 배가 출발
  • 숙소로 픽업을 오는데 도로 사정이 썩 좋지는 않아 항구까지 이동할 때 거리에 비해 시간이 오래 걸림
  • 섬 풍경은 괜찮은 편
  • 이 지역이 007 영화 ‘황금총을 가진 사나이’에 배경으로 나온 곳 (아래 유튜브 동영상 참고)
  • 섬에는 카누를 타고 들어가는데 현지인들이 카누에서 노를 저어주고 사진도 열심히 찍어줌

 

https://youtu.be/uEy2eLOmQeo

평균들의 비율과 비율들의 평균에 대하여

배경

예를 들어 두 종류의 양의 수열의 평균적인 비율을 알고 싶을 때, 종종 전체적인 평균의 비율 대신 비율들의 평균을 사용하려는 유혹이 생기기 쉽다. 각 쌍들의 비율도 관심의 대상이니 기왕 이것들을 구했다면 계산된 비율들의 평균을 사용하는 것이 더 간단하기 때문이다. 하지만 후자의 경우 각각의 비율 계산 시 데이터의 규모가 고려되지 못하는 문제가 있다.

위에서 기술한 내용을 식으로 표현하면, 두 개의 수열 \(l_1, l_2, \ldots , l_n\) 와 \(m_1, m_2, \ldots , m_n\) 가 주어졌을 때 둘 사이의 평균적인 비율은, 예외가 있을 수 있지만, 대부분의 경우 $$ (m_1+ m_2+ \ldots + m_n)/n \over (l_1+ l_2+ \ldots + l_n)/n $$와 같은 형태가 바람직하다. $$ \big({m_1 \over l_1} + {m_2 \over l_2} + \ldots + {m_n \over l_n}\big) \over n $$에서는 \(m_k\)와 \(l_k\)가 상대적으로 작으면서 \(m_k \over l_k\)이 평균에 큰 영향을 주는 상황이 있을 수 있고 이 결과는 두 수열의 전체적인 평균이라는 목적에 적당치 않다.

숫자를 대입해 본다면 \(m_1 = 999, m_2 = 5 \)이고 \(l_1 = 1000, l_2 = 1 \)인 경우 전체 평균들의 비율인 \( (999 + 5)/2 \over (1000 + 1)/2 \)는 약 \(1.003 \)정도이다. 그에 반해 비율들의 평균은 \( ({999 \over 1000} + {5 \over 1})/2 \)인 약  \(3 \) 정도가 된다. 두 번째 수들(5와 1)의 비율이 1000 정도인 첫 번째 수들의 비율에 비해 적지 않은 영향을 주기 때문이다.

질문

일반적으로 평균들의 비율과 비율들의 평균이 같지 않다는 것은 위의 예시로 알 수 있다. 그러면 둘 사이의 부등식을 도출할 수 있는 조건은 어떤 것인가? 즉, 어떤 조건을 만족할 때 둘 사이의 부등식을 결정할 수 있는가?

체비쇼프 합 부등식 (Chebyshev’s sum inequality)

위의 질문에 답하기 위해 체비쇼프 합 부등식을 사용할 것이다. 부등식에 대한 정의는 다음 페이지에서 찾을 수 있다; https://en.wikipedia.org/wiki/Chebyshev%27s_sum_inequality

결론만 요약하면, 두 수열이 둘 다 단조 증가하거나 둘 다 단조 감소하면,
$${1 \over n} \sum_{k=1}^n a_k b_k \ge \bigg({1 \over n} \sum_{k=1}^n a_k \bigg) \bigg({1 \over n} \sum_{k=1}^n b_k \bigg) $$
이고, 두 수열 중 하나가 단조 증가하고 다른 하나가 단조 감소하면,
$${1 \over n} \sum_{k=1}^n a_k b_k \le \bigg({1 \over n} \sum_{k=1}^n a_k \bigg) \bigg({1 \over n} \sum_{k=1}^n b_k \bigg) $$
이다.

이 사실을 사용하면,
\(m_1, m_2, \ldots , m_n\)과 \({m_1 \over l_1}, {m_2 \over l_2}, \ldots, {m_n \over l_n} \)이 둘 다 단조 증가하거나 단조 감소하면
$$\frac{m_1+m_2+\ldots+m_n}{n} \ge \bigg(\frac{{m_1 \over l_1} + {m_2 \over l_2} +\ldots + {m_n \over l_n}}{n} \bigg) \bigg(\frac{l_1+l_2+\ldots+l_n}{n} \bigg)$$ 이고, \(m_1, m_2, \ldots , m_n\)과 \({m_1 \over l_1}, {m_2 \over l_2}, \ldots, {m_n \over l_n} \)중 하나가 단조 증가하고 다른 하나가 단조 감소하면
$$\frac{m_1+m_2+\ldots+m_n}{n} \le \bigg(\frac{{m_1 \over l_1} + {m_2 \over l_2} +\ldots + {m_n \over l_n}}{n} \bigg) \bigg(\frac{l_1+l_2+\ldots+l_n}{n} \bigg)$$ 임을 알 수 있다.

따라서 모든 항들이 양수라고 가정하면 각각의 경우 부등식은
$$\frac{\cfrac{m_1+m_2+\ldots+m_n}{n}}{\cfrac{l_1+l_2+\ldots+l_n}{n}} \ge \frac{{m_1 \over l_1} + {m_2 \over l_2} +\ldots + {m_n \over l_n}}{n} $$ 와
$$\frac{\cfrac{m_1+m_2+\ldots+m_n}{n}}{\cfrac{l_1+l_2+\ldots+l_n}{n}} \le \frac{{m_1 \over l_1} + {m_2 \over l_2} +\ldots + {m_n \over l_n}}{n} $$ 로 쓸 수 있어 평균들의 비율과 비율들의 평균 사이의 부등식을 얻게된다.

하지만 수열들이 보통 위와 같은 형태의 단조 증가나 단조 감소 조건을 만족하지는 않으므로 이 부등식을 적용할 수 있는 경우는 많지 않다.

안드로이드 킨들 앱에서 로컬 파일 읽기

이슈

파일 첨부하여 킨들(아마존)로 이메일을 보내려면 아래와 같은 제약이 있다.

  • 25MB가 넘는 파일은 처리가 안 됨
  • mobi 파일은 되는데 azw 파일은 안 됨

대안

아마존으로 파일을 보내지 않고 안드로이드 기기에 바로 파일을 저장해서 킨들로 읽는 방법이 있다. (시험 환경: 안드로이드 버전 9)

  1. 파일 관리자를 실행
  2. 내부저장소(internal storage) 보기 옵션 활성화
  3. 내부 저장소의 최상위 위치(예를 들면 Download나 DCIM 같은 폴더가 보이는 위치)에서 kindle 이라는 이름의 폴더를 (이미 있지 않다면) 만듬
  4. kindle 폴더에 읽으려는 파일 복사
  5. 킨들 앱을 실행하고 복사한 파일이 인식되는지 확인

[마우이]배 타고 석양 보기

  • 해 지기 좀 전에 배 타고 출발하여 저녁 먹으면서 석양 보는 상품
  • 간단한 공연도 함
  • 뷔페식이라고 해서 먹을게 많을 줄 알았는데 내가 탄 배는 생각보다 음식이 부실
  • 칵테일, 와인, 맥주 등 주류는 무제한
  • 인터넷 검색하면 예약할 수 있는 상품이 많이 있고 시간이 맞으면 현지에서 표를 구할 수도 있음

이 배를 타고 감

풍력 발전기