通常のファイルインプットタグを隠して違うボタンを表示する – html / css

通常のファイルインプットタグは

<input type=’file’ id=’file_up’ enctype=’multipart/form-data’>

こんな感じ。

jQueryを使って、ファイル選択時にアップロードさせようとすると、

$(“#file_up”).change(function(){
$(this).upload(
‘/upload’,
‘type=image’,
function (res) {
$(“#preview”).html(“<IMG SRC=’kotei.jpg’>”);
},
‘text’
);
});

みたいに、ボタンのチェンジイベント(選択ファイル名が変化)にバインドして、jQueryのUpload機能でアップするようにするんだけど、ファイル選択とファイル名の表示は、即時アップにはあまりイメージが合わない。
なので、このタグを消して、別のボタンでキックしたい。

<input type=’button’ id=’file_up_btn’ onclick=’document.genElementById(‘file_up’).click();’ value=’アップロード’>

みたいなボタンを作って、こっちのボタンが押されたら、ターゲットのInputタグをキックするという動作をさせる。
aタグで

<a href=’javascript:void();’ onclick=’document.genElementById(‘file_up’).click();”><img src=’button.jpg’></a>

イメージをセット
みたいにすると、画像ボタンを利用することも出来る。

で、本体のタグ表示が邪魔なので消したいんだけど、style=’display:none;’にすると、ボタンを押してもファイル選択ウィンドウが表示されなくなってしまう。
で、常套手段のstyle=’text-indent:-9999px;’にして画面外部に飛ばそうとすると、Chromeでファイル選択ボタンだけ飛んでいって、ファイル名欄が残る上に、本来ボタンがある空白をクリックするとファイル選択が開いてしまう。
じゃあ、どうしようと思ったら、divにstyle=’text-indent:-9999px;’をつけてサンドイッチしてやると隠すことが出来た。 でも、微妙なスペースは残るけど、まぁ、このぐらいで妥協しておこう。

(816)

カテゴリー: jQuery | コメントをどうぞ

nfsデーモンが動かない – OpenVZの仕様 nfsd smbd 繋がらない

 ServersMan@VPS
の仮想化に使われているOpenVZの仕様で、子OSではnfsdやsmbd(NFS, SAMBAのサーバ)が動作しない。
 こればっかりはシステムの仕様なのでどうしようもない。
 共有ディレクトリを作っておいてrsyncとかwgetとかで複製しあうとか、クライアントにはなれるので、別の専用サーバとかVPSに繋いで共有するしかない。

(207)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

yumで入れたtomcat5のlogrotate – logrotate yumパッケージのバグ

 yumでtomcat5を導入すると、logrotate.dにtomcat5っていう設定ファイルが出来ている。
 しかし、これがお馬鹿で仕方ない。
一行目
/var/log/tomcat5/* {
logrotateは、このパスに一致するファイルをローテーションする。
 通常は、ファイルAに対して、ファイルA.1.gz、ファイルA.2.gzみたいに世代バックアップが出来ていくのだけど、2回目にlogrotateを回したときにはファイルA.1.gzに対してローテートが働いて、ファイルA.1.gz.1.gzが発生してしまって、以下ループ。 1.gz.1.gz.1.gz.1.gz.1.gz・・・とゴミファイルが沸き続ける。
 ぐっちゃぐちゃになってしまうので、logrotateの設定には注意しよう。

(242)

カテゴリー: サーバ設定 | コメントをどうぞ

cronが動かない ー cron run-parts namespace

 cron.dailyとか、cron.hourly と言ったディレクトリがetcの下にあって、日次や毎時バッチ置き場になっているんだけど、実は自動実行されるファイルの名前にネームスペース制限がある。
 正確に言えば、cron.???lyのディレクトリは、crontabでrun-partsで実行している。
 なので、ネームスペース制限も正確にはrun-partsの制限で、debianだと英数のみ、Serversman@VPSのベースのCentOSはRHELのクローンなので、一部の記号で終了するファイルだけ禁止。
 debianだとhoge.shやpiyo-batchは違反するので実行されない。
 通常のcron設定ファイルはr属性が付いていればいいけど、このディレクトリに置く場合はx属性が必要なのも忘れてはいけない。
ささいな話だけど、一応メモ。

(484)

カテゴリー: サーバ設定 | コメントをどうぞ

Webサイトのドメインを移動する – mod_rewrite

SEO的目的であるとか、欲しかったのが取れたとか言う理由でWebのドメインを移動することがある。
しかし、単純に移動させてしまうと、それまで使っていたリンクであるとか、サーチエンジンの順位であるとかでマイナスが発生してしまう。
そんなときに便利なのがApacheのmod_rewriteである。
.htaccessファイルで

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(blog\.hogehoge\.piyo)(:80)? [NC]
RewriteRule ^(.*)$ http://serversmanvps.xn--ockc3f5a.com/$1 [R=301,L]
</IfModule>

 みたいに、旧サイトに設置しておくと、http://blog.hogehoge.piyoに来たリクエストをHTTP応答コード301(恒久的移動)を添えてhttp://serversmanvps.xn--ockc3f5a.com/に飛ばしてくれる。
 Ruleの(.*)(全部引っかかる正規表現)とアドレスの最後にある$1(最初にヒットした部分をくっつける)によって、旧サイトの/page/2とかの部分をコピーしてくっつけられるので、従来のリンクはそのまま新サイトへのリンクとして扱われる。
 301コードを掲示しておくと、検索エンジンが移動したことを認識してくれるので、そういった部分のマイナスが押さえられる。

WordPressサイトの.htaccessには
# BEGIN WordPress
# END WordPress
でくくられた部分にmod_rewriteの設定があるが、この範囲はWordpressの設定を変えると書き換えられてしまうので、このコメントの外に書き足す。

(451)

カテゴリー: サーバ設定 | コメントをどうぞ

古いファイルを自動削除する – tmpwatch

 作業の一時ディレクトリであるとか、バックアップデータであるとかで一定以上古くなったファイルを削除したいと言う事が良くある。
 そんなときに便利なのがtmpwatchと言うコマンド。
tmpwatch -m 720 /var/www/upload/tmp
 みたいな感じで使う。

 この場合、-mはmodifiedタイム(最終変更時間)について指定して、720時間(30日)経過した/var/www/upload/tmp以下のファイル・ディレクトリを削除すると言う指定。
 シェルでfindしてrmするみたいな事を書けば同じ事が出来るけど、こっちの方が手っ取り早い。

 デフォルトのServersMan@VPSだと、cron.dailyにtmpwatchと言うスクリプトが放り込んであって、日次で回っているので、日単位の処理ならここに追記しても良いだろう。 時単位で削除したい場合はcron.hourlyに放り込もう。

(542)

カテゴリー: サーバ設定 | コメントをどうぞ

Rollbackしてもauto_incrementは戻らない – MySQL

 まぁ、動作的にこうなるのは仕方ないんだけど、テーブルのauto_increment値はrollbackしても戻らず増加する。
 一般的にテーブルのPKはidで、auto_incrementにすると思うんだけど、InnoDBでトランザクション制御をしているとき

BEGIN;
INSERT INTO main_table(id, code, num) VALUES(0, 1, 2);
UPDATE sub_table SET main_id=LAST_INSERT_ID() WHERE code=1;
ROLLBACK;

 とかすると、INSERTもUPDATEも無かったことにされるけど、main_tableのauto_incrementカウンタは増加しているんで、次にINSERTするとidが飛んでしまうのがMySQLの仕様。
 下手に巻き戻したりすると、平行して実行して先行処理がロールバックするとカウンタが前後しちゃったりするんでベターな処理ではある。
 基本事項だけど一応確認。

(2438)

カテゴリー: MySQL | コメントをどうぞ