aws RDSに接続できなかった件(´・ω・`)
なんか、DB Security GroupがRDSの左リストにあるよってかいてあるんだけど、
なかった。
なんか、EC2のSecurity Groupみろって、かいてあった。
EC2のSecurity GroupのInboudのmysqlのポートを開けないとつながらない\(^o^)/
そりゃそうだよな……はまりました。。。。
Jenkinsでcsrf対策いれるとドロップダウンリストが一部選択できない(´・ω・`)w
ひっかかったので。
ここがどろっぷだうんされるんだけど、選択されなくてこまってたら
グローバルセキュリティ設定のCSRF対策をおんにしてたからだった…
えーーーーーー
オフにしたらちゃんと選択できるようになった。
phpで一日前の日付を取得する
ちょっとひかっかったのでめも。
phpでdate関数を使うと日付が取ってこれますが、一日前の日付や一ヶ月前の日付など、
その日以前以後の日付を使う時の話。
<?php //タイムゾーン date_default_timezone_set('Asia/Tokyo'); date("Y-m-d",mktime(0,0,0, date("m"), date("d")-1, date("y")))
date関数について、詳しくは、
http://php.net/manual/ja/function.date.php
mktimeの date("m"), date("d")-1, date("y")の部分を、のm,d,yの部分を並び替えてしまってあれーってなってたんだけど、これはこの順じゃないといけなくて、表示の時の整形はdate("Y-m-d", $date)のかの"Y-m-d"のぶぶんでやるらしい。
見た目が一緒なUTF-8な文字列がなぜか一致しなかったお話
躓いたのでめも。
とあるcsvファイルのあるカラムと、DBにあるテーブルのあるカラム(文字列)が一致していたら、
テーブルのidをとってきてほげほげっていうコードをrubyでかいてた。
hoge.csvの中身
hoge_id,title,hoge,hoge2,hoge3
10,あばばば,あば,あばばば,あばばばば
…
DBのテーブル
id,title,piyo,piyopiyo,piyoyoyo
1,あばばば,aba,ababbababa,ほげほげ
…
みたいな(雑だけど
で、titleの部分を一致させたいんだけど、
どう見ても一致するとこが一致しない。
謎におもって、コマンドプロンプトにその文字列はっつけたら
片方は「あばばば」って表示されたんだけど、
もう片方は(csvのほう)は「あは<3099>は<3099>は<3099>」(´・ω・`)
この<3099>ってのは、
unicodeの正規化の方式でNFD方式らしい。
http://q.hatena.ne.jp/1246722275
utf-8だったらなんでもいいってわけじゃないのね(´・ω・`)
で、治す。
教えてもらったpythonばーじょん。
import codecs import unicodedata import sys f = codecs.open(sys.argv[1], "r", "utf-8") unistr = f.read() print unicodedata.normalize('NFKC', unistr).encode("utf-8") f.close
rubyはhttp://sho.tdiary.net/20110204.htmlを参考にするといいみたい。
いまrubyでかいてるからruby版もやってみよう。
おしえてもらったこれすげーー
http://homepage1.nifty.com/nomenclator/unicode/normalization.htm
rails
railsはじめようとおもって、仮想環境構築してた。
いろいろつまったんだけどとりあえず解決した…
rbenvつかってみた。この辺りを参考にした。
http://d.hatena.ne.jp/katsuren/20121027/1351319825
http://qiita.com/items/a60886152a4c99ce1017
あと、最後にrailsサーバ起動するときに、
起動してポート3000番っていわれるんだけど、
ポート開放しても、なぜか動いてくれない。
ためしに、-p 3000をつけて起動してみたら、
動いた((((;゚Д゚)))なんだったんだ…
railsのポートが違ったんだろうか…?
アクセスランキングを作る
サイト内でアクセスランキングを作りたいのだが、私の脳内じゃぱっと実装が浮かばないので、まとめ&調べ
>こんなものが作りたい
サイドバー等で表示する、記事などのアクセスランキング。
記事本体もしくは、それに付随するキーワードのアクセス数から作成する。
Facebookのイイネ数のランキングも検討中。
>必要とすること
・アクセス数。
ただしサイトはphpで書いているが、CDNでキャッシュをかけていたりするので、本当のアクセス数はgoogleanalyticsしかしらない?
・表示がはやい
サイドバーに表示する予定なので、あまりそこの計算にリソースはかけたくない。
>必要ないもの
・リアルタイム性
秒単位でのリアルタイム性は不要だと思う。時間単位ぐらい。
>使おうと思っているもの
Google Analytics API
CakePHPからGoogle Analytics APIを使う方法
nosql
…なにがいいのかなぁ?Redis?MongoDB?
調査中。
Cakephp2系にsmarty3をいれるはなし
Cakephp2系をつかっています。
テンプレートエンジンsmartyをいれたかったのですが、Cakeを使い始めた頃(4ヶ月ぐらいまえ?)にはよくわからなくていれられなかったのですが、いろいろ整備し直すタイミングでいれてみることに。
Smartyを入れる
まずは、公式から、smartyをダウンロード。
この、libsディレクトリをsmartyにrenameして、
app/Vendorの中に置きます。
次に、Smartyをcakephpで使うためのSmartyViewをつくります。
app/Viewの中に置きます。
参考:CakePHP 2.0.0 Beta && Smarty 3
で、ここのソースコードが化けてるので、http://www18.atwiki.jp/javascripter/pages/26.htmlを参考に。
<?php class SmartyView extends View { function __construct (&$controller) { parent::__construct($controller); if (is_object($controller)) { $count = count($this->_passedVars); for ($j = 0; $j < $count; $j++) { $var = $this->_passedVars[$j]; $this->{$var} = $controller->{$var}; } } if(!App::import('Vendor', 'Smarty', array('file' => 'smarty'.DS.'Smarty.class.php'))) die('error Loading Smarty Class'); $this->Smarty = new Smarty(); //$this->subDir = 'smarty'.DS; $this->ext= '.tpl'; //$this->Smarty->plugins_dir[] = VENDORS.DS.'smarty'.DS.'plugins'; $this->Smarty->compile_dir = TMP.'smarty'.DS.'compile'.DS; $this->Smarty->cache_dir = TMP.'smarty'.DS.'cache'.DS; $this->Smarty->error_reporting = 'E_ALL & ~E_NOTICE'; $this->Smarty->debugging = true; $this->Smarty->compile_check = true; $this->viewVars['params'] = $this->params; $this->Helpers = new HelperCollection($this); } protected function _render($___viewFn, $___dataForView = array()) { $trace = debug_backtrace(); $caller = array_shift($trace); if ($caller === "element") parent::_render($___viewFn, $___dataForView); if (empty($___dataForView)) { $___dataForView = $this->viewVars; } extract($___dataForView, EXTR_SKIP); foreach($___dataForView as $data => $value) { if(!is_object($data)) { $this->Smarty->assign($data, $value); } } $this->Smarty->assign('View', new View(null)); ob_start(); $this->Smarty->display($___viewFn); return ob_get_clean(); } public function loadHelpers() { $helpers = HelperCollection::normalizeObjectArray($this->helpers); foreach ($helpers as $name => $properties) { list($plugin, $class) = pluginSplit($properties['class']); $this->{$class} = $this->Helpers->load($properties['class'], $properties['settings']); $this->Smarty->assign($name, $this->{$class}); } $this->_helpersLoaded = true; } } ?>
レイアウトファイルを置く所を、app/View/Layoutsの中にしたいので、
$this->subDir = 'smarty'.DS;
をコメントアウトしています。
次に、default.tplをつくります。
<html> <head> <title>{$pageTitle}</title> </head> <body> {$content_for_layout} </body> </html>
後は、AppControllerにsmartyが使えるようにしていしてあげればおっけー。
app/Controller/AppController.php
class AppController extends Controller { public $viewClass = 'Smarty'; }
これで、smartyがつかえるようになりました!