新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。もう新人じゃないかも…

学習記録

[C#] プログラミングの実践

内容

型推論(var)
  • varキーワードで暗黙的に型付けされたローカル変数が定義できる。
	class MainClass
	{
		public static void Main (string[] args)
		{
			var num = 3;
			var str = "hoge";
			var dbl = 3.14;

			Console.WriteLine ("{0}, {1}, {2}", num, str, dbl);
		}
	}
    • 何でも入る型という訳ではなくて、「初期化時に代入された値の型になる」ということらしい
    • なので、初期化と同時に使わないとコンパイルが通らない。
    • 長い型名を2回書かなくて済むなどの利点がある
// 長い長い
SampleHogeHogeClass hoge = new SampleHogeHogeClass();
// 楽
var hoge = new SampleHogeHogeClass();
コレクション
  • Javaと似ている
    • ここでもvarを使うと便利
	class MainClass
	{
		public static void Main (string[] args)
		{
			var list = new List<int>();
			list.Add (1);
			list.Add (2);
			list.Add (3);
			list.ForEach (Console.WriteLine);
		}
	}
    • 他にはDictionary(javaのMap), Tuple(複数の異なる型), Setなどがある
実践
	class MainClass
	{
		const int TAKOYAKI_PRICE = 15;
		const int TAKOYAKI_10PRICE = 100;

		public static void Main (string[] args)
		{
			int num = int.Parse (Console.ReadLine());
			int price = (TAKOYAKI_10PRICE * (num / 10)) + (TAKOYAKI_PRICE * (num % 10));
			int price10 = (TAKOYAKI_10PRICE * ((num / 10) + 1));

			Console.WriteLine (price <= price10 ? price: price10);

		}
	}

[Ruby on Rails] 学習記録:4章 ビューヘルパー

内容

フォーム関係のビューヘルパー(続)
  • HTML5対応のinput要素生成
<%= form_for(@book) do |f| %>
  色選択ボックス:
  <%= f.color_field :isbn %><br />
  日付入力ボックス:
  <%= f.date_field :published %><br />
  時刻入力ボックス:
  <%= f.time_field :published %><br />
  日付時刻入力ボックス:
  <%= f.datetime_field :published %><br />
  日付時刻入力ボックス(ローカル):
  <%= f.datetime_local_field :published %><br />
  月入力ボックス:
  <%= f.month_field :published %><br />
  週入力ボックス:
  <%= f.week_field :published %><br />
  メール入力ボックス:
  <%= f.email_field :isbn, size: 25, maxlength: 30 %><br />
  数値入力ボックス:
  <%= f.number_field :price, min: 10, max: 10000, step: 10 %><br />
  スライダー:
  <%= f.range_field :price, min: 0, max: 10000 %><br />
  検索ボックス:
  <%= f.search_field :isbn, size: 10, maxlength: 15 %><br />
  電話番号入力ボックス:
  <%= f.telephone_field :isbn, size: 15, maxlength: 20 %><br />
  URL入力ボックス:
  <%= f.url_field :isbn, size: 10, maxlength: 15 %><br />
<% end %>

f:id:uriku:20140624232943p:plain

  • selectメソッド:選択/リストボックスを生成
    • select(obj, prop, choices [,opts [,html_opts]])
    • obj:オブジェクト名、prop:プロパティ名、choices:optionタグの情報
    • opts: 動作オプション
      • include_blank: 空のオプションを先頭に追加するか(true/テキスト指定)
      • disabled:無効にするオプション
      • selected:選択されたオプション(オブジェクトの値とは異なる値を選択させたい場合)
<%= form_for(@book) do |f| %>
  <%= f.select :publish, ['技術評論社', '翔泳社', 'マイナビ'],
    { include_blank: '選択してください' },  class: 'pub' %><br />
<% end %>
  • collection_selectメソッド:DB情報をもとに選択肢を生成
    • 先ほどの例なら、Bookクラスの各オブジェクトのpublishに格納されている値でselectボックスを生成してくれる
    • 技術評論社、日系BP、、、
def col_select
  @book = Book.new(publish: '技術評論社')
// テーブルからの取得列を配列に格納
  @books = Book.select(:publish).distinct
end
>|html|
// collection_select(obj(form_for下では省略), prop, collection, value(valueに入れる値), text(表示するテキスト))
<%= f.collection_select :publish, @books, :publish, :publish %>
  • その他のビューヘルパー
    • label: ラベルテキストを生成
    • submit: サブミットボタンを生成
文字列・数値関係のビューヘルパー
  • simple_format:改行文字をpやbrタグで置き換える
    • タグを改行文字の後方(または前後)に追加
    • 文字列全体をpタグで括る
    • 単一の改行文字にはbrタグを付与
    • 連続した改行文字には/pとpタグを付与
<% article = <<EOL
タイトルhogehoge

本文hogehoge
hugahuga
ここまで本文
EOL
%>
<%= simple_format(article, class: :article) %>

f:id:uriku:20140624234809p:plain

  • excerptメソッド:文字列から特定文字列(とその前後)を抜粋
    • execrpt(text, phrase [,options])
    • text: 対象文字列
    • phrase: 検索文字列
    • option
      • radius: 抜き出す前後の文字数(default: 100)
      • omission: 省略時に前後に付与する文字列(default: ...)
  • cycleメソッド:テーブルやリストの背景色をn行ごとに変更
    • cycle(value [,..] [,name: cname])
    • value: 値リスト
    • cname: サイクル名
  <tr style="background-color:<%= cycle('#FFffFF', '#FFff99') %>">
  • highlight:特定のキーワードをハイライト表示
    • highlight(text, phrases [,highlighter: replaced])
    • text: 処理するテキスト
    • phrases: ハイライトするキーワード
    • replaced: ハイライト文字列(置き換え文字列)
  • concat:スクリプトブロックの中に出力コードを埋め込む
    • 出力を伴う式は<%=, 伴わないコードは<%で記述
    • <%の中でもちょっとした出力を行いたい場合に使用
  • その他
    • sanitize:文字列からタグを除去
    • sprintf:文字列を整形
    • number_xxxxx:数値を様々な形式で加工
      • number_to_human:10, 100, 1000...の単位に変換
      • number_to_human_size:バイト単位をKB, MB...に変換
      • number_to_percentage:パーセント形式に変換
      • number_to_precision:特定の桁数で丸め
    • strftime:日付データを整形