CPUの世代での違い

久々にブログを書こうと思い立ったんですが、何も準備していなかったので、最近驚いたことを書いておきます。最近、会社で新しいPCが支給されたり、自分でもPCを買ったりして、複数のPCを触る機会がありました。ここで体験したのが、CPU世代での性能差です。

使ったPCは、下記の3つ
・VAIO S13(CPUはインテル6世代のCOREi7)
・DELL XPS13(CPUはインテル7世代のCOREi7)
・富士通LIFEBOOK UH(CPUはインテル7世代のCOREi5)

VAIOはまだ2年も使っていないモデルで、会社でメインで利用しています。通常の利用に不満はないです。DELL XPSは家用に買ったPCで、VAIOよりも性能がいいのはわかった上で触っているのですが、びっくりしたのは富士通LIFEBOOK。CPUはi5なのに、データ量と数式が多く入ったEXCELファイルを開いたときの速度が、富士通LIFEBOOKの方が、VAIOよりも速かったんです。時間がかかるEXCELの式の再計算に差があったように見えたので、CPUの差だと考えられます。

世代が1世代違ってもi7が優位だと漠然と思っていたんですが、アーキテクチャの進化は想像以上に大きかったです。値段は富士通LIFEBOOKよりDELL XPSの方が安いので、DELL XPSの方がお買い得感があります。DELLの直販サイトでは頻繁に割引もやっているので、週に一回くらいチェックすると、よりお得なキャンペーンで購入することがあります。今(8/12)にやっているキャンペーンは18000円引き+5%オフなので、だいぶお得です。僕が買ったときより安いですね。14万くらいでi7モデルが買えてしまいます。

軽さをもとめる人は、富士通LIFEBOOKです。1kgを切っています。macbookより軽いので持ち歩いでも苦になりません。XPSより高いし、CPUのランクも落ちますが、使い比べなければわからないレベルでしょうし、重さはXPSの2/3程度です。(LIFEBOOKは約800g、XPSは約1200g)

これからは、PCを購入する際に1世代とはいえ、CPUの世代はCPUのランク以上に意識する必要があるデータとして考えていきます。次は、家のメインPCのiMacの買い替えですね。XPS用に4Kの外付けディスプレイも購入したので、次はMacBook Proの15インチにして、机の上をすっきりさせたいと考えています。iMacもスペックも価格も値上がりしているので、迷うところです。iMacはデスクトップ用のCPUを積んでいるのでクアッドコアというのが魅力です。購入資金はまだないし、iMacもMacBook Airも現役で働いてくれているので、購入はまだ先になりそう。今月に第二子も生まれて、また色々買うものも出てきますしね。

WindowsPCを購入する際の参考になればと思います。国産PCだと、今の富士通LIFEBOOKはかなりいいと想います。VAIOが第7世代のCPUを積んできたら、VAIOもいいですね。デザインと使い勝手でいうと、富士通LIFEBOOK、VAIO、DELL XPSのどれかではないかと思います。

is_subclass_ofを使う場面

is_subclass_ofというメソッドを見つけました。機能は、指定したクラスを継承しているかを判定してくれるというものです。

instanceofやis_aメソッドを使った判定と同じイメージです。違いはinstanceofやis_aがオブェジェクトだけを判定できるのに対して、is_subclass_ofはクラス名について判定することができます。

クラスからオブジェクトを生成する前に判定が可能ということです。

複数のプログラマが利用する共通部を作成するような場合に使えそうです。今回は、あるディレクトリ配下のクラスファイルを全て読み込んで、特定のクラスを継承しているクラスのみ生成するという処理に利用しました。

誤ったファイルを置かれても、不具合が出ないための対応ですが、ちゃんと作れとか、ルールが明記してあるドキュメントを整備しろとかあるとは思いますが、これはこれでいい対策かなと思います。

advanced custom fieldsがプレビューに対応していた

以前、advanced custom fieldsプラグインでプレビューもやりたいという記事を書きましたが、最新版ではプレビューにも対応していました。

プラグインをアップデートしたら、以前の記事に書いたプレビュー対応の部分でエラーがでたため、一旦外したところ、外した後もプレビューできていました。これからは、プラグインを有効化するだけで、プレビューにも対応可能ですね。

手間が減るって嬉しいことです。中身がどう変わったのかも、見てみようと思います。

Zend_Framework1のDbMetaキャッシュ設定をapplication.iniで行う

ZendFramework1は、DBアクセスする際に、DbMeta情報を取得します。
MySQLだと、describeで取得できるテーブルの構造です。
この情報は、あまり変わらないのでキャッシュすることで、性能アップが実現できます。

以前、“ZendでDbのMeta情報をキャッシュする”という記事で書かせて頂いたように、Bootstrapの中で定義していました。

1
2
3
4
5
6
7
    protected function _initDbCache()
    {
        $frontendOptions = array('automatic_serialization' => true);
        $backendOptions = array('cache_dir' => APPLICATION_PATH . '/../cache/db');
        $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
        Pb_Db_Table_Abstract::setDefaultMetadataCache($cache);
    }



これ、application.iniに設定を書くことで、全く同じことが実現できました。
問題無く動いていたし、Bootstrap自体が修正が入ることが少なかったので、気づきませんでした。
以下のように、記述することで、ソースコードを書く必要がなくなります。
書かなくていいものは、書かない方がいいですよね。

1
2
3
4
5
6
7
8
9
; dbメタキャッシュ設定
resources.cachemanager.db.frontend.name  = "Core"
resources.cachemanager.db.frontend.customFrontendNaming = false;
resources.cachemanager.db.frontend.options.lifetime = 7200
resources.cachemanager.db.frontend.options.automatic_serialization = true
resources.cachemanager.db.backend.name = "File"
resources.cachemanager.db.backend.customBackendNaming = false;
resources.cachemanager.db.backend.options.cache_dir = APPLICATION_PATH . '/../cache/db'
resources.cachemanager.db.frontendBackendAutoload = false



Zend_Framework2では、どんな設定方法になるんだろう。
まだ触っていないので、書くことはできませんが、わかったら書きたいと思います。

php5.4からはerror_reportingのE_ALLにE_RISTRICTが含まれる

error_reportingは、php.iniの中に書かれている設定で、どのレベルのエラーを出力するかの設定です。このE_STRICTのエラーは、php5でphp4の書式で記述されているプログラムを実行すると、大量に出ます。static定義されていないメソッドを、クラス名::メソッド名で呼んだりしたときに出るのです。

E_ALLは、全部のエラーを出力してねっていう設定です。
これまでは、”E_ALL & ~E_NOTICE”とかでNOTICEメッセージを抑止している方もいたと思います。このE_ALLのなかに、E_STRICTで表示されるメッセージは含まれていなかったのです。今まで。それが、php5.4からは、E_ALLに含まれることになりました。

php5.4に上げた途端エラーメッセージが大量に!って場面に遭遇するのです。
PAER使っている方は、必ず遭遇するのではないでしょうか。php4でも動作するように作られているので。

E_STRICTのエラーを表示しないためには、以下のように記述します。

1
error_reporting = E_ALL & ~E_STRICT



php.iniのコメントでも親切に例がのってました。

1
2
3
4
5
6
7
8
9
10
11
; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED  <= こことか
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT           <= こことか
; http://php.net/error-reporting
; error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED



php4から持ってきたプログラムがうまく動かないと聞かれて調べてたんですが、勉強になりました。
以下のサイトを参考にさせて頂き、大変ありがたかったです。

http://developer.cybozu.co.jp/tech/?p=982
http://vivit-jc.hatenablog.com/entry/2013/02/12/210950
http://blog.gufii.net/weblog/archives/19

egrep、zgrep、zegrepというコマンドを覚えた

Linuxで文字列を検索してくれるgrepコマンドは以前から重宝していました。
ログの中から目的の行を見つけたりとか、大量のデータから必要な部分を抽出するのに大活躍です。

上記のような使い方をしていたので、and条件(“aaa”という文字列と”bbb”という文字列を含むとか)での検索はよくやってきたんですが、or条件(“aaa”という文字列か”bbb”という文字列を含む)という検索はしてこなかったんです。今回、or条件で検索したくて、調べていたら”egrep”というコマンドがありました。

> egrep “aaa|bbb” ファイル名

上記ののように書くとor条件の検索ができました。
正規表現として記述するので、いろんな検索ができそうです♪
詳細な説明のあるサイトもメモしておきます。
http://www.pochinet.org/linux2E007.htm
http://www.webhtm.net/unix/cmd/egrep_cmd.htm

あと、追加で前職の同僚tnmtさんが、zgrep、zegrepというコマンドもあるよと教えてくれました。圧縮ファイルに対して、検索をかけることができます。
今まで、zcatした結果にgrepかけていたので、手間が減って助かります。ありがとうございました。

中目黒カカオエット・パリ

友人に教えてもらったケーキ屋さん、「カカオエット・パリ」
http://tabelog.com/tokyo/A1317/A131701/13039525/

甘いものだけではなく、おいしいもの全般が好きな友人が教えてくれた店。
だいぶ推してたから、相当美味しいんだろうと期待している。
あまりケーキを買う機会がないけれど、次の機会には利用しようと思うのでメモ。

最近買ったケーキのお店は、中目黒駅近くの「エコール・クリオロ」
http://tabelog.com/tokyo/A1317/A131701/13077927/

モンブランとフルーツのケーキを食べたら、どちらも美味しかった。
大きさも、甘さもちょうど良い感じ。
一粒1200円のチョコレートもあったけど、これはちょっと手が伸びない。
駅の近くだから、ちょっとおみやげに持って行こうってときには便利だと思います。

windows8、windows server 2012からファイルサーバに繋がらないときの対処法

windows8、windows2012から、windows共有(CIFS)に利用されるプロトコルが、SMB3.0になっています。

SMB3.0になって何が変わったかというと、認証する際のフローが変わっているんです。
サードパーティ製のストレージサーバで、この変更に対応できていない場合、認証プロンプトが出て、正しいアカウント、パスワードを入力しても、ファイルサーバが参照できません。
SMB3.0で新たに追加された“Secure Negotiate”という機能に、対応できてないことが原因です。
マイクロソフトからの情報だと、このへんです。
http://support.microsoft.com/default.aspx?scid=kb;ja;2686098


この問題を回避するには、windowsのレジストリを書き換えて、“Secure Negotiate”を無効にします。1つの方法は、レジストリエディタを使って、以下の値を追加すること。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\RequireSecureNegotiate
上記パラメタを追加し、値を”0″にします。

もう一つは、PowerShellを起動して、以下のコマンドを実行すること。
Set-ItemProperty –Path
“HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters” RequireSecureNegotiate -Value 0 -Force

これで、問題を回避できます。以下のサイトに書いてあることまんまです。大変参考になりました。
http://nobuhikoi.wordpress.com/2012/11/05/win-8-server-2012-から-netapp-に接続できない問題/

parent category togglerプラグインが便利

http://wordpress.org/extend/plugins/parent-category-toggler/

wordpressのカテゴリは、親子関係があるのですが、子も親もチェックしたいのに、ついつい親へのチェックを忘れてしまうことがあります。

こうしたいのに
category-1
こうしちゃう
category-2
そこで見つけたのが、「parent category toggler」プラグイン。
子カテゴリをクリックすると、親カテゴリにもチェックが入ります。これでチェック忘れはなくなりますね。

windows8標準の暗号化tool「BitLocker」を有効にした

windows8には、標準でHDD暗号化ツールがついています。
7までは、別途暗号化ソフトを買って、セキュリティを強化していたと思いますが、BitLockerを使うことで、費用をかけずにデータ暗号化が可能です。

windows8をインストールしたときに早速やってみようとしたのですが、システムボリューム(OSが入っているドライブ)にかけるのはおすすめしないという内容の記事を見て、後回しにしていました。

2月末に、システムボリュームでBitLockerを有効にする手順の記事を見つけ、Microsoftのサイトでもやり方が公表されていたので、もう大丈夫かなと思ってやってみました。

http://www.atmarkit.co.jp/ait/articles/1302/28/news114.html
http://windows.microsoft.com/ja-jp/windows-8/bitlocker#1TC=t1

使っているPCをがHDDをSSDに換装しているからか、3時間程度で暗号化完了。
処理速度も体感レベルでは低下していません。

PCを外に持ち出すことがある方は、やっておいて損はないと思います。

%d人のブロガーが「いいね」をつけました。