2013年12月18日水曜日

MySQLで FULL OUTER JOINする方法

MySQLでの完全外部結合 | misty-magic.h .

なるほど

2013年12月11日水曜日

Apacheで 403の代わりに 404を返す方法

Apache(+ PHP)で、存在するがアクセスを拒否する場合に、存在することを示唆してしまう 403 Forbidden の代わりに、404 Not Found を返すための設定例。

httpd.conf
ErrorDocument 403 /404.php
ErrorDocument
404 /404.php
403と404で違うものを返したら意味が無いので、同じものを返すようにする。

404.phpの例
<?php header('HTTP/1.1 404 Not Found') ?>
<!DOCTYPE html>
<html>
<head><title>404 Not Found</title></head>
<body>
<h1>Not Found</h1>
The requested URL was not found on this server.
</body>
</html>
ポイントは、header()でHTTPステータスを指定していること。
IEだとこの表示内容は使われずに、IE独自のエラー画面が表示される。

きちんとやるなら、トップページへのリンクや検索窓付きのきちんとしたページを作れば良い。

(参考)403エラーの代わりに404エラーを返す | 時の回廊 .

2013年12月5日木曜日

2013年11月21日木曜日

MySQLで大文字と小文字を区別する SQLの書き方

MYSQLのCHAR、VARCHARカラムの大文字小文字を区別する(binary) - 神宮球場近くで働くSEのブログ

select * from binary_column where binary varcolum = 'AbCdE';

.メモ

CakePHPで実行した SQLを確認する方法

PHPのこととかPHPのこととかをつらつらと: cakephpでSQLを見たい時。。。 .

ViewがHTMLじゃないからログに出力したい場合に使える方法。

最後ログに出すなら

$this->log(..., LOG_INFO);

みたいな感じで。

DBで Indexのみにアクセスしてテーブルにアクセスしないことを

何と呼ぶかど忘れしたのでメモ。

 

MySQLでインデックスを使って高速化するならCovering Indexが使えそう - (゚∀゚)o彡 sasata299's blog

ただ、ここで [foo, hoge, fuga] という複合インデックスを張ることで、リーフだけで必要なデータが全て得られ、その後のランダムアクセスが無くなるため高速になります。このようなインデックスだけで完結するインデックスを Covering Index と言うそうです。

.

2013年11月8日金曜日

EC2のマイクロインスタンスにはデフォルトでは swapが無い

EC2とSwap領域についてまとめてみる - okochangのインフラ日誌

先ほどSwap領域を割り当てていた、デバイスファイルが存在しません。
EC2をt1.microで起動した場合の制限としてInstance Store Volumesを割り当てられませんが、それと同じような制限みたいです。

.

swapの作り方は下記が分かりやすい。

Amazon EC2 t1.micro インスタンスでswapを使用する - blogですかい

 

swapを作るとEBSのI/O課金が発生するので注意とのこと。

Amazon EC2編~microインスタンスのSWAP領域について~ | ナレコムAWSレシピ

 

2013年11月2日土曜日

HTML5のセキュリティで気を付けること

HTML5 を利用したWeb アプリケーションのセキュリティ問題に関する調査報告書 .

onXXXじゃないハンドラー系属性がHTML内に書けるとか、細かいこと書いてある。

Windows Server 2008 R2に cleanmgr.exeをインストールする方法

Windows Server 2008 R2(R2以外も?)には、通常のWindowsのようにエクスプローラでCドライブ等を右クリックして「プロパティ」を表示しても、「ディスクのクリーンアップ」ボタンが表示されないので、インストールする必要がある。

Windows Server 2008 R2にディスクのクリーンアップをインストール - しょぼんメモリ (´・ω・`) .

ファイルをコピーする方のやり方は再起動不要。
cleanmgr.exeとcleanmgr.exe.muiの両方をコピーする必要がある。cleanmgr.exe.muiはja-JPフォルダに入れる。(マルチランゲージインターフェース?)
実行するにはコマンドプロンプトで"cleanmgr"を実行する。(コピー後もCドライブのプロパティにはクリーンアップボタンは表示されないので。)

Windowsの WEPキー

シリコンバレー 24時: WindowsXPにおけるWEP暗号化キー入力はヘキサかアスキーか?

WindowsXPのWEPキー入力部分には、 暗号化の64ビットと128ビットの選択がないが、これは入力されたキーの桁数から 判断しているようだ。ここに入るキーは、5桁、10桁、13桁、26桁のいづれかであり、 かつ、10桁、26桁の場合は、16進数である 0〜9,A〜F でなければならないことになっているようだ。

.

入力文字数によりASCIIの入力か/16進数の入力か、64ビットか/128ビットか、を判断して適切に設定されるらしい。
ASCIIで入力しても、登録後にマスクを外して表示すると16進数で表示される。

2013年10月30日水曜日

2013年10月29日火曜日

JavaScriptでページを遷移せずに URLを変える

AjaxでもURLを更新して履歴を作れるHTML5のpushState試してみた | webOpixel

履歴を残すだけならクリックイベントのところに「window.history.pushState(null, null, nextPage);」を追加します。
第3引数に追加した文字列にURLが切り替わります。

.メモ。

Androidでステータスバーに表示した通知をタップされた時にアプリを表示する方法

メモ

JPEGminiとJPEG Minimizerの比較

  • 元の画像 = 302KB
    • JPEGminiで変換 → 190KB
      • さらにJPEG MInimizer(Quality=50)で変換 → 93KB
    • JPEG Minimizerで変換(Quality=50) → 87KB
      • さらにJPEGminiで変換 → 88KB(増えた)

Androidアプリ開発:サスペンド防止の調査

  • KeyguardManager の exitKeyguardSecurely() メソッド及び newKeyguardLock() メソッドと、サブクラスの KeyguardManager.KeyguardLock は deprecated になっています。
    これらのメソッドの代わりに WindowManager.LayoutParams クラスの FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED を使うことが推奨されています。

未来の自分のためにメモ。

Windowsと IEのバージョン別対応表

Internet Explorer - Wikipedia .

 

Windows 8はIE10のみ。IE11を使うためにはWindows 8.1へのバージョンアップが必要。

2013年10月23日水曜日

iPad Airの最大の特徴

iPad Airと新型iPad miniはなにが違うのか? 歴代iPadスペック比較表

厚みはiPadシリーズで過去最も薄く、第4世代より約2mm減、本体の重さは183gも軽くなりました。

まあ軽くなったこともそうなんだけど、幅がかなり余分なとこが減ってスリムになったみたい。でもやっぱり軽くなったことか。

2013年4月12日金曜日

MySQL 5.5.3以前だと主キーが NULLでなくても IS NULLが TRUEになるらしい

MySQLで "SQL_AUTO_IS_NULL = 0" じゃないと、IS NULLで検索されたときにエライ目に遭うという話 - (゚∀゚)o彡 sasata299's blog
実はこれが曲者です!! id が NULL のデータなんて無いから必ず insert するだろうと思っていました。思っていましたが実際に試してみると、、、

なんかときどき update してるんですけどー。

MySQL 5.5.3からは変わったらしい。

MySQL :: MySQL 5.5 Reference Manual :: 12.3.2 Comparison Functions and Operators


The default value of
sql_auto_is_null is 0
as of MySQL 5.5.3, and 1 for earlier versions.


2013年4月11日木曜日

cronでエラーをログに残しつつメールも出す方法

UNIXの部屋 コマンド検索:tee (*BSD/Linux)
あるコマンドの出力をパイプを使って他のコマンドに渡したいが、画面にも表示したい、という場合、tee を使う。

やりたかったのはこれだ!

というわけで、PHPを実行して標準出力とエラー出力をログに残しつつ、エラーがある場合はメールも出す方法。(未検証)
(php test.php 1>>test.log) 2>&1 | tee -a test.log



シェルスクリプトでコマンド実行の戻り値がゼロでない場合のみ処理を実行する方法

シェルスクリプトのエラー処理を見やすく書く - ablog
みたいに書くと、コードが見づらいのでなんとかならないかと思っていたら、

ワンライナーですっきりかける!

2013年4月10日水曜日

cronでログファイルにタイムスタンプを入れる例

crontabで変数を使用するときの注意 - 今日もスミマセン。
crontabの中では、以下のようにコマンド実行時の環境変数を定義してあげることができる。

これを使って、こんな感じに日時を入れる?(終了日時まで入れればより丁寧。)
LOG_PATH=/path/to/log/foo.log
0 5 * * * date 1>>$LOG_PATH; php /path/to/app/foo.php 1>>$LOG_PATH 2>&1

2013年4月8日月曜日

WinSCPで Windowsのフォルダと Linuxのディレクトリを完全自動同期

nooopes blog: Webアプリ開発者だったら使っておくべきWinSCPの自動同期機能
WinSCPのミラーリング機能を使うと、ローカルのファイルの変更を監視して、自動でサーバにファイルを転送してくれます。

こんな機能があったのか。
削除にチェックを付けると、問答無用で削除されるので少し怖い...。削除だけは手動でやった方がいいかも。(忘れずに削除できるなら。)

WinSCPで Windowsのフォルダと Linuxのディレクトリのファイルを同期する方法

WinSCPの自動同期機能を使って、作業効率UP | てくんのプログラミングブログ
このWinSCPは、GUIで動作し、ドラップアンドドロップによって、コンピュータ間でファイル転送をする用い方が基本的な用い方ですが、実はWinSCPはコマンドでも動きます。(この時の「コマンド」の意は「windowsのコマンドプロンプト」の意味です。)
そして、そのコマンドで動作した時の自動同期機能が便利なので紹介します。


あとは自動でUpdateされれば完璧なのだが

yumで sambaをインストールする例

Samba を使ってファイル共有してみる | レンタルサーバー・自宅サーバー設定・構築のヒント
今回は、古くからWindowsネットワーク機能をUNIX 系 OSで実装した Samba を使ってファイルの共有を行ってみます。

メモ

yumで OpenVPNをインストール

OpenVPN を使って仮想LAN接続してみる | レンタルサーバー・自宅サーバー設定・構築のヒント
今回は、そのリスクを回避する1つの方法である暗号化技術(SSL/TLS)を用いたVPNの象徴的な OpenVPN を使って仮想LANを構築してみたいと思います。

メモ

2013年4月5日金曜日

Googleカレンダーで第1営業日を指定する方法?

無さそうだけど実はあるのかと思ったら、

Google カレンダーと Outlook - Google Apps ヘルプ
週の最初の平日または週末の最初の日を指定して予定の繰り返しを設定する。そのような会議を設定するには、Outlook を使用して設定してください。

なんじゃそりゃ

2013年4月4日木曜日

mod_pagespeedで Google Analyticsのスニペットを自動挿入

Insert Google Analytics - mod_pagespeed — Google Developers
The 'Insert Google Analytics' filter is enabled by specifying:

ModPagespeedEnableFilters insert_ga
ModPagespeedAnalyticsID <Analytics ID>

in the pagespeed.conf file.

これは便利そう。bodyの終了タグの直前に挿入された。

試しに元のページにGoogle Analyticsの同じIDのスニペット(しかもカスタマイズされたもの)を入れたところ、自動挿入はされなかった。重複しないように賢く判断しているようだ。

今時の開発ツールを使いこなしていた外国人さんの話

rinu's blog
1ヶ月くらい一緒にお仕事している外国人プログラマさんを観察した記録です。

探しやすくするためにメモ。

mod_pagespeedのインストール方法

mod_pagespeed を試してみました | dogmap.jp
以下、インストール方法。

と言っても、公式サイトに書いてある通りなんですが…
CentOS 64bit版の場合は、以下の通りです。

Googleの公式サイトに書いてあるやり方をコピペしたら駄目だった(詳細は見てない)けど、こちらのやり方でいけた。

キャッシュのディレクトリは /var/cache/mod_pagespeed になった。

MySQLの character_set_server

仙石浩明の日記: 文字化けしていなくても MySQL 内の文字コードが正しくない場合がある
「character_set_server」 が latin1 になっていて気持ち悪いかも知れないが、 このシステム変数は新しく database を作るときのデフォルトを設定するものなので、 (latin1 な database は金輪際作らないというのでも無い限り) 変更する必要はない。

Amazon EC2のAmazon Linuxにyumで入れたMySQL(5.5)のcharacter_set_serverがlatin1になっているが、DBの新規作成時のデフォルトの文字コード設定だけだそうなので、DB新規作成時に文字コードを(下記のように)指定すれば影響はないみたい。
CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8 */;

その他はみんなUTF-8になっていたのだけど、my.cnfを見ても文字コード設定が書いていないのはなぜだろう...?(MySQLそのもののデフォルトがほとんどUTF-8になった?)

2013年4月3日水曜日

Amazon RDSに MySQL Query Browserで SSL接続する際の参考サイト

Amazon RDS に SSL 接続する (CUI / MySQL Workbench 編)
(RDSの公開鍵のダウンロードリンクと、暗号化接続の確認SQL。)

MySQLサーバにSSLで接続する | guro_chanの日記
(下の方の画像にMySQL Query Browserの設定のスクリーンショットがある。)

2013年3月27日水曜日

サーバの負荷状況を見られるサービス/ツール

カジュアルに鯖を監視するNewRelic をAmazon Linux に導入 - aws memo
監視対象サーバが少ないシステムだと、監視サーバのコスト・運用負荷がデメリットになるので、CloudWatchを補助する目的で、CloudWatchで取れない Load Average, free memory, Disk UsageといったOS内部の情報をカジュアルに一元管理するのに向いている。

Amazon Linuxに入れる例。
無料アカウントの場合、30分しかデータを保持してくれないらしい。

2013年3月22日金曜日

Gmailで大きな添付ファイルのあるメールを検索する方法

Gmailの容量が心配な人に、大きなメールや添付ファイルだけを探す隠し検索機能size: | 秋元@サイボウズラボ・プログラマー・ブログ
コメント欄で教えていただきましたが、”size:10M”という単位指定もできるようですね。”size:512K”, “size:765kb”, “size:64MB”, “size:573m” など、大文字小文字、後ろのBの有無に関わらず、単位が有効なようです。


これは便利だ

2013年3月21日木曜日

HTML5と CSS3でフォームへの入力チェックをビジュアル的に分かりやすく表示する例

HTML5 Form Validation のカスタマイズ « GirlieMac! Blog
CSS3 ユーザインターフェイスセレクタ

CSS ではいくつかの、UI 要素状態を表す UI セレクタ(疑似クラスや疑似要素)があります。その例として、:valid, invalid, in-range, out-of-range, required, optional, read-only, read-write が挙げられます。

これいいねー。IE9さえ対応してたらねー...

2013年3月19日火曜日

Twitter Bootstrapの CDN

BootstrapCDN: Twitter's Bootstrap hosted on NetDNA's Content Delivery Network
Simply replace your local Bootstrap objects with the ones hosted on our global network of Edge Servers.


httpsも使える。メモ。

PHPのmysqlndとは

PHP+MySQLで使われるプログラムの違いがわからなかったのでまとめてみた
MySQL側から提供されているクライアント、libmysql(MySQL クライアントサーバーライブラリ)もありますが、mysqlnd(MySQLNativeDriver)はC言語で書かれたPHP用拡張モジュール、つまりPHPに最適化されたクライアントライブラリなので、libmysqlに比べてメモリ使用率が少ない、安定して高速に動作する等のメリットがあります。


.メモ

2013年3月12日火曜日

Twitter API 1.0の廃止は「2013年中」に延期されたらしい

Twitter API1.1 画像で見る新ディスプレイガイドラインまとめ | 24-7 Blog
※ 当初の発表ではAPI1.0は2013年3月5日に廃止と発表されていました。その後、廃止からブラックアウトテストに変更になっていました。

どうりでまだいろいろ動くわけだ。2013年のいつかは明示されていないのかな?

2013年2月15日金曜日

au Wi-Fi SPOTを iPad Wi-Fiモデル / iPod touchで利用する方法

iPad Wi-Fiモデル/iPod touchでの利用方法 | 利用方法 | au
ご利用中のauスマートフォンでご登録いただいたものと同一のau IDを用いて初期設定を行います。
au IDをご取得いただいていない方は、ご利用中のauスマートフォンでau IDを取得し、au携帯電話の登録を行ってください。

メモ。
1つスマホを契約すれば、いくつでもPC等で接続できるってことなのかなー?

2013年2月5日火曜日

Outlookのバージョンを上げたら添付ファイルが削除されるようになった

Outlook でメッセージ "次の添付ファイルは問題を起こす可能性があるため、利用できなくなりました" が表示されることがある
レジストリを修正して Outlook の添付ファイルのセキュリティ動作を変更するには、以下の手順を実行します。

前のバージョンではレジストリをいじってexeの添付ファイルを受信できるようにしていたが、Officeのバージョンを上げたらまた別途同じ設定が必要だった。レジストリのキーがバージョンごとにあるので。

exeはGmailでは送受信できないからOutlookの面目躍如?!

CakePHP 2.xで JSONを返す

リクエストとレスポンスオブジェクト — CakePHP Cookbook v2.x documentation
CakeResponse は次のような共通のレスポンスをラップするためのインターフェイスを提供します。:

リダイレクトのためにヘッダを送ること。
コンテンツタイプヘッダを送ること。
ヘッダを送ること。
レスポンスボディを送ること。

Googleで検索すると、header()を使ったり $this->header() を使ったり beforeFilter() を使ったりする古い記述に惑わされるが、実際にはControllerにこれだけ書くだけでいいみたい。Viewも要らない。
public function action_name() {
    $arr = array('jsonの' => '中身');
    return new CakeResponse(array('type' => 'json', 'body' => json_encode($arr)));
}

シンプルだ。
Content-Typeもapplication/jsonになる。
CakeResponseは、他にもブラウザキャッシュの制御もできるみたい。


2013年2月4日月曜日

VMware Playerは利用規約的にも仕事でも使えるらしい

VMwarePlayerの「非営利目的の使用(商用利用)」はどこまで? | Happy my life
まあ、厳密に知りたい時はVMwareに尋ねる必要あるけど。

タイトルバーに「非営利目的のみ」と表示されてプレッシャーを感じるが、問い合わせた方によると自分でインストールして使う分には問題ないらしい。

Excelで新規ファイルや新規シートを開いた際のデフォルトの設定をカスタマイズする方法

既定のテーマを変更する - Excel - Office.com
Office Excel 2007 または 2007 Office リリース がインストールされているディレクトリ内 (通常、C:\Program Files\Microsoft Office\Office12) にある XLStart フォルダを参照し、[ファイル名] で、次のいずれかの操作を行います。

既定のブックを作成するには、「book.xltx」と入力します。
既定のワークシートを作成するには、「sheet.xltx」と入力します。

Excel 2010、2013でも同じだった。
ただし、2013でスタートメニューから新規Excelを起動した場合はboook.xltxが反映されない。

2013年1月24日木曜日

Excelの SUMIF()で複数の条件で合計したい

SUMIF SUMPRODUCT 配列の積の和 SUMIFで複数条件 エクセル Excel [エクセルの学校]
セルG2に特定の担当者[佐藤]の特定の商品[ポテトチップス]の売上合計が 答えとして表示されます
結果として、[複数条件でSUMIF]になります

SUMPRODUCT()なんてのがあるのかー。
パラメータが一般的なfunctionの域を超えている気がする。

サーバ証明書(SSL証明書)のチェックツール その2

SSL Certificate Tester - Check Certificates

SSL Installation Diagnostics - Check SSL Certificate

Welcome to DigiCert SSL Help. If you are having a problem with your SSL certificate installation, please enter the name of your server and we will attempt to diagnose the problem and verify proper SSL installation.

これもいいね。

サーバ証明書(SSL証明書)の Validationをしてくれるサイト

SSL Checker - SSL Certificate Verify
This SSL Checker will help you diagnose problems with your SSL certificate installation. You can verify the SSL certificate on your web server to make sure it is correctly installed, valid, trusted and doesn't give any errors to any of your users. To use the SSL Checker, simply enter your server's hostname (must be public) in the box below and click the Check SSL button. If you need an SSL certificate, check out the SSL Wizard.

これは便利だ。

2013年1月11日金曜日

PHPをコマンドラインから実行

PHPまとめ - コマンドライン実行
一方、ファイルではなく直接PHPコードをコマンドラインに記述して実行させる方法もある。
これは"-r"オプションを使うことでできる。
> /path/to/php -r "echo time();"

Windowsのコマンドプロンプト(いわゆる黒窓)でもできた。
PHPコードを囲むのをシングルクォートにしたり、<?php ... ?>的な感覚でセミコロンを省略するとエラーになるので注意。

2013年1月10日木曜日

jQuery Mobileの Ajaxによるページ遷移で 意図しないURLのロードを防ぐ方法

そろそろjQuery Mobileでajaxを無効にしてるやつに一言いっておくか - へっぽこプログラマーの日記
同一ドメイン上に安全でないリソースがある可能性がある場合

ajaxによるページ遷移は、URLから実行することが可能なため、同一ドメイン上に安全でないリソースがある場合は注意が必要です。例えば、ユーザーが自由にアップロードできるフォルダがあるとか、共有ドメインを使ってる場合などです。そういう場合には、pagebeforeloadイベントを使ってチェックしましょう。

メモメモ。
.

ScribeFireで Google 2段階認証にしている Bloggerに投稿する方法

ScribeFire Classic :: Add-ons for Firefox
ScribeFire Classic is a blog editor that integrates with Firefox and lets you easily post to your blog.

Googleアカウントのセキュリティページで、「アプリケーション固有のパスワード」を生成する。
ScribeFireに既にブログを設定している場合はいったん削除して、登録し直す。
その際に、パスワードとしてGoogleアカウントのパスワードではなく、先ほど生成した「アプリケーション固有のパスワード」を入力すればOK。

Chromeリモートデスクトップの PINの桁数制限

Chrome リモート デスクトップ アプリ - Google Chrome ヘルプ
PIN を使用してパソコンを保護する

リモート接続が有効になっているパソコンを PIN で保護すると、通常の Google アカウント パスワードを使用する場合よりもさらにセキュリティを強化することができます。アカウントが不正使用された場合でも、パソコンの安全は保持されます。

PIN を使用するだけではパソコンにアクセスできず、Google アカウントにログインする必要があります。

PINは6桁以上らしいが、使用可能な最大桁数は書いてない。
30桁だと駄目(エラーになる)だったけど、20桁は大丈夫だった。

ブログ アーカイブ

カテゴリー