適当な思いつきで書くブログ

UbuntuやPerlやJavaScriptやVimやZshやShellScriptやMySQLと戯れている中で適当な思いつきでやってみたことを書いています。

ERROR 1227 (42000) Access denied; you need the SUPER privilege for this operation で5分悩んだ

ERROR 1227 (42000) at line N: Access denied; you need the SUPER privilege for this operation

SUPER権限がないので発生したエラー。
このユーザの権限はこんな感じ。

GRANT ALL ON database.* TO foo@localhost IDENTIFIED BY 'password';

SURPERはグローバルな管理権限なので、ON database.*では付与されないため下記のように*.*に対して付与する必要がある。

GRANT SURPER ON *.* TO foo@localhost;

そんなグローバルな管理権限は以下の通り。

FILE
PROCESS
RELOAD
REPLICATION CLIENT
REPLICATION SLAVE
SHOW DATABASES
SHUTDOWN
SUPER

MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.1.3 GRANT 構文 に書いてあったのコピペしただけ。

jQuery.fn.animate()よりjQueryUI.fn.switchClass()を使った方が捗る気がしてきた

メリットはJavaScriptからスタイルを排除できること。


例として#fooの要素を警告文として文字色を赤くしたい場合を考える。

jQuery.fn.animate()は引数にアニメーション内容のスタイルをとる。

// jQUery

$('#foo').animate({'color': '#F00'}, 500);

対してjQueryUI.fn.switchClass()の引数はclass名そのもの。

// jQUeryUI

// .alert {
//   color: #F00;
// }
$('#foo').switchClass('', 'alert', 500);

スタイルをjsファイルに書かずに済む(スタイルはcssファイルだけで完結)ことはメンテナンス性、可読性が高いと言える。

もちろんcallbackにも対応しているので詳細は UI/Effects/ClassTransitions - jQuery JavaScript Library を参照。

Mail::IMAPClientで新規メールがあったらim.kayac.comに通知する

このあたり参照のこと。

IMAP的なメールービスで新着メールを受信したらim.kayac.com経由でiPhone通知したかったので書いた。

#!/usr/bin/env perl

use strict;
use warnings;

use HTTP::Request::Common;
use LWP::UserAgent;
use Mail::IMAPClient;

my $url = 'http://im.kayac.com/api/post/foo@example.com';
my $ua  = LWP::UserAgent->new;

my $imap = Mail::IMAPClient->new(
    Server   => 'xxx.xxxx.xxx',
    User     => 'username',
    Password => 'password',
);

if ( !$imap->select('INBOX') ) { 
    notify("Failed get message from INBOX.");
    exit 0;
}

my @msgs = $imap->search('NEW');
if ( !@msgs ) { 
    exit 0;
}

foreach my $msg (@msgs) {
    my $from = $imap->get_header( $msg, 'From' );
    $from =~ s/<(.+)>/$1/msx;

    notify("You gat a mail from $from.");
}

$imap->logout;

sub notify {
    my ($msg) = @_;

    $ua->request( POST $url, [ message => $msg ] );
}

ひさびさにPerl書いた。エラー処理が甘い...。

LinuxMintにUbuntu Oneをインストール

オンラインストレージサービスは

  • Dropbox 更新が多いファイル & テキストファイル
  • Ubuntu One 更新の少ないファイル & バイナリファイル(主にバックアップ用途)

のように使い分けている(理由は機会があったらそのときに)。

UbuntuだとUbuntu Oneは始めからインストールされているけれどもLinux Mintからは省かれてしまっているので、インストール方法と起動。

$ sudo apt-get install ubuntuone-control-panel-gtk ubuntuone-client desktopcouch-ubuntuone
$ ubuntuone-control-panel-gtk

Ubuntu OneはWindowsにも対応していて、無料版だと初期容量が5GBとDropboxの2GBよりも多い。
ただし、Dropboxはベータ版モニター参加や友達紹介などで容量が増えるけれども、Ubuntu Oneにはそれがない。
容量はできるだけ多い方がいいけど、面倒臭がりで友達がいない人にはうってつけ。

プロクシ経由でhttpsなgitリポジトリにアクセスする

先がhttpsの場合、http_proxyではなくhttps_proxyとしてプロクシを指定する。

$ https_proxy=http://your.proxy.server:port/ git clone https://github.com/foo/bar.git

curlとかも同様。

来月から本気出す。

jQuery.jsでiframeの高さを中身のコンテンツに合わせる

iframeの中身を扱うには.contents()を使用する。

$(document).ready(function(){
  $('iframe').load(function() {
    $(this).css('height', $(this).contents().height() + 'px');
  }); 
});

そんだけ。
と思ったらこれだとIEで取得できない(IE8で確認)。
.find('body')でbodyの高さをとってあげる必要がある。

$(document).ready(function(){
  $('iframe').load(function() {
    $(this).css('height', $(this).contents().find('body').height() + 'px');
  }); 
});

ボディ、ボディを狙え。

Cinnamonを試してみた

自宅と会社のマシン環境はLinuxMint12を使っている。

Linux Mintチーム、デスクトップ環境「Cinnamon 1.3」を公開 | エンタープライズ | マイナビニュース のCinnamonをさっそく試してみた。

LinuxMint環境での導入は至って簡単。

$ sudo apt-get install cinnamon

でおk。
あとは再起動して、ログイン画面でCinnamonを選択すれば良い。

ついでにExtensionのCoverflow Alt-Tabも試してみた。
これはスタイリッシュなAlt-Tab。

$ wget http://cinnamon-spices.linuxmint.com/uploads/extensions/BJCK-JBU4-KRTK.zip -O /tmp/BJCK-JBU4-KRTK.zip
$ unzip /tmp/BJCK-JBU4-KRTK.zip -z ~/.local/share/cinnamon/extensions/

GUIメニューからcinnamon settingかターミナルからcinnamon-settingsを実行したら、Extensionsから「Coverflow Alt-Tab」を選択してもう一回再起動すると適用される。

世の中再起動したもん勝ち。