このページの翻訳:
ソースの表示
最近の変更サイトマップ

システムフォントをNotoにしてるとVisual Studio 2013がインストールできない件

Windows 10のシステムフォントを書き換えてNoto Sans CJKにしてるとVisual Studio 2013がインストール出来ないっぽい。

インストーラであるvs_community.exeを実行すると、画面中央に「Visual Studio」ロゴが表示された後、お馴染みの縦長インストーラUIが出るんだけれども、ただの真っ黒ウィンドウで1分程すると勝手に終了してしまう。

プロパティから「互換モードでこのプログラムを実行する」にチェックを入れて起動すると、画面は正しく出るものの今度は互換性エンジンが云々でインストールが出来ない。これは既知の問題というか、そういう仕様っぽいのである意味正常。

%TEMP%に作られるインストーラのログ(dd_vs_community_日付.logってファイル)を見たら
「[4F88:2824][2019-08-17T11:40:29]e000: MUX: ERROR: 'file:///C:/WINDOWS/FONTS/NotoSansCJKjp-Regular.otf' ファイルは、予測されるファイル形式の仕様に準拠していません。」
という怪しげな一文が…!当該箇所のログ全文は↓の通り。どう見てもフォントのインスタンスを作ってるっぽい所で落ちてる。

[4F88:2824][2019-08-17T11:40:29]e000: MUX:  ERROR: 'file:///C:/WINDOWS/FONTS/NotoSansCJKjp-Regular.otf' ファイルは、予測されるファイル形式の仕様に準拠していません。
[4F88:2824][2019-08-17T11:40:29]e000: MUX:  Stack:    場所 Adobe.CffRasterizer.OTFRasterizer.MapErrorCode(AdobeErrorCode error)
   場所 Adobe.CffRasterizer.OTFRasterizer.NewFont(UnmanagedMemoryStream fontFileStream, Uri sourceUri, Int32 faceIndex)
   場所 MS.Internal.FontFace.TrueTypeFontDriver.ReadCFFMetrics(FontFaceLayoutInfo cache, Boolean vmtxPresent, UInt16 typoAscent, UInt16 typoDescent)
   場所 MS.Internal.FontFace.TrueTypeFontDriver.ReadGlyfMetrics(FontFaceLayoutInfo cache, UInt16 indexToLocFormat, Boolean vmtxPresent, UInt16 typoAscent, UInt16 typoDescent)
   場所 MS.Internal.FontFace.TrueTypeFontDriver.ReadAdvances(FontFaceLayoutInfo cache, CheckedPointer hmtxTable, UInt16 numberOfMetrics, UInt16 indexToLocFormat, UInt16 typoAscent, UInt16 typoDescent)
   場所 MS.Internal.FontFace.TrueTypeFontDriver.GetLayoutFontFaceInfo(FontFaceLayoutInfo cache)
   場所 MS.Internal.FontCache.FontFaceLayoutInfo.MS.Internal.FontCache.IFontCacheElement.AddToCache(CheckedPointer newPointer, ElementCacher cacher)
   場所 MS.Internal.FontCache.HashTable.Lookup(IFontCacheElement e, Boolean add)
   場所 MS.Internal.FontCache.CacheManager.Lookup(IFontCacheElement e)
   場所 System.Windows.Media.GlyphTypeface.Initialize(Uri typefaceSource, StyleSimulations styleSimulations, Boolean fromPublic)
   場所 MS.Internal.FontCache.CachedFontFace.CreateGlyphTypeface()
   場所 MS.Internal.FontFace.PhysicalFontFamily.GetGlyphTypeface(FontStyle style, FontWeight weight, FontStretch stretch)
   場所 MS.Internal.FontFace.PhysicalFontFamily.MS.Internal.FontFace.IFontFamily.GetTypefaceMetrics(FontStyle style, FontWeight weight, FontStretch stretch)
   場所 System.Windows.Media.Typeface.ConstructCachedTypeface()
   場所 System.Windows.Media.Typeface.get_CachedTypeface()
   場所 System.Windows.Media.Typeface.CheckFastPathNominalGlyphs(CharacterBufferRange charBufferRange, Double emSize, Double widthMax, Boolean keepAWord, Boolean numberSubstitution, CultureInfo cultureInfo, Int32& stringLengthFit)
   場所 MS.Internal.TextFormatting.SimpleRun.CreateSimpleTextRun(CharacterBufferRange charBufferRange, TextRun textRun, TextFormatterImp formatter, Int32 widthLeft, Boolean emergencyWrap)
   場所 MS.Internal.TextFormatting.SimpleRun.Create(FormatSettings settings, CharacterBufferRange charString, TextRun textRun, Int32 runLength, Int32 widthLeft)
   場所 MS.Internal.TextFormatting.SimpleRun.Create(FormatSettings settings, Int32 cp, Int32 cpFirst, Int32 widthLeft, Int32 widthMax)
   場所 MS.Internal.TextFormatting.SimpleTextLine.Create(FormatSettings settings, Int32 cpFirst, Int32 paragraphWidth)
   場所 MS.Internal.TextFormatting.TextFormatterImp.FormatLineInternal(TextSource textSource, Int32 firstCharIndex, Int32 lineLength, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak, TextRunCache textRunCache)
   場所 MS.Internal.TextFormatting.TextFormatterImp.FormatLine(TextSource textSource, Int32 firstCharIndex, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak, TextRunCache textRunCache)
   場所 System.Windows.Controls.TextBlock.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.StackPanel.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
   場所 System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
   場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
   場所 System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Border.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Control.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
   場所 System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.Controls.Grid.MeasureOverride(Size constraint)
   場所 System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   場所 System.Windows.UIElement.Measure(Size availableSize)
   場所 System.Windows.ContextLayoutManager.UpdateLayout()
   場所 System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   場所 System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
   場所 System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   場所 System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   場所 System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   場所 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   場所 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   場所 System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   場所 System.Windows.Threading.DispatcherOperation.InvokeImpl()
   場所 System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   場所 System.Threading.ExecutionContext.runTryCode(Object userData)
   場所 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   場所 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   場所 System.Windows.Threading.DispatcherOperation.Invoke()
   場所 System.Windows.Threading.Dispatcher.ProcessQueue()
   場所 System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   場所 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   場所 MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   場所 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
   場所 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   場所 System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
   場所 System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
   場所 System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
   場所 MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   場所 MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   場所 System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   場所 System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   場所 System.Windows.Threading.Dispatcher.Run()
   場所 Microsoft.Devdiv.Bootstrapper.ManagedUx.RunUI(ViewModelCommonUi viewModel)
   場所 Microsoft.Devdiv.Bootstrapper.ManagedUx.InternalRun()
   場所 Microsoft.Devdiv.Bootstrapper.ManagedUx.Run()
   場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   場所 System.Threading.ThreadHelper.ThreadStart()

まさかと思ってシステムフォントを標準のYu Gothic UIに戻してみたら無事インストーラが立ち上がった。マジかよーって感じ。

確認してないけど、Notoの問題ってよりシステムフォントにOTF指定したのが不味いのかも?とりあえず無事インスコ出来てよかった。

FreeBSDのMariaDBでリモートクライアントからの接続を許可する

A5:SQL Mk-2を使って、実家からVPN経由で自宅鯖のMariaDBにアクセスしようとしたら「Access denied for user'xxxx'」と言われて繋がらなかった。デフォルトでは自ホストのクライアントからの接続しか許可してないらしいので、リモートクライアントからの接続を許可してみたメモ。丁寧なhttps://mariadb.com/kb/en/library/training-tutorials/basic-mariadb-articles/configuring-mariadb-for-remote-client-access/公式ドキュメントが用意されてるので、その通りに進めていくだけですけどね。

my.cnfの設定

'my.cnf[mysqld]''セクションに以下の2行を追加する。

[mysqld]
skip-networking=0
skip-bind-address

リモート接続権限の付与

ユーザーにリモート接続の権限を付加する。許可するホストとパスワードを追加してるっぽいので、接続元ごとにパスワードを変えられるっぽい?

GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY 'new-password' WITH GRANT OPTION;

こんな感じで追加されてればおk。

> SELECT user,host FROM mysql.user;
+--------------+-----------+
| user         | host      |
+--------------+-----------+
| root         | 127.0.0.1 |
| root         | 172.16.%  | ←これ

プログラム一覧に載ってない Lavasoft Web Companion を消す

いつごろからか、PC起動時に「Another instance is running : 'WebCompanion.UI.AppCore.Services.InstallerService'のタイプ初期化子が例外をスローしました。」というダイアログが出るようになった。

特段気にもしてなかったが、いい加減うざい&何か気持ち悪いので調べてみたところ、Web Companionとかいうアンチアドウェアを騙るアドウェアらしい。ググって出てきた情報を鵜呑みにしてるので間違ってるかもしれないが、自分が能動的に入れた記憶は一切ないのでお行儀の悪いソフトである事は間違いない。

Geek Uninstallerで強制削除すればアンインストールできるそうだが、自分の環境では「プログラムと機能」(アプリと機能)の一覧に出てこなかった。そういえば、結構前にアンインストールボタンを押したような気がしないでもない…。

とりあえず、C:\Program Files (x86)\Lavasoft\Web Companion\Applicationにアンインストーラがないかと覗いてみるも、それっぽいexeはなし。WebCompanionInstaller.exeがアンインストーラも兼ねてるかも?と思い実行してみたけど、やはりアンインストールは出来ず。だがしかし、プログラムと機能にWeb Companionが復活した笑。どうやら再インストール扱いになった模様。

あとはGeek Uninstallerで強制削除を実行。

全部にチェックを入れて「完了」!

それでも一部のファイルは残ったままで、消そうとしても「使用中で消せないよーん」と言われる。

コンピュータの管理を開き、サービスメニューから関連サービスと思われる「WC Assistant」を停止して、上記フォルダを手動で削除する。

多分これで完全に消えたはず?

参考サイト

KiCad 5で既存シンボルをコピペして新しいシンボルを作る

KiCad 5のシンボルライブラリエディタ(Eeschema)で、既存のシンボルから新しいシンボルをコピペして作るのに四苦八苦したのでメモ。

元となるシンボルを選択し 右クリック>シンボルをコピー を実行。コピー先のライブラリ上で 右クリック>シンボルを張り付け を実行する。コピー元と先が一緒ならシンボルを複製でもよい。

コピーしたシンボルを選択し 右クリック>シンボルを編集 を実行。右側の編集画面にシンボルがロードされる。

読み込まれたシンボルの シンボル名の上で右クリック>編集 でシンボル名編集ダイアログが開く。これに気付くのに小一時間かかった…。

新しいコンポーネント名を入力してOKすると、シンボル名も自動的に変更される。

あとはライブラリを保存して完了!

iTunesでファイルのリンクが切れた曲をリストアップする方法

マシン移行などでiTunesライブラリを移動した際、ファイル行方不明となり曲とのリンクが切れることがある。曲名の先頭にビックリマークが付く忌まわしきアレだ。

アルバム単位でごっそりリンク切れしてくれれば分かりやすいが、数万曲あるうちの数曲とかだと実に厄介だ。リンク切れ曲を一挙にリストアップする方法を探してたら、海外フォーラムで実に巧妙な方法が紹介されていた。困っている人のために画像付きでリストアップ方法を解説する。

1 「ファイルがある曲」プレイリストを作り全曲追加

iTunesで「ファイル」>「新規」>「プレイリスト」で新規プレイリストを作る。名前は「ファイルがある曲」とでもしておく。

ライブラリの全曲を選択(iTunesの左の柱>ライブラリ>曲を選びCtrl+A (Command+A)が簡単)し、任意の曲の上で「右クリック」>「プレイリストに追加」>「ファイルがある曲」を選ぶ。

プレイリストへ曲を追加する際、iTunesは曲ファイルの存在チェックを行っているそうだ。したがって曲数に応じた時間がかかり、今回は全曲追加してるので結構待たされる。進捗状況表示はないが、終わればiTunesが操作できるようになるので、それまで辛抱強く待つ。

リンク切れファイルがあれば、ライブラリの曲数とプレイリストの曲数に差違が生じる。

2 「ファイルがない曲」スマートプレイリストを作る

全曲入りプレイリストが出来たら、次は「ファイルがない曲」抽出用のスマートプレイリストを作る。

「ファイル」>「新規」>「スマートプレイリスト」を選び、以下の条件で「ファイルがない曲」リストを作る。


  • 次のルールに一致 → チェック
    • 対象メディア → ミュージック
  • 「プレイリストが」「ファイルがある曲」「ではない」
  • 上限 → チェックしない
  • チェックマークのある項目だけ選択する → チェックしない
  • ライブアップデート → チェック

3 リンク切れの曲を確認

「ファイルがない曲」スマートプレイリストに、リンク切れ曲が列挙されていることを確認する。

通常のプレイリストと違い、スマートプレイリストでは曲ファイルの存在チェックが行われない。実際に曲を再生するときにリンクの生存確認が行われるので、上図ではビックリマークの有無が混在している。

あとは地道に曲ファイルを選択していくだけ(´・ω・`)

start.txt · 最終更新: 2019-08-19 11:45 by Decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0