C言語と違うところ2
- 配列
irb(main):019:0> ary1 = [3, d-3.0, "orange"] => [3, 4.0, "orange"] irb(main):020:0> ary1[0] => 3 irb(main):021:0> ary1[0..2] => [3, 4.0, "orange"]
配列は[]の中にオブジェクトを並べて定義する。
irb(main):023:0> ary1[-1] => "orange" irb(main):024:0> ary1[-2] => 4.0 irb(main):026:0> ary2 = [a, ary1] => [2, [3, 4.0, "orange"]] irb(main):027:0> ary2[1][2] => "orange"
配列の添え字が負の数の場合は配列を後ろから見た結果。
配列の中に配列を入れられる。
- for文
for i in 1..5 print(i,"\n") #"puts i"も同じ end
- if文
a = 2 if a == 0 puts "a is zero." elsif a < 0 puts "a is negative." else puts "a = #{a}" #"#{a}"はaの値参照 end # 実行結果 # a = 2
- if修飾子
whileにもwhile修飾子がある。
s = "me" puts "too short." if s.size < 4 #後付けif文 # 実行結果 # too short
- case文
switch的な。
score = 35 case score when 0..49 # 0以上49以下 puts "failure" when 50..79 # 50以上79以下 puts "pass" else # 80以上 puts "excellent" end # 実行結果 # failure
- next
for i in 1..10 # next はループ条件式直前にジャンプ next if i==5 puts i end # 実行結果 # 1 # 2 # 3 # 4 # 6 # 7 # 8 # 9 # 10
5だけジャンプされた。
ちなみに、redoを使うと、直前(ひとつ上)にジャンプ。
C言語と違うところ1
チュートリアルを見ればいい
かもしれないけど、一応メモ(・ω・)
- Hello, World
標準出力は
puts "Hello, World"
または
print("Hello, World\n")
しかも!
最後の「;」は要らない!!うっかりつけてしまいそう。。
- 変数
変数というより、実際はオブジェクト
a=2 #整数オブジェクト b=3.5 #実数オブジェクト c="apple" #文字列オブジェクト
型宣言不要!!!
irb(main):004:0> a => 2 irb(main):005:0> b.class #classメソッド「型を述べよ」メッセージ => Float irb(main):006:0> c.size #sizeメソッド「大きさを述べよ」メッセージ => 5
- 演算
irb(main):014:0> d,e = a*b, c+"lemon" => [7.0, "applelemon"]
文字列の足し算もしてくれる。
いっぺんに複数のオブジェクトに対する演算が可能。
「**」演算子⇒累乗!
- キャスト
irb(main):015:0> f = b.to_s #文字列に変換 => "3.5" irb(main):016:0> g = b.to_i #整数に変換 => 3 irb(main):017:0> h = a.to_f #実数に変換 => 2.0
データベース試作3
- 解決
エンコーディングの問題は…
なぜかクリアしてました…
クリアした理由が分からないのが残念(;ω;)
今日覚えたことのメモ
+---------+----------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+----------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | conid | int(11) | YES | MUL | NULL | | | name | varchar(100) | YES | | NULL | | | address | varchar(200) | YES | | NULL | | | lat | decimal(23,20) | YES | | NULL | | | lon | decimal(23,20) | YES | | NULL | | +---------+----------------+------+-----+---------+----------------+
のdecimal(23,20)は10進数の桁数23でそのうち小数点以下が20桁、というデータ型。
データベース試作2
- id は自動的にインクリメントしてあげたい。
mysql> alter table conveni modify id int auto_increment; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table store modify id int auto_increment; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
- カラムを指定した位置に追加してあげたい。
mysql> alter table store add name varchar(100) after conid; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
- データの格納
mysql> insert into conveni -> (null,'エーエム・ピーエム'), -> (null,'サンクス'), -> (null,'スリーエフ'), -> (null,'セブンイレブン'), -> (null,'デイリーヤマザキ'), -> (null,'ナチュラルローソン'), -> (null,'ファミリーマート'), -> (null,'ミニストップ'), -> (null,'ローソンストア100'), -> (null,'ローソン');
すると、
現在のエンコーディングutf-8に合わないデータを受信しました。
って怒られた(;;
…明日またエンコーディングの設定からやります。
データベース試作1
- データベースの作成
試しにkomikkomikkoという名前で作ってみる。
mysql> create database komikkomikko; Query OK, 1 row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | conveni | | komikkomikko | | mysql | | test | +--------------------+ 5 rows in set (0.00 sec)
- データベースの削除
そして消えてもらう。
mysql> drop database komikkomikko; Query OK, 0 rows affected (0.10 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | conveni | | mysql | | test | +--------------------+ 4 rows in set (0.00 sec)
- テーブル作成
mysql> create table conveni( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.01 sec) mysql> show fields from conveni; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(100) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
あ゛、idを主キーにするのを忘れた。。
mysql> alter table conveni add primary key (id); Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0
もう一個こんなテーブルを作成。
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | 0 | | | conid | int(11) | YES | | NULL | | | address | varchar(200) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+
store(店舗)テーブルには、conveni(コンビニの種類)を参照するためにconid(コンビニid)をもつので、
mysql> alter table store add foreign key (conid) references conveni (id) on delete cascade on update cascade; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0
で関連付け。
on delete/update cascade は、削除や更新において、
整合性がちゃんと取れるようにつける。
CentOS5にRaillsインストール未遂
- RubyGemsをインストール
#wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz --10:09:14-- http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz rubyforge.org をDNSに問いあわせています... 失敗しました: 名前解決時の一時的な失敗.
これがまず失敗する。
そこで、Windowsでいったんダウンロードして、CentOSの方にうつした。
以下は解凍のコマンドをメモ
#tar xzf rubygems-1.1.1.tgz
rubygems-1.1.1のディレクトリに移動して
RubyGemsをインストール
#ruby setup.rb install -c -m 0644 ubygems.rb /usr/lib/ruby/site_ruby/1.8/ubygems.rb /usr/lib/ruby/1.8/fileutils.rb:1246:in `initialize': Permission denied - /usr/lib/ruby/site_ruby/1.8/ubygems.rb (Errno::EACCES) from /usr/lib/ruby/1.8/fileutils.rb:1246:in `open' from /usr/lib/ruby/1.8/fileutils.rb:1246:in `copy_file' from /usr/lib/ruby/1.8/fileutils.rb:1245:in `open' from /usr/lib/ruby/1.8/fileutils.rb:1245:in `copy_file' from /usr/lib/ruby/1.8/fileutils.rb:459:in `copy_file' from /usr/lib/ruby/1.8/fileutils.rb:835:in `install' from /usr/lib/ruby/1.8/fileutils.rb:1379:in `fu_each_src_dest' from /usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest0' from /usr/lib/ruby/1.8/fileutils.rb:1377:in `fu_each_src_dest' from /usr/lib/ruby/1.8/fileutils.rb:831:in `install' from /usr/lib/ruby/1.8/fileutils.rb:1510:in `install' from setup.rb:113 from setup.rb:108:in `each' from setup.rb:108 from setup.rb:105:in `chdir' from setup.rb:105
!!!!?????
Permission denied … 権限がない
ので、再チャレンジ
#sudo ruby setup.rb Password: ---ワーっと出てきて == Thanks Keep those gems coming! -- Jim & Chad & Eric (for the RubyGems team) ------------------------------------------------------------------------------ RubyGems installed the following executables: /usr/bin/gem If `gem` was installed by a previous RubyGems installation, you may need to remove it by hand.
- Railsインストール
#gem install rails --include-dependencies INFO: `gem install -y` is now default and will be removed INFO: use --ignore-dependencies to install only the gems you list ERROR: could not find rails locally or in a repository
はまりました。
そもそもwgetに失敗する時点で何かがおかしい。
と思って調べていたのですが
時間がなくて断念(;;
ファイアウォールを有効にしてるのって関係ありますか??
…火曜日以降再チャレンジしてみます。
どこにどういうファイルが保存してあって、
ダウンロード・インストールするときはどこにしたらいいとか(根本!!??)
要勉強です><
アカウントとパスワード
rootのパスワードを変更するのに悩んだ話。
mysql> set password for root=password('パスワード'); Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
で、いざ、もいちどMySQLに接続!
…??パスワード変わってない(´・ω・`)
前のパスワードで入ってみてユーザを確認してみたところ。
mysql> select user,host from mysql.user; +------------+-----------+ | user | host | +------------+-----------+ | root | % | | root | localhost | +------------+-----------+
rootよ。なんで2個もあるんですか。。
調べてみると、
OSで使ってる名前とMySQLで使ってるアカウントは別もので
つまり
root@localhostとroot@%は別もので
いつも接続するのはroot@localhostの方なので
こっちのパスワードを変更しないとでした。
mysql> set password for root@localhost=password('パスワード'); Query OK, 0 rows affected (0.00 sec)
これで、パスワードの変更は完了しましたっ。