Archives
コーディングリハビリ06
リハビリその3
今回は、バブルソート
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
習熟度が低いのでPerlとPHPが同じ内容になる。
pythonが好みだけど毎回2つリストを生成してmapしてるのでコスト高そう。
すんなり1つのリストだけでできないものか……
コーディングリハビリ05
昨日の文字チェックをPHP以外で試す。
与えられた文字列が全てユニークな文字で構成されているかのチェック。
PHPは前回やっているので、今回は掲載無し。
Perlでは、
Pythonでは、
Rubyでは、
文字列のまま操作するなら指定の文字が同じ位置にあるのか先頭から検索と最後尾から検索でインデックスが同じか調べる。
配列で操作するなら、重複不可の配列を作って要素数が変わってないか調べる。
pythonが一番スッキリしているようだけど、やっぱりRubyかな
コーディングリハビリ04
今回は与えられた文字列が全てユニークな文字の構成かどうか調べる。
そういう問題を出されてスマートに答えられなかったので、調べた。
1,回答した内容を修正したもの
2,PHPのリファレンス見てて思いついた方法
3,文字列のままチェック
4,PHPの関数とか出てこなくて回答できなかった、頭の中にあったロジックを具現化したもの
配列に変換してshiftしながらチェックする方法
どうも実行してみると2や3が早いようだ。1文字でもユニークでなければFalseにする3が内容によっては最速
やはり何回も配列を操作するとコストが高くなりますね。模範解答が欲しい。
コーディングリハビリ02
リハビリその2
今回は、ファイル読み込みとその時の簡単な例外処理
読み込むテキストファイルの内容は以下の通り、
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
うるう年の判定処理は適当。pythonが一番しっくりくるかな。
コーディングリハビリ01
一定時間未満の習得状態だと、日々使ってないとすぐ書けなくなりますね。プログラミング言語というのは。
paizaなんかの超初級問題も関数のリファレンスとか見ながらじゃないと全く解けない。
という事でリハビリ。
今回は標準入力。
PHPでは、
Perlでは、
Pythonでは、
Rubyでは、
標準入力が「gets」だけで取れるRubyはダンディ。
Laravel4触り始めました
Laravel4がこれから流行るかなーって思ってちょっとチュートリアル(クイックスタート)なんかを触り始めました。
テンプレートエンジン用ファイル上でのコメントアウトの書き方を理解していなくて、変数見つからないエラーとか出しまくってた。
{{– コメントアウトしたいコード –}}って書かないといけない。ていうか、そもそもの外で変な書き方してたのが悪い。
あと、migrationの使い方全然理解していないのでそこで詰まった。
検索フォームの値を受け取ってモデルに検索処理投げてレコードオブジェクト(モデルイングタンス?)受け取る処理はコントローラーに書くの?それともViewファイル?
わかりません。。。
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関数使って件名に含まれている半角カナを全角に変換して誤魔化す。
以上、うんこメモでした。
sshで、ぷごふぁ
WordPress勉強してます。テーマについてはだいたい分かったので、自作テーマとか作っていきたい。
ゆくゆくは案件事例的なぽーとふぉりおサイトを作ろうと、とりあえずさくらVPSを立てて、SSHの
設定をする。
契約だけしてながらく放置していたので、OS再インストールしてSSHで接続しようとしたらエラー出て
ぷごふぁ!ってなった。調べたら出てきました。
参照: http://qiita.com/wnoguchi/items/690f3f4651f8f11e4ed3
要は以前に接続した際のゴミが残っていて再インストールしたのでIPとポート同じなのに鍵あわないじゃん!
て言うことでした。やっぱりデータを消せばいいだけだったんだ。初期化するコマンドとかないんかな?
Qiitaは素人同然の自分には本当に助かる。
印刷用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リファレンスをさっと見ても
そのことについての記述なかったし。んもう!