<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>走って登る</title>
    <link>https://blog.liclab.com/</link>
    <description>Recent content on 走って登る</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Fri, 23 Dec 2022 12:45:00 +0900</lastBuildDate><atom:link href="https://blog.liclab.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>情報処理技術者試験のデータベーススペシャリスト試験（2022秋期）に合格した</title>
      <link>https://blog.liclab.com/2022-12-23/ipa-dbs/</link>
      <pubDate>Fri, 23 Dec 2022 12:45:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2022-12-23/ipa-dbs/</guid>
      <description>午後IIギリギリ。危なかった。
これで基本情報技術者、応用情報技術者、セキュリティスペシャリスト、データベーススペシャリストに合格。平匡さん超えを果たしました。
次何受けようか迷ってるんだけど、データベーススペシャリスト取れたら平匡さんとお揃いだなって🤔 pic.twitter.com/1GIxDtQ3Gd
&amp;mdash; waka@島根 (@program_kakenai) December 22, 2022 学習方法 テキストを斜め読みしたあと、過去問を本番と同じスケジュールで受ける → 間違ったところ、詰まったところをネットなり書籍なりで学び直す、を2期分。拘束時間だったり回答パターンだったりといった試験慣れを主目的にしました。
使ったテキストは翔泳社の「情報処理教科書 データベーススペシャリスト 2022年版」。過去問20年分の解説があるから振り返りに便利でした（みたのは直近2期分だったけど）。
10月のDBスペシャリスト試験に向けて午後分を勉強してきたので今日は模擬day。問題は令和2年のもの。初見
午前I は21/30、午前IIは17/25で基準はクリアしたものの微妙なラインだし、忘れてたり知らないこともチラホラ、計算問題は取り掛かりも解くスピードも遅い。午前対策も少しはやらねば。
&amp;mdash; Yuji Nishimura (@nishim) September 14, 2022 試験会場は大阪学院大学でした
次は 2023春期のネットワークスペシャリストは申し込む。1月中旬受付開始とのこと。
2023秋期は、時間に余裕があればシステム監査技術者かな。余裕があれば…。</description>
    </item>
    
    <item>
      <title>AWS認定クラウドプラクティショナー（AWS CLF）に合格した</title>
      <link>https://blog.liclab.com/2022-05-18/aws-clf/</link>
      <pubDate>Wed, 18 May 2022 19:00:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2022-05-18/aws-clf/</guid>
      <description>AWS認定クラウドプラクティショナーを受けて合格してきました。 1000点中832点という微妙な結果
この手のベンダー試験を受けたのはSJC-P（Java 5か6か）が最後か。受験方法は昔からあまり変わってなかった。
受験のきっかけ 業務でイチからAWS環境構築をしたこともあり知識の整理をしたかった 今までは誰かが構築したものを利用していた 何かしら改善のヒントが見つけられないか SAA、SOA、DVAの受験を考えているので、試験慣れと半額クーポンゲット 試験の感想 AWSサービスへのインデックスを脳内に増やす意味では勉強・受験してよかったなと感じています。実践的な内容は少ないのでそれ以上でも以下でもないかな。実力の証明にはならない。
出題範囲が広く薄くなので、AWSでWebサービス構築しました、だけでは無勉強で合格できない試験ではあると思いました。利用したことがないサービスについては（といってもそんなサービスが大半な訳ですが）勉強するしかなかったです。オンプレ環境からの移行や接続は経験がないし、サポート利用もしていないし、DynamoDBは使ってないし、ストレージはS3標準とEBSしか触ってないし…。
※ちなみに2022-05-17時点ではこちらによると227サービスあるようです
一方でコンピューティング、ネットワーク、配信、RDS、IAMあたりは、出題範囲のレベルであれば実務でほぼほぼカバーできていました。AWSやクラウドのメリット、責任共有モデルについては知っていたり、初見でも推測できるような設問ばっかりでした。
全体を通じて知っていれば回答できる設問しかないので、未経験でなければ本なりUdemyなりで数時間〜10数時間程度勉強すれば問題なく合格できるかなと。
学習方法 Udemyの https://www.udemy.com/course/aws-4260/ で模擬試験を9周しました。
演習テスト1: 模擬試験（基本レベル①） を2周 正答率は78% -&amp;gt; 87% 演習テスト2: 模擬試験（基本レベル②） を2周 正答率は72% -&amp;gt; 92% 演習テスト3: 模擬試験（応用レベル①） を3周 正答率は33% -&amp;gt; 47% -&amp;gt; 92% 演習テスト4: 模擬試験（応用レベル②） を1周 正答率は53% 演習テスト5: 模擬試験（応用レベル③） を1周 正答率は58% 1周あたり大体20〜30分程度なので、昼食前に試験を受け、後はご飯を食べながら間違った問題に関してはマネジメントコンソールで確認する、該当ドキュメントを読む、ググって事例や解説記事を見るなどして概要を把握していきました。
次は AWS認定はSAA、SOA、DVAを取得するまではやる。IPAのDBスペシャリストの勉強もしなきゃだし、目標は2022年8月末かな。</description>
    </item>
    
    <item>
      <title>MacBook Air（2020、Big Sur 11.6.4）がスリープに入ると勝手に再起動されてしまう件</title>
      <link>https://blog.liclab.com/2022-03-15/macbookair-force-reboot/</link>
      <pubDate>Tue, 15 Mar 2022 00:30:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2022-03-15/macbookair-force-reboot/</guid>
      <description>2022-03-22 追記 現時点でも再現せず。解消したと判断して良さそうです。めでたい。
2022-03-17 12:00追記 記事公開して早々にBig Sur 11.6.5へのアップデートが来ました！
3/16夜にアップデートしてから何度かスリープさせてみましたが、今のところ大丈夫そうです。
Macbook Air 2020 (intel)、今日からスリープに入るとリブートされるようになってしまった？原因はよくわからない。
&amp;mdash; Yuji Nishimura (@nishim) February 4, 2022 毎日1回以上はクラッシュレポートを送る日々が始まってはや一月。環境はMacBook Air (Retina, 13-inch, 2020)、Big Sur 11.6.4。2022/3/14時点で未解決。
初動 原因が全くわからず、まずはベタなトラブルシュートを順々に試します。
再起動 最近インストールしたESETのアンインストール 電源以外の機器を全部外して、1つずつ試す（思ったが、電源以外の機器を全部外した状態で再現してしまった…。） Apple Diagnostics SMCのリセット NVRAM、PRAMのリセット が、いずれの方法も解決だったり問題の検出だったりには至らず、スリープに入ると再起動される、ということのみわかって終了。
同じ症状の人を発見 困ったなと思いつつも解決策が見出せないなか、Apple、Big SurとCatalina向けに「macOS Big Sur 11.6.4 (20G417)」と「macOS Catalinaセキュリティアップデート2022-002 (19H1715)」をリリース。 という記事のコメント欄に同環境で同症状の方がいることがわかりました。
直ったわけではないものの、自分固有の問題ではないかもしれないという事実に少し気が楽になる。
ワークアラウンド 3/14時点で解決できていません。Big Surのアップデートも来ていません。というわけで、以下のワークアラウンドを取っています。
家や職場ではモニターにつないでクラムシェル運用なので、Amphetamine.app で無期限のセッションを開始し、スリープされないようにする 持ち運び時は再起動されることを見越して、早めに目的地へ着くようにする いわゆる諦め Amphetamineで設定出来そうではあるものの、バッテリーへの負荷や熱の問題を考えて行っていません 根本解決はMontereyへのアップデートやクリーンインストールなのかもしれないけど、唯一の開発機のためなかなか踏み切れず。こういう時はいつも結城浩先生のだからMacBook Airを二台買えと言ったのに！と妻に怒られた話を思い出してさっさと買ってしまえと考えるけど、こちらもなかなか踏み切れず。M2 MacBook Proがリークされた通りのスペックで出てたら買ったのになあ。
自宅であれば不便だなーで済むけど、お客さん先で再現するのは本当に厳しかった。「えーお待ちください…。あれ、なかなか起動しないですね、すみません…。」とかやりたくないんですよ。Appleさん何卒。</description>
    </item>
    
    <item>
      <title>Go言語の勉強兼ねてLeetCodeはじめました</title>
      <link>https://blog.liclab.com/2021-06-03/leetcode/</link>
      <pubDate>Thu, 03 Jun 2021 00:05:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2021-06-03/leetcode/</guid>
      <description>仕事であまりコードを書けてないからコードを書きたくて、でも仕事に全く関係のないコードを書きたくて、LeetCodeをはじめました、というより2年ぶりに再開しました。
言語はGoでやっています。昔コマンドラインツールを作るのに使ったりしていたものの、すっかり忘れてしまったので勉強がてら。
まだEasyを上から順にやっているだけなので実装イメージはつくけど、Goの書き方を忘れていてつまずくことが多いなあと（元々そんな書けたわけではない）。あとは、設問を読み飛ばしていて変な実装にしたり、解説やらディスカッションを見て自分の実装のダサさに凹んだり・・・。でもその辺りも踏まえて楽しいですね。
Goの手触り感がよくなるまではEasyをやって、その後はMediumかな。というよりデータ構造とアルゴリズムのお勉強を並行してやらないとなあ。</description>
    </item>
    
    <item>
      <title>精管結紮術、いわゆるパイプカットをした話</title>
      <link>https://blog.liclab.com/2020-12-31/vasectomy/</link>
      <pubDate>Thu, 31 Dec 2020 12:00:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2020-12-31/vasectomy/</guid>
      <description>子供3人、もういいかなということで、精管結紮術、いわゆるパイプカットをこの夏にしました。
パイプカットについては1人目出産時点で認知していました。と言うのも産後にもらう手引きの1ページが確実な避妊方法に割かれていて、うちの病院でできるよ、費用はこのくらいだよ、と書かれているからでした。
その後2人目はほしい、3人目は来てくれるなら、と言うスタンスでいるとあれよと子供3人授かって、4人目は何をどう頑張っても生活が回っていかない未来しか見えない…。と言うことで、いよいよ我が家の避妊手術の機運が高まります。
女性側も卵管結紮術という対になるような避妊術があるのだけど、精管結紮術に比べて手術の負担が大きい（帝王切開のときにまとめてやる場合を除く）ので、僕の方で対応することに相成りました。
パイプカットの流れ ざっくりこんな感じです。各院のHP見る限り、大体どこも同じ流れです。
病院探し 術前の説明や手術日の予約 手術 手術翌日の診察 精子の検査 1. 病院探し この4条件を満たす病院、クリニックを探しました。結果、家から徒歩＆電車で30分程度、諸々込みで10万程度のクリニックを見つけたので、そこに決定。
なるべく仕事の休みを取らず済むよう、金曜手術→土曜に診察できるかどうか 費用が明記されている 近所 美容系でない、普通の泌尿器科 不安だったら、年間や累計の症例数なんかを聞いてみてもいいかもしれません。
2. 術前の説明や手術日の予約をしにクリニックへ クリニックの受付で「精管結紮術を受けたいんですけど」と伝えてしばし待った後に診察室へ。
先生からの質問は「子供の人数は？」の1つだけで、「3人です」と回答すると早速生殖器の模型を見ながらどのような手術かの説明と、リスクの説明へ。1人2人という回答だと、妊娠を避けなければならない理由を聞かれたりするのかも？
リスクとして挙げられたのは次の4つ。2つ目と3つ目は可能性はなくはないからねー、くらいのニュアンスでした。
元には戻せない ほぼ100%成功するけど失敗しないとは言えない 創部が化膿するなどの合併症 すぐ避妊効果があるわけではない 一通り話を聞いた後に、手術日を決め、妻と連名でサインする同意書をもらって、文書料をお支払いして、この日は終了。
3. 手術 有給休暇を取って、いざクリニックへ。
受付で同意書を渡すとすぐに手術台に呼ばれて寝っ転がって、消毒やら準備やらしているのを眺めていると程なく先生が到着。
「左から先にやっていきますね」と局所麻酔の注射針を2本？3本？刺されたと思ったらすぐ切開開始。めちゃくちゃ痛い。奥歯を食いしばって「痛い痛い痛い」と声を漏らしてしまう程度には痛い。麻酔はまだ効きはじめていないのか、切られている感覚も痛みもはっきりわかる。そうこうしている間に精管を引っ張りだされ、ごそごそ何かされて（切られて結紮されている）、左側が終わり。
右側も同じような流れで進むけど、麻酔が効いてきたのか慣れたのか、痛いは痛いが耐えられない程じゃなくなって、先生と会話も。
僕「めちゃくちゃ早いですね、こんなものなんですね」
先生「若い人は管が太くて処置しやすいことが多いから早く終わることが多いですね」
僕「これだけ痛いと耐えられない人もいるんじゃないですか？」
先生「極々たまにいます、手術が続行できなくてやめる人」
僕「縫う時も地味に痛いですね、痛い！ってよりはいてててて、と言うか」
先生「しっかり止血するために強めに引っ張ってるからね」
右側の処置も終わった後は、ぎちぎちに引っ張って縫い上げられ、軟膏を塗られ、ガーゼをあてがわれて手術終了。
手術費用をお支払いして、メイアクトを3日分、ゲンタマイシン軟膏を1本、痛いときのお守りにロキソニン2錠を処方してもらって、帰ります。院に着いてから出るまで20分弱のことでした。
昼ごはんは玉五郎の冷やし煮干らーめんを食べました
病院を出て20分がたった頃、止血部が引っ張られるような痛みが強く出てロキソニンを1錠服用。空腹を気にして飲まずにいたものの、さっさと飲んでブロックしてもらえば良かったと後悔…。歩き方はぴょこぴょこになるし、座る時は股間を圧迫しないよう浅く座って骨盤を後ろに倒すから腰は痛くなるし、疼くし、血が滲んでないか気になるし、この日は一日中難儀しました。
4. 手術翌日の検査 家族総出でクリニックへ。 朝から疼痛があること、シャワーを浴びた際に少し出血していることを伝えて確認してもらったところ、この程度なら問題ないでしょうとの所見をいただく。 次回精子の検査をするために、4〜5回射精、5〜6日禁欲ののち、出したてのを持って診察に来てねと、持参用の容器をもらってこの日はおしまい。
この日は手術当日よりはマシなものの、急な動きをするとまだまだ痛い…。あと、緊張のせいか3日ほど便秘になりました。
5. 精子の検査 言われた通りに準備して、4回目のクリニック。受付で容器を渡してしばらく待つと診察室に呼ばれます。
「うん、いませんね」と言われ、これにて妊娠させることのできない体になりました。
その後 手術から4ヶ月ほど経ったけど、古傷が疼くのと同じような感覚がたまーにある以外特に体感できる違いはないです。よくデマとして挙げられるらしい、男性ホルモンの量が減るだとか、性欲減退と言うのも、デマなような気がする、が、血液検査したわけではないのではっきりとはわからないです。男性ホルモンについては直近の運動不足の影響の方がデカそう。
心理面では、妊娠の確率がゼロってのはやっぱり安心というか、気は楽です。
そういえば、3週間ほど続いた創部の処置はスギ薬局のワンタッチ滅菌パッドが、軟膏塗った後に貼るだけでめちゃ便利でした。</description>
    </item>
    
    <item>
      <title>顧客との関係をどう作っていくか。Shopifyのワークショップ in 大阪に行ってきました #shopify1million</title>
      <link>https://blog.liclab.com/2020-02-01/shopify1million/</link>
      <pubDate>Sat, 01 Feb 2020 00:45:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2020-02-01/shopify1million/</guid>
      <description>Shopify 100万ショップ達成記念! 特別ミニワークショップ in 大阪に行ってきました。
勉強会とかワークショップの類は数年ぶりの参加で楽しかったです。
各登壇者さんの話の概要はShopifyブログに上がっているのでそちらを見てみてください。
立ち位置 Web系のプログラマー兼、会社の事業として始めたECの責任者 弊お店は1月20日にオープン toC、国内のみ 各登壇者さんがお客さんに来てもらうために、何をしているかを知りたくて参加 いかにしてコミュニティを作るか、ファンを獲得するか お客様との関係値大事、わかる。お店を始めたばっかりだけど最近まさにそれを実感している#shopify1million
&amp;mdash; Yuji Nishimura (@nishim) January 30, 2020 株式会社アパレルウェブさん、amirisu株式会社さん、ミウラタクヤ商店さんのいずれの話を聞いても共通して頭に浮かんだのは、コミュニティとかファンとかそういったものをいかに形成していくか、これがやっぱり重要なんだな、と言うこと。
顧客との関係性をそれぞれが自分に合った形で構築していっている風で、amirisuさんは、
雑誌フックに顧客になってもらったり、編み物教室に来てもらったり Instagram、インスタライブ ニュースレターは迷惑にならない程度に、内容も絞って -&amp;gt; 結果反応がいい ミウラタクヤ商店さんは
SNSでギブする Facebookで1,000文字/day、メルマガ週3〜5、Twitterで10ツイート/day（合わせると毎日4,000文字〜くらい？） 『お客さんのことを甘やかすわけでもなく大事にしてしっかり関係値を作っていく』 弊お店でも、いかにしてコミュニケーションをとり、関係を構築していくか、エンゲージメントを高めていくかを考えて実践していかないと。
ちなみにエンゲージメントについては最近読んだ『動画2.0』の最後の方に出てくる次の分類がへぇーっとなりました。
エンゲージメントは、「4つのE」からできている
- Empowering
- Entertaining
- Enlightening
- Emotional
ミウラタクヤ商店さんのスライド消費者がSNSに求めるものと似ている部分もありますね。
弊お店の悩み 弊お店ではラッピング用にギフトボックス、ギフト用の袋があって、そこに好きな商品を1、2点入れられるようにしています。
現状はAdd a gift-wrap option to your cart pageを参考に、カートページでギフトオプションが表示されるようにしているけど、ラッピングを別にカートに入れなきゃいけなかったり、ラッピング対象の商品の指定がある場合は特記事項に書いてもらう必要があったりでいけていない…。
ボックスに好きな商品を選んでいれて、オリジナルの組み合わせのギフトが作れる！みたいな機能を実現したいけど、バッチリはまるアプリが見つからないなと悩んでました。 &amp;ldquo;bundle&amp;quot;とかで検索すると「ついでにこれを買いなよ！ディスカウントするぜ！」みたいなクロスセル系のアプリはいっぱい見つかるものの、違うんだよなあと。
で、今回せっかくShopifyの方がいらっしゃるので、ハンズオンの休憩中にCSの方に👆の内容で困っていることを相談してみたらバッチリハマりそうなBundle Builderというアプリを見つけていただきました。
デモを見る限りいい感じで、あとは弊お店に沿った形にどれだけ持っていけるかを試してみて、導入！となるかAjax APIでゴリゴリやるか決めることとします。
交流会で改めて直接お礼できればよかったのですが、この場でお礼申し上げます。快く対応いただきありがとうございました！
これから試すこと ワークショップで聞いた話を勘案して、まずはこの辺りからやってみます。
お客様にレビューとかSNS投稿で盛り上げる手助けしてほしいってお願いしてみる Bundle Builder試す Google ShoppingもFacebook Pixelも設定しているし、広告予算とって回してみる Klaviyo試す（今はとりあえずメルマガを、でOmnisendユーザー。FREEプランでも15,000通/月と無料枠が大きい） とりあえずスタート大事 #shopify1million</description>
    </item>
    
    <item>
      <title>Shopifyテーマのtheme.scss.liquidをVSCodeでシンタックスハイライトさせる</title>
      <link>https://blog.liclab.com/2020-01-12/shopify-vscode-scss-liquid-highlight/</link>
      <pubDate>Sun, 12 Jan 2020 23:21:14 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2020-01-12/shopify-vscode-scss-liquid-highlight/</guid>
      <description>最近、仕事でShopifyはじめました。そこそこテーマに手を入れたりもしているので、備忘録兼ねて色々書き残していこうと思います。
theme.scss.liquidをシンタックスハイライトさせたい テーマの編集はVSCodeで、拡張機能Liquid Languages Supportを入れて対応しています。Liquid Language Support拡張を入れておけば、liquidの構文とHTMLをシンタックスハイライトしてくれるようになります。
しかし、liquidファイルの中にはtheme.scss.liquidやtheme.js.liquidといった、実体はSCSSだったりJavaScriptだったりするファイルもあり、これらのファイルはこの拡張ではうまくハイライトされません。 liquid構文のハイライトを捨ててでもSCSSのハイライトが効く方が幸せなので、*.scss.liquidをSCSSとして認識するようVS Codeを設定していきます。
設定 Macなら&amp;quot;⌘ + ,&amp;ldquo;で、Windowsなら&amp;quot;ファイル→基本→設定&amp;quot;で設定を開き、&amp;ldquo;file association&amp;quot;で検索します。
検索結果に「Files: Associations」という設定があり、その中に&amp;quot;settings.json で編集&amp;quot;というリンクがあるのでクリックします。
なお、ユーザーの設定かワークスペースごとの設定かを選べますが、メンバーと共有できるという意味で僕はワークスペースに設定をすることが多いです。
settings.jsonが（存在しない場合は新規作成された後に）開かれるので、以下を追記します。
&amp;#34;files.associations&amp;#34;: { &amp;#34;*.scss.liquid&amp;#34;: &amp;#34;scss&amp;#34; } これでSCSSとしてシンタックスハイライトされるようになりました。
終わりに 僕がベースにしているテーマでは関係ないですが、*.js.liquidなども同様にfiles.associationsでjsだと指定してやれば、ハイライトされるようになります。
&amp;#34;files.associations&amp;#34;: { &amp;#34;*.scss.liquid&amp;#34;: &amp;#34;scss&amp;#34;, &amp;#34;*.js.liquid&amp;#34;: &amp;#34;js&amp;#34; } また、Shopify関係なく、任意の拡張子で同じことが可能です。
参考 Programming Languages In Visual Studio Code we have support for all common languages including smart code completion and debugging. </description>
    </item>
    
    <item>
      <title>CakePHP3でクロス集計する</title>
      <link>https://blog.liclab.com/2019-12-12/cakephp3-cross-aggregation/</link>
      <pubDate>Thu, 12 Dec 2019 13:29:27 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2019-12-12/cakephp3-cross-aggregation/</guid>
      <description>この記事は、 CakePHP Advent Calendar 2019 12日目の記事です。
11日目は@kzkamago0721 さんの環境依存な情報を .env にまとめる関連の話でした。
データを2軸で集計して表にする機能を実装することがたまにあります。だいたい時間軸と何かの分類の軸です。この複数軸（だいたい2, 3軸）での集計をクロス集計と呼びますが、いざプログラムを書こうとすると、DBのデータの持ち方とHTMLのtable要素のマークアップとの相性の悪さで辛い思いをしたりします。
今回は、クロス集計した結果をwebページに表示してほしい、そんな機能をCakePHP3でどう実装すればいいか試行錯誤した顛末を書きます。
前提 環境 PHP 7.4 CakePHP 3.8 今回のソース一式はGitHubにあります。
デモ用のデータ デモ用のデータは、accountsテーブルとcategoriesテーブルからなる家計簿にしました。
mysql&amp;gt; SELECT * FROM categories; +----+--------------------+---------------------+ | id | name | created | +----+--------------------+---------------------+ | 1 | 住居費 | 2019-12-01 00:00:00 | | 2 | 水道・光熱費 | 2019-12-01 00:00:00 | | 3 | 通信費 | 2019-12-01 00:00:00 | | 4 | 食費 | 2019-12-01 00:00:00 | +----+--------------------+---------------------+ 4 rows in set (0.</description>
    </item>
    
    <item>
      <title>『error: file &#39;/boot/vmlinuz-3.10.0-693.2.2.el7.x86_64&#39; not found.』と表示されてCentOSが起動しない</title>
      <link>https://blog.liclab.com/2019-08-20/vmlinuz-not-found/</link>
      <pubDate>Tue, 20 Aug 2019 02:49:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2019-08-20/vmlinuz-not-found/</guid>
      <description>うちのCentOS、リブートすると『error: file &amp;lsquo;/boot/vmlinuz-3.10.0-693.2.2.el7.x86_64&amp;rsquo; not found.』とエラーを表示するだけで起動してくれません。
言われた通りに適当なキーを押すとカーネルを選択するように言われます。
この画面で3.10.0-693.2.2.el7.x86_64以外のカーネルを選べば起動はしてくれます。
※毎回2番目に新しい3.10.0-514.26.2.el7.x86_64を選択
しかし、システムメンテなんかで強制的にリブートされる場合は起動が完了せず上の表示のままで起動されないし、sshdが立ち上がる前だからVPSのコントロールパネルにログインしてコンソール経由して操作しなくちゃならないしと、頻繁に発生する事象ではないものの起きた時はなかなか面倒なので対処しました。
ちなみに作業開始時点では、GRUBについてはブートローダーであること以外は知らない状態だったので、断片的ではあるものの良い勉強になりました。
環境 さくらのVPS v4 CentOS Linux release 7.6.1810 (Core) GRUB 2.02 uname -r は 3.10.0-514.26.2.el7.x86_64 現状を把握する 実際に/boot/にないのか見てみます。
$ ls /boot/vmlinuz* | sort /boot/vmlinuz-0-rescue-3908835f3199424b43e75b0c63a19a07 /boot/vmlinuz-0-rescue-57fc8d29ddde412198e08c91aba22b4c /boot/vmlinuz-3.10.0-514.26.2.el7.x86_64 /boot/vmlinuz-3.10.0-957.12.1.el7.x86_64 /boot/vmlinuz-3.10.0-957.21.2.el7.x86_64 /boot/vmlinuz-3.10.0-957.21.3.el7.x86_64 /boot/vmlinuz-3.10.0-957.27.2.el7.x86_64 ない、が、代わりに？もっと新しいバージョンのカーネルがありそうです。
次にyumでインストール済みのカーネルを確認します。
$ yum list installed | grep kernel.x86_64 kernel.x86_64 3.10.0-514.26.2.el7 @updates kernel.x86_64 3.10.0-957.12.1.el7 @updates kernel.x86_64 3.10.0-957.21.2.el7 @updates kernel.x86_64 3.10.0-957.21.3.el7 @updates kernel.x86_64 3.10.0-957.27.2.el7 @updates /boot/にあるカーネルと一致しました。
この時点で3.10.0-693.2.2.el7.x86_64はなさそうなので次にGRUBの確認をしていきます。まずはデフォルトエントリーを確認します。
$ sudo grub2-editenv saved_entry=CentOS Linux (3.</description>
    </item>
    
    <item>
      <title>Go言語とGoogle Cloud Functionsで、URLを渡すとOGPメタデータをjsonで返してくれるAPIを作る</title>
      <link>https://blog.liclab.com/2019-08-03/cloud-functions-golang-ogp/</link>
      <pubDate>Sat, 03 Aug 2019 22:08:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2019-08-03/cloud-functions-golang-ogp/</guid>
      <description>19年3月にGoogle Cloud FunctionsがGo言語を正式サポートしていたとのことで、URLを渡すとOGP+αが取得できるCloud Functionsを作ってみました。
環境は以下の通り。
$ go version go version go1.12.7 darwin/amd64 $ gcloud version Google Cloud SDK 256.0.0 beta 2019.05.17 bq 2.0.46 core 2019.07.26 gsutil 4.41 $ hugo version Hugo Static Site Generator v0.55.6/extended darwin/amd64 BuildDate: unknown 以下ステップバイステップで作り方をみていきます。
GCPでプロジェクトを作る cloud-functions-testという名前でプロジェクトを作ります。
gcloud CLI(Cloud SDK)のインストール＆セットアップ Google Cloud SDK documentation | Cloud SDK | Google Cloudの内容に従いCloud SDKをインストールします。 インストール後はCloud SDKのコンポーネントのアップデートと、先に作成したプロジェクトの選択と、そのプロジェクトでCloud Functionsを有効化しておきます。
$ gcloud components update All components are up to date. $ gcloud projects list PROJECT_ID NAME PROJECT_NUMBER cloud-functions-test-248711 cloud-functions-test 673440494381 $ gcloud config set project cloud-functions-test-248711 Updated property [core/project].</description>
    </item>
    
    <item>
      <title>Goのgolang.org/x/net/htmlパッケージでBOM付きUTF-8にやられた話</title>
      <link>https://blog.liclab.com/2019-06-17/go-x-net-html-utf8-bom/</link>
      <pubDate>Mon, 17 Jun 2019 22:46:27 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2019-06-17/go-x-net-html-utf8-bom/</guid>
      <description>複数のhtmlファイルに対して、特定のhtml要素を差し込んで保存するのにgolang.org/x/net/html使ってDOM操作すればいける！と思って実装していると、一部htmlでDOMをRenderした結果がおかしくなった。
具体的にはこんなコードで
package main import ( &amp;#34;os&amp;#34; &amp;#34;golang.org/x/net/html&amp;#34; ) func main() { f, _ := os.Open(&amp;#34;./index.html&amp;#34;) defer f.Close() doc, _ := html.Parse(f) html.Render(os.Stdout, doc) } こんなhtmlを
&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;#34;ja&amp;#34;&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta charset=&amp;#34;utf-8&amp;#34;&amp;gt; &amp;lt;title&amp;gt;こんなhtml&amp;lt;/title&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;body&amp;gt; It Works. &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt; ParseしてRenderした結果が
&amp;lt;html lang=&amp;#34;ja&amp;#34;&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt; &amp;lt;meta charset=&amp;#34;utf-8&amp;#34;/&amp;gt; &amp;lt;title&amp;gt;こんなhtml&amp;lt;/title&amp;gt; It works. &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt; こんなん。head要素にあったものが全てbody内に入ってしまう、という状態。
ググってもそもそもgolang.org/x/net/htmlの事例が少ないし、オリジナルのhtmlから少しずつ行を削除して試してを繰り返すも状況変わらないし、途方にくれているところでふとfileコマンドを実行してみると
$ file index.html index.html: HTML document text, UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators タイトル通りですが、BOMのせいでした。以下のような関数を用意して、あらかじめBOMを除去した上でパースすればOKでした。</description>
    </item>
    
    <item>
      <title>DockerでCakePHP3 &#43; Nginx &#43; MySQLの開発環境を作る</title>
      <link>https://blog.liclab.com/2018-05-27/docker-cakephp3/</link>
      <pubDate>Sun, 27 May 2018 01:40:00 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2018-05-27/docker-cakephp3/</guid>
      <description>完成品はこちら
https://github.com/nishim/docker-cakephp3
背景 仕事でCakePHP3を使っているけど、ローカルはWindows + xampp、本番はRHEL系だからWindowsが故のハマりポイントにハマることがあって。
で、問題を解決すべくVagrant or Docker化したいけど、Vagrant + Ansibldはそこそこ遊んだのでじゃあまあDocker使ってみようかなと。
※あと家のMacBookAirはストレージ128GBだからVMは容量圧迫してつらい…
環境 macOS Sierra Docker 18.03.1-ce 各コンテナはPHPは7.2、MySQLは8、Nginxは特にこだわりなし、といった感じ。
開発に必要な操作など cake他CakePHP関係のコマンドを実行する ホストからPHP用のコンテナに入って、
$ docker exec -it app bash コンテナ内で普通に./bin/cakeすればOK。
# cd /var/www/html/ # ./bin/cake version 3.6.4 コンテナ内でbakeで生成したファイルはホスト側でも普通に参照できる。
ホストからMySQLに接続する $ mysql -u user -p -P 33306 -h localhost --protocol=tcp Enter password: ハマったところ Dockerだからハマった、というのはほぼなくて、各々の設定不備とか知識不足によるところが多かった。
MySQLにホストから接続できない mysqlコマンドで接続しようとすると、次のようなエラーが出た。
ERROR 2059 (HY000): Plugin caching_sha2_password could not be loaded: dlopen(/usr/local/Cellar/mariadb/10.2.10/lib/plugin/caching_sha2_password.so, 2): image not found stackoverflowのこの質問にある通り、デフォルトの認証プラグインとしてmysql_native_passwordを使えばOKとのこと。
原典にあたらねばとMySQL :: MySQL 8.</description>
    </item>
    
    <item>
      <title>Chromeでエラーにならない自己認証局＆サーバー証明書を作る</title>
      <link>https://blog.liclab.com/2018-02-07/celf-signed-certificate/</link>
      <pubDate>Wed, 07 Feb 2018 00:01:27 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2018-02-07/celf-signed-certificate/</guid>
      <description>仕事で画像ベースの回帰テストをWebサービスの社内検証環境でできるよう準備する中で、すでに用意されている自己署名証明書だとhttpsなページにHeadless Chromeでアクセスできない（スクリーンショットが真っ白）問題があり、自己認証局を立ててサーバー証明書を発行させて、ということをした。その時の経験をもとに手順を精査してまとめてみる。
原因 Chromeがコモンネームの設定を非推奨化、そのエラー対策としての自己署名証明書のCSRの作り方という記事にある通り、サブジェクト代替名の指定のない自己署名証明書を使っていたから。
具体的にはopenssl.confデフォ設定ままで以下のような作り方をしていた。
$ sudo openssl genrsa 2048 &amp;gt; server.key $ sudo openssl req -new -key server.key &amp;gt; server.csr $ sudo openssl x509 -days 3650 -req -signkey server.key &amp;lt; server.csr &amp;gt; server.crt これで生成される証明書はX.509 v1の証明書で、v3フィールドのサブジェクト代替名は当然なし。
Chromeのオプションでなんとかならないかと探してみたけど、--allow-insecure-localhost や --disable-web-securityなどはうまく動かなかった。
達成したいこと hostsや社内DNSなどで解決している開発環境ドメインのhttpsページに、Headless Chromeでアクセス可能にすること。
サブで、証明書を発行するたびにキーチェーンアクセスなりcertmgrなりに登録しないでいいように、社内認証局を立てて、そこに証明書を発行させるようにする。
※ドメインは社内DNSで解決している &amp;amp; 本番環境と異なるため、本番環境の証明書をワイルドカードにするとか、Let&amp;rsquo;s Encrypt使うとかは対策として取れない。
証明書の作り方 前提 Chrome 64 証明書を作る環境 CentOS 7.4 OpenSSL 1.0.2k-fips 26 Jan 2017 鍵、証明書 鍵のパスフレーズは未設定 社内の検証環境で使うことを想定 CAの鍵はつけてもよかったかな… Webサーバーで使うため再起動時にパスフレーズを要求させたくない ドメイン example.com www.example.com 設定ファイル gistに置いている3ファイルを使う openssl.ca.conf openssl.</description>
    </item>
    
    <item>
      <title>Red Hat Software CollectionsとSCLについて調べたメモ</title>
      <link>https://blog.liclab.com/2017-10-10/rhscl/</link>
      <pubDate>Tue, 10 Oct 2017 23:10:11 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2017-10-10/rhscl/</guid>
      <description>CentOSユーザーならお世話になっているだろうRemi Collet氏がブログに「Red Hat will provide PHP 7.1 for RHEL (and CentOS)」なる記事をポストされていた。タイトルだけ見て、デフォルトがPHP5.4.16から7.1系になるの？こんなタイミングで？と思ったら、そういう話ではなく。 なんでもRed Hat Software Collections(以下RHSCL)という新しめな安定版のソフトウェアコンポート集？があり、それの3.0でPHP7.1やnode8なんかを提供してくれるとのこと。
以下はRHSCLについてよくわかっていないので調べたメモ。
RHEL/CentOSの標準パッケージの運用ポリシー RHSCLの前にまずは標準パッケージの運用ポリシーから。
CentOS公式のFAQにもある通り、RHEL/CentOSはエンプラ向けのため、新しいバージョンをどんどんサポートするのではなくあるバージョンを安定的、長期的(10年)に提供する、というポリシーがある。要は、「脆弱性対応で新しいバージョンにアップデートせざるを得ない時、そこに脆弱性の修正だけでなく後方互換性のない変更が入ってるとエンプラの現場じゃ辛くない？ウチがバージョンを維持したまま脆弱性対応なんかはバックポートするよ」と言ってくれている。
実際にバックポートされているかどうかは、rpmコマンドでchangelogが見れるのでそこで確認できる。
$ rpm -q --changelog php | head -10 * Fri Aug 05 2016 Remi Collet &amp;lt;rcollet@redhat.com&amp;gt; - 5.4.16-42 - bz2: fix improper error handling in bzread() CVE-2016-5399 * Mon Aug 01 2016 Remi Collet &amp;lt;rcollet@redhat.com&amp;gt; - 5.4.16-41 - gd: fix integer overflow in _gd2GetHeader() resulting in heap overflow CVE-2016-5766 - gd: fix integer overflow in gdImagePaletteToTrueColor() resulting in heap overflow CVE-2016-5767 - mbstring: fix double free in _php_mb_regex_ereg_replace_exec CVE-2016-5768 RHSCL/SCL とはいえ新しいバージョンのソフトウェアを使いたいよね、という場面は往々にしてある。そこで、じゃあライフサイクルは短くなるけどそれも提供しましょう、というのがRed Has Software Collections並びにCentOS向けのSoftware Collectionsということらしく、これらは</description>
    </item>
    
    <item>
      <title>embulkで本番環境のDBから分析用のDBに匿名化しつつ移動する</title>
      <link>https://blog.liclab.com/2017-08-19/extract-and-anonymyze-by-embulk/</link>
      <pubDate>Sat, 19 Aug 2017 01:28:26 +0900</pubDate>
      
      <guid>https://blog.liclab.com/2017-08-19/extract-and-anonymyze-by-embulk/</guid>
      <description>分析用DBに日々
顧客データ マスタ アクセスログ(独自フォーマットのhttpdログ) 広告レポート(CSV) などなどのデータを取り込んでいる。この取り込みで2つ問題があって、1つ目はこれらを取り込む方法がシェルスクリプト(mysqldump -&amp;gt; 分析環境にscp -&amp;gt; インポート)だったり、更新頻度の低いマスタ系は手動で取り込んだり、CakePHPのシェルで実装されていたり…とバリエーションに富んでいること。つらい。2つ目は、顧客データはmysqldumpで取り込んでいるけど、加工が終わるまでの短期間とはいえ個人情報や機微情報が含まれる瞬間がある。分析に使うことはないし見るべきじゃないし見たくない。ここら辺をembulkでなんとか解決してやろうとしている。
1つ目の問題は愚直にymlを書けばいいので置いておく。2つ目の問題をどう解決したか、未解決な問題は何かをメモしとく。
検証環境 CentOS 7.3 on Vagrant mariadb 10.2 embulk 0.8.29 embulk-input-mysql 0.8.5 embulk-filter-eval 0.1.0 embulk-filter-hash 0.3.2 embulk-output-mysql 0.7.11 サンプルのテーブル、データ -- 元データ CREATE DATABASE src DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE src.users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, birthday DATE NOT NULL, gender TINYINT NOT NULL, tel VARCHAR(30), email VARCHAR(200), prefecture VARCHAR(4) NOT NULL, city VARCHAR(100) NOT NULL, address1 VARCHAR(100) NOT NULL, address2 VARCHAR(100), PRIMARY KEY (id) ) Engine=InnoDB ; INSERT INTO src.</description>
    </item>
    
  </channel>
</rss>
