Graph 89-free 다시 build하기

계산기 2021. 2. 21. 21:42 posted by tolkien

 계산기에 대해서 살짝 열중하고 있는 와중에 나를 홀딱 반하게 한 계산기가 TI-89 이다.

 정확히 말하면 계산기 껍데기를 쓴 휴대용 컴퓨터이다. 제공하는 기능만 따지면 휴대폰보다 더 쓸고있는 물건(?)이라고 생각한다. 그래서, TI-89의 기능을 다 공부한 다음에 다음 타겟은 같은 회사에서 나온 voyage 200. 이것은 키보드가 달려있는 TI-89라고 생각해도 된다. 헌데 외양이 계산기답지 않아서 천대받고 있는 천덕꾸러기.

 이것을 휴대폰에서 돌릴 수 있게하는 emulator중에서 제일 좋은 것이 Graph 89-free라고 생각한다. Free version의 경우, TI-89만 돌릴 수 있다.

 그런데, 이것을 작성하신 분은 Dritan Hashorva라는 인도(?) 사람으로 추정되는 개발자.이고, 개발을 2013년 10월에 멈추고 source license를 GPLv2로 변경하고, code를 bitbucket에 올렸다. 그리고, 더 이상 update가 없다.

 그걸 받아다가 android studio 4.1.2에서 build되게 하고, galayx S20까지 설치 test까지 해서 수정한 code를 내 개인 github에 올렸다. android studio 4.1.2로 migration은 자동으로 되었고, 여기에 살짝 warning 정도를 제거한 것이 전부.

 내가 build한 binary는 여기에 첨부한다. (google play에는 Dritan이 올린 것이 있으므로)

graph89-free_debug.apk
6.94MB

1. 고장나는 기기 - lenovo x200

   물리적인 부분은 말짱한데, 최근 들어서 화면이 깨지기 시작한다. LCD 화면이 깨진 것인가 싶어서 외부 모니터를 달아보니 모니터에서 깨져 보인다. CPU내 graphics에서 내보내는 data가 깨지는 것이다. DRAM이 깨진 것인지 (DDR3), 아니면 CPU가 맛이 가는 것인지 처음 보는 현상에 조금 당황스럽다.

   기기가 오래되었으니 그려러니 하긴 하지만, 물리적인 부분이 맘에 들었는데, 조금 아쉽다.

 

2. 고장나 있는(버그 있는) 기기 - UC-600e

   방통대 시험보려고 구매한 공학용 계산기. 가볍고 싸서 샀는데, 뒤늦게 버그가 있다는 것을 알았다.

   그렇다고 환불할 것도 아니고, 그냥 조심해서 써야 한다. 현재 알려져 있는 버그는 다음과 같다.

x^2 - x + 1 = 7을 solver로 풀 경우, X 값이 -2만 나오는 버그.

   이 방정식의 해는 -2, 3 인데, 이 계산기는 방정식의 해를 Newtown-Rhapson Method로 푼다. 따라서, X의 초기값에 따라서 방정식의 해가 다르게 나온다. 문제는 다른 방정식(x^2 - x + 1 = 3)은 초기값을 적당히 주면 두 해(-1, 2)가 전부 나오는데, 위 식만은 x = 3으로 초기값을 주는 경우를 제외한 나머지 경우는 전부 -2를 답으로 보여준다.

 

  이에 대한 유일한 글 - UC-600e에 대한 얼마없는 글중에 하나.

 

  다행인 점: UC-600e의 원본격에 해당되는 카시오 계산기에서 나오는 버그들을 뒤져서 실행해보니 해당 버그는 없다.

  불안한 점: 공학용 계산기의 정확성을 검증하는 표준적인 방법이 없다.

 

  더 나아가서, 어떻게 계산기의 결과를 믿을 수 있을까? 사람이 검증할 수 있는 결과는 비교할 수 있다고 쳐도 너무 숫자가 크거나 복잡해서 실질적으로 검증이 안되는 결과는? 결국 메이커를 신뢰할 수 밖에 없다는 것인데, 잘 알려진 브랜드의 제품이나 많이 쓰이는 기기라면 사용자가 보고하겠지만, UC-600e처럼 중국산 제품을 그대로 수입해오거나 사용자의 피드백을 기대할 수 없는 제품은 불안하게 써야 한다. 이것이 보이지 않는 비용 지출이 되어 버렸다. 과연 중요한 시험에 이 기기를 들고 갈 수 있을까?

android 공학용 계산기 비교.

오늘은... 2020. 11. 18. 15:00 posted by tolkien

대학 시험을 보기 위해서 공학용 계산기를 샀다. (이전글)

그걸로 1년간 시험 잘 봤고, 올해는 COVID-19 덕분에 놀고 있다.

간신히 익혔던 사용법을 잊어먹을까봐 설명서를 보다가 휴대전화기에 있는 계산기를 공학용 계산기 app으로 바꾸면 손에 익을까. 생각해서 검색해서 몇개 후보를 추렸다. 이전에 언급 써봤던 Wabbitemu 는 Ti-84 plus 공학계산기 app인데, 입력반응이 너무 늦어서 쓸게 못되고, 다른 많은 app들이 있는데 광고, 인앱구매.가 거슬려서 특별히 좋다는 느낌이 아니면 제외했다.

 

첫째는 Free scientific calculator plus advanced 991 calc

 

Free scientific calculator plus advanced 991 calc - Apps on Google Play

Scientific calculator 300 plus, 991 is the calculator for students and engineering student. Calculator 991 plus provides powerful functions in a real calculator 991 300 . It makes advanced calculator 991 become the most useful calculator for university and

play.google.com

 Casio fx-991ES Plus를 기반으로 확장한 형태이다. 장점은 fx-991ES Plus 설명서를 보고 그대로 써도 되고, 반응도 나쁘지 않다. 몇몇 계산 기능은 더 좋다. 게다가 원래 계산기에 없는 Graphing 기능까지 있어서 몇몇 블로그에서 추천받기도 했다. 내가 가지고 있는 유니원 UC-600E 사용법도 호환이 되어서 나쁘지 않다. 광고는 확장 기능 사용시 화면 위에 살짝 나오는 수준이라서 참을만하다. 허나 단점은 확장기능에 대한 설명이 app내 도움말이나 유투브의 무뚝뚝한 동영상 하나.라는 점이다. 그리고, fx-991ES plus와 기능이 동일하지 않아서 공학용 계산기를 손에 익히자.라는 부가적인 목적에 맞지 않는 것같다.

 

둘째는 Graph 89 Free

 

Graph 89 Free - Google Play 앱

Graph 89 - Emulator for the TI-89 graphing calculator. The ROM image is not included. You need to extract this from you own calculator. Make sure you have the ROM ready before downloading this emulator.

play.google.com

이건 Ti-89 공학용 계산기 emulator인데, Wabbitemu와 달리 반응성이 좋다. 유료구매하면 Ti-84 plus도 지원한다고 한다. 실제 공학용 계산기를 그대로 구현했다는 점. 그로 인해서 사용법이나 관련 정보가 풍부하다(?)는 점. (Ti-89 for dummies도 있다!) 그래서, 공학용 계산기를 익히는데 상당한 도움이 될 것같다. 가장 큰 단점은 Ti-84 plus, Ti-89가 오래된 계산기(cpu가 무려 8bit Z-80이다.)인데다가 아직도 비싸다!(거의 17만원정도). 거기서 약간 보태면 같은 회사에서 나온 최신 공학용 계산기인 NSpire II CAS를 살 수 있다. (이건 22만원, 그리고, android emul app이 아직 없는 것같다.)

 

어쨌든 내 선택은 Ti-89. 왜냐면

 첫째, Ti-89 계산기를 배울 수 있는 자료가 너무 많다. (Ti-89 for dummies로 시작하려고 한다.)

 둘째, source가 공개되어 있다. (free version이긴 하지만).

 셋째, 기능이 너무 세련된 Casio 공학계산기를 공부하기에는 너무 심심해서?

 

AutoValue

Personal Computer/Linux 2020. 3. 8. 19:37 posted by tolkien

facebook을 보다가 AutoValue Cursor에서 bug patch를 했다는 아는 사람의 글을 보고,

뭔가 하고 시간을 내서 찾아봤다.

java에서 상수와 같은 값을 Static class로 선언해 쓰는 경우, 그에 따른 코드 작성하는 부담을 덜어주는 tool이다.

android에서는 gradle에 추가해서 쓰면 된다고 한다.

 

그에 대한 자세한 설명은 다른 분들이 적어놨으므로 link만 인용한다.

[Android] @AutoValue 에 대하여.

[Java] Autovalue 라이브러리 사용하기

 

github에 있는 google의 설명 및 code

AutoValue에 대한 presentation

 

 

Bixby's hello world (3)

Personal Computer/Linux 2020. 1. 1. 00:46 posted by tolkien

오늘은 입력을 받아서 처리하도록 바꾸어보자.

 say "hello"라고 하면 Bixby는 HELLO, WORLD 라고 답을 하고,

 say "foo"라고 하면 Bixby는 FOO, BAR라고 답을 한다.

( Bixby Studio를 7.8.1-r19x.13460로 upgrade하면 나오는 warning에 대한 처리.

더보기

그전에 Bixby Studio를 7.8.1-r19x.13460로 upgrade하면 이전에 있는 예제 code에서 warning이 나온다.
나오는 위치는 capsule.bxb로 아래와 같은 경고이다.

Line 8:3DEPRECATED: `runtime-flags` is deprecated, move to `runtime-version`
[This deprecation will prevent new submissions in 20A] [deprecation 6797]View Deprecation Guide

그러면 capsule.bxb에 있는 runtime-flags { ... } 부분을 지우고 아래 code로 대체하면 그 경고는 사라진다.

  runtime-version (2) {
    overrides {
      concepts-inherit-super-type-features (true)
    }

)

 

먼저 helloWorld.js에서 입력을 받아서 처리하도록 해보자. 함수를 다음과 같이 바꾼다.

module.exports.function = function helloWorld (what) {
  if (what == "foo")
    return "foo, bar"
  return "hello, world"
 }

그러면 Bixby Studio는 바로 아래와 같은 경고를 내보낸다.

there is a warning:
The parameters [what] defined in the function 'null' are not listed in the 'accepted-inputs' []

accepted-inputs에 [what] parameter가 없다. accepted-input은 어디에 있는 것인지...

stack overflow나 bixby developer center에서 찾아보면 endpoints.bxb에서 사용하는 keyword.

즉, what이라는 변수를 Bixby에서 처리할 수 있도록 pipeline을 만들어 주어야 할 것같습니다.

 

먼저, what을 instance로 하는 hello type을  models/concepts/hello.model.bxb 에 만들어 준다.
 ( New -> Model -> template:text, name: models/concepts/hello.model.bxb )

 

그리고, action doHelloWorld에 input parameter가 있다는 것을 알려준다.

 아래 내용을 action(doHelloWorld) 안에 넣는다.

  collect {
    input (what) {
      type (hello)
      min (Required)
      max (One)
    }
  }

그리고, doHelloWorld action과 javascript을 연결하는 endpoint에 accepted-input keyword를 써서 입력이 있음을 알려준다. action-endpoint (doHelloWorld) 안에 한줄 추가

      accepted-inputs (what)

여기까지 하면 warning은 사라지지만, Bixby emulator를 실행시켜보면 뭐라고 말하던 HELLO, WORLD만 외친다.

training에 say "foo"를 학습시켜야 한다. resources/en-US/training에 가서 click하면 학습된 say it이라는 문장이 보인다. 여기서 it을 hello type의 input이라고 알려주어야 한다. 아래와 같이 수정하자.

Save한 다음에 "Compile NL Model"을 click해주면 된다.

Bixby Emulator를 띄워서 say foo라고 치면 "foo, bar"라고 답할 것이다.

여기까지 내용은 제 개인 github에 올라가 있습니다.

 

마지막으로, Bixby가 이 일련의 과정을 어떻게 처리하는지 제가 이해한 바는 다음과 같습니다.

단말에서 say "foo"라고 하면

 1. Bixby는 이 말을 say + parameter:foo로 분해해서
 2. resources/en-US/training에 있는 NL Model에 넣는다.
 3. NL Model에서 say + parameter pattern을 찾으면 출력이 text:world이다.
 4. 출력이 text:world인 action인 doHelloWorld.model.bxb를 찾고,
 5. action-endpoint(doHelloWorld)에서 helloWorld.js를 얻은 다음
 6. helloWorld(parameter:foo)를 호출하여 return값으로 text:"foo, bar"를 얻는다.
 7. 출력은 en-US/dialogs/helloVoice.dialog.bxb내 dialog(Result)에서 처리하는데,
 8. text:"foo, bar"이면 "foo, bar"라고 소리를 낸다.

Bixby's hello world (2)

Personal Computer/Linux 2019. 12. 17. 23:02 posted by tolkien

지난번에 이어 오늘은 Bixby로 하여금 말을 하게 해보자.

 

아직 result-view로 output을 design하는 것을 잘 알지 못하겠고,

Dialog를 써서 소리를 내는 것만 할 수 있을 것같다. (Dialog 재정의 하기)

Dialog event중에서 Result에 대한 dialog를 재정의해서 출력시 소리가 나오게 한다.

 

1. resources/en-US/dialogs/helloVoice.dialog.bxb

 * resources/en-US/dialogs에서 오른쪽 click -> New... -> Dialog 선택한 다음 helloVoice를 생성하고 아래 내용으로 채운다.

dialog (Result) {
  match: world (txt) {
    from-output: doHelloWorld ()
  }

  if (txt == 'hello, world') {
    template("HELLO, WORLD") {
      speech ("hello, world")
    }
  } else-if (txt == 'foo, bar') {
    template ("FOO, BAR") {
      speech ("foo, bar")
    }
  }
}

 * match: {} 부분을 설명하자면 (파악하는데, 시간이 걸렸다.)

    doHelloWorld action에서 나오는 결과값중에서 변수 타입이 world인 txt 변수에 대해서 처리한다.

 * 그리고나서 txt 내용에 따라서 출력할 내용을 정한다.

   speech() 함수를 이용해서 소리내서 말하게 하는데, SSML이라는 문법을 사용한다고 한다.

   (Bixby에서 사용되는 SSML 설명)

 * 참고로 javascript 함수인 HelloWorld()에서 return 값이 "foo, bar"로 return하면 "foo, bar"로 발음한다.

 

예제 파일은 https://github.com/tolkien/playground.helloworld 에서 받을 수 있습니다.

다음할 일 : 입력을 say hello로 받으면 hello, world를, say foo를 받으면 foo, bar를 말하게 하기

Bixby's hello world

Personal Computer/Linux 2019. 12. 10. 02:49 posted by tolkien

컴퓨터 언어를 새로 접하면 항상 해보는 것이 "hello, world" 문자열찍는 예제이다.

빅스비에서 hello, world에 해당되는 것이 capsule-sample-dice, 이른바 주사위 던지기.이다.

 

심지어 Bixby Developer Center에 들어가면 Quick Start Guide로 제시하고 있다.

처음부터 생성하는 것이 아니라 예제를 download받고 그 내용을 설명하는 것으로 되어 있다.

빅스비의 개념을 익히는데, 상당히 힘들뿐 아니라 실행도 전혀 빅스비답지 않다.

그래서, 만들어봤다.

 

0. Bixby Studio를 깔고 실행하면 제일 먼저 login 화면이 나온다.

    삼성 Bixby 개발자로 등록하지 않으면 Bixby 맛도 볼 수 없다. 돈 드는 것 아니니, 등록하자.

    여기서 사용한 Bixby Studio Version은 7.8.0-r19w.13177 (2019/12/10일 기준) 이다.

 

1. Capsule 만들기. 빅스비에서는 실행파일 == Capsule이다.

- File메뉴에서 New Capsule 선택하고, Capsule ID는 playground.helloworld .

* 참고로 playground.라는 prefix를 주지 않으면 Bixby IDE에서 생성하지 않는다. 그리고, Capsule ID는 영어 소문자로 시작해야 한다. 이런저런 이름에 대한 제한은 Capsule 생성 dialog에 있는 link를 찍어서 내용을 확인할 것.

 

생성하면 뭔가 기본 파일들을 만들어 주는데, error 3개, warning 7개가 뜬다. 시작부터 난감.

일단 이 error부터 잡으면서 시작하는 것이 정신건강상 좋은 것같다.

 

2. 해당 Capsule을 확장하면 보이는 capsule.bxb 를 열고 아래 내용을 추가한다.

  store-sections{
    section (GamesAndFun)
  }

  store-countries{
   // all
   only{
      allow (KR)
    }
  }

그리고, runtime-flags { .. } 안에 다음을 추가한다.

 // add below for error correction
no-filtering-with-validation
modern-default-view-behavior
use-input-views-for-selection-list-detail

 

3. 그 다음으로 resource/en-US/capsule-info.bxb 을 열어서 다음을 추가한다.

  dispatch-name (helloworld)
  search-keywords {
    keyword (hello)
  }

그럼 warning 하나 빼고 capsule.bxb에서 나오는 error는 사라진다.

(남은 하나는 icon file이 없다고 징징대는 것인데, 없어도 실행하는데 지장없다.)

 

4. 그리고, resources/en-US/hints.bxb 파일을 열어서 hint(...) 부분을 지우고 다음을 추가.

    hint (ask helloworld to say it)
    hint (ask helloworld to say world)
    hint (ask helloworld to say something)

여기에 좀 지저분한 것이 있는데, 보고 싶으시면

더보기
The current en-US dispatch patterns are the following:

 

"with %dispatch-name% ..."

"in %dispatch-name% ..."

"ask %dispatch-name% ..."

"ask %dispatch-name% for ..."

"ask %dispatch-name% to ..."

 

The current ko-KR dispatch pattern is the following:

 

%dispatch-name% 에서 ...

 

for detail, see https://stackoverflow.com/questions/57241026/invoke-specific-action-when-bixby-capsule-launched

 

이제 warning 하나만 남았으니 뭔가 compile해서 실행할 수 있을 것같다.

여기서 왼쪽 하단의 휴대폰 모양 icon을 click하면 Bixby emulator가 뜨는데,

왼쪽에  어떤 글자를 입력한 다음에 "Run NL"을 실행해도 "I didn't understand that"이라는 말만 한다.

그럼 이제 뭔가를 타이핑하거나 말하면 hello, world라는 글자가 출력되게 하자.

 

5. models/concepts/world.model.bxb 생성

 * Bixby에서 Concept은 C나 java에서 변수와 같은 개념이다. 변수가 100개면 Concept 파일이 100개~

 * 왼쪽 helloworld Capsule browser에서

  . models를 click해서 확장시키고

  . concepts 위에서 마우스 오른쪽 click 하면

  . Context Menu가 뜨고, 거기서 New -> Model 선택하면 Dialog가 뜬다.

    여기서 File Type: Model, Template : Text 선택해주고, filename은 world.model.bxb

 

  -> 이러면, world라는 text 변수가 하나 생성되었다.

 

6. code/helloWorld.js 생성

 * 그 다음에는 world라는 text 변수에 "hello, world"를 넣도록 javaScript을 작성하자.

 * helloworld Capsule browser에서

  . code 위에서 마우스 오른쪽 click해서 New -> Action JavaScript 선택

  . 파일명은 code/helloWorld.js 으로 만들어 주고, 아래 내용으로 바꾸어 넣자

module.exports.function = function helloWorld () {
  return "hello, world"
}

 

7. models/actions/doHelloWorldᅟ.model.bxb 생성

 * 이제 doHelloWorld라는 ᅟAction을 생성한다. 일종의 trigger라고 생각하면 된다.

 * helloworld Capsule browser에서

  . models -> concepts 위에서 마우스 오른쪽 click해서 New -> Model 선택

  . File Type: Model, Template : Action, filename은 doHelloWorld.model.bxb

  . 그리고, 아래 내용으로 바꾸어 넣자

action (doHelloWorld) {

  output (world)
  type (Calculation)
}

 

8. resources/base/views/helloWorld.view.bxb 생성

 * 출력 형태를 결정하는 것인데, 그냥 빈파일로 냅두자. (생성하지 않아도 됨)

 * helloworld Capsule browser에서

  . resources -> base -> views 위에서 마우스 오른쪽 click해서 -> New -> View

 

 

9. endpoints 설정하기.

 * endpoint란 input -> action -> output 을 연결해주는 역활은 한다.

 * resources/base/endpoints.bxb 의 내용을 아래 내용으로 바꾼다. 입력이 없으므로 따로 정의하지 않는다.

endpoints {
  // action과 그에 맞는 자바스크립트를 매핑
  action-endpoints {
    action-endpoint (doHelloWorld) {
      local-endpoint ("helloWorld.js")
    }
  }
}

 

 

10. 이제 빅스비를 훈련시켜서 hello, world 문자열을 출력하게 하자.

 * resources/en-US/training 열면 다음과 같은 화면이 나온다.

 

"Enter natural language training"이라고 써 있는 곳에 say it 이라고 입력하고 Add를 click하면

GOAL을 입력하라고 나온다. 여기에 정의해두었던 Concept인 world 을 입력하고 저장한다.

그리고, "Compile NL Model"을 click하면 hello, world 문자열을 볼 준비는 다 끝난 것이다.

 

11. 이제 hello, world 예제를 실행해보자.

 * 왼쪽 하단의 휴대폰 Icon을 click에서 emulator를 실행하고,

왼쪽에 say it이라고 입력한 다음에 "Run NL"을 실행하면 hello, world 문자열을 볼 수 있다.

 

마지막으로, 한가지 고백하자면 입력창에 어떤 내용을 넣어도, 어떤 말을 해도 위 화면만 나오게 된다.

왜냐하면 Bixby Emulator에서는 helloWorld Capsule만 동작하고 있고, 입력과 상관없이 무조건 hello, world 를 출력하게 했기 때문이다.

 

예제 파일은 https://github.com/tolkien/playground.helloworld 에서 받을 수 있습니다.

 

개선할 점. hello, world을 음성으로 들을 수 있도록 해보자.

 

일반 공학용 계산기 유니원 UC-600E

계산기 2019. 12. 3. 17:58 posted by tolkien

시험을 보기 위해서 공학용 계산기를 샀다.

지난 시험때 쓰던 아내가 쓰던 Sharp EL-509L이 오래되어서 그런지, 배터리를 갈아도 화면이 희미해지기를 반복하니 불안불안해서 버렸다.

 

이리저리 뒤져보면 입문용 공학용 계산기로 CASIO FX-570ES PLUS 또는 비슷한 것을 추천하던데, 가격이 25,000원정도에 구매할 수있다. 시험 몇번 보고 말건데...라는 생각에 좀 더 싼 것을 찾다보니 선택은 두가지.

하나는 다이소에서 사는 5,000원짜리... 이건 소개글을 봐도 비추천이더라. 1회용으로 생각하라고 하던군.

또 다른 하나는 UC-600E이다. 이것도 뒤져보니 카시오 계산기의 카피라고 하던데, 어쨌든 국가 자격시험에 가지고 들어갈 수 있는 계산기 목록에 당당히 들어가는 것이면 뭐 못 쓸정도는 아니라는거겠지.

 

받아서 살짝 사용해보니 뭐 가격(12,700원 - 배송비 포함)만큼의 제품이다. 적어도 휴대폰에 설치한 TI-84 emulator를 쓰다가 버튼 잘 못 눌러서 고통받을 일은 없다(그걸로 계산하다가 화딱지 나서 힘들었다. 결국 화면이 큰 tablet에 설치해서 터치 오류를 줄였슴.)는 것에 안도하고 매뉴얼을 살펴보았다. 이전에 검색해서 찾아둔 카시오 FX-115ES plus 설명서와 비교해보니... 좀 수상쩍다. 417개 함수 지원한다고 하는데, 매뉴얼은 403개 함수를 지원하는 FX-115ES 매뉴얼과 비슷하다. 느낌상 115ES와 115ES plus 사이 물건(?)쯤 되는 것같다. 드는 생각은 그냥 함수가 몇개인지 정확히 알아보지 않고 그냥 베낀 것같다. RANDOM INTEGER를 '랜덤 인테거'라고 번역할 것을 보면.

 

참고 1. 세모계에 있는 카시오 일반 공학용 계산기 모델에 대한 정리글

         1-a. 카시오 일반 공학용 계산기는 350급, 570급이 있다.

         1-b. 모델번호는 지역별도 다르다. FX-115ES == FX-991ES == FX-570ES

         1-c. 모델 suffix는 MX -> ES -> ES PLUS -> EX 순으로 나온다. (MS가 붙은 것은 사지 마라)

참고 2. FX-570ES와 FX-991EX와 자세한 비교(영어)

참고 3. fx-115-991ES PLUS manual (english)

fx-115_991ES_PLUS_C_EN.pdf
1.45MB

참고 4. fx-991ES 설명서 (한글)

fx991ES_K.pdf
0.68MB

참고 5. fx-570ES 설명서 (한글)

fx-570ES_K.pdf
6.95MB

참고 6. fX-570ES_plus 설명서 (한글, 이게 pdf viewer로 보기는 좋다)

FX-570ES_plus_K.pdf
2.78MB

근데, G-Market에 보이는 FX-570ES PLUS 2는 뭐하는 놈일까?

 

opengrok에서 확장자 추가하기

Personal Computer/Linux 2019. 11. 22. 12:52 posted by tolkien

source browser로 opengrok을 쓰고 있습니다.

java, asm, c/c++ 등의 파일을 parsing해서 source code 돌아다니기 편하게 해줍니다.

 

그런데, 가끔 custom한 확장자를 사용하는 code들이 있습니다.

예를 들어 source 일부를 .inc file로 만들어서 include하는...

이런 경우, opengrok는 그냥 text file로 처리합니다.

 

오늘 code를 보다가 drvInit() 함수의 definition이 없어서 찾아보니

그런 파일에 있었네요. 그래서, 조금 googling했습니다. 그랬더니

opengrok.jar내 -A option이 있다고 합니다. 사용법이 조금 까다로운데

 

-A sln:org.opensolaris.opengrok.analysis.plain.PlainAnalyzerFactory

 

C file로 인식하는 것은 아래와 같지 않을까 생각하고, option을 넣어서 다시 indexing합니다.

-A inc:org.opensolaris.opengrok.analysis.c.CAnalyzerFactory 

뒤에 있는 명칭은 opengrok source code를 보면 대충 짐작이 됩니다.

https://github.com/oracle/opengrok/tree/master/opengrok-indexer/src/main/java/org/opengrok/indexer/analysis

 

참고 자료 :

- opengrok wiki

- opengrok github

- Re: [opengrok] How to add more file extensions (file types)

- stackoverflow에서 찾은 글

.

1. 제일 먼저 Inbox에 모아보기 설정

 - 여러 email 계정의 inbox를 한곳에 볼 수 있는 것이 편한데, 이건 기본설정이 아니다.

 - 설정방법 : View -> Folders -> Unified 선택

 

2. email 계정 순서

 - 이건 안 바뀐다. 따라서, 자주 보는 것을 먼저 등록할 것.