CodiadでSJIS-win対応

Web IDECodiadsjisを扱いたかったので、その時の対応履歴。
保存するときはsjisにして、処理するときはutf-8に戻す。
php文字コード判定がうまくいかないので、ワイルドに修正してます。
config.phpに下記を追加。
define("FILE_ENCODE", "SJIS-win");

class.filemanger.phpをいじる。

diff --git a/components/filemanager/class.filemanager.php b/components/filemanager/class.filemanager.php
index 9ab2c95..6e4e30d 100755
--- a/components/filemanager/class.filemanager.php
+++ b/components/filemanager/class.filemanager.php
@@ -239,8 +239,10 @@ class Filemanager extends Common
                 $this->path = WORKSPACE;
             }
             $input = str_replace('"', '', $this->search_string);
+            $input = str_replace("'", '', $input);
             $input = preg_quote($input);
-            $output = shell_exec('find -L ' . $this->path . ' -iregex  ".*' . $this->search_file_type  . '" -type f | xargs grep -i -I -n -R -H "' . $input . '"');
+            $file_type = str_replace("'", '', $this->search_file_type);
+            $output = shell_exec('find -L ' . $this->path . ' -iregex  ".*' . $file_type  . '" -type f | xargs grep -i -I -n -R -H "' . $input . '"');
             $output_arr = explode("\n", $output);
             $return = array();
             foreach ($output_arr as $line) {
@@ -272,18 +274,8 @@ class Filemanager extends Common
     public function open()
     {
         if (is_file($this->path)) {
-            $output = file_get_contents($this->path);
-            
-            if (extension_loaded('mbstring')) {
-                if (!mb_check_encoding($output, 'UTF-8')) {
-                    if (mb_check_encoding($output, 'ISO-8859-1')) {
-                        $output = utf8_encode($output);
-                    } else {
-                        $output = mb_convert_encoding($content, 'UTF-8');
-                    }
-                }
-            }
-        
+            $output = mb_convert_encoding(file_get_contents($this->path), 'UTF-8', FILE_ENCODE);
+           
             $this->status = "success";
             $this->data = '"content":' . json_encode($output);
             $mtime = filemtime($this->path);
@@ -323,7 +315,7 @@ class Filemanager extends Common
                 if ($file = fopen($this->path, 'w')) {
                     // Write content
                     if ($this->content) {
-                        fwrite($file, $this->content);
+                        fwrite($file, mb_convert_encoding($this->content, FILE_ENCODE, 'UTF-8'));
                     }
                     $this->data = '"mtime":'.filemtime($this->path);
                     fclose($file);
@@ -434,8 +426,7 @@ class Filemanager extends Common
                 }
                 if (is_file($this->path)) {
                     $serverMTime = filemtime($this->path);
-                    $fileContents = file_get_contents($this->path);
-    
+                    $fileContents = mb_convert_encoding(file_get_contents($this->path), 'UTF-8', FILE_ENCODE);
                     if ($this->patch && $this->mtime != $serverMTime) {
                         $this->status = "error";
                         $this->message = "Client is out of sync";
@@ -458,8 +449,7 @@ class Filemanager extends Common
                             //DEBUG : file_put_contents($this->path.".orig",$fileContents );
                             //DEBUG : file_put_contents($this->path.".patch", $this->patch);
                         }
-    
-                        if (fwrite($file, $this->content) === false) {
+                        if (fwrite($file, mb_convert_encoding($this->content, FILE_ENCODE,'UTF-8')) === false) {
                             $this->status = "error";
                             $this->message = "could not write to file";
                         } else {

入れてみたプラグイン

Codiad-Bookmarks-master     Codiad-Collaborative-master  Codiad-Outline-master
Codiad-CodeSettings-master  Codiad-FileUse-master        Codiad-ToDo-master 
Codiad-CompletePlus-master

Scala Kansai summit 2017参加報告

Scala Kansai summit 2017
日時:2017年9月9日 10:30-18:00
場所:天満研修センター

参加セッション
■ユーザーデータ基盤を1からScalaでつくった話し
登壇者:垂水 秀明様 現在株式会社エフコードでScalaを使って開発しています。

Scalaシステム開発で破綻しないようにした工夫
ユーザデータ基盤とはエフコード社で開発しているマーケティングサービスで扱う行動ログ(クリックしたなど)のユーザデータを扱う基盤。
開発初期はデータフローの全体図を書いて構成要素を分離していった。



■【事例紹介】Scalaで物流倉庫業務システム作ったよ
登壇者:松下 誠和様
Scalaでの開発、導入実績の事例として、株式会社ティアライン(本人が所属)でスクラッチから開発し保守運用中の物流倉庫業務システムを設計、ソースコードを用いてScala導入の開発メリットなどを解説します。

在庫の管理や納品に合わせて請求書発行するシステム。
元請けもあって作りたいように作った。(SPAとかSlalaやReact.jsなどなど)

メリット:型に守られている
デメリット:コンパイル遅い
フレームワークはPlayframe以外にも色々あるよ。

■​実践ScalaでDDD
登壇者:辻 陽平様 現在は、ScalaAWSを使ってDDDでプロダクト開発をしています。
資料:https://speakerdeck.com/crossroad0201/scala-on-ddd

DDD(ドメイン駆動設計)とは
オブジェクト思考で変更が容易なソフトウェアを開発するための体系化された原則集
ー顧客も開発者も共通の言語で会話など
ドメインの知識をドメインの言葉でコードに落とし込む

ScalaとDDD
ー変数を関数に変えても影響がない
ー関数のネストが書けるのが良い #業務的な名前をつける時に使う範囲が特定できるので便利
ーイミュータブルで代入不可を作る
ー副作用を起こす場所を局所化できる#副作用が発生するのは、永続化するところ
ーimplicitを使ってドメインの関心ごとでないことは隠す#IDを生成するなど
ー(アンチ)変数や関数を略さない

実装スタイル
ーレイヤー構想からドメイン中心の構成を工夫(ドメインがインフラに依存しないようにする)。
 最近はオニオンアーキテクチャ推し。(アプリケーションレイヤもインフラに依存しないようにする)
ーエラーの変換
 モデルやインフラレイヤで生じたエラーをユーザフレンドリなエラーに変換する
 ドメインエラーなどをサービスエラーに変換してユースケースのエラーに丸める的なことをする
 エラー変換処理で処理がごちゃごちゃにならないように簡潔に書く
ーアプリケーションコードが仕様書のように見えることを目指す
ーimplicitクラスで関連付の処理をエンティティの外部で定義できる

DDDには正解がないのでやって試して改良していく。ここまで体系化したのも2年かかった。
マイクロサービスアーキテクチャならサービスを分割して開発できるので学びやすい。

電動義手HACKberryを組み立ててみた。

オープンソースの電動義手HACKberryを今年の夏に組み立てました。
オープンソースなので、私がやったことはHacKBerryのWikiに沿って

  • HACKberryのGithubからデータをダウンロードする
  • 部品を発注する
  • Aruduinoにプログラムの書き込み
  • 部品の組み立て

です。
部品はGithubmにあるBOMを見て自分で発注するか、こちらから注文することができます。
自分はBOMを見てひとつづつ発注しました。

■なぜ電動義手に手を出したか?
今の私は一介のソフトウェアエンジニアです。
手足に不自由を抱えるている訳でも、医療従事者でもハードウェア設計者でもありません。
ただ、これから超高齢化社会が進む中、身体を補助する技術が重要になってきます。
また、身体を補助する技術は高まっており、代表的ものがパラリンピックだと思っています。
最近では、パラリンピックで世界記録が生まれるようになってきました。
義足のジャンパーが世界新記録。五輪に出れるの?

電動義手を組み立ててみようと思ったのは、これから重要になる技術に触れてみたいという好奇心になります。
かといって、ハードウェアを1から設計する技術を持ち合わせていなかったため、
オープンソースであるHACKberryによって私は義手の技術に触れる機会を得ることができました。

■作っていくまでの流れ
細かい作り方はHACKberryのWikiにあるのでざっくりと様子を紹介します。
まず、組み立てる前の部品の写真です。

次に基板の組み立てと配線、プログラムの書き込みを終えると電源を入れて動かすことができます。

最終的に組み立て終わると写真のようになります。

組み立て見て、3Dプリンタの普及によってパーツを作ることやAruduinoや
基板外注サービスで基板を作ることやのハードルが下がっていることを感じました。
設計のスキルがあれば物を手に入れることができる時代と言えます。
ソフトウェアエンジニアの目線でいうと、ハードに手を伸ばすと色々できることが広がりますね。
今回は、設計通りに組み立てるでしたが、次はカスタマイズもしてみたいです。

第3回「NIPS+読み会・関西」@立命館茨木キャンパス

主催:NIPS読み会・関西,立命館大学情報理工学部創発システム研究室
共催:AIR科研費・新学術領域研究「人工知能脳科学の対照と融合」・ 全脳アーキテクチャ若手の会
日時:2017年3月18日(月) 11:00~17:00
場所:立命館大学 大阪茨木キャンパス(OIC)B棟4階 リサーチオフィス研究会室3
Doorkeerper:https://air-osaka.doorkeeper.jp/events/58019
紹介された論文のリンクも↑にあります。

                        • -

チュートリアル 落合幸治 (理化学研究所)
タイトル:Variational Inference: Foundations and Modern Methods

Variational Inferenceは、確率的推論を
効率的(MCMAなどよりも早く)かつ安定的に行うための方法。
確率的推論とは分散まで考慮して予測する推論。
種々の分野に適用可能である。
一例としてトピックモデルへの適用を紹介。

元資料 ------------------
Variational Inference: Foundations and Modern Methods
In Tutorials Session A
David Blei · Shakir Mohamed · Rajesh Ranganath
https://nips.cc/Conferences/2016/Schedule?showEvent=6199

                                              • -


■論文紹介 品川 政太朗(奈良先端科学技術大学院大学)
タイトル:Learning What and Where to Draw
画像の説明文から画像を生成する。
PIPS 2016のoralに採択された論文。
著者は、Scott Reed (ミシガン大学卒、 Deep Mindに所属)
bounding boxやkey pointを明示的に与えることで出力の精度を上げる。


■論文紹介 堀井隆斗(大阪大学)
タイトル:
A Connection Between Generative Adversarial Networks,
Inverse Reinforcement Learning, and Energy-Based Models

GAN、IRL、EBMの3つのモデルを数学的に示し、各分野の
アルゴリズムを提案できるよう示唆を与える。

GANは、正解を判定する機能と誤りを判定する機能2つを使用して、判定精度を上げる
IRLは逆強化学習(振る舞いから報酬関数を推定する)の手法。
EBMはエネルギーベースモデル。
関連研究のGAILもエキスパートの行動からポリシーを学習する。

機械学習・データマイニング勉強会@大阪

大阪近郊で機械学習データマイニングに関連する勉強会です。
日時:2016年9月17日 13:00-18:00
場所:エムオーテックス新大阪ビル

                                          • -

■パソコン上で行われた操作の履歴を使い、価値を出せないかについて考えてみた。
阿知波雄也 さま

操作ログセキュリティの開発をしているが、分析にどう活かそうか?
Q&A.他社の操作ログはなかなかもらえなので自社内のLanScopeCatでデータでいろいろ使えそう。

LanScopeCat:操作ログセキュリティ管理パッケージ
AzureMachineLearning:処理モジュール?の組み合わせで分析フローを定義

                                          • -

■データの秘匿を目的として、モデル学習の前処理について考えてみた。
平田将之 さま

セキュリティを保ったまま分析データをもらうには?
→ハッシュ化がいいのでは
Q&A.N-gramは適用していない

                                          • -

■動き検出のSW実装とHW実装について。
夏谷実 さま

FPGAのはなしでの動き検出の話
動き検出では勾配法、全探索法がある。

                                          • -

■(1)Kobe.Rの紹介
 (2)Rのネットワーク分析ライブラリigraphの紹介
 (3)RapidMinerを使った故障予測分析のデモ
足立 悠 さま

Kobe.Rのスピーカ募集しているよ。
R+igraphで手軽に重要ノードがなにかや次数やらがでるよ。
RapidMinerならドラッグ&ドロップで決定木など100種類の分析が簡単にできるよ(English)

                                          • -

■ふと気づいたら希少なビッグデータを持ってたので、活用を模索してる話。
橋本祥一 さま
6年前にリリースした釣果アプリのデータを使って起業。
6年前は分析する予定はなかったが、すこしづつユーザが増えたくさんのデータが集まった。
データの集め方のひとつとしてまずリリースする。

「技術を制する者」×「データを制する者」→「面白いこと」がおきるかも

                                          • -

■中小企業の現場に、もっとデータ活用を普及したい → やってることの紹介など
中井友昭 さま
髪型の画像からショートやロングなどのカテゴリ判定。
TensorFlowを使ってモデル構築、正当率は8割強までの精度がでました。
AWS GPUで学習回数を増やせればもっとよくなった。
TensorFlowの勉強会や、中小起業向けの分析の研修を開講してます。

                                          • -

■Tensorflowのチュートリアルを通して、ニューラルネットワークを理解しよう!
宮崎超史 さま
特許関係の仕事をしていて、特許画像でGoogle画像検索のようなシステムがないので、
特許の類似検索のシステムを開発中。

ニューラルネットの構造や学習計算の基本を解説。

                                          • -

不適塾:日本からシンギュラリティを起こそう

日本からシンギュラリティを起こそうという講演に参加してきたのでその記録です。
講演者:神戸大学名誉教授 松田卓也教授

◆◆◆◆ 前半 ◆◆◆◆
シンギュラリティ(技術的特異点)とは、人工知能の能力が人類のそれをはるかに超える出来事

超知能の例:
機械的知能
・機会で知能を強化した人

2045年にシンギュラリティが起こると予想される。

シンギュラリティによる経済の変化
労働(人)が知能にシフトする。シンギュラリティに
適用できる(シフトができる)層(国、企業)と
適用できない層の格差が大きく開く。

生産年齢人口が大きく下がっている日本において、
経済を立て直すにはシンギュラリティへの適用が必要。

斉藤元章
スパコン開発、液しん冷却とPezyチップを開発

◆◆◆◆ 後半 ◆◆◆◆
大脳新皮質のマスターアルゴリズム

脳内モデルについて
ー脳は力学系モデラー
 ー観測して力学系モデルを構築
 ー少ない情報からモデルを想起する

マスターアルゴリズムのイメージ

続きを読む

TensorFlow研究会#4

TensorFlow研究会#4に参加したのでその記録です。

2016年1月に発足、機械学習やTensorFlowについて、技術情報や困っていることなどを共有する。
グループワークを通して、機械学習やTensorFlowを触っている。

今日はそのグループワーク第二回目の報告会で、
各グループで設定した課題についての進捗報告でした。
課題は株価予想や画像認識、言語処理でFFNNやRNNを用いて学習をさせる。

報告会の後は入江さんの
wikiのパースで困ったこと
・word2vec
についての発表でした。

機械学習について純粋に技術者として取り組める会なので、
次回も是非参加させていただこうと思います。