articles

すべて
ブログ
Qiita
note

PrettierとLinterを共存させるときの公式オススメが変わったらしいという話

個人でやっているプロジェクトにPrettierとESLintを入れようとしたときの話。 ESLintにもコーディングスタイルを整えるための機能があるので、何も考えずにそのまま両方を入れると、お互いのルールが競合してしまうという問題が発生します。 これを防ぐために、Prettierの公式ドキュメントに共存させるためのオススメ手順が書いているのですが、最近この内容に少し変化があったっぽいということに偶然気がついたので記事にしておきます。 prettier.io これが公式のドキュメント。書いてあることを雑に要約すると コードフォーマットのことはPrettierを、コード品質に関するこ...

Slack Appから送るメッセージに日付・時間を入れるときにdateフォーマットを使ってちょっと感動した件

小ネタです。 Slack App(bot)を作るとき、botから送るメッセージに日付や時間の情報を含めたいことが時々あると思います。 例えばこんな感じ。(右下) 「問合せフォームに入力があると、Slackに通知がくる」というものを作っていました。 最初は、このメッセージを送信しているサーバーで日時を表す文字列を組み立てて送信することを考えていたのですが、Slack側で閲覧しているユーザーのタイムゾーンや設定に合わせて日時をフォーマットして表示するという機能があることを知ったので使ってみました。 (長いことSlackのAPIはいろいろと触っていたつもりでしたが、これは知らなかったのでシ...

リモートワーク移行乗じて自宅の作業環境に散財した記録

僕の勤める会社では2月末頃にリモートワークが推奨となり、状況悪化に伴って3月中頃から(この辺記憶が曖昧。もうちょっと早かったかも)全員リモートワークへと切り替わりました。エンジニア職はありがたいことに、出社しなくてもほとんどの業務を自宅で行うことができるので、推奨段階であった2月頃からほとんど出社せずに仕事をしています。続きをみる

なんでエンジニアになったかという話。

はじめまして、なのかな?知り合い以外がこの記事にたどり着く気が全くしないけど、一応1本目の記事らしく自己紹介から始めてみる。続きをみる

React Native 0.60以降でreact-native-vector-iconsが使えないときのはなし

久々にブログ書いてます。 相変わらず日々React Nativeを触ったりしています。RN界隈の人はご存知かと思いますが0.60以降のバージョンでは react-native link {ライブラリ名} のようなコマンドを実行することなく、ネイティブに依存するライブラリを使用することができるようになりました。 最近、React Native 0.62のプロジェクトでreact-native-vector-iconsを使おうとしたらiOS端末で Unrecognized font family と言われてしまって困ったのでメモ書き。 使えるようにするための手順だけ書くと npm i r...

モノレポ on husky戦略

2020年は毎月2本技術的なアウトプットするぞ、と言いつつ1月から打ち破ってしまったので罪滅ぼしに最近業務でやったことについて備忘録的に書いておこうと思います。 モノレポを採用しているプロダクトにhuskyを導入したという話です。 ※前置きが長いので、いらない人は本題のところまで読み飛ばしてくださいませ。 モノレポ モノリシックレポジトリの略。 詳細な定義は知らないので、実際には違うかもしれないが(ていうか多分違う。)この記事におけるモノレポは「一つのGitリポジトリを用いて、一つのプロダクトのフロントエンド/バックエンド等のコードを管理するGit戦略」ということにして進めたいと...

XcodeでArchiveするとOther items(Generic Xcode Archive)になってしまう原因の探り方

Xcodeからアプリを公開するためにProduct > Archiveを行うと、生成されるファイルがなぜかGeneric Xcode Archiveとなり(iOS App Archiveになることを期待している)OrganizerのOther itemsのカテゴリに振り分けられてしまうという症状に長いこと悩まされていました。 やっと解決することができたので、その方法をここに記そうと思います。 環境 Xcode 11.2.1 注意 筆者はReact Nativeでの開発をメインにやっているため、iOSネイティブのアプリ開発の知識やXcodeに対する知識が豊富ではありません...

2020年の抱負

仕事初めなのでここらで2020年の抱負を公開しておく。 いつも目標立てては、数週間で頭の端っこに追いやられてしまうので今年はこの記事のリンクをSlackbotのリマインダーにセットするぞ。 追記: やった。 お仕事編 月2回以上の技術アウトプット Qiita記事とか、このブログへの記事とか、勉強会のLT登壇とかなんでもいいが月に2回以上やる。 月2回やったとしたら年間で24回になるので、まぁまぁなボリュームかなと思う。上を見たらきりがないが、ほぼゼロからのスタートなので結構頑張らないといけない。 後述する登壇に繋げたいという意図。 昇級する 詳しいことはここでは省くが、会社の...

2019-2020 年末年始をまとめる

さて、冬休みも終わるので、2019年末〜2020年始なにやってたかをまとめようとおもいます。 2019年末① 4回目の納会幹事をやった 物好きというか、なんというか笑 毎回なんだかんだ達成感もあり、次回への課題もあり、たくさんの人から感謝されるのが楽しくて気がついたら入社して4回目の納会幹事をしました。納会は四半期に一度なのでこれで1年やったことになりますねw 2019年末② Flutterをやってるよ FlutterのDevToolがえげつなくてすごいぞこれ— もがみん (@mogamin3) December 29, 2019 年末だけじゃなく、年始もやってるけど個...

近況報告的な記事(趣味要素つよめ)

社会人になって半年経った。という記事から一切更新しておらず、このままだと社会の荒波にもまれて闇落ちしたのかと思われてもしょうがない(?)のでここらで近況報告をしておこうと思います。 久しぶりの記事で申し訳ないですが、技術要素はほぼないです。ゆるふわ技術日誌とは一体。。。。 仕事 相変わらずReact Nativeでアプリを書いています。 入社以来、開発しているアプリにおける技術の面を支えていたスペシャリストの方が別の役職の仕事を優先するためチームから離れることとなり、その後任として技術面の意思決定をする役割をもらったりと、自分としては少しチャレンジな日々を過ごしていると思っています。 ...

CloudFuntionsで「File ./dist/index.js that is expected to define function doesn't exist」と言われた(TypeScript)

Google Cloud FunctionsとTypeScriptを使ってとあるSlackボットを作っていたら、正しく依存関係を指定しているはずなのに「File ./dist/index.js that is expected to define function doesn't exist」というエラーが出てうまくデプロイできず、結構ハマったので原因と解決策を。 (あたりまえですが./dist/index.jsのところは個人が設定しているエントリポイントによってかわります) 先に結論。 GCloud Functions: load error: File ./dist/index...

React Nativeでライブラリを使わずに枠線だけの吹き出しを作る

Fringe81アドベントカレンダー1日目の記事です。 弊社の提供しているUniposというサービスではWeb版のほか、Android/iOS向けにReact Nativeを使ってアプリを開発しています。 今回はそのアプリの新機能開発において、「枠線だけの吹き出し」を作る必要が出たためやってみた、という軽めの記事でございます。 「枠線だけの吹き出し」というのはこんなやつです。 react-native-svgなどを使って作る方法もありそうですが、今回は依存ライブラリなしでReact Nativeの標準コンポーネントだけを使って作ってみました。 環境 React Native ...

社会人になって半年経った。

表題の通りです。 ちょっとだけ振り返っておく。 4月/5月 この辺の話は過去にブログに書いてた。 yurufuwa-tech.hatenablog.com 初めての一人暮らしで浮かれているのがよくわかる記事。 あの頃は、目覚ましかけなくても朝目が覚めてしまって、それで凝った朝食を作っていたなあというのを思い出した。 多分一人暮らしに体が慣れずに目が覚めてしまっていたというのと、業務もそれほど忙しくなかったのがあるのかなあ。 結局朝食は、目玉焼き+トースト+(ときどき)ヨーグルト+コーヒーというので安定しました。ウインナーとか毎朝焼くのはちょっとコストパフォーマンスが悪いのでやめ...

Sign in with Slack x Firebase Authenticationやってみた話

この資料は5分LT用に作成されたもののため、だいぶ端折って説明されています。 https://yuruhachi-it.connpass.com/event/141835/ Sign in with Slackとは https://api.slack.com/docs/sign-in-with-slack 名前の通り「Slackアカウントを使ったログイン」を実現できる仕組み。 (ログイン時に要求する権限によっては)ユーザー情報やチーム情報を取得する事が可能 あんまり知られてないような気がした(僕が知らなかっただけかも) こんなケースに使えそう Slackのアカウン...

ReactNative v0.60が出たので内容を簡単にまとめる

⚛️ React Native 0.60 is out! Accessibility improvements, AndroidX, CocoaPods, Autolinking for native modules, a new app screen and upgrade helpers.Read more on our blog: https://t.co/CgeH6rgXsu— React Native (@reactnative) 2019年7月3日 昨日ReactNative v0.60が出たらしいので公式のブログやCHANGELOGを見ながら変更点をまとめます。 参考...

TypeScriptのReadonly/Partial/Pick/Recordについてまとめる

引き続きTypeScript handbookの英語に苦しみつつ読み進めています。 ちょっとだけ日本語訳にも頼ったりしているけど許してね。 さて、今日はAdvanced TypesのMapped Typeというところに出てくるReadonly/Partial/Pick/Recordという型について。 つい先日やりたいと思っていたことが全部解決したので、自分用メモとしてまとめておきます。 www.typescriptlang.org Readonly これは、既存の型の各プロパティを読み取り専用にしたい時に使う型。定義は以下。 type Readonly<T> = ...

JavaScriptのインスタンスメソッドを変数に代入してはいけない

JSerにとっては当たり前の事なのかもしれないが、うっかりハマってしまったので備忘録として書いておく。 こんな感じのコードがあったして… class User { constructor(name) { this.name = name; } getName() { return this.name; } } const user = new User('mirin'); UserクラスのインスタンスであるuserのgetNameメソッドを呼び出します。 user.getName() // -> mirin これは間違いなく、イン...

TypeScripのkeyofについて

TypeScriptのHandbookに一通り目を通す、というチャレンジを今週はしております。 なんとも読みにくい英語だなーなんて思いながら読んでたらkeyofという知らない演算子が出てきたので、調べてみました。 keyofが出てきたのはこちらの「Using Type Parameters in Generic Constraints」というセクション。 www.typescriptlang.org サンプルコードを引用すると、 function getProperty<T, K extends keyof T>(obj: T, key: K) { retur...

結局ジェネレータって何に使うの…?って話

JavaScript基礎力強化を図っています。 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発作者: Ethan Brown,武舎広幸,武舎るみ出版社/メーカー: オライリージャパン発売日: 2017/01/20メディア: 単行本(ソフトカバー)この商品を含むブログを見る この本を読み返しながら、知識のないところを学習するシリーズ。 ※先に結論を話すと、表題に関して答えを見つけられませんでした😉 ジェネレータについて話す前に、イテレータについて。 JSのイテレータについてざっくり 他の言語にあるイテレータ同様、繰り返しのための機構で、JSの場合Arr...

RegExp.prototype.execが偶数回しか動かない謎に遭遇したハナシ

先日、既存のコードのテストをしていたところ、正規表現のマッチの結果が実行するごとに変わるという謎の現象に遭遇しました。 適当な例を作るとこんな感じ。 const regExp= /\*\*(.+?)\*\*/g; // MarkdownのBoldの箇所を抽出する正規表現 const markdown = "こんにちは。今日の気温は**33度!**とめっちゃ暑いので熱中症に注意しましょう!" regExp.exec(markdown); 意図としては、Markdownの文章中からBoldのところ(アスタリスク2つで始まり、間になんらかの文字があって、アスタリスク2...

ES6で追加されたSymbolって結局なんなのか

JavaScript基礎力強化を図っています。 初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発作者: Ethan Brown,武舎広幸,武舎るみ出版社/メーカー: オライリージャパン発売日: 2017/01/20メディア: 単行本(ソフトカバー)この商品を含むブログを見る この本を読み返しながら、知識のないところを学習するシリーズ。 ES6から新たにSymbolという型のデータが追加されました。 developer.mozilla.org Symbol() 関数は常に一意の値を返します。symbol 値はオブジェクトのプロパティ識別子として使われます。s...

近況報告

なんとびっくり、ぴったり80日ぶりの更新です。 お久しぶりです。 ブログを書く習慣をつけるのは大変だったのに、書かなくなったら本当に書かなくてびっくりしました。 前回の更新である、2月23日から今日に至るまでに何があったかざっくり書いておきます。技術的要素はないです。 2月〜3月末 4月から入社する会社で、一足先にインターンとして働いていました。 内容としてはReact NativeとTypeScriptを使ったアプリ開発、という感じ。前回の更新がRNだったのも、業務の一環でつまづいたところとかのうち、一般的に役に立ちそうなものを書いたものでした。 無難に楽しく、週5日で働い...

React NativeのOS別 height/widthの挙動解説

最近React Nativeに触り始め、OSごとに異なる画面やコンポーネントのheight/widthの挙動にやや苦しんだので、調べたことをまとめました。 バージョン React Native v0.58 前提 これから解説で使用する単語の定義は以下の通りです。 Window height / Window width React Native標準のDimensionsを使用し、以下のようなコードで取得できる値を指します。 import {Dimensions} from 'react-native'; Dimensions.get('window').width; // ...

【ReactNative】AndroidとiOSではキーボードが開いた時の挙動が違う

※タイトルにRNとかいてますが、おそらくRNに関係ない話だと思います。多分。 ReactNativeを使ってて、キーボードが開いた時の挙動がOS間で違うのでは?と思って調べてみたらやっぱりそうだった、という話。 どっかに書いてるかな、と思ったけど見つけられなかったのでここに書き残す。 結論 どう違うのか なにがどう違うかというのをアニメGIFで撮ったので貼ります。 (追記: いらんとは思うけどコードあげました。 GitHub - uutarou10/rn-view-height-test ) (width/heightのラベルはそれぞれが100%に指定してある親Viewの値です...

最近知ったTypeScriptのちょっとしたTipsとか

相変わらずインターンではTypeScriptを書いています。 最近は、ちょっと自分でも成長したなと思うのですが、バグの原因を追い求めてライブラリの中をウロウロしていたりします。 人生22年、ライブラリの中をのぞいてみよう、なんならバグ見つけてPRだそうとか考えたこともなかったですが、人間必要になればやるし、やってみると案外できるもんですね。(もちろん楽ではないけど、一個ずつ読み解くことくらいは、努力次第でできるな、と思った。) 雑談はさておき、そんなこんなの業務の中で知って、「へー」と思ったTypeScriptの諸々をメモ書き程度に書いておきます。 tscのメッセージを日本語にする...

インターンを始めて1週間が経った。

表題の通りなのだが、4月から就職する内定先で、入社に先立って、インターンを始めて約1週間が経過したので、今の気持ちをまとめておこうかな、というのがこの記事の主旨。お気持ちポエムなので、スルーしてほしい。 何をやっているか どこまで書くと怒られが発生してしまうのかわからないので、適当にぼやかして書くと、TypeScriptで書かれたReact Nativeアプリの機能開発をしています。 とは言いつつ、1週間では環境構築→設計の理解→追加する機能の設計→見た目に関係のない部分の実装というところまでしか到達しなかったので、RN要素はほぼ無で、ひたすらTypeScriptと戯れていた感じの1週間...

【iOS12】iOS Simulatorにペーストするのがうまくいかない時

久しぶりの更新です。ずっと書いてないと書く習慣が失われそうなので、ちっちゃなネタでもどんどん投下していきます。 昨日から始めたバイト?インターン?での知見。 Macでコピーした文字列などをiOS端末上で貼り付ける方法。iOSはv12、Xcodeはv10.1です。古いバージョンだと違うかも。 通常はCmd + Vで通常通り貼り付けられます。なんの問題もないです。 ところが、開発していたら急に効かなくなってしまいました。 長いURL手打ちするのかよ〜と思っていたのですが、 Edit > Automatically Sync Pasteboardのチェックが外れていました。 こ...

PuppeteerのちょっとしたTipsいろいろ

ちょっと用事があってPuppeteerを初めて触ってみました。 以前、バイトをしていた時にSeleniumを触っていたことがありましたが、そちらと比べると、サクッとインストールできるし(npmだけで入る)、async/awaitで現代的だし、素晴らしいです。 Puppeteer触ってて調べたことをメモしておく。ちなみにv1.12.1。 PDFにマージンを設定する const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://exampl...

findコマンドでパスを検索する(ディレクトリも含めて検索する)

ド初心者かよ、という話。(普段からシェル慣れしている人なら、当たり前に知っていそうな話) あまりそのようなシチュエーションもないかもしれませんが、弊研究室は、卒論発表のスライド資料を全員共通のGitリポジトリで管理しています。 ディレクトリ構成は(user name)/卒論/(ユーザー名).pptxみたいな感じになっています。(実際とは少し違うけどだいたいこういう感じ) これをうまいことスライドだけ集めて発表用PCにコピーしたいという話。 -nameオプションはファイル名に合致するものしか検索できないので、どうしたものかと思っていたら-pathというオプションがあるみたいです。(-wh...

22歳になりました。気が狂いそうな話。

22歳になりました。 もう誕生日も終わりそうですが、本日2月2日で22歳になりました。めちゃ2が並ぶ。 今年はというと、就職というビッグイベントが待っているので、激動の1年になりそうです。頑張ります。 人生の目標としては、自立することでしょうか。なんだかんだ、親に頼りながらここまできたので、就職をきっかけに、経済的にも心理的にも自立して生きていけるようになりたいです。 具体的なアクションとしては、一人暮らしがあるのかなと現状では考えています。資金貯めたりして、2019年内くらいで引っ越ししたいな、という目標です。 気が狂いそうな話 そして、気が狂いそうな話。 悲しいことに、10年...

今更ながらtypescript-fsaが地味に便利だなという話

3日ぶりのブログ更新です。 「ゆるふわ技術日誌」なのに、技術のことでもない日記をつらつらと書くのも、精神的に来るものがあるので、これからは更新頻度を落としても技術的なことを書くブログにしていきたい所存。 久々にReactやりたいな(というかやらないと、書き方忘れそうだな)と思ったので、小さなアプリを作り始めました。 React + TypeScriptのプロジェクトを作るのも、いつのまにか $ create-react-app hoge --typescript でできるようになってるし、すごい。 Reduxのアクションやreducderは、普通のJSで書くのであれば、そのま...

Reduxのソースコードを読んでみたみたいな話

Reduxのソースコードを読んでみた。 別にReduxじゃなくて全然よかったんだけど、OSSのソースコード読んでみようかなと思ったのがきっかけ。 割とちっちゃめのライブラリで、とっかかりに読むにはちょうど良かった。 まだ、createStoreしか読んでいないけれど、こうやってできてたのかーと感心したり、知らないJSの文法が出てきたりした。(関数の中でargumentsという名前で引数が配列で取って来られるとか) あまりにも小さいかつ有名なライブラリだったのでコントリビュートしたりする余地は残念ながらなさそうだけど面白かった。 ...

集中ってだいじだなぁと思った。 昨日ブログ書いてないことからも想像がつく?ように、なんだか何も手につかずアニメとYouTube観て過ごしてしまう日を2日くらい過ごしてしまいました。 今日は、途中からなんとか切り替えて、卒研発表ようのスライドを作っていました。結果2時間くらいで終わったという。 2時間で終わることを2日間かけてやってしまった後悔は大きい。 スライドは無事完成したので、あとは練習して発表本番を迎えれば、ちゃんと卒業できそう。 よかったね、という感じ。 ...

なんだかぼけっと過ごしてしまった…… 大変よろしくない…。 ほんとに書くことがないよ

スライドを作る

今日は卒論発表の練習をしていました。 作ったスライドは、8割くらいOKで、残りの2割は要修正といった感じで、自分で作ったにしては、上出来なのではないかなと思った。 卒論発表もLTも、気をつけるべきポイントは似てて、 スライドにつらつらと文章を書きすぎない 図を使って視覚的に伝わるように 論点をブレさせない、飛躍させない と、こんな感じかなと思った。 特に僕は、話の内容を急に飛ばしてしまうクセがあるようなので、その点には気をつけつつやっていきたい。 卒論関連も、本当にそろそろ終わりなので、コード書くなり、設計について学ぶなり、何をやるか決めて、社会人になるまでの2ヶ月を有意...

OOP

OOPについて思いを馳せていた。(だいぶ大げさ) 思えば、大学1年の頃からずっとOOPらしき何かをやらされてきたが、本質は何もわかってなかったのではないか、という気がしてきた。 社会人まであと数ヶ月のタイミングなので、学んでおくべきは、こういう基礎的なところなのかな、と思ったりした。 あと、日常話として、今日で、半年間やってきたSAが最終勤務だった。 1年生にJavaを教えていた。自分が遥か昔に理解してしまったところまで、レベルを落として、同じ目線に経って教えることの難しさを痛感した半年だった気がする。 あと、Java忘れてなくてよかった。 ...

React NativeでTypeScriptを使う2019

React Native使ってなんか作りたいな〜と思って、作るならTypeScript一択だなぁ〜と思って、そういえば2017年夏にインターンでRN触ってた時はTSにするの地味に面倒だったような〜と思って、でもそれから1年以上経ったし、なんかもっとスマートになってるんじゃないなかぁなんて思って調べたら、やっぱりいい感じになっていた。 本当は、最近ちゃんとしたブログ書いてないし、ここに書いてやっぞ!と思っていたのですが、思いの外お役立ち情報な気がしたので、Qiitaに投稿することにした。 qiita.com こちら。 ポイントとしては、 react-native init MyPro...

React NativeでTypeScriptを使う2019

前提 $ react-native -v react-native-cli: 2.0.1 react-nativeは0.57.8 本題 前にReactNativeに触ったのは2017年の夏くらいだったので、ずいぶん方法が変わっていて驚きました。React NativeをTypeScriptで書きたいという話です。新規プロジェクトを作る時の話なので、既存プロジェクトに適用したいときはよしなにどうぞ(よくわかってない) 結論から述べると、react-native init MyProj --template typescriptとしてあげるとTypeScriptを使ったプロジェク...

だいたい卒論関係でやること終わってるので、 今日は本を読んだり、React Nativeについて学んだりしてました。 書くことがこれしかない……。 せっかくRNのお勉強始めたので、何か作りたいけど、こういう時何も思いつかないんだよなぁ…と思った。

卒論発表にはレジュメが必要なことを忘れていたので、急遽学校へ行き、レジュメを作ってました。 午後から行ったけど、普通に作り終わって、いい感じに、チェックも貰えたのでOK。 今日は本でも読みながらゆっくり過ごそう。 ほんと最近人生幸せな感じしている。

firebase-adminでCloud Firestoreを使う際にserverTimestamp()を使う

環境 "dependencies": { "express": "^4.16.3", "firebase": "^5.5.0", "firebase-admin": "~6.0.0", "firebase-functions": "^2.0.3" }, "devDependencies": { "typescript": "~2.8.3" }, なお、今回はCloud Functions上で実行することを想定したコードになっていますが、ローカル環境で実行する際にも適用できる内容だと思われます。(未確認) 発生する問題 (問...

Hyperでemojiを表示する(Ubuntu)

Hyperというターミナルがあります。 Hyper™ 最近気に入って使っていて、emoji表示をしたいなと思ったのでその手順をメモ。 環境 Hyper 2.0.0(stable) Ubuntu 18.04 LTS です。他のOSでは異なる気がするので、適宜調べつつやってみていただけると良いかと思います。 手順 手順というほど大したことは無いのですが…。 .hyper.jsを開く お好みのエディタで~/.hyper.jsを開くか、Hyperを開いている状態でCtrl + ,を押すと開きます。 font-familyを書き換える Ubuntu 18.04には最...

Docker ComposeのVolumeにNFSを指定する

最近教えてもらった技なのですが、Docker ComposeのVolumesにはNFSストレージをマウントすることができるようです。 やってみたので、忘れないようにメモ。ちなみに、今回はGrowiというOSSのWikiを動かす例です。 Docker Composeのバージョンは以下。 $ docker-compose -v docker-compose version 1.21.2, build a13347 Growiは公式でdocker-compose.ymlを公開しているので、まずはそちらをもらって来ました。 weseek/growi-docker-compose: gr...

そろそろ知っておきたいHTTP/2の話

はじめに 最近HTTPについていろいろと勉強する機会があったので、これを機にHTTP/2についてまとめてみました。 HTTP/2は標準化から3年が経過し、意識こそしていないものの普通に使われるようになってきました。なんとなくサーバーをHTTP/2使うように設定したけど、なにが良くなったのかイマイチ知らないというような人が読んで、理解できる記事を目指してみたつもりです。 HTTP/2がもたらしてくれるものとその仕組みをなるべく簡潔に噛み砕いて書いてみました。そのため、この道の専門の方からすると、不十分な表現や不適切な表現、或いは私の誤った理解などがあるかもしれません。 そのような箇所...

DockerでLAMP環境を作るときにハマったこと

docker-composeで動くLAMP環境を作った。 https://github.com/uutarou10/lamp-docker-compose 作りました。中身は PHP 7.2.3 MySQL 8.0 phpMyAdmin という構成。 わかってみれば大したことではないのだが結構ハマって時間を溶かしてしまったので何かのお役に立てばということで書いておく。 LAMP使いたいだけなら↑のリポジトリcloneしてきて云々する方が早い。 Authentication plugin 'caching_sha2_password' cannot be loadedと言...

Kubernetes入門ハンズオン-WordPressを立ててみよう-

Kubernetesハンズオンを私の所属する研究室で行いました。 我ながら入門者にはとっつきやすい資料ができた気がしたので、Qiitaにも軽く解説を交えつつ貼っておこうと思います。 スライド 初心者による初心者のためのKubernetesハンズオン // Speaker Deck このハンズオンの対象者 Kubernetesを始めたばかり or 始めてみたいひと 他の解説記事でkubectl run ...とかやって一通り試したけど、YMLどうやって書くのかわからなくて困っている人たち このハンズオンでやらないこと Clusterの構築手順 スライドの最後の方で軽...

Ubuntu16.04にDocker CEをインストール

環境 Ubuntu 16.04LTS デスクトップ版 手順 Get Docker CE for Ubuntu | Docker Documentation ここを参考に。というかほぼ日本語訳。(英語できないけど) インストールするDockerのバージョンは記事執筆時点のstable最新版の17.12.0-ce(Community Edition)です。(DockerにはCE(Community Edition)とEE(Enterprise Edition)というのがあって、無料で使えるのがCEというイメージで大丈夫だと思う。) Dockerのインストールは D...

ssh_exchange_identificationと言われてknown_hosts消したりhosts.allowいじっても直らない時に確認してほしいこと

タイトルの通りなのですが、SSHを使用してどこかへ接続しようとした時にssh_exchange_identification: Connection closed by remote hostと言われて接続できないことがあります。 ググると known_hostsを消す /etc/hosts.allowを書き換える といった対処法がヒットするかと思いますが、それを試しても直らない時に確認してほしいことです。 (この記事は~/.ssh/configを使っていて、かつProxyCommandで多段SSHしている人しか役に立たないと思われます。当てはまらなかったら残念ながら多分別の原...

IntelliJ IDEA組み込みのmavenのsettings.xmlを編集する

IntelliJ IDEAには最初からmavenが組み込まれていて、特に指定しなければそちらが使われます。 Proxy経由でないとアクセスできないリポジトリが使いたくて、settings.xmlを書き換えようとしたのですが、どこにあるかわからなかったのでメモ。 結論 さっさと結論を述べてしまうと、settings.xmlは以下のディレクトリにあります。(環境はmacOS 10.13.2/IntelliJ IDEA 2017.3.2 (Ultimate Edition)) maven3のsettings.xml: /Applications/IntelliJ IDEA.app/Con...

curlでよく使うオプションメモ

よく使うわりにいつも忘れるcurlのオプション。 メソッドを指定 curl -X "POST" https://... Xオプション オレオレ証明の警告無視 curl -k https://... kオプション Cookie埋める curl -b name=value https://... bオプション 複数個送りたい時はbを複数書くのではなく curl -b 'name=value&name2=value2' https://... という感じにする。 リダイレクトに追従 curl -L https://... Lオプション ヘッダを見る ...

mavenプロジェクトで依存関係を含んだjarファイルを作成する際に「メイン・マニフェスト属性がありません」と言われる際の対処法

タイトルの通りですが…。 依存関係を含んでパッケージングする 依存関係もろともパッケージングをするにはmaven-assembly-pluginプラグインを用います。 pom.xmlのproject->build->pluginsの下に追加します。 pom.xml <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> ...

recompose(HOC)を使用したReactコンポーネントのテストでどハマりした件

テストで何も返ってこなくて大変どハマりしたので備忘録。 解決策を見つけたのは私ではないけれどドヤ顔で書いてる(嘘) 私自身、初めてテスト書いていきなりハマったので、常識とかよくわかってないけど書いています。まさかり歓迎。 環境 enzyme recompose ハマったこと recomposeのwithHandlersとwithStateを使用したコンポーネントで返ってくるはずのコンポーネントが返ってきてないのでテストに落ちる 解決策 enzymeのissueにあるらしい。(見つけたのは僕ではない) https://github.com/airbnb/enzyme/...