kiyo_hikoのブログ

メモ+日記?

Perlの数値の右側にゼロを詰めて桁揃え

最初printfでできるといい思った。
つまり、次の「ゴニョゴニョ」相当の文法検索したが見つからなかった。

my $v = 999;
printf('ゴニョゴニョ', $v); # => 999000000に評価されてほしい

雑に解決

こだわってるわけではないし雑に書いて解決した。

my $v = 999;
$v .= '000000000000000';
print substr($v, 0, 9) . "\n"; # => 999000000

おk

最近毎日圧倒的低成長

Windowsで、Gitのリモートリポジトリをローカルフォルダーに置く

以下のようなとき、この方式の使いでがあると思うからメモっとく。

  • リモートリポジトリのしくみを学習中だったり、WindowsのLAN内で完結する作業で、わざわざGitサーバーを置くほどでもない場合。
  • またはGitHubとかクラウドのリモートリポジトリが会社のポリシーとかで禁止されてる場合。

自分はリモートリポジトリの学習するときもっとワンタッチでリモート置けないかと思って調べたらこの方式があった。今までGitHubべったりでちゃんと学習してなかった。

結論

ここにやり方が書いてある。→ Git - Book

終わり。

せっかくなのでサンプルケースを設定し詳細手順を

サンプルケースと手順の概要

ここではサンプルケースととしてC:\dev_repo 以下にローカルリポジトリとリモートリポジトリを作る。そしてローカルでやった作業をリモートにpushするまでをコマンドで示します。
※dev_repoフォルダーはもう存在してるつもり。

次の7手順がこの記事に書くすべて。

  1. ローカルリポジトリ用フォルダーを切る。フォルダー名はtestとする
  2. ローカルをinit
  3. ローカルで何か作業をする
  4. リモートリポジトリ用フォルダーを切る。フォルダー名はtest.gitとする
  5. リモートをinit
  6. ローカルがリモートを参照できるようにする
  7. push
↑の詳細手順

まずコマンドプロンプトを起動。

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⌒) ./| _ノ  __ノ

2019/12/26追記:リモート・リポジトリをUNCパス上に置く場合

File URIで「/」を5つ書く必要がある。次を参考にした。

yohshiy.blog.fc2.com

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ページのスクリーンショットが取れる。

www.picolix.jp

作業を楽にするため、コマンドライン用に自動化バッチファイルを書いた

自動化ソフトの更に自動化。

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

課題

ログインを要求するサイトには何か別のしくみがひつようなのかな

参考にしたサイト

stackoverflow.com

はてブにMyベストタグを作った

あとで読み返してすごがるとかうけるために「○○Myベスト」というタグを置いた。それだけです。
たとえば雑学とかエロとか。

はてブの読み返したさを管理するいい方法ないかなー。。

雑学Myベストに関するkiyo_hikoのはてなブックマーク
エロMyベストに関するkiyo_hikoのはてなブックマーク