Translate

BTemplates.com

Powered by Blogger.

2021年3月11日木曜日

2021-03-11 到達点メモ


ブログ記事を書くのがあまりにも久しぶりすぎる・・・。

普通に操作しているとフォルダの中の合計がわかりにくいので、フォルダのそれぞれのサイズ一覧を一括でわかるようにしたかった。

ひとまずRubyで実装はできたのだが、この記事を書く際にふと気になって調べてたら、(見にくいが)PowerShellでも普通にできます・・・。

Get-Childitem -Path ./ -Directory | ForEach-Object -Process{Write-Host $_; Get-Childitem -Path $_ -Recurse | Measure-Object -property length -sum | Format-List sum}

参考サイト:[備忘録]Windoes10:フォルダ毎の容量を調べる方法 | CEOブログ 


まぁ、見やすさ重視だったので一応無駄ではない
最近、全然コードを書いていなかったから、書いておきたかったし・・・。


■ 躓いたところ

・コマンドライン引数でWindowsのフォルダパスを渡したら、何も取得できなかった。

-理由
今回はDir.glob使用しており、Dir.globにパスを渡すさいは、"C:/php/dev"といったふうに、"/"でないといけない。しかし、Windowsのパスは"\"のため、そのまま使うとだめだった。

-対処方法
 File.expand_path()を使うか、.gsub(/\\/,"/") で変換するかで対応できる


・コマンドライン引数でテスト時のフォルダパスだとできたのに他のフォルダパスだとできなかった問題

-理由
フォルダ名に半角スペースが入っており、データの取得がARGV[0]で行ったため、半角スペース以降の文字列が別の配列のデータに格納されてしまったため。

-対処方法
コマンドライン引数で渡す際に、””で囲むようにした。結合とかも一瞬考えたが、オプションを半角スペースで区切って渡すのが、本来の仕様だと思うので、それに従ったほうが良いと思ったため。


・フォルダ名:サイズKBの形式にし、文字数に応じて半角スペースで埋めて揃えようとしたところ、日本語が入るとばらばらになってしまった。

-理由
半角文字と全角文字を考慮していなかった。むしろ、最初は日本語をどう見つけるか、もしくは省くかを考えてしまい、半角文字と全角文字という区分に気がつくまでに時間がかかった。

-対処方法
考え方としては半角文字を1とし、全角文字は2とした。
Rubyの仕様だと、半角全角関わらず単純に文字数を数え上げてしまうようなので、半角英数字記号以外を数えて、それを足すことで解決した。
半角カタカナには対応していないが、使われるケースは稀と考えたので今回は考慮しなかった。


・Googleで正規表現 半角英数字記号で調べたら、/^[a-zA-Z0-9!-/:-@¥[-`{-~]*$/とでてきたので、/の中身をそのまま使った。後で気がついたら、なんでこれで全角文字が判別できているんだ?

-理由
Rubyでは^は否定表現である。
参考サイト:正規表現 (Ruby 3.0.0 リファレンスマニュアル) 

-対処方法
今回はふと疑問に思ってテストコードを書いたら発見できた。というか、そもそもちゃんと公式ドキュメントを読もう。


■実装する際に参考にしたサイト

Rubyでコマンドライン引数を取得する方法:ARGV | UX MILK
Rubyでディレクトリを一覧表示する方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン
Rubyでディレクトリの中のファイル一覧を取得 – かひわし4v1.memo

 

GitHubに上げるまでやりたかったが、力尽きたので今日はここまで。

2019-11-11、12-03 到達点メモ


EslintとPreitterを使っているのだが、mdファイルが整形されるのは地味に困るので
mdファイルは整形されないようにしたかった。

◆手順
1. プロジェクト直下に.prettierignoreと.eslintignoreを作成する。
2. それぞれに、*.mdと記述する
おわり。

◆参考サイト
.eslintignore の配置場所は気をつけた方がいい - Qiita
Prettierの対象から一部ファイルを除外する- Qiita
eslintで任意のディレクトリ、ファイルをチェック対象から除外する方法- Qiita


最近AtCoderの問題を解いているのだが
たまにRubyのメソッドを使えば、簡単に解けるしまうケースが有る。
なお、今回取り組んだのは、C - Slimes という問題である。

具体的には、以下のようなメソッドである
「squeezeメソッドは、文字列中で同じ文字が連続している部分を1つの文字にまとめ、新しい文字列を返します。」
squeeze, squeeze! (String) - Rubyリファレンスより一部抜粋

これがあれば、わざわざ文字列一個一個を見る必要はなく、しかも早く結果が出る。
実装の問題もあるのだろうが、
自分の実装だと実行時間が771msに対し、ライブラリだと7msである。
一応、自分の実装は配列(1545ms)から文字列に内容を変えた上での結果である
恐らく、一つ一つ見るやり方だと非効率なのだと思われる。


途中まで記事を書いていたが、もう内容は覚えていない・・・。
お蔵入りにするのもあれなので、そのまま上げる

2019年11月3日日曜日

2019-11-02、03 到達点メモ


環境移行の影響で、eslintとprettierの設定が吹っ飛んでしまった

ひとまず、近い形にはなったので手順を書いておく
ローカルではなく、グローバルでやりたかったので
それに準拠する
*Windows環境の話です

- node.jsをダウンロードする
- npmが動くはずなので以下のコマンドを入力する
npm i -g eslint prettier npm eslint-plugin-prettier eslint-config-prettier prettier-eslint
- VSCodeを立ち上げて、拡張機能のESlintとPrettierをそれぞれ入れる
- Eslintの拡張機能でESlint: Auto Fix On Saveにチェックを入れる
- Ctrl+,で設定画面を開き、Format on Saveで検索し、チェックを入れる
- .eslintrc.js(eslintrcの前に「.」が付く)を作成し以下の内容にする
module.exports = {
  env: {
    browser: true,
    es6: true,
  },
  extends: ['eslint:recommended', 'plugin:prettier/recommended'],
};
.prettierrc.js(prettierrcの前に「.」が付く)を作成し、以下の内容にする
module.exports = {
  tabWidth: 2,
  singleQuote: true,
  trailingComma: 'es5',
};


多分これで動くはず


参考サイト:
ESLint 最初の一歩 - Qiita
ESLint - Prettier連携のやり方と仕組み - Qiita
VS Code の便利なショートカットキー - Qiita
VS CodeにPrettier・ESLint・Stylelintを導入してファイル保存時にコードを自動整形させる方法 | WEMO
ESLintとPrettierを併用するときの設定(eslint-plugin-prettier, eslint-config-prettier) - dackdive's blog


以前にメソッドと括弧の間にスペースが挿入される設定だったのだが
できなくなったので調べてみた。
どうやら、メソッドと括弧の間にスペースが挿入されるのは
Eslint側でspace-before-function-parenをやればできるのようなのだが
ここのページによるとPreitterにはspace-before-function-parenに
あたる機能がないらしく、実際にPrettierのOptionページを見た限りではなさそうである


参考サイト:
ESLintのエラールール。日本語ざっくり解説[スタイル編] - Qiita
space-before-function-paren - Rules - ESLint - Pluggable JavaScript linter
Options · Prettier
ESLint - Prettier連携のやり方と仕組み - Qiita



console.logで警告が出る問題は以下の内容にしたら
あっさり解決できた。
rules: { 'no-console': ['error', { allow: 'warn' }] },

参考サイト:
no-console - Rules - ESLint - Pluggable JavaScript linter



◆その他

自分は今Braveというブラウザを使っているのだが
その際に現在選択しているタブが見にくかった
そこで選択しているタブだけ変更する方法を調べたところ
テーマで選択しているタブの色を変更することができることがわかった。
Black&Whiteのほうがわかりやすいが、もうちょっと白を抑えた感じにしたかったので
現在はSerenityを試験的に使っている

今日はここまで

2019年11月2日土曜日

2019-10-19 到達点メモ


草をはやしたい

草が生えないのは、コミットしているメールアドレスと
githubのほうのメールアドレスが一致していないと
草が生えない。

手段はいろいろあるが、今回は過去のコミットを全部変更する手段をとった

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='test_name'; GIT_AUTHOR_EMAIL='test@example.com'; GIT_COMMITTER_NAME='test_name'; GIT_COMMITTER_EMAIL='test@example.com';" HEAD

GIT_AUTHOR_NAMEはコード自体の作者名
GIT_COMMITTER_EMAILはコミットした人(複数人で作業すれば、コミットが違うことはあり得る)
という解釈している。
AUTHORとCOMMITTERは、一人で開発しているのであれば
同じと考えてよい。なので、どちらも同じものにしてやるとよい。

ただ、この手法でやると過去のデータまで書き換わるのでこのままでは
pushできない。そこで強制的に書き換えるforce pushが必要

git push --force-with-lease origin master

参考サイト
【草はやしてる?】意外と知らないGitHubで草を生やす条件とは | Findy Engineer Lab - ファインディエンジニアラボ
Git の Commit Author と Commiter を変更する - Qiita
GitのCommitユーザを修正する方法 - Qiita
git push -f をやめて --force-with-lease を使おう - Qiita

2019年10月24日木曜日

マルチディスプレイの際に追加したディスプレイに範囲外と表示されたので、リフレッシュレートを弄って対処した話


◆諸注意
ブログを書く際に画像を撮ろうと前の設定に戻したのですが
なぜかエラーが出ませんでした。
そのため、この通りにしても解決するとは限らないですが、参考程度にどうぞ。

◆本文
私が持っているディスプレイモニターは貰い物で、めちゃめちゃ古いやつです。
具体的に言うとVGAという今のパソコンで採用していないと思われる規格です。

なので、HDMIという規格に変換する機器を使って接続したのですが
マルチディスプレイの設定を行ったところ、範囲外とディスプレイに表示されました。

色々調べてみたのですが、リフレッシュレートが繋げているディスプレイと一致しないと
範囲外と表示されることがあるそうです。

・参考サイト


なので、以下のサイトの手順通りに59ヘルツのところを
60に変更したところ、表示されるようになった。

・参考サイト

以上。

2019年9月4日水曜日

2019-09-04 到達点メモ


今回は、珍しく何を作るかを決めてちゃんと実装してみた。
大まかな手順としては以下のとおりである。

1.何を作るか、もしくは、何を修正するかを決める
2.ブランチ名を決める
3.テスト内容を決める
4.作成する
5-P1.作業に戻りたい場合は、stashで一時保存をして、ブランチを切り替える
6.動作テストを行う
7.コミットする
8.マージする

テスト内容を決める際に、ブランチ名を名前としたファイルを作成して
以下のことを記述した。

*ブランチ名
*概要
*開発目的
*機能概要
*テスト方法
*実施した際に変更した内容

本当はもっとファイルを別けたほうがいいのかもしれないが
利便性を考えてこのような形にした。

この後にコードの方で実際に何を作業するのかをある程度細かく書いた。
上記の内容はすべて決まっていたわけでなく、ある程度変えたり
また、作業していて実際に要らないと気が付いた作業を辞めたりした。(テストをほとんど終えた状態で気が付いたので作業量は減っていない)

全部含めて2時間過ぎくらいかかったのだが、普段のやり方だったらもう少し早く終わったと思う。ただし、普段のやり方ならテストは不十分だし、考えながら作っているのでそれと比べると今回は迷いなくできたと思う。

この方法が本当にうまく行くのかはまだちょっとわからないが
もう少し続けていきたいと思う。

今日はここまで

2019年9月3日火曜日

2019-09-03 到達点メモ


◆jQuery話

今回、URLから取得したデータに以下のように単語検索をかけていた。
data.match('検索したい文字')
しかし、何故かnullで結果が返ってきていた。

dataの中身を改めてconsole.logで調べたところ、
dataはhtmlデータで、特に問題が無いと思っていたのだが実際は違った。

検索したい文字はブラウザ上だと以下のように表示されていた。

検索したい文字

しかし、HTMLだと以下のようになっている

<b><span style="color: red;">検索</span></b>したい文字

で、今回はHTMLデータを取得していたので、data.match('検索したい文字')
のやり方で出てくるわけがなかった・・・。
なので、もしやるなら、$ (data).text ()のようにしてタグを消す必要がある。


◆Gitもしくは開発方法の話

最近、Chrome拡張を開発しているのだが、ちょっとうーんと思う出来事が起きた。
現状Chrome拡張を開発しながら、作業をする際にそれを使っている。
作成中もしくは修正中にバグると作業が止まってしまう上に
修正中のデータ時に消したくない時があったりする。

developを作るとかstashを使うとか解決できるかと思ったが、
考え直したところ適切な解決策ではないように思える。
というかそもそも作業の進め方を間違っているような気がする。
何を作るかを決めてから作業をするべきで、
場当たり的に進めているのが問題の様な気がする
つまり、
問題が起こる。もしくは作りたいところができる。
→ branchを作る。
→ 作業を進める。
(→ もし、何らかの理由で一時保存したい場合にstashを使って元のブランチに戻す)
→ 統合する

こんな感じが理想なのではないだろうか?

参考サイト
Git - ブランチとマージの基本
Gitのブランチモデルについて - Qiita
Gitのdevelopでの作業について - Qiita
変更を一時的に退避!キメろgit stash - Qiita

ブランチ名を変更したり、そもそもブランチを作ったりするのに
以下のサイトを参考にさせてもらった。
git コマンド branchの作り方 - Qiita
gitのローカルのブランチ名を変更したい - Qiita


もう今日はこれでよい気がするので、ここまで。