カテゴリー: 技術系

  • apt autoremoveしたら

    aptで、個別にパッケージをdeleteしていたら、autoremoveしろと表示されたので、実行した。

    sudo apt autoremove
    

    その結果、概ね、不必要なパッケージは削除されたが、実際にサービスとして使っているパッケージも削除された。急に使えなくなったので、コマンドを調べたら存在せず。結局、もう一度、apt install した。こういうこともあるので、apt autoremove したら、機能確認はしよう。

  • WSL2でDockerを使えるようにインストールする

    自分のメモとして。

    前提として、WSL2のインストールは終わっている。

    Docker Desktop for Windowsをダウンロードする。下記のURLにアクセスして、「Get Docker」からダウンロードする。

    https://hub.docker.com/editions/community/docker-ce-desktop-windows/

    ダウンロードしたインストーラー(EXEファイル)を実行する。インストールのときに、「Install required Windows components for WSL2」にチェックが入っているので、WSL2対応もばっちり。

    インストールが終わったら、Windows10の再起動が入る。

    で、なにをしたらいいのかわからないので、チュートリアルを実施。

    チュートリアルの通りにやったら、チュートリアルのコンテナが立ち上がった。

    このコンテナがどこで動いているのか気になって、WSL2のUbuntuでpsコマンドをたたいてみると、dockerに関連したプロセスが起動しているので、WSL2の上で動作していることが確認できた。

    root      185  0.0  0.5 1463396 31664 pts/1  Ssl+ 20:06  0:00 /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-n

    Dockerのインストールというかセットアップが簡単すぎて、正直よくわからない。利用する側にしてみると、どのみちブラックボックスなので、このくらい簡単なのがいいのだろう。

  • デプロイしたアプリにアクセスしたら ”HRESULT からの例外:0x801310“ が発生した

    ASP.NET(MVC5)で作成したアプリを変更してデプロイした。デプロイ後、Invoke-WebRequestでアクセスしたところ、アプリケーションエラーが発生した。エラー内容は下記。

    Invoke-WebRequest : '/API' アプリケーションでサーバー エラーが発生しました。
    ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicK
    eyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はア
    センブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
    説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所について
    は、スタック トレースを参照してください。
    例外の詳細: System.IO.FileLoadException: ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform,
    Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見
    つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
    ソース エラー:
    現在の Web 要求の実行中にハンドルされていない例外が生成されました。障害の原因および発生場所に関する情報については、下の
    例外スタック トレースを使って確認できます。
    アセンブリ読み込みトレース: 以下の情報は、アセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1
    .0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' を読み込めなかった原因を調べるのに役立ちます。
    警告: アセンブリ バインドのログ記録がオフにされています。
    アセンブリ バインドのエラー ログを有効にするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1
    に設定してください。
    注意: アセンブリ バインドのエラー ログに関連するパフォーマンス ペナルティがあります。
    この機能をオフにするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] を削除します。
    スタック トレース:
    [FileLoadException: ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Cult
    ure=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリの
    マニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)]
       System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly
    , StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0
       System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly
    , StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +96
       System.Type.GetType(String typeName) +62
       System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +15
       System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2406
       System.Web.Configuration.CompilationSection.get_RecompilationHash() +110
       System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +551
       System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +59
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +155
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMap
    PathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception ap
    pDomainCreationException) +746
    [HttpException (0x80004005): ファイルまたはアセンブリ 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.
    1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセ
    ンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +552
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +122
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +737
    バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.8.4075.0
    発生場所 行:1 文字:1
    + Invoke-WebRequest http://xxxx:8080/api/xxxxCopy/
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest]、WebExce
        ption
        + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
    

    Visual Studioで開発してテストしていると何も問題がなかった。原因は、Web.configをデプロイしていなかったこと。Visual Studioの環境や.Net Framework 4.8の環境は、毎月更新されていく。その環境でコンパイルしたときに、もともとのWeb.configに記載された情報と新しくコンパイルされたものの情報が異なった。そのために、実行時にエラーになった。解決策としては、新しくコンパイルした方のWeb.configを使うこと。環境に合わせて変更する必要があれば変更する。

  • WSLからWSL2に更新する

    Windows10 Ver.1903でWSLからWSL2にしたので、メモ。WSL2が出たときの手順よりも、かなり楽になってて衝撃的だった。特に仮想マシンのプラットフォームの部分がmsiファイルでインストールではなく、コマンドで済んだので、楽。

    1. 「仮想マシン プラットフォーム」をコマンドで有効にする。

    Powershellを管理者として実行する。下記のコマンドを実行する。

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    PCを再起動する

    2. 規定のバージョンをWSL2に変更する

    Powershellを管理者として実行する。下記のコマンドを実行する。

    wsl --set-default-version 2

    3. 既存のWSLをWSL2に変換する。

    PCにインストールされている既存のWSLの名前を下記のコマンドで確認する。

    wsl -l -v

    次にWSL2に、下記のコマンドで変換する。(Ubuntu-20.04の部分は、上記のコマンドで調べた名前を入れる)

    wsl --set-version Ubuntu-20.04 2
    

    もう一度、「wsl -l -v」コマンドを実行し、WSLのバージョンが2になっているか確認する。

    wsl -l -v

    ■実際に試したところ

    PS C:\windows\system32>  wsl --set-default-version 2
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    PS C:\windows\system32>
    PS C:\windows\system32>
    PS C:\windows\system32>
    PS C:\windows\system32> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         1
    PS C:\windows\system32> wsl --set-version Ubuntu-20.04 2
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    変換が完了しました。
    PS C:\windows\system32>
    PS C:\windows\system32> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         2
    PS C:\windows\system32>
    

  • CTIMEの単位は秒

    Oracle DatabaseのV$LOCKテーブルのCTIMEの単位は秒。

    CTIME: 3600

    の場合は、3600秒なので、1時間。

  • WordやExcelのファイルをダブルクリックしてもM365のOfficeが開かなくなったときの対処

    Windows Updateなどの影響により、WordやExcelのファイルをダブルクリックしても、Micorosoft365のWordやExcelが開かなくなるときがある。既定のプログラムを調べても、WordやExcelなど正しいアプリが選択されている。そういう場合は、Micorosoft365のOfficeをクイック修復する。

    1. Windowsキーから、「設定」(歯車マーク)を選択し、「アプリ」を開く。
    2. 「アプリと機能」から「Microsoft365 Apps for Business」を選択し、「変更」を選択する。
    3. 警告画面が出るので、「はい」を選択する。
    4. 「クイック修復」を選択して、「修復」をクリックする。
    5. 確認が求められるので、「修復」をクリックする

  • Windows10でいつの間にかTortoiseGitのアイコンが表示されなくなった

    原因を調べたところ、Windows 10のオーバーレイアイコンの上限は15個まで。TortoiseGitの「Icon Overlays」の「Overlay Handlers」を表示すると、「There are currently 24 overlay handlers installed besides the ones Tortoise uses.」と表示されているので、現状、24個のオーバーレイアイコンがあるようで、使っていく中で、TortoiseGitのアイコンのオーバーレイの順位が下がったために、表示されなかった。Windowsのレジストリの変更で、TortoiseGitのオーバーレイアイコンの順位はあげられるが、そこまで重要でもないのと、原因がわかったので放置する。

  • Gitでリポジトリのファイルを全部削除する

    Gitのリポジトリに登録されているファイルを、いったん全部消して、登録しなおす必要が発生した。リポジトリに含まれているファイルをコマンドでまとめて削除した。あとは、commitして、push。

    git rm *
    git commit 
    git push
    

    gitで、rmコマンドを使うと、ファイルの削除になる。rmでファイルを指定するのだが、* アスタリスクにすることで、まるっと削除できた。履歴は残るのでよいが、rm * で全消しできるのは、便利だけど、こわい。

  • MS Officeの32ビットと64ビットが共存できない

    Office 2010の32ビットがインストールされているPCに、Microsoft 365 Apps for businessのOfficeの64ビットをインストールしようとしたら、インストールできず。エラーメッセージを確認すると、32ビットのOfficeがインストールされているから、という。何かを共有するのか、バージョン違いであっても、32ビットと64ビットのOfficeは共存できなかった。

    32ビットのOffice2010とMicrosoft 365 Apps for businessは、共存できるのだけど。

  • LinuxでわざとCPU負荷をかける方法

    Linuxで、CPU監視などのテストで、わざとCPU負荷をかける方法。ターミナルで、下記のコマンドを実行する。

    yes > /dev/null

    これで1コア分のCPUを無駄に100%使用する。複数のコアがある場合には、その数だけ、実行することで負荷のテストができる。止めるときは、Ctrl+Cで。

    なお、同じコマンドでMac OS Xでも、負荷をかけることができる。