開発

フロント向け webpack で "regeneratorRuntime is not defined" エラーが出たときの対処

まとめ @babel/preset-env の targets 設定を見直して、Babel のターゲット指定を適切にしてやると無駄なPolyfillも使わずエラーもなくなる。 内容 webpack@4.43.0, babel-loader@8.1.0 な環境。対象はフロント(ブラウザ)用。エラーメッセージで検索すると…

続・SameSite指定されたCookieはCORS fetch時にどう働くか

まとめ 最近のブラウザは新しい Cookie 規格 RFC6265bis になってる Cookie の SameSite の判定は RFC6265bis Section 5.2 にある「Registrable Domain」の合致で判定される 「Registrable Domain」より前の部分は見てない A request is "same-site" if its …

SameSite指定されたCookieはCORS fetch時にどう働くか

まとめ 2020/05/17 修正 fetch などを使った CORS リクエストにおいて、API サーバから SameSite 設定付きで Set-Cookie が返された場合、以降の CORS リクエストに Cookie は付くのかどうか → SameSite=none の場合のみ Cookie が付く。 ただし、サブドメイ…

速い Python コードを書くためのマイクロベンチマーク

Python コードを書くにあたって特性というかクセのようなものは知っておいた方がいいだろうと、Pythonコードの書き方の違いによる時間計測してみた。計測環境は 2020/5/9 時点の Google の Colaboratory で以下のスペック。 Python 3.6.9 OS Ubuntu 18.04.3 …

Python str 1個入りタプルやリストを作る時の罠を踏んだ

まとめ str 要素 1個入りの tuple, list を作るときは括弧で作ると安全。 t = ('abc',) # ケツカンマがないと怒られる l = ['abc'] tuple() や list() のコンストラクタ形式を使うと罠にはまるかも。 経緯 ('abc',) ['abc'] ↑の結果が欲しくて↓のようにする…

mojimoji 0.0.10 での ImportError: DLL load failed ( Windows 10 64bit + Anaconda 環境 )

Windows 10 64bit の Anaconda 環境で mojimoji を使おうとしたときに遭遇した問題と解決法。 概要 Windows 10 64bit の Anaconda 環境で mojimoji 0.0.10 を pip install 後、 import 時に ImportError: DLL load failed が発生する。 Win用 mojimoji モジ…

JWT 認証のメリットとセキュリティトレードオフの私感

2020/5/9追記: 考えた結果、Authorization Bearer ヘッダを使った正規のJWTの場合、同一ドメイン下で読み込む全 JavaScript が信用できる場合でないとブラウザ上で安全にトークンを保持できないのでブラウザからのAPIアクセス時の認証用には使うべきではない…

Java (JCE) で AES 暗号化するときの PKCS#5 の実態は PKCS#7 なのか?

結論 JCE (Java Cryptography Extension) の AES/CBC/PKCS5Padding のパディングは、実際には PKCS#7 でパディングしている。 (少なくとも Oracle Java8_141 環境下では) 経緯 Java で AES 暗号化を扱う機会があり、ググっていたところ AES/CBC/PKCS5Padding…

XBee 送信ステータス 0x26 の意味

XBee でブロードキャスト送信していると、その送信ステータスで 0x26 が返ることがあるんですよ。公式リファレンス によると、 0x26 = Broadcast source failed to hear a neighbor relay the message ということで、ご近所がリレーしたメッセージが聞こえな…

XBeeの通信チャンネルの指定の仕方

2016/9/12 修正 当初 S2C で ch 26 が使えないとしてましたが対応しているようです。 XBee and XBee-PRO ZigBee RF Modules - Digi International Channels, Zigbee - Digi Developer 元記事 XBee ついでなので、XBee ZB S2C が使う通信チャンネルの指定の仕…

Arduino + XBeeシールド + XBee で勝手にリセット

Arduino + XBee ZB S2C で遊んでて、時々勝手に Arduino がリセットするので何故だ、ということで。結論を先に書くと、XBee のハードフロー制御動作と XBee シールドの回路の影響で、フロー制御がかかるとリセットしますよというお話。 環境は Arduino Uno R…

シーケンス番号の連続性チェックのやりかた

UDP パケットとかドロップが起き得るデータにシーケンス番号を振っておいて、受け側でドロップがないか検査したりすることはよくあると思いますが、そのよくあるはずの検査アルゴリズムの知識がなかったので、頭をひねった結果をメモ。 int[] seq = new int[…

Listen 0.0.0.0 in Java

Java で Socket Listen するときのアドレスを InetAddress.getByName("0.0.0.0") で与えると、 IPv4 の 0.0.0.0 と IPv6 の [::] の両方を Listen しちゃって、v4v6の両方で接続できちゃう ようになるような(今更)

eclipse のデフォルト文字コードの変更

eclipse で開いて文字化け、「ふぁっきんms932!」と叫んだときに。eclipse.ini に -Dfile.encoding=utf-8を追加設定→一般→ワークスペース で変更する手もあるけど、そちらはワークスペース単位なので。「eclipseで開くのは UTF-8 に決まってるだろぉぉぉぉ…

InnerException の再スローには ExceptionDispatchInfo を使おう

単発タスク(Task.WaitAllとかで集約していないタスク)を使った非同期処理を扱うメソッドでの例外を投げる場合、 AggregateException をそのまま出すと、メソッドを呼ぶ側で InnerException をチェックしたりしないといけないので面倒です(面倒ですよね?…

C# の long は読み書き Atomic じゃないから Interlocked 使おう

複数のスレッドから触られる long 変数(64bit変数)の取り扱い。 Java メインの人は引っかかりそうなのでメモ。Java ではできる「volatile long」が C# では未サポート(コンパイルエラーになる)なので、 long 変数への Atomic な読み書きをするには読み書き…

TcpClient#Connect のタイムアウト制御

TcpClient でコネクションを張る際の接続時タイムアウトをユーザコードで任意に指定しようとすると、次のようなコードが今風(C# 5.0 以降風)なのだろうか? try { int timeout = 接続タイムアウト(ms); TcpClient client = new TcpClient(); Task con_task =…

C# 非同期メソッドを作るにあたり、例外が出るタイミングでハマったメモ

通常のメソッドを非同期化しようとしてハマった罠。 普段 C# を使いこんでる人は既知だろうからスルー推奨。次のような感じのコードで hoge を非同期化しようとする場合、 void Main() { try { hoge(); } catch (Exception e) { ※ 例外処理 } ※ 続きの色々な…

Commons CLI でソートせずにオプション一覧を出力する

Commons CLI で設定したオプションをソートせずに help 表示・出力する方法。HelpFormatter#setOptionComparator に null を渡せばソートが無効化される。HelpFormatter のデフォルトでは、 Options に設定したオプションが通常の文字列順序にソートされて出…

JSON の Jackson が勝手に Stream を close してしまう問題

問題 JSON ライブラリ Jackson の ObjectMapper を使ったシリアライズ・デシリアライズで、Stream や Reader/Writer を対象にしたメソッドを使うと、そのStream, Reader/Writer が自動的に close されてしまうので、再び読み書きしようとした際に IOExceptio…

Java InputStreamReader、 Windows でのデフォルト文字コード

Java の InputStreamReader、 Windows 環境ではデフォルト文字コードは UTF-8

Gradle で外部設定ファイルを使ってデフォルト設定を上書きする

build.gradle 内でデフォルト値を設定しておき、 gradle.properties の設定値があればそちらで上書きする。build.gradle の頭のあたりにデフォルト値と gradle.properties からの読み取りコードを以下のように書いておく。 configDir は def なり ext { } な…

Gradle でタスクの途中で中断させる方法

質問『Gradle のビルドスクリプトで、処理環境が整ってないとかでタスク途中で中断するにはどうすればいいの?』答え『例外投げろ』例えば、実行環境は Java8 に移行済みなんだけれど、大人の事情の都合で Java7 環境向けのコードを出さないといけない場合に…

Could not fetch model of type 'EclipseProject' using Gradle distribution 〜 エラー

Could not fetch model of type 'EclipseProject' using Gradle distribution 'http://services.gradle.org/distributions/gradle-2.6-bin.zip'. → \.gradle を削除してみよう eclipse + buildship で、Gradleプロジェクトを新規で作ったりインポートしたり…

Gradle でソースの一部を除外した jar ファイルの作り方

Gradle で Ant の jar タスクで言うところの exclude のやりかた。 task jarTare(type: Jar) { baseName = 'Tare' from sourceSets.main.output exclude('jp/ne/hatena/d/samples/shell/**') } baseName は出力する jar ファイルのファイル名。 src/main/jav…

Eclipse Gradle plugin の Buildship が依存ライブラリを解決してくれない問題

いまさらながら Gradle に手を出しはじめたので、コマンドラインでちょこちょこと弄ってみた後、Eclipse + Buildship plugin な環境でインポートしたところ、依存ライブラリが解決されない。 maven の m2e 環境のように自動的に依存ライブラリダウンロードし…

Ubuntu 14.04 64bit に android NDK r10c を導入する際の問題と対処

android NDK でネイティブなのを android に移植しなければいけなくなったので、 Ubuntu 14.04 64bit を VMware に入れて、 NDK 環境を作ろうとしたんですよ。そうするとね、 $ wget http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86_64.bin $ …

jQuery Mobile のダイアログの閉じるボタンを非表示にする

ダイアログを構成するブロックに data-close-btn="none" をつける <div id="hogehoge" data-role="dialog"> を <div id="hogehoge" data-role="dialog" data-close-btn="none"> こんな感じで。jQuery Mobile 1.4.3 で確認</div></div>

git : 「unable to determine upstream svn information from head history. perhaps the repository is empty」

今日のはまった。git svn でやってきてた trunk ブランチにワークブランチから merge して、Egit経由の commit -amend でコメント直してコミットログを整えていって、を繰り返し。 さて git svn dcommit 。とすると。 unable to determine upstream svn info…

CAKE.js 弄っていたらテキストが描画されないバグに遭遇した

(2012/9/27 追記あり) Canvas 処理ライブラリの CAKE.js 使っていたら、Chrome でテキスト描画されないバグに遭遇したのでメモ。結論:これのComment#4のパッチを当てて回避すべし。 2012/9/25 時点で trunk に置いてある cake.js (r76 by crgodsey on Jul 2…