つかぱい.com

どうせなら好きなことを書いていたい

tarファイルは圧縮しない?

豆知識Tips: tarファイルは圧縮しない

Q. なんでLinuxで圧縮するときtar.gzファイルにするの?

tarファイル自体は複数のファイルを一つのアーカイブファイルにするコマンドなので

圧縮する機能はありません

(ファイルの持ち運びに便利な形式だよね)

ー>もともとテープドライブで処理可能な形式にするコマンドだったらしい

tar=tape archivesの略

そのためコマンドのオプションとして圧縮をするかを指定します。

圧縮する場合はgz,bz,xzのいずれかの形式使って圧縮を実行できます。

基本的にはgzで圧縮しますがより圧縮率を高めたい場合はbz,xzで実行するといいかも

圧縮の効率の順

低 gz < bz < xz 高

ちなみに圧縮は画像が劣化したりするので、過度にやるのはあまりおすすめしません。

コマンド実行したい場合はこんな感じに実行します。

例:tar zcfv hoge.tar.gz hoge

なんでこんなことを書いたのか?

ぶっちゃけアーカイブファイルとか何しているのかよくわかってなかった。

最近JavaのWarファイルとか見て「これLinuxのTarもこんな感じじゃね?」と思って調べてみたら案の定そうだった。

便利だけど最近単体であんま使わない、それがTar(コマンドは便利だけどね)

シェル芸更新:Renameコマンドを追加してみた

Renameコマンドでファイルの一括変換とかできるみたいなのでレパートリーに追加してみました。

Q.複数のファイル名を一括で変換したい

とりあえずRenameコマンドを使ってみましょう

$ rename s/Before/After/g ./BeforeFiles

ちなみにUbuntuだとこんな感じにできるらしい

UbuntuTips/FileHandling/RenameCommand - Ubuntu Japanese Wiki

まあこれはシェル芸ではなくコマンドの使い方になっちゃうんだけどワンライナーで変換できるならとりあえずOKとします(僕は原理主義者でもないので)

qiita.com

いい習慣化のメモ

今年に入って習慣化したいなーと思ってたことがだんだんと出来てきたのでそのメモ📝

いい習慣化出来たこと

今年に入っていい習慣化出来たことはこんな感じ

  • 毎日仕事以外でコードをコミットできるようになったこと
  • 毎日全力状態にしないである程度の余力を持って仕事出来るようになったこと
  • 毎日こうするべきみたいな思い込みをやめたこと

どれも劇的に自分を変えることではないけど学生のの時と比べて気持ちのペース配分とか人目気にせずさっさと帰るとか出来てる気がする。

もちろんここ数ヶ月は深夜帰宅がほとんどで休めているような状態ではないだろうし、多少はブルーになったりするけれどそこまでどん底感はないかな

逆に自由に使える時間が限定される分、どうやってめんどくさいことを回避するかという部分を考えることが出来たのは良かったポイント

むしろ今までダラダラやってたから結果出てなかったのかもなー、とも思った

一番はやりたいし好き✨なこと(主にプログラミング)が具体的にイメージしながら出来るようになったこと

しばらくはなんで出来ないんだろとか悩んでたけどようやく人が見ても分かる感じになってきてちょっと嬉しい😃

継続は力なりということを証明できました。

楽しくなってきたのでやるっていうループになってきたので続けよう

# loop_image_in_my_mind.rb

loop do
  puts "I enjoy programming !!!"
  myskill ++
end

今後の課題

今後の課題はこんな感じ

  • ある程度の設計をして練習すること
  • 持ち物の整理と保管
  • 人に会う機会を増やす

どれも学生の時はできて社会人になると難しいこと

毎日のルーティンは決まってきたんだけど、走りながら設計していくのはやっぱり難しいと思った

人が考えたことを真似することから今度はちょっとした自分のオリジナルを見つけていくことが重要かなと

あとは仕事場から家がどうしても遠いので部屋の整理がつかないのがよく気になってる

土日家にいることが出来ると多少は改善するのかな

それでも、本とか置きすぎだと思うので読み返さない本はノートして📓誰かに売りたい

持ってても使わないのが一番もったいないからね

あー、せっかくミクさんを買ったのから使いたいなー

その辺はデジタルのいいところだよね

あとは最近Matzさんに会って刺激をもらったから、もっといろんな人に会いたいなーって思った

ある程度の自分のこんなことしてるんだーって人に言えるようになったわけだし

いいと思ったことは続けるといいことあるよ

超初歩的なRubyのスクリプトで残業代を計算する。

Qiitaを今月もギリギリだけど書いたー 一応自分ブログにも書いておく クラス名はちょっと変えた

qiita.com

元ネタはこちら [Rubyでユーザのキーボード入力を対話的に受け取るRubyスクリプト] (https://qiita.com/na0AaooQ/items/65005f51c2430f74d2f0)

最近、仕事する時間が長くなってきて、コンソール上でこっそり残業代を計算するスクリプトが欲しいなーと思ったのでRuby超初心者が書いてみました。

やりたかったこと

  • スマホを取り出して電卓アプリを起動するものもはや面倒なのでなるべくキーボードから手を離さずになにか計算したい。
  • RubyのMatzさんの講演会を聞いたのでとりあえずなんでもいいからRubyでなにか書きたかった。
  • まあ、とりあえずやることが大事というモチベーションを維持したい。

実行環境

OS: MacOS Ruby: ruby 2.3.7

特にOSによる環境差異はないと思うのでRuby入れれば動くはず

ちょっと時間がかかったこと

問題点

gets.chompで対話的に入力値を取れるかな思ったけどString型になってしまうことを理解していなったので計算実行時こんなエラーが起きた

How_much_money.rb:51:in `calc_money': undefined local variable or method `"\u201D\u3042\u306A\u305F\u306E\u6B8B\u696D\u4EE3\u306F"' for #<HowMuchMoneyClass:0x00007fc50a8c4e58> (NameError)
        from How_much_money.rb:58:in `<main>'
MacBook-Pro:Ruby pcuser$ ruby How_much_money.rb
How_much_money.rb:51: syntax error, unexpected tIDENTIFIER, expecting keyword_end

解決策

計算のためには整数でないといけないのでInt型に変換するようにgets.to_iで数値を受け取って上げればおK

スクリプト本体

コンソールで使う場合は以下のように実行

$ ruby How_much_money.rb

今のこんな感じで出力されます。(要改良)

----------------------------
自分の残業代を計算しますか?
計算する場合は yes、キャンセルする場合は no と入力して下さい.
yes
  計算を実行します.
----------------------------
基準とする時給を入力してください
入力例:)1250
900
----------------------------
仕事をした時間を入力してください。
入力例:)80
40
あなたの残業代は 36000 円です

今の所こっそり感はゼロですが、まあ気にしない

特にひねりはないですがソースはこんな感じ

#!/bin/env ruby

## ----------------------------
# ユーザからのキーボードの入力を受け取り、
# yes と入力されたらスクリプトを実行する、no と入力されたらスクリプトを終了します.
## ----------------------------

class HowMuchMoneyClass

  def initialize

    puts <<-EOT
----------------------------
自分の残業代を計算しますか?
計算する場合は yes、キャンセルする場合は no と入力して下さい.
    EOT

  end

  def get_keyboard_input_yes_no

     case gets.chomp
       when "yes", "YES", "y"
         puts "  計算を実行します."
       when "no", "NO", "n"
         puts "  スクリプトを終了します."
         exit 1
       else
         puts "  yes または no を入力して下さい."
         confirm = HowMuchMoneyClass.new
         confirm.get_keyboard_input_yes_no
     end
   end

   def calc_money
        # 計算する場所
        puts <<-EOT
----------------------------
基準とする時給を入力してください
入力例:)1250
   EOT
        base_monoey = gets.to_i
        puts <<-EOT
----------------------------
仕事をした時間を入力してください。
入力例:)80
   EOT
        money_time = gets.to_i
       #計算結果を返す
       result = base_monoey * money_time
       puts "あなたの残業代は #{result} 円です"
   end
end


confirm = HowMuchMoneyClass.new()
confirm.get_keyboard_input_yes_no
confirm.calc_money

感想

コンフィグファイル的なやつを入れれば、コンソールに金額とかの情報を載せずともできそうなので今度改良してみようかなと思いました。

シェルとかPythonとか自分の好きな言語でこういうツールを作ってみるのもいいかもしれないですね。

他の人みたいにエクセレントな設計とかできないので思いついたものから地味にやっていくのがいいかな

残業代計算できるスクリプトをつくってみる、その2

github.com

とりあえず計算式を入れて簡単な掛け算をできるようにしてみた。

ちょっとよくわからなかったのは標準出力するところをgets.chompでいけるかなと思ったけどgets.to_iで変換してあげないとうまく計算できないという点

Pythonとかだと勝手に型を付けてくれる場所だったのでちょっと変な感じがしたけどとりあえず動いたからいいかな

ソースはこんな感じにしてシンブル目にしておいてあとで改良しようと思う

#!/bin/env ruby

## ----------------------------
# ユーザからのキーボードの入力を受け取り、
# yes と入力されたらスクリプトを実行する、no と入力されたらスクリプトを終了します.
## ----------------------------

class ConfirmExecutionClass

  def initialize

    puts <<-EOT
----------------------------
自分の残業代を計算しますか?
計算する場合は yes、キャンセルする場合は no と入力して下さい.
    EOT

  end

  def get_keyboard_input_yes_no

     case gets.chomp
       when "yes", "YES", "y"
         puts "  計算を実行します."
       when "no", "NO", "n"
         puts "  スクリプトを終了します."
         exit 1
       else
         puts "  yes または no を入力して下さい."
         confirm = ConfirmExecutionClass.new
         confirm.get_keyboard_input_yes_no
     end
   end

   def calc_money
        # 計算する場所
        puts <<-EOT
----------------------------
基準とする時給を入力してください
入力例:)1250
   EOT
        base_monoey = gets.to_i
        puts <<-EOT
----------------------------
仕事をした時間を入力してください。
入力例:)80
   EOT
        money_time = gets.to_i
       #計算結果を返す
       result = base_monoey * money_time
       puts "あなたの残業代は #{result} 円です"
   end
end


confirm = ConfirmExecutionClass.new()
confirm.get_keyboard_input_yes_no
confirm.calc_money

残業代計算できるスクリプトをつくってみる、その1

github.com

いつもはシェルでPythonを叩いてこっそり残業代を計算してたりしていたのですが、流石に何回もやるとめんどいので勝手に計算してくれるマシンがあるといいなーと思ってコンセプトをコミット

とりあえず電車の中でコミット出来そうなことはしようかなと思ってる

設計は適当だけどね

続:RubyのTypoを見つけたので修正した件

github.com

前回、なんか間違いかなーと思って送ったプルリクにTryRuby作った本人から返信があって

「いやそれ間違いじゃないよ、意図的にエラーにしてコードを修正するエクササイズなんだ」

ていう返事があって、まじがーって思った。

単純に自分の国語力の問題だったので

うっかりでした−

でも丁寧に返信してくれてありがとうIvo

Last time, I thought that something was wrong and sent it to Pull Request There was a reply from him who made TryRuby

"No, that's not a mistake, it's an exercise that intentionally fixes an error and fixes the code."

I had a reply. I thought Oh that's my mistake

Because it was simply a matter of my own language ability

It was careless - 😅

But Thank you for replying carefully Ivo