ブログ移設しました。

bloggerから記事を移設しました。


HUGOで記事を書いてみると思いのほか書きやすかったので移動。

月曜日, 5月 05, 2014

MacでChromeが暴走

Js周りの解析で結構便利とか、結構軽いのが好きとか、Shift+ホイールで横移動できたりで、デフォルトブラウザをWindows,Macともに設定しています。

そこで、最近Macの電池が切れるのが早いし、処理をおこなっていないときにも、ファンが回っているなぁ。。。夏だからかな?とかそんなことを考えていました。

ActivityMonitorで確認してみると、ChromeがCPU usage ダントツの120%。
タブしか開いていないのにこれはありえないでしょう。

Chromeもエクステンションが増えてきたので、誰かが暴走しているのかなー?と
そうなった時は、右のメニューボタン?=>ツール=>タスクマネージャを開きましょう。

拡張機能が最初怪しいということで、すべてをOFFにしても解決しなかったので、途方に暮れていました。

私の場合今回は、オフラインgmailが原因でした。(あれって拡張機能だけど、どうもツール=>拡張機能には出てこないみたい)

なんで、ホームにてオフラインGmailを削除しますた。(どのみちあまり使っていないですし)


てなわけで、暑い暑いなかファンがえらい元気に回っている時が多いですけど、そこまで処理をおこなっていないときにそうなる場合は、Windowsならtaskmgr、MacならActivityMonitorみてみてねー。。。ってことで。

tizenのdata contorolsを読み解いてみる。

tizenを使う用事があって、その中で利用するData Contorolsについて読んでみる。

忘れっぽいので書いたあとにドキュメントをなくす人だからここに書く。

追記:
DataContorlって何するの?まとめ。
アプリ間でデータを共有するときにAppManager?AppContorlの一緒に載せてデータを送るとか、そのリスナーだけで解決できない小難しい問題に対しての解決策を提供するもの。
SQL型とキーバリュー型があるから好きなものを使うよろし、(一つのパッケージに複数のプロバイダーを入れても問題はないからそれでも良いと思う。 SQL型の場合今見ている限り、DBを切り替えるみたいなものはないですし)

Datacontrolを使うためには、
サービスアプリ(DataControlProviderとなるもの)
クライアント
でやりますので、1対多で使えるけど、実際これってデータの完全性とかトランザクションの概念はあるのかな。。。 その辺がまだわからない状態で時間切れになりました。

チラ裏でやれ。ってツッコミは正解でモチベーションのために記事書いた。公開したいものがあるから記事書いたわけではない( ー`дー´)キリッ

BGMはこんな感じの意味が読み取りづらい曲を流していると作業に集中できることを発見。


日本語訳を公開している人もいなかったので、読みながら書いてミスを発見するために文章を起こした。
でもね、訳も間違っている。話の大筋は自分が追える(書いたあとに思ったのは、これだったら本文読んだほうが1.5倍早く追える)このエントリーを更新していくきりょくがなかったりするんで
もし、コメントにノイズ載せるなハゲ的な苦情が殺到したらページを閉じます。

https://developer.tizen.org/help/index.jsp?topic=%2Forg.tizen.native.appprogramming%2Fhtml%2Fguide%2Fapp%2Fdata_controls.htm

上記のページから開始。

データコントロール

データコントロールは標準的なアプリケーション間のデータのやり取りを行う機構です。
すべてのアプリケーションは、データの共有を他のアプリケーションに対してリクエストすることができます。しかし、サービスは自分のデータを提供することしか出来ません。

2つのタイプのデータコントロールがあります。
SqlDataContorol
MapDataControl

ここで脱線します(具志個人的に使って覚えるほうが早い人はこっちのほうがいい気がしたので)--------------
チュートリアルを見たほうが早いという人は
SqlDataControl
https://developer.tizen.org/help/index.jsp?topic=%2Forg.tizen.native.appprogramming%2Fhtml%2Ftutorials%2Fapp_tutorial%2Ftask_dictionarydatacontrolprovider_sql.htm

MapDataCOntrol
https://developer.tizen.org/help/index.jsp?topic=%2Forg.tizen.native.appprogramming%2Fhtml%2Ftutorials%2Fapp_tutorial%2Ftask_dictionarydatacontrol_map.htm

とかをみればよい。
------------------

続き行きます。
SqlDataControl
このクラスは、他のサービスアプリケーションにより、特定のデータをSQL型のデータコントロールを使用することができるようにするものです。
また、あなたのサービスアプリケーションからSQLデータ管理プロバイダーを定義することができます。

MapDataControl
このクラスは、他のサービスアプリケーションからエクスポートされたデータに対してキーバリュー型のデータアクセスを可能にするクラスです。またサービスアプリケーションかからキーバリュー型データ管理プロバイダーを定義することができます。

(exportの意味が結構危ないですね。 また、データコントロールは、データ管理と書くべき?CRUDするだけじゃないの?)

データコントロールは、共有データにアクセスし、結果を戻すための操作を供給することができます。

データコントロールを使ってみる

sqldatacontrol または mapdatacontrolのインスタンスをappmanagerクラスから取得します。
appmanagerクラスは、要求されたデータコントロールを提供し、あなたのアプリケーションにデータコントロールを返すサービスアプリケーションを見つけます。

データコントロールはプロバイダーIDを第一情報として使います。
これは、データコントロールプロバイダーで定義します。
例えば、static const Tizen::Base::String DATACONTROL_PROVIDER_EXAMPLE = L"http://tizen.org/datacontrol/provider/exmaple"
(あれ?この書式operationidに似てね?)

sqldatacontorl
appmanager::getsqldatacontorlN メソッドを使用してプロバイダーIDを指定する場合、一意に特定のSQLデータコントロールを取得出来ます。データコントロール取得後、(解決 後)sqldatacontorlのselect(),insert(),update(),deleteなどを呼び出せます。
sqldatacontorlインスタンスの実行結果はリスナーを返します。(この時に返すのは、OnSqlDataControlSelectResponseReceived(),
OnSqlDataContorlUpdateResponseReceived(),
OnSqlDataContorlDeleteResponseReceived(),
OnSqlDataContorlInsertResponseReceived(),
はTizen::App::ISqlDatacontorolResponseListenerのインターフェースです。
サービスアプリケーションが終了した時、そのsqldatacontrol操作を終了した応答リスナーが呼び出されます。(上の4つね。)

(やばい、訳があやしすぎるw 楽しくなってきた。)

MapDataControl
GetMapDataContorolN() を使用してプロバイダIDを指定する場合、ユニークな特定のマップタイプのデータコントロールを得ることができます。データコントロールを解決したあと、 GetValue, AddValue SetValue removeValueのようなMapDataContorlクラスのメソッドをよびだします。
MapDataContorlインスタンスの実行結果は以下のメソッドから取得出来ます。
OnMapDataControlAddValueResponseReceived(), OnMapDataControlSetValueResponseReceived(), OnMapDataControlRemoveValueResponseReceived()
はTizen::App::IMapDataControlResponseListenernaのインターフェースです。
上記の応答リスナーはサービスアプリケーションがマップデータコントロールの操作を行ったあと呼び出されます。

データコントロールのライフサイクル(ここは図を見たほうがいい)
順番を書いておくと

  1. データコントロールを取得(C++App)
  2. データコントロールのプロバイダーIDを解決、アクセス権限をチェックする。(AppManager)
  3. データコントロール応答リスナーをセット(C++APP)
  4. データコントロールメソッドを使用(C++APP)
  5. データコントロールを起動または、データコントロールのプロバイダーに要求(これはきっと、provider側(datacontorolを実装したアプリ側))
  6. 結果が非同期にデータコントロール応答リスナーに対して送られる。
  7. 終了
順番は、そのプロバイダー側で制御してあげないといけないのか。

データコントロールを用いた開発

でサービスから他のアプリケーションにデータを出力する。(やっぱり、exportの訳が分かんね)
データベースファイルを提供する(データベースを提供という解釈で)サービスアプリは、ISqlDataControlProviderEventListenerインタフェースを実装し、
Tizen::App::DataControlProviderManager のSetSqlDataControlProviderEventListener()を使用し、プロバイダーのリスナーとして登録します。
サービスアプリケションは、SQL型データコントロールリクエストをプロバイダーリスナーからデータコントールリクエストを
OnSqlDataControlSelectRequestReceived(),
OnSqlDataControlInsertRequestReceived(), OnSqlDataControlUpdateRequestReceived(), OnSqlDataControlDeleteRequestReceived() 
ISqlDataControlProviderEventListenerインターフェースから受け取るよ。。。
(手が疲れてきたよ)

んで、キーバリュー型の〜〜、、、、(ここも大体が同じ説明、何を実装して、どれからリクエストをとるかというお話)

終了

このへんを頭に入れて、各チュートリアルを見てみましょう。


SqlDataControl
https://developer.tizen.org/help/index.jsp?topic=%2Forg.tizen.native.appprogramming%2Fhtml%2Ftutorials%2Fapp_tutorial%2Ftask_dictionarydatacontrolprovider_sql.htm

MapDataControl
https://developer.tizen.org/help/index.jsp?topic=%2Forg.tizen.native.appprogramming%2Fhtml%2Ftutorials%2Fapp_tutorial%2Ftask_dictionarydatacontrolprovider_sql.htm

両方共、インタフェースの用意からインスタンスの取得、データの読み取り追加まで流行っています。更新と削除については、コードは用意していないけど、きっと同じように〜ってなっていますね。

使い方はわかったけど、んー。 RDBMSないし、キーバリューのサーバー(サービスアプリケーション)に対して、クライアントからどうすれば利用できるか。を書いたものでしたねー。。。。 ちょっと、これ制御めんどくさそうだな。

さ て、読み解いた。 Tizenの中だけでデータをやり取りして(MessagePort)、そして、データを書込して(DataControl)で面白い 題材ないかなー。。。。 私の頭ではぐちゃぐちゃになってきっともうすでに存在しないデータに対して更新とかやりそうで。

眠たいので、風呂入って寝ますかね。

火曜日, 4月 29, 2014

PHP 5.5 & cakephp(on composer)

Jenkinsをインストールした際にfinallyを使っているものがうごかねぇ!という事が判明したので、macとcentosのphpのバージョンをアップ!
ついでにcomposerに寄り道した時のメモ

やったこと:php55とphp-fpmのインストール cakephp on composer
composerを利用してphpunitを目的のものをインストール(古すぎず、新しすぎず欲しいライブラリを自由に個々の環境にインストールしてbundlerみたいに)

まず、php5.5のインストール

mac:

まとめ:色々あって問題解決 twitterからその時のログをコピペ
brew doctor->指定の問題を解決->brew uninstall opennssl->brew uninstall postgresql-> brew install openssl postgresql -> brew install php55 -オプション
原因:openssl postgresqlの順に参照しているライブラリのシンボルが無いぜーってエラーでした。

linux:

まとめ
remi-php55 remiを追加yumリポジトリとして利用する事で解決。
linuxに関してはソースインストールを行うも、コンパイル後、postgresqlのシンボル周りでオコされたので撤退。
php55のインストールについては、以下の記事参照。
CentOSにPHP5.5をインストール - Qiita

事の発端はcakephp cakeコマンドでbakeコマンドを動かそうとしたら、おこられたことから。

久しぶりにアップデートをかけてみると、やっぱりかなり更新があったみたいです。。。
パッケージが新しい状態かどうか確認するのは大切ですなー。

composer

http://book.cakephp.org/2.0/ja/installation/advanced-installation.html
pearの問題点であるバージョンの異なるライブラリを読み込みできない事を解決しようぜ!ってものだと思っています。
んで、cakephpからcomposerでライブラリをインストールしていたのですが、面倒になってcomposerでcakephpで管理してしまえ!
という事で、
手順メモ: (以下の項目に関してですが、一度整備してしまえば、cakephpとりに行って準備するより面倒が少なくてよいかなと。)

composerの取得

composer.json作成

結構使い方間違っているんだろうな。って項目も多いですが、以下のように。

bundle installのように


php composer.phar install  
memo:このときrequire-devの項目に関してはインストールされないはずなんですが、なんかインストールされていました。 まぁ、使うのでいいのですけど。(プロダクション環境では無効にできるようにしておかなければなりませんが)

ディレクトリ確認

その後のディレクトリ構成は以下のようになっていると思います。
▸ Plugin/
▸ Vendor/
  composer.json
  composer.lock
  composer.phar*

プロジェクト作成

./Vendor/bin/cake bake applitionname
applicationnameに指定した名前がカレントディレクトリに作成されます。

bootloaderの設定

このままでは、せっかくインストールしたphpunitも動かないので、bootloaderもちゃんと設定してあげましょう。

※gistをbloggerでさくさく貼付ける方法が欲しいです。

composerを使ってcakephpを導入しなかった人へ

通常使っているbootloaderと少し異なるので、diffでもとった後に導入を検討してください。(きっと、この辺はcakephpを素で落としただけの人も使える)

以上です。使いたいライブラリが増えたらpeclとかじゃ無い限り対応できますし、何よりライブラリの制限も設ける事ができるので、よりよいのではないかなと思います。

結果

成果:php5.5系のインストール composerの導入
失ったもの:kyototycoon用のdatasource。。。。 残っているとうれしいかな。

火曜日, 4月 08, 2014

nginx + passenger macで

rvmで構築された状態でpassengerのインストールについて分かりやすく書いてあった。
Nginx + Passenger 3 + RVM for Rack app on OS X using homebrew only 

そもそもpassengerをnginxで動かすときの設定って覚えていなかったので、調べてみると簡単に説明した所があった。
Design Recipe 別館 Blog - nginx + Passenger による Rails 環境の構築 

CentOS 6.4 server setup with Ruby On Rails, Nginx and PostgreSQL - Karol Galanciak - Ruby on Rails developer from Łódź, Poland 

nginx側にpassengerについて教えてあげるところが記載されていなくて、403になっていったぽい。

火曜日, 11月 26, 2013

eclipseじゃないaptanaで。

all in one eclipseなるものをwindowsに入れて使ってたけど、設定が多いから大変だー戸思っていた。
vimでプロジェクトごとに色々やっていた。

そこで、
http://tluna-tech-scrap.tumblr.com/post/67252208274/gosling-emacs-builder-by-zdnet

なるほど。そうか。そうか。(emacsはあれはエディタかどうかは分かりかねますが。)

railsやるとき、cakephpやるとき、IDE使えるとうれしいのかな?

分かんないけど手を出してみよう。 なんか、railsやるときにaptana入れるといいよ。的な記事を見て、aptanaを入れてみる。 えぇ。eclipseでも、pluginでできるけど、aptanaを入れてみる。

検索が、、、(Ctrl+fの図)

カムチャッカ

探しているとglancesよさげ。
でも、Eclipse marketみろよ。とかいわれる。
http://stackoverflow.com/questions/11213542/using-the-eclipse-marketplace-on-aptana-studio-3

なので、http://marketplace.eclipse.org/content/glance#.UpN1xWSGIUw
これを追加して、みると、、、、入る。
settingsからkeyで元々あるSuperKey+Jと入れ替え。 素敵はいった。 Ctrl+fと置き換えるのが私の中でよいのかはおいといて

いいもの見つけました。

月曜日, 11月 18, 2013

VMWare PlayerとVirtualBoxのディスク書き込み時の性能比較

今までVirutalBoxの方がネットワークの設定が自由だったので使っていましたが、どうもUSBから直接マウントしたディスクアクセスをしくっているケースが多いので、検証

いかに環境を記載します。
host machine:thinkpad edge mem:8G USB3のカードを取り付け。(色違うからもしかすると型番が違うかも。)http://www.kuroutoshikou.com/modules/display/?iid=1506
hostos: Windows 7 home
VMware Player:Ver6.0.1
VirtualBox: 4.2.18
guestos: centos6.4

上記環境においてVMWare player,Virtualbox共々、以下の試験を実施、
  • 直接マウントでの書き込み
  • NTFS上に仮想ディスクを作成、マウントした仮想ディスクに書き込み
  • NTFS上に共有ディレクトリ(vmが独自の機構)を作成の上、書き込み
書き込みは以下のコマンドを使用。
dd if=/dev/zero of=/mnt/target bs=1000 count=10000000

直接マウントでの書き込み

直接マウントでの書き込み時の計測結果を紛失してしまいましたが、VirtualBoxでテストを実施したときになぜか、途中でUSBドライブへのアクセスをやめてしまったので、試験完了ならず。
Playerは速度的には、NTFS上に仮想マシン用のファイルを作成したときと同じよう感じでした。(ってことは、USB3の認識ができているのですかね。)

まずは、VMware playerが一勝

んー。ext4に入れてるデータが消えてしまうかもしれない。 そう考えるとネイティブに移行するか、NTFS化した後にデータを分けるようにしましょう。ということで、いったん今あるデータをまとめてその後、データをNTFSドライブに移したあと次の試験を実施。

NTFS上に共有ディレクトリ(vmが独自の機構)を作成の上、書き込み

順番的には、こちらを後に実施しましたが、どちらにせよこちらの方が遅いに決まっているし、何よりあった方が後々楽なので、インストール。
なお。VirtualBoxで共有ディレクトリを作成するときには、ヘッダーファイルをバージョン指定のうえ実施してくださいね。

VMware Player: 40.4MB/s
VirtualBox:        12.9MB/s

んー。これではちとつらい。(VMware playerなら、windowsと共有する部分だけ切り出しならいいかもしれないけど)

NTFS上に仮想ディスクを作成、マウントした仮想ディスクに書き込み

システム的に保持したいファイルはこのやり方で落ち着くであろう方式。

結果は、
VMware Player: 171MB/s
VirtualBox:        165MB/s

こちらもVMware Player勝利。

ディスクアクセスの結果としては、VMware Playerが圧勝してしまいました。環境による差異もあるかもしれませんね。
もし開発用のサーバーとして利用しないなら、一度利用するマシンで両方ともインストールを行った上、上記の試験を実施して
  • 本当にディスクを離してしまわないか。
  • ディスクアクセスでの負荷をかけたときに止まってしまわないか。
その辺を検証してからの方がよさそうですねー。(検証を行う際のレイアウトはホストマシンがあった方が楽です。)

ただ、ネットワークの自由度としては、PlayerよりもVirtualboxの方が自由度は高いので悩みどころです。

-----チラ裏のチラ裏
今回のファイルを配置したりするサーバーにはVMware Playerを利用しますが、playerならext4にしてしまったほうがいいんじゃないか?とか考えています。(バージョンアップによる仮想ディスクの互換性が怖い)
でも、HDDを割当できるのは、一つのVMだけだし。(レイアウトの自由度低下)
んじゃ、今回はVMware Playerでファイルサーバー系は共有フォルダ、DB系は仮想ディスク作成の上書き込み。にするとしますか。

火曜日, 8月 27, 2013

オブジェクト脳のつくり方を読んでいます

最近必要なものとしてオブジェクト脳の作り方を読んでいます。



amazonアソシエイトこういう書籍紹介の時に便利ですなー。 画面が映えるそれだけでブログを書いている気持ちになるね。

目次がなかったっぽいので、翔泳社のHPから目次を拾ってきてよ。
オブジェクト脳のつくり方 http://www.seshop.com/product/detail/4115/

さて、購入した版が古いためか、それとも現行でそういう作り方が主流なのかわかりませんが結構古くから使われている技術について記載があって戸惑いつつも読み進めています。

余談ですが、


  • この記事を書いている時にこのPDFに目次つけていなかったな。。。目次つけるかと思い立つ。
    • しかし、PDFOutlinerがテキスト貼り付けからの編集をやっていないので断念。さくさくとPerfectViewerで流し読み。
  • 読み進めている時にipadが欲しくなった。 これはきっと画面サイズによるものだろうな。。。次はNexusが出たら10インチモデルが出たら店頭で触ってから購入しようと考える。(きっと前のNexusより値段が高いから買えても年末辺りかな。)


聞いたことがない用語とか出てきたらメモがてら読解して読み進めていこうかと。

この記事を書いている時は、すでに1部は読んでいてまだ実践していない状態。読んでいるところは、2部に入ってUMLを交えた設計の話が始まりましたの段階。

わからなかった単語:

5章:
  • EntityBean
  • CMP
  • DTO・・・DAOの親戚?
J2SEのライブラリを使ったものが上記に列挙されているのでしょうかね。わかんないので後回し。

GGRKSの結果:
Entity Beanとは - 意味/解説/説明/定義 : IT用語辞典 http://e-words.jp/w/Entity20Bean.html
JavaBeans - Wikipedia http://ja.wikipedia.org/wiki/JavaBeans
J2EE体験編 CMPを体験する http://www.geocities.jp/tune_up_linux/cmp1.html
Data Transfer Object - Wikipedia http://ja.wikipedia.org/wiki/Data_Transfer_Object
さっき出てきた単語をぐぐってみると。上記の結果、Beansでの違いを書いたのかしら。

6章:

  • DOA

オブジェクト脳のつくり方 http://www.seshop.com/product/detail/4115/


感想(ニコニコ動画のコメント的な):

6章が読み物として面白そうなので、読み進めたい。


6章はありそうな(今でも)話がいっぱい散りばめられてて「うけるーwww」ってくさを生やしたくなる話が満載で楽しいです。 現実は、作らないといけないドキュメントにも差異がある。 ある。 ある。 あるんだお。

6.1〜6.8までしか読んでいないですけど、これってエンジニアのレベルの差と環境が産んだ弊害物が大きいなぁと。
自身の考える技術者としてのレベルを考えたとき、エンジニアのレベルって言葉通り雲泥の差が激しいと感じています。(当然のことながら自分のレベルは低いので上の人のいう違いはモヤモヤして見えていないですが)
6.8からはドキュメントの扱いについてついて、6.9では今までの経験って無駄?(ウォーターフローのガッツリ設計=>さっさっさと開発=>ガッツリテスト)

そんな中、1部で書いてあったものがさっさと取り入れないといけないものではないか。とかそんなことを考えつつ。

7.1に書いてあるの今の職場のSEがやってくれていることだ。。。 ごめんなさい。
7.1.2うん。厳格です。 レベルたけぇと思う人は、プログラムに対して厳格ですよね。でも、いいエンジニアにするためには、必要なことだと思っています。
7.1.3これやってくれている。実際に俺もやんないとダメだ。
7.1.4最後の落とし方が面白い。けど、この気持は無いとだめだろうな。。。
7.4うわー。。。わかりすぎる。 うーん。
7.5タイプ別に分けてこのタイプにはこうっていうのを書いてあるけど、おもしろいな。
最後のパターンでないことを祈ろう

8章
実務でテストを書きながらやっている時の雰囲気をつかむのにいいかもな。(さんぷるこーどがないので見れないのが残念です)
3部に入った時に途中まで気軽に読んでいたのだけど、これEJBがわからないとおおよそ何をしているかわかってもそれ以上のことはわからないなぁー。と思って読み飛ばし(何をしているかは拾い読み程度)
んー。Javaで書かれたWebで使われているのかしら。

3割読み終わったー。付録か。 何が書いてあるのだろうか。と思ってぴろんとめくってみると、8章で出ていたコンポーネント周り、アプリケーションサーバについての解説が。。。。 なんでこっちを先に読めと言わなかったのだろうか。。。。(謎すぎる)

悪評もあるのはなんでか大体わかったところで、しみこませるのは2部までですな。 それ以降はまだまだ早いです。よってことで。寝る。適当に適当に。

金曜日, 6月 21, 2013

家に帰った時にDHCP環境でどのマシンが上がっているかみたくなった。

題名のとおりです。
普通に考えると、nmapとかシェルスクリプトで解決ですよね。

ホストの発見

なんか、-PS netowrk/24(やっちゃだめ。。。。きっとListenしているポートまでかくにんするから)とかやるとネットワークがものすごい事になったので、ちゃんとオプションは知っておかないとまずいなとか。そんなことを思いつつ。

んで、

シェルスクリプトで、pingをforするだけで事は足りると思ったのですが、勢い余ってrubyで書き始めたので最後までやることに。

利用しているライブラリは、

parallel
benchmark
net/ping

forkするものは書いたことなかったので試しに書いてみた感じ。

gistはコードをブログに貼り付けられるということで、試しに使ってみる。(githubには上げて動かないものを公開する日々)

normalのところでエラー出たらごめんなさい。 実は動作させていると、だめぽかもしれない。


勢い余ってやった。 反省している。

閑話休題
なんかディスプレイを購入したいです。
40インチのディスプレイの話を聞いていて購入意欲が高まってきた所で、「本当にそれでいいの?デュアルじゃなくていいの?」

忘れていました。
会社も自宅もデュアルディスプレイになっているのでディスプレイの大きさがすべてを解決してくれるわけではないと。

よーく考えてみるとデュアルじゃないと困る。
というわけで、デュアルディスプレイでの構成で、チルトできるディスプレイかつ、ディスプレイアームを2つ。
もしかしたら、ディスプレイは2つ追加。

ディスプレイ縦にしてみるとすごいコードが読みやすいということで、試したいし。wkwk

追伸:コードおかしかったら、、、なんかして欲しいです。
githubでなにかされるとどうなるかまだ見たことがないので、それどんなのかみてみたいですし。

土曜日, 6月 01, 2013

やべーHDD飛ばしてもうた。

最近thinkpadさんがすごい暇をしているので、windows上でdebian on Virtualboxしていました。

USBマウントでext4なHDDを二台扱っていたのですが、どうにも途中でVMがハングアップしている(VirtualBox自体がハングアップ)ので、

「Knoppixでやればいいね。」
とコピーの作業を実施。

頭の中で
/big1->/dev/sdc1
/big2->/dev/sdb1
となっていたのが、
/big1->/dev/sdb1
/big2->/dev/sdc1
となっておりました。

よし、big1からbig2のデータのコピーに失敗していたからやり直しをしましょう。
といってrm -rf /big2/ディレクトリたちと指定してEnterをたたくと、

big1を確認するとあれ?データが少ない。。。。

本をわざわざ購入して電子書籍にしていた時のお金、TSUTAYAに行って借りて、旅の思いで(これはpicasaにあるからいいとしても)が一瞬にしてなくなりました。

反射的に mount -o remount,ro /mnt/big2としました。
「私はいっさいの書き込みを受け付けない。」

なんか無いかなーと思って調べていると、
Linuxでうっかりrm -rfしちゃったけど復活出来たよー\(^o^)/ - y-kawazの日記 http://d.hatena.ne.jp/y-kawaz/20110123/1295779916

ktkt

Knopix上で作業をおこなおうにもwifiアダプタを認識していないので、断念。 このままubuntu desktopにしてしまおうということで、thinkpadさんにubuntuディスクを投入。

現在結果待ちです。

ただ、みていると、
結構とれていないファイルも多いので、これはあまり期待できそうにないですね。

前のバックアップ(調子が悪いとあきらめてknopixを起動する前のもの)が結構取れていてほしいデータがあるので、残りを保管する役割としてつかえばいいか。。)

気をつけましょう。 rm

金曜日, 2月 15, 2013

egitで最初の更新は注意?

まだ検証していない状態ですが、下記のことがあったので覚書

eclipseでコード書いてて、コミットの瞬間に書いていコードが消える。

再現手順は以下の通り、
1.新規リポジトリ作成
2.リポジトリをクローン
3.そのディレクトリでどんどん作っていく。
4.コミットする
5.push (あれ?できないぞ。。。)
6.branchをマスターとして選択
7.push (push自体は無事成功)

6の段階でブランチが確定していない、コンソールでは、pushする元と先がわかんないよ?ということは聞かれてもいきなりブランチがブランクの状態で始まることはないはず。
でも、Egitでやった時に最初のブランチはブランクの状態でして、、、

pushした瞬間に消えているのかはわかりませんが最初のスタート時に気をつけないとかなりやばいですねえ。

って、サクサクとsuica関連のプログラムが書き上がってpushしたらファイルが消えたので、悔しくて寝れなかったので考えていて原因が見えてきたという話で。

大抵はコマンドでcloneかけてその後eclipseだったから問題がなかなか発覚しなかったけど、前にも同様のことはあってそのときは間違えて消したと思っていたのだけど、、、、あの時も一緒だったのね。。。。

残念、無念 明日以降もう一度かきなおしですな。

悔しさが少しだけ和らいだのでそのまま寝ちゃう。

土曜日, 11月 24, 2012

ユーザスクリプトでちょっとした手間をなくす


どうも、最近jQueryについている$はjQuery自身である事を知った具志です。
(今までこの$はなんだろうか。。。と思っていました。)

さて、下記のページを見て欲しい。
日経BPからのRSSで飛んでくるとこのページに来るのですが、ここまで来ているのに、全文を読むボタンを押さないとそのページにいけないという謎仕様なんです。
一つのドメインに割り当ててアクセス解析の手間を軽減しているんだろうけど、これでは使いにくくて仕方がないですね。
取得しているRSSの記事があまり触れて来なかったもの、なぜか結論が冒頭に出ていない記事ばかりなので、気になったら、全文を読むをクリックする手間を省きたいです。

思いついたのは、サーバーサイドでやるか、クライアントサイドでやるか。

サーバサイドでやると、また別の方向に飛んでしまいそうですので、今回はクライアントサイドで解決する方法を考えたいです。

ただ、解決するとはいっても、軽量な方法で解決したいな。と思ったのがこのエントリを上げるきっかけでした。

クライアントサイドで解決するなら、user scriptかな。
jQueryも呼び出せるみたいなので、ブラウザの操作に不自由を感じることは無さそうです。
http://stackoverflow.com/questions/2246901/how-can-i-use-jquery-in-greasemonkey-scripts-in-google-chrome
なんで、作ってみましょう。

一旦できたー。
もしかしたら、jQueryって元々使えたんじゃね?とか、consoleからいじってて思ったけど、いいか。
できたファイルは、chromeの拡張機能に放り込めば使える。
https://raw.github.com/tluna/tluna/master/lang/js/nikkeibp-opener.js

使ってみると、前のタブが残っているのが気に入らなかったので、方法はないかな?と探してみると、http://developer.chrome.com/extensions/tabs.htmlというものをみつけたので、これで対処できるかなー。と思っていたのですが、、、
(この時点では気づいていませんでしたが、既に出来上がっているuser scriptで目的は達成できていた。)


http://dev.screw-axis.com/doc/chrome_extensions/guide/content_script/
私の利用したかったtabをどうのこうのするAPIはChrome Extensionとして作らないと出来ないみたいですね。

user scriptから改、chrome Extensionにするしかないですね。なんで、上にあるコードは使わないで新しく作りますか。

,,,,,

作り終わった後に気づいたのですが、User Scriptsでも十分対応できていました。(前に書いたコードで)

あぁー。
まぁ、Chrome Exntesionの作り方がわかりましたよーっていうことでよしとしますか。

https://chrome.google.com/webstore/detail/nikkeibp-auto-opener/bmioapgeabpnhcljmoojefabdnmibimn/related?hl=ja

誰かが使うかもしれん。。。テストでプログラムをアップロードしてみたいし、ということで、Chrome Storeにアップしますかね。
Googleに開発者登録USD5$を収めた。

作業時間としてmanifest.jsonを描くのが一番時間がかかりましたね。 あれがなかったらもっと早く終わったのに。。。。

作りながらオプーナのプレイ動画見てたけど、あれ結構普通のゲームじゃね?

日曜日, 7月 08, 2012

区切って区切って

はまっているときに色々他の事をしながら作業をしたりすることがあるので、区切ることで自分に納期を作ろうとおもっていたのだけど、単位をどうしましょうかねー。って時にtwitterで流れてきた記事

集中力を発揮して、生産性を高めるために知っておくべきこと! | Act as Professional - hiroki.jp by HIROCASTER
http://hiroki.jp/2012/07/08/4697/

手帳管理方式にまた戻りつつあるので、TODO更新に手がつけられない状態にならないように気をつけましょうということで、エントリー(相変わらず内容が無い内容)

ポートを使用しているプロセスとポート一覧

毎回manたたいて調べる割に使用頻度が少ないからすぐに忘れてしまうのでメモ。

netstatでポートとプロセスを関連付けて表示
netstat -tanp
-t:TCP -a:すべての情報 -p:プロセスID

lsofコマンドでプロセスの詳細を調べる
lsof -i:port

さーせん。

火曜日, 4月 24, 2012

友人の旅人田口さん

シェアメイトの友人が来てました。
彼は旅人で、旅をしながらその土地で働きながら旅を続けるような生活を送っているとのことで。

無人島からの帰りだと聞いてすごい!!とは思ったけど、その事実自体はすんなり受け入れられるようなワイルドな方でした。

日本、世界を旅している人でゆくゆくは旅人として収益をあげながら旅を続けるというライフスタイルを送りたいというのが彼の夢ということです。

そんな話をしているなか、彼は旅先に出ると、「そういう風に旅ができて羨ましい」といわれることがあるよくあるといいます。

そのあと、彼は、「そんなにいいと思うならやればいい。一度きりの人生しかないのだから。」そんなことを言っていました。
確かに。 その人がいうからすっと落ちる言葉だなぁってこれだと思いながら話を聞いていました。

その人に対して羨ましいと感じたのは安全圏から出て旅人として生きるということに真摯に取り組んでいる姿勢でした。
私はまだ安全圏の中に生きているな。。。そんな事を考えていました。

自身のカラを打ち破れない事がダメで、さっさと出ていかないといけないです。
でも、その人たちとの違いなんてそこまでのプロセスを考えて実行しなかったかの違いなんでしょう。私にはそのさはかなり大きく感じます。とても大きなものに感じます。

頑張らねば、奮い立たせなければ。そんなことを考えさせられる夜でした。

ブログを始めてもらったので、これからが楽しみです。 記事が多少出てきたらシェアしたいですね。

更新頻度はそこまで高くないはずだけど期待して待っています。

土曜日, 1月 21, 2012

rainbowのコードを記載し忘れた。

前のエントリーにコード部分を転記するのはあれなので、エントリーをひとつ追加。
簡単なコードですので、手軽にHDDを埋め尽くしたい方は、ハッシュにMD5以外の文字列も追加してあげてください。

https://github.com/tluna/tluna-----/blob/master/rainbow/gen.rb

木曜日, 1月 19, 2012

らいんぼーてーぼー


友人宿題raibowtable順調に育っております。


du -ha
4.0K    ./pid
1.2G    ./casket.tct

今は1.2Gだそうです。

前回の話の続きになります。
現在どこまで行ったのかというと、3文字目だそうです。 つまりは、10文字まで行くときには、軽く10Gを超えてくるわけですね。

。。。。。。。。

おい止めろ。

rainbowtableについて - 親愛なるwikipedia様より。

火曜日, 1月 17, 2012

めくりめくる はまり

どうも。具志です。

結構知らないとはまることって多いよね。 何事も。
そういうときには論理だてて分析できると良いんだよ。(俺はできないみたいだけど)

んで、はまったのは、tokyotyrant。
友人がrainbow tableなるものを作りたいといっていてその残りの宿題をやっていたときだ。

簡単な話もとの文字コードとMD5値の対照表を作成したいと思ったのさ。
ここまではいいんだけど。

tokyotyrant触っている人は分かるよね。hashをぶち込んでいるところを見ると、当然table dbなんだ。

でも、私にはこのちきしはまるで無かった。

「へぇー、TokyotyrantってこんなRDBMSみたいなこともできるのか。すげぇや。」なんていって驚いてた。

ここからが地獄の始まりだ。
tokyotyrantにはtcmgrというコマンドがある。 putする際に、sepを指定すれば、値を区切って渡すことができる。(hash dbでも普通にできていたから)
それもかました後に1レコードに対して複数のキーを持つことができるんだね。 賢いね。という話ではまりました。

うおー。これは、いかんいかん。
(この記事は2日前の話の記事です)

日曜日, 1月 15, 2012

KVS

memcache --- disk X はえぇ
tokyotyrant --- disk O そこそこ
redis         --- おそいっぽい。

覚書として。

木曜日, 1月 12, 2012

今日はNFS!

NFSって前々から気になっててでも、「クライアントが限られるー」っていうことで使っていなかった。

家のサーバーがなんだかへんなタイミングで増えてi386のcentが2台。
ネットワーク上でファイルをやり取りする際にはNSFって早いって聞いたことがあるな。
むっちゃくちゃやり取りするファイルの量は無いわけではないけど、試験を行う気力は無いのでさっさと組んでその後に試験やりたかったらするということで。

[Appendix B] Samba のパフォーマンスチューニング
同様な試験で Samba と NFS とを比較してみたいと考える読者もいるであろう。しかし実際のところ、両者の速度の比較にはあまり意味がない。NFS のバージョンとチューニングの度合によって, Samba は NFS より遅くも速くもなり得る。通常は Samba の方が高速なようであるが、注意すべき点として NFS は Samba とは異るアルゴリズムを用いるため、NFS の最適化の為のチューニングオプションは往々にして Samba のパフォーマンスを低下させてしまう。非常によくチューニングされた NFS サーバ上で Samba を実行した場合、Samba はおそらくあまり速く動作しないであろう。
えっ。。。sambaって早いんだ。 知らなかったよ。

でもさ、NSF使ってみたいじゃん?ってことでやってみよう。
(過去にBSDで構築だけしてローカルからの疎通チェックしかしてないし、Linuxになったし)

NSFサーバーの整備

はじめての自宅サーバ構築 - Fedora/CentOS - ファイルサーバの構築(nfs)

見つかったからこれでちょっとやってみよう。

んで、作ってみた。
感想としてはまだスピードは図っていないけど初nfsを体験できてよかったな。
あと、iptablesは使えると幸せだなぁって思う(普通にすらすらと書ければいいのにね。 できない俺。

まぁ、外部で制限がかかっているから他のところに気を回さないといけんでしょ!ってことで。

いったんここで記事は終了
cat /etc/exports

/main/tluna/www         hogehogehoge(rw,all_squash,sync)
/main/tluna/sound       hogehogehoge(rw,all_squash,sync)
/main/tluna/log           hoggehhogeho(rw,all_squash,sync)

追伸putttyjpの引数でセッションを呼び出すっていうのおいしいです。lnkにputtyjp -load "session"でいいです。 素敵です。

日曜日, 1月 08, 2012

rvmインストール時にはまったの

gemもirbもrvmに持たせたかったので
rvm pkg install ree_dependencies
その後に--with-readline-dirやら--with-zlib-dirとかやろうとしていたのね。

そのときにreadlineとかはどうも正常にコンパイルは通っているんだけど、iconvとかzlibとかがautoconfとかを呼び出すときにpermissionの関係で呼び出せていない状態になっていた。
(configure.inとかを見るとどうも/usrにインストールしようとしている感じ。これだと、もともと入っているライブラリに影響を与えるので間違ってsurorvmとかしたら後処理の方法を知らないからめんどいとおもった)

そこで思ったのは、readlineだけに関しては自動的に取得できていないみたいなので、
rvm install 1.9.2 -C --with-readline-dir=$rvm_path/usr
として、その他のライブラリに関しては指定しないでやってみた。

これがうまくいったのさ。
その後、gem install sqlite3とかしても問題なく動作。

環境:
centos6 on vmware
ruby1.8(system)
rvm 1.10.1


ruby 1.9.2p290


gem 1.8.10


きっとサーバーでみんなでrvm環境を使っている人は個々人でrvmを使うということはしないのだろうなとか思いつつこの記事を投稿。

走り書きなのは、いつものことで。
以下ログ

rvm1.9.2-install
rvmgeminstall

追伸:ログをクリックしたらブログの中で表示するなんてことをしたいです。いったんjqueryを配置したけど、、、どうしましょう。