インドネギヤ王国情報技術開発局 (original) (raw)

この広告は、90日以上更新していないブログに表示しています。

はじめに

マシン情報

ストレージがHDDなので、SATA3の理論上限値6Gbpsで7200rpmであることが最大のボトルネックと思います。

単にSATA3のSSDに交換するだけでも3倍以上の高速化が見込めそうでしたが、 今回は台湾?のTeam製SSD(M.2 NVMe)1TBがほぼ1万円で購入できたので、これを使用します。

M.2(NVMe)はSATA3の5~10倍の高速になるそうで、同じ容量のSATA SSDとほとんど価格差が同じか数千円だったのでM.2(NVMe)を選びました。

この耳慣れないM.2というのは、マザーボード上のインターフェース規格らしく耳慣れた名称としてはPCIeなど含めモバイル用途の規格だそうです。

またNVMeは接続方式のことらしいです。自分もよくわかりませんので正確かつ詳細は別途確認してみてください。

商品ページを見ても、M.2=NVMeのSSDであるという認識でも間違いはないと思いますが、厳密には両者は全く異なる規格なので注意です。

つまり、M.2(SATA)とM.2(NVMe)という2種の製品が存在するようです。

たぶんSATA→PCIeへの変換ボードなんかはこういう状態になると思います。

したがってM.2にしたからといって、爆速にならない場合はここを見落としていると思います。あと、世代を表すGen 3やGen 4だったり、ピンの数なども確認してみてください。

交換作業

交換後のセットアップを省略できるクローニングも考えましたが、適当なクローニングツールがなかったのと、大雑把でめんどくさがりな筆者が5年も使っていれば設定とかごちゃごちゃになってるのでこの際まっさらにしていきます。

したがって、作業はクリーンインストールの手順となります。

マザーボードがM.2に対応していることを確認してから作業しましょう。

データや設定のバックアップ

クリーンインストールツールの準備

MS公式ページからツールをダウンロードしておきます。

www.microsoft.com

「ツールを今すぐダウンロード」をクリックするとダウンロードが始まります。

インストールメディアの作成

任意の場所にダウンロードしたら、起動します。

USBとISOの2種類から選べます。

今回は適当なUSB(8GB以上)がなくBD-Rが余っていたので、以下の手順ではBD-R作成を行います。

「同意する」を押します。

「別のPCのインストールメディアを作成する」を選択し、「次へ」を押します。

「このPCにおすすめのオプションを使う」にチェックを入れたままで、「次へ」を押します。

※チェックを外すと、言語やエディション等を変更できます。

「ISOファイル」を選択し、「次へ」を押します。

ISOの保存先選択のダイアログが出てくるので、任意の場所に保存します。

「DVD書き込み用ドライブを開く」を押します。

特に何もWindowsの設定をいじっていなければ、Windows10標準「DVDディスクイメージ書き込みツール」が起動します。

空のDVDやBD等を入れて、「書き込み用ドライブ」を確認します。

また、「ディスクイメージファイル」が先程保存したISOファイルであることも確認します。

正しく選択されているのを確認できれば、「書き込み」を押します。

書き込みが完了したら、「閉じる」を押します。

インストールメディアの作成ツールがまだ起動していれば、「完了」を押します。

ストレージ交換

PCの電源を落とし、念のため電源スイッチやアダプタ、バッテリー等をOFFまたは取外します。

静電気対策を施し、HDDと取り外します。

M.2 SSDを取り付けます。このとき、スペーサやネジはM.2用があるので事前に用意しておきましょう。今回はマザーボードに同梱付属していたものを使用しました。

クリーンインストール

インストールメディアから起動

PCの電源を入れます。

予めBIOS設定からブートドライブを変更しておくか、BIOS起動時にブートメニューキーを押すなどして開き、手動で光学ドライブにを選択します。

インストール

セットアップ開始画面が起動します。ここからは新規で組み立てた時と同様のWindows10のインストール作業になります。

「今すぐインストール」を押します。

日本語版、日本語キーボードになっていると思うので、特に問題なければ「次へ」を押します。

今回はクリーンインストールなので何も入力せずに、「プロダクトキーがありません」を押します。

インストールするシステムを選択し、「次へ」を押します。 筆者の場合、Windows10 proを選択しています。

「同意します」にチェックを入れて、「次へ」を押します。

パーティション設定をしたいので、今回は「カスタム」を押します。

ドライブを選択して「次へ」を押します。

「サイズ」を入力して、「適用」を押します。

今回はシステムドライブを500GBとしました。最小容量で運用したい場合は80GBくらいになるようすればいいと思います。

残りの未割り当て領域は、インストールが完了したあとでデータ保存用途のドライブとして割り当てます。

ちなみに、1GB=1024MBです。

「OK」

パーティション割当が完了したので、そのドライブを選択して「次へ」を押します。

処理が終わるまで待ちます。

日本在住の日本人はたいてい「日本」でいいと思います。選択したら「はい」を押します。(あとで変更できます。)

特になければ「スキップ」を押します。(あとで追加できます。)

私用だし、あとで後で設定すればいいので、「個人設定」で大丈夫です。

今回はMSアカウントではなく、ローカルアカウントを作りたいので「オフライン アカウント」を押します。 嫌なら後でアカウントの変更や削除などできます。

ローカルアカウントを設定していくので「制限付きエクスペリエンス」でいいです。

任意のアカウント名を設定します。 嫌なら後でアカウントの管理とかから変更や削除などできます。

パスワードを設定します。未入力でも行けたかもしれません。必須だとしても後で変更できます。

秘密の質問3つを選び、設定します。

こういうおすすめ機能・設定は、基本的にすべてオフ(無効)をおすすめします。必要なら後で設定すればいいです。

「同意」を押します。

「スキップ」を押します。

コルタナはいらない邪魔な人なので、「今は実行しない」を押します。

インストール設定は以上で、待っていればログオン画面またはデスクトップに遷移しています。

あとは、各種アプリケーションのインストールやシステムの設定、Windowsアップデート、データ移行を実施していけばOKです。

おわり

M.2 SSD、感動した。

はじめに

SQLエディタの実装(SELECT命令編)

参考excel-ubara.com qiita.com

今回は、SELECT命令のみ実装していきます。

実装

※本記事では、SQLインジェクション等のセキュリティ対策は考慮していません。

まず、プロバイダを設定します。

本記事の範囲ではモジュールを分ける必要は特にないですが、今後の拡張を考慮して、

今回はモジュール名:Comを作成し、ここに記述します。

Public Const Provider As String = "MSDASQL" Public ConnectionString As String

次に、モジュール名:Initを作成し、DB接続設定を進めます。

今回はEXCELの同Book内のシートをデータベースとして運用していきます。

Sub initDB() Com.File_Name = ThisWorkbook.FullName Com.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & "DBQ=" & Com.File_Name & "; ReadOnly=True;" End Sub

テスト用SQLを実行する処理は以下のとおりです。

SQLの記述にはシート名:SQL、実行結果の出力先にはシート名:resultとしています。

主処理部はモジュール名:SqlBrowserに作成し、以下のサブプロを記述します。

Sub SqlBrowser()

Dim thisSheet As String
thisSheet = "SQL"

Dim outSheet As String
outSheet = "result"
    
Dim row As Long
Dim col As Long
row = 1
col = 1


Dim i As Long
i = 0
Do While i <= 10000
    If Worksheets(outSheet).Cells(row + i, col).Value = "" Then
        i = i + 1
    End If
    Worksheets(outSheet).Rows(row + i).ClearContents
Loop


Call init.initDB
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

Dim sql As String


sql = Worksheets(thisSheet).Cells(1, 2).Value


Call Sql_select.Sql_select(cn, rs, sql)


Dim fld As ADODB.Field
Dim j As Long
j = 0


For Each fld In rs.Fields

    If IsNull(fld.Name) Then
        Worksheets(outSheet).Cells(row, col + j).Value = "null"
    Else
        Worksheets(outSheet).Cells(row, col + j).Value = fld.Name
    End If
        
    j = j + 1
Next fld

i = 1
j = 0


Do Until rs.EOF

    Dim f As Long
    For f = 0 To (rs.Fields.Count - 1)

        If IsNull(rs.Fields(f)) Then
            Worksheets(outSheet).Cells(row + i, col + f).Value = ""
        Else
            Worksheets(outSheet).Cells(row + i, col + f).Value = rs.Fields(f)
        End If

    Next f
    
    i = i + 1
    
    rs.MoveNext
Loop

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

End Sub

主処理部からSQL実行部を呼び出します。

モジュール名:Sql_selectを作成し、以下のサブプロを記述します。

Sub Sql_select(cn As ADODB.Connection, _ rs As ADODB.Recordset, _ sql As String)

cn.Provider = Com.Provider
cn.ConnectionString = Com.ConnectionString
cn.Open

rs.Open sql, cn, adOpenStatic

End Sub

実行結果

テスト用のテーブルは以下のシート名:tblTestを作成し、内容は以下の通り。f:id:indonegiyaland:20220409221152p:plain

また、SQLエディタは**シート名:SQL**を作成し、以下の通り。f:id:indonegiyaland:20220409221500p:plain

今回テスト用に実行するSQLは以下の通り。

select * from [tblTest$] where id >= 200

実行ボタンを押すと、シート名:resultに列名付きで出力します。

この例では、idが200以上のレコードを抽出し出力されているはずです。f:id:indonegiyaland:20220409221743p:plain

日付データとかの扱いや表示が課題かなあ...

おわり

はじめに

ファイル一覧取得

基本となるソースコードは以下を参考にしています。excel-ubara.com

FileSystemObjectを使用するため、予め「ツール」→「参照設定」から**Microsoft Scripting Runtime**を有効にしておく必要があります。

プログラムの大まかなかな流れとしては、

  1. フォルダ選択するためのダイアログ操作
  2. 結果出力シートの初期化
  3. サブフォルダ一覧の取得
  4. ファイル一覧の取得

となります。

以下が、全体のソースコードです。

Sub ファイル一覧() Dim objFso As FileSystemObject Dim objFldr As Folder Dim objSubFldr As Folder Dim objFile As File Dim strDir As String Dim i As Long

With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "フォルダを選択"
    .AllowMultiSelect = False
    If .Show = -1 Then
        strDir = .SelectedItems(1) & ""
    Else
        Exit Sub
    End If
End With

Set objFso = New FileSystemObject
If Not objFso.FolderExists(strDir) Then
    MsgBox ("指定のフォルダは存在しません")
    Exit Sub
End If

Cells.ClearContents
Cells(1, 1) = strDir
Cells(3, 1) = "ファイル名"
Cells(3, 2) = "サイズ"
Cells(3, 3) = "更新日時"

i = 4


Set objFldr = objFso.GetFolder(strDir)
For Each objSubFldr In objFldr.SubFolders
    Cells(i, 1) = objSubFldr.Name
    i = i + 1
Next


For Each objFile In objFldr.Files
    With objFile
        Cells(i, 1) = .Name
        Cells(i, 2) = WorksheetFunction.RoundUp(.Size / 1024, 0)
        Cells(i, 2).NumberFormatLocal = "0 ""KB"""
        Cells(i, 3) = .DateLastModified
        i = i + 1
    End With
Next

Set objFso = Nothing
Set objFldr = Nothing
Set objSubFldr = Nothing

End Sub

実行すると、「フォルダを選択」ウィンドウが起動します。 ファイル一覧を取得したいフォルダを選択します。 今回はtestフォルダを選択します。

f:id:indonegiyaland:20220406140113p:plain

フォルダ指定

また、testフォルダの内容は以下の通りです。

f:id:indonegiyaland:20220406140314p:plain

testフォルダ

ファイル一覧の取得結果は以下の通り出力します。

f:id:indonegiyaland:20220406144652p:plain

一覧

おわり

はじめに

indonegiyaland.hatenablog.com

環境

インストール

本環境にはPython2系も存在しており、Python3系はpython3pip3で環境設定されている。

今回は3系にインストールしていく為、pip3コマンドを使用している。

このへんは自分の環境を必ず確認する。

ターミナルはzshで実施している。

PyStanに必要なCythonとNumpyをインストール。

pip3 install Cython numpy --user

PyStan 2.19.1.1のインストール。

pip3 install pystan==2.19.1.1 --user

さらにephemをインストール。

pip3 install ephem --user

Prophetをインストール。

fbprophetであることに注意

pip3 install fbprophet --user

matplotlibやpandas、plotly(jupyter notebook用)など他に必要なパッケージがあればインストールしておくとよい。

インストールは以上で終了。

動作確認

(省略)

おわり

はじめに

環境

インストール

まず、Anaconda Promptを管理者権限で起動する。

予めPyStanまでインストールを済ませた仮想環境に入る。

今回の例では、myenv1という名前の仮想環境で進める。

conda activate myenv1

ephemとplotlyをインストールする。

conda install ephem plotly

途中でProceed ([y]/n)?ときかれるのでyで進める。 以降の手順でもよく聞かれるので同様に進める。

PlotlyはPandasのコードを実行した時に

Importing plotly failed. Interactive plots will not work.

というエラーが出たので、一応インストールしておく。

次に、Prophetをインストールする。fbprophetであることに注意。

conda install fbprophet

インストールが完了すれば、仮想環境を終了する。

conda deactivate

動作確認

Anaconda Navigatorを起動し、画面のApplications on項目をmyenv1にする。

f:id:indonegiyaland:20220401165546p:plain

そして、jupyter notebookを起動する。 サンプルプログラムは以下の記事を参照引用した。

qiita.com

サンプル:

import pandas as pd from fbprophet import Prophet

df = pd.read_csv('test.csv')

m = Prophet(daily_seasonality=True) m.fit(df)

future = m.make_future_dataframe(periods=365) future.tail() forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

実行結果:f:id:indonegiyaland:20220401171355p:plain

図も出力してみる。

fig1 = m.plot(forecast)

実行結果:f:id:indonegiyaland:20220401171515p:plain

インストールできたようだ。

おわり