photoBy: http://designup.jp/wp/wp-content/uploads/2013/11/…
bootstrap3でドロップダウンメニューを使おう。
hoverで開きたい
マウスをクリックでなく、カーソルをあわせるだけでドロップダウンメニューが開くようになります。
・CSSを追加するだけ!
.dropdown:hover .dropdown-menu {
display: block;
}
右寄せしたい
ポップアップされたメニューを右寄せしたい場合は、.pull-right をつけます。
<div class="dropdown"> <a href="/users/mypage/"><?=u('name');?> さん <span class="caret"></span></a> <ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dLabel"> <li class="t-l" style="width:100%;"><a href="#" style="padding:10px;">hogeman</a></li> <li class="t-l" style="width:100%;"><a href="#">ageeman</a></li> </ul> </div>
クリックしたらリンクを移動させたい
右寄せしたいと同じタグで、 tarouさんをクリックしたら /users/mypage/ に移動するようになります。
↧
twitterbootstrap3 dropdown menu を hoverで開く。また、右寄せする
↧
楽天終了へ。LINEの新サービスが恐ろしすぎて日本IT企業が韓国に乗っ取られる・・・
photoBy: http://www.landerblue.co.jp/blog/wp-content/uploa…
メルマガ終了へ
LINEビジネスコネクトが始まる。
http://linecorp.com/press/2014/0226691
今までは企業がメルマガを送信していたが、スパム業者がいるためメールが迷惑メールに入ったりしていた。
それの代わりが LINEビジネスコネクトである。
開封が見える
確実に見られる
APIを公開しているので、開発者も簡単に作れる
イラストレーターバブルへ
オタク、ひきこもりのイメージが強いイラストレーターが、LINEのスタンプを販売できる。
https://creator.line.me/ja/
Skype、050Plus、楽天電話が逝く
面倒な初期設定や基本料金・初期費用は一切不要
固定への通話1分2円・携帯への通話1分6.5円の低料金で利用可能
複数の大手回線事業者のプレミアム回線を採用、クリアで途切れにくい高音質を実現
の新サービスが始まります。
マジで携帯会社もやばいんじゃないの?
競合になるとわかりつつも、ソフトバンクやAU、ドコモはLINEアプリを外すことができない。
携帯会社が韓国企業に飲み込まれる日も違いかも。
↧
↧
【画像あり】 東大生の家庭の57.0%が年収950万円以上
1 : 卓也 : 2014/03/02(日)
東大生の家庭の年収分布図。大学生の子がいるとみられる世帯全体に比して,富裕層に偏っている。 最高学府の学生の階層的閉鎖性。 https://twitter.com/tmaita77/status/440055849868726272
3 : 静子 : 2014/03/02(日)
つうか一割は350万の貧民じゃん こいつらの将来に幸あれだわ
6 : 明沙美 : 2014/03/02(日)
このスレの三分の一は、最高学府の意味は~という低学歴のレスで埋まる
7 : 亜津子 : 2014/03/02(日)
18までに日本のトップ集団に行くためには金が必要よ
8 : 一博 : 2014/03/02(日)
世帯年収950万は富裕層といわないでしょ
9 : 暢弘 : 2014/03/02(日)
350万円以下の家庭から9%も入学出来てる事の方を重視してやれよ
11 : 麻実子 : 2014/03/02(日)
卒業生の平均年収2000万ぐらい?
12 : 浩子 コンヒーロ(やわらか銀行) :
>>1 私立高校プラス鉄緑会で月10万コースでやっています
13 : 由紀 : 2014/03/02(日)
>>9 公立高校からでも、ドラゴン桜読んで勉強法とおすすめ参考書の情報をゲットして勉強すれば東大に合格できるということだよな。
15 : 優紀子 : 2014/03/02(日)
だから何だよとしか思えない。 塾行ったり努力してるということだろ。
16 : かな : 2014/03/02(日)
この前東大卒の上司と海外出張行って 換金した金日本円で約7500円残ってたから 最終日までに使い切りたいって話したら、 千円単位のことにこだわって 三十超えて何中学生みたいなこと言ってるんだって説教された。 やっぱり、子供の頃から金持ちだったんだろうな。 貧乏人の俺とは金銭感覚が違ってたわ。
17 : 里織 : 2014/03/02(日)
22.6%の子が頑張った分、富裕層だったのに下層に転落する子が出るんだね
18 : 義仁 : 2014/03/02(日)
950万で何故区切る 950万以上を詳細にしろよ
19 : ちづる : 2014/03/02(日)
>>15 塾いけたり、四年間東京で暮らせる仕送り出来る層しか行かなくなってるから問題なんだろ
21 : 芽衣 : 2014/03/02(日)
年収950万以上とかずいぶん富裕層の定義が低いな
22 : 美奈 : 2014/03/02(日)
>東大生の家庭の57.0%が年収950万円以上 一般家庭の22.6%と比べ富裕層が多すぎると話題に 東大生の家庭に富裕層が多いんじゃなくて、富裕層の家庭に東大生が多いんだよ 順序が逆
23 : 睦美 : 2014/03/02(日)
勉強も芸術もカネなきゃできないからな 味噌舐めるのがやっとだった俺んちは早くから働くのが親孝行だった 勉強が親孝行の家はうらやましい、国のためにがんばれ
24 : 泉美 : 2014/03/02(日)
高所得層が国公立大の安い学費を享受するのはどうなんだろうね 世帯所得ごとに学費を設定してもいいんじゃね
25 : 理加 : 2014/03/02(日)
350万未満の家庭がすごいね
27 : 浩子 どどんスズスロウン(チベット自治区)[sage] : 発言回数 : 2 回目
富裕層 親に小学生のころから勉強しろしろ急かされてる 底辺 蛙の子は蛙 妥当だろ
28 : 絵里夏 : 2014/03/02(日)
祖父も父親も、兄、姉、弟も東大・京大なのに俺だけ私立Bラン… まじで惨めでやんす
29 : 明弘 : 2014/03/02(日)
東大行くのに先天的な能力なんていらないしな 環境整ってるかどうかだから親の年収が影響しない方がおかしい
30 : 裕哉 : 2014/03/02(日)
>>24 税金を多く納めてるからむしろ高所得者が国立に行くのが当然
31 : 宣夫 : 2014/03/02(日)
>>24 東大はそれやっていいかも。つうかタダでいい。
33 : 満 : 2014/03/02(日)
そもそも公立の小中学校の教師のレベルが低すぎる所から問題 親が塾にカネを出せるかどうか、だけでも小中学校の時点で相当な格差が生まれる
36 : こころ : 2014/03/02(日)
>>35 低所得層の生徒が国公立すら入れなくなると 英米みたいな格差社会一直線だな
37 : ま : 2014/03/02(日)
350万未満が相当数いるところが日本の救い
39 : い : 2014/03/02(日)
父親高卒、母親中卒から東大行ったヤツを知ってる 年収は知らんが高くはなかっただろう
40 : 達郎 : 2014/03/02(日)
これのどこが富裕層なの?? 家庭の年収がって書いてあるけど 新卒3年目の金融機関のものだけど、彼女と合わせたら余裕で1000万超えるけど 別に俺等が高いわけじゃなくて、みーんな超える あえて言えば富裕層の定義が間違ってる
41 : 理聖 : 2014/03/02(日)
教育するだけなら大して金なんてかからんよ。 問題は貧困層の教育への無関心。
42 : 知咲 : 2014/03/02(日)
無関心っつっても能無いのがやるのはゲーマゾ 時間と金の無駄 高学歴ニート、非正規がこの類だろう
43 : 人嗣 : 2014/03/02(日)
むしろ57パーしかいないってのがすごいだろ
47 : 俊 : 2014/03/02(日)
平均年収 20歳~24歳 男 260万円 女 224万円 24歳~29歳 男 367万円 女 292万円 50歳~54歳 男 634万円 女 279万円 画像 国税庁
49 : しいな : 2014/03/02(日)
>>47 無知で申し訳ないけどこれって無職の人も入ってるんでしょ? んで0が多いから低いんじゃないの? アルバイトとか きちんと社員だけの年収ってないの?
50 : 米子 : 2014/03/02(日)
男で 1番多いのは 製造業な 画像
51 : 孝正 : 2014/03/02(日)
小学校からの一個上の先輩は小学校の時に父親死んじゃって 母親が小学校の事務 バアチャンがスーパーの清掃で 金貯めて県内一の私立行って学年5番だったけど1浪して(先生は現役で名大医にしろって薦めた) 東大理三行ってで今医者 (学生時代家庭教師のバイトしまくって8割だか母ちゃんとバアチャン に仕送りしてた) メチャクチャハングリー精神あったわ
53 : 政光 : 2014/03/02(日)
勉強の大事さを、底辺家庭では教えることができない 俺も早くやってればなあ・・・
55 : 昇 : 2014/03/02(日)
これはよくわかるわ 金持ちは我が子を幼い頃から塾通いさせる 幼い頃から塾で問題の解き方をシコシコ練習させればたいがい高学歴を手に入れられる 日本のエリートなんか単に受験だけエリートだからな
58 : 孝尚 : 2014/03/02(日)
他の条件が同じなら金があったほうが絶対有利だよね。
59 : 瑠美 : 2014/03/02(日)
いつの時代も富裕層の家庭の教育水準が高いのは常識 経済成長で中間層の所得向上に伴って差が分かりずらくなっていただけで、最近また教育格差が昔の姿に戻ってるだけ
60 : 未緒 : 2014/03/02(日)
一般郡の選定がおかしくね? 40~50歳までの世帯を一般郡としてるが 世帯主(男)が20後半で結婚、30歳で第1子出産と考えると 子が大学生になるのは世帯主が49歳から52歳、第2子の場合や浪人生の場合もっと年齢は上がる 日本の賃金は年功的だから40歳と50歳では違う だから一般郡を45歳~55歳とすれば、年収950万以上の層は増加するだろう そもそも、50歳で世帯年収950万以上ってそんなにハードル高くないぞ 夫正規雇用で年収800+妻パート150万とか 夫婦で正規雇用なら年収500万で達成だもんな
↧
【画像】 元シブがき隊ふっくんの娘・布川桃花のモデルオーディション合格に歓喜!
1 : 由都 2014/03/02(日) 20:05:31.30
ふっくん、娘・布川桃花のモデルオーディション合格に歓喜! 「誰のDNAを受け継いたのか」 元シブがき隊のふっくんことタレントの布川敏和が28日、長女でモデルの布川桃花がモデルオーディションに合格したとして、 自身のブログで歓喜の声をあげている。 桃花は女性ファッション通販サイト・ファッションウォーカーの専属モデルを決めるオーディションで“グランプリプリモ”を獲得。 そんな娘のことを自身のブログで報告した父・敏和は、娘が今回のオーディションを自ら探して応募し、1人で受けに行ったことを明かし、 「僕らや マネージャーの力を借りずに、自らの道を進んで行くという、行動派で、勇敢かつ逞しい面も持っています」と誇らしげに紹介。 「だれのDNAを受け継いたのかと、我が娘を感歎し誇らしく思う 親父で御座います」と喜ぶ父は、 「ファッション好きの本人にとって、とてもとても嬉しい事でしょう~!おめでとう! 桃花~」と祝福するとともに、 「これからも 願晴って、素敵に輝いた道を歩んで行って下さい。パパは いつでも応援しているのだぁ~」とエールを送った。 また、桃花本人も自身のブログでオーディション合格を報告しており、 「心臓が飛び出そうになるぐらい嬉しくて、何度も何度も見返しました。笑」と合格発表を見た時の感想をつづり、 「向上心をもって、ここからまた頑張ろう。これからも応援してください」とファンに呼びかけた。 http://www.rbbtoday.com/article/2014/02/28/117358.html
4 : ありさ 2014/03/02(日) 20:06:52.00
ハッセじゃん
5 : 豪人 2014/03/02(日) 20:07:04.93
韓流アイドルみたいだな
7 : 陽 2014/03/02(日) 20:07:47.62
布川も妹、長女にしろ目が一族だなw
9 : 敬太 2014/03/02(日) 20:08:07.35
どうみても仕込みです、本当にありがとうございました。
12 : 尚樹 2014/03/02(日) 20:09:05.26
坂口なんとかに似てる
13 : 仁美 2014/03/02(日) 20:09:23.78
オカマにしか見えない
15 : 常徳 2014/03/02(日) 20:10:00.46
ぶっさwコミュ抜けるはw
16 : 美祐紀 2014/03/02(日) 20:10:00.65
女装した自演乙
17 : 元秀 2014/03/02(日) 20:10:05.02
2位以下の画像がみたい
18 : 充子 2014/03/02(日) 20:11:53.54
ブサ過ぎ 確実に親の力だろ
19 : 真人 2014/03/02(日) 20:12:24.34
自演乙じゃん あいつ今女装モデルやってんのか
20 : 一夫 2014/03/02(日) 20:13:33.23
グランプリ取れる顔じゃないだろ
24 : 功司 2014/03/02(日) 20:14:42.91
神埼さんとどっちか選べって言われたら迷うレベル
25 : 未千香 2014/03/02(日) 20:15:01.21
こんなんで実績になるのかよプロフにクソみたいな称号加えるとか
28 : 咲子 2014/03/02(日) 20:15:48.36
これは優勝して当然
33 : 小夜 2014/03/02(日) 20:17:52.08
剛力とどっちがゴリ押し度強いんですか?
39 : 優依 2014/03/02(日) 20:20:21.94
石川秀美に似たのか
41 : 英一 2014/03/02(日) 20:21:38.22
アイドルの暴露ネタの番組があると絶対出てるよね というかそれでしか見ない
44 : こずえ 2014/03/02(日) 20:22:47.12
何のオーディションなんですかね
47 : 次未 2014/03/02(日) 20:25:05.43
嫌儲のおっさん達はふっくんの妹を思い出して感慨に耽ってる筈
48 : 祥太 2014/03/02(日) 20:27:23.08
CHARAの娘も雑誌のモデルになってたよな 魅力のある2世ならいくらでもゴリ押しすればいいけど ほとんど箸にも棒にもかからない奴ばっかりだな
49 : 尚之 2014/03/02(日) 20:30:24.00
ふっくんだな こんなのより野々村誠の娘はやく
50 : 尚之 2014/03/02(日) 20:32:01.27 発言回数 : 2 回目
>>48 母親のゴリっぷりがマイルドになってまあまあじゃないか
53 : 淳弥 2014/03/02(日) 20:33:12.54
女装したふっくんにしか見えん
54 : あおみ 2014/03/02(日) 20:33:20.26
この顔で? どう見ても通常の審査とは別の力学が働いてるだろw
55 : 富有 2014/03/02(日) 20:34:17.71
ふっくんってこういうオーディションで娘にグランプリを獲らせるほど力あるのか
57 : 祐太朗 2014/03/02(日) 20:36:20.52
でも整形とかしてないぶんえらい
59 : 由貴子 2014/03/02(日) 20:42:29.87
通販サイト・ファッションウォーカーもよい宣伝になったな
60 : ゆう子 2014/03/02(日) 20:48:03.83
シブがき隊ってネーミングセンス ダサ過ぎだろwww おっさん達に聞きたいんだけどさ、昭和ってなんでこんなネーミングセンスダサいの?
61 : 優志 2014/03/02(日) 20:49:33.07
妹いたろアイドルグループにいたやつ
62 : 志緒里 2014/03/02(日) 20:49:34.01
雑誌の売名と娘の売名のウィンウィンだな
63 : 布紗 2014/03/02(日) 20:51:14.83
顔はうーん モデルってことはスタイルいいのか?
64 : 左知子 2014/03/02(日) 20:51:28.13
娘シリーズでは 岡田圭右の娘か関根勤の娘一択
65 : 裕允 2014/03/02(日) 20:52:30.09
は? 野々村まことの娘が最強
66 : 文 2014/03/02(日) 20:53:57.69
ちょっと流石に整形くらいさぁ
69 : 嵩 2014/03/02(日) 20:55:33.66
自演乙雄一郎を連想したのは俺だけじゃなかった
71 : 里香 2014/03/02(日) 20:56:47.50
ブスすぎワロタ 芸能界は二世天国だな
74 : 達哉 2014/03/02(日) 21:06:15.31
ソフマップスレにいつも貼られるテンプレ画像集にぶちこまれるレベル
75 : 和男 2014/03/02(日) 21:12:05.47
ふっくんの実家って川崎だったよな?
77 : 宏三 2014/03/02(日) 21:22:18.86
世の中うまくいかんもんだな
78 : 沙穂 2014/03/02(日) 21:36:04.65
完全に出来レース コネって素晴らしいね
↧
【画像あり】 ホンダS2000後継車の噂? 新型NSXのコンパクト版で価格は500~600万円程度
1 : 智 2014/03/02(日) 11:09:53.89
ホンダが小型バージョンのNSXを検討中!? 2015年に発売が予定されている新型ホンダNSXですが、そのNSXよりもボディサイズ小さく、価格も安く設定される小型バージョンのNSX計画が再度検討されていると米自動車メディア Motortrend がリポートしています。 motortrendによると、2008年のリーマンショック以前にホンダは新型NSXモデルを2タイプ開発していたようで、1つはNSXの後継車で、もう1つは仮称ミニNSXと呼ばれるモデル。 このミニNSXは、その計画が世間に知られる以前に中止になっていたようですが、その計画が再度検討されているとのこと。 ミニNSXと言うとホンダが2009年まで生産していたS2000を後継車を連想するかもしれませんが、このミニNSXは新型NSXをそのまま小さくした感じのもので、ミッドエンジンにスポーツハイブリッドSH-AWDシステムが採用されるとのこと。 新型NSXの莫大な開発コストを回収する事を考えても新型NSXのコンポーネントを利用した車を作るのは理にかなっています。 このミニNSXがリリースされるとすれば価格は50,000?60,000ドル(約500?600万円)程度で、その発売時期は新型のホンダNSXが発売されてから1?2年後になるだろうとのことです 新型ホンダNSXの価格はポルシェ911並みになると言われていており、庶民はちょっと手を出しにくい価格帯。この小型NSXを待ち望むファンは世界中に多そうです。 http://www.j-sd.net/honda-nsx-5/ S2000後継車(NSXのコンパクト版) NSX
2 : 今日子 2014/03/02(日) 11:10:27.44
CR-Zとは何だったのか
4 : 純代 2014/03/02(日) 11:11:13.48
日本車って伝統もなければ独自性もないよね その時々の流行に乗って作ってるだけ だからBMWやアウディみたいなドイツ車には絶対に勝てない
5 : 咲子 2014/03/02(日) 11:11:35.75
S2000の面影の微塵もないけど後継機なの?
7 : 典明 2014/03/02(日) 11:12:06.97
NSKと殺し合いを始める訳か
8 : 浩之 2014/03/02(日) 11:12:17.37
ロータス・エリーゼのような筋肉
10 : 幸穂 2014/03/02(日) 11:14:57.66
NSXはダサいからNG
11 : 彩乃 2014/03/02(日) 11:15:24.08
マツダ顔なんだけど?
12 : 由美 2014/03/02(日) 11:15:52.27
S660を明日出せ
13 : 正代 2014/03/02(日) 11:18:26.57
HVにDCT搭載でSモード限定でリッター6キロでどうだ
14 : あづみ 2014/03/02(日) 11:24:40.44
だからこの前話題になってた>>12のいうようなモデルは”S”を付けるな あれはBEAT2だ BEATはSの系譜から独立した立派な家系 ”S”の直系は”S”だけ ていうかさっさと出してください うちの動態保存中の高根沢04モデルが全然ガレージから出してやれません
16 : ちか 2014/03/02(日) 11:35:26.83
せめてハッチバックにしてくれりゃ買うんだが 2シーターなんて趣味人しか買えないだろ
18 : 俊輔 2014/03/02(日) 11:37:44.55
高回転エンジンはトルクや燃費が犠牲になって他の車に流用できないからムリだ、と聞いたことがある。 もしかして、その為に500万なんて価格にしてるのか?
19 : 亮一 2014/03/02(日) 11:38:29.32
以前は車好きだったのに 金が無さ過ぎて買えない車の事なんかどうでも良くなってきた
22 : ちか 2014/03/02(日) 11:41:05.18 発言回数 : 2 回目
つかNSXのコンポーネント流用とかいってるけど 小さくするだけで値段半額になんかならないだろ どっか削らないと 削るんならエンジンだろうけど、小さいのを新しく作るのか?
24 : 力弥 2014/03/02(日) 11:43:30.43
ってか、後期の非リトラNSXを、今の技術でまた作れよ 追加要素としちゃ、ナビ収容用の2DINスペースとパドルシフトDCT程度で、さ
26 : 捺葵 2014/03/02(日) 11:59:43.44
ちょっと高すぎやせんか 競合車から考えて250~300万だろ常識的に考えて
28 : 瑞紀 2014/03/02(日) 12:24:49.65
リコールの話題ばっかだから逸らしにきたかな
29 : 美喜 2014/03/02(日) 12:33:24.70
ハイブリッドって遅そうなんですけど
30 : 輝幸 2014/03/02(日) 12:39:53.84
>>4 ハイブリッドなんて超独自性じゃないか
32 : 映 2014/03/02(日) 12:48:16.79
>新型ホンダNSXの価格はポルシェ911並みになると言われていており NSXが高いのはまあわかる S2000が高いのはどうなの?
34 : 直治 2014/03/02(日) 13:20:48.04
MRなのにS2000の後継って
36 : ヨンハ 2014/03/02(日) 13:25:19.83
ロータスエリーゼとヱヴァンゲリヲンをミックスしたみたいなデザインですね
37 : 俊輔 2014/03/02(日) 13:41:10.76 発言回数 : 2 回目
それよりトヨタは86の上位版を出せよ。 ちゃんとグリップして走れる奴。
38 : 真心 2014/03/02(日) 15:57:48.21 発言回数 : 2 回目
>>37 スープラ後継が出るから安心しろ BMWとコラボするらしいしLFAの値段超えるかな
39 : 寿洋 2014/03/02(日) 16:30:28.87
完全にアメリカ向けデザインだし 品質最悪なホンダ車なんてこの先売れる要素ないな
42 : 希海 2014/03/02(日) 18:33:09.52
>>4 タイプR郡やS2、NSXは独自性あるな
43 : 希海 2014/03/02(日) 18:41:46.35 発言回数 : 2 回目
>>24 固定ライトのNSXもかっこいいが、 DCTぶち込んだら車のカタチ変わりそう
44 : 裕哉 2014/03/02(日) 18:46:07.59
>>19 わかる 買えないのにスーパーカーとかのスペック頭に入れても虚しいだけだった
45 : 弘樹 2014/03/02(日) 18:47:58.85
ミニNSXでルマン24hに参戦しようず!VWシロッコを負かせ!!
47 : 希海 2014/03/02(日) 18:56:20.92 発言回数 : 3 回目
買えないと思ってたら買えない いつか買ってやると思えばいい 思考は具現化する
48 : 悠介 2014/03/02(日) 19:00:11.22
コンパクトミッドシップなら、シンプル・軽量構造にしてつくれよ。 日本車のことだからいちいちゴチャゴチャ付け加えるんだろうなぁ。
49 : 笑美子 2014/03/02(日) 19:11:11.00
マツダチックだなーこのデザインだとプレスに金と手間かかりすぎると思うんだけど? 市販タイプは直線的なパキパキした感じになりそうや
51 : ゆう 2014/03/02(日) 19:17:35.17
500~600万とか有り得ねえな セカンドカーにそんな金掛けられるわけねえだろ
52 : 希海 2014/03/02(日) 19:19:54.53 発言回数 : 4 回目
アメリカ人が見ると、マツダはアキュラチックだなーとなるわけだが。 スーパーカーは金と手間がかかるものだ。 初代NSXもそうだった。
53 : 利一 2014/03/02(日) 19:21:32.31
>>50 エンジン以外を供給してもらって自前のエンジン積めばいいのにな
55 : 郁恵 2014/03/02(日) 19:25:39.51
以前のNSXって小さいよな 5ナンバーかよって思うくらい
56 : 希海 2014/03/02(日) 19:26:53.88 発言回数 : 5 回目
五角形グリルはマツダが先じゃないよ 次期NSXのデザインした人は今もホンダにいる 日本人
58 : 健太 2014/03/02(日) 19:32:20.62
なんでS2000で500万設定なんだよ 300万~400万で販売しろよ
59 : 希海 2014/03/02(日) 19:33:39.77 発言回数 : 6 回目
初代NSXはFDより一回り大きいくらいだからな 全幅は181センチあるがなんせ低い車高が小さく見せる 横から見ると小さく見えない 次期NSXの方が全長が短いしな 今の車たちは巨大化してるのもある
60 : 真保子 2014/03/02(日) 19:34:41.07 発言回数 : 3 回目
>>56 ずれてるから返さなくて良いよ >>58 信者しか買わないから意味もなく100万上乗せしても台数変わんない
64 : 裕理 2014/03/02(日) 19:50:50.97
どうせコンセプトどおりには出ない 期待するだけ無駄
67 : 由吏江 2014/03/02(日) 19:57:55.64
S660でいいわ
68 : 布三子 2014/03/02(日) 20:00:01.61
日産車かと思ったわ
【速報】2chまとめ総合sogoso9jp
【画像あり】ホンダ、S2000後継車の噂 新型NSXのコンパクト版で価格は500~600万円程度 2chまとめ記事:http://t.co/kEUi1YPCdR タグ: #2ch #まとめ
2014-03-02 17:03:33
あんてなパンantennapan
【画像あり】ホンダ、S2000後継車の噂 新型NSXのコンパクト版で価格は500~600万円程度
新着⇒http://t.co/k7qalpXitc
2014-03-02 16:50:08
kenmo_botkenmo_bot
【画像あり】ホンダ、S2000後継車の噂 新型NSXのコンパクト版で価格は500〜600万円程度 (10)
http://t.co/auSXC3heP8
2014-03-02 11:15:04
↧
↧
cakephp2.x で クレジット決済イプシロンの接続設定
photoBy: https://secure.epsilon.jp/images/admin/logo.gif
イプシロン決済の流れ
X 間違い
1 自分のサイトで商品購入情報を入力してもらう
2 https://secure.epsilon.jp/cgi-bin/order/receive_order3.cgi へ飛ばす
<form action="https://secure.epsilon.jp/cgi-bin/order/receive_order3.cgi" method="post" >
これだとダメです。
○ 正しい
1 自分のサイトで商品購入情報を入力してもらう
2 自分のサイトの別ページへ一度飛ばし、そこで https://secure.epsilon.jp/cgi-bin/order/receive_order3.cgi に
必要情報をセットし、http post通信。
すると飛び先が取得できるので、その飛び先に redirect させる。
<form action="/users/pay_redirect/" method="post" >
そもそも何でこんなにいんやらしい作りになっているのか意味不明だが、
直接 form action で飛ばすと時々クレジット決済できない場合がある。
正しい場合のコードとパラメーター
商品購入画面 pay
パラメーターは適当に変更してね
<form action="/users/pay_redirect/" method="post" accept-charset="utf-8"><input type="hidden" name="user_id" id="user_id" value="an_6" /><input type="hidden" name="user_name" id="user_name" value="健悟" /><!-- 商品コードを指定 --><input name="item_code" id="item_code" type="hidden" value="an-001" /><!-- 商品名を指定 --><input name="item_name" id="item_name" type="hidden" value="りんご" /><!-- 代理店コード --><input name="contract_code" id="contract_code" type="hidden" value="90063900" /><!-- 注文毎にユニークな値を指定 ここで prefix も入れて渡すといいかも。 --><input name="order_number" id="order_number" type="hidden" value="an<?=substr(preg_replace("/[^[:alnum:]]/", "", base64_encode(hash("sha384", mt_rand(),true))),1,29);?>" /><!-- 一回課金の場合は 1を指定 --><input name="mission_code" id="mission_code" type="hidden" value="1" /><!-- 初回課金 の場合は以下を指定 --><input name="process_code" id="process_code" type="hidden" value="2" /><!-- クレジット決済カードの場合は以下を指定 --><input name="st_code" id="st_code" type="hidden" value="10000-0000-00000" /><input name="user_mail_add" id="user_mail_add" type="hidden" value="test@test1.com" /><input name="item_price" id="item_price" type="hidden" value="500" /><button type="submit" class="btn btn-primary btn-large">お支払い</button></div></form>
完了画面 /users/pay_redirect
http 通信で一度パラメーターを イプシロンに送り、リダイレクト先を取得してから、
そのURLにリダイレクト
function pay_redirect()
{
App::uses('HttpSocket', 'Network/Http'); $HttpSocket = new HttpSocket(); $url = "https://secure.epsilon.jp/cgi-bin/order/receive_order3.cgi"; $res = $HttpSocket->post($url,$this->request->data); $this->redirect($res->headers['Location']); $this->autoRender = false;
}
ちなみに、 こんな感じのデータが入っている。
$this->request->data = array( 'user_id' => 'an_2', 'user_name' => '友一', 'item_code' => 'tn-001', 'item_name' => 'りんご済', 'order_number' => 'anmeWM1xeqXKf3eKgWo7XdazpR6GeqQ1', 'mission_code' => '1', 'process_code' => '2', 'st_code' => '10000-0000-00000', 'contract_code' => '90069100', 'user_mail_add' => 'test@test2.com', 'item_price' => 100 );
ここまでで完了!
以下は余談。
何で上場企業のGMOともあろう会社の決済システムがここまでわかりづらいのか。。。
僕が作れば50行満たないコードが、天下のGMOさんだと 450行近い。
ちなみにイプシロンのサンプルPHPはこちら。
<?php
// EPSILON オーダー情報送信プログラム(PHP版)
//
//
// このプログラムの実行には、以下のモジュールが必要です。
// ・PHP(ver5,,,,,
// ・PEAR:
// ・PEAR:HTTP_Request:
// ・PEAR:Net_URL:
// ・PEAR:Net_Socket:
// ・PEAR:XML_Parser:
// ・PEAR:XML_Serializer:
//
//include Libraly
//PEAR拡張モジュールの読み込み。
//既に該当のモジュールをインストール済みの場合は適宜読み込み先パスを変更してください。
require_once "http/Request.php";
require_once "xml/Unserializer.php";
//char setting
//サーバ環境に応じ適宜変更してください。
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
// 変数の初期化
// FORMで送信した内容をこのプログラムファイルで受け取るために、プログラムファイルの名前を設定します。
$my_self = "settlement.php";
// オーダー情報送信先URL(試験用)
// 本番環境でご利用の場合は契約時に弊社からお送りするURLに変更してください。
$order_url = "https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi";
//// 以下の各項目についてご利用環境に沿った設定に変更してください
// 契約番号(8桁) オンライン登録時に発行された契約番号を入力してください。
$contract_code = "00000000";
// 注文番号(注文毎にユニークな番号を割り当てます。ここでは仮に乱数を使用しています。)
$order_number = rand(0,99999999);
// 決済区分 (使用したい決済方法を指定してください。登録時に申し込まれていない決済方法は指定できません。)
$st_code = '10100-0000-00000'; // 指定方法はCGI設定マニュアルの「決済区分について」を参照してください。
// 課金区分 (1:一回のみ 2~10:月次課金)
// 月次課金について契約がない場合は利用できません。また、月次課金を設定した場合決済区分はクレジットカード決済のみとなります。
$mission_code = 1;
// 処理区分 (1:初回課金 2:登録済み課金 3:登録のみ 4:登録変更 8:月次課金解除 9:退会)
// 月次課金をご利用にならない場合は1:初回課金をご利用ください。
// 各処理区分のご利用に関してはCGI設定マニュアルの「処理区分について」を参照してください。
$process_code = 1;
// 追加情報 1,2 (入力は必須ではありません)
$memo1 = "試験用オーダー情報";
$memo2 = "";
// 商品コード (商品毎に識別コードを指定してください。ここでは仮に固定の値を指定しています。)
$item_code = "abc12345";
// 商品リストサンプル
$goods = array( 'mouse' => array('name' => 'マウス', 'price' => '800') , 'keyboard' => array('name' => 'キーボード', 'price' => '2980') , 'disp' => array('name' => 'ディスプレイ', 'price' => '19800') , 'printer' => array('name' => 'プリンタ', 'price' => '34800') , 'camera' => array('name' => 'デジカメ', 'price' => '42000') );
//// 変更設定ここまで
// エラーが発生した場合のメッセージ
$err_msg;
// オーダー情報を送信した結果を格納する連想配列
$responce = array();
// 商品名、価格
$item_name = "";
$item_price = 0;
// CGIのパラメータを取得
$item = $_REQUEST['item']; // 商品の番号(このCGIの中でのみ使用する値です)
if ($item){
// 商品リストサンプルの連想配列から、商品名と価格を取り出しています。
// 商品名と価格
$item_name = $goods[$item]['name'];
$item_price = $goods[$item]['price'];
}
// ユーザー固有情報
// ここでは仮にフォームに入力してもらっていますが、ユーザーID等の値はクライアント様側で
// 管理されている値を使用してください。
$user_id = $_REQUEST['user_id']; // ユーザーID
$user_name = $_REQUEST['user_name']; // ユーザー氏名
$user_mail_add = $_REQUEST['user_mail_add'];// メールアドレス
// CGIの状態(入力画面から実行されたか、確認画面から実行されたか)を判別する値
$come_from = $_REQUEST['come_from']; // CGIの状態設定
// パラメータの確認
if ($come_from == 'here'){
if (empty($item_name)){
$err_msg = "購入する商品を選択してください <br><br>";
}
elseif (empty($user_id)){
$err_msg = "ユーザーIDを入力してください <br><br>";
}
elseif (empty($user_name)){
$err_msg = "氏名を入力してください <br><br>";
}
elseif (empty($user_mail_add)){
$err_msg = "メールアドレスを入力してください。 <br><br>";
}
echo "<br /><br />" . $err_msg;
if (!empty($err_msg)){
// パラメータに異常がある場合は、もう一度入力画面を表示します。
order_form(); exit(1);
}
else{
// パラメータを正常に受け取れた場合は、購入確認画面を表示します。
kakunin(); exit(0);
}
}
elseif ($come_from == 'kakunin'){ // 購入確認画面で[確認]ボタンを押した場合
//EPSILONに情報を送信します。
// httpリクエスト用のオプションを指定
$option = array(
"timeout" => "20", // タイムアウトの秒数指定
// "allowRedirects" => true, // リダイレクトの許可設定(true/false)
// "maxRedirects" => 3, // リダイレクトの最大回数
);
// HTTP_Requestの初期化
$request = new HTTP_Request($order_url, $option);
// HTTPのヘッダー設定
//$http->addHeader("User-Agent", "xxxxx");
//$http->addHeader("Referer", "xxxxxx");
//set method
$request->setMethod(HTTP_REQUEST_METHOD_POST);
//set post data
$request->addPostData('contract_code', $contract_code);
$request->addPostData('user_id', $user_id);
$request->addPostData('user_name', mb_convert_encoding($user_name, "EUC-JP", "auto"));
$request->addPostData('user_mail_add', $user_mail_add);
$request->addPostData('item_code', $item_code);
$request->addPostData('item_name', mb_convert_encoding($item_name, "EUC-JP", "auto"));
$request->addPostData('order_number', $order_number);
$request->addPostData('st_code', $st_code);
$request->addPostData('mission_code', $mission_code);
$request->addPostData('item_price', $item_price);
$request->addPostData('process_code', $process_code);
$request->addPostData('memo1', $memo1);
$request->addPostData('memo2', $memo2);
$request->addPostData('xml', '1');
// HTTPリクエスト実行
$response = $request->sendRequest();
if (!PEAR::isError($response)) {
// 応答内容(XML)の解析
$res_code = $request->getResponseCode(); $res_content = $request->getResponseBody(); //xml unserializer $temp_xml_res = str_replace("x-sjis-cp932", "EUC-JP", $res_content); $unserializer =& new XML_Unserializer(); $unserializer->setOption('parseAttributes', TRUE); $unseriliz_st = $unserializer->unserialize($temp_xml_res); if ($unseriliz_st === true) { //xmlを解析
$res_array = $unserializer->getUnserializedData(); $is_xml_error = false; $xml_redirect_url = ""; $xml_error_cd = ""; $xml_error_msg = ""; $xml_memo1_msg = ""; $xml_memo2_msg = ""; foreach($res_array['result'] as $uns_k => $uns_v){ //$debug_printj .= "<br />k=" . $uns_k; list($result_atr_key, $result_atr_val) = each($uns_v); //$debug_printj .= "<br />result_atr_key=" . $result_atr_key; //$debug_printj .= "<br />result_atr_val=" . $result_atr_val; switch ($result_atr_key) { case 'redirect': $xml_redirect_url = rawurldecode($result_atr_val); break; case 'err_code': $is_xml_error = true; $xml_error_cd = $result_atr_val; break; case 'err_detail': $xml_error_msg = mb_convert_encoding(urldecode($result_atr_val), "EUC-JP" ,"auto"); break; case 'memo1': $xml_memo1_msg = mb_convert_encoding(urldecode($result_atr_val), "EUC-JP" ,"auto"); break; case 'memo2': $xml_memo2_msg = mb_convert_encoding(urldecode($result_atr_val), "EUC-JP" ,"auto"); break; default: break; } } }else{ //xml parser error $err_msg = "xml parser error<br><br>"; order_form(); exit(1); }
}else{ //http error
//$debug_printj .= "http error"; $err_msg = "データの送信に失敗しました<br><br>"; $err_msg .= "<br />res_statusCd=" . $request->getResponseCode(); $err_msg .= "<br />res_status=" . $request->getResponseHeader('Status'); order_form(); exit(1);
}
if($is_xml_error){
// データ送信結果が失敗だった場合、オーダー入力画面に戻し、エラーメッセージを表示します。
$err_msg = "error_cd:" . $xml_error_cd . "error_msg:" . $xml_error_msg; order_form(); exit(1);
}else{
// データ送信に成功した場合、リダイレクト先URLへリダイレクトさせてください。
header("Location: " . $xml_redirect_url); exit(0);
}
}
order_form();
// オーダー入力フォーム表示
// 以下はお客様がご購入の際閲覧するWeb画面となります。画面イメージ等は貴社のポリシーに沿った形で変更願います。
function order_form(){
global $my_self, $item, $item_name, $item_price, $user_name, $user_id, $user_mail_add, $goods, $err_msg, $debug_printj;
//echo "debugmsgSTAT<br / ><br / ><br / >" . $debug_printj;
echo <<<EOM<html lang="ja"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"><title>商品購入サンプル画面</title><STYLE TYPE="text/css"><!--
TABLE.S1 {font-size: 9pt; border-width: 0px; background-color: #E6ECFA; font-size: 9pt;}
TD.S1 { border-width: 0px; background-color: #E6ECFA;color: #505050; font-size: 9pt;}
TH.S1 { border-width: 0px; background-color: #7B8EB4;color: #E6ECFA; font-size: 9pt;}
TABLE { border-style: solid; border-width: 1px; border-color: #7B8EB4; font-size: 8pt;}
TD { text-align: center; border-style: solid; border-width: 2px; border-color: #FFFFFF #CCCCCC #CCCCCC #FFFFFF; color: #505050; font-size: 8pt;}
TH { background-color: #7B8EB4;border-style: solid; border-width: 2px; border-color: #DDDDDD #AAAAAA #AAAAAA #DDDDDD; color: #E6ECFA; font-size: 8pt;}
--></STYLE></HEAD><BODY BGCOLOR="#E6ECFA" text="#505050" link="#555577" vlink="#555577" alink="#557755"><BR><form action="${my_self}" method="post"><table class=S1 width="400" border="0" cellpadding="0" cellspacing="0"><tr class=S1><td class=S1><table class=S1 width="100%" cellpadding="6" align=center><tr class=S1><th class=S1 align=left><big>商品購入サンプル</big></th></tr></table><table class=S1 width="90%" align=center><tr class=S1><td class=S1><font color="#EE5555"> ${err_msg} </font><br>購入する商品を選択してください。<br>
EOM;
echo " <table cellspacing=4 cellpadding=4 align=\"left\">\n";
echo " <tr><th>商品名</th><th>価格</th></tr>\n";
// 商品リストの表示
foreach($goods as $key => $value){
$checked = ($key == $item)? "checked" : "";
echo "<tr><td><input type=\"radio\" name=\"item\" value=\"${key}\" $checked/>${value['name']}</td><td>${value['price']}円</td></tr> \n";
}
echo "</table><br><br>\n";
echo <<<EOM</td></tr><tr class=S1><td class=S1> <br>以下の項目を入力してください<br><table cellspacing=4 cellpadding=4 align="left"> <tr> <td>ユーザーID</td> <td><input type="text" name="user_id" value="${user_id}"></td> </tr> <tr> <td>氏名</td> <td><input type="text" name="user_name" value="${user_name}"></td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="user_mail_add" value="${user_mail_add}"></td> </tr></table></td></tr><tr class=S1><td class=S1> <br> <input type="hidden" name="come_from" value="here"> <input type="submit" name="go" value="送信"></td></tr></table></td></tr></table></form></BODY></HTML>
EOM;
return(1);
}
// 購入確認画面表示
function kakunin(){
global $my_self, $item, $item_name, $item_price, $user_name, $user_id, $user_mail_add, $goods, $err_msg, $debug_printj;
//echo "debugmsgSTAT<br / ><br / ><br / >" . $debug_printj;
echo <<<EOM<html lang="ja"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"><title>商品購入サンプル画面</title><STYLE TYPE="text/css"><!--
TABLE.S1 {font-size: 9pt; border-width: 0px; background-color: #E6ECFA; font-size: 9pt;}
TD.S1 { border-width: 0px; background-color: #E6ECFA;color: #505050; font-size: 9pt;}
TH.S1 { border-width: 0px; background-color: #7B8EB4;color: #E6ECFA; font-size: 9pt;}
TABLE { border-style: solid; border-width: 1px; border-color: #7B8EB4; font-size: 8pt;}
TD { text-align: center; border-style: solid; border-width: 2px; border-color: #FFFFFF #CCCCCC #CCCCCC #FFFFFF; color: #505050; font-size: 8pt;}
TH { background-color: #7B8EB4;border-style: solid; border-width: 2px; border-color: #DDDDDD #AAAAAA #AAAAAA #DDDDDD; color: #E6ECFA; font-size: 8pt;}
--></STYLE></HEAD><BODY BGCOLOR="#E6ECFA" text="#505050" link="#555577" vlink="#555577" alink="#557755"><BR><table class=S1 width="400" border="0" cellpadding="0" cellspacing="0"><tr class=S1><td class=S1><table class=S1 width="100%" cellpadding="6" align=center><tr class=S1><th class=S1 align=left><big>商品購入サンプル</big></th></tr></table><table class=S1 width="90%" align=center><tr class=S1><td class=S1> <br>以下の商品を注文します。<br> よろしければ[確認]ボタンを押してください。<br><br> 商品名:${item_name}<br> 価格:${item_price}円<br> <br> <table class=S1 align=center width="50%"> <tr class=S1> <td class=S1> <form action="${my_self}" method="post"> <input type="hidden" name="item" value="${item}"> <input type="hidden" name="item_name" value="${item_name}"> <input type="hidden" name="item_price" value="${item_price}"> <input type="hidden" name="user_name" value="${user_name}"> <input type="hidden" name="user_id" value="${user_id}"> <input type="hidden" name="user_mail_add" value="${user_mail_add}"> <input type="submit" name="go" value="戻る"> </form> </td> <td class=S1> <form action="${my_self}" method="post"> <input type="hidden" name="item" value="${item}"> <input type="hidden" name="item_name" value="${item_name}"> <input type="hidden" name="item_price" value="${item_price}"> <input type="hidden" name="user_name" value="${user_name}"> <input type="hidden" name="user_id" value="${user_id}"> <input type="hidden" name="user_mail_add" value="${user_mail_add}"> <input type="hidden" name="come_from" value="kakunin"> <input type="submit" name="go" value="確認"> </form> </td> </tr> </td></tr></table></td></tr></table></form></BODY></HTML>
EOM;
return(1);
}
exit(0);
?>
↧
cakephp でキュレーション httpsocket の使い方
photoBy: http://lohas.nicoseiga.jp/thumb/2154208i?13406093…
キュレーションって何?
コンテンツを盗む(パク)ること。
それをcakephpを使ってギンギンにやってみよう。
メリット
勝手に情報を集めてくれる
ログインしなきゃ見れない情報でもパクってこれる
さらにはDBに保存してオリジナルコンテンツとして公開できる
あくまで法律に触れない範囲でね。
最強のcakephpライブラリ http socket
まずは、コンテンツを 拾ってくる
phpでコンテンツを拾って表示させる方法。
すべて array() を [] に変えてるので適宜変更して下さい。
普通にデータを取得
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->get('http://cakephp.org');
post で データを取得
key というのに value をセットして送信後、その結果を取得。
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->post('http://cakephp.org', ['key' => 'value']);
basic認証しつつ取得
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configAuth('Basic', 'username', 'password');
$response = $HttpSocket->get('http://cakephp.org');
ログインが必要なサイトにクッキーを指定しつつ取得
$HttpSocket = new HttpSocket();
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'cookies' => [ 'CAKEPHP' => 'b6d3bca4d372dd6a58c4e46d2f60f0ef', 'cookieKey' => 'cookieValue' ]
]);
ただし、配列のクッキーはセットできないみたい。
プロキシを通す
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configProxy('proxy-host-or-ip.com', 3128, 'Basic', 'proxyusername', 'proxypassword') {
$response = $HttpSocket->get('http://cakephp.org');
その他の使い方
<?php
/* User Agent */
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'header' => [ 'User-Agent' => 'Internet Explorer 6 HAHA' ]
]);
/* PUT request */
$response = $HttpSocket->put('http://cakephp.org', ['key' => 'value']);
/* Alternative PUT/DELETE/PATCH/HEAD request */
$response = $HttpSocket->request([ 'method' => 'HEAD', 'uri' => 'http://cakephp.org'
]);
/* Follow redirects */
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'redirect' => true // or an integer for max amount of redirects
]);
?>
さらに htmldom と併用すればキュレーションが完了します。
simple_html_dom 使い方
http://www.matomater.com/15650/
↧
さくら vps でメルマガシステムを作ろう
photoBy: http://www.nifty.com/mail/reject/img/10-spam.gif
メルマガシステムの考え方
届かない宛先に何度も送信しているとスパム扱いされるのでバウンスメールと呼ばれるエラーメールを解析する必要がある
さくらサーバーは避けた方がいいかも (迷惑メール判定されやすい)
postfix + dovecot でエラーメール受信アカウントを作る
わざわざこれをやらなくても、他の安いプランを借りてエラーメール専用アドレスを作ったほうが楽な気もするが。
一応参考。
http://www.kyoji-kuzunoha.com/2012/05/postfix-dovecot-ssl.html
ちなみにgmailで設定しようとするとうまく動かない。
サーバーから返されたエラー: "Missing +OK response upon connecting to the server: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready."
マルチドメインに対応
http://linux.kororo.jp/cont/server/postfix_virtual.php
うまく動くかテスト
http://www.wakhok.ac.jp/~kanayama/summer/02/site/node216.html
cakephpで送信 (return-path Envelope From を設定)
$envelope_from = 'info@return.com'; $email = new CakeEmail(); $email->from('your@your.net'); $email->to('h@to.jp'); $email->transportClass() ->config(array('additionalParameters'=>"-f{$envelope_from}")); $email->subject('今日は希望であり、素敵な日々であり。'); $email->message('いつもイオンマークのカードをご利用いただき、ありがとうございます。
本メールはWeb明細(環境宣言)にご登録いただいているお客さまにお送りして
おります。
3月のご請求額が確定いたしましたのでお知らせいたします。
暮らしのマネーサイトMyPageへログインいただき、ご請求額をご確認ください。'); $email->send();
送信できなかった、エラーになった不達メールが info@return.com に返ってきます
返ってきたものをライブラリ等を利用して解析。
↧
phpmyadminを最新版にする linux vps
photoBy: http://topnews.in/files/DB-Corp-5.jpg
phpmyadminを最新版にしよう!
考え方
一番新しいバージョンを指定してwget
解凍
設定
こんな流れになります。
コマンド
バージョンは場合によって変更してね
http://www.phpmyadmin.net/home_page/index.php
のdonwload をクリックした後のURL を wget
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.1.9/phpMyAdmin-4.1.9-all-languages.zip
unzip phpMyAdmin-4.1.9-all-languages.zip
mv phpMyAdmin-4.1.9-all-languages /usr/share/phpmyadmin
sudo chown apache:apache /usr/share/phpmyadmin -R
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
ブラウザからアクセスできるように
まずは phpmyadmin.conf を新規作成
vim /etc/httpd/conf.d/phpmyadmin.conf
・phpmyadmin.conf の中身
<Directory "/usr/share/phpmyadmin">
Order Deny,Allow
#Deny from all
Allow from all
</Directory>
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
これで http://localhost/phpmyadmin でphpmyadmin の画面が表示される。
シンボリックリンクとか必要無い。
アンインストールした場合
設定がおかしくなって phpmyadmi を削除したい場合は、
find / -iname '*phpMyAdmin\.conf*' -print
コマンドで関連ファイルを探して削除していけばOK
↧
↧
Unknown table engine 'InnoDB' エラー mysql
photoBy: http://www.regupol.com.au/images-de08/Ladungssich…
mysql でエラー発生
Unknown table engine 'InnoDB' 原因は?
ログファイルがでかくなりすぎたので、削除して下さい。ということ。
rm /var/lib/mysql/ib_logfile*
でログを削除して再起動すればエラーが解消される。
↧
phpmyadmin で mysqli エラー
photoBy: http://binarywasteland.com/wp-content/uploads/201…
コマンドラインからsql実行できるのに、ブラウザやphpmyadminからエラー
その場合は、PHPのバグの可能性が高い。
mysqlのバージョンを上げ下げしているとなるので注意。
Mysql driver is NOT enabled
もう一度phpを入れなおそう。
yum install php php-devel php-mysql php-mbstring php-gd php-pear php-mcrypt
php -v // インストール確認
cp /etc/php.ini /etc/php.ini.org
vim /etc/php.ini
↧
linux vps centos mroongaをインストールする方法
photoBy: http://www.clear-code.com/blog/images/20111201_1.…
mroongaをインストール
centos 6 に mroongaをインストールする場合は、以下の方法が良い。
他の方法だとmysql 5.6.10 以上をインストール必須みたいに言われるが、 auth が厳しくてログインすらできない。
以下の方法以外だと mysql 5.6 以上インストールしろよと言われちゃう。
--> Finished Dependency Resolution
Error: Package: mysql56-mroonga-3.05-1.el6.x86_64 (/mysql56-mroonga-3.05-1.el6.x86_64)
Requires: MySQL-client = 5.6.12-1
Error: Package: mysql56-mroonga-3.05-1.el6.x86_64 (/mysql56-mroonga-3.05-1.el6.x86_64)
Requires: MySQL-server = 5.6.12-1
じゃあ早速インストール
参考: http://qiita.com/seri_k/items/9b37f8d51a73a1dcdbb8
# wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 http://ftp.riken.jp/Linux/centos/6.0/os/x86_64/RPM-GPG-KEY-CentOS-6
# vi /etc/yum.repos.d/orig-centos-updates.repo
以下に変更 (新規追記)
[orig_centos_updates]
name=Original-CentOS-6 - Updates
baseurl=http://ftp.riken.jp/Linux/centos/6/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
enabled=0
リポジトリ作成
rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# vim /etc/yum.repos.d/groonga.repo
baseurl を変更
baseurl=http://packages.groonga.org/centos/$releasever/$basearch/
↓
baseurl=http://packages.groonga.org/centos/6/$basearch/
インストール実行
# yum makecache
# yum --enablerepo=orig_centos_updates install -y mysql-server
# /etc/init.d/mysqld start
# yum install -y mysql-mroonga
インストール確認
mysql -uroot
mysql> SHOW ENGINES;
これで mroonga って文字があればOK。
早速動くかテスト
参考: http://noodles-mtb.hatenablog.com/entry/20120317/1331973151
DBつくりまーす
CREATE TABLE items (
id INT(10) NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, content VARCHAR(255) NOT NULL,
FULLTEXT INDEX (title),
FULLTEXT INDEX (content), PRIMARY KEY (`id`)
) ENGINE = mroonga COMMENT = 'engine "innodb"'
検索してみまーす
SELECT * FROM diaries WHERE MATCH(content) AGAINST("hoge");
これで検索できればOK!
すでにあるDBの engine などを変更したい
engine を mroongaに
alter table yourtable engine = mroonga;
field を fulltext にしたい
ALTER TABLE yourtable ADD FULLTEXT fulltext_index(name,url,area);
↧
linux scp コマンドで Permission denied (publickey,gssapi-keyex,gssapi-with-mic). エラー
photoBy: http://2.bp.blogspot.com/-WoqkajFr4xw/TcdPN9ZOvrI…
ssh で接続して scpコマンドが使えないんだけど
まずは、エラーの内容としては
scp username@www416xuo.sakura.ne.jp:cron.txt .
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
と出る。
パスワードでログインできるようにしてある?
vim /etc/ssh/sshd_config
PasswordAuthentication yes
上記の行を yes にしてパスワードでログインできるようにしておくと scp コマンドが使えるようになる。
↧
↧
さくら vps で 落ちた時に自動再起動させる monit
photoBy: http://www.autosportdirect.com.au/site_files/399/…
サーバーを自動的に再起動させよう
いきなりサーバーが落ちてしまった
まずは原因を探ろう
tail -n 500 /var/log/messages
これで最新500行のログを見れる。
Out of memory: Kill process 10444 (httpd) score 2 or sacrifice child
というのがあればメモリ使いすぎて自動落ち。
メモリを使わないように設定するには?
php.ini max_execution_time の設定を見直す(cron等で無限ループになっている可能性)
重いcron処理を解除
万が一のために自動再起動設定したい
monitを使おう
monit とは、サーバーを監視してくれるサービス。
httpd , mysql , mailサーバーなど動いているサービスが止まったらすぐに再起動してくれる。
インストール
sudo yum -y install monit
sudo chkconfig monit on
・/etc/monit.conf を設定
set daemon 10
# アラートメールの送信サーバーを指定(※Gmailを使用する場合の例)
set mailserver smtp.gmail.com port 587 username "あなたのGmailアドレス" password "あなたのパスワード" using tlsv1
# Webブラウザからモニタリング状況を確認できるようにする
set httpd port 2812 and
allow admin:monit
各種サービス毎に自動起動ファイルを新規作成
まずはフォルダ移動
cd /etc/monit.d/
・httpd (vim httpd)
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
if failed host (SERVER-IP-ADDRESS) port 80 send "GET / HTTP/1.1\r\nHost: (SERVER-IP-ADDRESS)\r\n\r\n" expect "HTTP/1\.[01x] [1-4][0-9]{2} .*\r\n" with timeout 60 seconds then restart
if 1000 restarts within 1000 cycles then timeout
pid の場所が異なる場合があるので、
find / -name '*httpd.pid*' -print で探す。
また、 SERVER-IP-ADDRESS はカッコを外してサーバー固有のグローバルIPアドレスを設定。
・sendmail
check process mysqld with pidfile "/var/run/mysqld/mysqld.pid"
start = "/etc/init.d/mysqld start"
stop = "/etc/init.d/mysqld stop"
if failed unixsocket /var/lib/mysql/mysql.sock with timeout 60 seconds then restart
if 5 restarts within 5 cycles then timeout
・mysql
check process mysqld with pidfile "/var/run/mysqld/mysqld.pid"
start = "/etc/init.d/mysqld start"
stop = "/etc/init.d/mysqld stop"
if failed unixsocket /var/lib/mysql/mysql.sock with timeout 60 seconds then restart
if 5 restarts within 5 cycles then timeout
・ssh
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start" with timeout 60 seconds
stop program "/etc/init.d/sshd stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
・ /etc/sysconfig/iptables
#iptables に追加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2812 -j ACCEPT
service iptables restart
iptables -L
#再起動
service monit restart
"http://[Monitが動作しているサーバーのアドレス]:2812"というURLにアクセスすることでモニタリング状況がWebブラウザから確認できます。このときユーザIDをパスワードを求められますが、それぞれ"admin"と"monit"と入力すればログインできます。
・cronに設定
*/30 * * * * /usr/sbin/monit monitor all
パスが違う場合があるので
find / -name '*monit*' -print で場所を探す
インストールと設定はここまでです。
お疲れ様でした。
ちゃんと動くか確認
http://your.com:2812/ へアクセス。
admin , monit でログイン。
一気にすべてのサービスを止める。
service httpd stop
service mysqld stop
service sendmail stop
service sshd stop
停止させると、Does not exist に。
しばらく待って、Execution failed が running にすぐに再起動すればOK。
/etc/monit.conf
set daemon 60
これで正常に動けば自動再起動するようになります。
お疲れ様でした。
↧
centos linux find 関数で短縮
photoBy: http://phoenix.wearenetwork.com/images2/find.jpg
findが面倒
linuxでfindをaliasで指定できない。
引数が渡せないからだ。
でも、どうしても短縮したい。
短縮前
find / -iname hoge.php -print;
短縮後
./f hoge.php
どうやってやるの?
fというファイル名を作ります。
・f
#!/bin/bash
find / -iname "$1" -print;
パーミッションなどを変更
chown 777 ./f
chmod 777 ./f
使ってみる
./f hoge
これで hoge というファイルを探してくれるようになります。
↧
mysql SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value
photoBy: http://upload.wikimedia.org/wikipedia/commons/thu…
mysqlにデータが入らない
バグを解消するには
mysqlのバージョンをアップするとなるみたい。
find / -name '*my\.cnf*' -print
を探す。
でとりあえずひらく。
普段触ってる /etc/my.cnf 以外にもできるおで、
vim /usr/my.cnf
そうすると sql_mode があるので空にする。
sql_mode=''
再起動しまつ。
service mysqld restart
これでOK。今まで作られたテーブルもすべてデータを null でも登録できるようになります。
↧
centos6 に nginx をインストール。 また、バーチャルドメインphpも使えるように。
photoBy: http://tctechcrunch2011.files.wordpress.com/2013/…
nginx ってなに?
apache より早くてすげー。
インストール
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum install -y nginx
apacheがあれば止めておく。
sudo service nginx start
あなたのアドレス 193.193.25.25 にアクセスして、welcome画面が表示されればOK
続いて各種設定
今回は mntra.net のドメインを追加
設定
以下の項目はすべてができます
独自ドメインを複数設定 (バーチャルドメイン)
phpを使えるように
htmlでもphpを使えるように
vim /var/www/html/mntra.net/index.html
chmod 777 /var/www/html/mntra.net/
index.html ファイルには hogeman とでも書いておく。
vim /etc/nginx/conf.d/default.conf の最下部に以下を追記
server {
listen 80; server_name mntra.net; root /var/www/html/mntra.net; index index.php index.html index.htm; location ~ \.(php|html)$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/mntra.net$fastcgi_script_name; include fastcgi_params; }
}
ひとつのドメイン毎に servier {} ができあがるので、最初にあった server{} の中に書くのではなく、
新しく追加して書くこと。
vim /etc/php-fpm.d/www.conf
以下の listen と security.limit_extensions の行を以下に変更
listen = /var/run/php-fpm/php-fpm.sock
security.limit_extensions = .php .html
再起動
/etc/init.d/php-fpm restart
nginx -s reload
これで mntra.net においた .html , .php ファイルの php が動けばOK!
応用編
www ありを www 無しに統一
vim /etc/nginx/conf.d/default.conf の最下部に以下を追記。
server mntra.net とは別に www.mntra.net を用意する。
server {
listen 80; server_name www.mntra.net; rewrite ^ http://mntra.net$request_uri? permanent;
}
↧
↧
cakephp でキュレーション httpsocket の使い方
photoBy: http://lohas.nicoseiga.jp/thumb/2154208i?13406093…
キュレーションって何?
コンテンツを盗む(パク)ること。
それをcakephpを使ってギンギンにやってみよう。
メリット
勝手に情報を集めてくれる
ログインしなきゃ見れない情報でもパクってこれる
さらにはDBに保存してオリジナルコンテンツとして公開できる
あくまで法律に触れない範囲でね。
最強のcakephpライブラリ http socket
まずは、コンテンツを 拾ってくる
phpでコンテンツを拾って表示させる方法。
すべて array() を [] に変えてるので適宜変更して下さい。
普通にデータを取得
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->get('http://cakephp.org');
post で データを取得
key というのに value をセットして送信後、その結果を取得。
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->post('http://cakephp.org', ['key' => 'value']);
basic認証しつつ取得
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configAuth('Basic', 'username', 'password');
$response = $HttpSocket->get('http://cakephp.org');
ログインが必要なサイトにクッキーを指定しつつ取得
$HttpSocket = new HttpSocket();
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'cookies' => [ 'CAKEPHP' => 'b6d3bca4d372dd6a58c4e46d2f60f0ef', 'cookieKey' => 'cookieValue' ]
]);
ただし、配列のクッキーはセットできないみたい。
プロキシを通す
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configProxy('proxy-host-or-ip.com', 3128, 'Basic', 'proxyusername', 'proxypassword') {
$response = $HttpSocket->get('http://cakephp.org');
その他の使い方
<?php
/* User Agent */
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'header' => [ 'User-Agent' => 'Internet Explorer 6 HAHA' ]
]);
/* PUT request */
$response = $HttpSocket->put('http://cakephp.org', ['key' => 'value']);
/* Alternative PUT/DELETE/PATCH/HEAD request */
$response = $HttpSocket->request([ 'method' => 'HEAD', 'uri' => 'http://cakephp.org'
]);
/* Follow redirects */
$response = $HttpSocket->request([ 'uri' => 'http://cakephp.org', 'redirect' => true // or an integer for max amount of redirects
]);
?>
さらに htmldom と併用すればキュレーションが完了します。
simple_html_dom 使い方
http://www.matomater.com/15650/
↧
nginx で mroonga
photoBy: http://www.freesoftwaremagazine.com/files/posts/N…
mysql 5.5 で nginx に mroonga を入れる
rpmを使った方法だと、nginxがmysql を認識せずに使い物にならなかった。
参考
http://wiki.nonip.info/work/index.php?linux%2Fmroonga%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
必ずバックアップ取ってね!
まずはアンインストール
・mecabをインストール
sudo yum -y install mecab mecab-devel mecab-ipadic --disablerepo=* --enablerepo=groonga
・リポジトリを追加
cd /etc/yum.repos.d/
sudo wget http://wing-net.ddo.jp/wing/6/EL6.wing.repo
・既存のmysqlをすべて削除
rpm -qa | grep -i mysql
sudo yum list installed | grep mysql #削除mysql確認
#rpm -e groonga-normalizer-mysql.x86_64 mysql55-libs.x86_64 mysql55-libs.x86_64
rpm に「-e」オプションで削除してください。
依存関係がありますので、ひとつずつではなく、まとめて指定するのがミソです。
依存関係で削除できない場合は、ひとつずつ消したり、順番を変えてしっかり削除しておきましょう。
さらにアンインストール
yum remove mysql
yum remove mysql-server
yum remove mysql-libs
でもって、フォルダごと!
rm -fr /var/lib/mysql/*
インストールしてくよ!
・mysql5.5インストール
sudo yum --enablerepo=wing install mysql55-server
sudo service mysqld start
sudo yum --enablerepo=wing install mysql55-mroonga
・スキーマ更新
mysql_upgrade -uroot -p
・groongaの文字があれば成功
mysql>show engines;
再起動
sudo service mysqld restart
service nginx restart
/etc/init.d/php-fpm restart
ここまでで完了。
おまけ、phpmyadminにログインできない場合は?
セッションがおかしいので。
chmod 777 /var/lib/php/session
↧
「いいね!」ボタンのカラクリ!?
Webページの「いいね!」ボタン、使ってますよね。そこに表示される数が多いと、「いいね!がたくさんされている人気のコンテンツ」だと思いますよね。でも、「いいね!」ボタンに表示されている数は、「いいね!」の数だけではなく、次の数の合計なのです。いいね!ボタンに表示される数の内訳そのURLへの「いいね!」数そのURLの「シェア」数そのURLのシェアに対してFacebook上で付けられたコメント数ですから、これを知っている企業さんは、できるだけシェアされ、そのシェア上でコメントが展開されるようなコンテンツを作るよう心がけているところもあるようです。そのほうが、「いいね!」数が伸びやすくなりますからね。でもこれは、次の2つがどちらも「いいね!」ボタン上では「1000」と表示されることを意味します。いいね800回、シェア200回 = 表示いいね!数は1000いいね0回、シェア1回、シェアへのコメント999回 = 表示いいね!数は1000また、シェアは公開されている必要はありません。だから、ボタンに表示される「いいね!」数を水増ししたかったら、水増ししたいURLをFacebook上で「自分のみ」でシェアして、そのシェアに自分でコメントを付けていけばいいのです。コメントの中身はなんでもいいのです。5分もあれば、1文字コメントを1000件ぐらい付けられます。これで、「1000いいね!」ページのできあがりです。 念のために記載しますが、こういった「ユーザーを騙す手法」は対策のために解説しています。決して自分で行ったり、代理店にやらせたりしては、いけません。今のところ、こうした悪質な手法で、見せかけの「いいね!」数を増やしているところは目立っては見つかっていないようですが、「3000いいね!を獲得した人気のコンテンツ」といった触れ込みがあっても、そのまま信用しにくくなってしまいます。一時期、Facebookページへの「いいね!」数を水増しして見せるのに、海外のユーザーにお金で「いいね!」させる会社がありました。それはそれで悪質ですが、Webページ上の「いいね!」ボタンの数を増やすだけなら、自分だけでお金もかけずにできてしまうので、さらに性質が悪いですね。さらに言えば、そのシェアの投稿を削除してしまっても、「いいね!」ボタンに表示される数は減らないのです。つまり、水増しの証拠を消すこともできるのです。では、ページを見る側は、どうすればいいのでしょうか。いいね!ボタンの数の内訳を調べるブックマークレット実は、Webページへの「いいね!」数の内訳を調べる方法があります。「いいね!」数の内訳は、次のブックマークレットで確認できます。Facebook「いいね!」数の内訳このブックマークレットの使い方1.まず、上のリンクを「ブックマークレット」としてブラウザに保存しておきます。 Firefox: リンクを右クリックして[このリンクをブックマーク]IE: リンクを右クリックして[お気に入りに追加]Chrome: リンクをブックマークバーにドラッグ&ドロップ 2.いいね!数の内訳を見たいページを、ブラウザで表示します。3.さきほど保存したブックマークレットを実行します。すると、次のように、数の内訳が表示されます。 これを見て、いいね!数やシェア数と、コメント数のバランスを確認できます。「いいね!」や「シェア」がちゃんとあれば、少なくとも「自分だけシェア+自分でコメント」による水増しではなさそうだと判断できます。この数は、「FQL」という、Facebookのデータを調べるAPIを使って取得しています(FQLの使い方を知りたい方はこのURLを見るとわかりやすいです)。水増しに関係なくても、数字の内訳は見ましょうこのブックマークレットは、「いいね!」数の水増しとは関係なく、企業のマーケターにとっては役立ちます。というのも、「いいね!」の数が多い、評判が良かったコンテンツが、実際にどのような評価だったかを、少しだけ調べられるからです。考え方は上の場合と同様です。「いいね!」数が多かったコンテンツがあったら、その「いいね!」数の内訳を調べます。コメント数の比率が普段より多かったら、もしかしたら反論や関連トピックがコメントで展開されているかもしれない、ということです(その中身は、ほとんどの場合は確認できないのですが)。また、「いいね!」数やシェアへのコメント数に対して、やたらと「シェア」数が多かったら、知人がシェアしているのをFacebook内でそのままシェアする「お付き合いシェア」かもしれません(コンテンツを見たら、まずシェアよりも「いいね!」するでしょうから)。そういう記事は、「いいね!」数が増えても、意外と実際のページビュー数が伸びなかったりするものです。ただし、他人の「シェア」に対して「いいね!」をしたら、それもボタン表示の数の内訳として「いいね!」のほうに入るようです。なので、いいね!数の伸びに対してページビュー数が伸びない場合、そっちの「お付き合いいいね!」が増えている可能性があります。知ってる人は知ってる、でも知らないとうっかり姑息な手法でだまされてしまう、そんなFacebook「いいね!」数のカラクリのお話しでした。あなたはご存じでしたか?「いいね!」自分で増やせる
↧