さんさろ

さんさろ

プロダクトエンジニアの雑記&技術、たまにドイツ

ジャーマンレイルパスを使って賢くドイツ旅行

German Rail Pass

前回行った時は、どこで買って行ったんだったか…ちょっと忘れてしまいましたが、これがあるとお得だし便利なので、国内で買っていくことにしました。

主に自分用のメモ。

 

どこで買うのが一番オトクなんだろうなぁ

どこで買うのが一番安いのかは分かりませんが、とりあえずざざっと見て安そうだったこちらのネットストアで今回買いました。

www.ohshu.com

MAXVISTA TRAVEL というそうです。H.I.S のサイトからこっちに飛んできました。

フレキシータイプ5日間2等で ¥30,900 (=230ユーロ)。

送料無料でクレジットカード決済が出来るのでここにしました。

 

余談ですが、RAILEUROPEという、検索して結構上の方に出て来てて、サイトも今風な感じのとこで買おうかと最初考えてましたが、決済まで進んだ所で送料&手数料が合わせて ¥3,000 かかるということで止めました。

ここだと、同じチケットでも ¥34,900 のようだったので、少しは MAXVISTA というサイトの方がお得だったようです。

 

注文確定から手元に来るまで4日

注文完了メールが来てから4日でジャーマンレイルパスが手元に届きました。そんなに心配してませんでしたが、すぐに届いてとりあえずひと安心。

ジャーマンレイルパスには、自分の名前が印字されています。

 

恐らくジャーマンレイルパスのパンフのコピーだと思われるものも入ってました。カラー刷りだし、意外に丁寧ですね。

 

 

配送は、「宅急便コンパクト」という、少し薄手のダンボール地のパッケージに入れられて送られてきました。

 

本当にお得か

今回、私はジャーマンレイルパスを買う前に、ドイツ鉄道のサイトで自分が使う予定の電車を一通り調べました。

https://www.bahn.de/p/view/index.shtml

英語もあります。

現地行って電車の時刻表調べるのは怖いので、私は概ねいつもどの電車に乗るかを事前に調べて行きます。

いくら電車から風景眺めるのが好きだとは言っても、4・5時間を超えるような長距離は流石に ICE(=新幹線みたいなもの)使わないとしんどいので、長距離は ICE 使って、それ以外は快速や普通列車を使うようにした計画だと、

  • ICEを含む行程が2日
  • それ以外が3日

で、合計が 314 ユーロになりました。

1ユーロ ¥130 で計算しても、¥40,820 です。

ジャーマンレイルパスのフレキシー5日2等が ¥30,900 ですので、まあ単純計算で1万円くらいは節約出来る計算ですね。

ICE 含む行程が2日しか無いのにこれですから、もっと長距離を移動してICEを使う場合は更にお得になるでしょうね。

逆に短距離ばかりだと割高になるようですので、自分の旅程を見てご検討されるのがよいかと。

 

注意点?

細かい使い方は説明書に書いてるので、それを見れば概ね問題ないと思います。(最悪、駅員さんに聞けばいっか、と思ってる…)

とりあえずジャーマンレイルパスを使い始める一番最初の日だけ、窓口でバリデーションをする必要があるので、初日に電車乗る時は窓口開いてる時間に駅に行く必要があります。そんなに早起きするつもりないので、今回は大丈夫かな。

国内でもバリデーションしてもらうことは可能のようですが、そのために手数料払うのちょっとヤだしなぁ。どうせフランクフルトから乗るのだし、Frankfurt Hbf. の窓口でバリデーションしてもらう予定です。

 

あと前回どうだったかホント覚えてないんですけど、どうやらカバー的なのは取ってはいけないらしい。前回もそうだったかなぁ。忘れた。

↑カバーというか、ペラい説明書?的なのにジャーマンレイルパスがホッチキスで留められてます。多分カバーってこれのことだと思うんですけど…。カバーの説明書には日本語の説明もあります。

 

電車の時刻は余裕を持って

よしよし、鉄道はこれで大丈夫。

ドイツの鉄道はヨーロッパの中でも時間通りに走る、とは言われていますが、日本の電車に慣れた私にはそれでも遅延が多いイメージ。イタリアとかスペイン行ったらもっと凄いんでしょうね……行ったことないですけど。

余談ですが、私は以前、電車の乗り継ぎが出来なくて、その日の内に予約していた宿のある町に辿り着けなかったことがあります。乗り継ぎは20分もあったのに遅延で次の電車に乗れず、しかもそれが最終電車なのに待ってくれないという!

夜の20時頃から宿探しを始め、なんとか町の外れにあるユースホステルに部屋を取れた時は安堵しました。一人旅だったのに、無謀な計画を立てたものです…。

以来、電車の移動は基本的にその日の頭に済ませるように計画するようになりました。

 

時間には余裕を持って、ドイツでの鉄道の旅も楽しみたいものです。

 

PHPカンファレンス福岡2018に行ってきました

ぺちこん福岡2018!

行ってきました、ぺちこん in 福岡!

勉強になったなー。楽しかったなー。いろんな人にお会い出来てよかったなー!

勉強した気になって満足しないで、これを次に繋いで行かねばと思う所であります。

 

前日は bit forest 様にお邪魔しました

福岡へは前日の金曜日に入りました。ツイッターで続々とペチパーの方々が福岡入りしてる様子が流れてきて少しずつわくわく感が高まります。

福岡行きの高速バスに乗り込んだ所で、@tomzoh さんから会社見学(?)のお誘いを頂いて、天神に付いてから急遽 @cakephper さんの bit forest 様にお邪魔することに。

既に幾人かのペチパーの方々が集まっていて、少し話なんかをしつつ、これから前々夜祭に行く人、ご飯食べ行く人に分かれるようでした。

私はドイツレストランに行く予定だったので、その日はそこでお別れ!

 

当日!

気になるセッションが目白押しで、頭フル回転させて話を聞いていました。

いやーぽんこつにも分かる初級編のすごいタメになる話もあり、やっぱり難しくて「……分からん\(^o^)/」なセッションもあり、いろいろでしたけども、どのセッションも皆様のPHPに対する愛!が伝わって来る内容で、本当に勉強になるし、モチベーションがガッと上がりました。

ログの話は「へぇ〜〜〜〜」の連続で、今まで普通にアクションログ機能とか作ってたけど、もっとちゃんとロギング考えないとダメだなと思い知らされました。反省…。

LTは、ほんと皆さんレベル高くて聞いててすげーって毎回なります。きっとたくさん練習されてるんだろうな…!オチまでしっかりついてて、面白くて毎回大笑いさせてもらってます。

 

そういえばノベリティのバッグがすんごい可愛くて、これは買い物バッグに使おうと思ってツイートしたら、

なんと閉会式で @akase244 実行委員長さんの スライドに出てて「!!(゚∀゚)」ってなりました。もっとちゃんと写しておけばよかった。

そして、楽しい時間ほどすぐ終わってしまうのです……。

 

懇親会→二次会

もちろん懇親会も参加です。今回は懇親会中のLTもなくて少し残念な気もしましたが、その分たくさんの方とお話出来たのでよかったです。

いや、ほんと、会う人会う人「あ、あの本書いてらっしゃる…?!」ってなって何なんだろうこれと思いました。すごい人がいっぱいいてチキンはビビリっぱなしです。

 

そしてもちろん二次会も行きました笑

去年は4人でのんびりでしたが、今年は結局何人居たんだろう、30人くらい?で結局最後はお店貸し切り状態でした。

 

後夜祭

そして3日目\(^o^)/

後夜祭です。Fusic 様であった後夜祭に行ってきました。

表の入り口が閉まっていてうろうろしていたら、歌って踊れるペチパーさんが迎えに来てくれて、ついでにオフィス入り口でポーズ取ってくれましたヽ(`▽´)/

テーブルついてパソコン立ち上げて、まずは乾杯ww

@mao_sum さんに Vue.js の考え方教わったり、YYPHP のSlack グループ教えてもらったりして、13時からはいろんな方のLT(セッション?)を聞きながら再び勉強タイム。

とりあえず、私が Webエンジニアって名乗るの烏滸がましいなと思いました(´・ω・`)

自分の世界狭すぎ。不勉強が際立っていて、恥ずかしい限りです。ダメだ、勉強しなきゃ。技術書じっくり読み込まなくては…。

 

また来年…!

今回もとても楽しく、とても勉強になったり考えさせてもらったぺちこんになりました。来年も開催されるみたい?!なので、来年は少しは成長した姿でまた皆さんにお会い出来るように、日々経験を積み重ねて行きたいです。

 

最後になりましたが、PHPカンファレンス福岡2018を開催するために尽力してくださったスタッフの皆様、

本当にありがとうございました!m(_ _)m

とても楽しく、大変有意義な時間を過ごすことが出来て、これからの生活の活力をもらいました!

 

よーし、またこれからがんばるぞーー!!

夏のドイツへ行く時の必需品

ドイツにビール飲みに行ってきます

この前の記事でも書きましたが、ドイツ行ってきます。主に、ビール飲みに\(^o^)/

あとは、友達やホストファミリーに会いに。

もう4年くらいドイツに行ってなくて、そろそろ行きたいなぁと思っていましたので、有給とって遊んできます。

ドイツ行くに当たって、これはあった方がいいよなぁと思うものを主観でまとめました。主に自分用。

 

私的、夏のドイツ旅行の必需品

  1. ボディークリームなどの乾燥対策用品
  2. 肩掛けバッグ
  3. 長袖の上着
  4. デビッドカード
  5. スーツケース用のポータブルなはかり

 

1.ボディークリームなどの乾燥対策用品

なんと言っても個人的にはこれがダントツ1位です。

ドイツは乾燥しています。夏ですけど、乾燥しています(場所にもよるでしょうが)。日本と違ってからっとした暑さですので、全然むしむし感がありません。そのせいか空がとても澄みきった青で、私はドイツの夏空が大好きです。

若い人はいいかもしれませんが、私は25歳でドイツに行った時に既に乾燥で足や手が痒くてしょうがありませんでした。

乾燥しやすいタチだと思ったことは無かったんですが…。

なぜか耳たぶが異様に痒くなって「毛虫にでも刺されたんかな」と思っていたのですが、顔用の乳液を付けるとあっさり治ったので、「まさか乾燥……だったのか……( ゚д゚)」と思ったりもしました。

水が硬水なのも少しは影響があるんでしょうか…?それは分かりませんが。

ドイツでボディークリーム買ってももちろんいいんですが、旅行者のようにドイツで暮らした事が無い方では、まずどのお店に入れば目的の物が手に入るのか、探す所からして大変だと思います。

せっかくの旅行に、生活用品探しで時間を潰すのは勿体無いので、使い慣れたものをお持ちになることをおすすめします。

 

2. 肩掛けバッグ

たまに背に負うタイプのリュックをお持ちの方がいるんですが、ドイツがいくら欧州の他の国に比べて治安がいいとは言え、空港や駅など人混みではやはりスリの類は居ます。

背に負うリュックだと、人混みなどでは無防備ですし、その場合毎回お腹の方にリュックを抱えるはめになります。いえ、それでいいならいいんですけども。

私は海外旅行の際には肩から斜めがけ出来るバッグを持っていき、人混みなどでは必ず体の前にバッグを持ってくるようにしています。

上着や飲み物を入れられるように、少し大きめのものがおすすめです。私的には、

縦22〜30cm x 幅 30cm x 底のマチ 12〜20cm

くらいのもの(笑

以前ずっと愛用していた肩がけバッグがボロボロになってしまったので、今回は anello の肩掛けバッグを買いました。ちょっと大きいかなーと思ったけど、まあ飛行機ではPC入れなきゃだし、かさばる上着も簡単に入れられるので、このくらいでいいか。

 

3. 長袖の上着

ドイツの夏は意外に寒い事が多いです。これも場所によりますし、めっちゃ暑い年もありますので、当てはまらないこともあるかとは思いますが。

私がドイツに行く時は、少しでも雨が降ると17℃とかになって「さすがに半袖じゃ厳しい…(´・ω・`)」となることが大体です。両親とドイツ旅行に行った時は、寒くて急遽現地で厚手の長袖フリースを調達しました。寒くて。

それ以来、結構厚手の長袖を必ず1着は持っていくようにしています。

前回の写真眺めてると、私大体長袖の上着着てますね。夏らしい薄着してる写真あんまりない…。8月中旬でしたけど。キルトの冬用ダウン来てる写真もある……寒かったんだな。(アルプス登るので持って行ってたんですが、アルプス以外でも着てる写真が何枚か…)

今夏はユニクロなんかで売ってる、折り畳めてすごく薄いけど暖かいダウンを持っていく予定です。

 

4. デビッドカード

これは別に銘柄・種類は何でもいいんですけど、要は「日本円で入金して、現地のATMで現地通貨でお金を引き出せるカード」です。

以前はトラベラーズチェックとか律儀に持って行ってましたけど、もうこれいらないですね。日本円でお金入れとけば、現地通貨をATMで引き出せます。しかも基本24時間。超便利。

いちいち空港や大きい駅などの両替所に行かなくていいし、大金を持ち歩かなくて済みます。

ドイツ国内ですと結構色んな所にお金をおろせるATMがあって、大きい駅やショッピングモールだとまあ間違いなくあるので、ちょっとした時に下ろせます。

ちなみに、私はいつも楽天銀行のデビッドカードです。便利。

 

余談ですが、2012年のワーホリ中は1ユーロが90円台とかいうパラダイスのような時期があって、1ユーロ=100円で換算出来てとにかく楽でした(と言っても、慣れてくると日本円換算で考えなくなりますけど)。

現地に住む日本人の方は「これじゃ日本に帰れないじゃない」とぼやいてましたけど。

 

5. スーツケース用のポータブルなはかり

スーツケースは大体1個あたりの重さが決められていますので、出国前は自分の家で体重計などに乗って重さを測りますよね。

で、帰る時に測る場合にこれがあると便利です。

帰りの方がお土産などがたくさんあって、まあ大体計量でオーバーする人をたくさん見てきましたが、自分の感覚だけで測るのは流石に無理があるので、ポータブルなはかりがあると便利です。

吊り下げ式のものが色々売っていますので、集団で行く時も一つあると安心ですね。

 

 

余談

必需品ではありませんが、これはあったら便利、と思うもの。

  1. 小銭入れ
  2. 二日酔い対策(笑
  3. グラサン

 

 1.小銭入れ

ドイツではトイレは有料です。20セントから高い所は1ユーロまでと幅広いですが、駅のトイレなどでもチップを払わないとそもそもトイレに入れないとか、スーパーのトイレの出入り口に掃除婦が座ってる所もあるし、扉に小銭入れがあってお金入れないと扉が開かないトイレなどもあります。高速道路だけ例外的にとても高くて、2ユーロくらいかかります。でもその分とても清潔。

レストランやカフェでもチップを払いますし、何かと小銭は入り用ですので、小銭入れがあると便利かも。

必需品、ではないですけど、私は大金の入ってる財布をいちいち出すのもセキュリティ的に好きじゃない(スリは財布をどこにしまったかを見ていてスリを仕掛けてくるらしい)ので、小銭入れを持って行きます。

 

2.二日酔い対策

これね。最近あんまり量も飲めなくなってきて悲しい限りなんですが、でも恐らく毎夜ドイツビール飲む予定ですので、これは持っていかないとね。飲むなら1杯じゃないだろうし。

何を持っていくかは検討中。液体(というかガラス)は持って行くのが重いし割れるしで大変なので、錠剤で何かいいのを持っていきたいところ。

マースジョッキ(=1L)ではさすがにもう飲めないかもしれないなぁ…。

 

3.グラサン

ドイツの夏はカラッとした暑さです。そのせいか分かりませんが、とにかく日差しが眩しい!いや、日本も眩しいですけどね。

日本では日傘さしたりしますが、ドイツで日傘をさすとお水の人かと思われるらしい(ドイツ語の先生談)し、折りたたみでも海外旅行に日傘持ってくのは大変だと思うし。グラサンあると便利です。ドイツ人もしてる人多い。

まあ、グラサンくらいなら日本と同じく10ユーロくらいで売ってるので現地調達してもいいですけれども。

 

 ドイツは観光大国

ドイツは観光大国です。きちんと準備して、怪我や病気、事故などがない楽しい旅にしたいものです。

 

JAWS-UGおおいたの勉強会に参加して来ました

クラウドの勉強会!

  大分にもこんな勉強会あったなんて知りませんでした…orz もっと早く知りたかった。

 jawsug-oita.doorkeeper.jp

Facebook で友達になってる方が、自分は行けないけど是非行ってみて〜と、この勉強会について記事を書いていたのがきっかけで知ることが出来ました。

AWS は、以前案件で導入前試験用に EC2 上にサーバ立てて、一時的に DNS 構築して使ってたくらいしかしたことがなくて、自分で作ったアプリを公開する時に AWS 上に乗せられたらいいなぁ…!と思っていたので、今回参加してみました。

今回は結構初心者向けのお話から、結構でっかいスケールのお話まであって、全然知らない世界のお話を聞けたりして面白かったです。

blog.cvc-lab.com

勉強会は遠方から来ている方も結構居て、懇親会や二次会でも面白い話が聴けてよかったです。モチベーション上がりました。

(各セッションに対してなにか感想言えるほど理解してない本当の初心者なので、各セッションの細かい内容については端折ります………)

 

とりあえず、今 Laravel5.5 で作ってる Webアプリ(全然大したものでないけど)をAWS に乗っけて公開するのが目標です。

まずは t2-micro の無料利用枠でインスタンス作ってサーバ立てる所からですかね。

勉強のために課金は惜しまないつもりではありますが、そうは言っても、

安く済むならその方が良い!\(^o^)/

なんかたまに技術ブログとか見てて云十万とか云百万の請求が来た等々の話を聞いたりするので、そうならないように最低限のルールとかからまずは勉強してから取り掛かりたい所であります……!

 

来週はぺちこん!

そして来週は PHP カンファレンス福岡です!超楽しみです!

phpcon.fukuoka.jp

前夜祭も超行きたかったけど、今回は諦めました……。゚(゚´Д`゚)゚。

でも当日の懇親会、後夜祭は行きます。楽しみだなぁ!

 

県外に本籍がある場合の戸籍抄本取得と、パスポート更新

ドイツ行ってきます

今夏(2018年夏)にドイツ旅行を予定していますので、今色々準備中なのですが、肝心のパスポートの期限を確認したら切れてましたので、更新しました。

備忘録がてら、手順を残してみます。

 

パスポート取得に必要なもの(基本)

※必要なものの詳細は各自治体ホームページなどで確認してください

  1. 戸籍抄(謄)本
  2. 申請書:パスポートセンターなどにあります
  3. 写真
  4. 本人確認書類
  5. お金

 

 

 

手順

1)戸籍抄本を取る

これが一番めんどくさかった。

私は本籍地が県外にありましたので、本籍地の市役所(か区役所)に自分で取りに行くか、郵送で取り寄せる必要がありました。代理で誰かに取りに行ってもらうという手も無くはないですが、委任状などが必要なのでそれはそれで面倒です。

本籍地が県内であれば、市役所に行って戸籍抄本を取って、その足でパスポートの申請に…なんてことも出来るのですががが。

私の本籍のある福岡市は郵送での証明書等の交付が出来ましたので、郵送で取り寄せる事にしました。

郵送で取得する際に同封するもの
  1. 郵送での戸籍抄本発行の申請書
  2. 本人確認書類:免許証のコピー
  3. 定額小為替450円:郵便局でゲット
  4. 返信用封筒(切手を貼る)

申請書はホームページからダウンロードして印刷して、私の場合は自分の分だけの戸籍抄本が1通必要でしたので、そのように記入しました。

本人確認書類の免許証はコンビニで両面をコピーし、定額小為替は郵便局で購入しました。定額小為替って手数料100円もするんですね。

定額小為替-ゆうちょ銀行

あとは返送用の封筒には自分の住所と名前を書いて、82円の切手を貼ります。返送先の住所は住民票にある住所にしか送れないとのことで……。

 ……この部屋に長く留まる気はなかったので、住民票は実家のままなんですよねぇ……。。。

揃ったら①〜④を封筒に入れて、郵送。

もうこの段階で既に色々とめんどくさい。

3日後に実家に返送されて来た戸籍抄本を取りに行って、無事ゲット。

 

2)パスポートセンターへ行って申請

写真を準備し、取り寄せた戸籍抄本と免許証、古いパスポートを持っていざ市役所のパスポートセンターへ。

写真は事前に、700円で箱に入って撮れるやつ?(名前なんて言うんだろ…)で自分で撮って持っていったんですが、パスポートセンターでも撮る施設があったのでここでも良かったなぁと後で思いました。

いや、まあ、値段は少し高いかもしれませんが(未確認)。写真撮ってくれる施設があるかはパスポートセンターに依ると思うので、確認した方がよいですね。

 

パスポートセンターは昼に行ったこともあってか全然空いていて、並ばずにすぐに窓口に案内されました。

古いパスポートの期限が既に切れていたので、更新ではなく新規申請です。

まずはパスポートセンターで渡された申請書に必要事項を記入します。古いパスポートを持っている場合には、古いパスポートの旅券番号も記入します。

必要事項を記入して窓口に戻り、写真を切ってなかったので「ハサミありますか」と聞いたら「こちらで切って貼り付けますのでそのままで良いですよ」とのこと。慣れたもんですね、ありがたい。撮った4枚セットの写真そのままお渡ししました。

んで、申請書の内容が合ってるかを確認するために免許証を提示して、名前と生年月日を聞かれて、その場はおしまい。

1週間後に出来るので取りに来てくださいという説明と、ピンクの引換券をもらいます。支払いは受け取りの時に、とのことでした。

 

ちなみに、古いパスポートはこうなりました。ちょっと分かりにくいですが、VOIDと穴で書かれてます。入出国のスタンプや、ワーホリのビザの貼ってあるページなどは避けて、電子データの入った部分や旅券情報の載ったペカペカのページだけVOIDと穴が空けてあります。

 

3)受け取り

  1. お金:10年用なので16,000円
  2. 引換券:申請の時にもらったピンクの紙

を持って、1週間後、受け取りに行きました。私が申請したパスポートセンターはジャスト1週間でした。また昼に行きましたが、やはり全然空いていてすぐに受け取り窓口へ。昼は狙い目なのかも??

そこで名前と生年月日を口頭で確認し、パスポートの電子情報を画面で見せられますので、内容を確認。

パスポートの取扱について説明を受けて、無事パスポートをゲットです。

やはりネックは戸籍抄本を取る所ですね、あれが一番面倒くさい。居住地と本籍地が同じ県内だともっとスムーズなんでしょうけども。

まだいろいろ準備しなきゃなものがあるので、さくさく進めていきましょうー。 

Laravel5.5でVue.jsを使うまで

Laravel5.5 で Vue.js を使う

Laravel には Vue.js が標準で入っていると聞いていたので使ってみたいなーと思ってました。デフォルトで入ってると言っても、使うまでにちょびっと準備が必要ですので、その手順をメモします。

ちなみに、本家はこちら。

JavaScriptとCSSスカフォールド 5.5 Laravel


環境

  • Laravel5.5 (Vue.js 2.1)
  • CentOS 6.9


JS の依存解決はNPMを使っている

PHP の依存解決はご存知の通り composer ですが、JS の依存解決は npm を使っているらしい。

開発時点の元としてほとんどのアプリケーションで役立つだろうBootstrapとVueを提供しています。これらのフロントエンドパッケージをインストールするため、LaravelはNPMを使用しています。

composer で言うところの composer.json は、プロジェクトルートに package.json というのがあって、

JavaScriptアプリケーションを構築開始するために役立つよう、vueやaxiosのようなパッケージがデフォルトでLaravelのpackage.jsonファイルに含まれています。自身のアプリケーションの要求に合わせ、package.jsonファイルへ自由に追加、削除してください。

とのこと。

んで、Laravel5.5 のプロジェクト作った時点で Vue.js はすでにpackage.json に含まれていますので、プロジェクトルートで

$ npm install

を叩いてあげればいいんですけど、もちろん npm が入ってないと動きません。

なので、先に npm を入れます。


npm を入れる

そもそも、npm とは Node.js のパッケージを管理するツールのこと。

参考 便利なパッケージ管理ツール!npmとは【初心者向け】 | TechAcademyマガジン

CentOS6.9 に yum で入れます。

参考 node.jsをyumでインストールする(centos6.5) - Qiita

リポジトリは epel を使うとするところが多かったんですが、epel を使って入れると

$ node --version
v0.10.48
$ npm --version
1.3.6

「なんかバージョンがいやに低い……??(´・ω・`)」となって、とりあえず $ npm install 叩いてみてたら、見事にエラー出まくりで2時間くらいハマりました。

んで、多分これはそもそも npm のバージョンが低いな?と思って、nodejs と npm の入れ方を変えました。

参考 CentOSに新しめのnodeをインストールする | ハックノート

$ curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -

で、epel が入ってて途中でトランザクションのコンフリクトが起きたので、そうならないために、

$ pwd
/etc/yum.repos.d

こいつの中にいる、epel リポジトリを使わないように

enabled=0

リポジトリ設定ファイル中のenable をすべて 0 にして、

# yum install nodejs npm

したら、新しめのがインストール出来たようです。

$ node --version
v10.2.1
$ npm --version
5.6.0


npm を使って vue.js を入れる

んで、いざ。

プロジェクトルートで、以下を叩きます。

$ npm install
.
.
.
⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly
  ⚠ pngquant pre-build test failed
  ℹ compiling from source
  ✔ pngquant pre-build test passed successfully
  ✖ Error: pngquant failed to build, make sure that libpng-dev is installed
    at Promise.all.then.arr (/home/vagrant/common/project-name/node_modules/pngquant-bin/node_modules/bin-build/node_modules/execa/index.js:231:11)
    at process._tickCallback (internal/process/next_tick.js:68:7)
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! pngquant-bin@4.0.0 postinstall: `node lib/install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the pngquant-bin@4.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2018-05-26T09_14_31_922Z-debug.log

あるぇ、またエラってる\(^o^)/

✖ Error: pngquant failed to build, make sure that libpng-dev is installed

とりあえずなんか足りないみたいなので、入れてあげる。

# yum install libpng-devel

これ入れてから再度チャレンジ。

$ npm install
npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5

> pngquant-bin@4.0.0 postinstall /home/vagrant/common/project-name/node_modules/pngquant-bin
> node lib/install.js

  ⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly
  ⚠ pngquant pre-build test failed
  ℹ compiling from source
  ✔ pngquant pre-build test passed successfully
  ✔ pngquant built successfully
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@1.2.0 (node_modules/fsevents/node_modules/rc/node_modules/minimist):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, open '/home/vagrant/common/project-name/node_modules/fsevents/node_modules/rc/node_modules/minimist/package.json.3224473585'

added 120 packages in 64.377s

WARN は出てるけど、とりあえず行ったっぽい。

あともう一息。

$ npm dev run
.
.
.
 95% emitting

 DONE  Compiled successfully in 14075ms                                                         09:22:57
.
.

おお、なんとか終わったっぽい。

$ cd /home/vagrant/common/project-name/node_modules
$ ls
.
.
vue
.
.

ファイルがいっぱい出来てます。こっちにも。

$ cd /home/vagrant/common/project-name/public/js
$ ls
app.js

ふむ。

使い方はよくわかりませんが、それはこれから勉強していくということで。

これで一応、vue.js を使う準備が出来た、のかな…。多分。


参考

Laravel5.5でVue.jsを使ってみた - あ、しんのきです


Lumen5.5で自分で作ったClassを使う

composer 管理でない、自分で作った Class を使う

やりたかったのは、

app/Hoge.php

にある自作の Class を、

app/Http/Controllers/FugaController.php

で使いたかっただけ。

やり方

1. 自作クラスに namespace を設定してあげる。これ抜けてたので少し考えてしまった。

<?php

namespace App;

class Hoge {
.
.

2. あとは普通にcontroller 内で使うだけ

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Hoge;

class FugaController extends Controller
{

ままなりませんなぁ。

Lumen5.2からsessionは入ってないらしい\(^o^)/

Lumen5.5 で session 使おうとしたんですけど

自分が趣味で作ってるサイトで、スクラッチで書くのは嫌だけど、重たいフレームワーク使うのもヤダ。なので Lumen5.5 を使おう!

ということで軽量と噂の Lumen でもりもり組み込んでいたんですけれども。

Laravelでやっているように、

HTTPレスポンス 5.5 Laravel

return redirect('/path')->with('flashMsg', '成功!');

って感じでリダイレクトにフラッシュメッセージを持たせようとしました。

そうしたら……

Call to a member function flash() on null

こんなエラーが!

なんだろ……?null から flash() を呼び出してる?そら出来ませんわな。でもなんで null ?と思って色々調べていたら、本家に書いてありました。

本家:Release Notes - Lumen - PHP Micro-Framework By Laravel

As such, sessions and views are no longer included with the framework. If you need access to these features, you should use the full Laravel framework.

「Lumen5.2 から sessions と views はフレームワークに入ってないよ。これ使いたかったらフルスタックなLaravelの方使うべきですね」って………

マジで??(´・ω・`)

フルスタックな必要無いからLumenで〜とか思ったけど、フルスタックな必要あった感じなんですかね。いや、session さえあればいいんですけどね……?

そうか、しかし、session 無いと困ったな。

Laravel でも、いいけど……好きだし。でも、そんな、フルスタックな必要は無いんですって……session はいるけど!


一応回避方法もあるにはあるようですが

lumen 5.2 でもSession使う - Qiita

うーん、公式さんの言う通り、Laravel ………使うか……??

Bitbucket で障害がありました

いえ、それだけです。

これがリリース前日とか当日じゃなくて良かったです。

 「プリリクエスト」になってます。急いでたのかな。

エラー内容、もうちょっと具体的だと嬉しかったんですけど……。最初、私が何かしたのかと思ってちょっと焦りました。

 

Bitbucket さんの障害のようで。

 

 もうこうしたい気分であります……

Butbucket さん、がんばってーー!!

CakePHPでリファクタリングする際にとりあえず見る所

やっぱりDB周りです

今引き継いでやっているプロジェクトがCakePHP2系で、そろそろ△年経つシステムですのでちょこちょこリファクタリングすることもあるのですが。

以前、「別サーバから API を叩きに来るタイミングでLAが凄い上がるのでリファクタリングしましょう」という課題があって以下の事をした時に、LAが10分の1だか15分の1だかになった事があって、「リファクタリング……だいじ………!!」としみじみと思った経験から、CakePHP に限らず DB とのやり取りには気を使うようになったのでした……。

影響範囲が少ない時には、結構他の課題と一緒にやってしまいますが、「処理重くね……?」と思った時にまず見る点を備忘録的にちょっとまとめてみます。

多分、CakePHPer さんにしたら、「え……今更……?」という内容だと思いますががが。

1.データ取得時の recursive 設定

これ超大事。だと思う。

https://book.cakephp.org/2.0/ja/models/model-attributes.html#recursive

そもそものお話ですけど、CakePHPの公式的には、AppModel で recursive を -1 に設定しておきましょうとなってます。

recursive レベルは -1 にしておいたほうがよいでしょう。 こうしておくと、不要な関連データを取得してしまうのを回避できます。 これは、おそらく find() を呼び出すほとんどの場合に望ましい結果になります。 必要な場合にのみ recursive レベルを設定して関連データを取得させるか、もしくは Containable ビヘイビアを使いましょう。

AppModel に次のような設定を追加します。:

public $recursive = -1;

まあね、最初からそうなってればいいんですけどね。なってないんだからしょうがないですよね。

リファクタリングでこれするには、流石に怖すぎて出来ないかなぁ……(;´∀`)

(数えたらモデル94個あった……)

なので、まあ、こういう対応が必要になってくるわけなんですが……。

recursive 設定されていない場合のデフォルトはレベル1です。つまり基本全部の find で recursive がレベル1なわけです。困った。

例えば、10個近いテーブルとリレーション(CakePHPだとアソシエーション)張られてるのに recursive 設定されてなかったりとか、たまに

$array = $this->ModelName->find('all', array(
    'recursive' = 2,
    ...
));

とかなってると「……………\(^o^)/」ってなります。いや、あのね。それね、全部………ぜーーんぶ取ってきてますけど、それホントにいります?ってなります。

いくつもテーブルがぶらさがってて、しかもそれが結構な量だと洒落になりません、マジで。

現に、これで凄まじい重さのことがたまに(結構?)ありました。

特にアクションログのような物まで一緒に取って来てると、天を仰ぎたくなります。

あまり情報要らないのであれば、私は大人しく

$array = $this->ModelName->find('all', array(
    'recursive' = -2,
    ...
));

を設定します。 あるいは、

$this->ModelName->recursive = -2;

ただ、これだと肝心の欲しいデータが取れない時があるんですよねぇ。確かに、便利だからリレーション張ってるのに、それ意図的にちょん切るわけですからね。必要な時に取れないのでは困ります。

そこで出てくるのが、これ。

2.ContainableBehavior

そう、データ取得の際にリレーションが深い所の値が欲しい時は確かにあります。けど、recursive が 2 で深い所のを全部取ってくるのは多すぎる。

という時に、recursive は 2 だけど、その中のこれとこれだけ取ってくる、ということをやります。

$this->User->Behaviors->load('Containable');
$users = $this->User->find('all', array(
    'contain' => array(
        'Post' => array(
            'title',
            'modified',
        ),
        'Profile' => array(
            'age',
            'postcode',
        ),
    ),
));

要は、本当に「必要なものだけ」取ってくるわけですよね。理に適ってます。

でもこれ注意する必要があるのは、リファクタリングの際だと特に「本当は Profile の address も必要だったのに!」って怒られたりすることがあることです。

本当に必要なものがちゃんと取れてるのかは、debug などしてデータをしっかりと確認する必要があるということですかね。

「最初からやってくれれば後から数多あるキーを虱潰しに確認する手間も省けたのになぁ〜!(・∀・)」とかは言ってはいけないのです……。

長く使うつもりで、それでも少しずつ、コードを綺麗に、少しでも早い処理になるように、日々リファクタリングしていかねばなぁ、と思った今日この頃。