diaryこの広告は、90日以上更新していないブログに表示しています。LightsailのインスタンスにSonarQubeを立ち上げるSonarQube趣味で作っているコードにSonarQubeの静的コード解析を組み込みたいなと思った。Lightsailが最近東京リージョンに対応したので、インスタンスを立ち上げてそこにSonarQubeを構築してみることにした。Lightsailを使ってみてAWSが定量課金なのに対して、月あたりの定額なので個人利用するときは使い過ぎを心配せずに使える。名前を付ける」だけで終わる。GUI上からssh可能(セキュリティ上、鍵がなくてもsshできることになるので不安になるが...)細かい設定ができないので、サービス向きではなさそう。Codeという本を読み始めた。www.amazon.co.jp友人から譲っていただいたもので(値段が高い。チームのコードレビューで活かせそうなので、読みながらメモしていく。Small!functionは短ければ短いほど良い。BeckがSparkleで書いたコードは、全てのfunctionが3~5行くらいで書かれていた。Thingfunctionは1つのことをしろ...というが、1つのこととは何だろう。抽象レベルを1つだけ上げてfunctionの役割を説明した時に、一言で済むようにするのが良い。(実際の仕事としては1つではなくて良い)細かく分けすぎてもだめ。同じような実装が存在する別のfunctionが存在する場合は、そのfunctionの役割を考え直す。functionの中の処理をsectionで分けるケースも存在する。implementionなのか区別すること。implementionは一緒に書くべきじゃない。Thingの法則を守ることができない。typeが増えるにつれて肥大化していく。一つ以上のことを指定いるし、単一責任原則を破っている開放/閉鎖原則を破っている似たようなfunctionがたくさん生成されてしまう。Factoryパターンで対応しよう。Names読み手の期待通りの動作をするように名前をつける名前が長いことを恐れるな。謎の短い名前より長い名前の方がずっといい。名前を考えることに時間を費やすことを恐れるな名前の付け方は、統一させよう。Arguments引数の数は0~2に抑える。3は可能な限り避ける。4以上は基本ないと考えよう。単項であることが理想。Argumentsflag、ダメ絶対。flagをつけることで、確実にfunctionは1つ以上のことをすることになるし、何よりもmethodを複雑化する要因になる。isSuite)とするくらいなら、renderForSuite()とrenderForSingleTest()に分けるべき。Effectsfunctionの名前から期待される動作とは別に副作用を持っているコードは撤廃しよう。障害につながりやすい。Argumentsはない方がいい。オブジェクトの情報をreturnする。Blockstry...catch文は分けた方が読みやすい、というだけの話。Yourself同じコードを2箇所に書かない。Programminginputとoutputは1つだけ、が望ましい。できる限りreturnは複数書かない。gotoなどもできるだけ書かない。Collectionsを見てみる。スレッドセーフなどのメリットがある。github.com以下、サンプル。信号機の色を出力する簡単なサンプルを作ってみる。Engine)インストール環境はMBPローカル。pipですぐにインストールできる。Securityのチュートリアルをやってみたのでメモ。最低限必要なものは主に3つ。mypage以下は認可対象とする。Securityについて勉強した時のメモ。Projectのドキュメントの内容です。Securityとは、Webアプリケーションにセキュリティ対策機能を実装するときに利用されるフレームワーク。基本機能として大きく分けて次の2つの機能を持つ。認証:ユーザの正当性を確認する作業。認可:アプリケーションが提供するリソースや処理に対して、アクセスを制御する機能。他にもセキュリティ強化のため下記の機能を持つ。HttpFireWallHttpServletRequestとHttpServletResponseに対してファイヤーウォール機能を提供するもの。DefaultHttpFireWallにはディレクトリトラバーサル攻撃やHTTPレスポンス分割攻撃に対するチェックなどが実装されている。Filterの管理をするインターフェイス。Filterの管理をすることができる。SecurityFilterクラスの種類SecurityContextPersistenceFilter:リクエストを跨いでユーザの認証情報を共有する機能を提供するクラス。デフォルトではHttpSessionに認証情報を格納して実現している。UsernamePasswordAuthenticationFilter:リクエストパラメータで指定されたユーザ名とパスワードを用いて認証処理を行うクラス。LogoutFilter:ログアウト処理を行うクラスFilterSecurityInterceptor:HTTPリクエスト(HttpServletRequest)に対して認可処理を実行するクラス。ExceptionTranslationFilter:FIlterSecurityInterceptorで発生した例外をハンドリングするクラス。Validationで行った。当初@Configurationクラスに下記のような設定が必要かと思われたが、公式リファレンスを見ると必要ないみたい。Validationは↓のように、クラスに対して@Validatedアノテーションを追加するだけで良い。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。