Some notes of studying abroad in Davao.

Davao: It is the city in Philippine

  • Term: 2018/06/03〜2018/07/02
  • Place: E&G International Language Center

About class and studying Basic system

  • We select the course when we submit my application. I submitted Intensive course. It consists of 5 one-on-one and 3 group classes.
  • At first in the school, I took a test. And curriculums were chosen according to your score or skills by teachers.
  • We can join there any season. Most students arrived there on Saturday or Sunday and were introduced about E&G on Monday.
  • If you exclude busy period (July to October), you can ask orders in spite of at the last minute.
    • I asked to order before two weeks I went. Thanks, m( )m.
  • You may get homework according to your teachers.
  • Classes are finished until 6:00 pm, and you can self-schooling after dinner.
    • In my case, I got a generous amount of homework. I did it until 10:00 pm.
    • You can use a big room for self-schooling until 9:00 pm.
    • And also small rooms training for speaking.

Teachers

  • Filipino people use Tagalog or any other Language in domestic.
    • But, they have been using English too from elementary school.
    • I think that it is difficult to communicate with teachers if you can not do simple English.
  • Teachers have a fair accent.
    • They often caught the trace of an accent of me, and brush up it. My English skill.
  • My most weak point in English is pronunciation such as 'L', 'R', 'WO', 'F' and 'TH'.
  • I often fail to the expression of tense and personal.
  • It bites by bit in English writing more than I thought.

Life and sightseeing Dormitory

  • There are 1 to 3 people in one room.
    • And people from different nations are mixed in the one room. It may be intended for communication in English.
  • There is a full-time person who does washing and cleaning. We need not do it.
  • Meals are provided at the same time every day. It is nice, but you should not compare with the Japanese one.
    • Meals are similar to Korean, Chinese or Japanese, but not the same.
    • Bread is very delicious and lauded by students. Taste is strong. I guess flour may be containing a few of embryo.
    • There is raw vegetables.
  • Drinking and smoking are inhibited, but there is a dining bar near the school.
  • There is the guard in the dormitory at all times.
    • A Key is fixed on each room, but you should not trust it. Because a roommate may forget the lock.
    • I suggest you put valuable items in your suitcase.
  • You must observe the rule or leave from there.

The environment around the school

  • The school is in Davao. Teachers said that Davao is a very safe, and more than Cebu and Manila.
  • Teachers suggest us to do sightseeing or play. We can have a talk and get information about how to go and security with them.
  • Davao is safe but you need especially attention when you go to another city.
  • I suggest you search about the place in English additional to Japanese. Because Davao is not common in Japan yet.
  • There are two supermarkets, convenience store, restaurant and fast food shop near the school. We can get some dining utils and foods easily.
  • We could go to a large shopping mall by jeepney after the class.
  • It is difficult to get a fan making of plastic. You should bring it.
  • Sunshine is very strong, but the atmosphere is dry.
  • Air conditioner is so strong somewhere. You should have an outer cloth.
  • It is usually sunny, and often rain in evening.
  • Commodity price is one thirds to one fives than Japan.
  • You need attention to price in private shop because of a rip-off price.
  • I heard that Custom of tipping is turning into desuetude.
  • I suggest you bring Japanese sweets. Because children in sightseeing area often said that give them something.
  • I carried some COUNTRY MA'AMs and mini YO-KANs.

Other

  • I should be carried my camera and fishing rod.
  • I had stomach trouble sometimes. you should have some medicine.
    • I bought many YAKULT and keep it.
  • Internet infrastructure of Philippines is very poor.
    • It is lower speed than another in the school because it used by some students.
    • You have to get sim-card with large capacity if you needed.

ダバオ英語留学メモ

ダバオ(davao) : フィリピンの地名

授業・勉強の様子

基本システム

  • 事前にコース申請があります。自分は1日8コマで応募しました。マンツーマン授業5コマ+グループ(4人)3コマです。
  • 入学直後にテストを行い、それぞれのレベルに合わせてカリキュラムが作られます。
  • 学校と銘打っていますが、入学はいつでもできます(だいたい日曜に現地到着し、月曜からイントロに入る人がほとんどです)。
  • 繁忙期(7〜10月)以外であれば、空き状況に応じて直前の問い合わせでも対応してもらえるようです。
    • 自分は2週間前の問い合わせで対応してもらえました。ありがたや。
  • 先生によっては毎日課題が出ます。
    • 自分の場合、割と課題が多く、課題と予習で10:00pmくらいまではかかりました。
  • コースは6:00pmまでで、それ夕飯以降は自習になります。
    • 9:00pmまでは自習用の大部屋が使えます。
    • 大部屋以外も空いている部屋を適当に使えばspeekingの練習もできます。

先生たちについて

  • フィリピンでは、地方ごとにいくつかの言語を使っていますが、小学校から授業は英語で行われているそうです。
    • 先生とのコミュニケーションはほぼ英語だけになるので、簡単な英会話ができないと授業が成立しないと思います。
  • フィリピン独特の訛りなどは自分のレベルでは気にする必要は無かったです。
    • 日本人特有のJapanese Englishは徹底的に指摘してもらえます。

自分の英語について

  • 発音(L, R, WO, F, TH)が弱かったらしく、よく指摘されました。
  • 時間やsの有無などの活用にたまに誤りがあり、指摘されました。
  • 英作文は赤こそ多かったものの、想像していたよりだいぶマシのようです。

生活や観光について

寮生活

  • 寮は1〜3人で1つの部屋を共有します。
    • 部屋ごとに別の出身国の人を混ぜて、英語コミュニケーションがされやすいようになっているようです。
  • 掃除洗濯などは専業の人がやってくれるので、基本的に自分たちですることはないです。
  • 寮食について、毎日3食、決まった時間に食堂でとります。味は日本と比較しなければ美味しいと思います。
    • 韓国風、日本風(風と書いたのは、やりたいことは分かるけど、、、というものがたまにあるから)のご飯が出ます。
    • 朝食のパンは好評です。小麦粉の段階で多少の胚などが残っているのか、味が濃く、人によっては日本のものより美味しく感じると思います。
    • 生野菜などもでます。
  • 施設内での喫煙・飲酒は禁止ですが、徒歩数分圏に呑めるところがあります。
  • 24時間で警備の人がいます。
    • 各部屋に鍵がありますが、ちゃんと施錠したのは1日だけでした。同居人の誰か一人でも鍵を忘れるとオープンなので、貴重品は自分のスーツケースで管理したほうが良いと思います。
  • 門限など他のルールもあるため、しっかり守りましょ。

周辺環境

  • 学校があるダバオはフィリピンでも屈指の治安の良さが売りだそうです。先生曰く、セブやマニラよりも良いそうです。
    • 週末の観光は推奨されており、週末が近づくと先生らから、その話題が振られます。相談すれば治安や行き方を教えてもらえます。
    • 市街地、観光地は安全でも、他の市に行くときは注意が必要です。
    • インターネットで調べるときは、日本語だけでなく、英語でも調べたほうが良いです。ダバオは日本ではマイナーな土地なため情報が少ないです。
  • 学校から徒歩圏にスーパーが2つ、コンビニ、レストラン、ファーストフード店があるので、日用品の補充は楽です。
    • コース終了後でもジプニーで大型ショッピングモールに行くこともできました。
    • 団扇の入手が困難なので、1個もっていくと良いです。
  • 日差しが日本よりだいぶ強いですが、からりとした暑さです。
    • 冷房が強いところが多いので、羽織るものは必要です。
  • 天気は基本晴れで、夕方から早朝のかけて雨が降ることが多いです。たまに雨の日があります。
  • 物価は日本の1/3〜1/5程度でした。
    • ボッタクリ価格はあるので個人商店での買い物には注意です(ボッタクリ価格でも日本よりはすごく安い)。
  • チップは廃れつつあるらしいです。
    • 観光地などでは子供らが「なんかくれー」する事があるので、日本から個包装のお菓子をもっていくと良いと思います。
    • 自分はカントリーマームとミニ羊羹をもっていきました。

そのほか

  • 治安を気にしてカメラを置いていったが、失敗だった。
  • 学校の正面の海に魚が居たので、釣り竿があれば釣りができると思う。釣具屋は無いので餌はルアーか工夫する必要あり。
  • 自分は2回、腹を下した、薬があったほうが良いと思う。現地でヤクルトが買えるので常備してた。
  • フィリピンのインターネット環境はだいぶ悪い。
    • 学校のWiFiは大人数で使うので余計に遅い。
    • 気にする人は現地simを大容量で契約してテザリングしたほうが良い。

macのFinderのpreviewが遅くなってきたら実行するおまじない

rm ~/Library/Preferences/com.apple.finder.plist && killall Finder

Multi-PAXOS擬似コード

PAXOSの説明はWikipedia

元々のPAXOSのうち、同じProposerから連続してproposeされる時、チョット効率よく処理をする改良としてMulti-PAXOSというアルゴリズムがある。そのMulti-PAXOSの擬似コードが無かったので作った。まだ試していないので動くかどうかは不明。

  • iの扱いが省略されていたのでnと同じように追加。
  • 参考資料でiの扱いが簡潔に書かれていたり、元の論文がふんわりしているのは、PAXOS以前の実装・条件に依存する動作があるためと思われる。下記の擬似コードも自分で使う用に補完している。
  • 送信コマンドと返信コマンドがペアリングできる必要があるのでは?基本的なPAXOSの擬似コードではnはローカル変数で、ペアリングのキーになっているようだ。
  • 基本的なPAXOSのProposer-5の動作は、Proposerがacceptコマンドを過半数に送り切る前に死んだ場合、Learnerが状態を確定できない状態を対策するためにあるようだ。同状態の検知はLearnerで検知できるので、ProposerがやるよりLearnerがやったほうが状態がわかりやすいかと。
  • Alloyなどの形式手法でうまく動くかどうか確認したいけど、どうやるんだろうね?

参考

もともとのPAXOSの擬似コード

http://people.csail.mit.edu/alinush/6.824-spring-2015/paxos-algorithm.html

   --- Paxos Proposer ---

 1  proposer(v):
 2    while not decided:
 2      choose n, unique and higher than any n seen so far
 3      send prepare(n) to all servers including self
 4      if prepare_ok(n, na, va) from majority:
 5        v' = va with highest na; choose own v otherwise   
 6        send accept(n, v') to all
 7        if accept_ok(n) from majority:
 8          send decided(v') to all


    --- Paxos Acceptor ---

 9  acceptor state on each node (persistent):
10   np     --- highest prepare seen
11   na, va --- highest accept seen

12  acceptor's prepare(n) handler:
13   if n > np
14     np = n
15     reply prepare_ok(n, na, va)
16   else
17     reply prepare_reject


18  acceptor's accept(n, v) handler:
19   if n >= np
20     np = n
21     na = n
22     va = v
23     reply accept_ok(n)
24   else
25     reply accept_reject

作った擬似コード

■Client/Learner

値Vを設定するとき
  • Proposerにset(V)を送る
reply_set()を受信したとき
  • 完了
値を取得する時
  • 全てのAcceptorにlearn()を送る
reply_learn(n, i, v)を受信したとき
  • if 受信した{n, i, v}の数を集計し、過半数を獲得したものがある
    • {n, i, v}を採用
  • else
    • 全てのAcceptorにlearn()を送る

■Proposer

初期状態
  • np=0
  • ip=0
  • reset=true
set(v)を受信したとき
  • np+=1
  • vp=v
  • if reset==true
    • 全てのAcceptorにprepare(np)を送る
  • else
    • 全てのAcceptorにaccept(np, ip, vp)を送る
reply_prepare(res, n, i)を受信したとき
  • if res=='ok'がAcceptor過半数
    • ip=max(i)+1
    • 全てのAcceptorにaccept(np, ip, vp)を送る
  • else(返事が来ない、'ng'が来たなどが過半数)
    • np=max(n)+1
    • reset=true
    • 全てのAcceptorにprepare(np)を送る
reply_accept(res, n, i)を受信したとき
  • if res=='ok'がAcceptor過半数
    • ip=max(i)+1
    • reset=false
    • reply_set()を返信
  • else
    • np=max(n)+1
    • reset=true
    • 全てのAcceptorにprepare(np)を送る

■Acceptor

初期状態
  • np=0
  • na=0
  • ia=0
  • last_nid=null
prepare(n)を受信したとき
  • if n > np
    • if src_nid != last_nid
      • i=0
    • else
      • i=ia
    • reply_prepare('ok', np=n, i)を返信
  • else
    • reply_prepare('ng', na)を返信
accept(n, i, v)を受信したとき
  • if n >= np && ia > i
    • np=na=n, va = v, ia = i, last_nid=src_nid
    • replpy_accept('ok', np, ia)を返信
  • else
    • reply_accept('ng', np)を返信
learn()を受信したとき
  • reply_learn(na, ia, va)を戻す

WebRTC on ネイティブ〜webブラウザ

分散環境の通信メディアとして、WebRTCを使っているが、ネイティブアプリとwebブラウザ間で通信を行うときに切断してしまう不具合がある。バージョンや、そもそもの作り方が悪かったのかと、最小サンプルを作って確認した。最小サンプルは動くので、自分が作った部分に 原因があるようだ。

f:id:llamerad-jp:20171112170318p:plain

github.com

Webブラウザでも分散

Emscriptenを用いてC++JavaScriptに変換することで、Webブラウザとネイティブで同じアルゴリズムで接続できるようにした。 本当はJavaScriptではなく、WebAssemblyに変換したかったが、embindを使ったクラスや関数のエクスポートが最小サンプルでも動かなかったため、今回はスキップした。

ロジックは変換できても、スレッド、POSTアクセス、WebRTCアクセス、タイマーなどの機能は直接変換できないため、JavaScriptで記述して、C++側から呼び出すようにした。

f:id:llamerad-jp:20171108065926p:plain

まだバグっぽいですね。

JavaScriptの非同期処理は、C/C++との連携において、非常に面倒な問題になる。PromiseやGeneratorは、非同期処理を同期処理っぽく書く手段を提供しているが、あくまで「ぽい」だけで、本当に同期処理になっているわけではない。C/C++で書いた同期的なロジック中で、非同期なJavaScriptの機能を使おうとすると、ネイティブな処理とは実行タイミングなどが変わり、処理順序の変化から、バグを引き起こした。C/C++でthreadやwaitを使おうにも、Emscriptenで変換したC/C++は、あくまでJavaScriptエンジン上で動くため、問題の解決はできない。これらの機能は設計段階から非同期なコールバックやタスクとして処理することを前提とした設計にする必要があった。(ので、かなり書き換えた)

遺伝的アルゴリズムを使ったルーティング

遺伝的アルゴリズムを使ったルーティングアルゴリズムにより、接続の偏りが少なくなった。 評価用の点数の付け方も工夫したので、特定のノードに通信が集中しそうになっても経路が分散されるはず。 f:id:llamerad-jp:20171024095332p:plain 計算負荷が上がったためか、120ノード前後でタイムアウトが発生しやすくなった。少しだけ最適化して高性能なマシンでもシミュレーションしておきたい。