カテゴリーアーカイブ 未分類

著者:杉浦

テキスト比較ツール difffの紹介

 difff
 gitにあるソースコード
 difffは手軽にweb上で差分によるテキストの比較ができるツールです。difffは文字単位での細かい差分表示をしてくれるため、人間の目で比較するような小さな文を比較するときに特に役に立ちます。web上のやりとりのため、あまり巨大な文字列を比較するとタイムアウトをもらったりするのが玉に瑕です。巨大なのはよくないと書きましたが10万文字同士ぐらいなら時間こそかかりますが、問題なく動きました。また、テキストエリアに文字列を入力する形なのでdifff単独で複数のファイル間の比較を行うのも手間です。
 windowsのコマンドラインにはfcという行単位でファイルを比較する命令があります。他のものにも同じようなものはあるでしょう。手軽さの他にも巨大なファイル、多数のファイル、行単位の比較で十分などなど目的に合わせて使い分けるとよいと思います。

  • この記事いいね! (0)
著者:ym

ご当地ナンバー

私の車は軽自動車ですが、黄色いナンバーではなく、ラグビーワールドカップ版の、白ナンバープレートがついています。
他には、オリンピックバージョンも開始していますね。

他にも続々とご当地ナンバーがでる様ですが、ここ、”浜松” ご当地ナンバーは無いのですね。

観光振興の為にも良い案が出ると良いのだけど、アレだけは止めてもらいたい。

こうなると、ナンバープレートで軽自動車なのか、普通自動車なのかを判断するのは人間では無理?自動車のタイプによって料金の異なる高速道路や、駐車場等、ETCで検知するか、何かしらの自動認識が必要になりそう。

と思ったら、既に 2018年に導入予定とか。
なかなか縛られて大変です。

  • この記事いいね! (2)
著者:杉浦

documentFragmentをIEで使う方法

 DocumentFragmentは小型のdocumentの様なものを定義する関数です。DocumentFragmentで定義されたDOMは画面に反映されません。
DocumentFragment – Web API インターフェイス | MDN
 下の画像の表はDocumentFragmentの対応表です。

 見ての通りInternet Explorerは2018/05/22時点でBasic support、querySelector、querySelectorAllにのみしか対応していません。他にも内部にDocumentFragmentを作成するコンテンツテンプレート要素であるタグにも対応していません。このためgetElementIDのようなdocumentに対してよく使用する関数すらDocumentFragmentにかけようとするとエラーないし予期せぬ動作を招くことがあります。基本サポートの範囲がよくわからなかったので、実装していないのではないかと疑い同等の機能を他の記述で試すぐらいしか解決法がわかりませんでした(W3Cの仕様書なり技術書なりにあるはず)。querySelector、querySelectorAllには対応しているので要素探索は楽なので、対象の要素に対してappendChild等の基本的であろうコードを書くのがコーディングの方針になると思います。
 InternetExplorerはFirefox、chromeなどの他ブラウザよりも律義にレンダリングを頻繁にしてくれます。そのためDOMの追加が大量にあるような場合は一度DocumentFragmentなどの画面に影響しない部分でDOMをまとめて構成、一括してdocumentにつなげる方がとても良いです。以下はtable_masterというIDのついた親を持ち、hoge_tableというIDのついたtable内のtbody_topというIDのついたtbodyを、tbody内のHTMLコードを表す文字列hoge_strで置き換える例です。


var df = document.createDocumentFragment();
df.appendChild(document.getElementById("hoge_table"));
df.querySelector("#tbody_top").innerHTML = "";
var tbd = document.createElement("tbody")
hoge_str = "abc";
tbd.innerHTML = hoge_str;
while(tbd.firstChild){
	df.querySelector("#tbody_top").appendChild(tbd.firstChild);
}
document.getElementById("table_master").appendChild(df.firstChild);
  • この記事いいね! (0)
著者:杉浦

画像処理の初歩

 コンピュータの世界において画像中の色はよくRGBAという数値で表されます。それぞれRed、Green、Blue、Alphaの略でまとまったものを画素と呼ばれます。RGBは色の強さをAlphaは大体の場合で透明度を表します。4項目は8bitで表せる0~255の範囲の整数で表されます。
 この色を表した値の変化によってさまざまな発展した情報を画像から得ることができます。例えば、境界です。色の急激な変化は何かと何かの境を表します。ある範囲のRGBAの微分をとることでその範囲の色の変化の大きさを得ることができ、境界を判断できますまた、近隣の画素の値と近づけることで画像をぼかしたり、ノイズを除去したりできます。近づけるためには中央値だったり、平均値だったりが使えます。逆に近隣の色の値と遠ざけることで各画素を強調することができます。例えば次の式
 加工後の画素=(9*加工前の画素-sum(周囲8マスの各画素))
です。RGBを常に同じ値にした場合にはモノトーンの画像にできます。
 色を値にすることは二次元信号として像をとらえられるということです。このためフーリエ変換を始めとした各種信号処理、ディープラーニングの様な機械学習、ベクトルや差分による圧縮などなどの像のための様々な技術がコンピュータ上で使われています。

  • この記事いいね! (0)
著者:杉浦

正規表現を図示するWebアプリであるRegexperの紹介

 正規表現は便利なものですが巨大なものになると一見してわからなくなります。エスケープコードが必要になるような場合はますます謎の式になります。この記事で紹介するのは正規表現を状態遷移図の様に図示してくれるwebアプリであるRegexperです。Regexperはjavascriptの正規表現に対応しています。

Regexep

 以下の二つの正規表現を使用例に使います。
/^(?:[0-9]|[a-z]|[\._%\+-])+(?:@)(?:[0-9]|[a-z]|[\.-])+(?:\.)[a-z]{2,}$/i
^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$

 灰色のテキストボックスの中に正規表現を入れて”Display”と書かれたボタンをクリックで使用です。
/^(?:[0-9]|[a-z]|[\._%\+-])+(?:@)(?:[0-9]|[a-z]|[\.-])+(?:\.)[a-z]{2,}$/i

^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$

どちらもメールアドレスを表現しようとしている正規表現なのだと視覚から直観的にわかります。

  • この記事いいね! (0)
村上 著者:村上

【Git】よく使うGitコマンドまとめ【初心者向け】

昨日の記事に引き続き、今日もGitについてです。
万一、SourceTreeが固まったときに、コマンド上で基礎的な操作ができるように押さえておきたいコマンドだけをリストアップしました。
とりあえず、ここだけ押さえておけば何とかなる…はず。

なお、今回はこちらの記事を参考にさせていただきました。

Gitコマンド早見表 – Qiita
https://qiita.com/kohga/items/dccf135b0af395f69144

 

Gitコマンド コマンドの内容
git pull リモートから変更を取得する
git branch -a 全てのブランチを確認する
git checkout [ブランチ名] 指定したブランチに切り替える
git branch -b [ブランチ名] ブランチを作成して切り替える

個人的に抑えておきたいコマンドは上記のとおりです。
なお、コミットに関しては、現在開発しているシステムの関係上、変更したファイル全て、で指定するととんでもないことになるので、SourceTree上で行うようにしています。
あとは、どうしても二進も三進もいかなくなった時に、git clean コマンドで、未コミットのファイルを削除したりもしますが、これはそんなに使わないですね。

 

以上、私的抑えておきたいGitコマンドでした。
徐々にでも、コマンドでのGit操作にも慣れていきたいと思います。

  • この記事いいね! (0)
著者:杉浦

ボトルネックの考え方

 ボトルネックは一つのアプリケーションの様な何かのまとまりを改善する時に使用できる考え方です。ボトルネックのおおまかな意味は次の通りです。

物事がスムーズに進行しない場合、遅延の原因は全体から見れば小さな部分が要因となり、他所をいくら向上させても状況改善が認められない場合が多い。このような部分を、ボトルネックという。

(5/14wikipediaより引用)
 例えば一連の処理、A-Zがあり、合計で52秒の実行時間がかかるとします。この一連の処理の実行にかかる内訳を、処理Kにかかる実行時間が30秒、他の処理は合計22秒で実行可能とします。この一連の処理の実行時間を50%短縮する、という課題が出た場合、処理Jの実行時間を短縮しなければ他所をいくら向上させても状況改善が認められません。この場合、処理Jをボトルネックな処理と言います。自分はあまり広い分野を知りませんがプログラミングなどの情報科学、料理などの日常生活の様な場面でボトルネックは往々にして現れます。またボトルネックがある問題の場合、ボトルネックの解決こそが問題の解決そのものとなる時がままあります。問題を分割し単純な小さな複数の問題に分けて考えるという手法(分割統治法)が複雑な問題を解決をしようとする場合に有効とされるのには、物事を考えやすくする他にもボトルネックである部分を見つけるという理由もあります。

  • この記事いいね! (1)
著者:杉浦

ライフゲームの紹介

 ライフゲームは格子状の世界の上に置かれたセル達の模様がルールによって変化していく様を眺めるゲームです。
 お手軽に遊ぶならJohn Conway’s Game of Lifeがおすすめです。ライフゲームでgoogle検索をすると検索画面の背景でライフゲームが始まります。がっつりと遊ぶならGolly Game of Life Home Pageのフリーソフトがおすすめです。また、プログラムの練習として自分で作ってみるのもよいです。定番なのかハッカソンの課題として出されたことが何度かありました。
 ライフゲームの模様の変化(セルの生死)は次のルールに従います。(日本語版wikipediaより引用)
ライフゲームでは初期状態のみでその後の状態が決定される。碁盤のような格子があり、一つの格子はセル(細胞)と呼ばれる。各セルには8つの近傍のセルがある (ムーア近傍) 。各セルには「生」と「死」の2つの状態があり、あるセルの次のステップ(世代)の状態は周囲の8つのセルの今の世代における状態により決定される。

誕生 死んでいるセルに隣接する生きたセルがちょうど3つあれば、次の世代が誕生する。
生存 生きているセルに隣接する生きたセルが2つか3つならば、次の世代でも生存する。
過疎 生きているセルに隣接する生きたセルが1つ以下ならば、過疎により死滅する。
過密 生きているセルに隣接する生きたセルが4つ以上ならば、過密により死滅する。

下に中央のセルにおける次のステップでの生死の例を示す。生きているセルは■、死んでいるセルは□で表す。

 ライフゲームでは面白い、興味深いとされる定番のパターンがいくつもあります。チューリングマシンを再現したパターンもあります。詳しくは調べてみてください。

グライダー(消えずに移動し続けるパターン) ブロック(最小の静的状態の一つ)
  • この記事いいね! (0)
著者:aoki

iPhone「このアクセサリは使用できない可能性があります。」の対処法

このアクセサリは使用できない可能性があります。

家でiPhoneを充電しようとしたところ唐突にこのような表示が現れ充電ができなくなってしまいました。
唐突だったので焦りましたが接触不良などで充電できない事もあったのでいくつか原因を調べてみました。

1:接触不良
よくあるパターンですね。
という事で何度か抜き差しをしてみましたが毎回「このアクセサリは使用できない可能性があります。」と表示されるだけで一向に充電される気配がありません。

2:OS再起動
接触不良ではないとなかったので次に試したのは再起動。
しかしながら複数回再起動しても解消しませんでした。

3:ソフトウェアアップデート
こちらも疑いましたがOSは最新だったので無関係。

4:ケーブルを変える
最後に違うケーブルで試した所充電ができました!

調べていくとケーブル自体が壊れている場合に「このアクセサリは使用できない可能性があります。」と表示される場合があるようです。
特にサードパーティ製のケーブルは壊れやすく、私の使っていたケーブルもサードパーティ製でした。
安く買えるサードパーティも悪くないですがiPhoneを買ってから使い続けても壊れない純正のケーブルやはり凄い。

  • この記事いいね! (1)
著者:ym

df 結果と実際の使用容量

大雨で始まった連休中は、amazon prime に出てきたスティーブジョブズの映画を見てみました。アップル信者じゃないので見てなかったんですけどね。今更ですが見ておきました。もう一つはマクドナルドの映画もね。

今日は FreeBSD です。

ディスク使用量を見る為に df コマンドを使う事がありますが、これがファイルを掴んだままプロセスが死んだ場合など開放されない場合があり、df 結果に反映されないことがあることは知っていましたが。

find と awk を組み合わせてファイル容量のサマリを取って見ると、なんと 400GB 程の差があり発見しました。コレほどの差が有るとは、驚きました。

OS は FreeBSD ですが、関連するプロセスの再起動を全て行っても開放サれないため、やむを得ず OS を再起動して開放しましたが、これはバグなのだろうか。OS可動時間は1年2ヶ月程度です。

他のサーバは同様の症状が無い事から、単体のアプリケーションによる影響と考えられますが、これだけの差が出るとは驚きました。

今後は df だけではなく、全ファイルサイズのサマリを比較する必要がありそうです。

  • この記事いいね! (0)