ドッフの喫茶店

色々好きに書いてます。 昔はROとか艦これとかingressしていました。

情報集積。

・製造武器流通は無い、ゼロだ。
 ドラムで始めた方がマシだな。
 マタタビランスというLv毎に属性変更出来るMATK5000%スキルがある。
 もはやそれでいい。他職はただの苦行。だがそれがいい。

・イベントには参加しよう
 ほぼ常時特殊転送とかが使える状態。

https://nyamen2828.blog.fc2.com/blog-entry-98.html


・デイリークエストやろう
>「クールタイムがあり、繰り返し行えるクエスト・常設イベント」をまとめる。
>クールタイムはクエストウィンドウで確認できる。
http://www.roquest.work/index.php?%E3%83%87%E3%82%A4%E3%83%AA%E3%83%BC%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88


・ワールド倉庫を活用してアイテムとZenyを移動させよう
 →つまり特定サーバにこだわる必要がない
・装備は課金で買えるパックが圧倒的に強い。
 正直復帰者でもこっちのセットのほうが良い気はする。

職業スペシャルチケット
https://ragnarokonline.gungho.jp/store/job-special-ticketp.html

・クエスト経験値がうまい。
 経験値テーブル変わりすぎてLv99時代の感性ではついていけない。
 現時点で最大Lv200・・・

・ディーヴァ装備がすごい
3次職ならJOB60から参加出来るメモリアルダンジョンで入手出来る装備。
属性と攻撃オプションがランダムで付く凄まじいガチャ。
装備Lv150からなので世界はコレ一色になる?
新キャラ作る時のスタートダッシュに難儀する感じがした。
特に完全ソロで身寄りがない場合はスタダの出来なささに嘆くかも。

ROクエスト案内所
http://www.roquest.work/index.php?RO%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E6%A1%88%E5%86%85%E6%89%80

オススメJOB稼ぎクエスト

七王家とユミルの心臓
http://www.roquest.work/index.php?Prontera#Banquet_For_Heroes

テラグローリア
http://www.roquest.work/index.php?Prontera#Terra_Gloria



ROスキップ対象クエスト
https://www.kopeya.jp/korokororo/quest/entry125.html

RO公式で露店情報がある 例えばジンベエザメフロート
https://rotool.gungho.jp/torihiki/index.php?item=480220&make_flag=0&world=13&item_name=%E3%82%B8%E3%83%B3%E3%83%99%E3%82%A8%E3%82%B6%E3%83%A1%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%5B1%5D&card=-1&attribute=-1&star=-1&enchant=-1


有志?が調査した露天価格
http://unitrix.net/?w=Breidablik&i=%E3%82%B8%E3%83%B3%E3%83%99%E3%82%A8%E3%82%B6%E3%83%A1%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%5B1%5D

スキルツリー調査
https://www.roziten.net/skill/%E3%82%B5%E3%83%A2%E3%83%8A%E3%83%BC/?0=1&1=1&2=1&3=3&4=1&5=3&6=1&8=3&9=5&15=3&16=3&22=3&23=3&29=3&30=3&36=1&37=1&44=3&51=3&58=3&65=1

サモナー情報
https://www.rokaiteki.com/entry/doramuskill

ROパッチスレまとめ
http://blog.livedoor.jp/patchmatome/

RO
【2022キャンプ】釣り設定メモ
http://blog.livedoor.jp/patchmatome/archives/57050967.html

ブートキャンプ202210用スプシ
https://docs.google.com/spreadsheets/d/1Obc0Q4MJA4WvFAy8Ij0e8Xe1KF6q65Mpe-bp_0_0W6c/edit#gid=0

RO公式ブログ
https://ro-blog.livedoor.biz/

週間ROチャレンジ
http://ro-challenge.blog.jp/

職業解説
【ドラム講座】初心者向け支援イヌハッカドラム講座【2022年版】
http://ro338.blog.jp/archives/28584538.html



データ



RO経験値テーブル 2022
https://ragnarokonline.gungho.jp/gameguide/character/exp-table.html

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

ALT押しながら右クリックで倉庫とかカートに即打ち込めるのが便利。
このエントリーをはてなブックマークに追加 mixiチェック

3
Azure Powershellでの挙動を制御するのにだいぶパワーシェル依存になるのだが
複数のVirtualMachineを停止させたりSnapshotを取るなどの行為をすると
大体は $vmname = dopmachine のようなハードコーティングになる。
ただそれだと汎用性が死ぬので汎用性で引数かiniによるリスト化を考えないといけない。

バッチからの引数を段々に引き継がせるかなりいびつな構造でも最終的には
コマンドで指定出来るんで汎用性でコレで良いかもしれない。

例えばコマンドプロンプト実行時に
script.bat rg-name-dop dopmachine bktype

みたいな引数を3つ渡して色々分岐させて
PowerShell側に渡して動かせればまぁそれで御の字。
いや最初からbatでも良いのだが企業ソフトは
powershellでの起動をサポートしてないことが多いので

バッチで起動 → 核心処理はpowershellのような動かし方をする。
これも業務アプリではなく基盤系処理になるので
世間の「開発者」というイメージからはだいぶかけ離れた話だと思う。。。




で、引数3つ入れたあとコマンドプロンプト上でも3つ引き受けるモノを用意

REM Azure上のリソースグループネーム
SET rgname=%1

REM Azure上のVirtualMachine名称
SET vmname=%2

REM バックアップ処理オプション
SET bktype=%3

次にpowershellの方に引き渡す

script.ps1 %rgname% %vmname% %bktype%

Param(
$psrgname, #コマンドプロンプトから受け取る%1の中身
$psvmname , #コマンドプロンプトから受け取る%2の中身
$bktype #コマンドプロンプトから受け取る%3の中身
)

多分コレデヨイ(Cvムラクモ)
このエントリーをはてなブックマークに追加 mixiチェック

前記事もヨロシク

WindowsPowerShellを使ってみる1
http://doplxyz.livedoor.biz/archives/52166964.html



ログ取り実装はバッチ処理の宿命である、コレが出来ないと「で、何が原因だったの?」が突き止められないのだ。
というわけでコレを重点的に調べる。

まず、打ち込んだコマンドだけ出力するだけならコレでいいようだ。
$LogOutputDateはオジリナル変数なので各自適当に。
保存フォルダは各自適当に。

$LogOutputDate = Get-Date -Format "yyyyMMddhhss"
Get-history > ( 'C:\Users\xxx\Desktop\仕事\script\log\' + $LogOutputDate + '.log' )


で、これををそのままps1に書き出して読み込んだらエラー。

out-file : パス 'C:\Users\xxx\Desktop\莉穂コ欺script\log\202105050320.log' の一部が見つかりませんでした。
発生場所 C:\Users\xxx\Desktop\仕事\script\ps1\logoutput.ps1:2 文字:1
+ Get-history > ( 'C:\Users\xxx\Desktop\莉穂コ欺script\log\' + $LogOutputDa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], DirectoryNotFoundException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand


原因は文字化けでピンときた、UTF-8(BOM付き)でコードを保存していなかった。
こんな所で躓くとかWindowsのデフォルト設定でPowerShell使わせる気無いだろって気分になる。

ちなみに関数化してないので直接呼び出せる。
なんかこういう所ってプログラムの良く分からん所だよね。

そもそも関数化する理由はハードコーティングを避けて出来るだけ手直し部分をへらす事だと思う。
別に毎回同じファイル名を指定する作り方でもいいんだけど同じ単語100回使ってると、それを変更する場合死ぬほど置換えないといけないし、不要文字巻き込んだ置換え事故が発生するからね。

尚ココで日付コードがミスりまくってたので修正した。


yyyyMMddhhss
👇
yyyyMMddHHmmss

function global:commandhistory {
$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
Get-history > ( 'C:\Users\xxx\Desktop\仕事\script\log\' + $LogOutputDate + '.log' )
}


とりあえず関数化するとこう?
余計な重複を避けるため秒まで数えて保存するという安直さだけどまあ使えるべ。

で、そもそもこんな手間かけなくてもログ取りでは根本的に便利なコマンドがあって超有名どころだと
Start-Transcript
Stop-Transcript
だと思う。
これの制御が全然出来ないので頑張ろう。
企業人は難しく作り杉なんだよ・・

まず、単にコマンドだけ使うとログ吐き出し先がC:\Users\xxx\Documentsと勝手に決められてしまうのでここの制御をする必要がある。安直に組むならこれだけでよい。

Start-Transcript C:\WORK\histry.log

ただしこれだと常に同じファイルを上書きするのでスクリプトが走った時のタイムスタンプを付けて上書き防止を兼ねるならこう。

$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
Start-Transcript ( 'C:\WORK\' + $LogOutputDate + '.log' )


もうひと工夫付けて保存先フォルダも関数化するならこう。


$LogOutputDate = Get-Date -Format "yyyyMMddHHmmss"
$HistoryLogDir = "C:\WORK\'"
Start-Transcript ( $HistoryLogDir + $LogOutputDate + '.log' )


あとはこれを関数で括るなりすればOK?
この辺りの挙動で分からないのが、関数で括った処理の中で変数組むとその処理の中でしか変数が使われないんだよね。

ある程度はps1を呼び出す前の段階で変数定義しておかないと言うこと聞いてくれないモノが出来上がりそうで次はこの辺りを制御したい。
このエントリーをはてなブックマークに追加 mixiチェック

1年くらい前から開発と構築(のド素人)に配属変わりました。
日々慣れないことの連続でホゲェーってなってますがまぁ死にはしないので頑張りましょう(げそ

今日のお題目です。

  • WindowsPowerShellを導入してみる

からの、注意事項ですがコマンドプロンプトで出来ることはPowershellで全てできます。コマンドも全て所有しています。余裕があればCMDは全部PowerShellに置き換えて良いと思いますが、細かい所で出力結果と挙動が違うので検証的な意味でも単純置き換えは相当難しいでしょう。
dirコマンドを入れた場合分かりやすく顕著かと思います。



サーバに入れて使うことを前提にしてるのでだいたいは導入有無判断からスタートです。
あまりにも古いServerで無い限りデフォルトでWindowsPowerShellが入っているのでアップデートする必要はありません。
ただAzurePowerShellを使う場合7.xが必要だったりするので、アップデートしておいた方が根本的には対応楽です。
WindowsPowerShellのバージョンを上げずにAzurePowerShellを使わせろとなった場合.Net Frameworkを更新しないといけない場合もあり、調整がクソ面倒になります。

余談ですがWindowsUpdateで.Net Frameworkが勝手に更新された場合、開発アプリが動かなくなる等があるのでバージョン変動には本当気を配る必要があります。企業製品のバージョンがいつまでも古いのは動かない原因を探す、対応するが面倒な点もあるので致し方ない所ですね。


WindowsPowerShellの最新版はGithubにあります。
余程の事が無い限りプレビュー版を使うのはやめておきましょう。
開発途上にありがちなバグが入ってたらどうするんだ?となります。


大抵のWindows環境であれば執筆時点で「PowerShell-7.1.3-win-x64.msi」が適合すると思います。
余程の事情が無い限りOSの最大bit数に合わせたVerで良いと思います。
64bitOSに32bitアプリを入れるのは殆どの場合、納品時の説明で「無用な何故?」の質問を招くのでオススメできません。

GITHUB|WINDOWS POWERSHELL
https://github.com/PowerShell/powershell/releases

インストール方法はダウンロードしたインストーラをそのまま実行すればOKです。
ただし「数百台のパソコンにまとめてインストールさせる」ような特殊な事例がある場合は、MSサイトのサイレントインストールコマンドを応用すると良いと思います。
手法は玉石混交だと思うので次の機会にでも。




実は初期環境では殆ど何も動きません。
原因はセキュリティレベルによる動作停止です。

WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する
https://www.atmarkit.co.jp/ait/articles/0805/16/news139.html

大抵Restrictedになっており躓くと思います。
企業のノウハウって意外とこういう初動が抜けてる事が多いです。

次。

このBlog書いてる時点でも漠然と何学べば良いか分からない状態なのでサンプルを探します。
色々と有ると思いますが、企業人としては大抵はログ取得辺りで難儀するのではないでしょうか。
あと、引き算割り算は良いんですが構文としてよく見るのはfunctionでコレがいまいち分かりませんのでまずこれから。

Windows PowerShell 入門(6)−関数編1
https://codezine.jp/article/detail/2491

というわけでコードを作った。

PS C:\WINDOWS\system32> function hello { write-host "hello powershell world!!" }
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32>


ワイの中の理解ではこう

function 関数呼び出し用文字 { コード } と組む事で必要な時に呼び出しが可能になる。
で、ps1で作ったコードの中は

function 関数呼び出し用文字1 { コード }
function 関数呼び出し用文字2 { コード }
function 関数呼び出し用文字3 { コード }

みたいな塊で作られてて
ps1を単体で読み込んだだけでは実行されないように作る。
そうしないとps1読んだ時点で直列に動作しちゃうからね。

なのでお遊びコードを作った

function hello { write-host "hello powershell world!!" }
function enl { write-host "青は灰に" }
function res { write-host "緑は塵に" }

powershellに直接読ませて使った結果はコレである

PS C:\WINDOWS\system32> function hello { write-host "hello powershell world!!" }
PS C:\WINDOWS\system32> function enl { write-host "青は灰に" }
PS C:\WINDOWS\system32> function res { write-host "緑は塵に" }
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32>


じゃあコレをps1ファイルに記述して食わせた場合どうなるか

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> hello
hello : 用語 'hello' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されませ
ん。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してくだ
さい。
発生場所 行:1 文字:1
+ hello
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (hello:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\WINDOWS\system32>


認識しない。
どうやら関数の前にglobal:がついてないと呼び出しても使えないらしい。
コードを以下に書き換えて実施した。

function global:hello { write-host "hello powershell world!!" }
function global:enl { write-host "青は灰に" }
function global:res { write-host "緑は塵に" }

結果は・・・

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> hello
hello powershell world!!
PS C:\WINDOWS\system32> enl
髱偵・轣ー縺ォ
PS C:\WINDOWS\system32> res
邱代・蝪オ縺ォ
PS C:\WINDOWS\system32>



関数で呼び出した文字が何故か化ける。
これは$OutputEncodingがUS-ASCIIになっている事が問題かと思ったのだが
ps1のファイル保存時文字コードが「UTF-8(BOM付き)」じゃないとなるらしい。

PS C:\WINDOWS\system32> C:\Users\xxx\Desktop\仕事\script\ps1\hello.ps1
PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32> $OutputEncoding = New-Object System.Text.ASCIIEncoding
PS C:\WINDOWS\system32> $OutputEncoding


IsSingleByte : True
BodyName : us-ascii
EncodingName : US-ASCII
HeaderName : us-ascii
WebName : us-ascii
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.EncoderReplacementFallback
DecoderFallback : System.Text.DecoderReplacementFallback
IsReadOnly : True
CodePage : 20127



PS C:\WINDOWS\system32> enl
青は灰に
PS C:\WINDOWS\system32> res
緑は塵に
PS C:\WINDOWS\system32>


というわけでシェル化した文字の呼び出しだけでもコレだけトラブルがある。
企業でこれをやると「問い合わせして答えもらって解決して」「影響も聞いて」「ネットにある答えは最終手段」となるので非常に鈍足となるのである。

次記事もヨロシク

WindowsPowerShellを使ってみる2
http://doplxyz.livedoor.biz/archives/52166986.html
このエントリーをはてなブックマークに追加 mixiチェック

未だこれって正直どうなん
それともスマホから編集出来るような管理画面てある?

追記
ストアからアプリを見つけた
使いやすいかどうかはちょっと分からん

chrome

このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ