「SE業務」カテゴリーアーカイブ

【Java】文字列にCRLF,LFの改行コードが混在していても、両方の改行コードで文字列を分割する

案件にて「この移行データには改行コードがCRLFだったり、LFだったりするデータが入ってくるので考慮してください」と言われました。

いやいやいや、移行するときにデータ変換して統一してよ!!っと思いましたが、政治的に負けて対応することになりました。。。

作成したコードは以下です。

CRをブランクに変換した後にLFでsplitしています。

こちらのコードは以下のGithubリポジトリにも置きました。
my-java-snipet/MyStringUtil.java at main · glasses-se-hub/my-java-snipet · GitHub

あとから確認したら、String.split()でも複数文字で文字列分割できるらしいので、そっちでもよかったかも。

でもいいんですが、動くし、あとから見る人にとってはこっちの方がわかりやすいと思う!!ことにする(笑)


【Java】文字列が半角スペースのみの文字列かチェックする

仕事で「文字列に含まれるのが半角スペースのみであること」をチェックする処理が必要になりました。

最初はString.trim()した後に、空文字であれば半角スペースのみと判定できると思ったのですが、String.trim()のJavadocには以下のように書いてあります。

値がこの文字列で、先頭と末尾のすべてのスペースが削除され、コード・ポイントが‘U+0020’ (空白文字)以下の文字でスペースが定義されている文字列を返します。
Returns a string whose value is this string, with all leading and trailing space removed, where space is defined as any character whose codepoint is less than or equal to ‘U+0020’ (the space character).

つまり、String.trim()は半角スペースだけでなくタブ、改行コードなども削除されてしまい、今回の要件に合いませんでした。

String.trim()を使う案はやめて、私が結局使ったのは以下のコードです。半角スペースを空文字に置換して、最終的に空文字であるかという判定です。(正規表現は苦手なのでやめました。。。)

こちらのコードは以下のGithubリポジトリにも置きました。
my-java-snipet/MyStringUtil.java at main · glasses-se-hub/my-java-snipet · GitHub

もっと格好よくできそうですが、自分は格好良さより他の人が理解しやすいコードが書きたいと思ってます。( *`ω´) 


GitHubでPushした際に「git-receive-pack not permitted」とエラーが発生した際の対処法

GitHubで自分のリポジトリにPushしようとしたところ、「git-receive-pack not permitted」というエラーが発生した。(Eclipseからやってます)

エラーの画面ショット

とある記事では、「Gitのパスワードが間違っているので、Eclipseのセキュアストレージを一旦削除する」というのがあったが、これでも解決せず。

散々探した結果、GitHubの公式ブログに見つけました!なんと、2020/12/15の記事で「Token authentication requirements for Git operations」がありました。
https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

つまり、Gitの操作にはトークン認証が必須になるよという意味でした。実際、トークンを作成してPushしたところ問題なく操作できました。

私の場合は、Cloneするときには、Githubのアカウントとパスワードをセットしていたため、同じ認証情報がPushの時にも使われてエラーになったました。

トークンの作成方法

① GitHubにログインして、アイコン > Settingsを開く。

②画面下部の方にある、Developer Settingsを開く。

③Personal access tokenを開く。

④Generate new tokenを開く。

④トークンの名前と有効期限をセットする。

⑤アクセスを許可するスコープをセットして、画面下部のGenerate Tokenを押下する。

⑥そうすると、トークンが作成された画面上に表示されるためメモしておく(このタイミングでしか見れない)

⑦アクセストークンをパスワードにセットして使う。↓例

なお、英語でよければTokenの作成方法について公式の記事があります。
https://docs.github.com/en/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

Eclipseの認証情報のクリア方法

私のようにEclipseで認証情報を保存してしまった場合は、以下の方法でクリアできます。
設定 > 一般 > セキュリティー > セキュア・ストレージ > 内容 > [デフォルト・セキュア・ストレージ] > GIT > http・・・・(以下画面参照)
に移動して削除を押下します。

すると再起動を求められるので再起動します。再度Pushするときに認証情報を求められるので、その時にパスワードにTokenを使いましょう。

古いバージョンのEclipseであれば、以下の記事が役に立つかもです。
https://hacknote.jp/archives/6690/

いやー、自分が使っているサービスの公式ブログはたまに読んでおかないとだめだ。(;´д`)