博多に行ってきた
あんまりPerlにもMacにも関係ない話
- さっき、YAPC::FUKUOKA 2017 Hakata のblogをあげたんだけど、書いている途中で「これっておっさんの一人語りでノイズだわ」って思った部分だけ切り出しました
6月30日 いざ博多へ
- 九州に行くのは2012年のB1グランプリ北九州 以来
- その時は熊本空港に降りた
- 福岡空港は多分・・・7年か8年ぶりくらい・・・?
博多到着
福岡空港着。何回きてもめっちゃ市街地の上を飛ぶのは怖さある。今日は海の中道横断して侵入してくるルートだった。
— sironekotoro (@sironekotoro) 2017年6月29日
博多空港でご飯の選択肢狭くなり中 pic.twitter.com/BmiIKwPvXw
— sironekotoro (@sironekotoro) 2017年6月29日
- 冬に行った新千歳でも工事中だったし、やっぱ2020年のオリンピックに向けて全国の空港で整備が進んでるのかな
- この時点で朝の8時だったので、空港の売店から実家方面にお土産発送
博多散策
- JR博多駅近くのホテルに荷物を預け、日本最高の公園である大濠公園へ歩いて行ってみる
- いつもは博多の友達と一緒だったので地下鉄使ってたけど、一度歩いて行ってみたかった
- 「国体道路」なる太い道を1時間半くらいで到着。
大濠公園のこのスケール、静寂、アクセスの良さ、日本最高の公園だと思う。めちゃくちゃ良い pic.twitter.com/ubQ4ZbKIwh
— sironekotoro (@sironekotoro) 2017年6月30日
5000兆円あったら大濠公園の近くに家買ってすみたい(ささやかな夢
— sironekotoro (@sironekotoro) 2017年6月30日
うわ、大濠公園の中にスタバできてる・・・湖見ながらドヤりてぇ・・・最高じゃん・・・
— sironekotoro (@sironekotoro) 2017年6月30日
- 帰り道(歩き)、前夜祭の会場となるヌーラボさん横のお寿司屋さんでお昼を食べる。
ヌーラボ横のお寿司屋さん、見た目に反して結構お腹膨れた。これに味噌汁ついて810円は安い pic.twitter.com/ahmIHZU6sR
— sironekotoro (@sironekotoro) 2017年6月30日
- ここで川の上にぶら下がってたバイク、落ちちゃったのかな
10年くらい前に来た時は、本当にバイクがぶら下がってたんだけどなぁ。隣のマンションの屋上に引っかかってるのみ。 pic.twitter.com/NIAAIzjxYa
— sironekotoro (@sironekotoro) 2017年6月30日
- いったんホテル戻ってシャワー浴びようとしてビックリした
曇り空と油断した、なーんて思ったが、日焼け止めとか付けたことのない人生だったな pic.twitter.com/O2XliJjbE2
— sironekotoro (@sironekotoro) 2017年6月30日
- 20年ぶりくらいに日焼けした
- この後、皮もむけた
- この日は3万歩も歩いた
7月2日 陥没事故現場
博多駅前の陥没したところ、ここか! pic.twitter.com/RzyWS1cUmb
— sironekotoro (@sironekotoro) 2017年7月2日
柳川へ
- 博多には結構な回数いってて、博多市内の観光名所はだいたい見て回っていたので、YAPCのblogを参考に柳川へ
- 柳川までは西鉄天神駅から特急で1時間ちょっと
- 途中、チェッカーズの出身地として有名な久留米の街を経由。結構大きな街だった
- 平成も30年になろうかというこのご時世、チェッカーズとか知らない人多そうだよなぁ
- 柳川は水郷、水の都といった趣。
- お腹が空いていたので、柳川駅からバスで旧柳川藩主邸の「御花」へ
- 柳川名物「うなぎのセイロ蒸し」をキメました
・関東:背開き→切る→串にさす→蒸す→蒲焼(タレ焼き)
・関西:腹開き→素焼き→蒲焼(タレ焼き)
・柳川:背開き→素焼き→蒲焼(タレ焼き) - どっち開きかはわからないんですが、おいしかったわ〜
- 一食3000円超えるとか、普段の暮らしでは理性ブレーキが効いて無理だけど、それが取っ払われる旅行だからこその贅沢
- 食べた後、川下りして柳川駅へ・・・と思ってたら、どうも駅行きは団体参加貸切しかない模様!!!
- Q.でも川下りはしたい!どうする!
- A.一度駅に戻って川下り
- なお、完全に無駄だったかというとそういうことはなく、御花近くの柳川城跡などを見たりしたのでした
- 盛り土と石垣だけだったけど、堀の近くにあって水城って雰囲気はあった
- 柳川城跡近くで運良くタクシーを拾い、船着き場まで
- 炎天下だったので、幸運だった
- そこから、川下り開始。目的地は御花。さっきまでそこいたよ!
- なお、同乗のお客さんは台湾と韓国の方々
- インバウンドすごい
- 博多もインバウンドの方が本当に多かった
- どういう紹介のされ方してこの柳川にいるんだろう?Japanese traditional old waterfront city とか?
- 船頭さんはご年配の男性の方でしたが、橋をくぐる時には中国語とハングルで「頭を下げて」と言っておりました
- 女性の船頭さんもいるとのこと
- 昔は「川下りなんて年寄りな・・・」って思ってたけど、川から見上げる街の様子なんかが楽しくて、俺も年取ったなーってことに気づきました
- 川下りでせっかく御花に戻ったので、お土産品とか見てたけど、「さげもん」なる雛飾りが綺麗でした
焼き鳥(豚バラ)
- 柳川から博多に戻り、博多祇園山笠の「飾り山」などを見つつ、予約してもらった焼き鳥屋さんへ
- なぜ博多まで来て焼き鳥?というと簡単でYAPC運営のblog見たからですね
【YAPC::Fukuoka 2017 HAKATA】福岡では豚バラは、焼鳥です。(飲み屋情報) - YAPC::Japan 運営ブログ
- 当日付き合ってもらった博多出身の友人によると、焼き鳥屋に豚バラがあるのは「普通すぎて、おかしいと思わなかった」とのこと
- ここで結構飲んで飲んで食べて食べて、おいしかったーってところでこの日は解散
- 帰りに一人でシメのラーメン食べてホテルへ
さよなら博多
- ホテルチェックアウトして、糸島へ
博多きてから、地下鉄の階段をキャリー付きスーツケースが転がり落ちてくの見たの2回目
— sironekotoro (@sironekotoro) 2017年7月3日
- 悲鳴すごかった
う。レンタサイクルには身分証必要だけど免許証も健康保険証もパスポートも持ってきてない・・・
— sironekotoro (@sironekotoro) 2017年7月3日
いま、糸島の「一蘭の森」の無料送迎バスのページ(https://t.co/RBkVCoLGf1)見てたんだけど、最悪なんでご紹介したい。iPhone6plusで縦で見るとこんな感じ。10時30分、10時55分、11時30分、に出発するのかと思ったのよ pic.twitter.com/BReGmrD7rS
— sironekotoro (@sironekotoro) 2017年7月3日
https://t.co/Dpy9Z5GuMr で、10時55分になっても駅前にバス来なくて???って問い合わせたら定刻通りってことで???交通事情もあるかーって問い合わせたら思ってiPhoneをランドスケープモードにしたらこれよ。ほんと酷い。 pic.twitter.com/dW0AO0cvgn
— sironekotoro (@sironekotoro) 2017年7月3日
- レスポンシブデザインでtableの要素が表示されなくなってたぽい
- なお、今は直っております
- 画像ベタ張りで
- ただまー、上記のトラブルもあり、工場自体も観光というには乏しい施設で、「一蘭の森」自体は楽しめなかったなぁ
無料送迎バスのおっちゃんから聞いた、糸島に九州大学が来てからめっちゃ栄えてる、バブル来てるって話が一番面白かった
最後にもう一度、大濠公園を1周してスタバでドヤる
最後にぐるっと回りにきた。大濠公園最高。 pic.twitter.com/3zpLSUyUdZ
— sironekotoro (@sironekotoro) 2017年7月3日
- 松坂投手、大濠公園の近くにマンションを買ったって友達が言ってた
博多の友達から「横浜帰るの?松坂も持ってってよ」などと言われる
— sironekotoro (@sironekotoro) 2017年7月3日
いつもの横浜
#yapcjapan 開催各地のブログ、過剰なまでにグルメ、観光情報を掲載しており「最低一週間は休みとって楽しんでいってね!」って気合い入れてくれるのに、いつも3泊4日くらいしか滞在できず申し訳ない。俺に5000兆円あれば・・・
— sironekotoro (@sironekotoro) 2017年7月3日
横浜家系ラーメン食べて位置情報を修正した pic.twitter.com/IM9lGN1VBS
— sironekotoro (@sironekotoro) 2017年7月3日
YAPC::Fukuoka 2017 HAKATA
いざ博多へ
- YAPCがrebootしてから3回目の開催
- YAPC::Hokkaido 2016 SAPPORO
- YAPC::Kansai 2017 OSAKA
- そして今回の博多、日本全国まわれて本当に楽しい
- いずれ仙台とか、四国とか北陸とかもあるのだろうか
全然野菜
- GMOペパボさんで開催の非公式イベント
- 「全然野菜」ってのは「前前夜祭」を変換するとこうなるってことで
- 「前」前夜祭ってことですが、前夜祭の直前に実施
- 最初、「前夜祭の前日」だと思ってた
2004年からのMuuMuuDomainユーザなんでロリポおじさんの痕跡嬉しい #全然野菜 pic.twitter.com/TAaTryhW99
— sironekotoro (@sironekotoro) 2017年6月30日
- 前前夜祭でおおって思ったのは「OCTOPASS」
- tomohisaoda.com
- システムの「使いまわせるところ」を切り出して、外に出して、しかもサーバの運用はお任せしていくっての、プログラミングだよなぁって
前夜祭
- GMOペパボさんのビルがあった天神は繁華街って感じだけど、ヌーラボさんのある大名はオサレエリアだった
- 前夜祭はひたすらLTのLTソン。司会はuzullaさん
「わたしPerl一行もかけないんですが」うん、いつものYAPCみたいになってきた! #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日「Perl mongerだいたい寿司が好きなので」すごいPerl歴半年でちゃんと把握してる
— sironekotoro (@sironekotoro) 2017年6月30日
#yapcjapan- 前夜祭スポンサーのヌーラボさんありがとうございます!
株式会社ヌーラボで求人してるんだって #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日- 心に残るLTはこれ
5000兆円欲しい時に使えるモジュール #yapcjapan
— sironekotoro (@sironekotoro) 2017年6月30日- Acme::Want5000trillion - search.cpan.org
use Acme::Want5000trillion; my $want = Acme::Want5000trillion->new; print $want->say(); #5000兆円欲しい!
- papix校長の「突然の死!!!」を思い出しましたね
- Acme::SuddenlyDeath - search.cpan.org
use Acme::SuddenlyDeath; print sudden_death('突然の死')."\n" # outputs => # _人人人人人_ # > 突然の死 < #  ̄^Y^Y^Y^Y^ ̄
YAPC::Fukuoka 2017 HAKATA 当日
YAPC::FukuokaではLINEよりフリードリンクを提供しております。参加されている皆さん遠慮なくガンガン飲みまくってください!!オススメは豆乳ラテです。 #yapcjapan java pic.twitter.com/6j06fmPnLo
— LINE_DEV (@LINE_DEV) 2017年7月1日- ヘーゼルナッツラテと豆乳ラテ美味しかったです
- まったく切れない無線LANと駅近ビル、オサレ会場、フリードリンクエリアに会社の勢いを滅茶苦茶感じる
Wifi環境、近年にない快適さでさすがLINEさんって #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日
Be PaaS Monger - クラウドエンジニアの三大美徳、またはIaaSを使わない3つの理由
- 一番聞きたかった、わいとん(@ytnobody)さんの発表
- スライドもMicrosoft OneDriveにおいてあるPowerPointか・・・エディタもVS Code だったし、そりゃMSの人とまちがえられるのも無理ない
運用するな開発せよ、わかる。開発したいのに運用のこと考えて躊躇することいっぱい #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- というか、最近知恵がついてきたので、プログラム書きっぱなしってことができなくなり、自然と運用も気を使わざるを得なくなってて、ほんと書く前に運用を想像して書けなくなって死ぬことが多すぎてなんとかしたいんですよね!!!
- まぁ、開発するよりも運用して使って行く期間の方が長いと言われるので、当然と言えば当然なんですが
金!でもまぁ、人件費、かかる時間含めて全部お金ってもので計算、比較できるよね #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- 物事を判断するときにいろんな基準・軸があるけど、お金もその軸の一つと考えているので、共感しまくり
わいとんさんの「イラストや」使いのレベルが確実に高い #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- 完璧にレベル高かったです
エンジニアリングにおけるコストの削減、そのためのマインドセットがプログラマーの三大美徳 #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日PaaSがプログラマの3大美徳の顕現に思えてきた #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- わいとんさんはMSの人ではないけど、エバンジェリストってこういう仕事なのかもしれないって
ノベルティ
- カンファレンスではいろんなノベルティが配布されるんだけど、これはすげえってのが
やっぱこの、誰もが考えそうでやらなくて、しかしやってしまった、一線を超えた感あるPENCILさんのノベルティの、すごい #yapcjapan pic.twitter.com/ubBfnCBQkm
— sironekotoro (@sironekotoro) 2017年7月1日- 米って
- Perlのイベントで、パールライス、いやわかるんだが、米って
- Pencilさん、すげぇ会社だ
未来のプログラマー達へ ~Perl入学式卒業生から~
- speakerdeck.com
- Perl入学式の先輩のトーク
Webに情報、書店に初心者向けの本が溢れていても、その後聞ける人がいないと詰むんよねぇ・・・ #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日[PR]表記に感じる職業柄感 #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日うちも初めてのYAPC::Asia2013、ハードル本当に高かった。あんときは本編にPerl入学式が組み込まれてたからハードル越えることができたと思う #yapcjapan #yapcjapanB
— sironekotoro (@sironekotoro) 2017年7月1日- ほんと、Perl入学式に一歩踏み込む、その一歩が重いというか、その最初のハードルが高いというか
- 自分の感じ方なんですけどね
- うちの業界だと、勉強会って企業がやってる「セミナー」しかないからってのもあるかも
- 最後に紹介されている参考図書、全部持ってて、とても嬉しくてニヤニヤしてた
その他
- ベストトーク賞は徳丸先生
- はてなブログ最近の開発テクニックと最新の開発風景のご紹介
- speakerdeck.com
- 誰も引き取ってくれないPRに【簡単】【未経験者歓迎】のタグがつき始めるっての、良い
- 職人の判断を自動化、これはプログラマ色ではない自分のところでもやっていけそう
- シール、ありがとうございました!
Perl学業成就に効果のあるお札を貼った #yapcjapan pic.twitter.com/4MNRCLhUlP
— sironekotoro (@sironekotoro) 2017年7月1日
- Web Application Good Error Message
- YAPC::Fukuoka Hakata 2017にてWeb Application Good Error Messageというタイトルで話してきました - その手の平は尻もつかめるさ
- エラーメッセージ1つでも、こんなに考えることがあるんだ、本職エンジニアすげえって思った
- ネコトーストラボさんのサイリウム
サイリウム、自宅に置いてある緊急避難袋に入れてる。こう、なんか光るのあるといいかなって・・・ #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- サイリウムはガラスのコップに入れると乱反射して停電の時に明るいです
YAPC::Okinawa 2018 Onnason
- yapcjapan.org
3月2日、3月3日、恩納村にて YAPC::Okinawa開催! #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日恩納村、土地勘ないから沖縄市から近いのか遠いのかなんなのか謎。楽しみすぎる #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日楽天トラベル、まだ2018年3月の予約できなかった #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日来年3月のYAPC::Okinawaの会場へのアクセス見てる■ アクセス・マップ | 沖縄科学技術大学院大学 OISThttps://t.co/xQIuahV0nv #yapcjapan
— sironekotoro (@sironekotoro) 2017年7月1日- 人生初沖縄になる予定。めちゃくちゃ楽しみ!
WEB+DB PRESS Vol.98 特集2 これからはじめるDocker(2章まで)
Docker使ってみたい!
- そろそろDocker触っておきたいと思って購入
- しかし、利用しているMacと環境構築に必要なVirtualBoxのバージョンが合わずに断念しかける・・・
macOSのアップグレード
- が、これもいい機会と判断し、OSのアップグレードを敢行
- MountainLion(10.8.5)からSierra(10.12.5)
- Q.なぜアップグレードしなかったか?
- A.怖かったから
- バックアップ用に外付けHDDをあけ、macOSのOS領域ごとバックアップ
- 同様に、TimeMachineでもバックアップ
- 上書きアップグレード・・・成功!
思ったよりうまくいった。対応していないソフトがいくつかあったけど、入れ直しでok
- ただし、KeyRemap4MacBook改めkarabinerはSierraに対応しておらず、利用不可。
- あと、Parrallelsもver9だったので、Sierraで起動できず
- AutoChargeInhibitは動いたり動かなかったり。惜しい。
- [AutoChargeInhibit - MacBook Pro 15 early 2011のバッテリーの充電をソフトウェア制御でオン・オフして充電を少し抑制する](http://memogakisouko.appspot.com/AutoChargeInhibit.html)
一番懸念していたSublimeText2やPerl、nodeの環境は維持されていて、これは本当に良かった。
- GW中に買って勉強した「わかばちゃんと学ぶ Git使い方入門」で勉強した時にSourceTreeが入れられず、旧バージョンでしのいでいたのもこれで解決
ソフトインストール、その前に
- macOSのアップグレードに成功した勢いで記事にある通りにVirtualboxとVagrantをインストール・・・その前に!
- ansibleという環境構築ツールにも興味があったので、それ経由で入れてみる。
Web+DB PRESS vol.98 特集2 これからはじめるDocker(第1章〜2章)
- ansible経由でVirtualboxとVagrantをインストール
- 他は記事の通りに進めていく・・・以下は詰まった所
macOS上からVagrantで起動したCentOS7の中で、dockerからhttpdイメージを起動させ、そのhttpdにmacOSからアクセスしたい!
- 長い
- 混乱する
- 酷い日本語
- そんな時はポートフォワード!
- 参考
- この特集に沿って進めた場合、Vagrantfileを以下のようにする
config.vm.network "forwarded_port", guest: 8080, host: 8080
とりあえずここまで
- 第3章からはVPSでの運用の話になるので、今日はここまで。
- 図書館にはDockerを特集したSoftwareDesignがあるんで、それを流し読みしたり
俺のリファレンス
言いたいこと
- Perlのリファレンスは、以下のような「データをまとめたい!」って時に使うと楽になるんだよ
- 配列の中に配列を「配列のまま」入れたい
- 配列の中にハッシュを「ハッシュのまま」入れたい
- ハッシュの中に配列を「配列のまま」入れたい
- ハッシュの中にハッシュを「ハッシュのまま」入れたい
- データをまとめると、どうお得なの?
- 記述が楽
- データ同士での比較が楽
- 本当なの?という疑り深い人、2013年頃の私みたいな人は自分で配列に配列入れたり、配列にハッシュ入れたりして、自分の考えた通りのデータ構造が出来るか、そのデータ構造から要素を取り出せるか、やってみよう!
- ・・・ってことを、昨日のPerl入学式のサポーターしながら考えたのでした。
配列に配列を入れる小芝居
use strict; use warnings; use Data::Dumper; # 課題 # 「テレビ局の略称」と「チャンネル番号」を組み合わせた # データ構造を作りたい # あわよくば一覧表示を楽に実現したい # まず、テレビ局のチャンネル番号と略称名の配列を作る # 配列の最初の要素はチャンネル番号、次の要素はテレビ局名の略称と決める # @配列 = (チャンネル番号 , 略称); my @nhk = ( 1, 'NHK' ); # NHK総合 my @etv = ( 2, 'ETV' ); # eテレ(教育テレビ) my @ntv = ( 4, 'NTV' ); # 日本テレビ my @ex = ( 5, 'EX' ); # テレビ朝日 my @tbs = ( 6, 'TBS' ); # TBS my @tx = ( 7, 'TX' ); # テレビ東京 my @cx = ( 8, 'CX' ); # フジテレビ my @mx = ( 9, 'MX' ); # TOKYO MX # チャンネル番号を全部表示したい・・・もしTV局が沢山あったら? print '@nhkのチャンネル番号は:', $nhk[0], "\n"; # 1 print '@etvのチャンネル番号は:', $etv[0], "\n"; # 2 print '@ntvのチャンネル番号は:', $ntv[0], "\n"; # 4 # TV局の数だけ書いていく? # 地方局も増えたらどうする? # 配列名を人間が全部覚える? # そんなの面倒! # データをまとめておいて、forループ等でまとめて取りたい! # チャンネルをまとめる配列を作る my @channels; # ---------------------- # 失敗編 # ---------------------- # チャンネルをまとめる配列に、テレビ局の配列を「そのまま」入れる push @channels, @nhk; push @channels, @etv; push @channels, @ntv; # 3つ入れてみたところで、試しにData::Dumperで中身を表示してみる print Dumper @channels; # $VAR1 = 1; # $VAR2 = 'NHK'; # $VAR3 = 2; # $VAR4 = 'ETV'; # $VAR5 = 4; # $VAR6 = 'NTV'; # 元のTV局ごとの配列が崩れて、一つの配列になってる!? print "@channels", "\n"; # 1 NHK 2 ETV 4 NTV print $channels[0], "\n"; # 1 print $channels[1], "\n"; # NHK print $channels[2], "\n"; # 2 print $channels[3], "\n"; # ETV # それぞれの要素が何を示しているか、人間が覚えておかなくてはならない # ・偶数の添字はチャンネル番号 # ・偶数の添字 + 1 はテレビ局名 # など。 # これは面倒では? # チャンネル番号とテレビ局名を配列にした意味がないのでは? # ---------------------- # 解決編 # ---------------------- # 配列をリファレンス化する my $ref_nhk = \@nhk; my $ref_etv = \@etv; my $ref_ntv = \@ntv; my $ref_ex = \@ex; my $ref_tbs = \@tbs; my $ref_tx = \@tx; my $ref_cx = \@cx; my $ref_mx = \@mx; # ここで注目! # さっきは「配列 @channnels」の中に「配列 @テレビ局」を入れたところ、 # 「配列 @channnels」の中で展開されてしまった。 # しかし! # リファレンス化することで、配列を「スカラー」として扱うことが出来る! # 「失敗編」で使った配列@channelsを初期化する @channels = (); # 配列@channelsにリファレンス化したテレビ局のデータを追加する push @channels, $ref_nhk; push @channels, $ref_etv; push @channels, $ref_ntv; # 3つ入れてみたところで、試しにData::Dumperで中身を表示してみる print Dumper @channels; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # 俺が求めていたものはこれだ! # 残りも追加していく push @channels, $ref_ex; push @channels, $ref_tbs; push @channels, $ref_tx; push @channels, $ref_cx; push @channels, $ref_mx; # どうなっているかな〜? print Dumper @channels; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # $VAR1 = [ # 1, # 'NHK' # ]; # $VAR2 = [ # 2, # 'ETV' # ]; # $VAR3 = [ # 4, # 'NTV' # ]; # $VAR4 = [ # 5, # 'EX' # ]; # $VAR5 = [ # 6, # 'TBS' # ]; # $VAR6 = [ # 7, # 'TX' # ]; # $VAR7 = [ # 8, # 'CX' # ]; # $VAR8 = [ # 9, # 'MX' # ]; # ちゃんと全部、チャンネル番号とテレビ局名の組み合わせが入ってる! # さて、データを取り出してみる # 配列@channelsは配列なので、データの順番が保証されている # 最初に入れたNHKの配列を取り出してみる print $channels[0], "\n"; # ARRAY(0x************) 配列リファレンスであることを示す表示 # 配列リファレンスから、元の配列に戻す「デリファレンス」を行う print @{ $channels[0] }, "\n"; # 1NHK # 配列をそのままprintしたので要素が繋がって表示されている # 中身は取得できたようなので、配列の要素ごとに取り出してみる # 配列の要素はスカラーなので、$でアクセスする print ${ $channels[0] }[0], "\n"; # 1 print ${ $channels[0] }[1], "\n"; # NHK # アロー記法を使うとスマート表記が可能 print $channels[3]->[0], "\n"; # 5 print $channels[3]->[1], "\n"; # EX # データ構造を構築できたところで、一気に表示してみる # @channelsの中身は、解決編冒頭で作成した、配列リファレンスの集合で # あることを忘れない foreach my $array_ref ( @channels ) { # 配列リファレンスの最初の要素はチャンネル番号 print "チャンネル番号は:" , $array_ref->[0], "\n"; # 配列リファレンスの二番目の要素はテレビ局の略称 print "テレビ局の略称は:" , $array_ref->[1], "\n"; }; # チャンネル番号は:1 # テレビ局の略称は:NHK # チャンネル番号は:2 # テレビ局の略称は:ETV # チャンネル番号は:4 # テレビ局の略称は:NTV # チャンネル番号は:5 # テレビ局の略称は:EX # チャンネル番号は:6 # テレビ局の略称は:TBS # チャンネル番号は:7 # テレビ局の略称は:TX # チャンネル番号は:8 # テレビ局の略称は:CX # チャンネル番号は:9 # テレビ局の略称は:MX # もし、最初に作ったテレビ局の配列から上記のような出力を得ようとした場合には・・・ print "チャンネル番号は:" , $nhk[0] , "\n"; print "テレビ局の略称は:" , $nhk[1] , "\n"; print "チャンネル番号は:" , $etv[0] , "\n"; print "テレビ局の略称は:" , $etv[1] , "\n"; # ・・・と、テレビ局の配列の数 * 2 記述する必要があり大変。 # 配列名を間違えたり、抜けがないように人間が気をつける必要がある。 # これは「楽」ではない # でもまぁ、書けなくはない。大変だけど。
わかばちゃんと学ぶGit使い方入門 SECTION 21 〜 SECTION 30
昨日に引き続きやっていく
- 光陰矢の如し、GWもあっという間に残り6日に
- 6日もある!ひゃっはー!
CHAPTER 4
SECTION 21
- リモート追跡ブランチ。なんか、origin/masterってのが出ていたのは気づいてた
- まぁ、普通は気づく
- pullはfetchとmarge、2つの機能を合わせたもの
- fetch:リモートブランチから(ローカルにある)リモート追跡ブランチを同期
- marge:リモート追跡ブランチとローカルブランチを同期
SECTION 22
- fetchしてmargeする。ふむふむ
- 自分の手元にあるブランチの流れと、本に載っている画面の流れが違うと不安になるなぁ・・・
SECTION 23
- リモートブランチの削除とローカルブランチの削除、一緒に出来ないのかな?
SECTION 24
- コミットメッセージは、push前だったら修正可能と。
- pushした後には修正は出来ない・・・?
SECTION 25
- スタッシュ
- 変更するファイルをステージング環境に置いておかないと、スタッシュのボタンが有効化されなかった
SECTION 26
- チェリーピック!
別なブランチから特定のコミットのみを取り込みたい
- 昨日、間違えて別なブランチにコミットしてしまった俺に必要だったもの・・・
- チェリーピックは特定のコミットを、今いるブランチにコピーしてくるだけ。移動ではない
- 不要になったコミットは、リバートで打ち消す
- チェリーピックとリバート、一緒に出来れば便利なのでは・・・?
SECTION 27
- タグを付けることで、履歴上の重要な(と自分が判断した)ポイントに目印をつけることが出来る
SECTION 28
- detached HEAD、よく分からん・・・
- でも、SourceTreeが警告出してくれるから、警告に従っていれば大丈夫そう
SECTION 29
- GitHub Pages 、静的なWebページ公開サービス
- コードの解説とか、ヘルプページ的なものとか・・・?
SECTION 30
- 変更履歴が統一したフォーマットで整理されるのはとても良いのでは
- 「何でもかんでもGitで管理しようおじさん」が出てくるのも分かる
- Excelシートとか・・・
- これが「おじさん化」か・・・
- しかし、なんでこういう場合は「おじさん」なのだろう・・・
- Excelシートとか・・・
- まぁ、コラボレーションはまだ怖いかな・・・
- 誤字脱字の修正くらいなら・・・
この本を読み終えて
- つまづきポイントの先回りは良かった
- もちろん、個々人でつまづきポイントは違うんだけど、割とカバーされていた方では?と思う
- うちのつまづきポイント:別なブランチにコミットしてあわあわする
- 自分のローカルの状態と、本に載っている画面が違うと「どこかで間違えた?」ってなって怖い
- かといって、全部載せていたら本の内容は1.5倍になり、しかし中身が薄めになっていたかもしれない
- この本を基礎の基礎、土台、地殻にして、他のGit初心者本に進むとよさそう、というか進む予定
- やっぱり本の内容とローカルの状態が合わなくなって放り出した「アリスとボブ」本かな
- あとは、GitHub使わなくても個人プロジェクトでGitを使っていく気になれた
- フォルダが file_20170502.pl とか file20170502.pl とか _old_file とかで埋まる状況は回避できそう
- 読んで良かった!
わかばちゃんと学ぶGit使い方入門 SECTION 01 〜 SECTION 20
2017年ゴールデンウィークの課題図書
- Git習得には一度挫折。
- せっかく9連休をとることが出来たので、一念発起して選んだのがこの本。
なぜ「わかばちゃんと学ぶGit使い方入門」を選んだのか?
- 結城先生の記事
- YAPCでGitを実装しよう、というトークをしてたDQNEOさん監修
- でも、マンガだと情報の密度というか濃度が・・・
- 覚えられれば何でも良い
- 覚えてから言え
- Kindle版で購入
- 12.9インチiPadであれば読むのに不便はない
- が、所々画像内の文字が潰れてる?
CHAPTER 1
SECTION 01
- だいたい把握
SECTION 02
- SourceTree 入れたことがある
- しかし、自己流でやってみて、よく分からんってことでアンインストールした覚えがある
CHAPTER 2
SECTION 03
- SourceTreeのインストール
- 「お前のOS古すぎて入れられんわ」エラー
- 宗教上の理由で未だ買った時の Mountain Lion
- 初めてかつ唯一の MacOS X で、OSアップデートの経験がなくて怖い
- 宗教上の理由で未だ買った時の Mountain Lion
- まぁ、覚悟はしてた
- 旧バージョンをダウンロード
- Source treeの古いバージョンのダウンロード - Qiita
- 2.0.0 をダウンロード、インストールしてから、アップデート
- ver 2.0.5.8 に
SECTION 04
- リポジトリ・・・プロググラムとかバージョン管理やってないと触れること無い単語だよな
サンプルフォルダを作って、選択して・・・エラー!
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree init /Users/sironekotoro/Dropbox/git_study/wakaba/sample dyld: lazy symbol binding failed: Symbol not found: strlcpy_chk Referenced from: /Applications/SourceTree.app/Contents/Resources/git_local/bin/git Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: strlcpy_chk Referenced from: /Applications/SourceTree.app/Contents/Resources/git_local/bin/git Expected in: /usr/lib/libSystem.B.dylib
Completed with errors, see aboveふむ、わからん。
- もちろんググる大先生に聞く
- osx - git command-line on Mac OS error “dyld: Symbol not found: ___strlcpy_chk” - Stack Overflow
- Xcode から Command Line Tool をインストールしてみる
- うーん、うーん、と色々やっているうちに、このMacには複数のGitがインストールされていることが判明
- SourceTreeの環境設定 -> Git で確認すると、
- 内蔵Gitのバージョン;2.6.2
- エラー消えない
- システムGitのバージョン:2.0.1
- エラー消えない
- Terminalから git –version で確認:2.5.1
- さらにTerminalから which git で確認すると /usr/local/bin/git
- 内蔵Gitのバージョン;2.6.2
- 3種のGit盛り合わせかよ・・・わけわかんねぇ
- が、とりあえず、SourceTreeの環境設定 -> Git から「システムのGitを使用する」をクリックし、そこで /usr/local/bin/git のGit(2.5.1)を選択
- ok!
閑話休題
- ほんと、個々人の環境なんて千差万別だから、万人が動かせるような環境・導入方法案内なんてなかなか無いよな・・・
- VirtualBoxのvhd配るとか・・・?
Section 05
- エラーは出なくなったが、さすがに 2.0.5.2 と現行バージョンの 2.5 は表示が若干違う。
- が、表示オプションで本に載っているのと同じレイアウトにすることは可能
- しかしまぁ、同じことをするツールなので、なんとか頭で違いを吸収しつつこのまま学ぶ
- すんなり進む
SECTION 06
- リポジトリ内のテキストファイルをチェックアウトして、過去の履歴にさかのぼる
- この辺りは、コマンドラインのgitでやった覚えがある
- チェックアウトしたときに、テキストエディタ内の内容が変わるのが、ちょっと面白かった
- Sublime Text2 を使ってます
SECTION 07
- GitHubのアカウントは作成済
- だが、使ってない・・・
SECTION 08
SECTION 09
- ブランチについて
- ブランチが便利というのは理解できる・・・しかし、それをまとめる時は大変なのではないだろうか?
- ブランチごとにリポジトリの状態を保存している、って理解で良いんだろうか
SECTION 10
- マージ!人生初マージ!
SECTION 11
- 初プッシュ!初リモートリポジトリへのプッシュ!
SECTION 12
- 初プル!
- リモートリポジトリ上の変更をローカルリポジトリに反映するのがプル、ってのはわかった
- となると。よく聞く「プルリクエスト」とは?
- 「みんな反映してねー」とか?違う気がする・・・
- あと、131pの「リモートリポジトリの状態」はどこから見るんだろう?
- GitHubのファイル一覧の少し上にある「** commits」ってところから同じ画面見ることが出来た
SECTION 13
- コンフリクトについて
コンフリクトは、同じ行に、同時に別々の修正が成されたときに発生します。 同じファイルでも、行が違えば、コンフリクトが起きずにそのままマージされるわ
- なるほど、行単位で監視というか比較しているんね
- ここで、update-newsをチェックアウトして、そこにmasterをブランチを統合してしまうというミスをしてしまう(逆のことをやりたかった
SECTION 14
- プルリクエストの疑問に対する回答があった。取り込んでもらう相手の立場に立って、ということなのね。
- 「私の更新を取り込んでくださーい」と。
- プルリクエスト、不自然とは思わなくなってきた・・・(順応性
- この本はなんと、プルリクエストからマージまでを体験できる!らしい!ってことで挑戦
- うちのためしてみた時点でForkは14
- おぉ!先人のコミットが見える!
- しかし、自分のテキストファイルをコミット・プッシュしても、自分のGitHub上に反映していない・・・?
- GitHubのBranchを「master」から「add-myfile」に切り替えたら確認できた
- プッシュがされてないのかなーと、3回くらいプッシュしてた
- 153pの「Compare & pull request」ってボタンが表示されない
- 「compare」 と 「pull request」ってリンクならある
- 「pull request」のリンクをクリックすることで、本と同じような画面が出た。
- 一安心。
SECTION 15
- うちの環境だと、
.gitignore
は本に乗ってる内容で追加されてるなぁ - とおもったら、もともとのリポジトリに入ってた
- なるほど、
.gitignore
に記載してあるファイルはgitの管理外になるけど、.gitignore
ファイル自体はgitで管理されるのね
SECTION 16
- Bitbucket、以前にアカウント登録はしてたけど、email認証せずに放っておいてた
- なんでそんな中途半端なところで・・・
- 2014年の9月のことだったらしい
- ぐうう、なんか画面が違う・・・メニューが左側にある
- 初心者本に限らずだけど、サービス提供側のページレイアウトが変わるのは辛いものがあるが、作者さん達も避けようが無いもんなぁ
- 画面左側メニューの「+」からリポジトリを追加。後は本に乗っているのとだいたい同じ。
SECTION 17
- あんれ?豚玉とかソースの追加ってコミットしてたっけ・・・?
- 例ってことで良いんかな?
- とりあえず、「過去のコミットをチェックアウトしてブランチを分ける」ということは出来た
SECTION 18
- リバート!そういうことだったのか!
過去のコミット自体を削除するわけではなく、あくまでも反対の内容で新規コミットを作ることで、過去の変更を打ち消すというところがポイントです
- 単なる削除、ではないと
- SouceTree、Windows版とMac版でメニューの項目表示が違うの、なんか嫌だねぇ・・・
SECTION 19
- なるほど、リベースは履歴がきれいになって良いなぁ
- でも、慣れないうちはマージを使うってことで、しばらくは使うことなさそう
SECTION 20
Array of Struct と Struct of Array
YAPC::Kansai 2017 OSAKA でのrisouさんのスライドから
- プログラミングPerlの勉強もあるんだけど、その前にどうしても試したいので試したのがこれ
高速化の初歩
https://www.slideshare.net/risou/first-step-of-performance-tuning
- これを見て写経して
use Benchmark
- 注:100回ほど比較してますんで、ローカルで試す時は適当に調整を
use strict; use warnings; use Benchmark qw/cmpthese/; use Clone qw/clone/; cmpthese( 100, { "AOS" => \&AOS, "SOA" => \&SOA, } ); # Array of Struct sub AOS { my $aos = []; for ( 1 .. 100_000 ) { push @$aos, { number => $_, double => $_ * 2 }; } my $copy = clone($aos); } # Struct of Array sub SOA { my $soa = {}; my @numbers; my @doubles; my @count; for ( 1 .. 100_000 ) { push @numbers, $_; push @doubles, $_ * 2; } $soa = { number => \@numbers, double => \@doubles }; my $copy = clone($soa); } # s/iter AOS SOA # AOS 1.00 -- -66% # SOA 0.345 191% -- [Finished in 136.1s]
- なるほど。
- Array of Struct で書いている自分のコードもあるから、Struct of Array で書き直すの楽しみになってきた
その他
use Data::Dumper
して出力しないとデータの構造が頭に浮かばなくて、全然修行足りてない。がんばる