意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

UnityのInputFieldについて

いろいろあってタイピングソフトっぽい何かを作成しているんですが,その関連でもやもやしまくった部分があったので書いておきます.

hiyotama.hatenablog.com

このページから引用させていただくとですね.

Line Typeは、行の設定ができます〜Single Lineは一行しか認められず、Multiple Lineは複数行書くことができます〜Multiple Line Submitのほうの改行方法はよく分からないのですが、Multiple Line Newlineのほうはreturnキーで改行できました〜 日本語入力はMultiple Line Newlineを選択しなければできないという点です〜ご注意下さい〜

これ,どうやら漢字変換→確定のEnterが原因みたいです. ただ,私が今回開発していた場合は1行でEnter押したらそのままスパッと入力が決まってほしかったので,このSingle Lineを使いたかったのです.で,使ってみるじゃないですか.そしたら,入力自体はできているんだけど,違うところに入力されていたという罠が.

   public void EndEdit(){
        Debug.Log(_inputField.text);
        Debug.Log(_inputField.textComponent.text);
    }

このコードで文字列を入力してみると,こんな感じになります.

f:id:zyusou:20170113021610p:plain

alphabet,要するに半角英字に関しては両方に入力がされています.が,ひらがなとカタカナ,全角文字に関しては,InputField.textComponent.textにしか入力されていません.漢字に関しても同様でした.

f:id:zyusou:20170113025737p:plain

地味に恐ろしいことですが,IME経由で半角英数字を入力した場合は全角文字と同様になってしまうようです.あまり考えられないかもしれませんが,なんか気持ち悪いですね. というわけで,UnityのInputFiledについてでした.ひょっとしたら常にInputField.textComponent.textの方を使ったほうが良いかも知れませんね.

ちなみに,なんでこんなことをする必要があったかというと,カタカナ以外の文字列を入力したことを確認したかったからです.assertion自体はUnityのInspector経由で設定ができるらしいのですが(Content Typeだかなんだか),日本語,というかマルチバイト文字に関しては対応していないようで,故にこんなことをする羽目に.面倒くさいし時間かかったしほんともう疲れた…….

El Capitan上でUnityのC#スクリプトをVSCodeでいじろうとしたら補間が効かなかったとき

時間がないしログをちゃんと保存しておかなかったので,記事としての有用性は低い感じがしますが,一応日本語の情報が見当たらなかったので,書くだけ書いておきます.OSXのバージョンは10.11,El Capitanです.

qiita.com

前提としてはこれをやろうとしているんだけど,なんかC#の補間が効かない.これが効かない原因は恐らく2つの段階があって,一つ目がVSCodeに「C#」という拡張機能を入れることに失敗していて,二つ目がその拡張機能自体がインストールできた後に,拡張機能で使っているOmniSharpがうまく動かない,と言う感じ. とりあえず一つ一つ片付けていきましょう.

拡張機能C#をインストールしてC#スクリプトを開こうとすると,初回に必要なファイルをダウンロードし始めます.コンソールにずらずら色々出て来るのでそれを眺めていてそこで失敗する場合があると思います(これのログを取っておかなかったのでココに載せられなくてごめんなさい…….たしかMSのC# Core DebuggerのDL中にコケた記憶が).

これはDLに使うOpenSSLがインストールされていないのが原因だそうで,こいつをつかえるようにすればOK .この時,brew側でOpenSSLのリンクを作成する必要があるらしいんですが,これデフォルトではセキュリティ的にマズいからわざと作っていないんだそうで.なので,自己責任でお願いします.

brew install openssl
brew link --force openssl

このあと,VSCodeで一度拡張機能をアンインストールして,その後再インストールすると私の環境では動作するようになりました.

次,拡張機能C#が入った後,それがうまく動かない場合.C#スクリプトを開くとずらずらコンソールにログが出てくると思います.その中に以下のような文言があったら恐らく私と同じような状況.

Couldn't locate Mono, TargetFrameworkRootPath not specified

これが出る場合,単純にMonoがMacにインストールされていないので,以下のようにコマンドを打てばOK.

brew install mono 

このあと,VSCodeを立ち上げ直すとうまく動くようになりました.やったー\(^o^)/

以下,参考リンク.

github.com

github.com

github.com

Windows10で「すべてのアプリ」に無いソフトのショートカットをスタート画面にピン留めする方法

なんかタイトルが良くない気がするんだけど,それでもこうとしか書けない気がするからこう書きます.

 

私はWindowsのスタート画面はモダンUIに設定してあって,何かしらアプリを起動する時はとりあえずスタート画面を表示する恰好なのですが,面倒なことにスタート画面にショートカットを登録(Windows10風に言えばピン留め)できるソフトって,スタート画面上(左側にあるすべてのアプリ内)で選択できるソフトだけなんですよね.

なにがいいたいのかというと,エクスプローラからアクセスできるソフトでも,スタートメニューに表示されていない場合は,スタート画面上にピン留め出来ないのです.めんどくさい.

 

で,解決方法としては単純で,スタート画面にピン留めしたいソフトを「すべてのアプリ」上に表示すればいいだけ.具体的にはこうする.

 

  1. (大部分の人はデフォルトでこうなっているであろう)C:\ProgramData\Microsoft\Windows\Start Menu\Programsをエクスプローラで表示
  2.  適当な名前でフォルダを作成(念のため,半角英数字のみの方が良い)
  3. 2で作ったフォルダに登録したいソフトのショートカットをコピペ(ショートカットの作り方がわからない人はこちら 

    https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=2910-7979

  4. スタート画面から,すべてのアプリ → 作成したフォルダ → 登録したいソフトがあるはずなので右クリック → スタート画面にピン留めするを選択

 

こんな感じです.分かってしまえば言うほど難しくない.

面と向かってできなくても進捗報告はするべき

学会参加→学会明け体調不良→クリスマス3連休の流れでメンターさんとの進捗報告ができなくてすごくモヤモヤしていたので,今しがたメンターさんにメールで連絡.とりあえず現状どこに詰んでいてるか,どこが進んだか,どこが次回までに進みそうかの話を箇条書きで送った.

こういう形で進捗報告をしたのははじめてだったので不安だったのだが,すぐに返信がきて簡単な指示を頂いた.申し訳ない限り.

 

どんな作業でも抱えすぎるとだいたい悲惨なことになるのはこれまでの経験でわかっていたけど,そういう意味で進捗報告はやはり大切で.

溜まっている悩みを一部分でも誰かと共有できるのは精神的にも楽になるし,もちろん新しい技術を教えてもらえたり,次にやるべき道が見えてきたりと,研究自体の効率も上がるはずだし.基本的に詰んでいれば詰んでいるほど進捗報告はやるべきなんじゃないかと最近は思っているぐらい.

 そういう意味で,今回の進捗報告できない時間は大変苦しいものだったけど,こうやってメールでやり取りするだけでもだいぶ楽になった.ので,直接会えなくても進捗は報告すべきだと思う.

とは言え,会って話す方が効率的だし(伝えられる・もらえる情報量が違う),研究室のメンバーがふらっと乱入していろいろ教えてくれるし,やっぱり研究室で会ってやるほうがよいのだろうな,とは思う.

 

というブログを,休暇取ってる人が大勢いる研究室で書いているのもなにか寂しい気もする.

内田真礼になるぞ宣言

yatteiki.fm

 

www.uchidamaaya.jp

 

twitter.com

 

この記事は私が大学院で研究成果を出しながら内田真礼になるぞ宣言している記事です.特に他意はありません.詳細気になる人は一番上のポッドキャスト聞いてください.

 

上段はさておき,最近真面目に体調(特に顔面のニキビ)が悪いので,本格的に健康に気を使おうと思います.このブログは最近更新してなかったんですけど,その原因は研究と就活に忙殺されていたせいでして.そんななかでも健康に生きたい.そして進捗を稼ぎたい.そんな今日このごろ.

 

 

 

AvastにファイルのDLをブロックされたお話

なんかもうわけわからんけど出来たから書くだけ書いておきます.けどこれ,Avastやめたほうがいいんじゃ説が出てくる気が…….

 

問題:某サイト(大学のなのでちゃんとしていると思われる)からPDFをダウンロードしたらDLできない.Chromeのヘルプを見る限り,怪しいのはウィルススキャン(Avast)だった.

 

対処法:雑すぎるだろこれ.でもまぁうまく言ったしな.

 

1,まずPDFをブラウザ上で閲覧する.

2,ブラウザ上で開いているPDF(既にローカルのどこかにDLされてるよなこれ)をページごと保存.

3,保存したページを開く.

4,そこからPDFを保存.

 

以上でした.悲惨すぎるだろ.何だよこれ.Avast使うの真面目にやめようかな…….別の使ったほうが良さそうな気が.

Pythonでフルパスからディレクトリを一括で作る

なんかアレがアレでPythonでフルパスから中間ディレクトリごと一気にディレクトリ作りたいなぁってときあると思います.というかありました.

イメージとしては,何らかの親ディレクトリの下にディレクトリとファイルがたくさん存在していて,それぞれのファイルを処理した後,別の親ディレクトリの下に,ディレクトリ構造を保持したままファイルを保存したいみたいな,なんかそういうときに使えると思います.

私が取った方法はこんな感じ,でもこれイケてない.

# ディレクトリのリストをファイルにする
# find [ここに/full/path/] -type d  > dir_list.txt

# このファイルを読み込んで,読み込んで作成する.

import os

dir_list = open("/dict_dir_list.txt", mode="r")

with dir_list:
    for dir_path in dir_list:
        os.mkdir(dir_path.strip())

このあとfindでつくったファイルのリストを読み込んでこねこねすればエラーはいたりしないはず.なんだけど,もっとイケてる方法が.

イケてる方法としては,os.mkdir()ではなく,os.mkdirsをつかう.具体的な使い方としては多分こんな感じ.

import os

file_path = /full/path/hoge/hoga/filename.txt
dir_path = os.path.dirname(file_path)
os.mkdirs(dir_path)

行数自体は増えているけど,こっちだとファイルパスのリストから一発で作れるので,こっちの方が良いと思われる.