投稿

ラベル(プログラミング)が付いた投稿を表示しています

コンピュータープログラムの計算モデル

命令モデル 命令を実行する。 C言語、Java プログラムの命令を実行すると、内部の状態が変化し(変化させる)、最後の状態が計算結果となる。 計算途中の状態を意識してプログラミングする必要があるが、把握しづらい。状態は変化していくから。 コンピューターのハードウェアの構造に近い計算モデルなので、効率がよい。 関数モデル 関数を呼び出して値を得る。 Lisp、Haskell 命令モデルの言語でも関数式がサポートされるようになった。Javaのλ(ラムダ)式など。 関数を値として扱うことにより、処理を部品化(モジュール化)する。 値を変数にバインド(束縛)し、変化させない。代入や破壊的メソッドの排除。 代入を排除することで、モジュール性が高まり、テストが容易になり、コードの正しさが証明できる。 参照透過性を確保する。数学的な等式が成立する。 A === Aはアドレス参照でなく値を評価する。 関数型プログラミングはメモリやコンパイルの効率的管理が難しかった。 論理モデル 証明を得る。 Prolog 普及している言語は少ない。利用が進んでない。 ポーランド記法を逆ポーランド記法 ポーランド記法 「1 + 2」 ⇒ 3 (1加えることの2ならば3、1プラス2は3) 逆ポーランド記法 「1 2 +」 ⇒ 3 (1に2を足すならば3) 述語関数 ブール値(true/false)を返す関数のこと。 条件を満たせば「真(true)」そうでなければ「偽(false)」を返す。 代数的データ構造 複数の選択肢から一つだけ選択するデータ構造 例、星 恒星 惑星 衛星

ビックデータ関連技術発表年(Google)

論文発表 2003、Google GFS 2004、Google MapReduce 2006、Google Bigtable 2010、Google Percolator, Dremel(BigQuery) ソフトウェア発表 2007、Google Hadoop First Release 2008、Google HBase First Release 2010、Google Caffeine 2011、Twitter Storm 2012、Dremel Spanner Colossus 2013、Amazon Kinesis 2013、Drill Google検索システム Crawling MapRedece GFS(Google File System) MapRedeceではデータ処理がバッチ処理で行われるため、検索結果への反映までに時間がかかるという問題があった。 MapReduceの実装がHadoop、バッチ処理、Javaライブラリ(HiveQL in Hadoopなど) Dremel(BigQuery)、会話型クエリー、SQLライクの言語、入れ子構造(nested)の扱いが可能、カラム指向 Caffeine Colossus アプリケーションプラットフォーム App Engine Bigtable(NOSQL) BigQuery オープンソース化 Apache Hadoop ← MapRedece Apache HDFS ← GFS Apache HBase ← Bigtable Apache Drill ← Dremel 参考文献 「Google BigQueryではじめる 自前 ビックデータ処理入門」、清野克行、秀和システム、2014

正規表現

特殊文字、量指定子、オプション 特殊文字 (正規表現 - JScript.NET) https://msdn.microsoft.com/ja-jp/library/cc392180.aspx 正規表現での量指定子 https://msdn.microsoft.com/ja-jp/library/3206d374(v=vs.110).aspx 正規表現のオプション https://msdn.microsoft.com/ja-jp/library/yd1hzczs(v=vs.110).aspx 正規表現 英語のWikipediaの方が解説が詳しく、参照先リンクも多い。 Regular expression - Wikipedia https://en.wikipedia.org/wiki/Regular_expression 正規表現 - Wikipedia https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE Comparison of regular expression engines - Wikipedia https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines Perl PCRE - Perl Compatible Regular Expressions http://www.pcre.org/ perlre - perldoc.perl.org http://perldoc.perl.org/perlre.html Java Pattern (Java Platform SE 6) https://docs.oracle.com/javase/jp/6/api/java/util/regex/Pattern.html Ruby 正規表現 (Ruby 2.4.0) https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html .NET 正規表現言語 - クイック リファレンス https://msdn.microsoft.com/ja-JP/library/az24scfc(v=v...

Javascript環境、Node.js、nvmインストール

nvmインストール curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash 参考(上記「i nstall.sh」のダウンロード元) creationix/nvm: Node Version Manager - Simple bash script to manage multiple active node.js versions < https://github.com/creationix/nvm > https://github.com/creationix/nvm/blob/master/install.sh nvm/README.markdown at master · creationix/nvm · GitHub https://github.com/creationix/nvm/blob/master/README.markdown nvmインストール済みの場合、バージョンアップ node、nvmのバージョンを確認 $ node -v v0.11.11 $ nvm --version 0.31.7 nvmのバージョンアップ $ sudo git pull origin master $ nvm ls-remote Node.js インストール、バージョンアップ $ node -v v0.11.11 $ nvm install v0.12.18 Node.js バージョン確認、実行バージョン変更 $ nvm use node $ nvm run node --version $ node -v v7.7.2 nodeコマンドのパス確認 $ which node /home/user/.nvm/versions/node/v7.7.2/bin/node $ cd .nvm インストールされているnodeのバージョン(パス確認) $ ls -l versions/node 合計 12 drwxr-xr-x 7 user group 4096  3月 11 18:50 v0.12.18 ...

2006/07/19 サンプルスクリプト

Webレスポンス測定 ruby -rsocket -e 'puts ARGV.map{|url| t=Time::now; s=TCPSocket.new("proxy.mitsui.co.jp", 8090); s.puts "GET #{url} HTTP/1.0\r\n\r\n"; s.read; Time::now-t}.join(" ")'  http://www.sun.com http://www.yahoo.co.jp   http://www.google.com コーディング例 #!/bin/bash COUNTER=0 while [ $COUNTER -lt 2016 ]; do echo `date` " " `ruby -rsocket -e 'puts ARGV.map{|url| t=Time::now; s=TCPSocket.new("proxy.mitsui.co.jp", 8090); s.puts "GET #{url} HTTP/1.0\r\n\r\n"; s.read; Time::now-t}.join(" ")' http://www.sun.com http://www.yahoo.co.jp http://www.google.com` | tee -a out2.txt echo `date` " " The counter is $COUNTER /2016. sleep 895 # tail -1 out2.txt let COUNTER=COUNTER+1 sleep 895 done 出力例 Mon Aug 23 09:15:09 2004 1.891 1.718 0.865 Mon Aug 23 09:30:16 2004 1.304 0.949 0.514 Mon Aug 23 09:45:20 2004 1.85 1.724 2.698 Mon Aug 23 10:00:37 2004 2.91 5.306 1.227 Mon Aug 23...

2012/05/02 command-2005

command-2005 スペースを含むディレクトリやファイルを cp コマンドでコピー bash の for ループだとスペースを含むファイルリスト、例えば「Ahmad Jamal」であれば、「Ahmad」と「Jamal」に分かれてしまって上手く行かない。※for ループの例、for i in `cat list` ;do echo $i;done そこで、ls コマンドで取得したファイルリストを、下記のような while read を使ったシェルスクリプトに読み込ませ、バッチシェルを出力する。 まず、ファイル名のリストを作成 ls /media/disk-1/MyMusic/Music > copy-from-list バッチ作成のためのシェルスクリプトを作成(このスクリプトのファイル名を batch-create.sh とする。 vi batch-create.sh ================================= while read LINE; do echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/ done ================================= ファイルリストを読み込ませてバッチを作成する。 sh batch-create.sh < copy-from-list > copy-batch.sh バッチを実行する。 sh copy-batch.sh タイムスタンプを加えたスクリプトの例 while read LINE; do echo echo \`date\` copy \"/media/disk-1/MyMusic/Music/$LINE\" echo cp -r \"/media/disk-1/MyMusic/Music/$LINE\" /media/disk-2/MyMusic/Music/ echo date done 仮想マシンイメージファイルの実サイズ ls -ls [file...] ls -lsh [file....