Trouble-Memo
Mac Account Broken
Macのデータ移行時のトラブル
- Macデータ移行した
- アカウントの権限を壊してしまった。
データ移行した
TimeMachineを使うと時間はかかるが何も考えなくても諸々移行できるので便利。用途不定になってしまったHDD(1TB)があったのでそれを新たにTimeMachine用にすることにした
アカウントの権限を壊してしまった。
データ移行のついでにアカウント名やアカウント情報を変更したら、管理者権限が外れてしまった。まじ焦った。 権限変更やアカウント情報変更用アカウントを用意してそのアカウントでログインして対象アカウントの情報を変更すべき。
管理者権限が外れてしまったアカウントを復旧させる方法
- シングルユーザーモードで起動する(cmd+s押しっぱなし)
- rootユーザーでのターミナル操作になる
/sbin/mount -uw /
を実行してディスクへの書込許可状態にするrm /var/db/.AppleSetupDone
を実行してセットアップ完了フラグファイルを削除- reboot実行
上記で最初のセットアップウィザードが始まるので、そこで新規に管理者権限を作成する
その後はその新規管理者権限でログインし、権限が壊れてしまった対象アカウントを再度管理者に設定する。
これでめでたしめでたし。
Vagrant、最終的にはEC2にAnsibleでWordPressを構築を試みる2
・botoが使えないってエラーになる。
→次のURLで解決 https://groups.google.com/forum/#!topic/ansible-project/ftlmfIC1DHk
つまり、ansibleがなぜか現在動いているバージョンのライブラリを参照出来ないっぽいのでこれまたなぜか
hostsにどこのpythonを使っているのか書いてあげる必要があったということ。なぜansible.cfgではないのか
・契約アカウント?で試してたらCredentialエラーが出てて、試しにIAMアカウント作成してそのIAMアカウントを
使ったら成功した。なんで?
・ApacheのVHOSTのRootディレクトリが700だったので403エラーで表示されなかった。755に変更して解決。
・VirtualHostの設定を行う場合、どこかに「NameVirtualHost」の記述が必要。
というより、NameVirtualHostの記述内容とその後のVirtualHostディレクティブの内容に整合性がないといけない。
なので「NameVirtuakHost *:80」の記述があれば、その後<virtualhost *:80>VirtualHostディレクティブが
ないといけない。
もしも<virtualhost {{hostname}}:80>みたいな記述をしていた場合、NameVirtualHost {{hostname}}:80の宣言もないといけない。
整合性が撮れてないと、宣言が足りないとかそんなVirtualHostディレクティブはないとか警告が出る。
・Ubuntuに入ってるApache2のVirtualHostの有効化無効化
sites-availableディレクトリにVirtualHost設定書く
a2ensite {{vhost_filename}} で有効化、a2dissite {{vhost_filename}} で無効化
・Hostの指定が足りない!?
Could not reliably determine the server’s fully qualified domain name, using for ServerName
こんなエラーが出る。hostsファイルに127.0.1.1 にhogehoge.localを追記してあげたら直った
つまり、hostsファイルにhostnameが127.0.1.1で定義されている場合、Apacheが名前解決のエラー出すので、
そこに{{hostname}}.localを追記する処理追加
・Ansible用MySQLの設定追加
Ansibleでmysql_userモジュールを使ってユーザーを追加する際に、MySQLが外部サーバーの場合は(Webサーバーから接続用ユーザーの作成の場合は)
host=%,host=localhostの記述が必要、同時に作れるのか試してない。自分は別のtaskとしてそれぞれ実行(同じユーザー名で別hostのユーザーを2回作成)
リモートユーザーにあたる側(今回はWebサーバー側)にはmysql_clientのインストールが必要
低レベルプログラマだからJavaScriptで知らなかった事
JavaScriptで知らないせいでハマったところなどなど
Chromeで確認した時に動いたせいで気付かなかったんだけど、イベントトリガの関数定義で引数にeventオブジェクトを明示して渡さないとIE系では正しく動かない。これはChromeが異常なのかも。
そらそうだという話なんですが、フォームの値は基本テキスト型だからJSで数字として扱って計算したい場合は数字型に変換が必要。そうしないと足し算しようとしたのに文字列連結になってしまう。
JS数字計算で2進数から10進数への変換誤差がでて死ぬる。
100+10.1とかやろうとすると物凄い小さい数字が誤差として丸められず残る。
NginxでPermission denied
開発環境
OS:Ubuntu12?
Webサーバー:Nginx
という環境下でWindowsでホストしていたお客さんのサイトを持ってきて改修しようとしたら、
jsやらcssやら画像やらが軒のみPermission denied でエラーでて表示されない。
ググってみたけれども該当するものがない。
※自身のテスト用のものなどはちゃんと画像等問題なく読み込める。オーナーや権限も問題ない
んで、ざっとファイル見ててなんとなく気になって「Thumbs.db」を削除したら表示されるようになった。
Nginxのセキュリティ機能?なのでしょうか。仕組みは調べていない。ちゃんと勉強が必要ですね。
追記:どうも原因は別にあったかも。再現できない。
FuelPHPで文字化けーアップロードファイル名とメール添付ファイル名
FuelPHPをUbuntu上で作成してWindows環境(Win2003、IIS6)に納品した結果、
Windowsのクライアントからファイルアップロードするとアップロードされたファイル名が文字化けしている!
(PHPの内部エンコードがUTF-8だけどWinがShift-JISだから)
→アップロードは送信メールに添付したいがためにしているだけなので文字化け解消しなくても良かったのですが、後でアップロードフォルダ内の整理や確認等人力で行う場合に視認性が悪いので無理やり対応。
FuelPHPのUpload::save()を行う前に
ってやってアップロードファイル名をエンコードする。
弊害としては本来は内部エンコードのまま処理が進むはずだったので、同名ファイルが有る場合に枝番を付加する処理なんかが正常に動作しなくなる。
これでWindowsサーバーのフォルダに読める文字のファイル名でアップロードされる。
最初エンコードをSJISにしてたけど、CP932にしたら、①みたいなMS拡張の機種依存文字も大丈夫になった。
本当はもっとスマートな方法が欲しかったんだけど、ファイルを置くところの処理がCoreファイルで作られていて入り込む余地が無いように思えた。それとも
とかやったら良かったのかな?
文字化け状態でアップロードされたファイルをメールの添付に加えると添付ファイル名も文字化け!
(ま、そりゃそうですね)
→上記1の結果を受けてメール送信のメソッドに引数として添付ファイル名を渡す。その処理は何も加工しない。
メール送信用のメソッドの中で、引数で受け取った添付ファイル名をFuelPHPのmailに渡す処理を加工
それでも、メールヘッダがISO-2022-JPなので、機種依存文字の類はメールを受信した時に「?」とかになってるけど、それはしょうがないよね。
メールの件名が文字化けすることがある!
→犯人は半角カナ。使わないで!件名はFuelPHP側で送信時にISO-2022-JPに変換してるっぽいので、mb_convert_kana関数使って件名に含まれている半角カナを全角に変換して誤魔化す。
以上、うんこメモでした。
印刷用CSSでハマった
この間、印刷用CSSを回収していて「そんなん知らねーよ!」ってなった事。
問題のCSS: page-break-before
いやコレでね強制改ページできるんで特定のdivタグのところで改ページさせようと
していたんだけど、ChromeではなるのにIE(対応対象はVer 9)だと改ページしてくれない。
IEでも解釈されるはずなのになんで?ってなって諦めてたんだけど、調べてたら出てきた。
IEの場合はpage-break-beforeが適用される要素がページをまたぐような位置にいる場合は
無視されるそうです。で、ちゃんとは調べてないのですがpage-break-beforeの場合はその
要素がpage-break-afterの場合は次の要素が判定基準になるっぽぽぽぽいです。
対処方法としては改ページしたい場所にからのdivを入れてその要素に対して改ページ指定の
cssを適用させるって方法。Web素人には分からんよ。Web上でCSSリファレンスをさっと見ても
そのことについての記述なかったし。んもう!