Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

参議院サイトの議員名簿と衆議院サイトの議員名簿の違い

スクレイピングするときにつらい…… 参議院: https://www.sangiin.go.jp/japanese/joho1/kousei/giin/210/giin.htm 衆議院: https://www.shugiin.go.jp/internet/itdb_annai.nsf/html/statics/syu/1giin.htm # 違い 参議院 衆議院 1 ページのまとめかた 全議…

DevRelとかCCoEとかOSPOの存続

企業内においてDevRel*1とかCCoE*2とかOSPO*3とかの部門を設けているケースはけっこうある。では、それらの部門はコスト部門となっている場合と、プロフィット部門となっている場合のどちらが多いのか?またプロフィット部門の場合、コスト部門の場合のそれ…

PostgreSQLがORDBMSってどういうこと?

GAITの試験問題サンプル*1を見ていて気付いたんだけど、PostgreSQLのオフィシャルサイトではPostgreSQLはobject-relational database systemだと謳っている*2。これってどういうことなの?Wikipediaにあるとおり*3普通のrelational databaseなのでは?と思っ…

GAITの試験問題サンプル

GAIT*1の試験問題サンプルを自分でも解いてみたんだけど、問題の品質がちょっと気になったのでメモしておく。英日翻訳時に題意が読みとれなくなっちゃうパターンかと思いきや、どうも日本語版がオリジナルみたいだし。 以下の画像は https://www.gait.org/sa…

Vulnerabilities/Troubles in the Java applications on OWASP Vulnerable Web Applications Directory

# Category Problem EasyBuggy OWASP VulnerableApp OWASP Security Shepherd Vulnerable Java Web Application OWASP WebGoat 1 Troubles Memory Leak (Java heap space) ✓ 2 Memory Leak (PermGen space) ✓ 3 Memory Leak (C heap space) ✓ 4 Deadlock (Ja…

方言と書き言葉について

地方では、自営業のお店の張り紙が手書きで書かれていて、その日本語がなんだか変になっているのをよく見る。だけど、これは別に地方だから日本語の扱いが下手とかいう意味ではなくて、書き言葉の正しい・正しくないを理解できない人はどんな土地でも一定数…

アジャイル型開発プロセス前提の入札で工数過少見積を防ぐ方法

米国国防総省ではソフトウェア受託開発の調達は原則アジャイル型プロセスというルールで(これは本当)、その際に「金額と人数で別々に調達がかかる」と聞いたことがあって(これは真偽不明)、いったいどういう意味だ?と思っていたんだけど、もしかして 発…

ブラウザのスクリーンショット取得を禁止する調達仕様の例

ブラウザでスクリーンショット取得を禁止しているシステムってどんなものがあるんだろう?と調べていたところ、ちょっと古いが、「厚生労働省LANシステムの更改整備及び運用・保守業務」で、iOSおよびAndroidでスクリーンショット取得を禁止する仕様が盛り込…

Difference of way to get Java version at runtime

# JDK Way to launch SourceVersion.latestSupported() Runtime.class.getPackage().getImplementationVersion() Runtime.version() System.getProperty("java.version") System.getProperty("java.specification.version") 1 JDK8 java RELEASE_8 1.8.0_312…

ファイルダウンロードを中断すると何が起こるか

Spring Boot 2.7.0で組み込みTomcatでアプリケーションを起動した場合、ファイルダウンロードがブラウザから中断(キャンセル)されるとClientAbortExceptionが発生する。 以前はSocketExceptionが発生していたように思うのですが、Servletコンテナによって…

Way to shutdown Windows

There are so many ways to shutdown Windows: # How to shutdown What is executed Wait for HungAppTimeout 1 shutdown from Start Menu RuntimeBroker.exe Yes 2 shutdown from the lock screen winlogon.exe No 3 execute SlideToShutDown.exe SlideToSh…

著作権法のコーナーケースに関する理解の度合い

たとえば「次のうち、『やっちゃいけないよ』と他の人に言ったほうがいいのはどれでしょう?」「次のうち、『やっちゃいけないよ』と他の人に言えないのはどれでしょう?」と言われて正しく答えられる人がどれだけいるか、みたいな調査って行われてるんだろ…

Merits-demerits of password hashing methods with Java SE / Spring Security API

# Method PBKDF2 bcrypt scrypt Argon2 1 Implementation SecretKeyFactory(PBKDF2WithHmacSHA256) BCryptPasswordEncoder SCryptPasswordEncoder Argon2PasswordEncoder 2 prerequisites JDK 8 or later Spring Security*1 Spring Security + Bouncy Castle…

API GatewayからLambdaに渡される入力パラメタの形式

API GatewayからLambdaを呼び出す場合、プロキシ統合(API Gatewayでメソッドの[統合リクエスト]に[Lambda プロキシ統合の使用]を設定した場合)、以下のURLにある形式でLambdaへパラメタが渡される。リクエストのパラメタはqueryStringParametersに入ってく…

API Gatewayでオーソライザーの実行結果がGET/HEAD/OPTIONSで変わるように見える

背景 API Gatewayで同一リソースに対するGET/HEAD/OPTIONSを作成している。 どのメソッドにも同じオーソライザ(Lambda関数)を設定している。 事象 GETメソッドの[統合リクエスト]-[マッピングテンプレート]-[リクエスト本文のパススルー]を[リクエストの C…

Edgeのapplication modeの動作について

まず、Edgeのコマンドラインオプション一覧のようなページはmicrosoft.com内に見当たらなかった。ある程度まとまっているのは、kioskモードの説明*1と、プロキシの設定の説明*2くらい。 application mode自体はもともとChromiumにあった機能で、--appという…

エンジニアのレゴブロックとドイッチュ限界のはざま

日本国内では情シの地位が低くてシステムをベンダに背負わせている企業が多いと聞く。そんな中でGoogle WorkspaceとMicrosoft Power Appsがスプレッドシートを取り込んだ。これまでマネージドサービスは「エンジニアのレゴブロック」*1だったが、これでブル…

What curl can do and Invoke-WebRequest can't do

curl can show the raw request header and body with --trace option*1. There is no way to get the content of the request with Invoke-WebRequest. curl can show the body of 5xx response. Invoke-WebRequest returns null when a server responds wi…

Determine whether you are behind a proxy or not with .NET

You can get the default proxy setting for a specific url with System.Net.WebRequest.GetSystemWebProxy().GetProxy(). The result is System.Uri object, and its OriginalString property will be the same the parameter if you are not behind a pro…

JDBCドライバがサーバとの1回の通信で取得する行数のデフォルト値

Oracle 11.2は10行。*1 By default, when Oracle JDBC runs a query, it retrieves a result set of 10 rows at a time from the database cursor. This is the default Oracle row fetch size value. Oracle 21は10行。*2 By default, when Oracle JDBC run…

Test-NetConnectionの不思議な挙動

最近はICMP Echoに応答しないサイトも多い(たとえばlogin.live.com)。そんなときは、TCPでポートを指定して接続確認が行えるTest-NetConnectionコマンドレットが便利に使える。 ただこのTest-NetConnectionコマンドレット、ネットワーク接続が確立していな…

You cannot identify platforms of an application that is about to authenticate

Background You are trying to write an authentication logic for an application that calls a Microsoft Graph API. When you retrieve an authentication token, you have to pass client secret if the application is registerd with "Web" platform c…

OneDriveにMicrosoft Graph APIでアクセスする

OAuth2のトークンを取得する際にtenantを指定する*1のだが、これはOneDriveのURLのhttps://XXXXX-my.sharepoint.com/のところに入るテナント名とは別で、commonかorganizationsかconsumersを指定するとある。commonを指定しているドキュメント*2を参考にして…

GitLabの在宅勤務のルール

常時ビデオONで会議を行っている*1と「ネットワーク帯域が……」となることもあるだろうに、GitLabはどうしてるだろう?と思って調べてみたら、インターネット接続の月額費用を経費精算可能にしてた*2。 在宅勤務で必要な机・椅子・モニタなども経費精算可能な…

Windowsをシャットダウンする方法いろいろ

Windowsをシャットダウンする方法には スタートメニューから「シャットダウン」を選択(内部的にはC:\Windows\System32\RuntimeBroker.exeが呼ばれているみたい) デスクトップでAlt+F4を押して「シャットダウン」を選択 ロック画面から「シャットダウン」を…

JaCoCoのデータから行単位のbranch coverage (C1 coverage)は復元できない

JaCoCoはC1 Coverageが取れると言っておきながら実際に取れるのはC1(分岐網羅)でなくC2(条件網羅)という問題がある。 この問題に対して、JaCoCo組込みのReportGeneratorを改造するか、またはReportGeneratorを改造するかして、コードカバレッジのデータ…

Java用SSHクライアントライブラリの比較

背景 JavaによるOLTP処理の中で、「別サーバのauthorized_keysに指定されたコマンドをパスフレーズなしのSSH鍵でキックし、その戻り値を確認する」という処理を行いたい場合、外部コマンドとしてSSHを起動するのはいかにも手間がかかる。 そこで、Javaで実装…

タスク スケジューラからPowerShellを起動するとき-Commandオプションのパラメタをシングルクォートで囲んではいけない

前提 タスク スケジューラで作ったタスクで、操作に「プログラムの開始」でpowershell.exeを指定し、「引数の追加」で-Commandオプションと実行したいスクリプトを指定すれば、タスク スクリプトから任意のコマンドを実行できる。 参考: https://www.netspi.…

PowerShellはまり道

github.com この処理を書くときに久しぶりにいくつかはまったのでメモ。 .ps1ファイルの文字コードをBOMなしUTF-8にすると日本語コメントがあったときに誤動作する。たとえばAdd-Typeの後のヒアドキュメントが正しくヒアドキュメントと認識されずに単一行文…

PowerShellでHashSetのForEachメソッドを使う

$map = New-Object System.Collections.Generic.HashSet[string]; $map.Add("ABC") > $null $map | Get-Member とすると出てこないが、PowerShell ISEなどでオートコンプリートを使うとHashSetにForEach()というメソッドが生えていることが分かる。 このForE…