2018-01-01から1年間の記事一覧
すごいHaskell楽しく学ぼうという本でHaskellを勉強しているのですが、ToDoリストをもっと楽しむという章に書いてあるコードをそのまま写経して実行してもエラーが出る(コンパイルエラーなので実行もできない)ので、正しいコードを載せておきます。 import S…
はじめに 理系大学生や機械学習を学ぶ社会人にとって線形代数は必須教科です。 大学に入るとまず習うのが線形代数だし、ディープラーニングの教科書をのぞいてみると線形代数を知っていることが前提に書かれています。 線形代数は簡単に言えば、高校で習った…
Qiita Processing Advent Calendar 2018 12月12日に投稿した記事です はじめに scaleやtranlateは書く順番によって結果が異なるって知ってましたか? 本記事は、transform系関数(scale,translate,rotate)を行列で表現し、深く理解することで正しく使えるよう…
はじめに 先日社内の方が「テイラー展開とマクローリン展開の違いがあるはずだけど、ネットで調べてもよくわからない」と質問していて、それに回答しました。 質問された方から僕の解説が「分かりやすい!」と言っていただけたので、もう少し詳しく説明を加…
はじめに Progateやドットインストールの登場で、多くの方がhtml&cssの入門されてるのを twitterやブログで見かけるようになりました。 僕もどちらにも登録してます。 ドットインストールでは、htmlやcss, railsなどなど様々なプログラミング言語を学ぶこと…
暑さも和らぎ、ようやく僕の大好きな季節「秋」が訪れました。 芸術の秋、食欲の秋、読書の秋・・・ 暑くて何もしたくなかった夏が終わって、様々な活動に活発になる時期です。 Processingをご存知でしょうか? さて、みなさんはProcessingをご存知でしょう…
こんにちは、1年間育休中のWEBエンジニア「さも」です。 2018年5月14日から育休が始まり、4か月が経ちました。 助産師さんやほかのママ(妻伝い)、区役所の職員の方からよく聞くんですが、男性が育休ってやっぱり珍しいことなんですね。 そろそろ…
今回はフライパン一つでささっと作れて、とっても美味しいアクアパッツァのレシピを紹介します。 あまり魚が好きじゃない妻が「また作って」と言うぐらい美味しいです!すっかり我が家の定番料理になりました。 アクアパッツァとは アクアパッツァはイタリア…
Effective Rubyの勉強メモです。 Hashクラスのオブジェクトに対して無効キーを渡すとnilが返ってきます。 nilが返ってくることを期待して(利用して)書いたコードもありますが、nilが返ってくるためnilガードで値を設定するコードが増えたり、思わぬところに…
Effective Rubyの勉強メモです。 どう使えばいいのかわからない。使い方もいまいち難しいメソッドの一つにreduce(inject)があります。 コレクションオブジェクトを操作するのにmapやeachはよく使いますが、reduceを使うと要素の合計の計算などmapやeachで書…
Effective Rubyの勉強メモです。 Array, Hashで存在確認する コレクションにある指定された要素が存在しているかどうかのチェックには、通常Array#include?メソッドを使うかと思います。 例えば、次のような権限クラスを考えます。権限クラスはパーミッショ…
Effective Rubyの勉強メモです。 Rubyではメソッドの引数の型を指定しないため、さまざまな引数が与えられます。 もし配列が引数に与えられることを想定して実装すると、引数に単一のオブジェクトやnilが送られてきた場合に困ってしまいます。 そこで、Array…
Effective Rubyの勉強メモです。 【目次】 コレクションをメソッドに渡すときの注意 破壊的メソッドを使わない対処法 コレクションをコピーしておく ディープコピーする コレクションをメソッドに渡すときの注意 rubyでは、コレクション(例えば配列)をメソ…
Effective Rubyの勉強メモです。 インスタンス変数とクラス変数 クラス内で@が先頭につく変数はインスタンス変数を表します。 インスタンス変数はオブジェクト一つ一つが持つプライベートな変数です。オブジェクトのあるインスタンス変数に値をセットしても…
ブログを始めたけど、なかなか続かない。書くことがない。アクセスが伸びないと悩んでいる方は多いと思います。 僕も始めて数か月は1日に1PVあるかどうかという感じでしたが、1年経った今は1日に平均200PVぐらいあります。 他のブロガーに比べると200PV…
文法・テクニックまとめ 【目次】 文法・テクニックまとめ リストのドットをなくす リスト含む要素の横並び padding・marginの値の指定 border 背景画像 透明度 文字間隔 ブロックスタイル カーソル 角丸 marigin: autoとtext-align: centerの使い分け font-…
Effective Rubyの勉強メモです。 オブジェクト指向はカプセル化によって公開するpublicメソッドと非公開なprivateメソッドを分けています。 最初の頃はすべて公開したら後で楽じゃないかって思っていたのですが、公開するものを制限することでテスト対象が減…
Effective Rubyの勉強メモです。 13章はUFO演算子とComparableモジュールについてです。 この二つは以前記事にしたことがあるのでササっと流していきます。 www.uosansatox.biz 簡単に言うと、UFO演算子(<=>)を定義するだけでsortやminメソッドが使えるよう…
変数同士が等しいかどうかRubyで調べる手段をご存知でしょうか。 数値同士、文字列同士なら言わずと知れた==を使えばいいですね。ほかにもRubyにはeql?メソッドなどが存在します。 ですが、すべて同じ結果を返すわけではありません。何をもって等しいとする…
Effective Ruby勉強メモです。 Rubyで大きなアプリケーションなどを作る場合には、どうしても既存クラスと同じ名前のクラスを定義したいときがあります。 以下のように書くとクラスを新しく定義しているかのように見えますが、実際には既存のArrayクラスを再…
今回は珍しく料理ネタを書きたいと思います。 最近圧力鍋を購入してから、結構な頻度で豚の角煮を作っています。 いろんなレシピを見ながら味付けを変えたりしているのですが、意外と書かれていないのが、肉の下処理です。 主に臭みを取るのに酒や塩をかけた…
配列ではなく、キーと値のペアで構成されているデータを扱うには、普通ハッシュを使うかと思います。 それ自体は間違いではありませんが、ハッシュにしてしまうとゲッターメソッドが使えず、オブジェクトかハッシュかを意識しながら扱わなくてはいけません。…
最近またkindleで本を読み始めました。 欲しい本をkindleで探して、買って、読む。 買うまでのハードルが低すぎてついつい買っちゃうんですよね。 もちろん、買って後悔した本もありますが、今日は買ってよかった本をランキング風に紹介したいと思います。 …
Progateで勉強したSCSSの文法のまとめです。 「なんかcssをちょっと便利にしたもの」程度の理解しかなかったので、progateで勉強し、文法をまとめてみました。 入れ子構造 通常のcssであれば .header { width: 100%; } .header ul{ padding: 10px; } と書い…
Rubyではメソッド名の末尾に"!"や"?", "="のような非英数字文字を使うことができます。 "!"はメソッドの使用者に注意を促すとき、"?"はメソッドが真偽値を返すのを明示的に表したいときに使ったりします。 たまに、"!"を付けると破壊的メソッドになるとか、…
伝統的かどうかわからないが、RubyはJavaなどにあるようなコンストラクタを持っておらず、代わりにnewメソッドから呼ばれるinitializeという特別なメソッドを定義することによりオブジェクトを初期化することができます。 特に定義しなければ、BasicObjectク…
親クラスの同名メソッドを呼ぶsuperについてです。 例えば以下のような場合 class User def login(acount, password) ~ログイン処理~ end end class AdminUser < User def login(password) ~ログイン処理~ ~固有の処理~ end end AdminUserクラスではロ…
Rubyでは、継承しているクラスを上へ上へと昇りながらメソッド探索を行います。 一つ上のクラスはsuperclassメソッドで知ることができますが、モジュールをインクルードしたときはsuperclassで検出できず、しかしいつの間にかモジュールのメソッドが使えるよ…
Rubyはコンパイルすることなく、即座に実行できる言語ですが、実際は構文解析などコンパイラ的な処理を行ってから実行されます。 コンパイラフェーズで出される警告は特に重要で、その大多数が曖昧な書き方ゆえ、さまざまな解釈の中から一つを選択したときに…
Rubyでは定数を先頭を大文字の変数として定義することができますが、ミュータブル(変更不可)ではありません。 システム全体で定数は変更されないことが期待されますが、イミュータブル(変更可能)となっているので、予期せぬ不具合や見つけにくいバグが生…