2022年6月7日火曜日

Xcodeのインストールがなかなか終わらない

 Xcodeをアップデートしているときに、なかなかインストールが終わらないとか、何か問題が起きて止まってる?みたいなことがあると思いますが、ただ単純に時間が掛かっている場合があるようです。その場合には、インストールログをtailで見て動いているか確認できます。

ちなみに、アップデートが完了するまでに約1時間...やる気が削がれますw

tail -f /var/log/install.log

2021年11月12日金曜日

Vue.jsでAvoid mutating a prop directly since the value ... が発生した場合の対応メモ

 Vue.jsで「Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: xxxx」というワーニングが出たので、以下のような対応をして回避しました。


発生原因

親コンポーネントから渡すデータを、子コンポーネント側で変更しようとしていたため出たワーニングと思われます。
エラーメッセージをGoogle翻訳で訳してみると「親コンポーネントが再レンダリングされるたびに上書きされるため、Propを直接変更することは避けてください。...」らしいです。

対応方法

子コンポーネントで値を代入している箇所があったので、該当箇所を修正しました。その後ワーニングは出なくなりました。

その他情報

vue 2.6.12
typescript 3.9.7

2021年11月10日水曜日

WSL2(Windows Subsystem for Linux2)でnpm installやvue createなどが遅い件

 WSL2(Windows Subsystem for Linux2)でnpm installやvue createなどのコマンド操作が遅い

本日2本目のブログ投稿です^^;つい先日Surface Pro 8を購入して、vue.jsの環境を構築しようとWSL2を使ってみたのですが、npmやvue createといったコマンド操作が非常に遅くて困ってました。結局解決できず、WSLで設定しなおすことにしたので、その手順をメモ次いでに記載します。
※今後解決できれば、それもブログに書きたいと思っています。

作業手順

(1)Windows PowerShellを起動する。

(2)コマンド「wsl --list --verbose」と入力し、現在の状態を確認する。
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

(3)コマンド「wsl --set-version Ubuntu-20.04 1」と入力して、実行環境をWSL2からWSLに切り替える。数分かかるのでしばらく待機する。

(4)終わったら、再度(2)のコマンドを実行して、状態を確認する。
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

WSL2からWSLに切り替えたことにより、npm installやvue createのコマンド操作の時間が改善されました。すごい早いわけではないですが...
WSL2だと、Windowsのファイルシステム(/mnt/c/xxxx)を参照すると非常に遅いといった書き込みなど多数見かけましたが、私はLinux上のhomeディレクトリで作業していたので、関係ないよなぁと思いつつ、たぶんネットワークのI/Oが遅いのかなぁと思って、ネットを徘徊していましたが、遅い理由が見つけられませんでした。

しばらくはWSLで様子をみつつ、WSL2のほうもたまにネットで調べてみようと思っています。

iPhoneのMagSafeバッテリーパックについて

iPhoneの背面に取り付けるMagSafeバッテリーパックを購入!

前回の投稿からだいぶ間が空いてしまいましたが、久しぶりのブログ投稿です^^;1年ほど前からコロナ禍で在宅勤務が増えて、自分の勉強を兼ねてブログを書こうと思っていましたが、やっと書く気になりましたw
基本的にはプログラミングネタを書くのですが、最近買ったガジェットとかも紹介してみようと思います。
※アフィリエイトやってないので、自由気ままに書きます。

購入の動機

iPhone12 Pro Maxを使用しているのですが、MagSafeで充電できるモバイルバッテリーがあったら便利だなぁと思い購入しました。

結論

先ほど述べた通り、アフィリエイトではないので自由な感想を述べますが、率直に申し上げてコスパが悪く、期待していたレベルのものではないなぁと思っています。完全に私の事前調査不足です。この製品を有効に活用するためには、製品の特長を理解して使うようにする必要があると思います。とはいえ、せっかく買ったので、外出時には積極的に装着して使うようにしています。
以下、良い点、悪い点、総評など好き勝手に述べていきます。

良い点

  1. アップル純正のモバイルバッテリーなので、安心して使用できる。アップルの純正ケースをつけていても使用することができ、デザインも良いと思っています。
  2. iPhoneにMagSafeで取り付け・取り外しができるので楽です。ただ、MagSafeモバイルバッテリーパック自体はライトニングケーブルで接続して充電する必要があります。
  3. モバイルバッテリーのほかに、MagSafe充電器のような使い方もできる。ただ、充電スピードまでは確認してません。

悪い点

  1. MagSafeバッテリーパックが満充電の状態でも、iPhoneを完全に充電することはできない。補助バッテリーみたいな感じ?で、iPhone本体の電池の減りを緩やかにするイメージ。
  2. コストパフォーマンスが悪い。MagSafeバッテリーパックの価格で、モバイルバッテリーがいくつ買えるだろうか...
  3. MagSafeバッテリーパック本体が滑りやすく、iPhoneに装着すると重みも増すので、落としそうで不安になる。
  4. 厚みがそこそこあるので、ズボンのポケットとかに入れるのは厳しい。重みも増すので、ちゃんとベルトとかしないとズボンが下がってくる。カバンにiPhoneしまうと、suica使いたいときに不便なので、そういう時は外してポケットに入れてます。

総評

外出先でiPhoneの電池残量が少なくなった時に、MagSafeバッテリーパックで充電しよう!みたいな使い方を想定している方は、この製品はやめたほうが良いと思います。MagSafeバッテリーパックのバッテリー容量は1460mAhで、iPhone12 Pro Maxのバッテリー容量は3687mAhです。MagSafeバッテリーパックはiPhone本体の半分以下となっているようです。
使い方としては、iPhone本体のバッテリー容量を増やすようなイメージで、MagSafeバッテリーパックを装着すると、iPhone本体の電池の減りが緩やかになります。

お値段は、アップル公式で11,800円(税込)しますが、純正品で、安心して使えて、iPhoneのバッテリー消費を緩やかにして、さらにデザインがとても好きって人は買ってもよいのかもしれません。
単純に外出先でiPhoneを充電したいという方は、ほかのモバイルバッテリーを検討することをお勧めします。

2018年2月17日土曜日

Windows10をアップデートしたらインターネットに接続できなくなった(バージョン1709 Fall Creators Update)

Windows10で突如インターネット接続不可に...

さて、2018年も早いもので2月となり、確定申告の季節がやってきました!私は個人事業主なので、確定申告の準備のためPCを起動、弥生の青色申告オンラインを使用しようとしたら、まさかのインターネットに繋がらないというトラブルに見舞われました...

同様にお困りの方もいるかもしれないので、こちらに私が対応した方法を記載します。

Windows10のFall Creators Update(バージョン1709)が原因?

Windowsを起動したら、例のごとくWindows Updateが自動で走り、アップデート完了後にWindowsにログインしたらインターネットに繋がらないトラブルが発生しました。
インターネットに繋がらない問題のほかに、なぜかログインを2回行わせようとする不可解の動きもありました。PCがインターネットに繋がらないので、iPhoneでググって調べながら再起動やら、シャットダウンやら、ネットワークの再設定を試しましたが解決せず。
結局、Windowsを前のバージョンに戻して解決することにしました。

Windows10で前のバージョンへの戻し方

戻し方は、他のサイトに詳しくありますが、概ね以下の手順を踏むことで戻すことができます。
  1. 画面左下の「スタートボタン」をクリック
  2. 「設定」ボタンをクリック
  3. Windowsの設定画面の「更新とセキュリティ」をクリック
  4. 「回復」をクリック
  5. 前のバージョンのWindows10に戻すにある「開始する」ボタンをクリック
  6. ウィザードっぽいのが立ち上がるので、あとは手順通りに進めるだけ。途中、「更新プログラムをチェックしますか?」とか聞かれますが、インターネットに繋がらないので「チェックしない」を選べばOK。
ただし、この手順ではアップデートしてから10日以内でないとできないらしい。

復元後のバージョンは1703

無事に前のバージョンへの復元が終わりログインすると、先ほどのログインを2回行わせる不可解な動きは解消され、インターネットへも問題なく接続できました。
これで、ようやく確定申告に向けて作業ができるようになりました!

2017年6月29日木曜日

Excel VBAでMySQLからデータを取得する

Excel VBAでMySQLからデータを取得して表示する

久しぶりにExcel VBAに触れる機会があったので、サンプルプログラムを載せます。久しぶりすぎていろいろダメなところがあるかと思いますがご愛嬌ということで^^;

環境

 本投稿のサンプルプログラムは、以下の環境で作成しております。
  • Windows10 Pro
  • Microsoft Office 2013
  • MySQL 5.7.18

事前条件

MySQLのインストールやらは今回省略しております。よろしければ、以下のブログを参考にしていただければと思います。

MySQL側に以下のテーブルを準備する

エリアマスタ(m_area)
  1. エリアID(id)
  2. エリア名(name)
都道府県マスタ(m_pref)
  1. 都道府県ID(id)
  2. エリアID(area_id) ※エリアマスタとのリレーション
  3. 都道府県名(name)

ODBCデータソースアドミニストレータのユーザDSNに登録する

以下は参考例です。環境に応じて読み替えてください。ドライバは「MySQL ODBC 5.3 ANSI Driver」です。DSNを設定する際には「Connector/ODBC」をインストールする必要があります。

  • Data Source Name = "任意の名称" ※例:MySQL Database
  • Descripiton = "未入力"
  • TCP/IP Server = "localhost"
  • Port = "3306"
  • User = "root"
  • Password = "未入力"


参照設定(Microsoft ActivX Data Objects 6.1 Library)

参照設定をする際に、2.xや6.xなどのバージョンがありますが、特に古い環境で使用する予定がなければ最新のものを参照設定してあげればよいと思います。

クラスモジュール作成

データベースからの取得結果を受け取るクラスモジュールを作成します。この辺りの実装方法は好みなので、別に無理に作らなくてもよいです。
init()はJavaで言うとコンストラクタっぽいことをやるために実装しています。VBAでもコンストラクタはあるらしいのですが、引数を設定できないようなので、以下のようにしています。
データベースから取得したレコードをこちらのオブジェクトに設定して、Collection配列に格納しています。

オブジェクト名:AreaModel

Option Explicit

Private mAreaId As Integer
Private mAreaName As String
Private mPrefId As Integer
Private mPrefName As String

Public Function init(areaId As Integer, areaName As String, prefId As Integer, prefName As String)
    mAreaId = areaId
    mAreaName = areaName
    mPrefId = prefId
    mPrefName = prefName
End Function

Public Property Get getAreaId() As Integer
    getAreaId = mAreaId
End Property

Public Property Get getAreaName() As String
    getAreaName = mAreaName
End Property

Public Property Get getPrefId() As Integer
    getPrefId = mPrefId
End Property

Public Property Get getPrefName() As String
    getPrefName = mPrefName
End Property

標準モジュール作成

MySQLへの接続、SQLの実行、セルに値を設定して表示する、といった一連の処理を作成します。connectionStringやSQL文、セルに値を設定する部分はプログラムの見た目が悪くなるので、別functionに委譲しています。

オブジェクト名:M_DB

Option Explicit

Sub selectArea()
    Dim conn As New ADODB.connection
    conn.CursorLocation = adUseClient
    conn.connectionString = createConnectionString
    conn.Open
   
    Dim rs As ADODB.recordSet
    Set rs = conn.Execute(areaSelectSql)
   
    ' DBからの取得結果を配列に格納
    Dim areaList As New Collection
    Dim area As AreaModel
    Do While rs.EOF = False
        Set area = New AreaModel
        area.init rs.Fields(0), rs.Fields(1), rs.Fields(2), rs.Fields(3)
        areaList.Add area
        rs.MoveNext
    Loop
   
    ' DBから取得したデータをセルに配置
    showCells areaList
   
    ' 後始末
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
End Sub

Private Function createConnectionString()
    Dim connectionString As String
    connectionString = "Driver={MySQL ODBC 5.3 ANSI Driver};" _
        & " Server=localhost;" _
        & " Database=test201706;" _
        & " Uid=root;" _
        & " Pwd=;"
    createConnectionString = connectionString
End Function

Private Function areaSelectSql() As String
    Dim sql As String
    sql = "SELECT " _
        & "a.id as area_id " _
        & ",a.name as area_name " _
        & ",p.id as pref_id " _
        & ",p.name as pref_name " _
        & "FROM " _
        & "test201706.m_area as a " _
        & "inner join test201706.m_pref as p on a.id = p.area_id"
    areaSelectSql = sql
End Function

Private Function showCells(areaList As Collection)
    ' 先頭行
    Worksheets("Sheet1").Cells(1, 1).Value = "エリアID"
    Worksheets("Sheet1").Cells(1, 2).Value = "エリア名"
    Worksheets("Sheet1").Cells(1, 3).Value = "都道府県ID"
    Worksheets("Sheet1").Cells(1, 4).Value = "都道府県名"
   
    ' データ部
    Dim rowIdx As Integer
    rowIdx = 2
    Dim area As Variant
    For Each area In areaList
        Worksheets("Sheet1").Cells(rowIdx, 1).Value = area.getAreaId
        Worksheets("Sheet1").Cells(rowIdx, 2).Value = area.getAreaName
        Worksheets("Sheet1").Cells(rowIdx, 3).Value = area.getPrefId
        Worksheets("Sheet1").Cells(rowIdx, 4).Value = area.getPrefName
        rowIdx = rowIdx + 1
    Next
End Function

2017年5月26日金曜日

Windows10 ProでHyper-Vでubuntu16.04をセットアップ

大変ご無沙汰しすぎて、久しぶりの投稿です!
最近、我が家のPC老朽化に伴い、Thinkpad T470sを購入しました。Macのようなおしゃれな感じはないですが、仕事で使う道具としてはシンプルでとても満足しております!
それはさておき、今回購入したマシンは仕事で使用するために購入したので、OSもWindows10 Proにしました。Windows10 ProにはHyper-Vという仮想マシンが標準で使えるので、さっそくubuntu16.04をインストールしてみました。

Windows10 ProのHyper-Vにubuntu16.04をセットアップする大まかな作業手順


作業の大まかな流れは以下の通りです。作業を進めていくうえで、特に難しい点はなかったですが、端末によってはHyper-Vをセットアップする際にBIOSの設定変更が必要となる場合がありそうです。私のマシンもBIOSで設定を変えました。
  1. Hyper-Vのセットアップ
  2. ubuntuのisoイメージをダウンロード
  3. 仮想スイッチの作成
  4. 仮想マシンの作成とインストール

Hyper-Vのセットアップ


標準で使用できるとはいえ、初期状態では使える状態になっていないのでセットアップを行います。
コントロールパネル→プログラム→プログラムと機能を開きます。画面左側に「Windowsの機能の有効化または無効化」があるのでクリックします。Hyper-Vを選択状態にしてOKボタンをクリックします。
もしここで、Hyper-Vプラットフォームが選択できない状態の場合は、BIOSの設定を変更する必要があります。BIOSを起動して以下の項目を変更します。
Advanced → CPU Configuration → Execute Disable Bit → [Enabled]
Advanced → CPU Configuration → Intel(R) VirtualizationTechnology → [Enabled]
BIOSの変更が終わったら設定を保存して、再び上記の作業を行います。

ubuntuのisoイメージをダウンロード


以下のサイトからダウンロードします。このファイルを後で使用するので、適当な場所に保存します。
http://www.ubuntulinux.jp/download/ja-remix

仮想スイッチの作成


「Hyper-V マネージャー」を起動します。画面右側の「仮想スイッチ マネージャー」をクリックします。

仮想スイッチを新規作成します。「外部」を選択して「仮想スイッチの作成」ボタンをクリックします。その後、適当な名前を付けてOKボタンをクリックします。




仮想マシンの作成とインストール


仮想マシンを新規に作成して、ubuntuをインストールしていきます。Hyper-Vマネージャーの画面右側にある「新規」「仮想マシン」をクリックします。インストールはウィザードに従って進めていきます。


とりあえず「次へ」をクリックします。


仮想マシンの名前を入力します。任意のフォルダにしたい場合はフォルダも指定します。


第1世代か第2世代かを選択します。今回は第2世代を選択します。この辺りが気になる方は以下のサイトに説明が載っています。
https://technet.microsoft.com/ja-jp/library/dn282285.aspx


メモリの割り当てサイズを決めます。私のマシンではメモリに余裕があるので2GB割り当てました。必要に応じてサイズを決めてください。


前の作業で作成した仮想スイッチを選択します。


仮想ハードディスクの設定を行います。この手順通り進めた場合、仮想ハードディスクは作成されていないと思いますので、新規作成します。割り当てサイズはデフォルト値だと大きいと思いますので変更します。ひとまず30GB割り当てます。


前の作業でダウンロードしたisoイメージファイルを指定します。


最後に内容を確認して「完了」ボタンをクリックするとセットアップが行われます。


セットアップが完了したら仮想マシンを起動します。仮想マシンを起動する前に「セキュアブートを有効にする」にチェックが入っていると起動しないため、チェックを外します。作成した仮想マシンを右クリックして「設定」をクリックします。セキュアブートを有効にするのチェックボックスを外してOKボタンをクリックします。

作成した仮想マシンをダブルクリックして仮想マシンを起動します。ツールバーに電源ボタンがあるので、クリックすると仮想マシンが起動され、ubuntuのセットアップへと進みます。


この後の作業はubuntuのインストール作業となり、Hyper-V独自の作業ではないため割愛します。ウィザードの通り進めていけばubuntuのセットアップも問題なくできると思います。