2018年12月16日日曜日

共有からスマホにワンクリックでダウンロードするアプリをつくってみた

ワンクリックで、共有フォルダからファイルをスマホにダウンロードできたら便利かと思い、アプリを試しにつくってみた。他のOSなら、バッチファイルやシェルでファイル操作が簡単にできるが、Androidはアプリ(java)を使うことになるようです。

AndroidManifest.xmlに
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ADD_SYSTEM_SERVICE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

build.gradleに
compile files('libs/jcifs-1.3.19.jar')
を追加

activity_main.xmlの使い方がまだよくわかっておらず手間取った
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
など、レイアウトの設定を適宜行う

Logは、Android Studioを使った場合 logcatというタブで表示できるようである。
Bugfixでは、ログにだいぶ助けられた。

「名もないSEの備忘録」サイトのソースを参考に、共有からローカルにファイルを移動する機能をつくってみました。最近のAndroidのバージョンだと非同期に書き換えるとうまくいくようでした。

MainActivity.java
  activity_main.xml
 AccessTask.java
 

2018年10月28日日曜日

DVDの作成

 以前は、ビデオカメラで撮影した動画でDVDを作成することは、それほど難しいことではなかったのだけれど、最近は、なかなかうまくいかない。ビデオカメラに標準でついているソフトがOSのアップデート?のせいかうまく動かなかったりするのかもしれない。あるいは、デバイスソフトの不具合かもしれないし、対応するソフトのバグか、よくわからない。
 とりあえず、ffmpegで、mtsをmpeg2に変換して、WinX DVD authorというフリーソフトでVOBファイルを作成し、それから同じソフトでDVDに焼き付けている。
ffmpegでの変換コマンドは
D:\VIDEO\ffmpeg -i D:\VIDEO\MTSTOMPG\00261.mts -vcodec copy -acodec copy -ss 00:00:07 -to 00:06:10 D:\VIDEO\MTSTOMPG\tmp.mts
D:\VIDEO\ffmpeg -y -i D:\VIDEO\MTSTOMPG\tmp.mts -b 8000k -f dvd D:\VIDEO\MTSTOMPG\Kaikai.mpg
というような感じでやっている。試してはいないが、時間指定の切り出しと変換を分けているが、一緒に一行にすることもできるかもしれない。-b 8000Kというのがキモのようだ。これがないと、画質が劣化して見づらい。ディフォルトではかなり、画質が悪くなってしまう。DVDには、ビットレートの上限があると思うので、8000Kぐらいに抑えるのが無難と思われる。

2018年10月8日月曜日

Cloud9でDjango

DjangoもC9で動かしてみた。以下のサイトが参考なりました。
https://qiita.com/rmiyamoto/items/4143c6081fb664208e06
クラウドは、環境を手軽に試すことができるのが便利だと思う。
あとはコーディングにのみ、集中すればいいわけなので。

cloud9でLaravel

phpのフレームワーク laravelをc9で動かしてみた
こちらのサイトが参考になりました
https://qiita.com/shin1kt/items/118e8007e6bd392f26a9

play scalaをvagrantで動かしてみる(覚書 2018.10現在)

久々にplayを動かしてみると、だいぶ環境が変わっていてとまどった。古いネットの情報では、うまく動かせないようだ。覚書として、手順をまとめてみた。

1 Ubuntuをvagrantで利用してみる
 vagrant init bento/ubuntu-18.04
2 Vagrantfileでいくつか編集
①まず、ポート番号9000が使えるように以下の行を追加
  config.vm.network :forwarded_port, host: 9000, guest: 9000
②メモリを標準の2倍にしてみた。
 config.vm.provider "virtualbox" do |vb|
     vb.memory = "2048"
  end
③ipアドレスを指定してHostOnlyモードを有効にした。
 config.vm.network "private_network", ip: "192.168.33.10"
もし、テスト環境でなく、ネットワーク上の他のPCからアクセスするような
本番環境なら ブリッジモードの必要があり たぶん
config.vm.network "public_network"
とするのかもしれない。

3 仮想OSを立ち上げる
 vagrant up 
4 sshでアクセスする
 vagrant ssh
5  ここから先は以下のリンクがとても参考になりました。sbtのインストールは難しかったのですが、このサイトのおかげで解決しました。
 $ sudo add-apt-repository ppa:webupd8team/java 
 $ sudo apt update
 $ sudo apt install oracle-java8-installer
 $ sudo apt install oracle-java8-set-default
 $ echo "export PATH=/usr/local/anaconda2/bin:$PATH" >> /etc/bash.bashrc
$ echo "export JAVA_HOME=/usr/lib/jvm/java-8-oracle/" >> /etc/bash.bashrc
$ echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/bash.bashrc
$ sudo apt-get remove scala-library scala
$ sudo wget www.scala-lang.org/files/archive/scala-2.11.8.deb
$ sudo dpkg -i scala-2.11.8.deb
$ echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
$ sudo apt-get update
$ sudo apt-get install sbt

6 適当なディレクトリを作りその中でsbt newを行う。sbt new playframework/play-scala-seed.g8

7 ここで、作成されたディレクトリ(上記6で名前を指定できる)に入る(←ここがうっかり逃しやすい!!)
そして、sbtを実行し、runを実行
 しかし、このままでは、外からアクセスできません。
を参考にして
8 ここで、フィルターの設定を変える必要がある。
# conf/application.conf
play.filters.hosts {
    allowed = ["."]
  }
とすればOkである。セキュリティの制限に応じて、この設定は変える必要あると思いますが。

※ネット上のあちこちの情報をかき集めることで なんとか、新しい環境でPlay scalaを動かすことができた。書籍にも、サイトにも、これらのことをまとめてあるところは、まだ少ない?ように思う。




2018年9月30日日曜日

playをscalaで動かしてみる

久しぶりに、playを動かしてみた。以前はactivatorで、動かしていたが、今はダウンロードできないようだ。いろいろ調べてみると、sbtで動かすようになっている。
以下のリンクを参考にしながら、やってみたら、なんとかコンパイルできた。
https://www.supinf.co.jp/tech/2015/06/29/get-started-play2-without-activator/
Webアプリの作成環境は、変化が激しいので、ついていくのが大変なようだ。
Webのフレームワークは、他にもSpringやら、Djangoやら、Railsやら、どれを選ぶか迷いそうだ。

2018年8月10日金曜日

PAIZAのスキルチェック問題 S003:嘘つき探し をやってみた


けっこう難問のようで、所定時間内にはできませんでしたが、試行錯誤のうえ、なんとかできました。C#でやってみました。どんなアルゴリズムでもそうですが、特別な条件を考慮するのが大変なようです。

2018年7月14日土曜日

Android Studioを使ってみた

 以前に比べ、Androidアプリの開発もだいぶやりやすくなっている。Android StudioというIDEが使いやすい。SDKのバージョンに配慮が必要なようだが、けっこう簡単にスマホにインストールできるようだ。
 英文、和訳、英語音声を同時に表示、再生していくアプリを作ってみた。
MainActivity.java

activity_main.xml

2018年6月22日金曜日

rsyncでバックアップ

以前は、WindowsのBunbackupを使いバックアップしていたが、端末PCを専有してしまうので、Linuxサーバー間で、rsyncを使ってみた。
 rsyncはsshの公開鍵設定すれば、パスワードいらずで、cronでうまく動作させられる。
たとえば
rsync -avzP /home/user/data user@バックアップ先Ipアドレス:/home/user
のようにすれば、いいようだ。-Pオプションは圧縮通信

上記コマンドをスクリプトとしておき、cronで定時で起動することを検討している。

2018年6月9日土曜日

cron.hourlyについて

Linuxでタイマーでよく使われるコマンドcronについて
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

/etc/crontab 毎時、毎日、毎月、毎週の自動タスクのメイン設定ファイル

毎時実行される自動タスクであれば
/etc/cron.hourly 中に置いた実行ファイルがすべて、実行されます。

2018年5月8日火曜日

詳解ディープラーニング

 Tensorflow・Kerasによる時系列データ処理について詳しい本ということで、興味を持ったので、読んでみた。
 偏微分、全微分など基本的な数学の説明が初めのほうに出ている。関連した内容をネットでわかりやすい説明はないか、チェックしながら、読み進めていくといいようだ。
 後半のLSTMのあたりから難しくなってくる。P234の(5.41)式の変形がいまいちわからない。
  f(t)が忘却ゲートの値とし、ef(t):=∂E/∂f(t)           (5.39)
                  =∂E/∂c(t)⦿∂c(t)/∂f(t)    (5.40)
                  =ec(t)⦿c(t-1)        (5.41)

   c(t)=i(t)⦿a(t)+f(t)⦿c(t-1)   (5.42)

注:⦿は要素積を表す

   (5.42)のc(t)をf(t)で微分すれば、確かにc(t-1)になるのだけど、、、
   そういう理解でいいのだろうか?

2018年5月6日日曜日

Rails5をWindowsに入れてみた

Railsは、サーバー構築が難しいといわれてます。とくにWindowsは、いまだに、いろいろひっかかるところがあるようです。
https://qiita.com/seizot/items/10c21c329c0006c2c792
を参考にインストールしてみる。上記サイトでは、RubyとDevkitを別々にインストールするように説明していますが、最新のページでは、両方まとめてダウンロードできるようです。

https://rubyinstaller.org/downloads/からRuby+Devkit 2.4.4-1 (x64) をダウンロードして、インストールしてみました。最新版のRuby+Devkit 2.5.1-1 (x64) は、Rubyのバージョンの不一致のためか、うまくサーバが起動しませんでした。

bundlerとrailsをインストールします。
gem install bundler
(プロキシ経由ならgem install bundler -p http://<Proxyのアドレス>:ポート番号)
gem install rails
(プロキシ経由ならgem install rails -p http://<Proxyのアドレス>:ポート番号)

https://nodejs.org/en/download/でNode.jsをダウンロードしインストール

rails new sampleでsampleサイトを作成
cd sample
rails s
これで、初期画面がたちあがる
と思ったが、pgの設定がされていないというエラーが表示される。
どうやら、新しいバージョンはsqlite3でなく、postgresqlのようだ。
(herokuがpostgresqlなので、そのほうがなにかとありがたいが)
いったん、
Ctrl+Cで停止する。
そこで GEMFILEを
#gem 'sqlite3'
gem 'pg'
と書き換えて
bundle install
再度、rails sでうまくいった。


2018年5月3日木曜日

イグニッションコイル交換DIY

 スイフト10万kmを超え、故障が目立ってきた。昨年は、下回り(ハブベアリング)やエアコンの修理にだいぶお金がかかった。
 それに加えて、昨年秋、加速時、カクカクするようになり、アマゾンから格安イグニッションコイルを購入し、修理店で交換してもらう。しかし、半年もしないうちに、また故障する。安物買いの銭失いというパターン。たまたま、前回の交換時、まだ使えそうだと言われた部品をディーラーにもっていって、交換して直った。と思ったが、やはり調子が悪い。
 ネットで調べてみると、DIYでも交換できそうだったので、ナットを回すための工具セット(ラチェット)を購入し、自分でやってみた。また、不良部品は抵抗値を比較するといいことが、ネット情報でわかる。実際、故障したコイルは抵抗値が新品より少し大きい値になっていた。今回は、少し高めの部品にしてみた。今のところ、調子はいいようだ。

2018年4月30日月曜日

GPUの使い方?

deep-LearningでGPUを使えないか試してみたが、いまいちよくわからない。
 win10で試す
   NVIDIAドライバをインストール
 CUDA Toolkit 9.0をインストール(9.1ではうまくいかない)
 cuDNN v7.0.5 for CUDA 9.0をインストール(CUDAのバージョンに合わせる必要あり)
   Visual Studio 2015 の Visual C++ 再頒布可能パッケージをインストール
 Anacondaをインストール

 と、ここまではとくに問題ないが、このあとの 「tensorflow-gpuをインストール」がうまくいかない。

conda update -n base conda 
conda config --set safety_checks disabled のあと
 conda create -n 任意の名前 python=3.5  (3.6だとうまくいかない)


 activate 名前
 conda install -n 名前 tensorflow-gpu
としてみた

 でも、あまり速くなってない。ボードが古いためだった。
CUDA をサポートし、Compute Capability(CC) という数値が3以上必要らしい。
とくに、tensorflowはCCが少ないと認識しないことがわかる。
補足>
conda info -eで 情報確認できます。
conda remove -n 名前 --all  で削除できます。

そして==>後日、注文していた新しいGPU(GTX780)が届く。これはCC値に問題はない。
しかし、GPUが動作しない。どうやら、PCIexpress用の補助電源がないとだめならしい。
これまで使ってきた500W電源では、コネクタもなく、容量的にもきついので、新たに600Wの電源(KRPW-N600W)を購入。こちらの電源にはちゃんと補助電源用のコネクタがついていた。

そして==>5/5 anacondaでPython3.6でpip install tensorflow-gpuで動かすがうまくいかない。Python3.5でやってみたら、問題なく動作する。計算スピードもかなり速くなっていた。

2018年4月8日日曜日

算数&ラズパイから始めるディープラーニング

ディープラーニングの本を読んで見る。「算数&ラズパイから始めるディープラーニング」という本がわかりやすい。本に沿って、操作していけばほとんど、ひっかかるところはなく、進められる。

若干、注意、補足が必要なところとして
1 P33 ChainerRLのインストールがうまくいかない。
ネットで検索すると sudo apt-get install python2.7-dev が必要なよう。
バージョンの2.7は、環境に合わせる必要がある。

2 P113のtest.txtの意味は
  000
  010
  100
  111
となっていますが、1列目AND2列目の結果が3列目を表すようです。

3 P134 リスト1の
 sudo pip install scikit-imageで
エラーが発生した。試しに
sudo pip install "tornado<2"
としてから、再度試したらうまくいった。


2018年2月23日金曜日

railsについて

https://railstutorial.jp/chapters/basic_login?version=5.1#cha-8_footnote-8
上記リンクで、Railsを勉強してみる。とても丁寧で細かいところまで
説明してくれているので、わかりやすい。

ただ、Rails5.1だと、8章で途中、動かないところがあった。
Jqueryがなくなっていたためのようで、GEMFILEに追加してbundle installでOkだった。

2018年2月7日水曜日

久しぶりにCloud9とHerokuをGitHub経由で使ってみる

Railsなど構築が大変なので、とりあえずcloud9を使って、Herokuにアップしてみる。
https://qiita.com/HideakiSaito/items/5be1a45870a4c3d1a3c7
上記のリンクを参考にさせて頂く
ただ、若干手直しも必要だった。Postgresqlにすると、You should use PG::Connection, PG::Result, and PG::Error なるエラーが表示される。
解決方法は
https://bokunonikki.net/post/rails_pg/
を参考にさせていただく。

Railsの入門としては
https://openbook4.me/projects/92
が、初心者向けにわかりやすいようです。