スキップしてメイン コンテンツに移動

投稿

C#でenumに定義された値の一覧を取得する方法

下記のコードでenumに定義された値の一覧を取得できます。 // MyEnumの部分を一覧を取得したいenumに書き換えてください。 var enums = Enum . GetValues ( typeof ( MyEnum ) ) . Cast < MyEnum > ( ) ; // ループしてプリントしてみる。 foreach ( var @ enum in enums ) { Console . WriteLine ( @ enum . ToString ( ) ) ; } ちなみにコード内の「@」はC#の予約語を変数名で使えるようにするためのものです。 さらに下記のようGenericsを使って一般化したメソッドを定義できます。 public static IEnumerable < T > IterateEnum < T > ( ) where T : Enum = > Enum . GetValues ( typeof ( T ) ) . Cast < T > ( ) ;

1つのサーバーからGitHubの複数のプロジェクトにSSHの公開鍵を登録

秘密鍵と公開鍵のペアをリポジトリの数だけ作成。 $ ssh-keygen -t rsa -C "repo1" $ ssh-keygen -t rsa -C "repo2" 作成中にファイル名を指定できるので、それぞれの鍵にユニークな名前で作成。例えば下記のようにリポジトリの名前と紐づくように作成。 $ ~/.ssh/repo1_rsa $ ~/.ssh/repo2_rsa ~/.ssh/repo1_rsa,pub , ~/.ssh/repo2_rsa,pub の公開鍵の内容をGitHubのそれぞれのリポジトリの https://github.com/ima-create/{repojitory}/settings/keys で公開鍵を登録。 ~/.ssh/config ファイルに下記のように設定を記述。大事なのはHostの部分で{サブドメイン}.github.comとすること。 Host repo1.github.com HostName github.com User git IdentityFile ~/.ssh/repo1_rsa Host repo2.github.com HostName github.com User git IdentityFile ~/.ssh/repo2_rsa cloneするGitHubのリポジトリのURLに ~/.ssh/config ファイルで設定したサブドメインを含んだを指定すればSSHの認証が通ってクローンできる。 git clone git@repo1.github.com:{name}/{repogitory1}.git git clone git@repo2.github.com:{name}/{repogitory2}.git

NetBeansがアンインストールできない問題

WindowsのコントロールパネルからNetBeans (バージョンは12)をアンインストールしようとしたところ、Javaが正しく設定されていないとかのエラーが出て、アンインストールできなくなってしまいました(画像のキャプチャをとり忘れてしまった)。 NetBeansインストール後に別バージョンのJDKをインストールし直したのが原因かも知れません。筆者の環境ではAdoptOpenJDKのjdk-8とjdk-16をインストールしてありました。 エラーメッセージのダイアログ内に「–javahome」でJDKを指定することができると書いてあったので、PowerShellを管理者モードで起動して、NetBeansのアンインストーラーに「–javahome」オプションを使ってJDKを指定したところ、無事アンインストールできました。 C:\Program Files\NetBeans-12.0> .\uninstall.exe --javahome "C:\Program Files\AdoptOpenJDK\jdk-16.0.1.9-hotspot" 補足 筆者の環境では、NetBeansのアンインストーラーは C:\Program Files\NetBeans-12.0\uninstall.exe にありました。 jdk-8ではunsupported javaバージョンというダイアログが出て、アンインストールが進みませんでした。 アンインストール後もC:\Program Files\NetBeans-12.0のディレクトリが残っていたので手動で削除しました。

Firebaseでエミュレータを設定(確認)する方法

サーバサイドのfirebase-adminの場合 Node.jsを利用したサーバー側では、 process.env を参照するとFirebase functionsの実行環境の情報を取得できます。 firebase-admin を利用したエミュレータ環境の設定も process.env から確認できます。index.jsに下記のログ出力を加えてみます。 console.log(JSON.stringify(process.env, null, 3)); firebase emulators:start を実行してエミュレータ環境でfirebaseを起動させると、エミュレータの設定状況に応じて、下記のようなエントリがログ出力されます。 "FIREBASE_AUTH_EMULATOR_HOST" : "localhost:9099" "FIREBASE_DATABASE_EMULATOR_HOST" : "localhost:9000" , "FIREBASE_STORAGE_EMULATOR_HOST" : "localhost:9199" , "FIRESTORE_EMULATOR_HOST" : "localhost:8080" , "FUNCTIONS_EMULATOR" : "true" index.js内で firebase-admin から作成されたサービスはすべてエミュレータに接続されます。 const admin = require ( 'firebase-admin' ) ; admin . initializeApp ( { credential : admin . credential . cert ( "XXXXXXXX.json" ) , storageBucket : "YYYYYYY.appspot.com" , } ) ; admin . firestore ( ) ; admin . storage (

Firebase functionでPromiseをreturnしないとPromise内の処理が不安定になる

Node.jsでfirebase functionsを開発していると、Promiseを使う場面が多いと思いますが、Promiseをfunctionでreturnしないと、functionの処理に非常に時間がかかったり、処理が非常に不安定になるようです。 const myPromise = new Promise ( ( resolve , reject ) => { // なんか処理 } ) ; // myProimise内での処理とは無関係にfunctionのレスポンスを返す。→ 不安定 exports . notReturnPromise = functions . https . onCall ( ( data , context ) => { myPromise . then ( ( ) => { } ) ; return { "code" : "success" } ; } ) ; // myProimise内での処理が終わったらfunctionのレスポンスを返す。→ レスポンスは遅くなるが安定 exports . returnPromise = functions . https . onCall ( ( data , context ) => { return myPromise . then ( ( ) => { return { "code" : "success" } ; } ) ; } ) ; 筆者の環境ではPromiseをreturnしなかった場合、下記のような不具合が多発しました。 Cloud Storageへのアップロードに時間がかかったり、SSLの認証で落ちる firestoreのtransaction処理でエラーが多発 timeout transaction missingなどなど functionでPromiseをreturnするようにしたところ、上記の問題は発生しなくなりました。 functionはPromiseがresolveされるまで、レスポンスを返さないので、Promiseのresol

Windowsで英語化したのに一部日本語が残ってしまった問題

Windowsの表示言語を英語化したにもかかわらず、一部、日本語が残ってしまうという問題に遭遇しました。具体的には、下記のキャプチャのように、Windowsの設定のサジェストで表示される部分に日本語が残ってしまいました。 Googleで調べて下記の方法を試してみましたが、いずれの方法でも解決しませんでした。 レジストリ確認 言語設定まわりの設定 Power Shellから日本語の言語パックをアンインストール うまく行った方法 表示言語を日本語に設定する ↓ パソコン再起動 ↓ 表示言語を英語に設定する ↓ 日本語の言語パックをアンインストール ↓ パソコン再起動 ↓ 完全に英語表示になった。 必要に応じて、日本語の言語パックを再度インストール。 最終手段 前述の方法でもうまく行かないパソコンもあったので、さらに調査したところ、言語パックを完全に再インストール(Windowsにキャッシュされていない状態)できれば、直ることがわかってきました。 ところが、言語パックを再インストールしても、Windowsに残っているキャッシュを再利用してしまうようで、何度やっても一部日本語が残ってしまうので悪戦苦闘していました。 結局、まだ初期にセットアップしたばかりのアカウントだったので、 ユーザを作り直して英語の言語パックを入れ直した ところ、完全に英語化されました。あまりスマートではないですが、結果オーライです。。。