Perlの数値の右側にゼロを詰めて桁揃え
最初printfでできるといい思った。
つまり、次の「ゴニョゴニョ」相当の文法検索したが見つからなかった。
my $v = 999; printf('ゴニョゴニョ', $v); # => 999000000に評価されてほしい
雑に解決
こだわってるわけではないし雑に書いて解決した。
my $v = 999; $v .= '000000000000000'; print substr($v, 0, 9) . "\n"; # => 999000000
おk
最近毎日圧倒的低成長
Perl5.xで配列の長さ的なもの
すぐ忘れるうえに調べても何の喜びもないTipsのメモ
my @xs = qw/1 2 3 4 5/; print("$#は" . #$xs . "\n"); print("スカラーコンテキストは" . scalar(@xs) . "\n");
#$は4 スカラーコンテキストは5
Fin.
Windowsで、Gitのリモートリポジトリをローカルフォルダーに置く
以下のようなとき、この方式の使いでがあると思うからメモっとく。
- リモートリポジトリのしくみを学習中だったり、WindowsのLAN内で完結する作業で、わざわざGitサーバーを置くほどでもない場合。
- またはGitHubとかクラウドのリモートリポジトリが会社のポリシーとかで禁止されてる場合。
自分はリモートリポジトリの学習するときもっとワンタッチでリモート置けないかと思って調べたらこの方式があった。今までGitHubべったりでちゃんと学習してなかった。
せっかくなのでサンプルケースを設定し詳細手順を
サンプルケースと手順の概要
ここではサンプルケースととしてC:\dev_repo 以下にローカルリポジトリとリモートリポジトリを作る。そしてローカルでやった作業をリモートにpushするまでをコマンドで示します。
※dev_repoフォルダーはもう存在してるつもり。
次の7手順がこの記事に書くすべて。
↑の詳細手順
まずコマンドプロンプトを起動。
1.
C:\> cd dev_repo C:\dev_repo> md test
2.
C:\dev_repo> cd test C:\dev_repo\test> git init
3.
C:\dev_repo\test> echo hello,world > hello.txt C:\dev_repo\test> git add . C:\dev_repo\test> git commit -m "initial commit"
4.
C:\dev_repo\test> cd.. C:\dev_repo> md test.git
5.
C:\dev_repo> cd test.git C:\dev_repo\test.git> git init --bare --shared=true
6.
C:\dev_repo\test.git> cd ..\test C:\dev_repo\test> git remote add origin file:///c:/dev_repo/test.git
7.
C:\dev_repo\test> git push -u origin master
ローカルフォルダーにリモートリポジトリができました。めでたしめでたし
_ \ヽ, ,、 _ `''|/ノ \`ヽ、| \, V `L,,_ |ヽ、) ,、 .| ヽYノ / r''ヽ、.| / ,.. -──- .、 `ー-ヽ|ヮ .| , ‐'´ __ `ヽ、 `| | / , ‐'"´ ``''‐、 \ | | / / \ ヽ | ヽ, y' /` ‐ 、 ,.. -'ヘ ヽ. }ノ ヽ,' / /`,ゝ' ´ ヽ Y. . i ,' { { ヽ `、 l ,イ─- 、.._ ヽ ,, _,.. -─:} ! . | r‐i| ー=ェェ:ゝ ,.∠ィェェ=ー' |r 、. l | {ト」l|. : | " ``: |!トリ | . │ ヽ、| ;.」_ |'ソ ! . │ ヽ r──ッ /ノ | | lヽ  ̄ ̄ / イ │ . ! 丶ヾヽ ~ , ' ノ │ ! ト. ミ.ゝ ヽ.____./ / l / ヽ ヽ イ ,' / , ' ┼ヽ -|r‐、. レ | \. ノレ'/ d⌒) ./| _ノ __ノ
ActiveRecordでDB更新したらログ吐かせたい
データの変更とか追いたいから、モデルがsaveされる(DBが更新される)ごとにログ吐くようにする。
以下2手順にて実現
1.モデルの共通的なベースを作る(前準備)
2.ベースのafter_saveフック内でログを吐かせる(やりたかったこと)
もっといい方法あるかもし、このやり方がうまげって保証無し。
手順1.モデルの共通的なベースを作る(前準備)
まずモデルにアプリ内で共通的に使う拡張機能を付ける。
このやり口はやっとくと便利な取り組みだと思ってる。開発とか数件しかしたこと無いけど。
ここでやることは2種類
concernという仕組み使ったモジュールを書き、これをアプリの標準的なモデルに取込ませる。
やること1.concern例:
共通の機能はActiveSupport::Concernを継承したモジュール書いてそれにメソッドとか定義。
models/concerns/regular_model.rb
# このアプリの共通的なモデル拡張 module RegularModel extend ActiveSupport::Concern def common_method # 何か共通的な処理 end end
やること2.model側の取込み例
modelのコードに以下の「これ」を追加。→ concernで定義した機能をmodelが持つ!
class Unko < ActiveRecord::Base # ↓これ include RegularModel end
手順2.ベースのafter_saveフック内でログを吐かせる(やりたかったこと)
先にコード例。そのあと補足1点。
models/concerns/regular_model.rb
# このアプリの共通的なモデル拡張 module RegularModel extend ActiveSupport::Concern included do after_save :after_save_log end def after_save_log logger.warn "#{Time.now.localtime.strftime('%H:%M:%S')}に#{self.class.name}が更新されました。" # ← ログ出力 self end end
補足1.includedてなんなの
ペラペラのモデルにフック書くなら
after_save :method_name # メソッド名シンボルを書く
でいいはずなのだけども、この方式はそのままconcernには持ち込めない。
includedで囲ってやる必要がある。
ruby on rails - Is it possible to define a 'before_save' callback in a module? - Stack Overflow
included do after_save :method_name end
複数のWebページを巡回して自動でスクショとりたい
CrenaHtml2jpg というソフト
Windows環境下で手早くて有用そう。
GUI、コマンドラインからWebページのスクリーンショットが取れる。
作業を楽にするため、コマンドライン用に自動化バッチファイルを書いた
自動化ソフトの更に自動化。
getss.bat
@echo off setlocal for /f "tokens=1,2 delims= " %%a in (url.txt) do ( CrenaHtml2jpg -o%%a -fjpeg -w1920x1080 -s1920x1080 -l5 -p -q92 -t25 -u%%b ) endlocal exit /b
バッチ使い方
getss.bat と 同じフォルダーに url.txt というのを置いて、
1.jpg http://www.yahoo.co.jp 2.jpg http://www.google.co.jp
みたいな感じで画像ファイル名+半角スペース+URLを記述して保存。
> getss.bat
課題
ログインを要求するサイトには何か別のしくみがひつようなのかな
参考にしたサイト
はてブにMyベストタグを作った
あとで読み返してすごがるとかうけるために「○○Myベスト」というタグを置いた。それだけです。
たとえば雑学とかエロとか。
はてブの読み返したさを管理するいい方法ないかなー。。
雑学Myベストに関するkiyo_hikoのはてなブックマーク
エロMyベストに関するkiyo_hikoのはてなブックマーク
Rubyでゼロ埋め文字列 (printf %0s的な何か)
なんとなく必要になって書きました。
def printf_0n(n, str) n <= str.length and return str "#{1.upto(n - str.length).map{0}.join}#{s}" end