Programming note」カテゴリーアーカイブ

LAMP環境でブログを作成して学んだこと3(OSインストール)

さくらのVPS環境からの独自ドメインブログ作成の概要

こちらでまとめているのでどうぞ

※ご注意!情報が古くなっており(PHPバージョンなど)、うまく動作しない場合があります(追記)

1:さくらのVPS利用申込み

VPSとは?
VPS (Virtual Private Server。仮想専用サーバー)で
VPSでは、物理サーバーにインストールされているOS(ホストOS)の上に、ユーザーそれぞれに仮想サーバーが割り当てられ、ユーザーはその仮想サーバーを専有して使える。
仮想サーバーにはホストOSとは別のOS(ゲストOS(今回はCentOS7)がインストールされており、ユーザーが管理者権限を持って自由に操作することができる。
レンタルサーバーより他のユーザの影響を受けにくくなる。
割安な点も良い

デメリット
サーバーを自分で構築し、メンテナンスできるスキルや労力が必要となり、HTTPサーバーのインストールや、セキュリティアップデートも自分で行わなければならない。

こちらから登録を行う

2:CentOSのインストール

さくらのVPSの各種設定から行いインストールOSをCentOS7 x86_64
管理ユーザのパスワードを設定
スタートアップスクリプトは特に設定無しでインストールする

3:SSH接続

SSH Secure Shellと言って暗号や認証の技術を利用して安全に
リモートコンピュータと通信するための仕組み。Macはターミナルを使い
Windowsの場合はターミナルソフト(RLogin等)をインストールして利用する 
Macの場合はssh root@IPアドレスで接続をする

続きを読む

LAMP環境でオリジナルブログを作成して学んだこと2(Linuxコマンド))

LAMP環境で開発することによって以下のようなコマンドに触れることができたので忘れないようにメモします。

※←はコメントです。

1:基本的なLinuxコマンド。

clear:                                 画面をクリアする

※上にスクロールすれば見ることができます。

pwd:                                現在のディレクトリの場所を表示する。

※今どこにいるのかわからないときに使うと便利だと思いました。

exit:                                    ログアウトする

※結構使うイメージ

reboot                                再起動

※ターミナルでコマンドするとMacを再起動できます。でもあまり使わないかも 

sudo shutdown -r now   上と同じで再起動

shutdown -h now             直ちにシャットダウン

※これもあまり使わないかも・・・

2:ディレクトリの作成と削除

mkdir: 指定した名前のディレクトリを作成します。

 -相対パスで指定するとき(カレントディレクトリが/root) 

mkdir -p file12/file13

  -絶対パスで指定するとき 

mkdir -p root/file14/file15
touch -ファイルがない場合空のファイルを作成します。
touch example

ファイルのタイムスタンプ(最終アクセス日時、最終変更日、最終ステータス変更日時)を変更します

touch -d "22 April 2015 21:00am" file1.txt  

rmdir: ディレクトリを削除 

※中身が空でないと実行できないので注意です。

続きを読む

LAMP環境でオリジナルブログ(このサイト)を作成して学んだこと1(概要)

0:なぜ作成したのか?

  1. Linux標準教科書で学んだことを応用して実際にオリジナルブログを作成することで、アウトプットできて学習の効率を上げることができるからです。
  2. ブログで、他の学習のアウトプットができる。
  3. Linuxコマンドに慣れるため

1:LAMP環境とは?(バージョンは実際に使用したバージョンです)

  • L: Linux  ・・・OS(CentOS7)
  • A: Apache ・・・Webサーバ (Apache 2.4)
  • M: MySQL ・・・データベース (MySQL 5.7)
  • P: PHP     ・・・プログラミング言語 (PHP 7)
  • +Wordpress・・・ブログソフトウェア 上記のL A M Pをあわせたもの

Linuxとは?

  • サーバー、PC、スーパーコンピューター、 組み込み機器(携帯電話・テレビ)などに幅広く使われています。
  • Web業界ではサーバー OS の第一選択肢

Apacheとは?

  • 世界中で使用されているWebサーバーソフトウェア(HTTPサーバー)。サーバーを構築するにはWebサーバーソフトウェアが必要となります。
  • 他にも様々なWebサーバーソフトウェアがあります。

MySQLとは?

  • データベース管理システムでリレーショナルデータベース(RDBMS)に属しています。
  • リレーショナルデータベース(RDBMS)とは、データを、複数の行と列で構成された「表(テーブル)」の形式で取り扱います。
  • MariaDB・PostgreSQLなど他にもいろいろな種類があります。

続きを読む

免責事項・著作権

免責事項

当ブログからのリンクやバナーなどで移動したサイトで提供される情報、サービス等について一切の責任を負いません。

また当ブログのコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

著作権について

当ブログで掲載している文章や画像などにつきましては、無断転載することを禁止します。

当ブログは著作権や肖像権の侵害を目的としたものではありません。著作権や肖像権に関して問題がございましたら、お問い合わせフォームよりご連絡ください。迅速に対応いたします。

標準入力(レベルアップ問題)

問題6 n回文字列表示して改行区切りする

期待する出力
n 回 suzutuki と改行区切りで出力してください。

suzutuki
...
suzutuki
入力例1
2
出力例1
suzutuki
suzutuki

 

解答どちらでもOK

e = gets.to_i
puts "suzutuki\n" * e
n = gets.to_i

n.times { puts 'suzutuki' }

問題5 最初のnを省く

整数 n と n 個の整数 a_1, …, a_n が改行区切りで与えられるので、
a_1, …, a_n を与えられた順に、改行区切りで出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n
a_1
...
a_n

1 行目には整数 n が与えられ、2 行目から (n+1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。入力値最終行の末尾に改行が1つ入ります。文字列は標準入力から渡されます

期待する出力
a_1, …, a_n を入力された順に改行区切りで出力してください。

a_1
...
a_n

入力例1

2
1
2
出力例1
1
2

解答1 popで最初を省く

e = readlines.map(&:to_i)
c = e.length
puts e.pop(c-1)

解答2 繰り返し処理でやる

n = gets.to_i
n.times do
  a = gets.to_i
  puts a
end
  • 繰り返します。
  • n.times doend の間に今回は a = gets.to_i を書きます。これにより n 行の入力を受け取ることになります。
  • 文字列として a を出力しても正解になりますが、整数として入力されるので、to_i メソッドを使って変換を行っています。

問題6  a_1, …, a_n で最大値を表示.max

n
a_1
...
a_n

1 行目には整数 n が与えられ、 2 行目から (n + 1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。

期待する出力
a_1, …, a_n の中で最も大きい数を出力してください。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
入力例1
2
4
7
出力例1
7

解答

n = readlines.map(&:to_i)
puts n.max

別解

n = gets.to_i
arr = Array.new(n)
n.times { |i| arr[i] = gets.to_i }
puts arr.max
  • Ruby では arr = Array.new(n) と書くことで長さ n の配列 arr を用意することができます。
  • ブロックの冒頭に |i| と書くと、「いま何回目のループか」が i に順々に代入されます。初回は 0 回目なので注意して下さい。
  • arr のインデックス i の要素に値 x を代入するには arr[i] = x のように書きます。
  • 今回は入力値を整数に変換して代入したいので a[i] = gets.to_i と書きます。
  • 配列内の最大値は arr.max() のように書くと取得することができます。

 

入力される値
入力は以下のフォーマットで与えられます。

n

1行目に整数nが与えられます。

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
suzutuki と n 回、半角スペース区切りで出力してください。最後の suzutuki の後には半角スペースは入れず、改行を入れ、余計な文字、空行を含んではいけません。

suzutuki suzutuki ... suzutuki

条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ n ≦ 50

入力例1

2

出力例1

suzutuki suzutuki

入力例2

3

出力例2

suzutuki suzutuki suzutuki

解答

最後の半角スペースを取り除くには.chopを使う

e = gets.to_i
f = "suzutuki " * e
puts f.chop

別解

n = gets.to_i
ans = 'suzutuki'
(n - 1).times { ans += ' suzutuki' }

puts ans
  • 方針の通り実装しています。
  • まず ans = 'suzutuki' で ans を初期値 'suzutuki' で用意します。
  • その後、ans += ' suzutuki' を n-1 回繰り返す繰り返し処理を書けばよいです。
  • 上記から分かるように Ruby では文字列の連結を + 演算子を使って行うことができます。

解答例 2

n = gets.to_i
arr = Array.new(n)
n.times { |i| arr[i] = 'suzutuki' }

puts arr.join(' ')
  • Array クラスの join メソッドを使う方法です。
  • join メソッドは arr.join(' ') のように使います。この場合の返り値は arr の要素間に ' ' を挟んだ文字列です。

問題

整数 n が与えられ、その後に n 個の整数 a_1, …, a_n が半角スペース区切りで与えられるので、a_1, …, a_n をそのままの順番で改行区切りで出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n
a_1 a_2 ... a_n

1 行目には整数 n が与えられ、2 行目には半角スペース区切りの n 個の数 a_1, …, a_n が 1 行で与えられます。

期待する出力
a_1, …, a_n をそのままの順番で改行区切りで出力してください。

a_1
...
a_n
入力例1
2
1 5
出力例1
1
5
入力例2
3
4 30 12
出力例2
4
30
12

解答

#"4 30 12"
gets
#pの場合p gets.split.map(&:to_i)数値にちゃんとする
puts gets.split

別解

n = gets.to_i

a = gets.split(' ').map(&:to_i)
a.each { |num| puts num }

  • gets.split(' ').map(&:to_i) とすることで 1 行の入力を半角スペースで区切り、すべての要素を整数に変換して配列で受け取ることができます。
  • 配列.each do |変数| のように書くと 配列 の各要素が 変数 に代入され、繰り返し処理が行われます。

解答例 2

n = gets.to_i

a = gets.split(' ').map(&:to_i)
puts a
  • puts 配列 のように書くと 配列 の各要素を改行区切りで出力することができます。

問題

10
813
100

と入力されるので、↓のように出力してください。

10-813-100

解答

a = gets.chomp
b = gets.chomp
c = gets.chomp
puts a + "-" + b + "-" + c

別解

line = readlines.map(&:to_s)
puts line[0].chomp + "-" + line[1].chomp + "-" + line[2]

別解2

line = readlines.map(&:chomp)
puts line[0] + "-" + line[1] + "-" + line[2]

別解3 これが一番良い(joinで任意の文字を足してつなげる)

line = readlines.map(&:chomp)
puts line.join('-')