【javascript】スマホで縦スクロール禁止

javascript の記述
---------------------------------------
//touchmove の縦スクロールを禁止
document.body.addEventListener( 'touchmove', function(e){
e.preventDefault();
});
---------------------------------------

jQuery の場合
---------------------------------------
// スクロール禁止
$(window).on('touchmove.noScroll', function(e) {
e.preventDefault();
});

// スクロール禁止 解除
$(window).off('.noScroll');
---------------------------------------
※.noScroll は解除するためにつけた名前

参考ページ

http://qiita.com/kokushin/items/ef96194bd0fa7c145d7b

PHPの配列をjavascriptに渡す

PHPの配列をjavascriptに渡す場合は、いったんjson形式に変換するといい。

スクリプト例 ここから
--------------------------------------------------------
<?php

$hairetu = array('りんご', 'もも', 'なし');

//配列をJavaScriptに渡すために一度jsonに変換
$jsonTest=json_encode($hairetu);

?>

<html>
<head>
<title>タイトル</title>
</head>

<body>
<script type="text/javascript">

//JSON.parseを使って配列を受け取る
var test=JSON.parse('<?php echo $jsonTest; ?>');

for (var i = 0; i < test.length; i++) {

alert(test[i]);

}

</script>

</body>
</html>

--------------------------------------------------------
ここまで

参考サイト

http://future-software-labo.anyagent.net/php%E3%81%8B%E3%82%89javascript%E3%81%AB%E9%85%8D%E5%88%97%E3%82%92%E6%B8%A1%E3%81%99/

javascriptファイルが外部ファイルの場合

PHPファイル
--------------------------------------------------------
//カスタムデータ属性にjson形式の配列をセット
<script id="script" src="js/script.js" data-json-test ='<?php echo json_encode($hairetu)?>'></script>
--------------------------------------------------------

javascriptファイル

script.js(外部ファイル)
--------------------------------------------------------
//jQueryを利用してカスタムデータ属性にアクセス
var $script = $('#script');
var test = JSON.parse($script.attr('data-json-test'));
--------------------------------------------------------

参考サイト

http://qiita.com/cither/items/b98cc4e237dcc8f7e51f

http://dresscording.com/blog/html5/custom_data_attribute.html

【PHP】ディレクトリ内のファイル名だけの一覧を取得

<??php
// ディレクトリのパスを記述
$dir = "dragon_ball1";

// ディレクトリの存在を確認し、ハンドルを取得
if(is_dir($dir) && $handle = opendir($dir)) {

// ループ処理
while(($file = readdir($handle)) !== false) {
//$path = $dir . $file;
// ファイルのみ取得
if(filetype($dir . "/" . $file) == "file") {
/********************

各ファイルへの処理

$file ファイル名
$path ファイルのパス

********************/

// ファイル名を出力する
echo $file . "
";

}
}

} else {

echo "ディレクトリがない";

}
?>

参考サイト(このサイトのをほぼそのままコピーした)

http://webkaru.net/php/function-filetype/

【javascript】touchendでうまく座標が取れない件

iOS の safari において touchend で取得した座標を alert で表示するとうまく座標を表示できない事象が発生。

原因不明でバグのような気がするが、次のように対処できる。

------------------------------
alert('座標:' + touchX);
------------------------------

↓↓↓

------------------------------
setTimeout(function(){ alert('座標:' + touchX); }, 0);
------------------------------

参考ページ:

http://gomojp.blog77.fc2.com/blog-entry-144.html

【さくら】php-mecabが突然使用できなくなった件

php-mecab を使用してるページがエラーしか表示されなくなった。

表示されたエラー
---------------------------------------------------
Fatal error: Class 'Mecab' not found in /home/username/www/xxxx.html on line 20
---------------------------------------------------

推測だが、さくらインターネットの PHP のバージョンが勝手に変更されたのが原因だと思う。phpinfo で mecab が表示されない。つまり、php-mecab が認識されていない。

解決用法、mecab および php-mecab を入れ直した。

入れ直し時に注意すること。

・mecab と php-mecab の古いファイルは念のため削除しておく。上書きされるかと思ったがうまくいかなかった。(これがうまくいかない原因だったかは不明)

・php-mecab のインストール時に php のバージョンを指定する箇所があるので新しいバージョンに合わせる。

・さくらにデフォルトインストールの mecab に問題があった場合解決が難しいので、自前の mecab を local 領域にいれて使用したほうが解決しやすい。(今回、デフォルト → 自前 に変更した)

KAGOYAのデータベースプランにターミナルでアクセス

KAGOYA のデータベースプラン(SSD 共有)の DB サーバーにアクセスする方法、覚書。

1.kagoya のサーバーコントロールにログインして、データベースをつくる。そのデータベースのアクセス許可にアクセス元の IPアドレス を登録する。自分の場合はさくら共有サーバーのIPアドレス。

2.ターミナルからさくらサーバーにアクセス。さくらサーバーからさくらの DB にアクセスするように kagoya の DB にアクセスする。

コマンド(さくらサーバーにログイン後)
----------------------------------------------------
% mysql -h mysql*****.kagoya.net -u ユーザーID -p --default-character-set=utf8
----------------------------------------------------

以後、さくらの DB を使っているのと同じように kagoya の DB を使用できる。

さくらでphpのバージョンを更新してもバージョンがあがらない

さくらインターネットの共有サーバーで、サーバーコントロールからphpのバージョンを更新したあと、phpinfo でバージョンを確認してもあがってなかった。

php.cgi を公開フォルダに置いていたので、新しいバージョンをコピーし直したらphpのバージョンはあがった。

【UWSC】gmailでメールを送信する

UWSC でメールを送信するには CDO を利用する。

------------------------------------------------

Dim objEmail = CreateOleObj("CDO.Message")

//内容をセット
objEmail.From = "送信者@gmail.com"
objEmail.To = "あて先アドレス"
objEmail.Subject = "題名"
objEmail.Textbody = "内容"

Schemas = "http://schemas.microsoft.com/cdo/configuration/"
objEmail.Configuration.Fields.Item(Schemas + "sendusing") = 2
objEmail.Configuration.Fields.Item(Schemas + "smtpserver") = "smtp.googlemail.com"

objEmail.Configuration.Fields.Item(Schemas + "smtpserverport") = 465 //ポート番号
objEmail.Configuration.Fields.Item(Schemas + "smtpauthenticate") = True
objEmail.Configuration.Fields.Item(Schemas + "sendusername") = "ID(送信者@gmail.com)"
objEmail.Configuration.Fields.Item(Schemas + "sendpassword") = "メールパスワード(ログイン時と同じもの)"
objEmail.Configuration.Fields.Item(Schemas + "smtpusessl") = True

objEmail.Configuration.Fields.Update

objEmail.Send

------------------------------------------------

メールが届かない場合は、gmail の受信箱をチェック。

gmail1

「ログイン試行をブロックしました」というメールが届いていたら、ブロックを解除する必要がある。google のアカウント情報から「安全性の低いアプリの許可」を有効にすればいい。

【UWSC】デュアルモニター側にふきだしを表示

デュアルモニター側にふきだしを表示するスクリプト↓

fukidasi("ふきだしだよ",MONITOR(1,MON_X),0)

-----------------------------------
// マルチモニタ情報
戻値 = MONITOR( モニタ番号, 取得情報 ) 
引数
 モニタ番号: モニタ番号を指定 (メインモニタは 0,二つ目のモニターは1)
 取得情報:
   MON_X      // X座標を返す
   MON_Y      // Y座標を返す
   MON_WIDTH    // 幅を返す
   MON_HEIGHT    // 高さを返す

 ※ MONITOR() 引数なしの場合はモニターの数を返す
-----------------------------------

【mysql】さくらでRow size too large エラーの対処法

mysqlでupdateをしてデータを増やそうとしたらエラーが出た

エラー内容
---------------------------------------------------------------
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
---------------------------------------------------------------

これは「InnoDBの最大行長(最大行サイズ)は約8000バイト」なので発生したエラー。
最大行サイズとは、一行ごとに格納できるデータの最大容量。

VARCHAR(255)やTEXTは最大で800バイト弱を使用するので、そういったカラムが11より多い発生する可能性が出てくる。

InnoDBの最大行長8000バイトの壁は、innodb_file_format を Antelope から別のものに変更すればいいらしいが、my.cnf の設定をいじる必要がある。しかし、さくらの共用サーバープランではいじれないので諦める。

不要なカラムを削除して対応した。