タグ

ブックマーク / takuya-1st.hatenablog.jp (22)

  • いまさらcrontabのメリットと書き方を見直す - それマグで!

    crontab って便利だけどわかりにくさがある crontab の書き方がおかしくてうまく実行されないとか、そんな書き方があったのか!となることがある。 なので、systemd を使って定期実行することが多いんだけど、そうすると今度は管理が大変になる。 なんだこの定期実行は!となってしまう。 crontab で敢えて書くことの利点 「なんで、いまらさ cron なんだよ。このオッサンは!!」と思われるかもしれない。でもcronを使うメリットは少なからずあると思います。 メリット cronで書くと次のようなメリットがあると思います。 一覧ですぐ確認できる /etc/cron.d に絶対ある コマンドの書き方がシンプル メール通知がかならずある。 書式はパターン化される。 最初に cron は「クロン」と呼びます。 ときどき、「くぅーろん」とか「くろーん」とか余計な母音や長音を含めている人が

    いまさらcrontabのメリットと書き方を見直す - それマグで!
    suginoy
    suginoy 2018/08/05
    確認だけなら -e より -l の方がいいのでは。
  • Rubyで配列から重複したモノ(要素)を抜き出す(Uniqの逆) - それマグで!

    Rubyで配列の重複しているモノを調べるには。 Rubyって配列から重複しているモノだけを知りたい時どうするか?Yahoo!知恵袋の回答はアテにならないし、OKWaveもイマイチだった。そこでマニュアルとにらめっこして考えた。 配列から重複を取り出す例。 => a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8] #偶数がダブりの配列 >> a.select{|e| a.index(e)!=a.rindex(e)} => [2, 4, 6, 8, 2, 4, 6, 8] >> a.select{|e| a.index(e)!=a.rindex(e)}.uniq => [2, 4, 6, 8] rindex/indexの活用。 index(val) 最初の形式では、val と == で等しい最初の要素の位置を返 します。 rindex(val) val と ==

    Rubyで配列から重複したモノ(要素)を抜き出す(Uniqの逆) - それマグで!
    suginoy
    suginoy 2018/03/12
  • Systemd 時代のresolv.conf - それマグで!

    /etc/resolv.confがない。 驚いた、Resove.conf がなくなってるんですよ systemd 管理下に置かれた /etc/systemd/resolved.conf 代わりに、次のファイルがが出来た 昔からある resolv.conf は systemd が管理してしまう。 もしかしてリンク? takuya@ubuntu01:~$ ll /etc/resolv.conf lrwxrwxrwx 1 root root 39 11月 8 22:56 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf なんてことだ。。。。なんて面倒くさいことをやってくれるんだ。。。 リロードが必要 DNSなど名前解決設定を更新したら、sysd でリロードが必要だった。 systemctl restart systemd-re

    Systemd 時代のresolv.conf - それマグで!
  • 文字を含むタグを取り出すxpath - それマグで!

    CSSで取り出したり、XPathをフルパスで取り出すと面倒なので。 マッチ文字でデータを取り出して使いたい doc.xpath("//*[contains(./text(),'Ruby')]")Xpathはソレだけでクエリ言語として成立しているので、これを覚えるのが一番手っ取り早い。 こまったら 次を使う //タグ[contains( ./text() , "文字列" )] または属性で絞って //タグ[contains( ./@attr , "文字列" )] //*[contains( ./@attr , "文字列" )] あまりにざっくり書くと、親子ノードを連れてきちゃうので、タグや属性・text()は入れた方がいい //*は全ノードを示す よくある勘違い:contains(./text(),'検索文字')とcontains(.,'検索文字')は同じだよね? いいえ、違います "./t

    文字を含むタグを取り出すxpath - それマグで!
    suginoy
    suginoy 2017/10/19
  • http ヘッダでブラウザをリロードする retry-after と refreshヘッダ - それマグで!

    時間のかかる処理のHTTPリクエストへの対応 HTTPリクエストで、時間のかかる処理を受け取った時どうするか。 すぐに思いつくのは websocket や ajax で pollingしたりpush 通知する方法でしょうが、面倒くさいんだよね。 http ヘッダを見なおしてみる ブラウザにリロードを命令する方法が無いのか、ヘッダを見なおしてみた。 retry-after ヘッダ refresh ヘッダ この2つのヘッダが定義されていることがわかる。 retry-after はブラウザ実装が微妙 retry-after はまさにバッチ処理の為に作られたようなHTTPヘッダなのだが、これを見てるのはGoogleBotくらいらしい。 もし使うとしたら、 202 Accepted や 503 Service unavailable などとともに使うことになるだろうがブラウザ側が実装してないので、使

    http ヘッダでブラウザをリロードする retry-after と refreshヘッダ - それマグで!
    suginoy
    suginoy 2017/05/15
  • ruby でメールのQuoted-Printableをデコード - それマグで!

    rubyでメールの文の日語部分デコードしようとした。7bitかとおもたらQuoted-Printable。なにこれどうするの、と思って調べました unpack が妥当 str.unpack('M') デコード例 >> str=> "=F9=97=82=B1=82=F1=82=C9=82=BF=82=CD" >> str.unpack('M') => ["\xF9\x97\x82\xB1\x82\xF1\x82\xC9\x82\xBF\x82\xCD"] >> str.unpack('M').first.force_encoding('sjis') => "\x{F997}\x{82B1}\x{82F1}\x{82C9}\x{82BF}\x{82CD}" >> str.unpack('M').first.force_encoding('sjis').encode('utf-8') =>

    ruby でメールのQuoted-Printableをデコード - それマグで!
    suginoy
    suginoy 2017/04/05
    この方法では =\n を消すわけではない。
  • ruby の URI で日本語を含むURIに対応する。 - それマグで!

    語URIを扱うという戦い ruby のURIで日語を含む文字列が扱えなくなったので、何とかしないといけないとアレコレ模索した。 >> URI.parse 'http://example.com/あああ' URI::InvalidURIError: URI must be ascii only "http://example.com/\u{3042}\u{3042}\u{3042}" from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/2.2.0/uri/rfc3986_parser.rb:20:in `split' URI.encode が使えることを知った。 >> URI.encode 'http://example.com/あああ' => "http://example.com/%E3%81%82%E3%81%82%E3%81% p

    ruby の URI で日本語を含むURIに対応する。 - それマグで!
    suginoy
    suginoy 2017/02/27
  • ls コマンドで結果を数字順序にならべる。 - それマグで!

    ls -v で数字順序に並びます。 ls -v このオプションかなり便利。 ls コマンドは辞書順 lsの結果は辞書に並べちゃうので困ることがあります。 たとえば、次のような場合 takuya@rena:~/Desktop/test/sample02$ touch アルバム-{1..20}.mp3 takuya@rena:~/Desktop/test/sample02$ ls -l total 0 -rw-r--r-- 1 takuya staff 0 5 11 09:44 アルバム-1.mp3 -rw-r--r-- 1 takuya staff 0 5 11 09:44 アルバム-10.mp3 #⇐ 残念 -rw-r--r-- 1 takuya staff 0 5 11 09:44 アルバム-11.mp3 -rw-r--r-- 1 takuya staff 0 5 11 09:44 アル

    ls コマンドで結果を数字順序にならべる。 - それマグで!
    suginoy
    suginoy 2017/01/15
  • ニコニコ動画をダウンロードする。Rubyで。 - それマグで!

    ニコニコ動画を保存してitunesに転送しようかなと。 インストール パッケージは、sora_hの物を使うことにした。 gem install niconicoドキュメントには書いてないけど、ruby1.9でしか動かない。1.9が好きになれない僕には、ちょっと不満。 ダウンロードする。 require 'niconico' nico = Niconico.new('takuya@example.com','*****') #ログインメアド、パスワード nico.login $stdout = open("out.flv", "w") puts nico.video("sm12345456").get_video $stdout.flush 一覧を取り込む 初音ミクなどのボカロランキングをまとめてダウンロードする。 これはMechanizeでさくっと。 require 'mechanize'

    ニコニコ動画をダウンロードする。Rubyで。 - それマグで!
    suginoy
    suginoy 2015/10/13
  • Rubyで文字列が整数値に変換できるか調べる - それマグで!

    Rubyで文字列が数字変換可能か調べたい。引数とか文字列で取っておいて数字に変換できるか。 String#to_i のこの仕様が死ぬほど嫌だ "3".to_i #=> 3 "2".to_i #=> 2 "1".to_i #=> 1 "0".to_i #=> 0 "a".to_i #=> 0 ←!!! to_i して 0ならダメってやろうとして、詰んだ。 php なら is_numeric関数で済む <?php var_dump( is_numeric("0") ); #=> true もっともPHPの場合は、諸刃の剣でして・・・ String#to_iやto_fはある程度は判別できるけど。。。 じゃぁ元々0は? じゃぁ・・・ 0.1は? ってなるので、こまる。to_f か、to_iかそこが問題だ。 そこで正規表現を使う。判定が安定。 "10" =~ /\d+/ #=> 0 ただし、これも数

    Rubyで文字列が整数値に変換できるか調べる - それマグで!
    suginoy
    suginoy 2015/09/07
    nil が返るメソッドが別にほしいとときたま思う。 "String# to_i のこの仕様が死ぬほど嫌だ"
  • リダイレクトを使ってリファラを隠す - それマグで!

    Location によるリダイレクトだと、リファラを隠せない だからどうする?何か他に方法はあるか。 これ?リファラを隠すなら refresh Locationの代わりにHTML書くのでいけるか。。。ヘッダがいいなぁ <meta http-equiv="refresh" content="0;URL='http://thetudors.example.com/'" /> http-equiv? ってことはヘッダに書けるんじゃね? え?でもまてよ。HTTP-EQUIV つまり、 HTTP Header Equivalent ってことはHTTPヘッダと同等?つまり、HTTPヘッダに書いても同じなんじゃないの?そっかやってみよう やってみた <?php $url = $_GET["url"]; header('Refresh: 0; URL=' . $url); できた 実行結果 HTTP/1.

    リダイレクトを使ってリファラを隠す - それマグで!
    suginoy
    suginoy 2015/07/05
  • Rubyの日付のタイムゾーンについて - それマグで!

    Ruby の Date#parse はJST明示しないと怖い。 Datetime#parseは JST を付けないと、UTCとして解釈するので恐ろしい 明示する方法 >> DateTime.parse("2013-09-12 3:39 JST").to_s => "2013-09-12T03:39:00+09:00"または +9:00を付ける >> DateTime.parse("2013-09-12 3:39+9:00").to_s => "2013-09-12T03:39:00+09:00"あたりまえっちゃあ当たり前。

    Rubyの日付のタイムゾーンについて - それマグで!
    suginoy
    suginoy 2015/03/16
  • rubyのNokogiriをもっと簡単に!Slopする。 - それマグで!

    ruby のNokgiri をもっと簡単に使いたい。 PHPSimpeXMLに負けてる気がします。JSON.load にも負けてる気がします。 NokogirのSlopを見つけた doc = Nokogir::Slop("<book><title>日常に潜む数理曲線</title></book>") doc.book.tile.text #=> 日常に潜む数理曲線 これが出来る。 もういちいち、searchで降りて行かなくていいんです。オブジェクトしてアクセ出来るようになってとても便利なんです。 実際にやってみた 次のような。XMLがあるとき users.xml <?xml version="1.0" encoding="utf-8"?> <users> <user> <loginId>takuya@mmmm.jp</loginId> <passwd>************</pass

    rubyのNokogiriをもっと簡単に!Slopする。 - それマグで!
    suginoy
    suginoy 2014/11/23
    “searchで降りて行かなくていいんです。オブジェクトしてアクセ出来るようになってとても便利なんです。”
  • jQueryで登録済みイベントハンドラを一覧する方法 - それマグで!

    jQueryを複数人で使っていると、誰が仕込んだClickイベントか分からなくなる。 どうやって追いかけた良いのだろうか。良い方法があれば知りたい。 jQueryの._data の内部データから拾った jQueryはclick などのイベントリスナーを内部管理していてDOMのaddEventListener側には見せてない。なので、Chromeのデベロッパーツールなどでイベントを確認することが出来なくて困った。 jQuery._data($("#submit").get(0)).events jQuery._data($("a:contains('編集')").get(0),"events") このようにして、貼り付いているイベントハンドラを一覧することが出来た プラグインにしておいた (function($) { $.fn.events = function(){ return $._d

    jQueryで登録済みイベントハンドラを一覧する方法 - それマグで!
  • Windowsの起動しない&認識しないHDDを修復する(raw/bootsect/mbr/chdsk) - それマグで!

    故障したWindows HDDが持ち込まれ、修復したのでメモ ディスクの回復作業 HDDはWindowsがブートしない感じだった。 必要な作業 ディスクのバックアップ 必要なツール・ハードの準備 用語とHDDに付いて最低限の知識 必要なツールの準備 作業手順 故障ディスク修復の初めにやること!ディスククローン 故障ディスクディスクをみたら、なによりもまず、クローンを行いましょう。 故障ディスクを直接触るのは厳禁。 ディスクコピーを作る専用機 6000円くらいです。しかもプライム対応。幾つか試したけどこいつが電源の安定性と速度が優れてた。 その他のクローン機器 クローニングはDDコマンドで行うことも出来るが、CPUメモリ性能や・USB性能に左右されて時間がかかるの。専用クローン機器があったほうが時間を有効に使える。マルチタスクで作業進行できて嬉しい。ddに慣れない人は、生兵法は大怪我のもと。

    Windowsの起動しない&認識しないHDDを修復する(raw/bootsect/mbr/chdsk) - それマグで!
  • 文字コード変換コマンドの nkfの使い方と実例をまとめました。 - それマグで!

    Linuxで文字コード変換コマンドする方法 LinuxはUTF8が普通になりました。EUC環境もまだまだ多く文字コード変換が必要になることもあります。 文字コード変換コマンド nkf。 使い方 nkf オプション ファイル [> 出力ファイル]よく使うオプション オプション一覧 -e : EUCコードを出力 -s : Shift-JISコードを出力 -w : UTF-8コードを出力(BOM無し) -g : 自動判別の結果を表示 --overwrite : 引数のファイルに直接上書き覚え方 -w / -W 大文字小文字はペア。 入力は大文字、出力は小文字。sjis-> utf8なら、入力-S 出力 -w で -Sw。入力は自動判別で十分で余り使うことがないので最後に書いた。 使用例 文字コードチェック nkf -g readme.txt UTF8に変換 nkf -w --overwrite

    文字コード変換コマンドの nkfの使い方と実例をまとめました。 - それマグで!
  • ソフトバンクのWEB請求書もscraperにかけてしまう - それマグで!

    ついでだから、ソフトバンクのWEB明細もスクレーパー書いておいた。 テレビ見ながら、ついでにソフトバンクのWEB明細も切り取っておいた。 mysoftbankサイトから明細を取ってくる。 #!/usr/bin/env ruby require 'rubygems' require 'kconv' require 'openssl' OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE require 'mechanize' url ="https://my.softbank.jp/msb/d/top" id="08042xxxxx" pw="**password**" m = Mechanize.new m.get url m.page.forms[0]["msn"]=id m.page.forms[0]["password"]=pw

    ソフトバンクのWEB請求書もscraperにかけてしまう - それマグで!
    suginoy
    suginoy 2012/02/25
    「HTMLのなかにdiv#bodyが何個もあって発狂しそうだった。」
  • 日経の社説を一気に取得する。自分で読むのはバカバカしいからRubyに日経を読ませる。 - それマグで!

    新聞比べ読みをしたらいいとトラックバックがあったんだけど*1。 僕も日経の何がいいかよくわからん。エライ人が日経嫁とかウルサイんですね。僕も言われたことあります。 あんなもの自分で読むとストレスたまるので、とりあえずプログラムに読ませてみた。 日経の社説を取得するプログラム #!/usr/bin/env ruby #日経新聞の社説。 require 'rubygems' require 'mechanize' m = Mechanize.new m.get "http://www.nikkei.com/news/editorial/" #m.page.search('/html/body//h2[contains(., "社説")]').first.parent list = m.page.search('//h4/a').map{|e| [e.text,"http://www.nikke

    日経の社説を一気に取得する。自分で読むのはバカバカしいからRubyに日経を読ませる。 - それマグで!
    suginoy
    suginoy 2012/02/25
  • HomeBrewの仕組みについてまとめておく - それマグで!

    Homebrewを使っている。MySQLが入らなくて困ったので、改めてまとめ直す。 Homebrewとは、Macportsに取って代わりそうな、Macでのパッケージインストーラ home brew インストール ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)” homebrew で使う用語について 用語 来の意味 makeのアナロジー Brew ビール醸造する make する HomeBrew 自家醸造 つまり、自分でビルドする意味 Celler ビール貯蔵庫 つまり、インストール先 Keg タル、熟成用 つまり、makeの材料 Formula 調理法 つまりビルド手順が書かれたスクリプト Pouring ジョッキに注ぐ つまり、Macに注ぐ(イント) 自分でパッケージをビルドして使う

    HomeBrewの仕組みについてまとめておく - それマグで!
  • rubyのハッシュの値から最大値を求める方法(最小値も) - それマグで!

    Hash.maxがそのままだと、キーの最大値を返す。 rubyのHashはmax()でキーの最大値を求めてくるので困ります. そこで値から最大値を求めるようにします. h.max { |a, b| a[1] <=> b[1] }でValueの最大値が返ってくる.便利ね. 最小値も同じ h.min { |a, b| a[1] <=> b[1] } デフォルト動作では h.max { |a, b| a <=> b }のように動いているっぽい Array/Enumerable ではデフォルトの比較で問題ない。しかしHashだと意図したとおり動かない.Hashではが a,b が配列になる。なのでHashでmaxが誤作動する h.max { |a, b| a <=> b }# Hashの場合 a=>[key,value], b=>[key,value]になっている。Ruby1.8だけの問題なのですか

    rubyのハッシュの値から最大値を求める方法(最小値も) - それマグで!
    suginoy
    suginoy 2011/05/18