Anagura's.....

たまに書く

OS2.1(前半)とjavaの場所

一応まとめ.作業途中にIntellijのスクショ取っとくべきだった….

今回はビルドにテスト,その他諸々をスクリプトで記述することによって自動化してしまおうという gradleというツールを使ってjavaでのI/Oの記述速度の比較をするプログラムを作る.その為の前準備の様な課題です.

とりあえずJavaでよく使われるIDEIntellijをダウンロードしてみよう. 一応学生は登録すればUltimate無料で使えたりします.後プラグイン入れたら他の言語も使えるよ.

次にgradleをinstall

$brew install gradle

一応この前にbrewの環境を更新しときたいので

$brew update 
$brew upgrade

ぐらいはしておいても良いんじゃないかなぁ.

次に今回はjavaを使うので最新版のJDKをinstallします. jDKのinstall Accept License AgreementのチェックいれてMacOSXのverをinstallしよう.112ぐらい使えば良いのではないかなぁ.sampleはいらないと思われる.

ダウンロードしたJavaの仕様書もほしいよねって事で.英語版のdocumentをDownloadします. Java Document

Downloadしたものは自分のMacOSXのDocumentディレクトリの中にjavaとか作るなりして置いてみよう. 参照するのはAPIが中心なので,落としたDocumentのAPIディレクトリ内のindex.htmlをブラウザからブックマークしていつでも見れるようにしておこう.

じゃぁ落としたjavaは112だよね.ということはjavaのverは最新の筈だ. 確認を込めて

$java -version

してみるとおそらく違うverを指している. 何故かと言うとこのjavaはシステムのjava.つまりAppleが用意してくれたJavaというわけ.

じゃぁ今落としたjavaはどこにあるのか. とりあえず確認してみよう

$where java
/usr/bin/java

javaはここを指している.ふむ.ならそこはどうなっているのだろう

$ls -l /usr/bin/java                                                   
lrwxr-xr-x  1 root  wheel  74 10 18  2015 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

/usr/bin/javaはリンク類ってるだけか.だったらそこを見てみよう わかりやすいようにcdしてみると

$cd  /System/Library/Frameworks/JavaVM.framework/Versions
$ls 
1.4        1.5        1.6        A          CurrentJDK
1.4.2      1.5.0      1.6.0      Current

ここにはさっき落としたjavaは入ってなさそう.ではいったいdmgでinstallしたjavaはどこに入っているのだろう

javaには落としたversionを確認する(実際は後述する環境変数の設定の為ですが) java_homeというコマンドが実は用意されています. ただこのコマンドが置いてある場所はPATHが通ってないのでフルパスで

$/usr/libexec/java_home -V 

とか打ってみます.Vオプションは今現在installしているjavaの一覧が見えます 試しにやってみると

$/usr/libexec/java_home -V
Matching Java Virtual Machines (6):
    1.8.0_112, x86_64: "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
    1.8.0_111, x86_64: "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    1.8.0_60, x86_64:  "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
    1.8.0_51, x86_64:  "Java SE 8"  /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:  "Java SE 6"  /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386:    "Java SE 6"  /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

これによるとさっきinstallした1.8.0_112はこの1番上/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home にあるらしい.なるほど.

つまりdmgでinstallしたjavaファイルは/Library/Java/JavaVirtualMachines/にversionごとdirectoryが生成されてそこに置かれる訳.

ではjavaのversionをこの最新版に変更しよう./usr/binで見たjavaのコマンド群はリンクが張られているだけなので,versionを指定できれば動的に変わるはずだ.

JAVAを利用する各ツールは環境変数$JAVA_HOMEで設定しているパスを確認している. その部分を変更すれば良いという事になる.

指定方法は簡単.zshなら.zshrcぐらいに

$vim ~/.zshrc
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_112`

を付け加えれば大丈夫.その後設定を反映させたいので

$source .zshrc

しておこう.zshにloginシェルを変更したい場合は次のリンクでも参考にしてみよう. Homebrew で zsh を導入する | deadwood

では実際に作るのはまた後半で

続OS11.1

前回 の続き.

大域アドレスはGET出来たけど学外からの通信が出来ない.学内からだといけるのだけど…. と原因をねむ君に聞いてみると systemctl status networkがError吐いてる

エラーログはこんな感じ(コピって無かった...)

$systemctl status network 
●network.service - LSB: Bring up/down networking
   Loaded: loaded(/etc/rc.d/init.d/network; bad; vendor preset:disable)
   Active: failed(result: exit-code) since Sun 2016-10-23 13:33:41 JST; 28s ago
     Docs: man:systemd-sysv-generator(8)
   Process:1694 ExecStart=/etc/rc.d/init.d/network start (code=exited,

略

Oct 23 13:33:41 hogehoge systemd[1] Failed to start LSB: Bring
(多分ここがError)

Oct 23 13:33:41 hogehoge systemd[1] network.service: Unit enter
Oct 23 13:33:41 hogehoge systemd[1] network.service: Failed wit

色々調べたのですがNetworkManagerはあまり関係無い?

/etc/init.d/network restartもダメなのでここ? いやCentOSじゃないし…

ただErrorが ystemd[1]: Failed to start LSB: Bringなので接続関連ではありそう.

そこで色々考えているとねむ君からDNS追加したらいけるんじゃね?という鶴の一声. なるほど.というわけで

$sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

して一番最後に

DNS1=(DNSサーバーのIP:10.なんとか)

を付け加える.うーん上手く行かない. なのでとりあえず

$ie-virsh destroy 01
$ie-virsh start 01

してみるといけた.DNSサーバーを追加して再起動かけたのが決め手となったか. 起動時のlogを見てみると

[    4.418661] IPv6: ADDRCONF(NETDEV_UP): ens3: link is not ready
[    4.525864] nf_conntrack version 0.5.0 (8192 buckets, 32768 max)
[    4.744020] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[    4.767259] Netfilter messages via NETLINK v0.30.
[    4.789258] ip_set: protocol 6 

とautomaticに設定できているらしい.ふむ.

statusは

● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8) 

おお正常. ほんとにここが原因だったのかまたie-virshでconsole入って消して再起動書けてみたけど 引けた

DNSが原因ではない? だとしたらしてみたのはNetworkManager?(一応リンク先のコマンドは叩いた) はっきりとした原因は特定出来ないが…ふむ….と思ったら引けなくなった

どうも反映されるまで時間がある.DNSのキャッシュ的な問題かもしれない?

どうもDNSが原因ではなさそうSource 前述のNetworkManagerの設定が原因かもしれない.情報求む

これでLevel2までは終わったかな.ねむ君に感謝

OS11.1

うわっ六ヶ月ぶりの更新だった!!

という訳でみんな大好きなOSの講義が始まったのでレポです. まずは1.3を終わらせた後にKVMに変換してhogehogeっていうところ.とりあえずやってみたので覚えている範囲でのlogです. あってるかどうかは解らないので参考程度が嬉しい.ちなみにminimuminstallなのでその辺からずれてる?かも. それと覚えてないところ(やったけど書いてない)があるかもしれないので…うん…間違ってても怒らないでね…

とりあえずどうにかしてvdiのイメージファイルをos.cr.あいいーに送っとこう。

まずVMイメージを変換.

$qemu-img convert -O qcow2 Fedora24.vdi /media/iscsi/hoge/foo/01.qcow2

次にvirshを呼び出してディレクトリとか作らないと行けないので

$ie-virsh define 01

するとディレクトリが生成される.mkdirすると権限がないとか言われるしsudoは使えないのね.

さっき変換したやつを /media/fcs/students/e15/e1557**/01.img あたりに持ってく. 多分defineしないとこのディレクトリ自体が存在していないはず.パスは調べて

その後

$ie-virsh  define students/e15/e155730/01.xml

だと思う.この辺の順序はうろ覚えなので確認して.出来なかったら一度undefineしてやり直すのも良い? 参考リンク1

忘れていた.起動しないと

$ie-virsh start 01

ただここでvirsh console 01しても引けないし,sshも出来ない. とりあえずipアドレスは振っときたいよねっていうことで

$virsh dumpxml students/e15/114514/01| grep “mac address”

するとMAC Addressが手に入るのでそれを使ってip申請. 一度ip申請出来ればローカルからssh出来るよ!やったね!

でやりやすくした後にconsole引きたいのでVM

$sudo vi /etc/default/grub

をして(えっ?VMsshの仕方が解らない? 学内ならどこでもいいから$ssh anagura@10.10.なんちゃらすると良いんじゃない?)

6行目あたりを

GRUB_*略*.lv=fedora_(defaultの数字:401とか?)/swap  console=ttyS0,115200n8"

になるように rhgb quietを消去+行末にconsole以降を付け加える. それで再読み込み

$sudo grub2-mkconfig -o /boot/grub2/grub.cfg

するとconsoleが引ける.やったね!

でここからはセキュリティ監査を受けるようの下準備

まずは

$adduser hogehoge(作りたいアカウント)

で監査用のユーザーを作る.ただパスワードが無いので root

$passwd hogehoge(設定したいアカウント)

でパスワードを作成.これがrootに上がれるパスになるっぽい 後は鍵をDLして

$rsync -avz  hogehgoe.pub(送りたいfile) hogehoge(送り先)@ipアドレス:~/

とでもすれば送れるはず. また、とりあえずsudo使えるようにrootで入って

$ visudo 
user ALL=ALL ALL(ここは適当)

してもらった後はいつもの処理だけどhogehogeアカウントで入り直して

$mkdir .ssh
$chmod 700 .ssh
$mv hogehgoe.pub authorized_keys
$chmod 600 authorized_keys &&mv authorized_keys .ssh 

当たりすれば良いはず.

次にsshでrootにログインを拒否りたいので

$sudo vi etc/ssh/sshd_config

して中の

 PermitRootLogin no 

に変更 ちなみにsudoしないとファイルの中身見れないので注意

ついでにpasswordで入られるのもやっかいなので

PasswordAuthentication no
ChallengeResponseAuthentication no

しとこうね.あっコメントアウトは外すなり別行で作るなりしよう

つぎにfirewallの設定だけど,とりあえず

$sudo firewall-cmd --list-all

で今の動いている奴らの確認をする.ただ動いてるって行ってても動いてない(矛盾)の時があるので

$sudo systemctl status http(ターゲット名)

とかして確認しとこう.ちなみにこのへんはsudoじゃないと見れない出来ないドラゲナイ.つらい.suしてrootになっとくのも手か.

webpageなんで必要なのはdhcp,http sshぐらい.mdnsはdnsっぽいけど別にいらない.

消し方は

$sudo  firewall-cmd --remove-service=https --permanent

すれは出来るはず. ダメそうだったらゾーンが関係しているかも--zoneしてなんか指定すれば良い

そしてこれを再読み込み

$firewall-cmd --reload

ただdefault設定が影響するので詳しくはぐぐってくれ(丸投げ) この辺とか見れば良さそう

で次は

$sudo visudo

して

 Defaults    passprompt = "[sudo] <%U@%h> Enter %u's password:" 

をsudo許可した部分の後に(Alow user?)らへんにいれる.

次に不必要なユーザーをログイン出来なくする.

$sudo vi /etc/passwd

するとユーザー一覧が手に入るのでその中で shutdown:x:6:0:shutdown:/sbin:/sbin/nologin 的にいらなそうなの(halt)とかを/sbin/nologinにシェルを変えとく.

次にリモートユーザーがsshだけ出来る.しかも学内から限定にしたいので まず

$sudo vi /etc/hosts.allow

して行末に

sshd:133.13.
sshd:10.
ALL:127.0.0.1

とかしてみるといいと思う.ちなみに上ふたつは学内のアレ.

で,他ユーザーをブロックするので

$sudo vi /etc/hosts.deny

して

ALL:ALL

を付け加える.

ほいでdnfのautoupdateは これとかここでも参考にしてくれ.

ここまですれば多分OKかな. 無事アドレスゲットしてwordpressが開けないのはDBの影響なので ここの通りに直すと良い.名前はwordpress。記事が開けないのはURLに日本語が有るから. wordpress開けたら管理画面からアドレスの設定とかパーマリンク設定で日本語が入らないようにとかもしとこう

勉強勉強会に参加した話

久方ぶりの更新ってことで。とりあえず昨日勉強勉強会に参加してきました。

java-kuche.doorkeeper.jp

話者は金城さん。西島さん。nal先生。高江洲さんの4人。それぞれ切り口は異なるものの最終的に収束した結論は同じでOutput大事だよねという事です。

ということでメモをざっくりまとめると

  • どんな感じにoutputすれば良いのか?

    • 駆動を利用する。(ex.承認欲求,〆切,発表
    • コミュニティ活動で発表する
    • 論文書いて学会に出る
    • 自作のmindmapを起こしてみる(pc上&手書き)
  • じゃぁinputは?

皆さんすらすらと参考文献とかオススメの図書をあげていたのでもう少し本も読まなければと思いました。

自分と他人を比較しないけれども他人と一緒に勉強して刺激を受けるという観点も中々面白かったです。比較はせずとも行動をともにする。言わばoutput先に誰か人がいなければfeedbackがし辛いということなんでしょうか。その点では公開することコミュニティ参加は向こう側に人がいるということで共通したものがあると思います。

勉強しようと思うと少しげんなりしてしまいますが,この会を通して楽しくすることなら継続的に出来そうだよね?ついでにSNSでoutputもしてみようぜ?という気持ちになれたので掴みは出来てきたかなと考えています。そのためにはgithubとか使うと良いと思う(進捗を可視化出来る)ので今後と使っていこうかなとか思ったり。

ひとまずは自己満足に終わらないためにもoutput頑張ります。ってことで

後期の感想(水-木曜の途中)

帰省前にまとめとこうと,後期の感想です。
まずは水曜日から。

データ構造と基本アルゴリズム

自分としては後期の専門科目の中で1番面白かった講義。僕としてはそこまで難易度高くは感じませんでしたが,結構な数苦手とする人が居た印象です。
考えられるのがCを用いて実装するとこまで踏み込んだ話をしたことで,Cに苦手意識を持つ人(ポインタ,リスト,構造体…)は序盤でギブアップしてしまったのかなぁという所です。
後はこの考え方(Stack,Queue)がどこで役に立つんだ!と一方的に切ってしまったのかなぁと考えます。

考え方さえつかめれば,後は楽しく勉強出来るなぁという講義だったように感じます。
個人的には今回学んだソーティングアルゴリズムを何も見ないでCで書けと言われても出来ないので,もう少しプログラミングを積まなければなと思っています。

微積STII

みんなだいすきびせきぶん
期末試験がかなり簡単だったのですが…前期のきつさはどこに行ってしまったのか…


英語購読演習中級(23組)

B3の前後期でもお世話になる比嘉先生の英語の講義でした。
前々から先輩方から厳しいけど英語力がつくと言われていた講義なので,ビビリながらも比嘉先生のクラスを選択しました。
比嘉先生の講義はスライドと動画を効果的に使い,またバンバン教科書を進めていくのですごい時間が経つのが早かったです。
講義の一巻として行った多読も,今後共続けていきたいという印象です。
確かに講義自体の難易度は高かったような気もしますが,毎講義にあるQuizの予習・復習や教科書の予習・復習
後は当然宿題をするとか,講義中発言をするとかをすればそこまで身構える必要はなかったかなと思います。
逆に毎回あるQuizや課題を頑張って取り組めないと,期末試験のウェイトがそこまで無いので辛い講義かなぁとの感想です。

とりあえず今日はここまで…

玉城絵美先生講演会レポート -Disruptive technologies : inventions beyond imagination-

今日は前々から気になってた www.tibulian.com
を琉Techのあおかびさんこと金城さんに連れてってもらい聞いてきました。

玉城絵美先生は僕が入学する時の琉大のパンフレットで初めて知りました。そこに乗っていたPossessedHand に衝撃を受けてHCIについてググッて情報を入れようとした記憶があります。実はこの辺が最終的に琉大に来た意味に繋がるのですが…それはまぁ追々


今回の講演会は二部構成となっていて,第一部が玉城先生の講演,第二部が沖縄の起業にまつわる人達のパネルディスカッションとなっていました。そういう講演会に来たことがなかったのでおもいっきりカジュアルな普段着(赤色のアロハ)で来たらみんなスーツでビビりました。 パネラーの一人が高校生起業家の仲田さんだった関係で高校生も何人かいました。頭良さそう….
一応起業(Start up)がメインの講演会だったので第二部ではそういう話が多かったです。


第一部では玉城先生の研究の話。HCI。HumanComputerInteractionの研究の歴史から入って行きました。
keyboardとかも広義にはHCIの研究の一部らしい。
HCIでは「人を知る」「情報科学の2つをしなければならない。玉城先生は情報工の卒業なので情報科学は自ずと手に入ったけど「人を知る」方のアプローチは自学で手に入れたのだと思う。

玉城先生は病気の関係で長い時間入院生活を余儀なくされた。そこで出た曰く「欲望」が後の研究の根幹となる
"他の人の経験をもっとスマートに体験したい"というもの。この考え方が出た当時はあまりSNSが発達していなかったけれど,SNSと似ていて「良い体験がある」SNSではふぁぼったり,RTしたりする。つまり良い価値の物はシェアする。シェアすると皆で楽しい思いが出来る。これを実体験で出来ないかと言うのがこの欲望。

言われてみれば海に行きたい人に海の動画とっても妬み買うだけだよね…。Targetと自分のCommunicationができていないとそうなってしまう。

それで開発をしたのがPossessedHand。コンピュータから脳からの電気と同じレベルの電気を送り手を動かすと言うもの。開発には機械学習が使われた。やはり機械学習はアツい分野だな…


玉城先生の言うにはDesire(欲望) -> Imagination(創造) -> technologies&Serviceときたら次は
Social Adaptation(社会的受容)が必要である。社会的受容,つまり社会でどんな感じに使うか?という所が重要。 今回の研究は一人称視点のゲームにはうってつけだよねってことでゲーム業界に主にアタック。しかも開発しやすい様にUnityを使ったソフトも開発したとのこと。

これは玉城先生の

自分自身の分野だけで考えるのはやめよう。Don't Imagine within Only Your Own Field.

という精神に基づいてるとのこと。なるほど…。


ゲーム向けにするにあたってより小型に,Bluetooth通信も可能にしたUnlimitedHandを開発した。 UnlimitedHand これ自身はサンフランシスコに本社があるクラウドファンディングKickStarterで投資を募った所
目標額がサンフランシスコでのプレゼン後開始22hで100%達成,2ヶ月後の〆切では目標の374%を回収下からというから驚き。


ここからは起業(ベンチャー:start up)の話だったのでそこまで…でも玉城先生曰く 

How do we start business

1.Desire
2.Tech&Service
3.SocialAdaptation
4.Collaboration with another Desire
5,Market by many funding system
6.Feedback

がビジネスでも必要だとのこと…ふむふむ。


後はパネルディスカッションと質疑応答タイムでした。 琉大の経営学科の教授もいたりと結構和やかな雰囲気でした。
パネルディスカッションで気になったのは,沖縄の学生はシャイな人が多いとのこと。もう少し積極的に行こうぜとのアドバイスを頂きました。

質疑応答では,あおかびさんの「起業をして得たものと失ったものは?」という問について

「社会からの反響を得ることが出来る。 無くなったこととは…特に無い。」

という回答をいただきました。研究Targetが本当に社会に必要かどうかが反応として貰えるとのこと。それを手軽に見れるのがCloudFundingでもあります。

また,僕から「欲を実際に形にするために大学生の時は何を特にしていたか?」という解いについては

「実際に欲を最終的な形にするために先生とご飯に行ってディスカッションした。例えばK先生とかY先生とか」

との回答をいただきました。先生との距離が近いのが良いところだからそれを活かそうということですね。


起業うんぬんの話はさておき,行ってよかったなという講演会でした。欲を言えばもう少し玉城先生の今までを知りたかったなぁと思います。
今回の講演会で感じたことは根底の欲の大切さです。
玉城先生は実際に欲求を具現化しましたが,底に至るまでは並大抵の努力では行かないと思います。
その努力を苦労とは思えないほど,本当にしたいこと。その「欲」を確かなものにするのが重要かなと思いました。
他に色々と感じましたが,まだまとまらなくモヤモヤしている感じです。まとまったらまたblogにでも載せてみます。

3/2のSCafe報告

今日のSCafeの感想とか

去年から新参者として度々行かせてもらっていますScafeですが
なんとなくブログでまとめてみます。
SCafeに関してはSPI試験の非言語の部分をサポートするのが使命なので
キリ学生の皆さんの就職アシスト的立ち位置の仕事です。

昨日から就職活動が解禁されたので今日のSCafeではスーツ姿の方がいらっしゃいました。 今回対応したのは仕事算。2つの印刷機PとQではPが15分,Qが20分。合わせて仕事をすると何分かかるか的な…

式自体はSimpleですが,考え方をつかむまでが難しいかなぁ…。後は数学に限らずですが
出口からみるか入り口から見るかでアプローチが変わってくるのも難しい所。

もう少しすると人も増えてくると思うのでしっかり教えられるように勉強します。

それとSCafeの利点なんですが院生の先輩やキリ学の進路の職員の方と良く接することができるので
就職に限らず色々な情報を入れられるのもあります。まだ1年次なんでピント来ないとこもありますが,きっかけとしては充分かなぁ…