他の人がブログとqiitaをどう使い分けているか、13個の記事を調べてみた。

調べた結果、qiitaに受けた印象 qiitaは、自分の技術的な記事で繋がるSNSという感じがしました。読者がプログラマーで、反応が得られやすいです。個人ブログで専門的なことやニッチなことを書いても、なかなか人が集まらないでしょう。集まったとしても反応…

CoffeeScriptでプライベート変数を定義する方法

CoffeeScriptのプライベート変数は、コロンではなくイコールで 下記は、人間に自己紹介させるクラスです。_nameはプライベート変数にしてあります。CoffeeScriptでは、プライベート変数はクラス定義の直下に書きます。プラベートメソッドの場合は、変数の値…

railsの複合ユニーク制約をshoulda_matchersでテストする

Railsのユニーク制約をshoulda-matchersを使ってテストしてみました。結果として、このマッチャーは複数カラムをまたいだ制約の時は使わない方がいい気がしました。1つのカラムでのユニーク制約も、複数カラムのユニーク制約も同じ扱いになっているようです…

rspecでundefined method validate_presence_ofとエラーが出る

rspecでundefined method validate_presence_ofというエラーがでました。not null制約のためにvalidate_presence_ofを使ったのですが、こんなメソッドないと言っています。他のプロジェクトでは使えていたので、比較してみるとバージョンに問題がありました。…

gemsetからvendor/bundleにgemを移したら、rspecコマンドがつかえなくなった

vendor/bundleにbundle insatllすればrbenbのgemsetを使う必要がなくなったので、gemsetを削除して切り替えました。するとbin/rspecが使えなくなりました。bin/rspecがrspecの実行ファイルなので、これを自動作成する時の読み込みパスがgemsetのどこかになっ…

コマンド「QUEUE=resque_sample rake environment resque:work」を読み解く

Railsのコントローラで定義したメソッドの中で、長い処理は非同期で行いたいときはありませんか?例えばユーザー登録のメール送信などは、コントローラのメソッドの中でメールが送信されるまで処理を止めるのではなく、非同期にして先に「登録が完了しました…

【やる夫で学ぶRedisの雰囲気】String型とHash型でクラスの名簿管理

KVSのRedisがRDBとどう違うのか?実際に使っているところを見ながら確認したいと思い、「やる夫で学ぶ」シリーズとして作成してみました。基本ログに一言添えただけです。詳しい説明は載せていません。次の目的に使えるかと思います。 Redisの雰囲気を掴みた…

zshrcとzshrc-eの違い

zshでlsofやnestatコマンドが使えなくなっていたので、調べたらbrew install zsh --enable-etcdirで直るとのこと。zshを一度消して、再インストールをしたらホームディレクトリに.zshrc-eとファイルが出来ていました。 zsh5.0.5を入れたら、PATHがおかしくな…

Railsのモデルをループで回してdestoryする時に、関連テーブルのレコードも削除したい

下記のモデルと対応するテーブル、3つずつ作成して実験しました。括弧内はカラムを表しています。 Post(title) Tag(name) PostTag(postid, tagid) これでdb/seeds.rbにレコードの追加、削除を記述します。title1という記事につけられたtag2を削除します…

Railsのモデルバリデーションとカラム制約のユニークはどう挙動が変わるのか

下記のモデルと対応するテーブル、3つずつ作成して実験しました。括弧内はカラムを表しています。 Post(title) Tag(name) PostTag(postid, tagid) db/shema.rbにadd_index :tags, :name, unique: trueを追加して、モデルにバリデーションを追加すると、…

JavaScriptで座標を配列とオブジェクト、どちらで管理した方が処理が早くなるか実験

オブジェクトより配列を使ったほうが、計算が早くなると思いましたが実際は違いました。C言語の時は、プリミティブ値が連続的に配置された集まりだったから配列の走査が速いのかもしれません。JavaScriptだと配列はArrayオブジェクトなので、なるべくオブジ…

Wordpressにgistを貼り付けると行番号がずれて、文字と重なってしまう

ブログにログを貼り付ける際にgistを使用したのですが、行番号がずれてしまいました。使用しているテーマはWordpressのTwenty Fifteenです。 下記の記事によると、cssの競合が起こっているようです。 CSS Conflict between WordPress Twenty Fifteen and emb…

gitでコミットを取り消す方法を、初心者向けにログで解説

gitでさっきのコミットを取り消して、変更したい時がありますよね。その実演を初心者向けにログとして残しておきます。今回は、gistを使いましたが長いログを残すのには便利かなと思いました。gistを整理できるGistBoxというのがあるのですが、タグ機能は公…

Wantedlyの検索ページからURLの構造を学ぶ

RailsでのURL設計に悩んでいます。今回は検索ページのルーティングを学ぶために、Wantedlyを調べてみました。 検索ページのURLの構造 検索ページは次のようになっています。 https://www.wantedly.com/projects/mixed?fresh=true&occupations%5B%5D=engineer…

vuejsのグラフサンプルであるレーダーチャートの座標計算を読み解く

vue.jsの公式サンプルであるレーダーチャートの仕組みを見ていきます。 これはpolygonというsvgの多角形を描画する要素に、各頂点の座標を渡すことで描画しています。正多角形ではなく、各ステータス値によって頂点を変動させます。重要なのはこの頂点の座標…

bowerパッケージ登録時にFailed to readとエラーが出る

bowerパッケージを作成する際にFiled to readというエラーが出ました。これは他にbower.jsonのフォーマットに問題がある場合に発生します。今回は、行末尾にカンマのつけ忘れでした。修正後はGithubにpushしてバージョンのタグを修正後のコミットに付け直せ…

TodoMVCのBackbone.js版はどのようにtodoを新規作成して描画しているのか

様々なJavaScriptフレームワークを使って、同じTodoアプリを作る企画TodoMVCをご存知でしょうか?今回はBackBone.js版のソースコードを読み解いていきます。全てを追うのではなく、タスク名を入力して新規タスクがどのように作られるかを掴んでいきましょう…

Railsチュートリアルのサインインの仕組みをまとめる

railsチュートリアルのサインインの部分を、自分用にまとめました。 第8章 サインイン、サインアウト | Rails チュートリアル viewのレンダリングまでの大まかな流れ app/controllers/users_controller.rbのnewメソッドを見てみます。この中には@user = User…

vaingloryアップデート1.8で抑えるべきところの簡易まとめ

1.7はアイテム周りなど細かい調整が多かったですが、1.8はかなり大きなアップデートになっています。新キャラSKYの追加だけでなく、既存キャラも大きく調整されました。下記で日本語にて詳細を確認することができます。ここではざっと抑えるべきことをまとめ…

rubyのopensslのパス問題の次は、bundle installでfatal: No live threads left. Deadlock?に遭遇した

bundle installがうまくいかない場合はお試しください。今回はopensslのパスの問題と一緒にfatal: No live threads left. Deadlock?というエラーも出てきました。 # 有効なopensslコマンドのバージョンを調べます。 # これはmac osに最初から入っていたもの…

rbenvでruby2.1.1がインストールできないので、ソースコードからmake installでコンパイルした

Everyday Rails - RSpecによるRailsテスト入門を購入したので、チュートリアルをこなしていこうと思ったら、rbenv: version '2.1.1' is not installedとターミナルで表示されました。どうやら.ruby-versionというファイルに2.1.1を使用するように書かれてい…

masterが更新された場合に、トピックブランチにその分を取り込んで作業する方法

Git

特定のコミットの内容を再編集するためにgit rebase -iを使っていましたが、ただrebaseがどういうものなのかは知りませんでした。次のような状況で使うといい教えてもらったのでシェアします。rebaseが何に使うのかわからない方には役立ちます。 やりたいこ…

他サイトへのリンクを貼る際に、その記事のタイトル文を使うか代替文を使うか

他のサイトの記事の感想文を書いたのですが、その際のリンクの表記の仕方を変更しました。 before 働きやすい工夫をするという、楽する方法を考えるのが好きです。そのために色々な改革を行っているcookpadのCTOの対談の記事がありました。読んでみて私がい…

CookpadのCTOから働きやすい工夫がある文化づくりを学ぶ

働きやすい工夫をするという、楽する方法を考えるのが好きです。そのために色々な改革を行っているcookpadのCTOの対談の記事がありました。読んでみて私がいいなと思えた部分を取り上げてみたいと思います。【前編】 元・超ワガママエンジニアのクックパッド…

railsでrake db:createをするとCan't connect to local MySQL server through socket '/tmp/mysql.sock'と表示される

dbを作成しようにもCan't connect to local MySQL server through socket '/tmp/mysql.sock'というエラーが起きて作成することができませんでした。brewでmysqlをインストールしたのでmysql.sockというファイルが違う場所にあって見つからないのかなと思った…

rails newがrun bundle installで止まってしまう

rails new myappname -d mysqlを実行するとlogがたくさん出てrun bundle installでずっと止まっていました。rails newmyappnameでは完了しました。どうやらmysqlが入っていなかったようでbrew install mysqlでインストールすれば、無事railsをプロジェクトを…

開いているタブからタイトルとリンクをmarkdown形式で取得するChrome Extensionを作成してみた

現在開いているタブのタイトルとリンクをmarkdown形式でクリップボードにコピーするエクステンションを作りました。必要なファイルは下記の3種類です。 icon用の画像 js/backgound.js manifest.json Chrome extensionを作成するのは今回が初めてです。その際…

pythonと同じだと思い、rubyのインタプリタが起動しない問題にハマってしまった

pythonだとコマンドpythonで2.xが、python3で3.xのpythonインタプリタが起動します。rubyも同じだと思い,rubyコマンドを引数なしで実行していました。そうしたら次の行に改行されるけどプロンプトが表示されず処理が終わらない状態になりました。 原因はコマ…

Rails初心者のアセットパイプラインに関する疑問19個をまとめてみた

下記のページで読んで浮かんだ疑問をまとめてみました。アセットパイプラインがあるので、GruntやGulpなどのタスクランナーを使って、プリコンパイルする必要がなくなるのはとってもいいですね。 アセットパイプライン | Rails ガイド そもそもアセットって…

Rails初心者のマイグレーションへの11個の疑問をまとめてみた

Railsのマイグレーションの学習をしながら、いくつか疑問をまとめてみました。わかっていても疑問文を作っています。その方が頭に残るのと、視点を変えて学習できると思うので。 マイグレーションファイルはどこにある? アプリケーションルート/db/にありま…

railsでsidekiqのQue(キュー)が実行されない

作成したrubyスクリプトを定期的に実行させるために、sidekiqというgemを使うといいと教えてもらいました。下記の記事を参考にしていたのですが、かなりつまづいてしまいました。その際に必要だったことをメモしておきます。 Rails - sidekiqの使い方 - Qiit…

チーム開発で作業が滞らないようにするために、WantedlyのGitHub開発フロー研修を読む

まだGitのコマンドもコミットぐらいしか覚えていないですが、バックアップやログを残すためには使えています。自分だけではなく他の人と開発をすることになりgithub-flowを採用しました。1作業を1ブランチにすると、その編集を踏まえて機能追加しようとする…

.keepファイルは何のために存在するの?

railsで.keepというファイルを見かけました。これはgitで空ディレクトリを管理対象に含めるために、作成するらしいです。.gitkeepというのもあるみたいです。 gitでは空のディレクトリは管理対象に含まれないので、.keepなどのダミーファイルを置くことで対…

railsを再開するために、treeコマンドで構造を確認して疑問点などをメモ

以前railsのチュートリアルでrailsを学んでいたのですが、中途半端なところでpythonの学習に移行してしまいました。今回は他の人とrailsを使う機会があったので、まずtreeコマンドを打ってざっとわからないところを挙げてみました。こういうのを残しておくと…

watchifyとbrowserifyで、jqueryとbootstrapをrequireしても依存関係が解決できない

watchify, browserifyを使ってjquery, bootstrap, handlebarsをrequireしたのですが、泥沼にハマりました。私は下記のように読み込む順番にだけ気をつけてrequireすればいいのかと思っていました。 require './jquery' require './bootstrap' require './han…

npm自体のバージョンアップ、インストールに失敗するとコマンドが消えて使えなくなる

npmのバージョンアップはnpmからnpmをインストールします。ちょっと変わっていますね。 $ npm install -g npm npm ERR! Darwin 14.3.0 npm ERR! argv "node" "/usr/local/bin/npm" "install" "-g" "npm" npm ERR! node v0.12.7 npm ERR! npm v2.11.3 npm ERR…

gulpでwatchifyを使うと、require出来ないモジュールがある

下記のjs:bundleタスクでwatchifyでjsを監視するようにしてたのですが、どうにもうまくいかない。最初はうまく動いていたのに、突然taskがStarting 'js:bundle'...と表示されてからFinishedにならずにbundle.jsが吐出されなくなりました。watchifyはbrowseri…

gulpのパス変数をオブジェクトのプロパティにしてまとめてスッキリさせた

gulpの各dest, srcのパスを個別の変数で管理していました。この方が補完が効くかもしれませんが、js~というパス以外の変数が増えてくると補完対象としては邪魔になるし、srcとdestをもっと統一して管理したいです。 destPath = './dist' srcPath = './src' j…

gulpのmain-bower-filesでbootstrapが認識されずに抽出できない

bowerでbootstrapをインストールして、main-bower-filesで抽出しようとしたのですが認識されませんでした。他のライブラリは抽出されて、エラーも出ないので原因がわからず。 調べてみるとgulpfileには問題はなく、bowerでインストールの仕方でした。どうや…

gulpのbrowserifyとwatchifyの違いを実際に使いながら理解する

gulpはgruntに比べて記述がわかりやすいです。ですが、情報量はgruntの方が多い感じがしました。gulpは外部モジュールのオプションに何があるのか、どう使えばいいのかがわからなかったのですがgithubのリポジトリを見ればちゃんと書いてありました。今回は…

テンプレートエンジンHandlebarsを使って、jQueryの動的なUI(DOM)を構築する部分をリファクタリングしてみた

SPA、シングルページアプリケーションを作成するためにDOMをjQueryで作成していました。例えば、次のようなinput要素。 <div class="form-group"> <label for="row">行</label> <input id="input-row" class="form-control" type="number" min="1" value="3"> </div> <div class="form-group"> <label for="column">列</label> </div>

jQueryで動的にUI(DOM)を構築するアプリを綺麗に書くため、TodoMVCのソースコードを読んで学んだことをまとめてみた

TodoMVCという1つのTodoアプリを色々なJavaScriptのフレームワークを使い作ってみようというプロジェクトがあります。これのjqueryバージョンがあったのでソースコードを読んでみました。 これがすごい整理されていて、1ファイルに読みやすく処理がまとまっ…

初めてテストコードを書いて分かったことは、記述するのにとにかく時間がかかること

WebStorageでデータをCSV管理するライブラリを作成しました。GUIに影響するものではなく、データを管理するモデルなので手動テストがやりづらいです。それとデータの準備も手間がかかるため、今回初めてテストコードを書きました。その際に調べたことを残し…

CoffeeScriptでクラスを作り、コンパイル後のjsファイルを読み解く

CoffeeScriptで手続き的に記述していたプログラムを抽象的にするために、いくつか関数化を試みていました。ですが、関数名に悩むのでクラスにすることに。けど、JavaScriptでのクラスも経験が全然ないので、CoffeeScriptをコンパイルしてできたjsファイルを…

jQueryを使ったtableの行列の増減処理を、関数で抽象化をしてリファクタリングしてみた

tableの行列をinput[type=number]で増減できる仕組みを作りました。jQueryで手続き的に記述していると、イベントハンドラが読みづらくなってしまったので下記を参考にリファクタリングをします。 The Refactoring Tales - JavaScriptのリファクタリング本を…

tableタグをwebstorageにどのような形式で保存するか考えてみる

現在、表をブラウザで編集できるアプリを作っています。この時にセルの値を変更したら、webstorageのlocalstorageに保存するようにしたいです。keyとvalueの組み合わせで保存するのですが、テキストエディタではなく表なので保存形式が変わります。どのよう…

CodeGridでjQueryの.on()周りを調べたのでメモ

onでdelegateをやるために検索していたら下記の連載記事がヒットしました。ついでにon周りのことを復習しておきました。onは便利ですね。 実践、jQuery - .on()と.off()を使いこなす 1 | CodeGrid わかったこと イベントにclick.hoge.fooのように複数の名前…

プログラミングのブログに他のことを書きたい時に、カテゴリとタグでどう分類すればいいのか?16個のブログを調べてみた

今はこのブログでプログラミング関係の記事を書いているのですが、本当は面白系などのネタも書きたいなと思っています。ただ、その場合はカテゴリ・タグをどう扱うかというところが悩みどころです。リスクの分散ということで、別ドメイン・別ブログにすると…

シンプルなGitの運用方法であるGithub-flowについて調べてみた

Gitの運用方法がテンプレートとしていくつも存在しています。workflowというらしいです。その中でGithub-flowというのが単純でわかりやすいそうなので調べてみました。ブランチはmaster1本で運用して、作業をする際はブランチを切ってから行います。完了した…

HTML5のドラッグアンドドロップを使うために調べたこと

HTML5のD&Dを使ったことがないので、tableのセルを入れ替える機能を作りました。その際に調べたことを備忘録として残しておきます。 HTML5には色々な機能が追加されていて驚きました。便利なものがたくさんあります。コーディングが綺麗になるだけじゃないの…