2021年12月23日木曜日

vcpkgでエラー発生してinstall出来ない

 現象

vcpkgでエラー発生してinstall出来ない

 原因

visual studioの言語環境にenglish が無い

対応

visual studioの言語環境にenglishを追加

2021年12月21日火曜日

LibreOfficeをC#でUNO接続後、修正すると画面が真っ黒になる。

 現象

LibreOfficeをC#でUNO接続後、修正すると画面が真っ黒になる。

修正後、画面をリフレシュしようとして画面リフレッシュが上手く表示されていない。

対応方法

表示設定をskaのsoftwareレンダリングからhardware レンダリングに変更



2021年12月16日木曜日

XCode 13.2 ProjectのSwift Packageがバグってビルド出来ない

 XCode 13.2 ProjectのSwift Packageがバグってビルド出来ない

AppleはXcode 13.2リリースノートの問題で、Swiftパッケージをスタンドアロンまたは依存関係として使用している開発者は、パッケージの解決中に障害が発生する可能性があると述べています。

Xcode 13.2アップデートには、iOS 15.2、iPadOS 15.2、tvOS 15.2、watchOS 8.3、macOS Monterey 12.1用のソフトウェア開発キットが含まれており、iOS9以降でのデバイス上のデバッグが可能です。

この問題は、Mac AppStoreからのXcode13.2アップデートにのみ影響しているようです。 Appleの開発者ポータルから直接入手できるXcodeのバージョンは影響を受けません。

Appleは問題を調査していると言っていますが、現在、修正のタイムラインはありません。

まだ更新していない開発者は、Apple DeveloperWebサイトからXcode13.2をダウンロードする必要があります。

 

Apple ~ 助けて~

2021年12月10日金曜日

SQL Serverのリンクサーバ Oracle設定内容

 サーバ側にORACLE Client & OLEDBがインストールされていること

リンクサーバーの設定をする

SQL Server Management Studioからの設定方法。
1. SQL Serverに接続して、サーバーオブジェクト->リンクサーバー->プロバイダーを開く
2. OraOLEDB.Oracleをダブルクリック
3. InProcess許可にチェックを付けてOKとする
4. リンクサーバーで右クリックして、新しいリンクサーバーを作成
5. 以下の様に設定してOKとする

ページ項目設定値
全般リンクサーバー任意

サーバーの種類その他のデータソース

プロバイダーOracle Provider for OLE DB

製品名Oracle

データソースサーバ(IP等):ポート番号/サービス (例:192.168.11.1:1521/oradb)

プロバイダー文字列
セキュリティローカルサーバーのログインとリモートサーバーのログインのマッピングなし

上記一覧で定義されないログインの接続方法このセキュリティコンテキストを使用する

リモートログインOracle接続時のユーザー名

パスワードOracle接続時のパスワード

2021年12月8日水曜日

D言語 GTKDの64bit build方法

 D言語 GTKDの64bit build方法

VS用 x64 Native Tool command promptで実行すること

通常のcmdだと 32bitなので、リンカでエラーが発生する。


Enter Keyでform submitしない方法

 Enter Keyでform submitしない方法

フォームにonsubmit=”return false;”を追加
onsubmitはsubmitされたときに発生するイベントです。onsubmit=”return false;”でsubmitを中止する。

送信ボタンをtype=”button”にする
inputがtype=”submit”の場合、送信されてしまうので、type=”button”に変更。onclick=”submit();”でボタンを押したときだけsubmitさせるようにする。

 

2021年11月25日木曜日

2021年11月24日水曜日

Windows11の右クリックをWindows10に戻す

 Windows11の右クリックをWindows10に戻す

コマンドラインを管理者権限で以下のコマンドを実行する

 

reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve

その後、タスクマネージャーでExplorerを再起動

元ネタ https://starmint.net/windows11-right-click-menu-old-style.html

 元に戻すには上記のレジストリを削除

reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f

 

2021年11月18日木曜日

iOSアプリ 6.5インチの画面サイズは iPhone11Pro MAX

 iOSアプリ 6.5インチの画面サイズは iPhone11Pro MAX

VIsual Studioで全角スペースだけを可視化したい

 VIsual Studioで全角スペースだけを可視化したい

スペースを可視化すると半角スペースも可視化されてウザい状態になる。

HackGenなどの全角スペースを可視化するフォントを入れても

何故かVisual Studioでは全角スペースが可視化されなかった。


昔から使っている ゆたぽんフォントだと表示されるので

当分、ゆたぽんを使っていこう。

※誰か ゆたぽん悪くないけど、Hackgen並にきれいなフォント作ってくれないかな~

 

2021年11月17日水曜日

bootstrap4でfooter固定表示

     <!-- フッタ -->
    <footer class="footer mt-auto py-3 bg-light fixed-bottom">
        <div class="container px-3">
            <span class="text-muted">&nbsp;おほほ Co.,Ltd.</span>
        </div>
    </footer>

2021年11月16日火曜日

T-SQL Mergeのサンプル

 T-SQL Mergeのサンプル


MERGE INTO test_table AS A
    USING (SELECT 10 AS no,'太郎さん' AS name, 30 AS age ) AS B
    ON
    (
       A.no = B.no
    )
    WHEN MATCHED THEN
        UPDATE SET
             name = B.name
            ,age = B.age
    WHEN NOT MATCHED THEN
        INSERT (no,name,age)
        VALUES
        (
             B.no
            ,B.name
            ,B.age
        )

元ネタ https://lightgauge.net/database/sqlserver/2446/

2021年11月13日土曜日

VisualStudioCodeでD言語を使う

 

VisualStudioCodeでD言語を使う

OSを入れ替えしたので、最新の開発環境にしてみました。

https://qiita.com/mono_shoo/items/bffaa32c9f437d9812d2 

 VisualStudioCode、ユーザー数多いのが理解出来た。

拡張機能がとても便利、D言語もNativeマルチOS 対応でしたが

.NET 6でWPFがマルチOSになったので、ますますD言語の優位性が無いじゃん。

開発環境(IDE)を使って楽したい。

GtkD version up Gtk+3.24に対応

 GtkD  version up Gtk+3.24に対応

https://gtkd.org/ 

コーディングのサイトまであった https://gtkdcoding.com/ 

自分でライブラリ作成も良いがメンテしないと使わない

使わないからメンテしないの悪循環

メジャーなCライブラリ を有効に使わないと

2021年11月9日火曜日

MAGIC XPA のテーブル表示で項目を2段になって表示する方法

 MAGIC XPA のテーブル表示で項目を2段になって表示する方法

2段目に表示する項目を追加後、ALTキーを押しながら項目を選択後

表示する項目にドラッグ&ドロップ

追加した項目の幅をゼロにすると出来上がり。

2021年10月29日金曜日

The 'kotlin-android-extensions' Gradle plugin is deprecated

The 'kotlin-android-extensions' Gradle plugin is deprecated

kotlin-android-extensionsは非推奨になりました。

 え~ 今までOKだったのが非推奨になるのがちょっと早い感じがする。

https://stackoverflow.com/questions/65179275/the-kotlin-android-extensions-gradle-plugin-is-deprecated 

MainActivityの場合

private lateinit var binding: ActivityMainBinding

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

 

onCreateにbindingを追加

binding.txtStaffNo.text = "通知設定済です" 


bindingの後に画面変数を指定する。

2021年10月22日金曜日

chromeで iis expressのdebugをしようとしたら httpsに変換されてdebug出来ない

chromeで iis expressのdebugをしようとしたら httpsに変換されてdebug出来ない

世の中 httpsが標準なのですが debugでsslは使わないので

chrome://net-internals/#hsts 

localhostを入力後 deleteボタンを押す

2021年10月20日水曜日

D言語の64bit Linkerの設定方法

 D言語の64bit Linkerの設定方法

 VisualStudio 2017 or 2019での C++ 開発環境を構築後

 C:\D\dmd2\windows\bin64 の sc.iniに

INKCMD="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\link.exe"

を追加する(上記の例は VC2017)

 


2021年10月1日金曜日

Oracle SQLPlusでCSV出力

 Oracle SQL PlusでCSV出力

SET MARKUP CSV ON
SET HEADING OFF

SET ARRAYSIZE 100
SET FLUSH OFF
SET LINESIZE 200
SET PAGESIZE 0
SET SQLPROMPT OF
SET FEEDBACK OFF
SET TIMING ON
SET TERMOUT OFF
SET TRIMSPOOL ON
SET SERVEROUTPUT OFF

SPOOL c:\temp\WRK_JYUSHOMO.csv
SELECT * FROM WRK_JYUSHOMO;
SPOOL OFF

 

1行目のMARKUP CSV ONでCSV出力形式にしてくれる

2行目のHEADING  OFFで出力レコードに項目名レコード出力を無しにする

 

RunCat タスクbarにCPU使用率を猫が走ってお知らせ

 RunCat  タスクbarにCPU使用率を猫が走ってお知らせ

 癒される~

 Windows, Mac両方あり


2021年9月28日火曜日

【SwiftUI App】WindowGroup の RootView を切り替える方法

 

iOS14 から採用されている SwiftUI App ライフサイクルでは以下のように WindowGroup の中にある View(ここでは ContentView)がアプリケーションの RootView になっています。

@main
struct SampleApp: App {    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

今回はこの RootView を切り替える方法について一例として紹介したいと思います。

 

WindowGroup の RootView を切り替える方法

@StateObject

今回のポイントは @StateObject 修飾子です。

以前より、@State 修飾子と言うものはありました。@State は、Int・String・Bool といった値型の変数の状態をViewと連携させるものでしたが、@StateObjectオブジェクト型(class型)の変数を扱う場合に使用します。

以下のサンプルでは、この @StateObject として宣言したオブジェクトが持つ enum を元に RootView を分岐する例を示します。

RootView 切り替え実装例

AppState シングルトンクラス

class AppState: ObservableObject {
    
    static let shared = AppState()
    private init() {}
    
    enum RootViews {
        case splash
        case main
    }
    @Published private(set) var rootView: RootViews = .splash
    
    func changeRootView(rootView: RootViews) {
        self.rootView = rootView
    }
}

ObservableObject プロトコルに準拠した AppState と言う名前のシングルトンクラスを作成します(SwiftUI らしさを考えると EnvironmentObject で表現しても良いかもしれません)。

enum でスプラッシュ画面(splash)とメイン画面(main)の列挙子を定義しました。この値で WindowGroup の RootView を切り替えます。

SplashView と MainView

struct SplashView: View {
    var body: some View {
        Text("Splash View")
            .foregroundColor(.blue)
            .onAppear() {
                DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
                    AppState.shared.changeRootView(rootView: .main)
                }
            }
    }
}

struct MainView: View {
    var body: some View {
        Text("Main View")
            .foregroundColor(.red)
    }
}

最初は、前者の SplashView が表示されています。そして表示から 2.0 秒後に AppStatechangeRootView で RootView に MainView 指定しています。

@StateObject と WindowGroup での分岐

@main
struct SampleApp: App {
    
    @StateObject private var appState = AppState.shared
    
    var body: some Scene {
        WindowGroup {
            switch appState.rootView {
            case .splash:
                SplashView()
            case .main:
                MainView()
            }
        }
    }
}

AppState.shared インスタンスを @StateObjectappState に紐づけ、WindowGroup ブロック内の switch で RootView を分岐させています。

@StateObject が付加されていなかったり、誤って @State にしてしまっていたりすると動作しませんので注意してください。

 

元ネタ https://www.yururiwork.net/archives/1188

 

 

2021年9月17日金曜日

ASP.NET Identity メモ

 認証用DBの作成方法

テーブルを生成する

Code Firstで実行時に生成されるのはデモとしてはいいのですけど、実務では開発者の意図するタイミングで生成しておきたいこともあります。その場合は、Migrationしてやればいいようです。

ツール -> NuGetパッケージマネージャー -> パッケージマネジャーコンソールを開き、

Enable-Migrations
Add-Migration migration_filename
Update-Database

 

2021年9月14日火曜日

Kotlin JSON DecodeFromString -> 複数のdata classに格納する記述

 Kotlin JSON DecodeFromString -> 複数のdata classに格納する記述

  val vItems = Json.decodeFromString<List<data class>>(jsonStr)

1件だけなら

  val vItem = Json.decodeFromString<data class>(jsonStr)

 

data classは以下の通り

import kotlinx.serialization.Serializable

@Serializable
data class Notice (
val ID: Int,
val UserName: String
)
 
 

 

2021年8月31日火曜日

ASP.NET MVC で二重サブミットを防止したい

ASP.NET MVC で二重サブミットを防止したい

フォームなんかでボタンをうっかりダブルクリックしちゃって二重に投稿されてしまうのを防ぎたい。 クリックしたらボタンを無効にできればなお良し。

単純に JavaScript でボタンクリックされたら無効にするイベントハンドラ書けばいいと思ってたら、クライアントバリデーションに失敗したときボタンが押せなくなって困った。

なので今のところ

$(function () {
    $("form").on("submit", function (e) {
        var $form = $(this);
        // クライアントバリデーションに成功したら submit を無効にする
        if ($form.valid()) {
            $(this).find("[data-disable-with]").each(function () {
                var $button = $(this);
                var text = $button.attr("data-disable-with");
                $button.val(text);
                $button.prop("disabled", true);
            });
        }
    });
});

な感じでクライアントバリデーションに成功したらボタンを無効にするようにしている。Rails をマネして、data-disable-with 属性でボタンを無効にしたとき、ボタンのタイトルも変更できるようにもしてみた。

ビューでは

<input type="submit" value="ログイン" class="btn btn-lg btn-primary btn-block" data-disable-with="ログイン中..." />

という風に使っている。

 

元ネタ https://tnakamura.hatenablog.com/entry/2015/07/30/double-submit-protection

 

2021年8月6日金曜日

pdf.jsを使用するとPDFの画質が悪い

 pdf.jsを使用するとPDFの画質が悪い

scale'属性を1から2に変更しただけで、品質が大幅に向上しました。

pdfDoc.getPage(1)
  .then(function (page) {
       var canvas = document.getElementById('myCanvas');
       var ctx = canvas.getContext('2d');

       var viewport = page.getViewport(2); // 2 is the 'scale' attr
       canvas.height = viewport.height;
       canvas.width = viewport.width;

       var renderContext = {
              canvasContext: ctx,
              viewport: viewport
       };

       page.render(renderContext);
});