My TIPs for the programing

プログラミング学習記録

破壊メソッドと日破壊メソッド

rubyでアルファベット小文字の入力値を大文字に変換して出力する課題にて・・

 

puts "入力してください"
input = gets
output = input.upcase!
puts output

 

このコード。

 

upcase!は破壊メソッドだから、inputの値を変更する。

 

ここではoutputという変数を使っているので非破壊メソッドのupcaseを使えば良い。

 

以前ログイン機能作成時にメールアドレスをdowncase!で変換したことがあった。その時はなんとなく使っていたが『!』の意味がわかって納得した。

エディタと文字コード

sjisutf-8でこんにちはを表示する課題で・・

 はまりました。

 

 atomエディタのデフォルトの設定はutf-8です。

 

 その状態でhtmlファイルを作成してmetaタグで文字コードsjisに指定。→文字化け。

 

 atomのcore settingsで文字コードを編集して対処した。

 

 だがこれだと全ファイルの文字コードを変更してしまう。

 

 個別のファイル編集画面のfooterをよく見ると文字コードを指定できるところがあった。これを使うのが良いですね。

 

 また、utf-8csvを作成してエクセルで開くと文字化けするらしい。

 

 これはbom付きのutf-8というものを使用して対処しているとのこと。

【sinatra】rubyをerb(html)上で使用する

 sinatraではルーティングを.rbに、ビューを.erbに記述するのでした。

 html上で、フォームの取得値等のインスタンス変数を利用するときなど、rubyを使用する際のtipsです。

 

ex.erb____________________________

<% price = 125500 * 1.08 %>
<p>
パソコンの値段は<%= price %>円です。
</p>

________________________________

 

<%= %>で囲むと画面上に出力されます。

<% %>は、eachメソッドや、whileメソッド、ifメソッド endなど、画面に出力する必要がないが、Rubyのコードとして、実行したいものに使用しましょう。

【http】メソッド【get post ...】

説明にsinatraを使用したコードを利用しています。

 

GETメソッド

 サーバー側にリクエストを送信します。

 URLの末尾に情報が付与されているため、簡単に送信内容が確認できますが、セキュリティー的な問題があります。

 

.rb__________________________

require "sinatra"

 

get '/a' do
erb :a
end

 

.erb_________________________________________________

<form action="/a" >

メール:<input type = "text" name = "email">
<!-- GETメソッド

送信のとき、メールアドレスをクエリパラメータとして送信-->

</form>

 _____________________________________________________

POSTメソッド

第三者に見えてはならない情報を送信する際に使用します。

フォームは基本、POSTメソッドを使用します。

POSTはメッセージボディと呼ばれる、情報が簡単に確認されない部分に情報を記述してリクエストを送るため、安全に情報を遅れます

 

.rb____________________________________________________

post '/a' do
erb :a
end

.erb_____________________________________________________

<form action="/a" method="POST">

メール:<input type = "text" name = "email">

</form>

【html】基本的なフォームのタグ、スタイル

<html>
<head>
<meta charset="UTF-8">
</head>


<body>
<h1>お問い合!せ</h1>

<form type = '/a'>

<!--formタグのタイプを指定することにより送信後の遷移先を指定-->


<div>
お名前:<input type = "text">
</div>

<!--インライン要素をdivでブロックにして、改行-->


<div >
メール:<input type = "text" name = "email">

<!--送信のとき、アドレスをクエリパラメータとして送信-->


</div>
お問い合わせ内容:
<br>
<textarea cols=40 rows=4></textarea>

<!--大きめの入力フォーム-->


<div>
<input type = "submit">
</div>
</form>
</body>
</html>

f:id:mavol:20170927200858p:plain

【sinatra】とは

 Sinatraは最小の労力でRubyによるWebアプリケーションを手早く作るためのDSLです。

 DSL: 独自言語

 Sienta自体は外部ライブラリのGemなので、gem inastall & require で使用できるようになります。

 

 同様のフレームワークとしてはRubyOnRailsが有名ですが、こちらは少し規約が多く、複雑ですが、より大規模なアプリケーションを制作できます。