Categories
Study

CAREER SKILLS のメモ書き

… 最初のうちはほとんどただに近い額で、返金保証までつけることをお勧めする。そのようにして最初のクライアントを獲得しやすくして経験を積み、… CAREER SKILLS 第54章 フリーランスと起業 – 報酬額の決め方 … スキルは大切だが、報酬額の決定要因としては小さい。最大の決定要因はクライアントであり、あなたの社会的評価がそれに続く。… … 時間給から完全に離れ、価値に基づく報酬に一本化 … CAREER SKILLS 第54章 フリーランスと起業 – 報酬額の決め方 周りの様子ばかり気にしながら仕事をしてきた気がするので、ここは一つ、駆け出しのフリーランスのつもりでやり方を変えてみるのも良いかも。 ちょうど民法改正もあって、契約不適合による代金減額請求という可能性もあるわけで、もちろんそうならないように仕事をしていくとしても、何か問題があって減額を請求されるよりは積極的に返金保証をつけたほうがお互いに気持ちよく仕事ができそうな気もする。

Categories
Software

Solo mode on GarageBand

GarageBand(on macOS)を使っていて、何かの操作でPlay Headが黄色い表示になりました。 復旧の仕方がわからずいろいろ調べて解明。 Soloモードというらしく、各トラックにある Solo ボタンをクリックすると、そのトラックのみの再生ができるようです。 そして、このSoloモードの切り替えのショートカットが “S”キーに割り当てられていて、何かの拍子に “S”キーを触ってしまったようです。 Soloモードになると、ビートやテンポ・キーの表示も黄色になります。 Soloボタンをクリックするか、”S”キーを押せば元に戻ります。

Categories
WordPress

サイトヘルスのエラー解消 – WordPress

WordPressのサイトヘルスで1点問題がありました。 調べてみるとこのような記事が見つかりました。 WordPress.org support “The loopback request returned an unexpected status code 403.“ 原因は wp-admin/.htaccess によるアクセス制限でした。念のため、レンタルサーバーのエラーログを開いてみると、 というログが残っていました。この xxx.xxx.xxx.xxx の部分がサーバー自体のIPアドレスで、これを .htaccess で許可する必要があります。ということで .htaccess に を追加して、あらためてサイトヘルスを開いてみると、 ループバックの問題が解消できました。

Categories
programming

macOS Appの練習 – SwiftUI Tutorials

Swiftでの開発は参考書を読んでサンプルアプリを作っている程度でまだまだ初心者です。ここで、自分で何か作ってみようと書き始めたところ、ロジックよりもレイアウトがなかなか難しくて先に進めそうにない感じがしていて、スマホのポートレイトで配置してみて、そこからタブレットの横置きに回転させると崩れてしまうような状態からなかなか抜け出せそうにありません。 何か教材はないかと調べていたところ、 Introducing SwiftUI という記事があったので一通り試してみました。 ほぼほぼ順調に進めることはできたのですが、2カ所ほど引っかかる部分がありました。 1個目 Compose Animations for Complex Effects この、ボタンを押すとグラフが右側から表示させるケース。 slideのtransitionでrippleという効果がかかっているのですが、試した当初のコードではstaticにslide inされるのみ。何かコードが足りない気がしてサポートに問い合わせたところ、どうやらチュートリアルの手順が漏れていたようで後日プロジェクトファイルと記事が更新されました。 2個目 その後、tutorialを進めていってwatchOSまでできました。そして最後のmacOS Appの途中でエラーが出て動かすことができなかったので、StargingPointのプロジェクトを一旦閉じて、Completeを開いたところ、必要なライブラリのインポートが足りなかったようです。 これでめでたくTutorial一通り完了しました。 最初、スマホ用のアプリとして書き始めて、そのプロジェクトファイルがwatchOSに対応できて、さらにmacOSアプリまで発展させることができるので、フレームワークとして良くできているように思いました。 それと、以前はXcodeのUIでviewにパーツを配置していろいろ制約を設定して、回転させたら崩れて、制約を設定し直して、の繰り返しだったのですが、このTutorialに倣ってコードで配置していけばそういう苦労もなさそうです。 まだ具体的にSwiftを使って仕事というわけではないのですが、少しSwiftUIの書き方がわかってきたので、また自分なりの課題を設定して実践してみようと思います。

Categories
programming

GDG Tokyo のハンズオンにリモート参加 – Angular+Firebase

土曜日の午後、仕掛かりのチュートリアルでも進めようかと思っていたら #GDGTokyo のハンズオンにリモート参加できることを知りYoutube Live 視聴枠でエントリー。 https://gdg-tokyo.connpass.com/event/168843/ 前半はなんとかついていけたのですが、後半のAngularのセッションのスピードについていけず早々に脱落。あとでビデオが公開されるとのことで、夕食後にビデオを見ながら(何度も巻き戻しながら)試してみました。ざっとメモ書き程度ですが書いておきます。 アーカイブ動画はこちら。 講師のlacolacoさんの資料。 今回の内容は、Angular入門: はじめてのアプリこれが完成している状態からのFirebaseを導入するようなお話みたいです。 ローカル環境 Angular setup ソースコード https://github.com/lacolaco/angularfire-20200307-starter 上のリポジトリをcloneしてフォルダに入る。 インストールが完了したら、 ここで、インストール中にAnalyticsの確認のメッセージや[y/N]の入力を求められる場合、 https://github.com/angular/angular-cli/blob/master/docs/design/analytics.md#disabling-usage-analytics 例えば、 とすると抑制できるようです。 Firebaseプロジェクトを作成 https://console.firebase.google.com/このページでFirebaseのプロジェクトを用意します。 AngularFireをAngularプロジェクトに追加 シェルの画面内にFirebaseのプロジェクト名がリスト表示されるので、さっき用意したプロジェクト名を選択すると、次のファイルがAngularプロジェクトに追加されます。 これでFirebaseの導入ができました。 デプロイ とすると、(project-name).firebaseapp.comのようなURLで公開されます。Azure, GitHub pages, S3などにもデプロイできるそうです。 ここで、現時点で商品は products.ts にハードコードされています。これをFirebaseのデータベースに移していきます。 Firebaseにproductsを置く Firebase consoleから「コレクションの開始」で、productsの1個目を手入力。 ドキュメントの追加で残り2個を適当に登録。フィールドを追加(id: 1, 2, 3) Firebaseの設定を書く FirebaseのProject overviewを開いてウェブアプリを追加します。 コードが表示されたらコンソールに戻って、追加したアプリをクリック。その右側に表示される設定アイコンを開きます。 そして、「Firebase SDK snippet」の構成(Config)を選択。 この部分をコピーして、 この2つのファイルに貼り付けます。 productsをFirestoreで管理 このあたりの詳しい手順はlacolacoさんの記事をご参照ください。https://hackmd.io/@lacolaco/20200307-note#Add-Firestore-for-product-data Firestoreとは(Firebaseドキュメント) ログイン設定 認証周りの詳細もlacolacoさんの記事にお任せします。https://hackmd.io/@lacolaco/20200307-note#Add-Firebase-Auth-for-signing-in Firebase Authentication(Firebaseドキュメント) メール・パスワードや各種SNS認証、電話番号や匿名など様々な認証方式が利用できます。 RemoteConfig 最後に、RemoteConfigを使ってお店からのお知らせをアプリの画面に表示させるなど。https://hackmd.io/@lacolaco/20200307-note#Add-Firebase-RemoteConfig-for-changing-app-behavior まとめ 以前、愛媛で開催されたときのハンズオンにも参加したのですが、普段使っていないと様子を忘れてしまって今回のライブコーディングの際も編集するファイルを探しているうちに置いていかれる感じになってしまいました。 こうやって実際に試しながらふりかえってみると頭の中が整理できて、ファイル構成やどの画面で何を操作するかなどが少しずつですが定着してくる気がします。ただし、まだ断片的かつ部分的な機能の理解でしかないので、今回のような「Angular入門: はじめてのアプリ」から次にやることを考えて試してみようと思います。 最後に講師の方々およびGDG Tokyoのみなさんに感謝。

Categories
Agile

pytestでTDD

Test Driven Development with pytest を拝読してのメモ書き。 unittestはクラスから書く必要があるが、pytestはfunctionで書き始めることができる。 TDDとは 失敗するテストを書く テストを通すコードを書く 必要に応じてリファクタリング Red-Green-Refactor サイクル。 なぜTDDを用いるか テストを書くには入力と出力を知っている必要がある。TDDはコーディングを始める前にアプリのインターフェースについて考えることを強制する。強制する、というときつい感じですが、何が与えられて何を出力すれば良いかをシンプルに整理するきっかけになる感じ。 コードベースでの自信につながる。新たな変更がシステムを壊したとしても、容易に修復できる。 あらゆるバグをなくすことはできなくても、少なくすることは可能。バグ対応する際にテストを書けば安心につながる。 ドキュメンテーションとして使える。フィーチャーの入出力をテストで表現することで、そのコードのインターフェースがどのように使われるかを知ることができる。 コードカバレッジ pytest-cov がポピュラー(らしい)。 コードカバレッジが高いというのは、バグがないということではなくて、想定されるあらゆるシナリオについてテストされているかどうか、という指標。 インテグレーションテスト ユニットテストは個々のモジュールの振る舞いが期待通りに動作することの確認。一方、インテグレーションテストはモジュールを束ねて、期待通りに動作するかを確認する。 インテグレーションテストは個々のコンポーネントのテストが通るまで失敗(fail)する。インテグレーションが成功(pass)すれば、ユーザーの要求に合うように作られたと判断できる。 Prime Numbersの実装例 ※省略 Inventoryの実装例 ※省略 まとめ ユニットテストは個々のモジュールが期待通りに振る舞うことを確保する。インテグレーションテストはモジュールの集合(いわばコンポーネント)が相互的に期待通りに動作することを確保する。 (実装例の中にあった)fixtures や parameterized functions は要件に合わせて素早くテストケースを対応させることができる。

Categories
Agile

TDDは 過大評価されてる?

“Test Driven Development is overrated” という記事を拝読してのメモ書き。 “TDDは過大評価されてる” と言われて残念に思ったのと同時に、TDDが都市伝説化していると感じた。(ことからこの記事にまとめたとのこと) TDDのアイディアは Kent Beck によって作られた。“Test Driven Development” written in 2003 小さな落ちるテストを書く テストを通す機能を実装する リファクタリング “Red, Green, Refactor” でもTDDがあまり実践されていない現実。 QAの部署がテストを書いている モックとかスタブとかとても手間がかかる 利益がない 遅い いや、デベロッパーは次のことに責任を持って取り組んで欲しい。 ニーズに対して正しい技術を用いる 理解しやすく テストしやすく 拡張性を持たせ シンプルに ユニットテストの土台の上でサービスやUIが成り立っていると考えれば、利用者からのフィードバックループの増加に役立つし、メインゴールとしてのDevOpsにもつながる。 主な二つの利益。 テストで定義した通りにコードが動くこと どのようにコードを書いていくかを考えて明記すること コードとその機能に自信を持つことで、チーム全体として速く回せるようになる。

Categories
WordPress

Local By Flywheel が起動しない…

さて、進行中のウェブサイトを確認するため Local By Flywheel を起動しようとすると、 このダイアログが表示されて、先に進まない様子。 調べてみると、[Regenerating Docker Machine TLS Certificate, checking system won’t start](https://localwp.com/community/t/regenerating-docker-machine-tls-certificate-checking-system-wont-start/5235)という記事があって、 さらに手順をまとめた記事がありました。感謝。 この手順で復旧完了。