helen's blog

ずっとおもしろいことしてたいな。

crontabして何も見つからないのに設定ファイルはあるとき

cronの設定ファイルはあるのに設定を見れなくて困ったのでめも

hogeユーザに設定はなし

$ crontab -l
no crontab for hoge 

cronの実行権限を持つユーザーを確認する

$ sudo ls /var/spool/cron/
heleeen

このユーザーじゃないとcrontabできないっぽい

別ユーザーの持つcronを確認する

# crontab -u user_name -l

$ sudo crontab -u heleeen -l
* * * * * hoge.sh

sshでUNPROTECTED PRIVATE KEY FILE!されたとき

sshしようとしたときに

$ ssh hoge@XXX.XXX.XXX.XXX -i ~/.ssh/hoge_rsa                                                   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '.ssh/hoge_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/hoge_rsa 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

.ssh/hoge_rsaの権限が644になっているのが問題っぽい
他にアクセスさせるなということで600にしたら出なくなりました

$ ls -la .ssh
-rw-r--r--@  1 heleeen heleeen 7 1 11:10 hoge_rsa

# 600に変更
$ chmod 600 .ssh/hoge_rsa

# 確認
$ ls -la .ssh
-rw-------@  1 heleeen heleeen 7 1 11:10 hoge_rsa

ファイルコピーしたときに権限が変わるっぽい

railsでChartkickを使ってみた

Chartkick

  • rubyにJSで綺麗にグラフを書いてくれる
  • 折れ線グラフや円グラフ、タイムラインをかける
  • googleJSAPIも使う
  • 配列・ハッシュで数値をグラフに渡すことができて簡単に書ける

Chartkick

導入

1. Gemfileに以下追記してbundle install

gem "chartkick"

2. GoogleCharts読み込み

グラフ描画ライブラリはヘルパーメソッドの前に読まれるようにする
:content_forオプションを使うときは気にしなくて良い

//= require chartkick

:content_for

コンテンツを指定の場所でロードする

# layout
<%= yield :extend_menu %>

# view
<% content_for :extend_menu do %>
  [<%= link_to 文字列A, action => "A" %>]
<% end %>

content_for - リファレンス - - Railsドキュメント

3. chartkick.js読み込み

JSのライブラリを読み込む

<%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %>

使ってみる

View

<%= line_chart @line_chart %>
<%= pie_chart @pie_chart %>

Controller

def index
  # 配列の場合
  @line_chart = [['2014-04-01', 30], ['2014-04-02', 40], ['2014-04-03', 50]]
  # ハッシュの場合
  @pie_chart = {'2014-04-01' => 20, '2014-04-02' => 50, '2014-04-03' => 30}
end

こうなる

f:id:heleeen:20160703004032p:plain
そしてやっぱりドキュメントを読むのが一番確実だなと思いました

ansible2系の諸々

ansibleのプルリク見てて気になったのでめも

2系インストールとバージョン確認

$ sudo yum install ansible
$ ansible --version
ansible 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

sudoで怒られたとき

$ ansible-playbook -i localhost playbook.yml --syntax-check
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default).
This feature will be removed in a future release. 
Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
For those from Pre 1.9 , sudo and su still work!

For those using old playbooks will not need to be changed,
even though they are deprecated, sudo and su directives, variables and options will continue to work. 
It is recommended to move to become as they may be retired at one point. 
You cannot mix directives on the same object (become and sudo) though, Ansible will complain if you try to.

Become will default to using the old sudo/su configs and variables if they exist,
but will override them if you specify any of the new ones.

Become (Privilege Escalation) — Ansible Documentation

sudoがそのうちなくなるのでbecomeを使った用がいいよ!とのこと

sudo, becomeとは
  • ansibleの実行ユーザーを変える
  • yesでplaybook全体がsudoになる
  • noでansibleの接続ユーザ権限で実行

bare variablesで怒られたとき

[DEPRECATION WARNING]: Using bare variables is deprecated. Update your playbooks so that the environment value uses the full variable
syntax ('{{hoge}}').
This feature will be removed in a future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.

変数を

'{{hoge}}'

みたいに囲みましょうとのこと

Loops — Ansible Documentation

dry runしたいとき

コマンドに-Cオプションをつける
ドライランなのでansibleでインストールして実行するものはエラーする

# 例
$ ansible-playbook -i localhost playbook.yml -C

エラーで止まらず進み続けたいとき

playboolに下記追記

ignore_errors: True

IFTTT未対応サービスを連携させてみる

会社の先輩のおうちHackを見ておうちをハックしてみたいと思ったものの
ハックしたいものがすぐには思いつかなかったのでとりあえずIFTTTだけ触ってみた

IFTTT

Explore and add IFTTT Recipes - IFTTT

サービス同士を連携してくれるwebサービス
UIがとにかく素敵

ちなみに「いふと」と読みます
間違っても「あいえふてぃてぃてぃ」と読んではいけません
鼻で笑われます

はてぶ連携

2016/06/06時点ではまだはてなブログが直接IFTTT連携できないので
RSSを使ってはてなブログに記事が投稿されたらTwitterに流れるようにした

現時点でのはてぶで使えるRSSはこちら
はてなブログのRSS配信URLは2つあった! - tarのブログるっ by @tarVolcano
ググっても個人ブログしか見つけれず公式を見ると古いので新しいのはこちら!ってされる

URLの後ろにrssかfeedを付けるだけで取得できてレスポンスの形式が変わる

rss
<?xml version="1.0"?>
<rss version="2.0">
feed
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">

IFTTT連携するにはトリガーはこんな感じで

f:id:heleeen:20160605232340p:plain

これで記事を投稿するとTwitterに流れます
f:id:heleeen:20160605232351p:plain

単純にはてな連携ができないからRSSを使っちゃえというだけ

ちなみに自分宛てのリプにするときは
アットマークを全角にしないとなぜか@が消える