아파치 NIFI를 처음 써보려면 약간 당혹스러울 수 있다.


보통 NIFI에 KAFKA나 HADOOP을 연동할 터인데요. 초반에 애를 먹는다.



아래 블로그를 참조하면 어떻게 KAFKA, HDFS, CASSANDRA를 사용하는 예를 참고하면 좋을 것 같다.


https://blog.autsoft.hu/beginners-guide-to-apache-nifi-flows/









Posted by '김용환'
,

개발자라면 이미 변수의 데이터가 존재하느냐 라는 함수/메소드를 정의해야 할 때가 있다. 


그냥 생각나는 대로 isExistedData, isExistData 란 함수/메소스를 쓰는 경우가 있다. 


이는 Konglish이다. hasData라는 함수/메소드를 사용하는 것이 좋다.



출처 


https://forum.wordreference.com/threads/is-existed-vs-exists.1773199/



is existed data

is exist data

-> has data






Posted by '김용환'
,



일리노이주 주립 대학의 coursera CS master 강의가 떠서 확인해보았다. 





https://cs.illinois.edu/admissions/graduate/degree-program-options



학부 성적은 3.2가 되어야 한다





https://cs.illinois.edu/admissions/graduate/applications-process-requirements


등록 절차

- 추천서

- 공부 목적 

- 이력서


등등




https://cs.illinois.edu/additional-required-application-materials-international-students



A passing score on the TOEFL iBT (spoken portion of the exam only) is 24/30. And, a passing score on the IELTS (on the spoken portion of the exam only) is 8.



역시 영어를 잘해야 하나 보다.. 


Posted by '김용환'
,


블루투쓰 마우스/터치 패드를 사용할 때 마우스 포인터가 날아다니는 현상이 있었다. 

이 이슈는 맥의 NVRAM/SMC 기능 이상이었다.


맥에 아래 동작을 하니 정상으로 돌아왔다. (윈도우의 bios 초기화와 비슷한 기능이다)


1. SMC 이상 해결 : shift-control-option 키를 누른 다음 전원 버튼를 길게 누른다.

2. NVRAM 이상 해결 :option, command, P 및 R 키를 동시에 20초 동안 누른다. 

(자세한 내용은 아래 링크를 참조한다)





참고

https://support.apple.com/ko-kr/HT201295


Mac 노트북의 SMC를 재설정하는 방법

우선 배터리를 분리할 수 있는지 확인합니다. 구형 Mac 노트북의 배터리는 대부분 분리할 수 있습니다. 배터리를 분리할 수 없는 Mac 노트북으로는 MacBook Pro (Early 2009) 및 이후 모델, MacBook Air 모든 모델, MacBook (Late 2009), MacBook (Retina, 12-inch, Early 2015) 및 이후 모델이 있습니다. Mac 노트북 배터리에 관하여 자세히 알아봅니다.

배터리를 분리할 수 없는 경우 다음을 수행합니다.

  1. Mac을 종료합니다.
  2. 내장 키보드를 사용하여 키보드 왼쪽에 있는 shift-control-option 키를 누른 다음 전원 버튼을 동시에 누릅니다. shift-control-option 키와 전원 버튼을 10초 동안 길게 누릅니다.
    Touch ID 기능이 있는 MacBook Pro의 경우 Touch ID 버튼을 전원 버튼으로도 사용할 수 있습니다.
  3. 모든 키에서 손을 뗍니다.
  4. 전원 버튼을 다시 눌러 Mac을 켭니다.


참고

https://support.apple.com/ko-kr/HT204063

NVRAM을 재설정하는 방법

Mac을 종료했다가 다시 켠 후 즉시 option, command, P 및 R 키를 동시에 20초 동안 길게 누릅니다. 키를 누르고 있는 동안 Mac이 재시동되는 것처럼 보일 수 있습니다. (전원을 켤 때 시동음이 들리는 Mac을 사용하는 경우 두 번째 시동음이 들린 후 키를 놓으면 됩니다.)

option+command+P+R

Mac의 시동이 완료되면 시스템 환경설정을 열고 사운드 음량, 디스플레이 해상도, 시동 디스크 선택, 시간대 등 재설정된 설정을 조정할 수 있습니다.

Mac에서 펌웨어 암호를 사용하는 경우 이러한 키 조합을 사용하면 Mac이 디스크 대신 macOS 복구로 시동됩니다. NVRAM을 재설정하기 전에 펌웨어 암호를 끄십시오.



참고 

http://macnews.tistory.com/742

https://support.apple.com/ko-kr/HT204063

Posted by '김용환'
,




mesos에서 chronos 프레임워크를 사용할 때 ISO 8601 - duration 정책을 사용한다. 




https://mesos.github.io/chronos/docs/api.html



schedule: The scheduling for the job, in ISO 8601 format. Consists of 3 parts separated by /:
  • The number of times to repeat the job: Rn to repeat n times, or R to repeat forever
  • The start time of the job. An empty start time means start immediately. Our format is ISO 8601YYYY-MM-DDThh:mm:ss.sTZD (e.g., 1997-07-16T19:20:30.45+01:00) where:
    • YYYY = four-digit year
    • MM = two-digit month (01 = January, etc.)
    • DD = two-digit day of month (01 through 31)
    • hh = two-digit hour in 24-hour time (00 through 23)
    • mm = two-digit minute (00 through 59)
    • ss = two-digit second (00 through 59)
    • s = one or more digits representing a decimal fraction of a second
    • TZD = time zone designator (Z for UTC or +hh:mm or -hh:mm for UTC offset)
  • The run interval, defined following the “Duration” component of the ISO 8601 standard. P is required. T is for distinguishing M(inute) and M(onth)––it is required when specifying Hour/Minute/Second. For example:
    • P10M = 10 months
    • PT10M = 10 minutes
    • P1Y12M12D = 1 year, 12 months, and 12 days
    • P12DT12M = 12 days and 12 minutes
    • P1Y2M3DT4H5M6S = 1 year, 2 months, 3 days, 4 hours, and 5 minutes




Here is an example job hash: json { "schedule": "R10/2012-10-01T05:52:00Z/PT2S", "name": "SAMPLE_JOB1", "epsilon": "PT15M", "command": "echo 'FOO' >> /tmp/JOB1_OUT", "owner": "bob@airbnb.com", "async": false }



Durations[edit]

PnYnMnDTnHnMnS
PnW
P<date>T<time>

Durations define the amount of intervening time in a time interval and are represented by the format P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W as shown to the right. In these representations, the [n] is replaced by the value for each of the date and time elements that follow the [n]. Leading zeros are not required, but the maximum number of digits for each element should be agreed to by the communicating parties. The capital letters PYMWDTHM, and S are designators for each of the date and time elements and are not replaced.

  • P is the duration designator (for period) placed at the start of the duration representation.
  • Y is the year designator that follows the value for the number of years.
  • M is the month designator that follows the value for the number of months.
  • W is the week designator that follows the value for the number of weeks.
  • D is the day designator that follows the value for the number of days.
  • T is the time designator that precedes the time components of the representation.
    • H is the hour designator that follows the value for the number of hours.
    • M is the minute designator that follows the value for the number of minutes.
    • S is the second designator that follows the value for the number of seconds.

For example, "P3Y6M4DT12H30M5S" represents a duration of "three years, six months, four days, twelve hours, thirty minutes, and five seconds".

Date and time elements including their designator may be omitted if their value is zero, and lower order elements may also be omitted for reduced precision. For example, "P23DT23H" and "P4Y" are both acceptable duration representations. However, at least one element must be present, thus "P" is not a valid representation for a duration of 0 seconds. "PT0S" or "P0D", however, are both valid and represent the same duration.

To resolve ambiguity, "P1M" is a one-month duration and "PT1M" is a one-minute duration (note the time designator, T, that precedes the time value). The smallest value used may also have a decimal fraction, as in "P0.5Y" to indicate half a year. This decimal fraction may be specified with either a comma or a full stop, as in "P0,5Y" or "P0.5Y". The standard does not prohibit date and time values in a duration representation from exceeding their "carry over points" except as noted below. Thus, "PT36H" could be used as well as "P1DT12H" for representing the same duration. But keep in mind that "PT36H" is not the same as "P1DT12H" when switching from or to Daylight saving time.

Alternatively, a format for duration based on combined date and time representations may be used by agreement between the communicating parties either in the basic format PYYYYMMDDThhmmss or in the extended format P[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]. For example, the first duration shown above would be "P0003-06-04T12:30:05". However, individual date and time values cannot exceed their moduli (e.g. a value of 13 for the month or 25 for the hour would not be permissible).[30]

Although the standard describes durations as part of time intervals, which are discussed in the next section, the duration format is widely used independent of time intervals, as with the Java 8 Duration class[31][32].

Posted by '김용환'
,


요즘 뜨고 있는 java REST 테스트 관련 라이브러리 중에 https://github.com/rest-assured/rest-assured이 있다.


자바에서는 구조적으로 REST 호출과 결과 테스트(특히 json)를 하려면 지저분한 코드(map, list)를 써야 한다.

rest-assured는 이를 쉽게 테스트해줄 수 있다. 



http://localhost:8080/lotto


{
"lotto":{
 "lottoId":5,
 "winning-numbers":[2,45,34,23,7,5,3],
 "winners":[{
   "winnerId":23,
   "numbers":[2,45,34,23,3,5]
 },{
   "winnerId":54,
   "numbers":[52,3,12,11,18,22]
 }]
}
}




테스트 코드는 다음과 같다. 써봐야 할듯 ㅎㅎ


get("/lotto").then().body("lotto.lottoId", equalTo(5));



get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54));




Posted by '김용환'
,

soscon 2017 후기

scribbling 2017. 10. 28. 07:22




http://www.soscon.net/schedule.do를 다녀왔고 후기를 적는다.


http://www.soscon.net/pdf/day1_1530_3.pdf

# 부럽다. 9x년대생, 행복해 보여요.


http://www.soscon.net/pdf/day1_1330_3.pdf

# AI + Cloud !!


http://www.soscon.net/pdf/day1_1430_1.pdf

# java redis client https://github.com/lettuce-io/lettuce-core


http://www.soscon.net/pdf/day1_1630_2.pdf

# hive2 좋아지네


http://www.soscon.net/pdf/day2_1000_1.pdf

# 대단!, 존경!


http://www.soscon.net/pdf/day2_1430_3.pdf

# webidl이 생겼구나


http://www.soscon.net/pdf/day2_1530_3.pdf

# openwhisk가 있구나


http://www.soscon.net/pdf/day2_1630_2.pdf

# openstack-helm을 사용하여 쿠버네티스로 오픈 스택을 관리할 수 있네.

Posted by '김용환'
,





옵테인(optane)기술 


http://www.itworld.co.kr/news/104121


http://www.bodnara.co.kr/bbs/article.html?num=138616




클리앙 얘기


https://www.clien.net/service/board/park/10513177?po=0&od=T31&sk=title&sv=optane&category=&groupCd=&articlePeriod=2017


https://www.clien.net/service/board/park/10661561?po=0&od=T31&sk=title&sv=optane&category=&groupCd=&articlePeriod=2017


Posted by '김용환'
,




http://flux.org.uk/projects/rackmonkey/





Posted by '김용환'
,


출처 :  http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=092&aid=0002122634 



홍콩 과기대 김성훈 교수(http://www.sciencetimes.co.kr/?news=%EC%A7%80%EB%B0%A9%EC%8B%A4%EC%97%85%EA%B3%A0-%EC%B6%9C%EC%8B%A0%EC%9D%B4-%ED%99%8D%EC%BD%A9%EA%B3%BC%EA%B8%B0%EB%8C%80-%EC%A1%B0%EA%B5%90%EC%88%98%EB%A1%9C)가 네이버 연구팀으로 합류한다고 한다. 



참고 : 김성훈 교수의 머신러닝 공부 내용 정리

https://hunkim.github.io/ml/ 



Posted by '김용환'
,