ラベル 開発 の投稿を表示しています。 すべての投稿を表示
ラベル 開発 の投稿を表示しています。 すべての投稿を表示

2021年11月24日水曜日

ローカルファイルのJavascript・JSONをCORSを無視して動かす

ローカル環境でJSONを読み込ませたい時にCORSの制限に引っかかりますよね。
取り合えずちょっと試したい時なんかの方法を探していたらありました。

先人に感謝です。

 

参考にしたサイト

FireFox

https://hint-life.hateblo.jp/entry/2020/03/02/164658

https://www.doraxdora.com/blog/2019/07/16/post-9131/

Chrome

https://www.doraxdora.com/blog/2019/06/14/post-8783/


上のサイトをまとめると、


FireFox

アドレスバーに「about:config」を入力して開き、「security.fileuri.strict_origin_policy」の値を、true から false に変更。


Chrome

起動オプションに--allow-file-access-from-filesをつけて管理者権限で起動すればいいらしい。

具体的には、

1.chrome.exeのショートカットを作成してそのプロパティの中でリンク先に上のオプションをつけます。

リンク先:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files

2.ショートカットのプロパティの互換性タブの中の「管理者としてこのプログラムを実行する」にチェック。

Chromeが起動していない状態で作成したショートカットから起動。


確認方法:chromeのアドレスバーに「chrome://version」を入力して開きコマンドラインの項目に--allow-file-access-from-filesがあればOK。



2013年8月1日木曜日

Adobe Readerの旧バージョン

Adobe Readerの旧バージョンがほしい時、Adobeのサイトでダウンロードできる。

http://get.adobe.com/jp/reader/otherversions/

ただし現時点でバージョン9.5以降。

もっと古いのがほしい場合、FTPでダウンロードできる。

ftp://ftp.adobe.com/pub/adobe/reader/

ダウンロードマネージャ版ではなく、完全なインストーラー版をダウンロードしないと古いバージョンはインストールできなさそうなので注意が必要。

oldversion.comとかにもあったんだけど英語版のみで、日本語のPDFファイルでうまく開かないものがあったりとかして日本語バージョンが必要だったんです。上のサイトなら各種言語版があります。

急遽旧バージョンが必要になって探しました。あって助かった。

2013年7月10日水曜日

CentOS6でyumでちゃっちゃとtomcat6

tomcatを動かして以前のwarファイルを動かさないといけなくなったんですがやり方を忘れてて手間取ったのでメモ。

# yum install tomcat6
# yum install tomcat6-webapps
# yum install tomcat6-admin-webapps

manager用のユーザを追加する
# vi /etc/tomcat6/tomcat-users.xml
以下を追加


# service tomcat6 start
# chkconfig tomcat6 on

iptableとかでポート閉じてたら設定変更して開く。

ブラウザでアクセス
http://XXX.XXX.XXX.XX:8080/
tomcatの画面が出ればOK
そのままTomcat Managerに行ってwarファイルをデプロイする。

が、デプロイ失敗。
JVMバージョンが1.5なのが問題の気がするので上げてやる。

# yum -y install java-1.6.0-openjdk
# service tomcat6 restart

動かしたいwarファイルのデプロイが成功してました。
以上

2013年5月3日金曜日

PHPのコンパイル設定

今使っているPHPのフレームワーク、FuelPHP (ver 1.5)。
むっちゃ使いやすい。これは広がってほしい。

ただpdoじゃないmysqlドライバしか入っていないサーバに入れてmysqlドライバで動かそうとしたんだけど設定をどう書いてもpdoドライバで動かそうとしてPDO_Exceptionが出る。

phpとapacheを独自にコンパイルしているサーバ(別の方がセッティング)なので仕方なしにphp(ver. 5.4.12)をコンパイルしなおしました。phpをコンパイルするのなんて何年ぶりだろう。
あまりに久しぶりでオプションとかぜんぜん忘れてて、調べなおすのに半日かかりましたw

有効にしたモジュールは、
mysql関連
gd
mbstring
zip
※ PHP5.4からmysqlndがデフォルトで、--with-mysql-sock以外は値を指定しなくても大丈夫
※ fileinfo, session, json, xml関連などはデフォルトで入るので特に指定しない
※ mcrypt(fuelphpで必要)は面倒なのでFuelPHP内でPHPSecLibで代用してもらう


足りてない.hファイルをyumで入れる(環境によっては他にも必要なのが出てくるでしょう)


# yum install libjpeg-devel
# yum install libpng-devel
# yum install freetype-devel

configureする
# ./configure --prefix=/usr/local/php-5.4.12 --with-apxs2=/usr/local/apache_2.4.4/bin/apxs --with-gd --with-jpeg-dir=/usr/lib64 --with-png-dir=/usr/lib64 --with-zlib-dir=/lib64 --with-freetype-dir=/usr --enable-gd-native-ttf --with-mysql --with-mysqli --with-pdo-mysql --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-mbstring --with-zlib --enable-zip


make, make testすると既知のバグっぽいのが出ますが目を瞑ってmake install。

apache再起動でめでたくPDOで動きました。

mysqlドライバで動かす書き方をちゃんと見つけたほうが良かった気がする。

2013年1月10日木曜日

error_reportingの.htaccessでの書き方

以前メモったと思ってたのに無かったのでメモ。

.htaccessに以下のように記述しても有効にならない。

php_value error_reporting E_ALL & ~E_DEPRECATED

まあ当然か。
以下のどちらかでかく
php_value error_reporting "E_ALL & ~E_DEPRECATED"

php_value error_reporting 22527

(以前数字で書けという記述を見たが"でくくっても大丈夫だった)

数字のほうはE_ALLやE_DEPRECATED等の定数を加減したもの。
以下のようにすれば簡単に求められる。

<?php
 echo E_ALL & ~E_DEPRECATED;
?>
前は手計算してたよw。

2012年12月22日土曜日

File API & XMLHttpRequestでファイルアップロード

大容量ファイルのアップロード周りを便利にしようと思いいいのみつけた、blueimp jQuery-File-Upload。

https://github.com/blueimp/jQuery-File-Upload

なかなかいいじゃないかと途中まで組み込んで問題発生。orz

・問題点1
アップロード後のサーバサイドでの処理に時間がかかる場合、それも進捗状況表示に加えたいのだがいまいちやり方がわからない。


・問題点2
IEが微妙に未対応。アップロード自体は可能。


・問題点3
ファイルサイズが大きい(233MB以上)とアップロードできない。

1は調べれば何とかなりそう、2はとりあえずアップロードは可能なので目を瞑る。
3はかなり問題。本来の目的が大容量のファイルの扱いだったので。

でどこが悪いのかな~と調査開始。
単純化するために、JavascriptのFile APIとXMLHttpRequest + PHPで簡単にアップロードの仕組みを作ってみた。

jQueryも使って、Javascriptはこんな感じ↓
(参考URL: http://d.hatena.ne.jp/takuya_1st/20121101/1351754417 ありがとうございます)

$('#upload').bind('click', function(){
var fd = new FormData();
var f = document.getElementById("file").files[0];
fd.append('userfile', f);
$.ajax({
async: true,
xhr : function(){
XHR = $.ajaxSettings.xhr();
if (XHR.upload) {
XHR.upload.addEventListener(
'progress',
function (e) {
progre = parseInt(e.loaded/e.total*10000)/100 ;
console.log(progre+"%") ;
$("#progress_bar").width(parseInt(progre/100*300*100)/100+"px");
$("#progress_bar").height("30px");
$("#progress_bar").html(progre+"%");
},
false
);
}
return XHR;
},
url:  "",
type: "post",
data:fd,
contentType: false,
processData: false
}).done(function(msg) {
console.log(msg);
$("#output").append(msg);
});
});
Chromeは問題なし。
FireFoxは大きいファイルでこけることがある。FFを再起動すると問題ないのでFFのメモリ関係でしょうか(未検証)。
IEはFile APIとかFormDataが使えないので当然ながら動きません。

サーバ側は同じプログラムで受けとっているので、問題3はblueimp jQuery-File-Uploadによるものかな? これに手を入れるのはためらわれるということでしゃーない自作するか。

今回はサーバ側も自由にいじれるのでPHPのAPCやPHP5.4を使うのもいいんだが、他で使うことも考えてFile API & XMLHttpRequestで突き進んでみよう。
IEだけ分岐して単純な仕様でないてもらおう。

つくづく適当だな。

2012年3月14日水曜日

複数バージョンのIEの確認

Microsoftの公式のサイト。
Virtural PCを利用。
容量は食うがこれが一番じゃないか。(要 Windows7 Professional以上)

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11575

このサイトのIE6用のWinXPは英語版らしいが、下記の日本語のWindows XP Mode + Virtual PCのサイトから普通にXP Modeの仮想マシンをダウンロードするとちゃんと日本語のWindows XPがあらかじめ入っている。


では手順。


まずはWindows7用のXPモードとVirtualPCをセットアップ

http://www.microsoft.com/japan/windows/virtual-pc/download.aspx

Windows7のエディションと言語を選んで、Windows XP Mode, Windows Virtual PC, Windows XP Mode Updateをダウンロード。

順に入れていく。
Windows Virtual PC, Windows XP Mode Update で再起動を要求される。

スタートメニュー → Windows Virtual PC → Windows XP ModeでWindows XPが起動。
これでIE6が使える。


次に、IE7とIE8。

最初のURLからIE7とIE8用の仮想マシンをダウンロード。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11575

IE7とIE8用のデータは圧縮して複数のファイルに分割されていますが、全部ダウンロードして、.exeファイルを実行すると解凍して.vmc, .vmdの2種類のファイルができる。
.vmcのほうをダブルクリックで仮想マシンが起動するんですが、XP Modeのデータと場所を合わせておこうと思うのでまずXP Modeのデータを探す。

スタートメニュー → Windows Virtual PC で、C:\Users\"ユーザ名"\Virtual Machines が開くがここはバーチャルマシン起動のショートカットがおかれているようなもの。(たぶん)

仮想マシンのデータは実際は以下のディレクトリ。

C:\Users\"ユーザ名"\AppData\Local\Microsoft\Windows Virtual PC\仮想マシン

ここに、IE7とIE8の.vmc, .vmdのファイルを設置。

.vmcファイルをダブルクリックで仮想マシンが起動して C:\Users\"ユーザ名"\Virtual Machines に起動ショートカット(?)が作成されます。

仮想マシンが起動したら、ダウンロード元のサイトに書いてあるように、ユーザ名:administrator パスワード:Password1 でログイン。

ネットワークが使えないのでVirtual PCのウィンドウの「ツール」メニューから設定を選んで、ネットワークの設定をする。
自分の場合は、左から「ネットワーク」を選んで、右側の「アダプター1」を「共有ネットワーク(NAT)」にすれば通りました。

同じ「ツール」の画面で「統合機能」でローカルハードディスクも共有しておくと便利かも。


後は自由に使えると思う。

2012年3月3日土曜日

xampp1.7.7のPEAR

マシンを入れ替えたのでxamppもpleiadesごと新しく入れて、xampp1.7.7に。
PEARが中途半端にしか動かないので、ちょいちょい調べる。

設定しようにもgo-pear.batとかpear.iniがない。

おそらくxamppを入れた後に行う、setup-xampp.batでPEARの設定とかしているんだろう。

pear.batの中の環境変数の設定が設置ディレクトリのものになっている。

コマンドラインでpear config-showとやると設定が中途半端に変わっている。

pear.batの中を見ると以下のような感じで設置ディレクトリの設定になっている。

■pear.bat 31~33行目■

IF "%PHP_PEAR_INSTALL_DIR%"=="" SET "PHP_PEAR_INSTALL_DIR=C:\pleiades-e3.7\xampp\php\pear"
IF "%PHP_PEAR_BIN_DIR%"=="" SET "PHP_PEAR_BIN_DIR=C:\pleiades-e3.7\xampp\php"
IF "%PHP_PEAR_PHP_BIN%"=="" SET "PHP_PEAR_PHP_BIN=C:\pleiades-e3.7\xampp\php\.\php.exe"


pear config-showで表示される設定には足りない。

ということで、pear.batの35行目あたりに以下を追加。

IF "%PHP_PEAR_CFG_DIR%"=="" SET "PHP_PEAR_CFG_DIR=C:\pleiades-e3.7\xampp\php\cfg"
IF "%PHP_PEAR_DOC_DIR%"=="" SET "PHP_PEAR_DOC_DIR=C:\pleiades-e3.7\xampp\php\docs"
IF "%PHP_PEAR_DATA_DIR%"=="" SET "PHP_PEAR_DATA_DIR=C:\pleiades-e3.7\xampp\php\data"
IF "%PHP_PEAR_TEST_DIR%"=="" SET "PHP_PEAR_TEST_DIR=C:\pleiades-e3.7\xampp\php\tests"
IF "%PHP_PEAR_WWW_DIR%"=="" SET "PHP_PEAR_WWW_DIR=C:\pleiades-e3.7\xampp\php\www"


これで、pear config-showすると設定した値で表示されるし、今のところうまく動いている。

2012年2月23日木曜日

CodeIgniter Sessionのエラー

CodeIgniterのSessionを使っていておかしいときがちょくちょくあった。(おもにver 1.7)
どうもSessionのデータがちょいちょい壊れる。

いい解決法を発見。
json_decode, json_encodeを使えることが前提

https://github.com/EllisLab/CodeIgniter/issues/13


Session.phpの_serializeと_unserializeを書き換える。


function _unserialize($data)
{
    return json_decode($data, true);
}

function _serialize($data)
{
    return json_encode($data);
}

Good!!!

2012年1月25日水曜日

.forwardでPHPにメールを食わせる

.forwardファイルを使ってPHP等のプログラムにメールを処理させることがありますが、ちょっと躓いたのでメモ。

まず、何もなければ、.forwardファイルに以下のように書けばいい。

> vi .forward
"| /usr/bin/php /home/john/sciptfile.php"

(john, scriptfile.phpあたりは任意でっせ。)

ところが、smrshが動作していると簡単には実行してくれません。
勝手にプログラム起動して処理するなということです。
smrshに許可してもらうには、/etc/smrsh内に実行ファイルのリンクを作成してやればよい。

こんなコマンド↓
> ln -s /usr/bin/php /etc/smrsh/php

とここまではよく見かけます。
しかし今回はこれでうまくいきませんでした。

.forwardファイル内の記述が問題のようで、絶対パスは無視されたりいろいろ制約があるようです。
詳細は偉い人に聞いてください。すいません。

でどうするかというと。

.forwardに記述する内容を単純化するためシェルスクリプトを1つ作成します。

> vi scriptcall.sh
#!/bin/sh
/usr/bin/php /home/john/sciptfile.php

↑こんな単純なファイル。

作成したシェルスクリプトに実行権限をつけて、smrshで実行できるようにシンボリックリンクを作成。

> chmod 755 /etc/smrsh/scriptcall.sh
> ln -s /usr/bin/scriptcall.sh /etc/smrsh/scriptcall.sh


.forwardファイルの内容を以下の用に変更

>vi .forward
|sciptcall.sh

以上でjohnさんにメールが来るとプログラムにメールが渡されます。

exim4 mailq一括削除


exim4のmailqの一括削除方法で、いいのがあった。

http://www.fukudat.com/wiki/ja/%E7%8E%84%E7%AE%B1/exim4

# for msgid in `mailq | grep '<.*>' | cut -c11-27`; do
> echo $msgid
> exim4 -Mrm $msgid
> done

ありがとう。

2012年1月18日水曜日

VMWare CentOS メモ


VMWare PlayerでCentOS最小インストール済みのイメージを動かしたときのメモ。

■キーボードのコンフィグ
USキーボードからJISキーボード

/etc/sysconfig/keyboard

KEYBOARDTYPE="pc"

KEYTABLE="jp106"

■SELinuxをオフ(テスト用だし)
/etc/sysconfig/selinux

SELINUX=enforcing

SELINUX=disabled

モードの確認は、コマンド getenforce で可能。


■yumで必要なものを入れる。



■ネットワーク
system-config-network コマンドでCUIのネットワーク設定画面が出るのでこれで簡単に済ませれる。
実際には/etc/sysconfig/network-scripts/ifcfg-eth0 を編集している。

手書きで設定する場合は以下のファイル等。
/etc/hosts
/etc/resolv.conf
/etc/sysconfig/network


■iptables
/etc/sysconfig/iptables

このあたり↓を「-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited」の前に追加

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

必要に応じて開放するポートを増やす。


■VMWareの共有フォルダ
設定したが、結局SSHかFTPでファイルを送った方が楽なのであまり使わなかったので割愛。




2011年7月6日水曜日

PHP Services_JSON について

PHP5.1.6が動いているサーバとjQueryとの間でJSONでやり取りをさせたときにはまった内容。

まず、PHP5.3とjQueryではPHP内のjson_encodeを利用してJSONデータを作成してブラウザに送り込んで問題なかったのだが、PHP5.1.6+IE+jQueryで問題発生。(FFは問題なし)

json_encodeが利用できるのは、PHP5.2以降か、PHP5.1の場合はPECLで入れたときのみなので、サーバがPHP5.1.6でサーバ内をいじれない環境だったので、以前使ったことのあるServices_JSONでjson_encodeの代わりをさせようとした。
ところが、JSONの受信時にIEではダウンロードのダイアログが出てしまいうまく受け取れない。

Services_JSONが勝手にhttpヘッダーをはいていたことが判明。
詳しくは下記サイト。

http://rd.uniba.jp/blog/2010/03/26/

IEでは正式なContent-type: application/jsonを受け付けてくれないようで。
httpヘッダーをはかないように、encode()メソッドの代わりにencodeUnsafe() を利用することにして一段落。


そしてさらに、IEだとJSONのデータ内の<>'"&などもエスケープしてやる必要がある。(左の5つの内どれだけ変換してやる必要があるかは調べてない。とりあえず5つとも変換してやればうまくいった。)


そこでServices_JSONに少し手を加える。
json_encode($obj, JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP);を実行したときのデータを下にこんな感じのを入れてやる。



case $ord_var_c == 0x3C:
//<
$ascii .= '\u003C';
break;
case $ord_var_c == 0x3E:
//>
$ascii .= '\u003E';
break;
case $ord_var_c == 0x27:
//'
$ascii .= '\u0027';
break;
case $ord_var_c == 0x22:
//"
$ascii .= '\u0022';
break;
case $ord_var_c == 0x26:
//&
$ascii .= '\u0026';
break;


う~んべたべたでぜんぜんスマートじゃない。


がとりあえず動くようになった。



2011年3月13日日曜日

CodeIgniter

最近利用するフレームワークは、もっぱらCodeIgniter。
ver2.0になった機会に周辺技術も検討してみようと思う。

DX_AuthをTank Authにして、Modular Extensions - HMVCを入れてみる。


2011年3月10日木曜日

文字列で入れたコードを数字のようにソートしたい

DBのクエリで困った。
次のようなテーブルがある。

code, name
----------
10,AAA
20,BBB
101,CCC
1000,DDD
A100,XXX

codeでソートをかけるんだけど、普通は↓。

SELECT * FROM table_name ORDER BY code;


code, name
----------
10,AAA
101,CCC
20,BBB
1000,DDD
A100,XXX

コードを数字として評価してほしい要望がきまして↓。


SELECT * FROM table_name ORDER BY CAST(code AS INTEGER);

エラー
(A100がキャストできない。A100がなければ可能だけどね)


それではこれ↓でどう?

SELECT * FROM table_name ORDER BY LPAD(code, 10, '0');


code, name
----------
10,AAA
20,BBB
101,CCC
1000,DDD
A100,XXX

もっといい方法(ただし簡単にできて)ないかしら。


2011年3月4日金曜日

PostgreSQL84をredhat EL4 に入れてみた

Redhat EL4でPostgreSQL8.4を使う機会があったのでメモ

コミュニティのリポジトリを使う
コミュニティのリポジトリを使うための設定ファイルの入手
> wget http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-redhat-8.4-2.noarch.rpm
そして入れる
> rpm -ivh pgdg-redhat-8.4-2.noarch.rpm
入ったか確認
> ls -l /etc/yum.repos.d/
pgdg-84-redhat.repoが一覧に入っていたらOK

/etc/yum.repos.d/の他のリポジトリからpostgresql関連のものを持ってこさせなくする
/etc/yum.repos.d/の他のリポジトリのファイルのenabled=1のセクションにexclude=postgresql*を追記する

準備オッケー!

PostgreSQL8.4が探せるかチェック
> yum search postgresql

インストールする
postgresql-serverを入れたら必要そうなのは大体入る
> yum install postgresql-server

起動設定
> chkconfig postgresql on

DB初期化
> /etc/init.d/postgresql initdb

必要であれば/var/lib/pgsql/data内の設定ファイルで設定を変える

起動
> /etc/init.d/postgresql start

2010年12月17日金曜日

PostgreSQL84最初の設定


ユーザ:root
インストール
yum install postgresql84-server

データベースの初期化をinit.dからできるるようになったので以下のようにDBを初期化する。
$ /etc/init.d/postgresql initdb

PostgreSQLを起動
$ /etc/init.d/postgresql start
PostgreSQLの標準のラン・レベルをonに
$ chkconfig postgresql on

ユーザpostgresのパスワードを設定
Ident認証になっているのでrootで$ psql -U postgres template1としてもはじかれるので一度postgresになってからDBに入る
$ su postgres
$ psql template1
template1=# ALTER USER postgres WITH PASSWORD '任意のパスワード';
template1=# \q (←psqlの終了)

/var/lib/pgsql/data/pg_hba.confを場合によっては修正

PostgreSQLを再起動
$ /etc/init.d/postgresql restart

ユーザ:postgres
$ createuser ユーザ名
$ createdb -E エンコーディング -O オーナー名 DB名

2010年7月21日水曜日

DNSキャッシュ

ホストに新しいIPを設定して、nslookupでホストを調べても正しいIPが返ってくるようになったのにブラウザなどで元のIPを参照してしまうような場合、Windowsが自前のDNSキャッシュを利用している。
そんなときは、キャッシュを削除する。
コマンドラインから以下で。

キャッシュを削除
ipconfig /flushdns
ちなみにキャッシュを表示する場合は以下
ipconfig /displaydns


2010年5月25日火曜日

MySQL最初の設定やバックアップ

PostgreSQL使いだしてからは、MySQLはあんまり触らなくなりました。
そうすると使い方忘れてしまって大変。

■簡単なセットアップ
・シェルのコマンドプロンプト
root権限でログイン

> mysql -u root -p

・以後mysqlのコマンドプロンプト
データベースの作成(文字コートUTF8、照合順序utf8_unicode_ci)

> create database データベース名 character set utf8 collate utf8_unicode_ci;

localhost接続からのデータベースユーザの作成(ユーザ名hoge、localhostから接続)

> create user 'hoge'@'localhost' identified by 'パスワード';

作成したユーザに作成したデータベースの全権を与える

> grant all on 'データベース名'.* for 'hoge'@'localhost';

mysqlコマンドライン終了
> \q

■データベースのダンプとレストア
シェルのコマンドプロンプト

ダンプ
> mysqldump データベース名 -u ユーザ名 -p > ダンプファイル名

レストア
(drop database & create databaseをした後に行う)
>mysql データベース名 -u ユーザ名 -p < ダンプファイル名

2010年2月18日木曜日

PHP UTF8でひらがな・カタカナ・漢字判定

ひらがな
preg_match("/^[ぁ-んー]+$/u", $str)

カタカナ
preg_match("/^[ァ-ヶー]+$/u", $str)

漢字
preg_match("/^[一-龠]+$/u", $str)

疑問点が残る。以下の文字は何に入るの?
ヽ ヾ ゝ ゞ

参考
文字コード表