2017年4月30日

忍者アクセスランキングを試してみる

今日なんかちょっとヒマだったので、試しに忍者アクセスランキングを作成してみました。

作り方は、超簡単です。

説明するまでもないのですが、一応手順です。

まず、http://www.ninja.co.jp/にアクセスします。


アクセスしたら、「忍者アクセスランキング」をクリック。



「さっそく始める」をクリック。



「利用規約に同意して次へ」をクリック。



好きなテンプレートを選んで「次へ」をクリック。
(デザインは後から変えられます。)



サイト情報を入力して「タグ発行へ」をクリック。



あとは、「ランキングデータ取得用コード」をサイトの<body></body>タグの間に貼り付け、「ランキング表示用コード」をブログのサイドバーなどに貼り付けたら出来上がりです。


で、実際のランキングが↓コレ


ただ、これってリンクを設置してくれてるサイトがないとあまり意味ないですよね。

どうすればリンクを貼ってくれるか。

当たり前ですが、良質なコンテンツを提供するのみですね。
他のサイトから参考とされるような記事が書けるように頑張りたいです。


2017年4月29日

【PowerShell】オブジェクトをCSVに変換する


オブジェクトをCSV文字列に変換するには、ConvertTo-Csvを使用します。

たとえば、Get-ChildItemでこのように取得できるフォルダがあるとします。
PS C:\work\image1> Get-ChildItem


    ディレクトリ: C:\work\image1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2016/10/15      0:20         425167 aaaa.jpg
-a----       2016/10/10     10:14         245901 bbbb.jpg
-a----       2016/10/10     10:05         194315 cccc.jpg
-a----       2016/10/10     10:13         235320 dddd.jpg
-a----       2016/10/15      0:19         852563 eeee.jpg
-a----       2016/10/15     19:06         593126 ffff.jpg
-a----       2016/10/15      0:21         607218 gggg.jpg

このGet-ChildItemで得られる情報をCSVに変換するには次のようにします。
PS C:\work\image1> Get-ChildItem | Select-Object Name, LastWriteTime, Length | ConvertTo-Csv
#TYPE Selected.System.IO.FileInfo
"Name","LastWriteTime","Length"
"aaaa.jpg","2016/10/15 0:20:20","425167"
"bbbb.jpg","2016/10/10 10:14:04","245901"
"cccc.jpg","2016/10/10 10:05:19","194315"
"dddd.jpg","2016/10/10 10:13:35","235320"
"eeee.jpg","2016/10/15 0:19:45","852563"
"ffff.jpg","2016/10/15 19:06:09","593126"
"gggg.jpg","2016/10/15 0:21:41","607218"
ここでは、Select-Objectを使い取得するプロパティを限定しています。


2017年4月28日

【PowerShell】エイリアスの設定


Set-Aliasでエイリアスの設定が出来ます。

構文
Set-Alias [-Name] <エイリアス名> [-Value] <コマンド名>

PS C:\work> Set-Alias -Name gd -Value Get-Date
PS C:\work>
PS C:\work> gd

2017年4月28日 20:24:29
この例では、Get-Dateのエイリアスとしてgdと設定しました。
実際にgdを実行してみると、現在の日時が表示されます。


2017年4月27日

【PowerShell】エイリアスの取得


Get-Aliasでエイリアスの一覧を取得できます。

PS C:\work> Get-Alias

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           CFS -> ConvertFrom-String                          3.1.0.0    Microsoft.PowerShell.Utility
Alias           chdir -> Set-Location
Alias           clc -> Clear-Content
Alias           clear -> Clear-Host
Alias           clhy -> Clear-History
Alias           cli -> Clear-Item
Alias           clp -> Clear-ItemProperty
・・・


特定のエイリアスのみ取得

PS C:\work> Get-Alias -Name m*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           man -> help
Alias           md -> mkdir
Alias           measure -> Measure-Object
Alias           mi -> Move-Item
Alias           mount -> New-PSDrive
Alias           move -> Move-Item
Alias           mp -> Move-ItemProperty
Alias           mv -> Move-Item
この例では、mから始まるエイリアスのみ取得しています。


2017年4月26日

【PowerShell】ジョブを停止する


実行中のジョブを停止するには、Stop-Jobを使用します。

$a = {
        for($i = 1; $i -le 10; $i++){
            Start-Sleep -s 1
        }
        Write-Host "ジョブAが完了しました。"
     }

#ジョブの開始
Start-Job -Name "JobA" $a

Write-Host "開始"
Get-Date -Format G

#5秒待機
Start-Sleep -s 5

#ジョブの停止
Stop-Job -Name "JobA"

Write-Host "停止"
Get-Date -Format G

Write-Host ""

#ジョブ取得
Get-Job -Name "JobA"

Remove-Job -Name "JobA"

実行結果
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
21     JobA            BackgroundJob   Running       True            localhost            ...                      
開始
2017/04/26 22:34:20
停止
2017/04/26 22:34:25

21     JobA            BackgroundJob   Stopped       True            localhost            ...                      



PS C:\work> 
"JobA"は、10秒かかるジョブですが、ジョブが開始されてから5秒後に停止しています。


2017年4月25日

【PowerShell】バックグラウンドジョブの実行


時間のかかる処理などをバックグランドで実行させることが出来ます。

#JobA
$a = {
        for($i = 0; $i -le 9; $i++){
            Start-Sleep -s 2
        }
        Write-Host "ジョブAが完了しました。"
     }

#JobB
$b = {
        for($i = 0; $i -le 3; $i++){
            Start-Sleep -s 2
        }
        Write-Host "ジョブBが完了しました。"
     }

#JobC
$c = {
        for($i = 0; $i -le 5; $i++){
            Start-Sleep -s 2
        }
        Write-Host "ジョブCが完了しました。"
     }

#ジョブの開始
Start-Job -Name "JobA" $a
Start-Job -Name "JobB" $b
Start-Job -Name "JobC" $c

#実行中のすべてのジョブが完了するまで待機し、結果を受け取る
Get-Job -State Running | Wait-Job | Receive-Job

#ジョブの削除
Remove-Job -Name "JobA"
Remove-Job -Name "JobB"
Remove-Job -Name "JobC"

実行結果
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
35     JobA            BackgroundJob   Running       True            localhost            ...                      
37     JobB            BackgroundJob   Running       True            localhost            ...                      
39     JobC            BackgroundJob   Running       True            localhost            ...                      
ジョブAが完了しました。
ジョブBが完了しました。
ジョブCが完了しました。

Start-Jobでジョブが開始されますが、すぐに呼び出し元に制御が戻りますので、別の処理が実行できます。
上の例では、"JobA"という名前のジョブを実行したあとに、すぐに"JobB"、"JobC"というジョブを実行しています。

そして、Wait-Jobで実行中のジョブがすべて完了するまで待機し、ジョブが完了したらReceive-Jobで結果を受け取っています。

ちなみにジョブの結果表示は、開始したジョブの順番のようです。
"JobA"が一番時間がかかるのですが、結果では一番最初に表示されています。


2017年4月24日

【PowerShell】エラーを発生させる(throw ステートメント)


エラーを発生させるにはthrowステートメントを用います。

throw [メッセージやオブジェクト]


throw "error!error!error!"

trap{
    Write-Host "エラーが発生しました。"
}

実行結果
エラーが発生しました。
error!error!error!
発生場所 行:4 文字:1
+ throw "error!error!error!"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (error!error!error!:String) [], RuntimeException
    + FullyQualifiedErrorId : error!error!error!

このthrowステートメントで発生させたエラーは、trapやtry...catch...finallyで捕捉することが出来ます。