2015年2月23日月曜日

こんな時に自作PC








自作PC、聞いただけで魅力的な響きです。
ずーっと


  • お値段10万円以下
  • フルHDで3画面
  • グラボ大きいの挿せる、何となく2枚挿しも出来る
  • CPUはオーバークロック出来る
  • HDDとかSSDとか4個くらい付けられる


こんな感じのPC探してたんだけど、中々通販じゃ扱って無くて。
じゃあもう自作するしかねえ!ということで。

そして自作して分かった事、躓いた事があったのでメモ。



なんといっても自作の魅力は


  1. 僕の考えたPCが作れる動くとは言ってない
  2. PCのパーツの種類がなんとなく分かるようになる
  3. パーツが増える
  4. おまけで何かの知識が付く場合もある


「①」は言うまでもなく、「②」は初自作としてはうれしい所でした。
「③」は初めてパーツの不良が来た時のお供ですね、
どのパーツが不良なのか分からないから、2つ、3つ買う
不良じゃないパーツが見つかる、余る。


とゆーわけで買ったパーツ

  • マザボ:ASUS , Z87 Plus  , 10k
  • グラボ:GIGABYTE . GTX750ti 2GB , 18k
  • メモリ:IO DATA , PC3-128000 8GB*2(16GB) , 20k
  • 電源:FSP , 750W RA-750 , 8k
  • PCケース:ZALMAN , Z12 Plus , 8k
  • CPU:Intel , Pentium G3258 , 8k
  • SSD:crucial , CT512MX100 (512GB) ,26k
  • OS:Windows7 Pro 64bit , 20k

合計11万円くらい
※この後不良があって合計13万円になりますが気にしないでください。


不良に当たった。見事に不良にぶち当たりました。PC起動しません。
ググった結果、「自作 最小構成」の知識を得たので早速やりました。
普通に起動しません。パーツ変えるにもメインPCはLenovoH550なのでメモリくらいしか持ってこれません。
メモリ付け替えて起動、しない。これで電源かマザボかCPUかメモリ相性かなんだけど、
ここで兄のPC借りて、電源だけ持ってきて起動、しない。マザボかCPUかメモリ相性だけど、


  • CPUは不良率が低い(という噂をググって知った)
  • メモリ相性による起動不可も、マザボと電源に比べれば、発生率は低い(脳内ソース)


電源は付け替えてるからまず生きてる、マザボじゃね?
メモリ相性はググってもあまり無かったので、除外。
とかくマザボ不良の可能性が高かったからマザボとCPUだけ買ってきました.
CPU8千円で安いし…

  • マザボ:GIGABYTE , GA-Z97X-Gaming 3 , 13k
  • CPU:Intel , Pentium G3258 , 8k

で、マザボだけ交換して起動、した。しました。
そしてCPUが1個余りました。やっぱCPUは壊れにくいのでは?


結局マザボと電源とかの初期不良率が高いのは、
ツクモとかで保障とかもらって買った方が良いですね。
この後しばらくしてコールドスタートが出来なくなりました。
起動したら必ずフリーズするわけで。再起動も必ずフリーズする。
ホットスタートは可能なんですが、偶に落ちます。落ちてます。
電源が足りないとかじゃない。
ググった結果これは電源の不良らしいのでまたいつか電源買う時が来ますね。
一応BIOS起動にログイン画面までは確実にたどり付けるのでチェック用になりますね。
これはひどい。


どうでもいいけどインターネット接続に手間取った。
PCにそのままLANぶっさしても認識しなくて、
これはもしかするとwindowsUpdateしないといけない系?って思って、
何となく買ってたbuffaloのUSB型無線機器があったので、そいつをDVDでインスコ、
使えるようにして、インターネットにつなぎました。
そしてWinUpdしつつ、マザボに付いてきたDVDの中身も居れてました。
そしたらなんか有線で繋げられるように。
今思うとLANアダプタもマザボ管轄なんだから、普通に考えてマザボのDVDですよね。




ところで、
SSDじゃなくてもHDDでもいいですね、今なら8千円程度で買えるので。
私は手軽にOCしたかったのですが、まさかGIGABYTEのマザボちゃん簡単に
OC出来るようにしてくれるのは知らなかったです。
GIGABYTE信者になりそうですね。ASUS信者止めます。



メモリ16GBにしたのはいいのですが、足りないですね。
アポフィジスに8GB程度食わせているので、ウェブブラウザで3GB食われて、
システムに2GB食われると結構厳しい所があります。
ゲームでも2GBは食われる事想定しないといけませんし。
いつになったらメモリ4チャンネルが安くなりますか?
それとゲームして思ったのはCPUぱぅわーが圧倒的に足りない。
2コアでは足りないですね。4コアのi5かi7が欲しくなってきます。
沼ですね、完全に。ソケットがLGA2011だと恐ろしい事になってるけど気にしない。






おまけ

perlで2文字だけ避ける方法

文字列で否定したいときに部分否定じゃなくて行否定されて悲しいにょ。
何が否定だにょ、行否定は違いますにょ。

(?!cd).(?<!cd)

これでcd以外に引っかかりますにょ。
cとかdも引っかかりますにょ。cdは引っかかりませんにょ。
3文字は無理ですにょ、真ん中の文字が避けられませんにょ。




2015年2月20日金曜日

なんとなくperlで正規表現練習



perlの正規表現で否定的先読みがある。

検索文字(?!パターン)


どういう効果があるかは「正規表現 後読み 先読み」とかでググると色々な例があるよ。


以降なんとなく正規表現練習。

echo -e '
unused
 aaaa =>        bbbb// cccc
,dddd =>        array()
     ffff =>array( // gggg
        ,hhhh =>array(
'

以上をLinuxコマンドに「echomatch」として登録。
コマンド自作方法は「shellscript 自作コマンド」でググると大体おk。

LinuxについてはVagrantとVirtualBoxを使って、実験用の仮想環境を作ろう。
私はなんとなく「CentOS 6.5 64bit」を使ってる。



①「unused」は行回避する
②「array(」も行回避する
③コメント部分は回避する
④「=>」の行は一致させる

「=>」行を一致

echomatch  | grep -Po --color '^.*=>.*'
 aaaa =>                bbbb// cccc
,dddd =>                array()
         ffff =>array( // gggg
                ,hhhh =>array(
        ,iiii =>array(jjjj) // kkkk

---------------- ---------------- ---------------- ----------------

コメント部分を行回避

echomatch  | grep -P --color '(^.*=>[\t ]*)(?!.*//).*'
,dddd =>                array()
                ,hhhh =>array(

---------------- ---------------- ---------------- ----------------

コメント行に一致させつつ、コメント部分を回避

echomatch  | grep -P --color '(^.*=>[\t ]*).*(?=//)'
 aaaa =>                bbbb
         ffff =>array(
        ,iiii =>array(jjjj)

---------------- ---------------- ---------------- ----------------

2つを合体させて、コメント部分だけを回避

echomatch  | grep -P --color '(^.*=>[\t ]*)(.*(?=//)|(?!.*//).*)'
 aaaa =>                bbbb
,dddd =>                array()
         ffff =>array(
                ,hhhh =>array(
        ,iiii =>array(jjjj)

---------------- ---------------- ---------------- ----------------

「array(」で終わる行を回避

echomatch  | grep -P --color '(^.*=>[\t ]*)((?!.*array\()|(?=.*array\(.*\))).*'
 aaaa =>                bbbb// cccc
,dddd =>                array()
        ,iiii =>array(jjjj) // kkkk

---------------- ---------------- ---------------- ----------------

これも合体させます、「array(」は行削除なので最優先で行います。また、「array()」は削除されないよう、「array(」と同レベルの優先度行います
コメント回避は後ろに置きます。部分回避は大体後ろに置かないと死ぬ。


echomatch  | grep -P --color '(^.*=>[\t ]*)((?!.*array\()|(?=.*array\(.*\)))(.*(?=//)|(?!.*//).*)'
 aaaa =>                bbbb// cccc
,dddd =>                array()
        ,iiii =>array(jjjj) // kkkk

---------------- ---------------- ---------------- ----------------



コメント回避を場合分けで対処するのはエレガントじゃないよね、他に方法思いつかない。



おまけ




なんとなく冬美貼る。
てかソースコードのように書くのめっちゃめんどい。
あとこれプレビュー反応しねえ。

2015年2月17日火曜日

perlで配列にファイルオープン


なんとなくリッチにメモリをバカ食いしながら処理をする。
perlで配列にファイルオープン。各行を配列にぶち込みたい時に。

①まずファイルオープンします。

open( DATAFILE , "<" , $FilePath ) or die('Error:'.$!) ;


②次に配列に入れます。

my @MultipleLines = <DATAFILE> ;


③終わり。


簡単ですね。

しかしこれでは文末にみんな大好き\n(改行コード)が入ってしまいます。
では文末の\nを取り除いたバージョン、いましょう。


①まずファイルオープンします。

open( DATAFILE , "<" , $FilePath ) or die('Error:'.$!) ;


②次に配列に入れます。<DATAFILE>は何故か配列扱いされるので、
 mapで文末の\nを空文字に置換します。

my @MultipleLines = map { $_=~ s/\n$// ; $_ } <DATAFILE> ;


③終わり。


これで簡単に配列に展開できましたね。


おまけ



lookbehind assertion is not fixed length
後読みが固定長文字列じゃないよ!(訳:後読みに量指定とか付けんなや!)
ちなみにPerlでは無理です。仕様が許さない限りね。
そして月日が経ち……
5.10新機能から「\K」実装。以下に例を示す。


echo 'dsdg = fsefe;//eiya' | grep -P --color '(?<=(//.*))ya'    :実行できない
↓代わりに
echo 'dsdg = fsefe;//eiya' | grep -P --color '((//.*)\K)ya'        :実行できる
「ya」に色がつく

echo 'dsdg = fsefe;//eiya' | grep -P --color '(?<=(fs|ds)).'    :実行できる(できる)
↓(できるけど)代わりに
echo 'dsdg = fsefe;//eiya' | grep -P --color '((fs|ds)\K).'        :実行できる
dとeに色がつく


以上のように「肯定的」可変長後読みが可能に。
しかし「否定的」可変長後読みは依然としてダメ。
まあ、私が知らないだけかもね。



perlは数日で簡単に正規表現を主体とした処理が書ける。
初心者になるハードルは低いという事ですね。
中級者以上になるつもりはないけど。
これで大規模プログラム組むとかはつらい。
特に関数がphp程に日本語訳が充実してないからつらい。

2015年2月9日月曜日

制限あるLinuxコマンドでの置換の仮実行(be limitd dry run)




なんつーか、Linuxコマンドで、
置換の仮実行(dryrun)っぽいのが無くて悲しいので、
なんとなく構造だけ書いてみる。
ちなみに以下のコードはperlがあること前提です。
別にsedでも問題ないです。



find ~ | xargs grep -Po '検索文字列' | cut -d ':' -f 2 | sort | uniq | perl -pe '置換スクリプト'



①「find」で対象ファイルの場所を取得。grepに投げる。

②「grep」で置換したい文字列を検索に掛けます。
 そしてオプション「-o」ファイル名と一致文字列を取得。cutに投げる。

③「cut」のオプション「-d ':'」で「:」で文字列を区切り、
 そしてオプション「-f 2」で区切った文字列の2番目、
 乃ち「一致文字列」だけ取得。sortに投げる。


④「sort」で一致文字列を整列させる。uniqに投げる。

⑤「uniq」で重複文字列を削除する、perlに投げる。

⑥「perl」のオプション「-p」で標準出力させるようにし、
 オプション「-e 'スクリプト'」で書かれたスクリプトを実行。
 -pによって置換された文字列が出力される。されるだけ。


ぶっちゃけ④とか⑤とかいらないけど、何となく。

-------------------------------- --------------------------------

sed使ってやる場合。

find ~ | xargs grep -o '検索文字列' | cut -d ':' -f 2 | sort | uniq | sed -e '置換スクリプト'

perlとsedってここだけ見ると似てますね。

-------------------------------- --------------------------------

今後の方向性。

①各行毎に置換前、置換後を表示したい。
②色付けたいよね。色。

たぶん
自作コマンド的な何かを作れそう。


-------------------------------- --------------------------------


問題

先読み、後読みによる置換では不具合が起きる。
この構文のままでは先読み、後読み指定した文字列が、
一致文字列に入らないので無意味。