2014年12月19日金曜日

複式簿記にトライ

 「超かんたん簿記入門」という本を読んで要点を適当に書いておこうと思う。

  • 売上より儲けが大事
  • 利益は1年を1単位として計算する
  • お金の出入りだけでは儲けは計算できない
  • 利益の計算方法は2種類ある
  • 複式簿記の流れを知る

  • 一般的な取引と簿記の取引では意味合いが異なる場合がある
  • 決算書の目的は、利益の要因と財産状態を知るため
  • 貸借対照表はある時点での財産の使い道を表す

  • 損益計算書はどのように利益を上げたかを示す

  • 複式簿記で使われる区分

  • 借方(出ていくお金)=貸方(入ってくるお金)
  • 借方、貸方は同事業者内であってもお金を使う人(営業等、借方)、お金を用意する人(出資者等、貸方)がいると考えれば理解しやすい
  • 資産:現金等、自分が利用できる資産
  • 負債:借入金等、将来返さなければならない債務
  • 純資産(資本):出資者の持ち分
  • 収益:売上等、財産が増加した原因
  • 費用:仕入等、財産が減少した原因
  • 取引のパターン

 とりあえず複式簿記の借方、貸方の雰囲気だけ…。

MOS Excel 2013 Expert part2 合格

 MOSのExcel 2013 Expert part2とやらを受けてきて、結構ぎりぎりで合格できました。いや、本当に危なかった。

 いくつか本気で操作のわからない問題があって、テスト中はヘルプが使えないのでメニューボタンを舐めるように確認してその場対応して切り抜けました。

簿記

 仕事や副業のために簿記のなんたるかを勉強することにしました。
 折角なので勉強が進んだらまた資格でも取ってみようかと思います。

 手元にはなんの参考書もなく、まずは図書館で適当に借りたものを一読したいと思います。
 要点、書きだそう。

2014年12月8日月曜日

MOS Excel 2013 Expert part2 出題範囲

 とりあえずこの辺らしい。
 できそうな雰囲気のやつは打消し線を入れてみた。


  • ブックの管理と共有
  • 複数のブックを管理する
  • 既存のテンプレートを変更する
  • 複数のブックを結合する
  • ブックのバージョンを管理する
  • テンプレートからテンプレートにスタイルをコピーする
  • ブックからブックにマクロをコピーする
  • 外部データを取り込む、リンクする
  • 校閲用にブックを準備する
  • 変更履歴のオプションを設定する
  • 変更者を制限する
  • 作業状態ファイル(*.xlw)を開く
  • 編集を制限する
  • 再計算を制御する
  • ワークシートの構成を保護する
  • 最終版にする
  • ブックのプロパティや個人情報を削除する
  • パスワードでブックを暗号化する
  • ユーザー設定の書式やレイアウトの適用
  • ユーザー定義の表示形式をデータに適用する
  • ユーザー定義の表示形式を作成する(数値、時刻、日付)
  • ユーザー定義の会計書式を作成する
  • 連続データの詳細オプションを使用する
  • ユーザー設定のスタイルやテンプレートを適用する
  • ユーザー設定の色を作成する
  • セルのスタイルを作成する、変更する
  • ユーザー設定のテンプレートを作成する、変更する
  • フォームフィールドを作成する
  • 高度な機能を使用した数式の作成
  • 数式に関数を適用する
  • ほかの関数と組み合わせて IF 関数を使用する
  • AND、OR 関数を使用する
  • 関数をネストする
  • SUMIFS、AVERAGEIFS、COUNTIFS 関数を使用する
  • シナリオを作成する
  • ウォッチウィンドウを使用する
  • データを統合する
  • 反復計算を有効にする
  • ゴールシークを含む What-If 分析ツールを使用する
  • シナリオの登録と管理を使用する
  • 財務関数を使用する
  • 高度な機能を使用したグラフやテーブルの作成
  • ピボットグラフを作成する、管理する
  • 新しいピボットグラフを作成する
  • 既存のピボットグラフのオプションを操作する
  • ピボットグラフにスタイルを適用する



2014年12月5日金曜日

MOS Excel 2013 Expert Part1 合格

 Specialistの勉強に使ったテキストをそのまま繰り返して、Expert Part1の試験を受けてきました。
 結果は、925点で合格できました。

 今回ちょっと気づいたことがあって、試験前に読んだ注意事項に入力に使うカッコ()は半角を使いなさいと書いてあった。毎回必ずそうとは限らないかもしれないけれど、注意事項は適当に読み飛ばさない方が良さそうです。前回実はこの辺で減点されていたかもしれないと思ったり。


よくわかるMicrosoft Excel 2013ドリル (FOM出版のみどりの本)

 難易度的にはこの問題集の後半と同レベル、ラスト10lessonくらいと比較すれば結構優しいかな、というところと感じました。

 家に帰って早速Part2の試験の申し込みをしました。

2014年12月2日火曜日

息抜きと今後について

 ある人に頼ってRailsの勉強をしていたんだけど、あまりに人を小馬鹿にする態度が気に食わなくて独習することにした。
 緊急性が無くなったのでまたおいおい進めていきたい。開発環境はMacだったけど、今はWindows上の仮想CentOSに環境を作り直しているところ。
 Railsを使うには考えているサイトがしょぼい気はするけど、自由度がきっと欲しくなると思うのでこのまま頑張りたい。

 転職の役に立つのかよくわからないけど、まずは先にMOS Expertをとって、それからかな。

 あと、最近は部屋の掃除がてら7~8年ぶりにいろんなものをヤフオクに出品している。すっかり忘れていたけど、こういうのは面白い。なんとかネットショップと地域密着を組み合わせてこじんまりした事業を始めたいとも思うんですよね。

 資格、転職(?)、副業のためのサイト構築、目標は創業して独り立ちすることと宝くじ当てること。

 893!w

 いや、もう適当に生きるんだ。俺は。
 適当に生き抜いている知恵がそのまま商売にでもならないと全然労働意欲がわかない。どうしようもないけど考えるほどにそう思う。ダメな方向だけどそちらにしかやる気が起きないなら目一杯そちらに力入れてみたくなる。

 ふぅ。

 すいません。ひとりごとです。

Yahoo知恵袋の不思議な質問 アンパンマン編

 以前Yahoo知恵袋で適当に回答したことをなんとなく記録しておきます。

 誰も回答しない不思議な質問がありまして、新しいゴルゴ13への依頼方法ではないかと疑いつつ適当に創作して回答しました。
 内容はアンパンマンについてです。質問者がなぜこの設定で質問をしたのかとても不思議でした。回答することで何か真意の見えるようなレスポンスがあるかと思ったのですが…。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12131008377?a_id_cld=331907876

 内容や文章が稚拙なのはご勘弁を。私の能力です。

---
質問:

①もし、ばいきんまんが何かの事情でばいきん星に帰ったら、そのあとの世界はどうなると思いますか? ②ばいきんまんがいなくなったあと、もしまた新たな悪者が現れたとして、それがもし、既に前からいたキャラクターだとしたら、誰だと思いますか?

---
回答:

1. アンパンマンがヒーローを引退する
2. バタコさんとロールパンナ

ばいきんまんがいなくなった後、一時平和が訪れますが、強大な力を持つアンパンマン、しょくぱんまん、カレーパンマンはばいきんまんを知らない若い世代から恐れられ、3人は自分たちの役目がすでに終わっていることを悟ります。
3人はヒーロー引退を決意しお互いの顔を一口ずつ食べて力を封印し、これ以上顔のスペアを作る必要の無いことをジャムおじさんに告げて、どこへともなく去っていきます。

世界に秩序をもたらしていたはずの3人が邪魔に扱われたことに怒り人々への復讐に燃えるバタコ。ロールパンナの黒い心を利用して街中のパンを丸こげにして恐怖のどん底に突き落としました。

その頃ばいきんまんはやなせたかし先生のもとにいました。
やなせ先生は自分がもうアンパンマンの続きを描くことはできないので、世界を平和にして話を終わらせるつもりでいましたが、思いもよらぬ結果を招いたことに驚き、ばいきんまんにバタコとロールパンナを連れて戻るように命じます。

その後ばいきんまんはその強力なパワーでバタコとロールパンナを追いつめます。街の人々は救世主が現れたとばいきんまんを崇めますが、ばいきんまんは大きな違和感を感じ、この気持ち悪さを晴らすため町中のありとあらゆるお菓子を食べ尽くしました。

人々は皆自分たちが間違っていてやはりこの世界にはアンパンマンが必要であることを確信しますが、すでに3人の居場所を知るものはありません。

ばいきんまんが姿を消して以来、食べ物にありつけなくなっていたドキンちゃんがジャムおじさんのところへパンをもらいにきました。
ジャムおじさんが街の事情を話すと、自分を置き去りにしたばいきんまんにお仕置きをしようと、ジャムおじさんにアンパンマンの顔を作るように頼みます。
なんとドキンちゃんは3人が消えた後もしょくぱんまんの足取りを追い続けて居場所を知っていたのです。

最近すっかり老い衰えてきたジャムおじさん、3人分をすぐに作ることはできず、バタコをパン工房に呼び戻します。
バタコはこれまでのことを詫び、アンパンマン復活のために一生懸命パンを焼き上げました。

久しぶりに顔を新調したスーパーヒーロー3人組はトリプルパンチでばいきんまんを追い払い、世界にはまた平和が戻りました。

---
お礼:

バタコさんは意外でした!まさかのやなせ先生登場で壮大に!すっごく楽しかったです!ありがとうございました☆

---

 結果として大変喜んで頂けたようで嬉しい限りなのですが、なぜこの質問をされたのかは謎のまま…。

2014年11月11日火曜日

DATEDIFという関数

 Excelの問題集を解いていたところ、入社日と現在日付から勤続年数を調べるための関数を答えさせる問題に当たったのですが、まず考えたのが単純に引き算をすること。Excelは1日を数値1として扱うので、引き算でわかった勤続日数を365で割ればまぁほぼほぼ間違いのないでしょう、と。でもこれは試験でこういうあいまいな回答は許されないらしい。関数使ってないし。実際はうるう年があってここをまたいでいるとまれに間違った勤続年数になると思う。

 次にヘルプで調べるとYEARFRACという関数を知った。これはやっていることは上と同じ。でも年数の取得に関してはうるう年を含めてうまくやってくれる。実際に上の引き算と比較して微妙な日数にしても正しい解が得られる。

 で、問題集の回答を見てみると、DATEDIFというヘルプにも乗っていない関数を使えと書かれている。なにそれ?
 ググると、昔Lotus等との互換性を保つためにひっそり実装されてずっと続いている関数、と。そんなのいいの?問題集に載せちゃって。


生年月日から年齢を計算−DATEDIF関数
http://www.relief.jp/itnote/archives/000423.php

 MOSにはどちらで回答すべきなんだろうか。YEARFRACだよなぁ。多分。

2014年11月10日月曜日

ホットサンド

 うちの家族は無駄にパンを買ってくるので困り、たまに作るのが以前記事にしたフレンチトーストとこのホットサンド。
 ホットサンドは専用の器具が必要になりますが、スゲーうまいので買った方がいいです。やっすいやつでいいと思います。
何でもかんでもグイグイ挟んで焼けばなんでもおいしくなります。


あつあつホットサンドメーカー SJ1681

とりあえず私の作り方。

ホットサンドの材料

  • 8枚切りパン 2枚
  • 卵 1個
  • ハム 2枚
  • キャベツ 1~2枚
  • トマト 薄切り2枚
  • バター 適量
  • マヨネーズ 適量
  • 塩コショウ 適量


 まずパン。うちはいつも4枚切りを買うので、パン切り包丁で半分の薄さにしています。
 パンにマーガリンを薄く塗ります。好みでマスタード等、好きにしてください。
具は本当になんでもいいと思います。生ものでなければ。お好み焼きのパン版ですよ。
今回はまずハムと目玉焼きを乗せました。目玉焼きは平皿に卵を割り、爆発防止に黄身に楊枝で突っついて2~3穴を開けてラップしてレンジ(500W)で70秒チンすれば画像のような状態になります。レンジの無い場合はフライパンでチャチャっとスクランブルエッグ作ってもいいかもしれませんね。目玉焼きより速くできるし。

 トマトとレタス(今日はキャベツが無くてレタスで代用)を乗せて、塩コショウかマヨネーズあたりで若干の味付けを。これもなんでもいいです。ケチャップやドレッシングとかでも合うものはあると思います。

ホットサンドメーカーにはバターを塗ります。非常に塗りにくいので、迷わず指でやっちまいましょう。
上でできたものをパンで挟んでホットサンドメーカーに押し込んでロックしたら弱火で焼きます。すぐ焦げ付くので少しずつ焼いては焼き色確認して両面きつね色になるまで焼きます。
中の具は火が通っていなくても食べられるものばかりなので、パンの焼き色だけで出来上がりを判断して大丈夫です。

こんなんなったら出来上がり。外サクサク、中は多分野菜の水分でジューシーに仕上がっているはずです。

あー、おいし。

 バナナと板チョコとか突っ込んでも美味しそうな気がする。

2014年11月4日火曜日

ITパスポート試験を受けてみた

 次のステップのためにとりあえず受かりそうなものは受けてみて試験の雰囲気をつかもうと思い、ITパスポートとやらを受けてみました。(一応合格!)
 ITパスポートは基本情報処理技術者試験の前段階で、ごく一般的な人のIT力を試す試験とのこと。技術屋は持っていてもなんの価値もないけれど、学生や純粋な営業職が持っていればちょっと頼りになる感じがするかもね、ってところでしょうか。

ITパスポート試験
https://www3.jitec.ipa.go.jp/JitesCbt/index.html

 基本的には非常に薄っぺらな内容で、技術的には理解できなくてもそういうものかという気持ちで暗記すれば乗り越えられます。算数レベルの計算が必要になることがあるので、問題の内容がイメージできないと多分辛い。(一般常識レベルなので初めてでも回答できるものですが、苦手な人は辛いだろうな、と。)
 結構今風な問題もあって、浅くていいので日頃からIT系のニュースを見ておくと2~3問得をすることがあるかもしれないです。

 で、暗記の必要な部分ですが、テキストは買わずに勉強しました。(先に過去問を見つけてしまったので、調べもしなかった…。)
 公式サイトに過去問と回答があるので、これをただ繰り返す。分からない単語があればググってメモしていく。この要領で試験3回分を勉強して受験しました。

過去問題(問題冊子・解答例)
https://www3.jitec.ipa.go.jp/JitesCbt/html/openinfo/questions.html

 一番古い過去問と新しいのをやったのですが、最近の過去問で勉強した方が実際に受験して傾向としては近いような気がしました。

 6割正答できればいいので、余裕を見て過去問でコンスタントに7割くらい取れれば合格安全圏ではないでしょうか。
 でも過去の実績見ると合格率は50~60%と結構低く、ITの観点で見たストラテジー(戦略)、マネージメント(経営)、テクノロジーの3ジャンルから出題されるので、案外私みたいな単なるパソコン好きが不合格になったりするのかもしれません。
 それも過去問解いて、知らない単語をググってふーーーん!とわかったつもりになればなんとかなるレベルなのでなんとかなります。

2014年11月1日土曜日

MOS Excel 2013 Specialistの勉強に使った本

 MOS Excel 2013 Specialistの試験に挑むにあたって使ったのは下記の問題集。薄っぺらで税込1,080円の本です。A4サイズ。


よくわかるMicrosoft Excel 2013ドリル (FOM出版のみどりの本)

 とりあえずこれを2回くらいやれば十分な気がします。わからないところはしっかり解答を見て理解すれば、厚いテキストを買って体系的に一から学習するよりはずっと効率いいのではないでしょうか。
 特にMOS用の問題集ではないですが、実際に受験してみてノリは近かったと思います。後半の応用編がExpertの内容なのかな?仕事だとExpertの範囲の方がよく使うと思うので一緒に勉強してしまいましょう。

2014年10月22日水曜日

MOS Excel 2013 Expert

 MOS Excel2013 Expert についても勉強が必要な項目を書きだした。MOSの公式サイトにあるpdfからコピー。
 Part1とPart2で微妙に分けてあって、人気あるからって金取りすぎな気がするな!それぞれ1万円。

 自信ない項目多いけど、まぁでも多分わかる。これまで結構仕事でエクセル使ってきたんだなぁ。場当たり的に必要な機能をググって使ってきたけど、VBAも含めてそれなりに使っていたみたい。

Microsoft Office Specialist Excel 2013 Expert Part1
📻ブックの管理と共有
📻ブックの変更を管理する
📻変更履歴を設定する
📻コメントを管理する
📻エラーを識別する
📻トレース機能を使用してトラブルシューティングする
📻すべての変更箇所を表示する
📻すべての変更箇所を反映する
📻ユーザー設定の書式やレイアウトの適用
☑詳細な条件付き書式やフィルターを適用する
📻ユーザー設定の条件付き書式を設定する
📻関数を使用してセルを書式設定する
📻フィルターオプションの設定を使用する
☑条件付き書式ルールを管理する
📻ほかの言語やユーザー補助機能に対応したブックを準備する
📻ブックの要素やオブジェクトのタブオーダーを変更する
📻複数の言語に対応した表示形式でデータを表示する
📻ユーザー補助機能が使用できるようなブックを作成する
📻ほかの言語に対応した記号を使用する
📻本文や見出しのフォントに対する複数のオプションを管理する
📻高度な機能を使用した数式の作成
📻関数を使用してデータを検索する
☑LOOKUP 関数を使用する
☑VLOOKUP 関数を使用する
☑HLOOKUP 関数を使用する
📻TRANSPOSE 関数を使用する
📻高度な日付と時刻の関数を適用する
☑NOW、TODAY 関数を使用する
📻関数を使用して日付と時刻をシリアル値で返す
📻高度な機能を使用したグラフやテーブルの作成
📻高度なグラフ要素を作成する
📻グラフに近似曲線を追加する
📻2軸グラフを作成する
📻ユーザー設定のグラフテンプレートを作成する
📻グラフをアニメーションで表示する
☑ピボットテーブルを作成する、管理する
☑新しいピボットテーブルを作成する
📻フィールドの選択項目とオプションを変更する
☑スライサーを作成する
📻レコードをグループ化する
📻集計フィールドを使用する
☑データを書式設定する
📻PowerPivot を使用する
📻リレーションシップを管理する

Microsoft Office Specialist Excel 2013 Expert Part2
📻ブックの管理と共有
📻複数のブックを管理する
📻既存のテンプレートを変更する
📻複数のブックを結合する
📻ブックのバージョンを管理する
📻テンプレートからテンプレートにスタイルをコピーする
📻ブックからブックにマクロをコピーする
📻外部データを取り込む、リンクする
📻校閲用にブックを準備する
📻変更履歴のオプションを設定する
📻変更者を制限する
📻作業状態ファイル(*.xlw)を開く
📻編集を制限する
📻再計算を制御する
📻ワークシートの構成を保護する
☑最終版にする
📻ブックのプロパティや個人情報を削除する
☑パスワードでブックを暗号化する
📻ユーザー設定の書式やレイアウトの適用
☑ユーザー定義の表示形式をデータに適用する
☑ユーザー定義の表示形式を作成する(数値、時刻、日付)
📻ユーザー定義の会計書式を作成する
☑連続データの詳細オプションを使用する
📻ユーザー設定のスタイルやテンプレートを適用する
📻ユーザー設定の色を作成する
📻セルのスタイルを作成する、変更する
📻ユーザー設定のテンプレートを作成する、変更する
📻フォームフィールドを作成する
📻高度な機能を使用した数式の作成
📻数式に関数を適用する
☑ほかの関数と組み合わせて IF 関数を使用する
☑AND、OR 関数を使用する
☑関数をネストする
☑SUMIFS、AVERAGEIFS、COUNTIFS 関数を使用する
📻シナリオを作成する
📻ウォッチウィンドウを使用する
📻データを統合する
📻反復計算を有効にする
📻ゴールシークを含む What-If 分析ツールを使用する
📻シナリオの登録と管理を使用する
📻財務関数を使用する
📻高度な機能を使用したグラフやテーブルの作成
☑ピボットグラフを作成する、管理する
☑新しいピボットグラフを作成する
☑既存のピボットグラフのオプションを操作する
📻ピボットグラフにスタイルを適用する


勉強になったこと

 エクセルを使うのは電卓の代わりに計算させるだけのためのことがこれまで多かったので、あまりスタイルとか使ったことなかった。この辺りに触れられたのがMOSで役だったことかな。
 テーブルやアウトラインを使って集計したことなかった。実はデザインと集計と操作性を高める機能がたくさんあるのに全然使っていなかったんだなぁ。これまではセルに式突っ込むか、ピボットテーブルでなんでも実現しようと頑張っていた。

 以下はこれまで意識して使っていなかった機能。

¨ ジャンプを使って移動する
¨ 名前ボックスを使って移動する
¨ フラッシュフィル機能を使用する
¨ スパークラインを設定する
¨ アウトラインを作成する
¨ 小計を挿入する
¨ テーブルに変換する
¨ CONCATENATE関数を使用する
¨ SmartArtグラフィックを挿入する
¨ ブックのアクセシビリティを高める

 フラッシュフィルとかスパークラインとかは存在も知らなかった。

2014年10月21日火曜日

無料で最新のMicrosoft Officeが使える Office Online

 あまり使わないけどOfficeが無いと困るというライトユーザーに、まずはOffice Onlineを勧めたい。MSのアカウントを登録する必要があるけど、無料。すでにWindows8をMSアカウントで利用している場合はそのまま使えるので手続き不要です。
 またクラウドストレージのOneDriveとも連携できているので、ファイルをここに保存しておけばファイルを持ち歩かなくても扱えるし、共有して複数人で編集することも可能です。
 オンラインであることが条件なので、人によってはここがネックになるかもしれません。あとは一応個人用途に限られていること、かな。

Office Online
http://office.microsoft.com/ja-jp/online/

 Open Officeやその周辺のクローンたちでもいいのだけど、本当のライトユーザーはなぜか違いにうるさいので機能制限はあってもMSが公式に出しているWEB版officeの方が納得してくれます。
 ちなみに機能制限と言っても、Office Onlineで設定できないだけでその機能を使ったファイルの閲覧には問題ないことが多いので、あまり能動的に使わない人には問題ないかと。

 あとは、Officeの入っていないPCでちょっと作業したい場合にもインストールする必要がないので良いと思います。

 これで十分じゃないすか?

2014年10月20日月曜日

MOS Excel 2013 Specialist 合格

 MOSの実際の試験がどのようであるか全くよくわからないまま、とりあえず下記の問題集を適当に目を通して試験に臨みました。
 結果としては、1000点中の960点で受かりましてめでたしめでたし。(試験終了後すぐに合否がわかる。怖いw)でも40点のミスは何だったのだろうか。
合格点は試験によりまちまちで、550~850点あたりで設定されるそうな。くわしくはこちら

この資格を取るためにいろいろスクールがあったり参考書があったり、一つの産業になっているようで、スクールにも通わず参考書も買わずに受験したところ、実際の受験用の画面について事前知識がなかったのでいろいろ迷いました。ちょっとこの辺はいやらしい。
問題がどこに書いてあるのかも始めはよくわからず、2013では画面上部にエクセル、左下に問題、右下に完成時のイメージとか参考になるファイル。下部中央がそのファイルを開いた時のプレビューウインドウ。そんな感じだったと思います。

デフォルトのままでは回答しにくいので、ウインドウをまずカスタマイズすることをお勧めします。
私は左側に細長く問題のウインドウを置き、右側にエクセルのウインドウを配置しました。その他二つは頻繁には使わないので裏側に放置。

何をこちらにしてほしいかはっきりしない問題があってしばらくトンチンカンなことをしてしまい、10分くらい悩みながら回答したものを一度リセットしました。(リセットすると完全に答案が白紙に戻る。)この時は1万円がパーになるのではないかと焦りました…。
あまり細かいことは書いてはいけないようなので書きませんが、ちょっと聞き方に癖のある問題だったかなと思います。

折角エクセル脳になっているので、エキスパートも受けてみようかな。ちょっと勉強すればなんとかなりそうな気がする。

ちなみに、時間は50分でしたが猛烈に早く終了(30分くらい?)している人もいて、ああいう人は試験の雰囲気やら流れとかその辺のひっくるめてどこかで教えてもらってるんだろうなぁと思った。いやなんの知識もなく、ただエクセルの知識だけで受験したら結構焦ると思いますよ。

実況プレイヤー 女子高生 ななみ

 ゲームの実況をたまーに見るのですが、今になって5年も前のコンテンツにハマっています。
ニコニコ動画の女子高生ななみさんの実況ですが、これは楽しい。

実は始めYoutubeに転載されたもので存在に気づいて、2~3本見たあとコメント付きでニコ動を見始めました。

ニコニコ動画 ななみ マイリスト
http://www.nicovideo.jp/user/6399400/mylist

ななみ番長のテスト放送
http://www.nicovideo.jp/watch/sm10115219
http://www.nicovideo.jp/watch/sm10115317

単語記事: ななみ(実況プレイヤー)
http://dic.nicovideo.jp/a/%E3%81%AA%E3%81%AA%E3%81%BF(%E5%AE%9F%E6%B3%81%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC)

Twitter ななみ
https://twitter.com/nanamibancho

Jugem ブログ zikkyo play blog.
http://nanami0507.jugem.jp/

FC2 ブログ じっきょうろぐ*
http://nanamibancho.blog77.fc2.com/

mixi 【ニコ動】ななみ番長【実況】
http://mixi.jp/view_community.pl?id=5157650

その後、2013年までで残念ながらネット上の消息は絶たれているようです。

本人が明るくてまず楽しいんだけど、ニコ動の場合は視聴者のコメントがそれに相乗効果を与えてくれる。
おバカさんってことで認定されてしまっているようだけど、女子高生で自分でキャプチャーボードを買ってきて編集からエンコードもするのってなかなかできないと思うよ。

実況中に感動して(悲しくて)マジ泣きとかあって、たまにこういうピュアさを見せてくるのもわざとらしさが無い分天才的としかいいようがない。
【ニコニコ動画】関西の女子大生がバイオハザードCVを実況したよー part22

なんにしても残念。実況に飽きたのが引退の理由らしいですが、一人暮らしを始めるなり結婚するなりしてまた時間ができたら暇つぶしに戻ってきてほしいなー。

---

2015年になって一時的に復帰しました。びっくり。
大人っぽくなった。でもホントいい子そう。
ときメモGS実況者ラジオ ♯8 ななみ番長からのビデオレター

まだ自宅で親と暮らしているから実況しづらいというのも実況できない理由みたい。
本格復帰してくれたら嬉しいんだけどなぁ。

2014年9月24日水曜日

Excelレベルの底上げ

 仕事ではかなりの頻度でエクセルを使う。同僚からも相当聞かれる。社内サポートの方が多いかも。特に難しいことを聞かれるわけではないけど。
 折角なのでMOSの受験対策をして弱いところを含めて一通り機能を知っておこうという気になった。スペシャリストレベル。名前の割に簡単な方。上位資格はエキスパート。よくわかんないね。

 まだなんの勉強もしていないけど、とりあえずちょっとやれば受かるんじゃねーのくらいの気持ちで先に受験申し込みをしてしまった。時間は全然ない。

 とりあえず、参考書の目次を一通り書き出してピンとこないところを勉強してみる。

 以下が某書の目次。見出し見て、確実に問題なさそうなところはチェック入れてみた。チェック入れていないところもだいたいわかりそうかな。
 一通りさらって、来月試験受ける。でもこうやって見ると、かなりレベル低い??勢いで入金しちゃったからしょうがない。受けますよ。これだけ書いて落ちたら笑うな…。

 リンクは適当。Excel2013でないものも入っていますが、基本的に同じなのでいいでしょう。

þ 新しいブックを作成する
¨ テンプレートを使用して新しいブックを作成する
¨ ファイルをインポートする
þ ワークシート名を変更する
þ ワークシートをコピーする、移動する
þ 既存のブックにワークシートを挿入する、削除する
þ データを検索する
¨ ハイパーリンクを挿入する
¨ ジャンプを使って移動する
¨ 名前ボックスを使って移動する
þ シート見出しの色を設定する
þ 行や列を挿入する、削除する
þ 行の高さや列の幅を調整する
¨ ブックのテーマを設定する
þ 入力規則を設定する
¨ ブックの表示を変更する
þ ズームを利用する
þ ウインドウ枠を固定する
þ ワークシートを分割する
þ ワークシートを非表示・再表示する
þ 行や列を非表示・再表示する
¨ 数式を表示する
¨ クイックアクセスツールバーをカスタマイズする
¨ リボンをカスタマイズする
¨ ブックのプロパティに値を追加する
þ 簡単なマクロを記録する
¨ マクロのセキュリティを管理する
¨ ワークシートを個別に印刷する
¨ ページ設定を変更する
¨ 拡大縮小印刷を設定する
¨ 印刷するためにブックを設定する
¨ ヘッダーやフッターを挿入する
þ 別のファイル形式でブックを保存する
þ 以前のバージョンとの互換性を保つ
¨ 利用しているコンピューター以外の場所にファイルを保存する
¨ ワークシートにデータを追加する
¨ オートフィル機能を使用する
þ データを移動する、コピーする
þ 書式のコピー/貼り付けを使用する
¨ セルを挿入する、削除する
¨ フラッシュフィル機能を使用する
þ フォント書式を設定する
¨ セルの配置を設定する
¨ 数値の表示形式を設定する
¨ セルのスタイルを設定する
¨ 条件付き書式を設定する
¨ スパークラインを設定する
¨ 名前付き範囲を作成する
¨ アウトラインを作成する
¨ 小計を挿入する
¨ テーブルに変換する
¨ テーブル名を設定する
¨ テーブル内でセルを追加する、削除する
¨ テーブルスタイルを設定する
¨ テーブルスタイルをクリアする
¨ テーブルスタイルのオプションを設定する
¨ テーブルのレコードを抽出する
¨ テーブルのレコードを並べ替える
¨ 重複データを削除する
¨ 演算の優先順位を決定する
þ 相対参照と絶対参照を使い分ける
þ SUM関数を使用する
þ AVERAGE関数を使用する
þ MIN関数、MAX関数を使用する
þ COUNT関数を使用する
þ COUNTBLANK関数を使用する
¨ SUMIF関数を使用する
¨ AVERAGEIF関数を使用する
þ COUNTIF関数を使用する
¨ UPPER関数、LOWER関数を使用する
þ LEFT関数、RIGHT関数、MID関数を使用する
¨ TRIM関数を使用する
¨ CONCATENATE関数を使用する
¨ グラフを作成する
¨ グラフの配置を調整する
¨ もとになるデータの行と列を切り替える
¨ データ範囲を変更する
¨ グラフの種類を変更する
¨ グラフの場所を変更する
¨ グラフのレイアウトやスタイルを設定する
¨ グラフ要素を設定する
þ 画像を挿入する
¨ 画像の書式を設定する
þ 図形やテキストボックスを挿入する
þ 図形やテキストボックスの書式を設定する
¨ SmartArtグラフィックを挿入する
¨ SmartArtグラフィックの構成を変更する
¨ SmartArtグラフィックの書式を設定する
¨ 複数のオブジェクトを管理する
¨ ブックのアクセシビリティを高める

2014年9月22日月曜日

未完のフィクションのような

 先日、BABYMETALについて検索していたところおかしなワードで検索してしまい、おかしなサイトにたどり着いた。
 よくわからないが、下の堕落者というサイトの管理者であるひろゆきさんのファンと思われる。

dream tomb log
deth

堕落者
平川裕之ファンサイト

 しかし読んでみると、ひろゆきさんに影響を受けたと思われる文体は本家よりずっと文学的で面白く、引き込まれる。
 10年も前の日記で1年しか書いていない様子。続きをどこかで書いていないものか。

2014年9月8日月曜日

海外発行小切手の換金

 そう頻繁にあることではないですが、ごくごくたまに海外で発行された小切手(check)を手に余らせることがあります。どうしたらいいの~~、と。

 5年も前には定番と言える業者がいくつかあったんですが、気づけば以前知っていた業者はみな廃業されている様子。

 かるくググった感じではチェックチェンジャーという業者がアメリカの銀行発行の小切手のみを扱っている様子。
 でも条件がいくつかあって、換金までの期限が30日以上残っていることにひっかかってしまい、今回は使えませんでした。今後試してみよう。

参考:
チェックチェンジャー

 仕方なく三井住友銀行へ。
 実は銀行ではシティバンクや一部地方銀行に手数料の良心的なところがあるようですが、基本的にその銀行に口座を持っている必要があり、シティバンク等、一部の銀行は口座維持費がかかる。
 維持費が無料になる条件を満たすためにメインバンクを移したりクレジットカードを作ったりするのも面倒なので、自分が口座を持っている銀行へ行きました。

 手持ちの小切手の換金期限があと20日しかなかったので断られるかと思ったけど、特にとがめられることはありませんでした。


  • キャッシュカードか通帳(口座番号が確認できるもの)
  • 銀行印
  • 身分証明書(免許証、保険証等)


 ちなみに、"換金"というと銀行に持っていった小切手の額面金額から手数料を引いた金額を渡してくれるようなイメージを持たれてしまうかもしれませんが、実際には取り立ての代行をしてくれます。なので面倒な手続きの代行料、小切手の郵送料、銀行間の手続きにかかる手数料等がかかり、実際に取り立てが行われた後にこの金額が差し引かれて自分の口座に振り込まれる、と。(1か月程度?2銀行の対応次第なので、この辺りはマチマチと思われます。)
 合計の手数料としてはなんだかんだで小切手1枚4~5千円になるのではないでしょうか。

 取立代行を行う業者はどうしても信用的に不安ですが、手数料が半額程度で安いことと換金までの期間が短いことが大きなメリットです。少額の小切手では銀行の手数料の方が高くなるケースもあるので、発行された小切手を私のように放置せずすぐに業者へ依頼するのが良いと思います。

---

 その後、入金の知らせがありました。が、小切手発行銀行側での手数料が$28もかかりまして、額面$107の小切手が5千円以下という惨憺たる結果に。取り立て代行を依頼した銀行に手数料3,100円、元銀行にも現在のレートで約3,000円と、$100程度では半分以上手数料に消えてしまいました。
 厳しいですね。

 海外からは可能であれば銀行間で送金してもらうとか、海外に口座持つとか、金額まとめて小切手発行してもらうとか、工夫しないといけないみたいですね。
 私の場合はそれも難しいので、手数料の安い業者を使うしかないのかな~。

2014年9月2日火曜日

キュレーション

 私はカタカナの業界用語が嫌い。最近は吟味されてようやく用語になるのではなくて、英語話している奴らが和訳しづらい単語をそのまま使ってきたり、海外メーカーが世界で表現を統一させるためにわざと各国語に訳さなかったりする。

 ビジネス・IT用語なんてほぼそんな気持ち悪いものばかりなんだけど、最近ではキュレーション(curation)。情報を収集し、贅肉を削ぎ落として再構築するようなこと。例えばキュレーションサイトなんてのは、ネット上の情報を収集していいとこどりして記事をまとめてアクセス数や広告収入を稼ぐ、他人のふんどしで相撲を取る言っちゃえば手法としては最低なサイト。(実際には面白かったりするけど、手法として。)
 基本的にはキュレーションって言葉、開発者が使うものだと思うんだけど、サイトのタイトルや説明に結構使われている。ごくごく一般のユーザーにとってはピンとこないと思うんだけど、どうなの?
 でも、こういう用語を無駄に使いたがる輩は多いですね。

 丁寧に日本語で説明して欲しいよ。

 自分ももちろん使うんだけど、違和感だらけの毎日。

2014年8月31日日曜日

スマート カードのデバイス ID を取得できませんでした。

  Windows8.1のイベントビューアーにSCPNP、イベントID:1000というエラーがスリープ復帰後等に発生していて、システムの動作に影響なさそうなのでとりあえずエラーを止めた。
- System
  - Provider
   [ Name]  Microsoft-Windows-SCPNP
   [ Guid]  {9F650C63-9409-453C-A652-83D7185A2E83}

   EventID 1000

   Version 0

   Level 2

   Task 0

   Opcode 0

   Keywords 0x8000000000000000

  - TimeCreated
   [ SystemTime]  2014-08-29T04:12:42.949118500Z

   EventRecordID 9958

   Correlation

  - Execution
   [ ProcessID]  956
   [ ThreadID]  1312

   Channel System

   Computer 1F-TV

  - Security
   [ UserID]  S-1-5-18

- EventData
  ReaderName Gemplus USB Smart Card Reader 0
  ErrorCode 2148532255 

この適当な対処方法を他人に見せるのもどうかと思うけど、自分用のメモ。下記レジストリキーの値を0から1に変える。
(キーの場所は上記のエラーのGuidをregedit内で検索する。)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\WMI\Autologger\EventLog-System\{9f650c63-9409-453c-a652-83d7185a2e83}
"EnableLevel"=dword:00000001

 以上。

2014年8月22日金曜日

pluckメソッド

 あるカラムのデータを配列として扱うにはpluckが便利だから使え、と言われた。
 複数カラムから2次元的な配列としても取り出せる。flattenすれば1元配列として扱えて、今回はこれを使うかも。

[57] pry(main)> Prize.pluck(:grade, :sales_quantity).first(10)
   (10.2ms)  SELECT "prizes"."grade", "prizes"."sales_quantity" FROM "prizes"
=> [[1, 1], [2, 9], [3, 118], [4, 5961], [5, 99657], [6, 179019], [1, 6], [2, 66], [3, 1719], [4, 48235]]
[58] pry(main)> Prize.pluck(:grade, :sales_quantity).first(10).flatten
   (10.3ms)  SELECT "prizes"."grade", "prizes"."sales_quantity" FROM "prizes"
=> [1, 1, 2, 9, 3, 118, 4, 5961, 5, 99657, 6, 179019, 1, 6, 2, 66, 3, 1719, 4, 48235]
[59] pry(main)> a = Prize.pluck(:grade, :sales_quantity).first(10)
   (10.5ms)  SELECT "prizes"."grade", "prizes"."sales_quantity" FROM "prizes"
=> [[1, 1], [2, 9], [3, 118], [4, 5961], [5, 99657], [6, 179019], [1, 6], [2, 66], [3, 1719], [4, 48235]]
[60] pry(main)> a[1]
=> [2, 9]
[61] pry(main)> a[1][1]
=> 9

zipメソッド

 とりあえずメモだけ。配列を2次元化できる?
 統計とかとるときに使えるかな?
[1] pry(main)> a=[1,2,3]
=> [1, 2, 3]
[2] pry(main)> b=[3,4,5]
=> [3, 4, 5]
[3] pry(main)> c=[5,6,7]
=> [5, 6, 7]
[4] pry(main)> a.zip(b)
=> [[1, 3], [2, 4], [3, 5]]
[5] pry(main)> a.zip(b.zip(c))
=> [[1, [3, 5]], [2, [4, 6]], [3, [5, 7]]]
[6] pry(main)> a.zip(b.zip, c.zip)
=> [[1, [3], [5]], [2, [4], [6]], [3, [5], [7]]]
[7] pry(main)> a.zip(b.zip, c.zip).flatten
=> [1, 3, 5, 2, 4, 6, 3, 5, 7]
[8] pry(main)> a.zip(b.zip, c.zip)
=> [[1, [3], [5]], [2, [4], [6]], [3, [5], [7]]]
[9] pry(main)> a.zip(b.zip.flatten, c.zip)
=> [[1, 3, [5]], [2, 4, [6]], [3, 5, [7]]]
[10] pry(main)> a.zip(b.zip.flatten, c.zip.flatten)
=> [[1, 3, 5], [2, 4, 6], [3, 5, 7]]
[11] pry(main)> d=a.zip(b.zip.flatten, c.zip.flatten)
=> [[1, 3, 5], [2, 4, 6], [3, 5, 7]]
[12] pry(main)> d[1]
=> [2, 4, 6]
[13] pry(main)> d[1][1]
=> 4
[14] pry(main)> d[0][0]
=> 1
[15] pry(main)> d[0][2]
=> 5
[16] pry(main)> d[0][1]
=> 3

弱ったストレージからデータを救出する

 HDDの調子が悪くなった時、まずは丸々どこかへコピーします。調子の悪いHDD上であれやこれややってしまうと余計に壊れて本当にアクセスできなくなるかもしれませんからね。

 いつもこの最初のデータ退避作業にddrescueを使っていて、使うために必要なツール二つをメモしておく。

 こちらはデータ救出用のLinuxディストリビューション。いろいろなツールが用意されていて、私がいつも使うddrescueもインストール済み。
 一般のディストリビューションでは普通入っていないと思う。元になっているddだけ。

 こちらはLinuxのインストールイメージをUSBメモリにブータブルな状態で展開してくれるツール。Windows用。

 後はSystemRescueCdを起動して、ターミナル上でddrescueを使うだけっす。ヤバそうなディスクは下記の順でコピーしています。
ddrescue [オプション] [コピー元 /dev/sdbとか] [コピー先 /dev/sdcとか] [ログファイル]
例)sdb→sdcにコピー
ddrescue -fvn /dev/sdb /dev/sdc copy.log
ddrescue -fvr 1 /dev/sdb /dev/sdc copy.log
ddrescue -fndr -1 /dev/sdb /dev/sdc copy.log

 ディスク全体だったりパーティションをコピーする場合は強制オプションの-f をつけろと怒られるのでつけます。
 -nは不良ブロックをスルーさせる。ディスクが動くうちに多くのデータを救出したいので、先に不良ブロックの読み取りをリトライし続けてディスクの寿命を短くするのは愚か者らしいです。-nをつけない場合は、不良ブロックを分割して部分的に読み取る。読めないブロックはさらに分割して部分的に読む。
 -rはリトライ数。-1にすると無限。あきらめたときにctrl+cで終了。
 残りが読み込みの難しい不良セクタだらけになった状態になったら、-dオプションを付けるとなぜか読み取れる確率が上がる気がする。
 -vは詳細表示。
 ログが無くても実行はできますが、あるとコピー中断してもレジュームできたり、再度試行した時に読めなかった不良セクタ分だけを読んでくれます。上の例のように何度か違うコマンドを使いながらコピーを進める場合は必須。

軽症だと、コピー後にチェックディスクとかして完全な状態に戻ったりしますが、そういう時はNTFSなりファイルシステムって凄いなと思う。


参考:
Ddrescue

----------------------------
ddrescueは、UNetbootin, Universal Netboot InstallerでオンラインインストールできるParted Magicにも入っていました。
こちらの方が圧倒的に簡単です。

2021/1/4追記

2014年8月18日月曜日

cronを実行する

 WEBサービスでバックグラウンドで定期処理をするってのは必ずと言っていいほどあると思いますが、どうやってやんのかなーと。

 Railsにはwheneverという便利なgemがあるようなので、使ってみる。

参考:
Railsアプリのバックグラウンド処理をWheneverを使ってCron化する

2014年8月14日木曜日

ピーマンといかのナムル

 NHKの今日の料理ビギナーズを見て、簡単で美味しそうだったので、メモ。

材料(2人分)
・ピーマン(千切り) 3個
・いか(刺身用/細切り) 60g
・ごま油 大さじ1/2
・塩 小さじ1/5
・コショウ 少々

<作り方>
  1. たっぷりの熱湯(1.6~1.8リットル)に、塩(小さじ1/2)を入れ、ピーマンを加えて混ぜる。再び煮立ったら約10秒間ゆで、冷水にとって冷まし、水気を絞る。
  2. ボウルに、ピーマン、いかを入れ、ごま油(大さじ1/2)をふってからめる。塩(小さじ1/5)、コショウ(少々)を加えて味をととのえたら完成。


 画像は作ったら追加しよう。

2014年8月13日水曜日

Nokogiriでhtmlから必要な情報を切り出す

 Nokogiriっつーhtml/xmlをサイトから切り出してくる便利な超定番gemがあるそうです。

 他人(他のサイト)のふんどし(情報)で相撲をとる(一儲けする)ようなことって大変多くあると思うのですが、これは結構役に立ちそうです。

 まだちょっと試しただけなので、とりあえず参考リンクのメモを。

参考:
Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル]
Nokogiriで文字化けを防ぐ

2014年8月7日木曜日

githubへ初めてpushする

 githubでリポジトリを作成すると、何をすべきかちゃんと表示してくれるので安心。
git remote add origin https://github.com/XXXXX/XXXXX.git
git push -u origin master

 一度-uを付けてpushすればpush先が記憶されるため次回以降は基本的にgit  pushのみでいける。

2014年8月6日水曜日

spec_helperでrequire

 RSpecとやらを試していますが、deviseとか絡んできてよくわからない。
Factory_Girlが流行ってるぜ〜といろいろなサイトやテキストに書いてあるのでその通りインストールしてみたが、ちょいちょい書かれている設定が全く反映されない。結果としては使うgemをrequireすれば動くようになったんだけど、どこにもそんな説明は書かれていない。
 常識すぎて書いてない?それとも環境がおかしいのか。
require 'factory_girl_rails'
require 'devise'
require 'controller_macros'
include ControllerMacros
RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
  config.include Devise::TestHelpers, :type => :controller
  config.extend ControllerMacros, :type => :controller
<以下略>

 gemはpathが通っているんだけど、moduleはspec_helperと同階層でないと読めない。ディレクトリが違う場合、相対パスで指定してもダメ。同じディレクトリでも、./と指定するとダメ。なんなんだよ。

 1時間ハマった。疲れた。

いろいろ動かない

 設定変えたときとか、gemを追加したときとか、新しく追加したものが機能しないと焦ります。これがしょっちゅうあります。

 結構その多くは、サーバープロセス再起動、ターミナル再起動あたりで改善しているのですが、いつも焦って忘れてしまう。
 今もあるgemをインストールしたあと機能しないので焦りまくっていて、ターミナルの再起動で使えるようになった。

 なんだよちくしょー。

RSpecのテストが辛そう

 以前Railsチュートリアルの始めの方に出てくるテストを少し試して、面倒だなーーーーーーーーという印象が頭にあって、今日パーフェクトRailsを見たらすぐにshoulda-matcherというgemを使え!という展開。あと、factory_girlを使え!と。
 ちょっとハードルが高いとすぐにやる気をなくすので、こういうのがあると大変助かります。ちょっとやってみよう。


コミットしていないファイルを一時的に隠したい

 githubで複数人で作業していると、ローカルでコミットされていないファイルをとりあえず棚上げしてpullしたい時がある。
 その棚上げがstashでできるそうな。
git stash

 そうするとcommitしていないmodifiedファイルが一時的に消える。
 で、pushなりした後にpopを付けて再度実行すると戻ってくる。
git stash pop

 とりあえず今はこの二つのコマンドだけでなんとかなりそう。

参考:
変更を一時的に退避!キメろgit stash
6.3 Git のさまざまなツール - 作業を隠す

2014年8月5日火曜日

production環境での作業

 デプロイ後やローカルでの本番環境のチェックをどうやったらいいかわからなかった。

 アセットファイルのプリコンパイルは以下の通り。
bundle exec rake assets:precompile RAILS_ENV=production

 productionモードでのサーバー起動は以下の通り。
rails s -e production
テキストが終わってないし復習もできていないまま作業することになっちゃって、不安極まりない。
 ここ数日はデプロイ先の環境でアセットパイプライン周辺の問題でうまく表示できず、 あーでもないこーでもないと1人で悶々と思いつく限りのことを試していた。8割は修正できたけど、まだ完璧じゃない。

2014年8月1日金曜日

本番環境で動作確認

 ようやく本番環境(production)が〜なんて話が出てきました。
 デプロイしたらアセットファイルが読み込まれないという問題があって、とりあえずはローカルで本番環境を試しましょうという話に。

 で、どうやんの?
$ rails s -e production
$ rake db:create RAILS_ENV=production
$ rake db:migrate RAILS_ENV=production

参考:
Rails、Rakeコマンドで本番環境(Production)を指定する方法

 さて、今日はこのへんの対応から。

2014年7月29日火曜日

gem Pundit

 Punditはアクセス管理の認可(authorization)を実装するためのgemですが、これを使えと言われて使ったものの、下知識が足らず、Readme見ても簡単簡単と書かれている割にその通りにしてもうまくいかず、なんなんだよ、と。
 最終的に下記のページを参考にしました。この例を見る限りでは、簡単というほど簡単ではないように思うのですが…。
 ちなみにこのサイトの記事は実装までを完全に再現してくれてはいないため、リンク先のgithub上にある実際のコードが一番参考になりました。

参考:

 つれーなー。Rails始めて2ヶ月くらい経つけど、拒絶反応が取れた程度の進捗。本当に自分がふがいない。
 1人で楽しく自由に進めた方がこれに関しては良い気がする。ドットインストールの興味のある講座とか見たいけど、余計なことに時間を使うなとえらい人がキレたりするからな。なんなんだろう。吸収できるものから吸収して、ちょっとは感覚を持つというかちょっとでも自信をつけさせて欲しいよ。

2014年7月24日木曜日

アスペクト比を変えずに画像を縦横長の決まった範囲に収める

 例えば200*200というマスの中に画像を縮小して、且つアスペクト比を変えずに表示させたい。
 需要ありそうだけど、ググってもなかなか見つからない。

 縦か横のどちらかにだけ合わせるのであれば、cssにwidth: autoやらheight: autoやら書けば対応できるみたいだけど、これを縦横から挟むようなcss書いてもうまくいかない。

 とりあえず裏技っぽいのはあったので参考にリンクを張っておこう。

参考:
【図解】CSSだけで画像の縦横比を維持したサムネイルを表示する

 こんなの簡単そうなのにね。いや、きっとすげー簡単なんだよ。職人はきっと当たり前のように使っているんだ。うーむ。
 いろいろなページのソースを見てみよう。

 gemとか使って事前に切り出しとけよ、とかそういう話なんだろうか。
 切り出してRailsで使う方法はこの辺が参考になりそう。必要になったら読もう。

参考:
#374 Image Manipulation

 自分がRailsを質問すべき人が、キレてて質問しづらい。なんだよ。ちくしょー。優しく教えてくれよ。未経験だって言ったじゃないか。

数値を区切りや通貨単位を入れて表示する

 例えば変数priceに10000000.0と入っていたとして、それを10,000,000円と表示させたい場合、下記で対応可能なんですって。
number_to_currency(price, precision: 0, unit: "", format: "%n%u")
その他、整形に使えるヘルパーはたくさんあるようです。以下、参考まで。

参考:
[Ruby on Rails] 数字を整形する便利なViewヘルパー


新しいブランチとしてpushする

 gitはとても便利らしいけど、複数人で使っていると怖い。よくわかっていない。

 とりあえずローカルで新しく作ったブランチをリモートの新しいブランチとしてpushすることがよくあるので、メモ。
git push -u origin [new branch]
 -uすると、push先が同じであればその後ブランチ名が省略できる。

 こういう一面的な覚え方はいけないんでしょうけど、今は悠長に勉強している暇がない。

[未解決] Windows8.1マシンが自動スリープしない

 Windows8.1にしてから、というわけではないのだけれど、(ログを見ると)2か月前くらいから電源オプションで設定した時間が経過してもスリープにならなくなってしまった。

どんな操作やソフトウェアのインストールしたのかは記憶にないのだけれど、現状を書いておいておきます。

  • Windows8.1 Pro 64bit
  • ホームグループには不参加(パブリックネットワーク)
  • 思いつく全てのデバイスのスリープ復帰機能を停止
  • OS起動直後は問題なく動作する
  • 同じシステムで、XPの頃には問題なかった

 で、動画を再生した後に発生するような気がする!と思い始めたのが最近で、その辺のキーワードで検索したら下のサイトにたどり着いた。内容的に関係ありそうな感じもするので、試してみよう。

参考:
Windows8.1にアップデートしたら自動でスリープに移行しなくなった

イベントビューアーによるとたまにUSBルートハブが原因でスリープから復帰していたので、この線で相当デバイスをとったりつけたりon/offしたり調査していたのですが、こっちは関係ないのかな…。再現頻度も低いし、上の問題と連動している感じはしない。

 うーむ。

 また夜にでもイベントビューアーやらなんやらを確認してみよう。直っていたら嬉しいなー。

---

 で、その後、ネットワーク上の動画を再生して放置を繰り返してもちゃんとスリープに入れるようになりました。サンキュー、ブログの人!

---

 更にその後、頻度は少なくなったけどやはりたまにスリープに入らない。
 今はOneDriveとかOneNoteとかちょっとでもあやしいアプリケーションを削除したり停止したりしている。CCCもWindows8.1上でかなり変な動きしているんだよな…。
 あー、ここで改めてUSBルートハブか。またいろいろ確認してみよう。

---

 さて、スリープに入れない件を放置していましたが、今日イベントビューアーのApplicationを見てみると下記の情報がたくさんあったのでググってみた。
- System
  - Provider
   [ Name]  ESENT

  - EventID 103
   [ Qualifiers]  0

   Level 4

   Task 1

   Keywords 0x80000000000000

  - TimeCreated
   [ SystemTime]  2014-08-17T21:13:16.000000000Z

   EventRecordID 10418

   Channel Application

   Computer 1F-TV

   Security

- EventData
   svchost
   2876
   Instance:
   0
   [1] 0.000, [2] 0.000, [3] 0.000, [4] 0.000, [5] 0.016, [6] 0.000, [7] 0.000, [8] 0.000, [9] 0.000, [10] 0.000, [11] 0.000, [12] 0.000, [13] 0.000, [14] 0.000, [15] 0.000.
   0 

すると、スリープに関する記事がいくつか出てきて、いきなり核心に迫る感じ。
 参考にしたサイトのマネをして管理者権限のDOS上でpowercfg /requests。理由はわからないけど、Realtekオーディオをシステムがつかんだまま(逆?)のようです。
C:\WINDOWS\system32>powercfg /requests
DISPLAY:
なし。
SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0892&SUBSYS
_1043841B&REV_1003\4&1d1d2e48&0&0001)
現在 1 つのオーディオ ストリームが使用中です。
AWAYMODE:
なし。
実行:
なし。
PERFBOOST:
なし。

 対処法がよくわからなかったのでとりあえずデバイスマネージャーでドライバーの再更新(これまでと同じバージョンを再適用しただけ)をしたところ、この使用中ステータスは解消されました。

 さて、これで直るの?使用中になってしまう、という問題かもしれないな。ちょっと様子見。

参考:
Windows 8で自動スリープしなくなった時の対処
Windows: Windows7で自動スリープにならない場合の対処

---

 直らなかった。DOS上のステータスが変わっただけで今回の問題とは関係ないのかも。
 ストレージ関係の情報の中にヒントがありそうな気がするので、次はこの線を洗う予定。

---

 またしばらくして電源オプションを見ると、電源プランがSamsung High Performanceになっていた。SSDのアプリがなにかのタイミングでこの設定を変えるみたいだけど、こちらでも最初に書いたマルチメディアの設定を行ったら調子いいみたい。さて今度はどうなるかな。

---

 その後も相変わらず直らず、可能性として優先順を低く見積もっていたBIOS更新をやってみたら、なんかすごく調子いい…。まじかよ。
 Windows8のS3以上となんか衝突していたんだろうか。

 クローズできそうな気配。今週一杯問題が発生しなかったら終了にしよう。

---

 ダメでした。動画見たりいろいろ操作するとやはりスリープに入らなくなる。再起動すると戻る。なんだろか。うーん。
 もう一回イベントビューアで、Windows8をクリーンインストールした直後からか、8.1に更新してからか、どんな変更の後に問題が出るようになったか再確認してみよう。ちょっと記憶があやふや。

---

 その後もイベントビューアを追うのが面倒で、まずはドライバ更新と今一番怪しいと感じているCCCを一時的にスタートアップから外している。ドライバーが動いていれば十分なので。


2014年7月23日水曜日

条件式の左辺と右辺

 評価されるものを左辺に書こうと言われた。ふーん。あまり深く考えていなかった。

 例えば、片方が数値や文字列であれば自然と a == 5 と書けるけど、aとbのように変数同士だとどっちでもいいじゃんという気がする。
 でもaが自分の年齢で、bが評価される年齢だとすると、自分の年は定数的だから b == a と書く。

 こう考えるのがいいのかな。どちらが定数的か。それを右辺にする、と。

if not と unless

 if not(if !条件式)という書き方をしていたら、unlessの方が見やすい場合があると言われた。
 へー、そもそもそんな条件分岐の命令があることを知らなんだ。なんだしら。

 三項演算子とか、いろいろあるのね。
 ひとつの方法を応用するよりは、ちゃんと使い分けた方がすっきりするのかな??

参考:
条件分岐

Untrackedファイル

 Untrackedファイルってのはgitで追跡されていないので、addしないといけないものと勝手に思い込んでいた。
 テスト的に作ったファイル(アップロードした画像とか)も含めてしまっていたので、今後は注意せねば。

 git statusすると赤文字で表示されるから、commitできない困ったファイルという印象があった。単にいるかいらないかわからないよ、と言ってきているだけか。いらなきゃ放置か削除すればいい、と。あるいは.gitignoreに書くとか、かな。

参考:
2.3.4. 追跡されていない (Untracked) ファイル

Untrackedファイルを一括削除したい場合は下記の手順で確認しながら実行する。--dry-runの後に--interactiveするのがリスクが少なそう。手作業で削除するより早いし。--forceは無闇に使わない方が良さそうすね。
git clean --dry-run          # -nでもOK。Untrackedファイルの確認。
git clean --force             # -fでもOK。強制一括削除。
git clean --interactive     # -iでもOK。対話的に個別削除。

 ディレクトリも削除する場合は、-dらしい。

参考:
Untracked Files を削除する

例外処理

 まだ使ったこと無いけど、例外処理ってのを見かけたのでメモ。

 begin ~ rescue ~ else ~ ensure ~ endなんての使って、コードの処理がうまくできないときにエラーを吐かせるとか別の処理を行わせることができるって。便利そう。

参考:
Ruby on Rails 例外処理 begin

 あのえらい人の冷たい態度に毎日接しているとなかなかの殺意。一ヶ月前は面白そうなこと投げてくれて感謝していたのにね。
 全くの初心者だと言っていたのに、始めから何でも知っているかのように話してくるのやめてほしい。
 プロジェクトに必要な知識を独学で得ることと、プロジェクトの納期を合わせるなんて、普通初心者にできんの?

 まぁ、頑張ろう。頑張らないと逆に鬱憤がたまって殺しかねない!

データをcsvからインポートする

 例えばmodel/item.rbにデータを取り込むスクリプトimportを書いておいて、下記をターミナルで実行すればいいみたい。
rails runner Item.import

 スクリプトは、例えばこんな感じ。指定したcsvファイルからデータを吸い上げています。
require 'csv'
class Item < ActiveRecord::Base
def import
csv = CSV.read("#{Rails.root}/tmp/links.csv", encoding: "cp932")
csv.each do |link|
item = Item.new
item.title = link[1]
item.price = Float(link[2])
item.save
end
end

参考:

 なんだか怒りでわなわなする毎日。あのエライ人とこの先やっていけるんだろうか。8年前に初めて会った時に覚えた感情を思い出してきた。あのときもこんな感じの人だったような気がする。

2014年7月22日火曜日

認証と認可

 WEBサービスではアクセス制御の定石として、認証と認可があるんですって。保育園の話にしか聞こえない。
 これからdeviseとpunditというgemを使ってログイン管理をしようと思っているのですが、その準備段階の知識がそもそもなくて我ながら大丈夫かよ、と。

 ログインできるユーザーかどうか、というだけでなく、ユーザーの中でも権限ランクの違いがあるってあたりですかね。重要なのは。
 難しい言葉を使ってさも説明したかのような雰囲気出すの嫌いです。

 とりあえずこの辺を読んでわかったふりをしておこう。

参考:
第2章 アクセス制御 アクセス認可

数値と文字列の配列の論理演算がしたい

 例えば・・・
[15] pry(main)> a=[1,2,3]
=> [1, 2, 3]
[16] pry(main)> b=['3','4','5']
=> ["3", "4", "5"]

 こんな感じで二つの配列があってaにだけ存在する要素を抜き出したい場合、a-bをすればいいらしいですが、上の場合は数値の3と文字列の3が区別されてしまい、下記の通り期待とは違う結果が帰ります。エラーも無し。
[17] pry(main)> a-b
=> [1, 2, 3]
でも下記のようにするとbが数値の配列と見なされて期待する解が得られる。
[18] pry(main)> a-b.map(&:to_i)
=> [1, 2]

 多分、こういう事態になる前に対処すべきだと思うんだけどどうすべきかわからずとりあえず回避法が必要になりました。

参考:
ruby 配列の中の文字列を全部数値にしたい
Rubyでメタプログラミング ~暗黙的に呼ばれるto_procメソッド (.map(&:to_i)について)

要素の有無をチェックする

 ある変数があるかどうかを確認する場合、変数(配列)の場合は.present?、テーブル内に条件に見合う値があるか確認する場合は.exists?が使える。

.present?
[1] pry(main)> a=[1,2,3]
=> [1, 2, 3]
[3] pry(main)> a.present?
=> true

.exists?
[
5] pry(main)> Curation.pluck(:title)
(0.4ms) SELECT "curations"."title" FROM "curations"
=> ["てすと1", "テスト2", "て", "bav", "あああ", "aaaa", "aaa", "sfd", "aaa", "aaaa"]
[6] pry(main)> Curation.pluck(:title).present?
(0.2ms) SELECT "curations"."title" FROM "curations"
=> true

参考:
データの存在を確認(exists?)
Railsでnil? blank? empty? present?を使いこなそう

2014年7月21日月曜日

モデルのテストデータが欲しい

 手で入れてもいいのですが、開発メンバーが同じテストデータで検証したいときとかは、db/seeds.rbにデータを生成するスクリプトを書いておくと良い。
rake db:seed
で、上記コマンドを実行すればデータは生成される。

参考:
rake db:seedを使った初期データの投入

2014年7月19日土曜日

ダブルコロン (::) ってなんなの…

 二重コロン、これがなんかどうもしっくりこない。クラスメソッド? 

 すげーいい加減だけど、最初の考え方としては、:: と . が同じとしておこう。記号の右側が定数の場合は :: しか使えないルールがある、と。

参考:
2日目:Rubyの不思議な記法たち。
定数
(漫画のキツネと学ぶ)短時間の(そして願わくは辛くない)Rubyコース

 今日あたりは、Rails的に私にとってえらい人に非常な怒りを覚えている。未経験者に独習を言い渡し、一ヶ月後の今、厳しく納期を迫ってきている。Railsのテキストの例は挙げてもらっただけど、それを読むための知識を習得する方法と時間については全く考慮されていない。
 複数の形式のデータソースをまとめて、複数モデルを利用してなんだかんだと仕組みを作るのは、ちょっとスキルが不足し過ぎじゃないだろうか。やってみてはいるけど。遅いと言われたってオレが金出して外注するのでは本末転倒だし、なんなんだろうか。奴は。

コントローラの命名規則

 Javascriptの練習をしようと、Railsでテスト用のアプリケーションを作って適当にControllerを作ったところ、このコントローラ上のアクションに正しくルーティング書いても通らない。
rails g controller javascript_0719
こんな風にコントローラを作ったのですが、多分この_7019部分がいけなかったんだろうな。アンダースコアの後の数字は認められないのかも。常識かもしれない。
 別の名前で同じようにコントローラ作ったら問題なくできた。javascriptの勉強をする前に30分くらいつぶしてしまった…。

 ど素人なんで、テストで作ったものに番号振ったり日付入れたりしたくなるじゃないすか!しないすか?するっすよね!

参考:
コントローラの作成と命名規則(命名規約)

 おらー、だめかもしんねぇ。わかりかけているような気はするんだけどなぁ。

2014年7月18日金曜日

マイグレーションを1からやり直す

 rake db:migrateだとtableがすでに存在しているとエラーが出る(コンソールで確認してもそんなテーブル無いんだけど…)のに、下記だと問題は起きなかった。

rake db:migrate:reset
とりあえず、メモ。また使いそうな気がする。

git mergeやらrebaseやら

 gitでブランチが枝分かれすると非常に不安になる。特にリモートの場合は。なんかポキッと折ってしまいそうで。

 gitの概念を知れば怖さも少なくなる、ということでmergeとrebaseを知る必要が出てきました。
 何はともあれ下記を読んだら図解がわかりやすく、gitでのブランチの動き方がよくわかってきました。このブログに説明を書く代わりにリンク張ります。
 こういうイメージででしか頭に入らないのってアホな証拠だな。以前の同僚に同じこと言っている人がいて、非常に親近感の湧いた記憶があります。
 こういう開発している人たちの頭の中ってどうなっているんだろうか。えらい人はプログラマーにもバカがたくさんいてさーと言うがそのうちオレもそういわれるんだろうと思うと泣けてくる。



参考:
チーム開発に必要なgit コマンドを神速で習得しよう!

アソシエーションで作ったインデックスに値が入らない

 バカみたいにずっと考えていました。
 例えば、AuthorとBookが1:nの関係であるとき、Book.newしてもauthor_idに値が入らず困っていました。どこかでアクティブなauthor.idを拾って手動で突っ込むものと思っていたのですが、書式が全然違っていた。

 authorが決まった状態であれば、以下で正しくauthor_idが自動的に代入される。
@author = Author.find(1)
@book = @author.books.new
=> #<Book id: nil, name: nil, Author_id: 1, created_at: nil, updated_at: nil>
それにしても、テキストでこんなことしてたっけな。読み直すか。
 newの前がどうして複数形なのかもよくわからん。

頭悪過ぎだ。テキストを読んで理解できないし、例えわかっても次使うまでに忘れてしまう。ブログに書き留めてもあまり効果がないな…。

参考:
ActiveRecord の new と build の違い
Railsでの似たような言葉での違いメモ

知らない用語・略語

 みんな大好きな用語や略語。全く興味ないけど知らないとどうにもならないので覚えないと。仕方ない。
 説明は一言にして、リンクだけ張っていこう。

(ウェブ)ビーコン HTMLを利用したメールやウェブページの閲覧者を識別する仕組み

2014年7月16日水曜日

rails console --sandbox

 コンソールでデータベースの内容を壊さずに試したい場合、--sandboxをつけて実行するとコンソール終了時に実行した内容が全部ロールバックされてデータが元に戻る。便利。
~/work/t0716_2$rails c --sandbox
Loading development environment in sandbox (Rails 4.1.1)
Any modifications you make will be rolled back on exit
Ctrl+Dで抜けると、rollbackしたメッセージが表示される。
irb(main):016:0> ^D
   (0.1ms)  rollback transaction 

リレーションとかhas_manyとか

 has_manyとかbelongs_toとか、テキストでは概念は自明のような書き方でくるから酷い。
 そこへいつもの命名規則とかがあって大混乱。

 以下の参考リンク、一つ目は具体例の説明が超優しい。
 二つ目は〜_idとか言うキーについての説明が詳しい。マイグレーションの具体例が素敵でした。

参考:
アソシエーション
Rails4 外部キーをテーブルに設定するための、3通りのマイグレーションの書き方。

 あと、どの本でもモデル双方から設定しないといけないかのように書いてあることが多いけど、参照する方向だけ設定すればいいみたい。

 プログラミングつーもんは、リファレンスマニュアルかソースコードが読めるようになるまではなにも信用できないんじゃないかって気がしてきた。
 始めは各項目について詳しく語っているサイトのリンクを収集できれば、入門者にとっては一番良さそうに思う。

2014年7月15日火曜日

階層的なリンクを作る

 まだ使わないけど、こんな感じの階層的なメニューリンクの作り方があったのでメモしておく。カテゴリーを絞り込むようなイメージのやつ。これから作るサイトで使うかもね。

参考:
現在のページと同じページの場合はリンクを貼らない(link_to_unless_currentメソッド)

BABYMETAL その5

 掲示板にSU-METALについてエピソードがたくさん書かれていた。Youtubeの動画とかでもこの一片は確認できるので、おそらく全部本当なんでしょう。自分のために一応メモしておく。
★SU-METAL(中元すず香)とは
・運動神経が酷いので自転車に乗れない
・縄跳びの二重跳びは1回がやっとである
・さくら学院のステージでは1人だけ必死で踊って1人だけ汗だくである
・靴ひもを自分で結べない上に左右逆に履き指摘されるまで普通に歩いている
・靴下も左右違う物を履いている事が多い
・ニット帽を被る時は前髪を全部中に入れて帽子を直立にするのがこだわりである
・会話中に「なんかー」を連発し話が長いが中身はない
・ホイッスルを上下逆に持って吹こうとする
・よく漢字を間違えるがさくら学院生徒の名前も書き間違える
・さくら学院生徒の全員の名前を書いたつもりが菊地最愛を忘れている
・他の生徒のお茶を間違って飲む
・「力うどん」とは長年の職人さんが力づくで練ったうどんの事である
・「CD」や「BD」の「D」の意味は「デロリアン」である
・Perfumeライブの座席番号が暗号に見えた
・幼少の頃より1円玉貯金が趣味で緑に変色した1円玉を見て「レアな1円玉見つけた」と喜ぶ
・幼少の頃より引越しの際に募金するまでに集めた1円玉は800枚にも及ぶが額面で言うとたかが800円である
・MVやドキュメントの撮影時いつも置いてきぼりにされ「待ってよ?」というがみんなに置いてきぼりである
・メールの返信はだいたい2日後である
・ゆいもあ2人が仲良くしているのが羨ましくて一緒にお風呂に入ったり寝たりする寂しがり屋さんである
・日記をつけているが不定期で書き殴りである
・自室でネギを栽培し姉に叱られる
・ネギ栽培をきっかけに料理にはまるが作った料理はゆで麺と粉末スープのうどんである
・冷蔵庫にある物をとりあえず炒める
・無性に牛乳を飲みたくなる日がありその日は1日2リットル以上飲み腹を壊す
・骨つき肉や骨付きの魚は動物を食べてる感じがして好きじゃない
・アルバムのジャケ写撮影で「お気に入りの私物を持って来て」と言われて、お好み焼きのヘラを2本持参し嬉しそうに撮影に挑む
・同郷の杉本愛莉鈴を変人呼ばわりするが本人のほうがよっぽど変人である
・普段はボケているがいざという時に別人に変身する 
 もう、なんか可愛すぎるな。

ネストされたルーティングとform_for

 サンプルコードにちょっと編集機能を付けてみようと思ったら大ハマり。
 ルーティングがこんなネストされた構成の場合に、projectモデルとtaskモデルに対するform_forは書式にだいぶ違いがあった。基本に違いは無いんでしょうけど、直感的でなくてわからなかった。
resources :projects do
  resources :tasks
end
 projectの方は、ごく入門書的なコードで動いた。
コントローラ
  def edit
  @project = Project.find(params[:id])
  end
ビュー
= form_for @project do |f|
 taskの方は、1時間くらいウトウトしながら考えてダメで、ググったらすぐ出てきた。すぐググれば良かった。ggrksとはよく言ったものです。
コントローラ
  def edit
    @project = Project.find(params[:id])
    @task = Task.find(params[:id])
  end
ビュー
= form_for [@project, @task] do |f|
 まだ全然カスの領域から踏み出せない。

参考:

ドットインストール Ruby on Rails 4入門 (全28回)

 作ってほしいものがあるからRailsを勉強して、と言われたので素直に始めたらRailsの前に勉強しないといけないことがたくさんあって、でも時間無いから概念だけかいつまんでRailsの勉強をしています。
 1ヶ月ほど独習して最近1週間は結構吸収するペースがあがってきたのですが、最初のうちは途方に暮れていました。見よう見まねでやっても概要がつかめていないから頭に入らない。

 RailsチュートリアルとかRails Girlsとか、買うように勧められたパーフェクトRuby on Railsという本が最初のテキストでしたが、途中で投げ出しました。今振り返ると本当にWEBデザインやプログラミング初心者に勧めるべきものではないですね。
 勉強の進捗で結構せっつかれたけど、あれはどうなんだろう。下地やセンスのある人じゃないと無理。逆に本当の素人にこれらを勧めたセンスを疑う。全く知識がないことは何度でも言ったはずなんだけどね。
 後から、結局回り道してhtmlとcssとrubyの触りだけでもと勉強する必要があったと伝えたら、そういうこともあるかもしれないね、だって。なんすかそれ。Railsが少しずつ理解できるにつれて、全部怒りに変わっていくな…。
 まぁ、これで数ヶ月後にでもそれらしいものが作れるようになれば感謝すべきなのかな。話を振ってくれたわけだし。

 上記では一回目の説明からかなりの情報を詰め込もうとしている。特にいけないのが、何が重要かをあまり説明していない。開発にあたって覚えるべきノウハウの優先度ってあると思うんですが、そういうものについて全く語られていない。
 例えば項目ごとに3段階くらいの優先度がつけられていて、何度も復習しながら優先度の低いものまでを習得していく、という本があればいいのにな。

 ところで、いろいろ困ってドットインストールというサイトの動画を見ると、内容としては薄いんでしょうけど、優先度の高いものしかやらないし、次に何をどのようになぜするのかというのを話しながら教えてくれるので考え方が見えてとても参考になった。
 リアルな授業と違って、疑問を持ったところを何度も聞き返すことができるのも嬉しい。


 htmlとcssもここで見ました。Rubyについては入門書を図書館で読んだけど、あとでここの動画を見ておこうと思います。
 Railsで最低限必要なJavascriptとデータベースに関してはまだ全く勉強していないので、これも動画を見ておこうかな。これ見てから本読むとだいぶ感触が違うと思う。

 hamlの講座も見ましたが、これはhtmlより入力文字数が相当減って助かってます。

 これで無料だなんて嬉しい限りです。

2014年7月14日月曜日

validationのエラー内容を表示する

%h1 Add New
= form_for @project do |f|
  %p
    = f.label :title
    %br
    = f.text_field :title
    - if @project.errors.any?
      = @project.errors.inspect
  %p
    = f.submit
 例えばこんな感じで、.errors.inspectとすると、エラーの内容を確認することができる。ドットインストールでやってた。
#<ActiveModel::Errors:0x007fd1635c5b48 @base=#<Project id: nil, title: "", created_at: nil, updated_at: nil>, @messages={:title=>["can't be blank"]}>
で、こんなエラーが出たので、@messagesの内容を拾ってもっともらしいエラーを表示させよう、と。
      = @project.errors.messages[:title][0] 
:titleの0番目の要素なのでこんな書き方をするみたいだけど、[0]を外してみたら["can't be blank"] と表示された。よくわからない。

 ちなみに、独自のエラーメッセージを表示させる場合には、モデル/app/models内に書くことで可能。
class Project < ActiveRecord::Base
validates :title,
 presence: { message: '空はダメ!' },
 length: { minimum: 3, message: '短い!'}
end
 あ、すんません。hamlで書いてます。

rails new OneApp --skip-bundle

 rails newに--skip-bundleをつけると、bundle install作業をスキップしてくれる。以前の環境と変わらなければスキップしても構わない。

member = Member.newの意味

 モデルを扱う際によく出てくるmember = Member.new的な表現はとにかく丸暗記していて意味を理解していなかった。

 変数memberにMemberモデルをnewしてできたインスタンスをセットしている、ということで、短いながらこれまでで一番私に意味を伝えてくれた解説でした。
PrctModel.new(name: 'Suzuka', level_sing: 10, level_dance: 9).save
 こんな風に変数を使わずにMember.newに対して全部いろいろやっちゃってsaveすればいいじゃないかと思ったりしたんですけどね…。
 この役割はcreateメソッドにあると思うし、既存のレコードに値を追加する場合は困りそうですよね。約束事なんでしょうね。なんで?なんで?と思い悩むところではないのかも。

参考:

テーブルのカラムを追加・削除・名前変更する

 モデルのテーブルにカラムを追加する方法が、私の持っている本では素人にわかるように解説してくれていない。素人だからこそ設計なんてめちゃくちゃだし、すぐに必要になるんですが…。
 昨日まではわからなくなるとモデルを新しく作り直していたので、どうすべきか確認しておく。とりあえずscaffoldで適当なMVCを作ってマイグレーション。
$rails g scaffold PrctModel name:string level:integer
$rake db:migrate
 このときのマイグレーションファイルはこんな感じでした。
class CreatePrctModels < ActiveRecord::Migration
  def change
    create_table :prct_models do |t|
      t.string :name
      t.integer :level
      t.timestamps
    end
  end
end
 さて、コンソールから適当にデータを突っ込んでみます。
[14] pry(main)> prct = PrctModel.new(name: 'Suzuka', level: 10)
[15] pry(main)> prct.save
 もしくは、
[17] pry(main)> prct = PrctModel.create(name: 'Suzuka', level: 10)
この辺もずっと前に意味わからず打ち込んでいたけど、慣れというのは恐ろしいもので、説明はまだちゃんとできないけど身体が少しずつ動くようになってきているかも。
 さて、PrctModel.allとかすると正しくレコードが登録されていることが確認できました。
 ここで、levelをlevel_singに変更、カラムlevel_danceを追加してみます。してみますってこの時点でどうやるかわかってないんですが。
 ふふーん。マイグレーションファイルをコマンドで作ればいいみたい。多分コンソール上やマイグレーションファイルを書き換えても操作できちゃうんでしょうけど、今回はスルーしておきます。

 追加は次のコマンド。クラス名としてAddColumn[変更元カラム名]To[テーブル名]、その後に[変更先カラム名]を入れれば良いみたい。Columnは省略できるっぽいけど、一応書いておきます。
$rails g migration AddColumnLevelDanceToPrctModel level_dance:integer
マイグレーションファイルは上のコマンドからいい感じに作ってくれました。
class AddColumnLevelDanceToPrctModel < ActiveRecord::Migration
  def change
    add_column :prct_models, :level_dance, :integer
  end
end
 これでマイグレーションしてコンソールで確認したら、確かにカラムが増えていました。

 カラムの削除は次の通り。モデル名の前置詞がToではなくてFromです。
$rails g migration RemoveColumnLevelFaceFromPrctModel level_face:integer
 こちらもマイグレーションファイルはいい感じに作ってくれますが、:integerとかの変数型はちゃんと記さないとまずそうです。変数型を書かずにマイグレーションファイルを作ったところ、ファイル内で変数型が:stringになっていて、削除後にロールバックすると変数型が:stringになってしまいそう。

 カラム名の変更は下記の通り。
$rails g migration RenameColumnLevelToPrctModel level_sing
class RenameColumnLevelToPrctModel < ActiveRecord::Migration
  def change
  rename_column :prct_models, :level, :level_sing
  end
end

 この、マイグレーションファイル内でテーブル名が複数形になる意味がよくわからない…。(単数形で試したらエラーになった。)

参考:
【Rails】migrationのchangeとup/downって何が違うの?

2014年7月12日土曜日

サイトを画面の中央に配置する

 ほんとすいません。超初心者で。
 サイト全体をモニタの左右中央に配置したいと思ったのにどうしたらいいかわからず。

 Railsを覚えろと言われたもんだから頑張ってテキストをこなしたりはしていますが、ちょいちょいhtml、css、rubyといったrailsユーザーなら一通りわかっているはずのところで詰まっています。

 ところで、bodyタグに対してなんか設定するんだろうと思っていろいろしていたのですができず、div等にmarginでしようと思ってもcenterとか指定できないみたいだし、なんなんだよーと。
 ググったらすぐわかりまして、例えばdivに下記のようにmarginをauto設定すれば良かったみたい。
<div style="margin: 0 auto;">
なんだよ、autoって。他はみんなcenterじゃないか。

2014年7月11日金曜日

deviseでの認証

 テキストでOAuthとかいうやつでTwitterを使った認証をやったのですが、外からdeviseを使ってみやがれという話がありまして、やってみます。

 とりあえずトップページだけのアプリケーションを作ってログイン認証だけ実装してみます。

参考:
devise使ってユーザー認証機能の追加と設定

 実装してみますというか、上のサイトをとにかく上からそっくりなぞったらそれらしいものができました。すごいですね。メールアドレスとパスワードによるサインアップとサインイン、サインアウトまでが簡単に動くようになりました。
 でも、作業は簡単でも本質はあまりわかっていない。
 まぁでも、ここにサインインしているか確認しながらコンテンツの表示とかを変えていけばそれらしくなるんでしょうかね。

 まともに扱えるようになるんかなーー。

のに子博士のブラボーRuby道

 頭悪くて、クラス作ってメソッド作って、それを利用するときになんでnewする必要があるのかずっとわからなくて、やっぱりコード書く以外に勉強方法はないんでしょうね。とにかく必死でRailsのテキストをなぞってきましたけど、あまりに基本がなっていないとどうしようもないことがようやくわかりました。

 図書館ですでに絶版らしい「のに子博士のブラボーRuby道 プログラミングはじめるゾ」という本を読んだのですが、へったくそな(失礼)漫画とともにほぼ専門用語を使わずにこの辺りの説明をしてくれていまして、これで初めてRailsのテキストの読める状態になったのではないかと思います。
 配列やハッシュとかの概念も前よりもすっきりしたような気がします。


 著者ののに子さんへのお礼に本を買ってあげたいくらいなのですが絶版で、しかも他に著作が無いようで困りました。記念に古本ででも買おうかな。
 あ、と思ったら本名が清水美樹さんという女性の方でした。でも最近はRuby/Rails関連書籍は出されていない様子。残念。

2014年7月10日木曜日

scaffoldとモデル名の関係

 scaffoldに複数形の引数(モデル名)を突っ込むとどうなるのか試した。別になんてことは無いけど気になって。
 まずはeggと単数形で。
~/work/meishi$rails g scaffold egg sex:integer
      invoke  active_record
      create    db/migrate/20140710062006_create_eggs.rb
      create    app/models/egg.rb
      invoke  resource_route
       route    resources :eggs
      invoke  scaffold_controller
      create    app/controllers/eggs_controller.rb
      invoke    haml
      create      app/views/eggs
      create      app/views/eggs/index.html.haml
      create      app/views/eggs/edit.html.haml
      create      app/views/eggs/show.html.haml
      create      app/views/eggs/new.html.haml
      create      app/views/eggs/_form.html.haml
      invoke    helper
      create      app/helpers/eggs_helper.rb
      invoke    jbuilder
      create      app/views/eggs/index.json.jbuilder
      create      app/views/eggs/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

 次は複数形eggs。
~/work/meishi$rails g scaffold eggs sex:integer
Plural version of the model detected, using singularized version. Override with --force-plural.
      invoke  active_record
      create    db/migrate/20140710062649_create_eggs.rb
      create    app/models/egg.rb
      invoke  resource_route
       route    resources :eggs
      invoke  scaffold_controller
      create    app/controllers/eggs_controller.rb
      invoke    haml
      create      app/views/eggs
      create      app/views/eggs/index.html.haml
      create      app/views/eggs/edit.html.haml
      create      app/views/eggs/show.html.haml
      create      app/views/eggs/new.html.haml
      create      app/views/eggs/_form.html.haml
      invoke    helper
      create      app/helpers/eggs_helper.rb
      invoke    jbuilder
      create      app/views/eggs/index.json.jbuilder
      create      app/views/eggs/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss
      invoke  scss
   identical    app/assets/stylesheets/scaffolds.css.scss
 結果は同じでした。でも、複数形の場合は、モデルのテーブル名が複数形なのはおかしいから直したよ的なメッセージが入っています。オプション入れればこの辺りは強制的に指定できるみたい。

 コントローラのみの場合は下記の通りどちらでも指定通りに作られました。
~/work/meishi$rails g controller egg show
      create  app/controllers/egg_controller.rb
       route  get 'egg/show'
      invoke  haml
      create    app/views/egg
      create    app/views/egg/show.html.haml
      invoke  helper
      create    app/helpers/egg_helper.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/egg.js.coffee
      invoke    scss
      create      app/assets/stylesheets/egg.css.scss
~/work/meishi$rails g controller eggs show
      create  app/controllers/eggs_controller.rb
       route  get 'eggs/show'
      invoke  haml
      create    app/views/eggs
      create    app/views/eggs/show.html.haml
      invoke  helper
      create    app/helpers/eggs_helper.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/eggs.js.coffee
      invoke    scss
      create      app/assets/stylesheets/eggs.css.scss

 モデルの場合も、モデル単独でのgenerateでは指示通りに作られました。
~/work/meishi$rails g model egg sex:integer
      invoke  active_record
      create    db/migrate/20140710064223_create_eggs.rb
      create    app/models/egg.rb
~/work/meishi$rails g model eggs sex:integer
      invoke  active_record
      create    db/migrate/20140710064003_create_eggs.rb
      create    app/models/eggs.rb
 コントローラ名はモデルと一緒に使われる場合は複数形。モデルを伴わない場合は単数。
 モデル名はテーブルの名前でもあるから、これ自体は基本的に単数。
 scaffoldは上を両方とも同時に作るんだけど、引数としては単数が普通。必要な部分は勝手に複数形になる。

 ふーん。

 あ、本当はモデル名は大文字で書き始めないといけないんだっけ。単語が複数の場合はStampCollectionとか。くっつけて。そうじゃないとアンダースコア付きのファイル名で生成されない。まぁ、次から気をつけます。

git pushした後にcommit --amendしてpushしてみた

 コミット時のコメントを間違ってしまったのにpushしてしまって、amendしてもう一回pushしたらrejectされた。まぁ、当然ですよね。
~/work/awesome_events$git push
To https://github.com/xxx/awesome_events.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/xxx/awesome_events.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
~/work/awesome_events$gi pull
-bash: gi: command not found
~/work/awesome_events$git pull
Merge made by the 'recursive' strategy.
~/work/awesome_events$
別に何か対処した訳でもなく、あんたのブランチが古いからgit pullしてみろ、とヒントが書かれているので言う通り実行すると、 再帰的にマージしといたよというメッセージ。
 その後pushできましたが、誤ったコミット、修正後のコミット、そのときに自動で発生したマージ処理についてMerge branch 'master' of https://github.com/xxx/awesome_eventsというコメントとともにコミットが追加されていました。

 あぁ、こうなっちゃうのね。意図したこととは違ったけど、データが壊れていないのでよしとする。でも誤ったコメントが入ったままなのは今後なんとかしないと。

BABYMETAL その4

 えーっと、結局のところSU-METALというか中元すず香が好きなんじゃないかというところに思い当りまして。例えばBABYMETALが解散しても中元すず香が歌うならそれを見たいと思うだろうと思うのです。

 そこで、ファン歴2か月のにわか野郎がYoutubeから厳選して歌手活動の足跡を辿ってみたいと思います。主に自分のために。
 いきなり1~2曲目から目頭が熱くなり始めます。最後の方はさくら学院の卒業直前みたいですが、なんかね、当時を知らないけど無感情には見ていられないです。

 まずは9歳。まだ頑張ってレッスンを受けたとおりに上手に歌おうとしているように見えます。


 この時にはなんかもう開眼している感じ。誰かのアドバイスなのか本人の感性なのかわからないけど、上手さを取り違えて癖のある歌い方をしてしまう歌手の多い中でこれだけストレートな声を聴かせてくれる子は珍しい。すでに完成していて、現在のSU-METALとそう変わりません。幼いけど。


 次はアニメの主題歌を歌ったとき。これ素敵。セルフカバーしてほしい。武藤彩未さんとの再結成も歓迎します。
 動画が年代的に前後しているかもしれませんが、お許しを。


 このミュージカルでの歌唱は非常にレベル高い。震えます。ミュージカル女優なんていいんじゃないでしょうか。いや、やっぱり歌を聴かせるアイドルだな。岩崎宏美クラスかどうかはわからないけど、本格派と言っても差し支えないレベルでしょう。


 ほら、卒業式が近づいてきましたよ。この頃にはもうBABYMETALと同時進行始まってるのかな。


 さくら学院の卒業式。みんな泣いちゃってるからね。ずるいよね。泣くよね。


 さくら学院最後のヘドバンギャー!!。その後のライブを含めてもはじけっぷりは一番かもしれません。


 この辺りを踏まえての、BABYMETALです。というかSU-METALです。というか中元すず香です。
 ちなみに、YUIMETALとMOAMETALについては、最初この子たちいらないんじゃないの?というくらいから入った方が後々楽しめます。

 あー、やばいやばい。目から汗が。BABYMETALのおそらく長くはないであろう儚い活動期間を考えてもまた汗が。
 今はその後の未来を勝手に予想するのがとても楽しいです。武藤彩未さんとアイドル対決とか。さくら学院高等部を発足とか。ありそうで怖いんだけど、早めの結婚、引退とかでも伝説になりますね。うたのお姉さんとかも個人的にはありなんですけど。

2014年7月9日水曜日

記号・演算子の意味

 Railsのテキストに何の説明も無く知らない記号の論理演算子が出てきて困ります。&&とか||とか。
 また、わかる人にしかわからない書き方をしているサイトも多い中、下記はいろいろ参考になります。自分がわかる説明をしているページだけをGoogleが表示してくれればいいのに。検索ツールに難易度のパラメータも入れさせてほしい。

参考:
Rubyで使われる記号の意味(正規表現の複雑な記号は除く)

6-6 イベントの編集・削除機能を作る

 イベントの編集・削除機能とそれに関連するリンクを作成する。

  • イベント詳細ページに編集リンクを追加
  • 編集をクリックすると編集フォームに移る
  • 間違った入力にはエラーを表示する
  • 正しく入力されていると更新
  • イベント削除のリンクを追加
  • イベント作成者にだけ表示する
  • 削除をクリックすると確認ダイアログが出て、OKすると削除される

イベント編集機能を作る

まず編集ボタン。event/show.html.erbにp197の通り追記。
   <% if @event.created_by?(current_user) %>
   <% link_to 'イベントを編集する', edit_event_path(@event), class: 'btn btn-info btn-lg btn-block' %>
  <% end %>
 特に上の部分で、イベント作成者にのみ編集ボタンを表示させている。created_by?についてはEventクラスmodels/event.rbで定義する。
  def created_by?(user)
  return false unless user
  owner_id == user.owner_id
  end
 こんなのを追記しましたが、内容がイマイチわからない。
 returnの行でuserが空ならfalseを戻り値にして返す。
unless user
  return false
end
と同じ意味みたい。
 owner_id〜では、イベント作者のowner_idとログインユーザーのowner_idが同じかをチェックしている?演算子の説明とかちょっとだけしてほしい。辛い。

 EventsControllerにedit/updateアクションを追加。
  def edit
    @event = current_user.created_events.find(params[:id])
  end
  def update
    @event = current_user.created_events.find(params[:id])
    if @event.update(event_params)
      redirect_to @event, notice: '更新しました'
    else
      render :edit
    end
  end
 編集時に問題があると編集ページがリロードされちゃうのかな?

未完。

6-5 イベントの閲覧機能を作る

 今度は下記を実装。
  • イベント登録後、イベント詳細ページに移る
  • トップページに未開催のイベントを表示する
  • イベント一覧から詳細ページに移れる

イベント詳細ページの作成

before_action :authenticate, except: :show
def show
@event = Event.find(params[:id])
end
まずはこれだけEventコントローラに追加した。:idの入ったurlからこれを引数として持てこれる。ルーティングはresourcesでOKと。
 イベント詳細ページはログインしていなくても確認できるようにするため、before_actionにexcept: :showを追記してログイン状態をチェックしないようにしている。
 ビューにはイベント内容と、作成ユーザーを表示します。p193の通りファイル作成。
 models/event.rbに下記を追記。
  belongs_to :owner, class_name: 'User'
 ownerについては後で設定するらしい。だからきっとここでのhas_manyの
設定も後回し。
 これでイベント内容が表示されるというけど・・・あ、表示された。すごい。Twitterで使っているIDとプロフィール画像も表示された。なんか楽しい。
 それにしても、ビューを書くセンスってhtmlとcss知っていることが前提っぽいからつらいなー。そこもRubyも知らないのに、Railsって相当誤った選択じゃないか。進めた奴を恨むよ。

イベント一覧ページの作成

トップページにイベント一覧を表示させる。なんか久しぶりにトップページにきました。welcome/index.html.erbを下記の通り書き換え。
<div class="page-header">
  <h1>イベント一覧</h1>
</div>
<div class="list-group">
  <% @event.each do |event| %>
    <%= link_to(event, class: 'list-group-item') do %>
      <h4 class="list-group-item-heading">
        <%= event.name %>
      </h4>
      <p class="list-group-item-text">
        <%= event.start_time.strftime('%Y/&m/%d %H:%M') %> - <%= event.end_time.strftime('%Y/&m/%d %H:%M') %>
      </p>
    <% end %>
  <% end %>
</div>
 @eventについて未定義なので取得処理の実装をする。未開催のイベントを開催時間の昇順で取得する。設定はwelcomeコントローラ。
class WelcomeController < ApplicationController
  def index
  @event = Event.where('start_time > ?', Time.zone.now).order(:start_time)
  end
end
 whereとかorderとかってsqlのクエリでさーね。なんとなくわかるけど詳しい書式がわからん。

参考:

 こんなか。
 お、トップページに一覧が出た。BootStrapって便利そうだな。前にも書いたっけ。無いセンスでCSS一生懸命作るより、用意されたものを組み合わせる方が素人には嬉しいね。参考にできるサイトもたくさんありそう。

参考: