Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

JSONの末尾のカンマにご用心

いつも気をつけているのだが、割とうっかりやらかすので戒めのためにメモ。 JSONは元々JavaScriptの記法を元にしたフォーマットだが、実はJavaScript上では許されているがJSONとしては許されていないものがある。 その代表例の一つが末尾のカンマだ。 例えば…

【R言語】read.csv()で読み込む際にヘッダにXが付与されるのを防ぐ

R

気軽にRStudioを使ってグラフを吐き出そうと思ったら、思わぬところで引っかかったのでメモ。 R言語でCSVファイルを読み込む際にはread.csv()を利用するのが便利だ。 例: demo1.R data <- read.csv('demo.csv', header=TRUE, row.names=1, encoding="UTF-8")…

【Java】外部のライブラリ利用時にはコンパイルされたバージョンに気をつけよう

先日LTSであるJava21がリリースされたJavaについて。 xtech.nikkei.com メジャーバージョンがかなり早い頻度でリリースされるようになってきた一方で、開発者にとってはこんなメッセージで苦しまされることも多いのでは。 例: エラーメッセージ java.lang.Il…

【HTML】imgタグにはalt, title, figcaptionのどれを設定すべきか

備忘録がてらメモ。 HTML上で画像の表示には主に [imgタグ] を使用するが、その画像の説明を追加する方法がいくつかある。 それぞれどのような場面で使用すべきかをまとめる。 alt属性 この [alt属性] には [画像が表示されない場合に何が表示されるべきか説…

【Git】core.ignorecaseに気をつけよう

Git

何回も躓くので備忘録がてらにメモ。 割と理屈は分かっていても、いざ問題に遭遇すると原因だとパッと分からないのが辛いところ。 Gitではデフォルトだと[ファイル名の大文字小文字を無視する設定]になっている。 現在の設定を確認するには、リポジトリ上で…

【Python】pandasでCSVファイルをParquetファイルへ変換する

備忘録がてらメモ。 最近、ビッグデータを扱うプロジェクトでは「Parquet」という列指向フォーマット(カラムナフォーマット)が好まれるようになってきた。 parquet.apache.org Parquetの利点は、なんといってもデータの読み込みの速さとストレージ容量の節…

【Java】snappy-javaで生成したsnappy圧縮ファイルが壊れる事象への対処

備忘録がてら記載。 まず[snappy-java]はJavaでSnappy圧縮を容易に行うためのモジュール。 github.com この[snappy-java]を利用して生成したファイルを別システムに食わせるプログラムを作っていたのだが、受け取るプログラム側で以下のようなエラーに直面し…

はてなブログの投稿記事の中から最長のタイトルを探す

僕の雑記ブログ[DIGITAL COFFEE]の以下の記事で、遊びで実施した手法についてのメモ。 plugout.hatenablog.com はてなブログの投稿記事の中から、最長のタイトルを探す方法。 最初は[はてなブログのAPI]を利用しようと思ったが、ページングが面倒なのと、も…

Javaでコンパイルしたバージョンを知る

備忘録がてらメモ。 コンパイルしたJavaのバージョンを知りたい場合は、以下のようにするとスマート。 例: javap -v Demo.class | grep "major version" | awk '{ print $3 - 44 }' ※ Demo.classは対象のclassファイル

【JavaScript】データ型の落とし穴

結構ハマっている人がいるので、整理がてらメモ。 JavaScriptでは変数は型を持たないが、値がデータ型を持つ。 例えば以下のプログラムでは、数値(number)が文字列(string)としてキャストされて文字列結合が行われる。 例1: demo1.js let hoge = 128; // num…

「はてなブログ」と「はてなフォトライフ」について

備忘録がてらにメモ。 「はてなブログ」で記事に画像をアップロードして使用する場合の話。 僕もよくスマートフォンの「はてなブログ」のアプリを利用するのだが、「はてなフォトライフ」がメンテナンス中だとアップロード処理が延々と終わらない事象になる…

【JavaScript】HTMLCollectionsでArray.prototype.forEach()などを使用する

備忘録がてら。 ブラウザ上で[document.getElementsByClassName()]等を実行した場合に返却される[HTMLCollections]はArrayのような動きをするが、最低限の機能しか備わっていない。 もし[Array.prototype.forEach()]等を実行したいのであれば、[Array.protot…

【Java】[java.math.BigInteger]について

備忘録がてら。 Javaの[java.math.BigInteger]はlongでも扱えない様な大きな範囲の数値を扱うことができるクラス。 例えばコンストラクタに数値が格納された文字列を渡し、計算させることもできる。 Longの最大値を文字列に変換して与え、1足してみるサンプ…

【Java】Lambda式で「ambiguous(あいまい)」になるケースについて

ちょっとハマったのでメモ。 java.util.Functionやjava.util.ConsumerなどのFunctionalInterfaceなクラスのインスタンスを引数に取るメソッドに対して、Lambda式を与えると「ambiguous(あいまい)」としてコンパイルエラーになるケースが存在する。 例えば…

【Python】文字列から数値へパースする際の落とし穴

備忘録がてらメモ。 pythonにおいて文字列→数値へパースする際、使用できる文字はちょっと特殊で全角の「1」なども含まれる。 ただ当たり前だが、それを更に文字列に変換すると半角数字になるので注意。 例: demo.py raw_value = "1" # 全角の「1」を与え…

【kotlin】文字列を日時型へパースするExtension

ちょっと作ったのでここに記載。 日付関連のパースは、いつもちょっと面倒なのでExtensionを作ってしまった方が楽かなと。 実運用時にはフォーマットを外から与えるのではなく、別に専用のメソッドを作って中で固定して持ってしまった方が楽かもしれない。 …

【Java】アクセス修飾子の問題でアクセスできないEnumをリフレクションで取得する

個人的メモ。 あるライブラリを弄っていて、アクセス修飾子がついていないEnumのインスタンスを引数に要求するメソッドに出くわしたのでこの方法を使った。 (そのメソッド自体はpublicなので、恐らくアクセス修飾子の考慮漏れか修正ミスだとは思う) 例: De…

【Java】Lombokの拡張を行う

Lombokを拡張する方法を探していたのだが、想定していたよりも情報量が少なかったので備忘録がてらここへ記録。 projectlombok.org 結果として、日本語、英語、中国語の技術記事をかき集めることになった。 カスタマイズはjavacのtools.jarを扱うことになる…

【JavaScript】Infinityへの加算及び減算の挙動について

何遍Infinityについて書いているんだと言われたら、何も言えないのだけれど(白目) plugout.hateblo.jp plugout.hateblo.jp ゼロ除算自体が一般的にアンチパターンなので、意外と知らない事も多いなと。 今回はInfinityを使って加算及び減算した場合につい…

【Java】[java.sql.ResultSet]の落とし穴

実装的に当たり前といえば当たり前だけれど、知らないとハマりそうな話。 [java.sql.ResultSet]の[ResultSet.getLong()]や[ResultSet.getInt()]は、primitiveな値を返却するように実装されている。 なのでDB上でNULL許可されているようなカラムから情報を取…

【Java】JacksonでのInfinityの扱いについて

自分の備忘録がてら。 前回、JavaScriptのInfinityのJSONでの扱いについて書いた。 plugout.hateblo.jp 今回はJavaのJackson(com.fasterxml.jackson)だとどうなるのかなと思って試したのを残しておく。 github.com ちなみにInfinityはdoubleやfloatで0除算を…

【JavaScript】[JSON.stringify()]にInfinityを与えるとnullになる

自分の備忘録がてら。 [JSON.stringify()]はObjectからJSON文字列を生成する関数だが、結果で一部正確に反映されないものが存在する。 そのうちの一つがInfinityで∞(無限)という意味だ。 JSON文字列上、∞は表現できないためにnullになってしまう。 (尚、Infi…

【JavaScript】指定した文字数のランダムな英数字文字列を生成する

備忘録がてら。 以下のプログラムは200文字のランダムな英数字文字列を生成する。 例: test.js let length = 200; // わかりやすく代入しているが、直指定すればワンライナーで書ける。 let str = Array.from({"length": length}, (v, k) => k) .map(e => Ma…

【Java】[java.util.Optional]における匿名クラスの扱いに気をつけよう

Javaの話。 ※ Java8及びJava15にて事象を確認。 以下のプログラム(Test1.java)はコンパイルエラーが発生する。 例: Test1.java import java.util.Optional; public class Test1 { public static void main(String... args) { Object object = Optional.of(ne…

【JavaScript】ENUMの仕組みを用意する

JavaScriptでは[enum]という単語は予約語だけれど、一般的な[enum]、つまりは列挙型の仕組みは用意されていない。 ja.wikipedia.org [JavaScript enum]でGoogle検索をかけると、連想配列を使って擬似的に実現する方法が出てくるけれども、個人的には[定義時…

【Perl】便利なハッシュスライスを使いこなそう

ハッシュスライスを使うと、ハッシュから複数の値を一気に取得したり、一気に代入したりすることができて便利。 取得の場合の例: 例: demo1.pl #!/bin/bash my %data = ('hoge' => 'fuga', 'foo' => 'bar', 'piyo' => 'piyopiyo'); my @values = @data{'hoge…

【Perl】splitの際にエスケープされているものを含めないようにする

タイトルの通り。 例えば「,(カンマ)」の場合。 CSVファイルの1行なんかを簡易的に「,(カンマ)」でsplitしたい場合、バックスラッシュなどでエスケープされている物はsplitの対象としたくなかったりする。 その場合はsplitで正規表現を用いて、以下のように…

【Java】[Generics]はしっかり設定して[RawType]を防ごう

[Generics]はしっかり設定して[RawType]を防ごう(大事なことなので2回ry) 以下のプログラムはコンパイルエラーになる。 注: Java8にて確認。 例: Hoge.java import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.stre…

【Lua × JavaScript】Fengariのメモ

TypeScriptを弄っていたはずが、いつの間にか楽しくてFengariを弄っていた(?)ので……調べながら試したことのメモ。 fengari.io FengariはJavaScriptで実装されたLuaのVMとのこと。 ブラウザ上でLuaのスクリプトを動かすことができる。 以下は簡単なHello W…

【MATLAB】nchoosekによる[組み合わせ]の利用

今回は以前に記事を書いた記事の、MATLAB版。 plugout.hateblo.jp MATLABで[組み合わせ]の処理実装するためには[nchoosek]を利用するのが一番スマート。 jp.mathworks.com 例: Demo1.m data = ["A", "B", "C", "D", "E"]; patterns = nchoosek(data, 3); [m,…

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)