aswww log

エンジニアの技術録。アプリとかウェブとか

Ubuntuのアプリアップデート失敗とUbuntu14.04にアップデートしたら音が出なくなった時の対処録

この前までUbuntu12.04を使ってた。そこでアプリアップデートしたら起動できなくなって、対処してたら思いがけずOSもアップデートされて、やっと平常運行したと思ったら何故か音がでなくなって更に対処した。その時のことを箇条書きで備忘録。

・アプリケーションマネージャーが各アプリのアップデート情報を教えてくれても無視を決め込んでいると、ブラウザでFlashが表示されなくなったり、サポートが切れたりと色々不便になってきたので、アプリの更新だけアップデートしてみることにした。(この時点でOS自体もアップデートされるとは考えてなかった)

・するとアップデートがうまくいかず途中で止まってしまった。3日間放置しても全然進まないのでとりあえず強制終了してみる。強制終了しようとすると「ここで止めるとシステムが破損する可能性が高いです。本当に終了しますか?」と聞かれたけど、いつまでも終わらないからしょうがない、と思い強制終了。その後する再起動。

・するとUbuntuが正常に起動せず、ログイン画面まで進めなくなった。スマホで色々ググった結果、起動時にリカバリーモードでclean(不要なパッケージを削除して、HDDの空き容量を確保)したり、dpkg(破損したパッケージの修復と、パッケージのアップデートを行う)した。するとUbuntuログイン画面までいくことができた。
※リカバリーモードの詳細については以下のサイトを参照のこと
Ubuntu 12.04 リカバリーモードで起動する - Ubuntu kledgeb


・ログインしようと試みるもデスクトップ画面までいかずにマウスだけは動く準フリーズ状態に。ここであらためてリカバリーモードでdpkgを実施。ちなみに途中でY/n聞かれるやつはほぼYにしてみた。(きっと最新にするかどうかの問いかけに違いない)

・するとUbuntuが正常にログインできた。OSもいつのまにかUbuntu14.01になってる!しかしアップデート前よりもさくさく動いてて快適になったし、アップデートして良かった!今度からはまめにアップデートするよう心がけよう。

・ブラウザでyoutubeを開いた時に音が出ない問題発覚。スピーカーには問題無し。サウンド設定を開いてみると、サウンドの出力先が空欄。。。本来ならばサウンドボードの名前だとかが表示されるはずなのに。。。

・色々試行錯誤しつつググっていると、どっかのサイトで以下のような書き込みを発見。(サイトURLはわからず。。。)

Ubuntuで音がでないとか大抵カーネルのバグだからね。一度~/.pulse/配下の全てのファイルを削除してみるといいよ

そこで以下を実行

rm -f ~/.pulse/*

んで再起動したら音が出るようになった!ありがとう!書き込みの人!



以上が表題のUbuntuのアプリアップデート失敗とUbuntu14.04にアップデートしたら音が出なくなった時の対処録でした。皆さんもアップデートはこまめにしたほうがいいですよ!

wordplessのインストールとインポートプラグインの追加

友人のヘルプ案件でwordpless使うことになったので、
ローカルにインストールしたりインポート機能とか使ってみたのでメモ。

★インストール
 基本は以下のサイトを参考に実施。
WordPress のインストール - WordPress Codex 日本語版

★インポート
 インストールが完了したら友人が途中まで作成したwordplessのエクスポートデータをインポートする。
ここは以下のサイトを参考に実施。
WordPressの引越(エクスポート・インポート) | ゴクラク

ここでひとつつまづく。
インポートプラグインを[インストール]ボタンを押したら以下のとおりエラーが表示された。

インストールしているプラグイン: WordPress Importer 0.6.1
https://downloads.wordpress.org/plugin/wordpress-importer.0.6.1.zip からインストールパッケージをダウンロードしています…

パッケージを展開しています…

Abort class-pclzip.php : Missing zlib extensions

phpのextentionのzlibが足りないらしい。
しょうがないからphpをインストールし直す。
ついでにレンタルサーバーにあわせてバージョンを5.5系に更新。

前回のインストールオプションから以下のとおりオプション追加してインストール。

./configure --with-apxs2=/usr/local/apache2/bin/apxs
            --enable-mbstring
            --enable-mbregex
            --with-mysql
            --with-mysqli
            --with-pdo-mysql
            --with-tidy
            --with-gd
            --with-pear
            --with-mcrypt
            --with-zlib
            --prefix=/usr/local/php5.5
            --enable-module=so
            --with-php-config=/usr/local/php5.5/bin/php-config
            --with-openssl
make
make test
sudo paco -D make install
php -v
PHP 5.5.20 (cli) (built: Dec 20 2014 03:02:16) 
Copyright (c) 1997-2014 The PHP Group

インストール完了。apacheリスタートしたら無事インポートツールインストールできましたよ。

Windows7で仮想環境Vagrantをインストールしてみた

STEP1.
 以下からVagrantをダウンロード&インストールする
https://www.vagrantup.com/downloads

STEP.2
 VurtualBoxをダウンロード&インストールする。
https://www.virtualbox.org/wiki/Downloads

STEP.3
 VirtualBoxを立ち上げたままコマンドプロンプトを立ち上げ、以下のコマンドを入力し、Vagrantを初期化する

vagrant box add chef/centos-6.5
vagrant init chef/centos-6.5

initのオプションの文字列は自分が仮想環境で使いたいOSを以下を参考に指定する
https://vagrantcloud.com/discover/featured

STEP.4
 Vgrantを起動。

vagrant up

これでローカルOSからsshでログインできる。

vgrant ssh

ちなみにvgrantは何もしなくてもデフォルトでローカルOSとの共有リポジトリを作ってくれる。共有リポジトリの場所はVirtualBoxの設定から確認できる。
また、vgrantのターミナルではデフォルトで ユーザーID:vgrant/PASS:vgrant でアクセスできる。

fuelPHP1.7で日付Validation関数(valid_date)の使用とサンプル

以前の記事fuelPHP1.6くらいで日付Validation関数独自実装では
日付の入力チェックvalid_dateの使い方がよくわからなくて思わず独自実装しちゃったけど改めて日付チェックする機会が訪れたのでもう一度使い方調べてみた。
なお、前回同様google先生に聞いても使用例とか出てこない模様。

というわけで大人しくfuel/core/classes/Validation.phpのソースを覗いてみた。そしたらvalid_dateの実態が見つかったよ

    public function _validation_valid_date($val, $format = null, $strict = true)
    {
        if ($this->_empty($val))
        {
            return true;
        }

        if ($format)
        {
            $parsed = date_parse_from_format($format, $val);
        }
        else{
       ・
       ・
       (略)

このdate_parse_from_formatって関数でチェックしてるみたい。
以下のように使えるんだって。

array date_parse_from_format ( string $format , string $date )

参考:http://www.php.net//manual/ja/function.date-parse-from-format.php

ここの$formatに指定するのは「DateTime::createFromFormat() が理解できるフォーマット。」らしい。

参考:http://www.php.net/manual/ja/datetime.createfromformat.php

サン プルをみてみるとフォーマットを'Y-m-d'とかで指定してるね。というわけで同じようにformatの指定を変えて見ると

        $val = Validation::forge();
        $val->add('date', '生年月日')->add_rule('required')
            ->add_rule('valid_date', 'Y-m-d');

無事できた!前回はフォーマットを'YYMMDD'とかサポートしてない形式で指定してたからうまくいなかなったんだね。独自実装しなくてもできるね!まあ勉強になったからよしとしよう。

Windows7でfuelPHP1.8の設定してみる(composer.phar編)

Windows7でfuelPHP1.8を使うことになり、色々設定してブラウザでいざアクセスしてみると、
「composer.pharをupdateしてくれ!」的なエラーが出たのでproject直下あったcomposer.pharをupdateしてみた
すると以下のとおりうまくいかず。

$ /c/php-5.4.28/php.exe composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - facebook/php-sdk v3.2.3 requires ext-curl * -> the requested PHP extension
 curl is missing from your system.
    - facebook/php-sdk v3.2.2 requires ext-curl * -> the requested PHP extension
 curl is missing from your system.
    - facebook/php-sdk v3.2.1 requires ext-curl * -> the requested PHP extension
 curl is missing from your system.
    - facebook/php-sdk v3.2.0 requires ext-curl * -> the requested PHP extension
 curl is missing from your system.
    - facebook/php-sdk dev-master requires ext-curl * -> the requested PHP exten
sion curl is missing from your system.
    - Installation request for facebook/php-sdk * -> satisfiable by facebook/php
-sdk[dev-master, v3.2.0, v3.2.1, v3.2.2, v3.2.3].

以下を読んでphp.iniでcurlが設定されてないからかな?と解釈して早速設定してみることに。

http://stackoverflow.com/questions/19335305/composer-install-error-requires-ext-curl-when-its-actualy-enabled

php.iniの次の箇所を以下のとおり修正

;extension=php_curl.dll

extension="C:\php-5.4.28\ext\php_curl.dll"

コメントアウト外すだけだと以下とおり「C:\php-5.4.28直下にphp_curl.dllが無いよ!」と怒られるので絶対パスで指定

C:\www\project>php composer.phar install
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\php\php_curl.dll'
- 指定されたモジュールが見つかりません。

そしたらできたよ!
以下のサイトによるとgitのインストールも必須らしい。(今回は予め入ってたので躓かなかった)
http://piyopiyocs.blog115.fc2.com/blog-entry-515.html

FuelPHPにてFUEL_ENVが設定されていない時のデフォルト参照先変更

FuelPHPでoilコマンドでoilコマンドを直叩きで実行する時。.htaccessにてFUEL_ENVで何を設定していようが、fuel/app/config/development/db.phpを見に行ってしまう。
 .htaccessを読み込むのはhttpdなので、httpアクセスを介さないで直接phpを実行するoilが参照しないのは当然のことなのだけど、そもそもFuelPHPはFUEL_ENVが設定されていない時はデフォルトでdevelopmentを参照しにいってしまうらしい。
リリースミスとか恐いし、せめてFUEL_ENVが設定されていないときはproductionを参照するようにしたいよね。なのでfuel/app/bootstrap.phpを以下のとおり修正してみた。

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION);

これでFUEL_ENVが設定されていない時はデフォルトでproductionの設定が優先的に読み込まれるようになったよ。

マルチドメインしてるXserverのPHPバージョン設定する時は対象ドメインに気をつける

XseverのレンタルサーバーでPHPバージョンの変更でつまづいたのでメモ。

Xseverのレンタルサーバーでは管理画面にてマウスクリックのみでPHPバージョンが変更できます。

やり方はマニュアルにあるとおり、XserverSeverPanelのメニューにある[PHPバージョン切り替え]をクリック、[変更後のバージョン][バージョン]を切り替えるボタンを押して完了。しかしここでのバージョン切り替えるが反映されるのは[PHPバージョン切り替え]の画面右上にある"★現在の設定対象ドメイン:tigau.com"のドメインのみ。Xserverはドメイン単位でPHPバージョン切り替えられるので注意!もし対象ドメインが違うようならXserverSeverPanelのトップの左下にある[設定対象ドメインの変更]でドメインを切り替えましょう!

なぜこんなマニュアルに書いてありそうなことをわざわざブログにあげるかと言うと、自分がこれで丸一日ハマったからorzこういう設定系に弱いのねん。いつか同じような目にあった誰かの役に立つはず?