MySQLをインストールする

Python+MySQLの組み合わせでCGIシステムを作成するために、MySQLとPythonとのインターフェースをインストールします。MySQLの文字コードはutf8とします。

  • mysql-serverパッケージをインストールする。MySQLのrootユーザのパスワードを設定する。
  • /etc/mysql/my.cnfを変更し、文字コードを設定する。
  • PythonとMySQLのインターフェース関連のpython-mysqldbパッケージをインストールする。Pythonで、import MySQLdbが実行できれば準備完了です。

MySQLのテーブルを作成するまでの基本操作まとめ

MySQLをインストール後、テーブルを作成するまでに行なう基本操作のまとめです。
例として、下記の内容でデータベースおよびテーブルを作成するとします。

データベース名 exmdb
ユーザ名 exmuser
ユーザ:exmuserのパスワード exmDbPassword
テーブル exmtable
テーブルの作成等を記述したファイル名 init.sql
  • rootでmysqlを実行
  • データベースを作成(文字コードをutf8に指定)
  • 作成したデータベースを確認
  • データベースの一覧表示
  • データベースを削除
  • ユーザを作成
  • ユーザの一覧表示
  • ユーザを削除
  • 作成したデータベースに作成したユーザを指定して接続
  • テーブルを作成
  • テーブルの一覧表示
  • ファイルを読み込み、テーブル、インデックス等を作成

FirefoxでAltキーのキーボードショートカットを無効にする

Firefoxでは、Altキーに「メニューバーを表示する」という機能がキーボードショートカットとして割り当てられています。また、メニューバーの中のメニューを実行するためのショートカットキーとしてもAltキーは使われています。
そのため、日本語入力の切り替えなど、他の機能のキーボードショートカットにAltキーを使おうとしてもうまくいかないことがあります。そういう場合は、Altキーに割り当てられているキーボードショートカットを無効にすると、問題が解消することがあります。

FirefoxでAltキーに割り当てられているキーボードショートカットを無効にする手順は以下のとおりです。

  1. ロケーションバーに「about:config」と入力して、Enterキーを押す。
  2. “動作保証対象外になります!” という警告ページが表示された場合は、細心の注意を払って使用するをクリックする。
  3. 検索欄に「ui.key.menu」と入力する
    about-config-1
  4. 「ui.key.menuAccessKey」の行をダブルクリックして、値を「0」にする。その下の「ui.key.menuAccessKeyFocuses」の行をダブルクリックして、値を「false」にする。
    about-config-2

CSSでウェブページにキーを綺麗に表示する

ウェブページの本文中に、キーボード上のキーを表現したいことがあります。
例えば、

コピーをするには Ctrl + C とします

という文を書きたいことがあります。このままでも問題ないのですが、少し工夫をすると以下のように少しキーボード上のキーのような表示にすることができます。

コピーをするにはCtrl+Cとします

方法は簡単で、HTMLで

と書いて、スタイルファイルに以下のような定義を入れるだけです。

ちなみに、これはキーボードショートカット | Firefox ヘルプのページで使用されていた方法です。

Pythonのdatetime型のデータで引き算を行なう

例えば部屋などの予約をする場合、使用開始時刻と使用終了時刻が入力され、何時間使用したかを算出したいとします。

時刻のデータ型はdatetime型とします。
Pythonのバージョンは2.7.6です。

[例1]
使用開始時刻:2014年12月18日 10:00
使用終了時刻:2014年12月18日 11:30
使用時間:1.5(h)

24時間を超える可能性がある場合は total_seconds() というメソッドを使うとうまくいきます。

[例2]
使用開始時刻:2014年12月19日 12:00
使用終了時刻:2014年12月20日 13:30
使用時間:25.5(h)

Pythonのdatetimeモジュールのdate.toordinal()をC++で実装しました

C++でプログラムを作成しているときに、Pythonのdatetimeモジュールのdate.toordinal()が欲しくなったため、Pythonのコードを見てC++で実装してみました。

下のコード内のtoordinal()という関数が本体です。

このままコンパイルして実行することもできます。
年と月と日の入力を求めてくるので入力すると、1年1月1日からの日数を表示します。

中身をわかりやすくするため、エラー処理などのコードは入れてありません。

URLをリダイレクトする方法

URLを変更し、旧URLから新URLへリダイレクトする場合は .htaccess に記述します。

【旧URL】 http://localhost/?page_id=98/
【新URL】 http://localhost/access/

WordPressのパーマリンクを変更したら「Not Found」が表示された場合の対策

WordPressを使ってホームページを作成しています。
「パーマリンク設定」をデフォルトのままページを一通り作成しました。

「パーマリンク設定」を変更しないと、各ページのURLは
http://(ホスト名)/?page_id=(数字)
のような形式になります。

デフォルトのままでは何のページかが分かりずらいため、URLの変更を行うことにしました。
手順としては、パーマリンクの共通設定を変更し、その後、個々のページのURLを変更します。

パーマリンクの共通設定は、以下の手順で変更することができます。

  1. ダッシュボードから [設定] → [パーマリンク設定]を選択します。
  2. 開示されたページの [パーマリンク設定] → [共通設定] を変更します。

パーマリンクの共通設定を変更したら、個々のページのタイトルの下にある「パーマリンク」を編集します。
permanent

以上の手順でURLの変更を行ったページを表示してみると、「Not Found」が表示されました。
変更を行ったページを正常に表示するために、いくつか設定を行いました。

【動作環境】Ubuntu 14.04 LTS、Apache 2.4.7
※ サーバ環境により異なるため、設定が必要のない場合もあります。

❋ Apache の 設定を変更します。

  • mod_rewrite を有効にします。
  • 有効になったことを確認します。
  • /etc/apache2/sites-available/000-default.conf に以下の設定を追加します。
    ※ WordPress が /var/www にインストールされている場合。
  • Apache 再起動します。

❋ WordPressがインストールされているディレクトリに .htaccess を作成します。

  • index.phpが置かれているディレクトリに、空の .htaccess を作成します。
  • 書き込み権限を付加します。(権限の範囲はサーバの設定による)
    ※ [パーマリンク設定]画面に以下の記述が出力されている場合は書き込みに失敗しています。その場合は、書き込み権限の範囲を広げます。権限の範囲はサーバの設定によります。
    writeError
  • 正常に自動更新された場合は、.htaccess に以下の内容が追記されます。

Firefox起動時に黒い画面が表示される不具合について

Firefoxを起動すると、黒い画面が表示され何も表示されないという現象が起こりました。

Firefoxのトラブルシューティングの記事によると、
一部のグラフィックカードとドライバの組み合わせによっては、ハードウェアアクセラレーションを利用すると、Firefox がクラッシュするか、ページ上のテキストやオブジェクトの表示に問題が起こることがあります。
という現象があるようです。

【Firefox】 拡張機能とテーマのトラブルシューティング

トラブルシューティングの手順に従ってハードウェアアクセラレーション機能をオフにしたところ、現象は起こらなくなりました。

行なった手順は以下の通りです。

  1. Firefoxをセーフモードで起動します。
    (Shiftキーを押下しながらFirefoxアイコンをダブルクリックします。)
  2. メニューから、
    [ツール] → [オプション] → [詳細] → [一般]タブ
    を選択し、
    「ハードウェアアクセラレーション機能を使用する (可能な場合)」からチェックを外します。

とりあえずオプション変更で表示されるようになりましたが、時間のある時に、グラフィックカードのドライバの更新も検討してみたいと思っています。

スタイルファイルで印刷範囲を指定する

htmlのページをブラウザから印刷する時に、必要な部分だけ取り出した形式で印刷させたい場合があります。そのような場合、スタイルファイルで印刷範囲を指定することができます。

各エリアが以下の例のようなid名を持つとします。

htmlEx

例として、このページの #contents に書かれた内容だけを印刷させるには、スタイルファイルに以下のように指定します。

クラス属性でも同様の指定が可能です。

media の前の「@」をお忘れなく。