「Webサーバー」を含む日記 RSS

はてなキーワード: Webサーバーとは

2019-04-16

サイト作りたい

・ついったに投稿した落書きアーカイブ的なノリでギャラリーサイト作りたい

タグとかでジャンルごとに分けれるとよい

・できればタダなやつがよい

Tumblrは極力使いたくない(システムが嫌い&テーマいじりがしんどすぎる)

pixivとかニコ静もちょっと違う(自分サイト感が無い。自分サイトじゃないからだけど)

別の案件Webサーバー借りてるからWordpress使って作りゃいい話なんだけど、なんかもっと気軽な感じにできないもの

2019-03-29

サーバーツール系を置く場所ってどこにしてる?

Webサーバーだったら、/var/wwwとかありますよね。

Web機能の無い、社内ボット用とか通知用のサーバーで1台遊び用で作ろうかと。

/var/tools とか /opt/tools とかどこに置こうか迷い中。

もちろんサーバーレスも考えたけど、ガンガン増えても管理がめんどくさいなと。

皆さんどこにおいてます

2019-01-27

anond:20190127113237

Webサーバーの用意は変わったことをやるのでなければ、ほぼテンプレート化されてるので、手順で悩む余地は少ないでしょうか?

コピペだけでもできちゃうけど、作業内容や設定の意味理解するには、LinuxTCP/IP知識必要になりますね。

 

時間の都合ですぐに勉強できない場合インフラの用意はお金解決できます

「FaaS」「サーバーレス」とかで検索AmazonLambdaGoogleのFirebaseとか、自分の使いたい機能最初から用意された状態サーバーレンタルできます

https://knowledge.sakura.ad.jp/15940/

https://aws.amazon.com/jp/lambda/

https://firebase.google.com/?hl=ja

でも、どっちみち、ローカルテストサーバーを用意するなら、1回は自分サーバーを作ることになっちゃうので、そのときにやり方は分かるようになるはず!?

2018-12-18

[][][] phpMyAdminの手動インストール

WebサーバーPHPを5.4から7.2に上げました。

phpMyAdminも入れ替えました。

 

環境CentOSNginxPHP7.2 + MySQL

yumコマンドphpMyAdminをインストールしたら、エラーメッセージが出て、インストールできませんでした。

リポジトリで用意されているパッケージが古いのか?何度かやり直しても、yumインストールできませんでした。

 

手抜きを諦めて、手動でインストールすることにしました。

phpMyAdmin インストール コンパイル Nginx」等のキーワードGoogle検索すると、やり方を解説している記事がたくさんヒットしました。

参考

 

手順

  1. WebサーバーSSHリモートログインする。
  2. phpMyAdminの最新版wgetダウンロードする。
  3. ZIPファイルを展開して、フォルダ名を「phpmyadmin」にリネームする。
  4. /usr/share/phpmyadmin にコピーする。
  5. phpMyAdmin用に、Nginx設定ファイルを追加する。
  6. PHP7のセッションフォルダ確認しておく。
    1. PHP関係設定ファイルphp.ini」や、PHP-FPM設定ファイルwww.conf」の中を確認しておく。
    2. session.save_path = "/var/lib/php/session" という記述有効にする。(コメントアウトされていたら、アンコメントしておく)
  7. Nginx設定ファイルテストして、問題なければ再起動する。
    1. $ service nginx configtest
    2. $ service nginx restart
  8. WebブラウザーでphpMyAdminにアクセスしてみる。
  9. phpMyAdminが無事に開いたら、インストール成功!!!

 

まとめ

phpMyAdminは手動でインストールしても、すごく簡単でした。

将来的にバージョンアップすることも考えると、「/usr/share/phpmyadmin」へ直にコピーするのではなく、他の場所コピーして、「/usr/share/phpmyadmin」はシンボリックリンクにしておけばいいかも。

(今回は面倒なので直接コピーしました。)

(PHP) PHPのsession設定を修正しました。

WebサーバーPHPバージョン5.4から7.2に上げたら、PukiWiki1.5.1が正常に動作しなくなりましたが、先ほど問題解決しました。

 

昨夜の調査で、PHPセッション周りにエラーがあることが分かりました。

続きを調べてみると、

/var/lib/php/session

というディレクトリの設定が不適切で、PHPプロセスから書き込みができない状態になっていました。

 

原因は、PHP-FPMインストールした後の設定作業が抜けていたこ

PHPバージョンを上げるときに、PHP-FPMも再インストールしていました。

「/var/lib/php/session」を使う作業ユーザーデフォルトでは「apache」になっているようです。(前の設定を見てないのが不確か)

とりあえず、これを「apacheからnginx」に変更したら、PHPセッションが正常に動作するようになりました。

 

Google検索解決のヒントになる情報がいろいろ得られたので、あまり苦労せずに解決できました。

いつも有益情報提供してくださる皆様にこの場を借りて感謝申し上げます

どうもありがとうございました。

(PHP)まずは公式ドキュメントを読んでみる

PukiWikiバージョンアップに伴う変更点を確認してみる。

https://pukiwiki.osdn.jp/?PukiWiki/Download/1.5.1#ifdf9221

ユーザー管理機能および認証方法拡張

Sessionを利用したForm認証が追加され、デフォルトとなりました。

グループを利用してページのアクセス制御を行う機能が追加されました。

外部認証機能が追加されました。

Single Sign Onシステムとの統合可能になりました。

一部の機能には、対応しているPHPバージョン制限があります。詳しくは、PukiWiki/Authentication をご覧ください。

編集ページにログインできなくなった現象は、この辺りの変更点に関係がありそうだ。

PukiWiki認証方法についても、参照せよという案内があった。それにも目を通して、手掛かりを探そう。

 

ユーザー認証

https://pukiwiki.osdn.jp/?PukiWiki/Authentication

デフォルトではPHP Sessionを利用し、PHP5.1以降で動作させる必要がありますPHP5.0以前の環境動作させる必要がある場合Basic認証を利用してください。

PukiWiki1.5.1では、PHPの生のセッション機能を使っている、とのこと。

PHPバージョンアップに伴い、セッション関係で何か不具合が出ていないか?→WebサーバーPHPの設定内容やエラーログも見てみる必要がありそうだな。

[] PukiWiki 1.5.1でログインできない

WebサーバーPHPを5.4から7.2にアップデートした。

PukiWikiも最新の1.5.1に変更した。

https://pukiwiki.osdn.jp/?PukiWiki/Download/1.5.1

 

ページの編集にはパスワードをかけて、ログインするようにしてある。

PHPPukiWikiを同時にアップデートしたら、編集画面にログインできなくなった。

 

原因を調べて、修正してみよう。

さて、どこから手を付けるべきか?

2018-12-16

[] PHPバージョンアップ

WebサーバーPHPバージョン5.4から7.2にアップデート

いろいろ修正必要な箇所がある。

それでも新しい方が、いろいろメリットがあるね。(動作高速化とか)

頑張って修正しよう。

2018-12-11

Let's Encryptの使い方を練習

Let's EncryptのSSL証明書は90日で失効するので、頻繁に更新するらしい。

いろんな解説記事を参考にすると、更新するときNginxを停止させて再起動する方法と、無停止でやる方法が紹介されている。

 

ややこしくて混乱する。

できればNginxを無停止でSSL証明書更新する方法にしたい。

Nginx プラグインの使い方(オプション指定など)もよく分からない。

からないことだらけなので、根気よく公式サイトを読み直してみよう。

 

は~~、頭が悪いと複雑な仕組みを理解するのに時間がかかるねw

(要領がいい人達は、マニュアルを見たらすぐに理解できるのかな?)

anond:20181210203744

Let's EncryptのツールPythonを使う。

Pythonバージョン2.7以上が推奨。(2.6でも動くけどアラートが出るので、ウザければ2.7以上に上げた方が良いとのこと)

https://letsencrypt.jp/usage/

不具合2 : 「Python 2.6 support is very experimental at present」

WebサーバーPythonが2.6だったので、一応2.7の最新版に入れ替えておこう。

 

しかしたら、Python3に上げた方がいいのだろうか?

2018-12-10

anond:20181210172334

Let's Encryptの仕組みの説明を読んだけど、ちょっとすぐに理解できなかった。とても複雑なことをやってるんですね?

https://letsencrypt.jp/technology/

 

この一連の作業自動でやってくれるエージェントソフトは便利だね。

Webサーバー証明方法チャレンジ)は、「公知の URI に、認証用のファイルを設置する」にしてみよう。

[] Let's EncryptでSSLの仕組みをお勉強

WebサーバーSSL化したい。

とりあえず無料SSLサービス「Let's Encrypt」を使ってみる。

説明を読んでSSLの仕組みを理解したい。

[]2018年12月9日日曜日増田

時間記事文字数文字数平均文字数中央値
0012617429138.339
018715637179.755
02464886106.273.5
03347349216.156
04224164189.349
05173537208.165
06121789149.145
0744333975.933
08597214122.339
09535642106.541
10767994105.239.5
1177672587.334
1287735584.560
13616923113.538
145912106205.239
156223605380.742.5
1669502472.826
171511209080.135
18130847965.237.5
199910441105.539
20788176104.836.5
2195610064.231
2214216071113.237
2320221729107.634
1日1888223804118.538

頻出名詞 ()内の数字単語が含まれ記事

人(165), 自分(157), 今(98), 増田(82), 話(70), あと(59), 必要(58), 好き(55), 感じ(53), 人間(53), 前(51), 仕事(50), 日本(48), 意味(45), 関係(43), 男(42), 女(41), 時間(41), 気(40), ー(38), 普通(38), 相手(38), 子供(38), 今日(37), 問題(37), ネット(36), 絶対(36), 言葉(35), 他(34), 場合(33), 女性(33), 理解(33), 最初(33), 金(33), 嫌(32), 最近(32), 社会(31), 頭(30), 結果(30), 親(30), 理由(30), 目(29), 結婚(28), 全部(28), しよう(28), 無理(27), ダメ(26), 逆(25), たくさん(25), 別(25), 昔(25), 状態(24), じゃなくて(24), 世界(24), お金(24), 気持ち(24), 一番(24), 他人(24), 本人(23), しない(23), 嫌い(23), アニメ(23), 生活(22), 評価(22), ゲーム(22), 男性(22), 時代(22), 存在(21), 体(21), 大事(21), 状況(20), 作品(20), 方法(20), 情報(19), 一人(19), バイト(19), 興味(19), 会社(19), 誰か(19), 努力(19), では(19), 全て(19), レベル(19), クズ(18), 説明(18), 大変(18), 周り(18), 本(18), 人生(18), 全員(18), 家(18), 社員(18), 絵(18), おっさん(18), バカ(18), 結局(18), 文化(18), 映画(17), 経験(17), 自由(17), 塾(17), 勝手(17), 正直(17), オタク(17), 内容(17), 名前(17), 価値(17), 手(17), 病気(17), 朝(17)

頻出固有名詞 ()内の数字単語が含まれ記事

増田(82), 日本(48), じゃなくて(24), 可能性(16), 元増田(13), いない(13), トラバ(12), 多様性(11), キモ(11), スマホ(11), 価値観(10), 自由意志(10), なんの(10), ブログ(10), フランス(10), 東京(10), 2018年(10), ワイ(9), SNS(9), わからん(9), …。(9), なんだろう(9), ネオリベ(9), ブクマ(8), 過労死(8), 基本的(8), アメリカ(8), マウンティング(8), ツイッター(8), なのか(8), 10年(8), 牛丼(8), 普通に(8), イヤホン(8), A(7), 自己肯定感(7), マジで(7), ガチ(7), 自動運転(7), アプリ(7), キチガイ(7), -2(7), a(6), 笑(6), 積極的(6), s(6), いいんじゃない(6), localhost(6), 何度(6), hatena(6), ダイバーシティ(6), 発達障害(6), 涙(6), 個人的(6), OK(6), Ubuntu(6), プレイ(6), イケメン(6), フェミ(5), 1年(5), である(5), とはいえ(5), AI(5), 自己責任(5), ディストピア(5), 自分自身(5), tbsradio(5), 分からん(5), 2017年(5), 書き起こし(5), 2回(5), 若い人(5), 大阪(5), goo.gl(5), ブコメ(5), twitter(5), 関係者(5), 栄光ゼミナール(5), 30分(5), 過去最低(5), 一日(5), paypay(5), Session(5), ウザ(5), マクロン(5), ありません(5), 81%(5), 保護者(5), はてなー(5), 永田(5), ドイツ(5), 1回(5), E3(5), 中国(5), .s(5), 荻上(5), はてブ(4), 至上主義(4), 被害者(4), 学生時代(4), いいね(4), 娘(4), 大企業(4), 人権侵害(4), items(4), AB(4), 自分たち(4), 風俗嬢(4), あいつら(4), KKO(4), 毎日(4), aXvn(4), Windows(4), サイコパス(4), ASD(4), 低能先生(4), にも(4), 関東(4), 人間関係(4), ヒトラー(4), 何回(4), 韓国(4), X(4), いいじゃない(4), qiita(4), 名古屋(4), 2ch(4), 1日(4), アラサー(4), Chrome(4), E(4), 一般的(4), 上の(4), かもしれん(4), 経済的(4), オチ(4), まとめサイト(4), AA(4), あるかな(4), B(4), ゲートウェイ(4), 自己満足(4), 影響力(4), コスパ(4), ラノベ(4), 2時間(4), 上場企業(4)

本日の注目単語 ()内の数字単語が含まれ記事

過去最低(5), 永田(5), 栄光ゼミナール(5), 紅生姜(4), マクロン(5), のこぎり(4), 荻上(5), 絵の具(3), 望(3), 白地(3), パイパイ(3), 自由意志(10), 暴動(8), 塾(17), 過労死(8), 牛丼(8), イノベーション(6), イヤホン(8), 皿(11), ケア(6), ネオリベ(9), 整形(9), 教室(9), 自己肯定感(7), 日曜(6), アクセス(12), そうした(9), 多様性(11), 介護(10), 遠い(8), マウンティング(8), 調査(10), 初期(8), 勤務(10), デート(11), バイト(19), ごめんなさい(8)

頻出トラックバック先(簡易)

過労死を出した栄光ゼミナールがどうなっちゃってんのか書いておく /20181208225303(20), ■ /20181208233617(19), ■ /20181209144856(14), ■『帰ってきたヒトラー』みたいな映画日本で撮るなら /20181208220445(12), ■チャリに乗ってイヤホンは本当に悪いのか? /20181208120626(10), ■結婚を考えてる相手が姓を捨てたくないと言ってきたら /20181208131726(9), ■増田ってひねくれた略称だよね /20181209110804(7), ■整形ってなんで忌み嫌う対象なんだろう? /20181209164235(7), ■「死にたい」にかける言葉 /20181209013103(7), ■尿道がズキズキする /20181209001114(6), ■カップヌードルに水を入れてしまった時の絶望感 /20181208175842(6), ■母はどうにも察しが悪い /20181209120616(5), ■プログラミング勉強ってどうやんの /20181209183335(5), ■漫画原作だけどアニメの方が面白い作品 /20181209000244(5), ■婦人系の病気をどこまで男性上司に伝えるべきか /20181209002118(5), ■窃盗症と自由意志に関する疑問 誰か教えて /20181209233033(4), ■アニメが嫌いなのは声優の演技がうざいから /20181209125120(4), ■石橋容疑者ダイバーシティ /20181208164423(4), ■[勉強] UbuntuWebサーバー構築を断念 /20181209225349(4), ■欧米人ヒトラーを憎んでいる理由がわからない /20181209013347(4), ■乳首の皮膚がボロボロ取れるんだが /20181209234607(4), ■作品タイトルの付け方が分からん /20181209012700(4), ■Wi-Fiはタダで使えると思っている奴多すぎ問題 /20181206214612(4), ■ズブズブの関係 /20181209215113(4), ■もうすぐ大学受験を控えてるんだけど /20181209192410(4), ■やりたいことが出てこない /20181209001258(4), ■犬猫は飯食っただけで褒められる /20181208203002(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5863519(3931)

2018-12-09

[] UbuntuWebサーバー構築を断念

練習Windows10上に仮想化したUbuntuインストールした。(VirtualBoxVagrant

 

Nginxの設定に失敗?

UbuntuaptNginxを入れて、WindowsChromeからlocalhost」「localhost:8000」にアクセスしても初期ページが表示されない。

Google検索したけど、すぐに解決方法が見つからなかったので、面倒だからやめた。

 

UbuntuよりもCentOSの方がWebサーバー構築は簡単

これでは時間ばかりかかって、効率的勉強を進めることができない。

WebサーバーCentOSの方が簡単かも?

 

Node.js

また後で調べてやり直してみよう。

とりあえず今は先に進めて、Node.jsの使い方を確認してみよう。

 

追記 23:42

アドバイスどうもありがとうございました。

Nginxの設定を変更したら、ChromeWebページを表示できるようになりました。m(__)m

2018-12-02

RubyでWebサーバーを立てる練習

Webプログラミング面白いほどわかる本 https://www.amazon.co.jp/dp/4046023023/

p.137 第2章

あなたのいいところ診断」アプリを動かすところまで出来た!

https://github.com/progedu/assessment-for-download

通信するボットの開発は面倒くさいので、とりあえず読むだけで通過。

2018-11-10

増田プログラマー養成講座 その19 SQLデータ更新

前回は、Webアプリの骨組み(スケルトン)に、SQLデータの追加と取得をやりました。

今回は、SQLデータ更新をやりましょう。

 

メッセージ更新

 

編集ページにジャンプするリンク

前回作ったメッセージ一覧に、[編集]のリンクも入れておいた。

<td><a href="welcome/update/<?php echo $item['id']; ?>">編集</a></td>

という1行の部分。

[編集]をクリックすると、編集用ページにジャンプする。

ブラウザーHTMLソースを見ると、以下のようなHTMLになってるはず。

<td><a href="welcome/update/2">編集</a></td>

これは「メッセージID番号が2」を対象にして、編集ページにジャンプすることを意味する。

 

Controllerの改造

編集用ページのコントローラーを作ろう。

「http://localhost/waf/welcome/update/2」というURL編集ページにアクセスしたら、メッセージID番号の「2」を受け取れるようにしたい。

URL文字列を処理して「2」を取り出せるようにしよう。

 

// 更新画面

public function update($id = '')

{

 echo "ID=".$id;

 $this->load->view('chat_update');

}

 

CodeIgniterでは、URLから文字列を取り出す方法がいくつか用意されている。

  1. 「update($id = '')」のようにメソッド引数「$id」を用意すれば、「2」の部分を取り出せる。
  2. 引数を使う以外の方法も用意されていて、「$id = $this->uri->segment(3);」のように書けば、「2」の部分を取り出せる。

// 更新画面

public function update()

{

 $id = $this->uri->segment(3);

 echo "<hr> ID=".$id;

 $this->load->view('chat_update');

}

 

Controllerの改造の解説

CodeIgniterで、URL文字列から特定部分の文字列を取り出す方法を見ておこう。

 

例えば、「http://localhost/waf/welcome/update/aaa/bbb/ccc」というURLアクセスしたときCodeIgniterではURL中の「aaa」「bbb」「ccc」という部分は、以下のようにして取り出せる。

$seg1 = $this->uri->segment(1); // → 1番目のURL文字列:「welcome」=コントローラークラス

$seg2 = $this->uri->segment(2); // → 2番目のURL文字列:「update」=クラスの中のメソッド

$seg3 = $this->uri->segment(3); // → 3番目のURL文字列:「aaa」の部分

$seg4 = $this->uri->segment(4); // → 4番目のURL文字列:「bbb」の部分

$seg5 = $this->uri->segment(5); // → 5番目のURL文字列:「ccc」の部分

URLを「/」で区切って、base_url(http://localhost/waf/)の次から順番に、1番目のURL文字列、2番目のURL文字列、3番目のURL文字列、…とsegment()メソッドで順番を指定すれば取得できる。

 

Modelの改造

データベースでメッセージID指定して、メッセージを取り出す機能を用意しよう。

 

ファイルに以下のメソッドを追加する。

// Read by Id

public function read_message_by_id($id = 0)

{

 $sql = "SELECT * FROM talk WHERE id = ?";

 $param = array($id);

 $query = $this->db->query($sql, $param);

 return $query->row_array();

}

 

Modelの改造の解説

SQLの「WHERE」句で、絞り込む条件を指定できる。

 

SELECT * FROM talk WHERE id = ?

「WHERE id = 2」とすれば、メッセージID番号が2のメッセージデータが「talkテーブルから取り出せる。

もし該当するデータがなければ、返されるデータは空になる。(データが返ってこない。)

 

CodeIgniterの「row_array()」は、1件分のデータ配列の形にして返すメソッドだ。

 

Viewの改造

ファイルの内容を以下のように編集する。

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form action="welcome/update" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <?php if (isset($talk)): ?>

   <input type="text" name="message" value="<?php echo $talk['message']; ?>">

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="update">

   <?php else: ?>

   <p>※該当するメッセージがありません。</p>

   <?php endif;?>

   <button>更新する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewの改造の解説

データベースから取り出した1件分のメッセージを表示する部分を追加した。

<input type="text" name="message" value="<?php echo $talk['message']; ?>">

の「<?php echo $talk['message']; ?>」という部分だ。

これで変更したいメッセージの本文を表示できる。

 

あと、編集したメッセージWebサーバーに送信できるように、Formタグ送信ボタン(「更新する」の部分)も追加した。

このときメッセージID番号も送信できるように、

<input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

という1行も仕込んである

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 更新画面

public function update($id = '')

{

 $id = $id ? $id : $this->input->post('id'); // id -> segment or post

 $action = $this->input->post('action');

 if ($action == 'update') {

  $message = $this->input->post('message');

  $this->chat_model->update_message($id, $message);

 }

 $data['talk'] = $this->chat_model->read_message_by_id($id);

 $this->load->view('chat_update', $data);

}

 

Controllerの改造の解説

メッセージID番号を指定して、データベースから取り出し、Viewに渡すデータを用意している。

$data['talk'] = $this->chat_model->read_message_by_id($id);

 

ユーザーメッセージ編集をしてWebサーバーに送信したら、データ更新する指示を出す部分も追加した。

$action = $this->input->post('action');

if ($action == 'update') {

 $message = $this->input->post('message');

 $this->chat_model->update_message($id, $message);

}

モデルにupdate_message()メソッドを用意して、$idと$messageを渡せば、該当データ更新するようにしたい。

次は、モデルでupdate_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// Update

public function update_message($id = 0, $message = '')

{

 $sql = "UPDATE talk SET message = ? WHERE id = ?";

 $param = array($message, $id);

 $this->db->query($sql, $param);

 return $this->db->affected_rows();

}

 

Modelの改造の解説

SQLの「UPDATE」を使えば、指定したレコード(1件分のデータ)を更新できる。

「UPDATE talk SET message = ? WHERE id = ?」で、talkテーブルmessageid指定して更新している。

 

CodeIgniterの「affected_rows()」メソッドは、更新した行数を返す。=成功なら1行、失敗なら0行となる。

 

補足

コントローラーの「$id = $id ? $id : $this->input->post('id');」という行は、$idの受け取り方が2パターンあるので、それに対応している。

編集ページの表示で、1回目の表示と、2回目以降の表示で、$idの受け渡し方が変わっている。

  • 1回目:URLに埋め込まれID番号をupdate($id = '')の引数$idで受け取っている。($this->uri->segment(3)で受け取るのと同じ)
  • 2回目以降:Formタグで送られてきた$idを$this->input->post('id')で受け取っている。

URLに埋め込む方法上記の1回目のような方法)は、ユーザー勝手に値をいじれるので、基本的には使わない方が良い。

 

まとめ

以上で、SQLの「UPDATE」を使った、データ更新ができた。

長々と説明したが、今回の大事な点は、SQLの「UPDATE」の使い方だ。

CodeIgniterの使い方や、Webサイトの作り方(FormタグなどのHTML知識)は、オマケ程度に見ておいて欲しい。

 

次回は、データを削除するSQLDELETE」の使い方を見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新 ←★今ここ★

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-11-01

増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本」の続きです。

 

index.php編集

Webサーバーの時間設定がズレていると、メッセージ作成したときに、作成日時もズレてしまます

(=12時に投稿したメッセージが、3時に投稿したことになってしまう、等。)

時間がズレてた場合は、Webサーバーの時刻を一時的に変更する処理を追加しておきましょう。

 

index.phpファイルの先頭に以下の内容を追加します。

上記フォルダの中の「index.phpファイルを開いて、先頭付近(2行目辺り)に以下の内容を追加します。

<?php

date_default_timezone_set('Asia/Tokyo'); // 2行目あたりに追加

 

動作確認

以上で、簡易チャットWebアプリが設置できました。

ブラウザーアクセスして、動作確認してみましょう。

 

 

以上で、データベースを利用したWebアプリが用意できました。

コピー作成しただけでは、プログラム意味が分からないと思うので、次回以降プログラムの部分を解説してみます

次回は、

を見ていきましょう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き) ←★今ここ★

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

増田プログラマー養成講座 その15 Webアプリの完成見本

前回は、Webアプリモックアップ(ハリボテ)を作るところまでやりました。

今回は、Webアプリ機能実装してみましょう!

 

学習の狙い

データベースを使ったWebアプリを作って、データベースの基本操作CRUDの4つ)を練習してみよう!

CRUD
  1. Create 追加
  2. Read  取得
  3. Update 更新
  4. Delete 削除

 

説明の順番について

どういう順番で説明したら分かりやすいか検討してみた。

  1. まず先に、Webアプリの完成見本を提示します。
  2. 続いて、作る過程説明しながら、各プログラム意味説明してみます

 

作業の流れ

ざっくりと、以下のような流れで作っていきます

  1. XAMPPを起動する。(参考 anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備)
  2. CodeIgniterインストールする。(参考 anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう)
  3. phpMyAdminでデータベース操作する。(参考 anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう)
  4. ApacheWebサーバーソフト)の設定を変更する。(今回説明
  5. Visual Studio Code等のツールプログラムを書く。(次回説明
  6. ブラウザー動作確認する。

 

XAMPPを起動させる

(参考 anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備)

講座その6を参考にして、XAMPPを起動させて、ApacheMySQLスタートして下さい。

 

CodeIgniterインストールする。

(参考 anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう)

講座その9を参考にして、XAMPPの中にCodeIgniterインストールしておきます

 

phpMyAdminでデータベース操作する。

(参考 anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう)

講座その11を参考にして、MySQLWebアプリ用のデータベーステーブル作成しておきます

 

データベースの設定

講座その11で、データベース練習で「chat」というデータベースを作ってみました。

そのときmessage」というテーブル作りましたが、今回Webアプリで使うテーブルとして新たに「talk」というテーブル作成します。

(補足:前に作ったテーブルmessage」の中に、テーブル名と同じ「message」という名前カラム(列)を作ってました。これでも問題ないんだけど、プログラムを書くときテーブル名とカラム名を混同しないようにしたいので、念のため作り変えときましょう。)

 

talkテーブル新規作成する

SQLで「talk」というテーブルを作る場合、以下のようなSQL文になります

CREATE TABLE `talk` (

 `id` int(11) NOT NULL,

 `create_at` datetime NOT NULL,

 `update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

 `message` text NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

このSQL文をphpMyAdminで実行すれば「talkテーブルを作れます

  1. phpMyAdminを開く。
  2. データベース「chat」を開く。(前に作った「messageテーブルは使わないので削除してもOK
  3. phpMyAdmin画面の上部メニューの「SQL」をクリックする。
  4. データベース chat 上でクエリを実行する:」の空欄に上記SQL文をコピーして実行すれば、「talk」というテーブルができる。

 

これでデータベースの準備ができました。

 

Apacheの設定

CodeIgniterで使う「URL」の表示方法ちょっと変更しておきたいので、ApacheWebサーバーソフト)の設定を変更しておきます

(「URL」=情報がどこにあるのかを示すインターネット上の住所)

Apacheの「mod_rewrite」という仕組みによって、URLの扱い方を変更します。)

 

(例)

変更前: http://localhost/waf/index.php/welcome/

変更後: http://localhost/waf/welcome/

というように、URLの中にある「/index.php」という文字列を表示させない設定にします。

 

Apache設定ファイル.htaccess

Apacheの設定は「.htaccess」という名前設定ファイルを用意して変更します。

 

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]

 

.htaccess」の書き方を理解するには、「正規表現」という仕組みの知識必要です。

まだ「正規表現」を勉強してない段階では、とりあえずコピペして使って下さい。

 

Webアプリ完成見本

CodeIgniterで、

を行ないます

 

CodeIgniter設定ファイルconfig.php」の編集

config.php」をIDEやエディターで開いて、以下のように変更する。

$config['base_url'] = 'http://localhost/waf/';

$config['index_page'] = '';

 

最初は、

$config['index_page'] = 'index.php';

になってるけど、「index.php」を削除して、「''」(空)にしておく。

 

CodeIgniterデータベース設定ファイル「databese.php」の編集

「databese.php」をIDEやエディターで開いて、以下のように変更する。

$db['default'] = array(

 'dsn' => '',

 'hostname' => 'localhost',

 'username' => 'root',

 'password' => '',

 'database' => 'chat',

 'dbdriver' => 'mysqli',

(※上記のように、MySQLのusernamepasswordは「root」(管理者)のデフォルト設定を使ってます。)

 

Controllerの作成

上記フォルダの中に「Welcome.php」というファイルを作って、内容を以下のようにします。

<?php

defined('BASEPATH') or exit('No direct script access allowed');

 

class Welcome extends CI_Controller

{

 public function __construct()

 {

  parent::__construct();

  $this->load->model('chat_model');

  $this->load->helper('url');

  // $this->output->enable_profiler(true); // for debug

 }

 

 // 初期画面

 public function index()

 {

  $action = $this->input->post('action');

  if ($action == 'add') {

   $message = $this->input->post('message');

   $this->chat_model->create_message($message);

  }

  $data['talk'] = $this->chat_model->read_message();

  $this->load->view('welcome_index', $data);

 }

 

 // 更新画面

 public function update($id = '')

 {

  $id = $id ? $id : $this->input->post('id'); // id -> segment or post

  $action = $this->input->post('action');

  if ($action == 'update') {

   $message = $this->input->post('message');

   $this->chat_model->update_message($id, $message);

  }

  $data['talk'] = $this->chat_model->read_message_by_id($id);

  $this->load->view('chat_update', $data);

 }

 

 // 削除画面

 public function delete($id = '')

 {

  $id = $id ? $id : $this->input->post('id');

  $action = $this->input->post('action');

  if ($action == 'delete') {

   $this->chat_model->delete_message($id);

  }

  $data['talk'] = $this->chat_model->read_message_by_id($id);

  $this->load->view('chat_delete', $data);

 }

}

 

View作成

上記フォルダの中に「welcome_index.php」「chat_update.php」「chat_delete.php」という3つのファイルを作って、内容を以下のようにします。

 

Viewファイル「welcome_index.php」の中身

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>新規投稿</h2>

  <form action="welcome/index" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <input type="text" name="message">

   <input type="hidden" name="action" value="add">

   <button>投稿する</button>

  </form>

  <h2>投稿一覧</h2>

  <table border="1" cellpadding="5" cellspacing="0" bordercolor="#CCCCFF">

   <tr>

    <th>No.</th>

    <th>投稿日時</th>

    <th>メッセージ</th>

    <th>編集</th>

    <th>削除</th>

   </tr>

   <?php if(isset($talk)): ?>

   <?php foreach($talk as $item): ?>

   <tr>

    <td><?php echo $item['id']; ?></td>

    <td><?php echo $item['create_at']; ?></td>

    <td><?php echo $item['message']; ?></td>

    <td><a href="welcome/update/<?php echo $item['id']; ?>">編集</a></td>

    <td><a href="welcome/delete/<?php echo $item['id']; ?>">削除</a></td>

   </tr>

   <?php endforeach; ?>

   <?php endif; ?>

  </table>

 </body>

</html>

 

Viewファイル「chat_update.php」の中身

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form action="welcome/update" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <?php if (isset($talk)): ?>

   <input type="text" name="message" value="<?php echo $talk['message']; ?>">

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="update">

   <?php else: ?>

   <p>※該当するメッセージがありません。</p>

   <?php endif;?>

   <button>更新する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewファイル「chat_delete.php」の中身

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>削除</h2>

  <p>以下のメッセージを削除しますか?</p>

  <form action="welcome/delete" method="post" accept-charset="utf-8">

   <?php if (isset($talk)): ?>

   <p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="delete">

   <?php else: ?>

   <p>※該当するメッセージがありません。(または削除済です。)</p>

   <?php endif;?>

   <button>削除する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Model作成

上記フォルダの中に「Chat_model.php」というファイルを作って、内容を以下のようにします。

<?php

defined('BASEPATH') or exit('No direct script access allowed');

 

class Chat_model extends CI_Model

{

 public function __construct()

 {

  parent::__construct();

  $this->load->database();

 }

 

 // Create

 public function create_message($message = '')

 {

  $sql = "INSERT INTO talk SET create_at = ? , message = ?";

  $param = array(date('Y-m-d H:i:s'), $message);

  $this->db->query($sql, $param);

  return $this->db->insert_id();

 }

 

 // Read All

 public function read_message()

 {

  $sql = "SELECT * FROM talk";

  $query = $this->db->query($sql);

  return $query->result_array();

 }

 

 // Read by Id

 public function read_message_by_id($id = 0)

 {

  $sql = "SELECT * FROM talk WHERE id = ?";

  $param = array($id);

  $query = $this->db->query($sql, $param);

  return $query->row_array();

 }

 

 // Update

 public function update_message($id = 0, $message = '')

 {

  $sql = "UPDATE talk SET message = ? WHERE id = ?";

  $param = array($message, $id);

  $this->db->query($sql, $param);

  return $this->db->affected_rows();

 }

 

 // Delete

 public function delete_message($id = 0)

 {

  $sql = "DELETE FROM talk WHERE id = ?";

  $param = array($id);

  $this->db->query($sql, $param);

  return $this->db->affected_rows();

 }

}

 

この続きは、

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)」

へ続きます

2018-10-26

増田プログラマー養成講座 その12 データベース参考書

前回は、MySQLphpMyAdminを使って、リレーショナル・データベースRDB)を少し触ってみた。

今回は、RDBの使い方や仕組みについて理解を深めるための資料を探してみよう。

 

本は、買う価値のある本と、買わなくてもいい本の2種類があるね。

  • 買う価値のある本:何度も読み返す本。
  • 買う価値のない本:1度読んだら終わりの本。(図書館で借りる。図書館にない場合は買う。読み終えたら古本屋などに売却)

どちらの本かは自分判断で決めよう。(1度で理解できない本は、何度も読み返すことになるだろう。)

 

初めてRDBを使う人のためのガイダンス

本書は,新人エンジニアデータベース全般について勉強したいとき最初に読む本です。

データベースに関する知識を広く浅く網羅的に紹介してた。

最初に読めば、DB全体を俯瞰する地図を手に入れたようなもの。その後の見通しが良くなる。

 

入門書(初級レベル

本書はMySQLをはじめて触る方を対象として,開発環境の準備からSQL基本的な書き方,PHPによるWebシステム開発まで,図解でわかりやす解説します。

MySQL入門書カラフルな図解が分かりやすい。

まずは、データ操作の基本「CRUD」(Create=追加、Read=取得、Update=更新Delete=削除)を理解しよう。

CRUDが分かれば、DBを使ったWebアプリを作れる。→ここがIT土方の最低レベルだぜ!

 

豊富な図解とていねいな解説により、やさしく・楽しくデータベースSQL学習できる入門書です。

本書は、データベース操作する問合型言語SQL」の文法練習できる。

SQLが読める&書けるようになれば、RDBを使ったプログラミングで苦労しなくなる。

 

 

 

上記2冊の入門書程度の知識を身に付ければ、RDBに関しては初心者から脱却できるはずだ。

RDBを使うプログラムを作るなら、まずはこの程度の知識クリアしておけば、十分だろう。


次の段階では、既存DBを使うだけでなく、「ゼロからDB設計、構築してくれ」と頼まれるようになるはずだ。

時間があったら、DB設計スキルを身に付けておこう。

(以下の話は、今の段階では無視してもOKRDBにある程度慣れたら読んでみて!)

 

 

 

ミックさんのDB

データベースの本はいろいろあるけど、「ミック」という人が書いた本はRDBの要点がまとまってるので、なるべく早い段階で一通り目を通しておくことをお勧めする。(ミックさんの本は買って何度も読み返してる。)

 

DOAデータ中心アプローチ

RDB設計方法はいろいろあるが、古典的手法として「DOA」(データ中心アプローチ)がある。

なぜこの古臭いDOAが、今でも重要なのだろうか?

DOAと、他の「OOAObject Oriented Approach:オブジェクト指向アプローチ)」「POA(Process Oriented Approach:プロセス中心アプローチ)」を比較した図を見てみよう。

OOAは、言い方を変えれば、

[ユーザー] ←→ [プログラム] ←→ [DB]

という流れになっている。

まりユーザーから見ると、間にある[プログラム]は、[DB]を包んでいる「ラッパー」でしかない。

=[DB]のデータ構造スキーマ)さえシッカリしていれば、間にある[プログラム]は取り替えてもあまり困らない。

 

RDBを使うシステムなら、DB設計プログラム設計よりも重要になる。

(後で[プログラム]を変更するよりも[DB]を変更する方が影響は大きい)

から今日でもDOAは十分に役立つ手法だと思って理解して欲しい。

 

DOAは、ざっくりと3ステップでやる。

  1. 分析会社業務などを分析して、データCRUDが発生してる所を列挙する。
  2. 論理設計データ間の関係分析して、「ER図」を作る。
  3. 物理設計ER図を基にして、DB設計する。

慣れたらER図を書かなくても、頭の中で思い浮かべるだけでもテーブルを作れるようになる。

 

最初DOAを知っておけば、今後他の設計方法を使うときでも、比較検討基準として使えるので、損はないはずだ。

それでは、DB設計の本を見てみよう。

 

DB設計(中級レベル

初級者が押さえておくべきDB設計の基礎知識ポイント正規化非正規化のケーススタディテーブル設計のやってはいけないバッドノウハウ、注意すべきグレーノウハウなどを丁寧に解説します。

DB設計入門書。著者はミックさん。

DOA正規化階層構造木構造)のデータの扱い方など、DB設計の基本を網羅的に説明している。

 

現場で使えるアイデアが満載 デキるDBエンジニアになろう!

私が設計スキルを付けるために実際に行ってきた「身の回りのものを題材にERDを書く」という方法サンプルを今回は8種類書き下ろさせていただきました。

手前味噌ではありますが、本書をお読みいただき実践していただくことで「実務で具体的に手が動く」というレベルに達していただけると考えています

DB設計入門書

DOAの考え方、ER図の書き方などが説明されている。

 

RDB理論上級レベル

RDBSQLは「関係代数」という数学が、その基礎を支える理論になっている。

関係代数」などを解説

RDBを改造したり、自作したくなったら、RDB原理を知っておきたい。

この手のコンピューターサイエンスの本って、難しくてつまらない本が多いけど、この本は図解が多くて、珍しく分かりやすい本だったw

 

ネット

本の情報は、出版された瞬間から陳腐化が進む。

最新の情報は、ネット確認することができる。

 

公式サイトオンラインマニュアル

自分が使うデータベースマニュアルは最も基本的な1次情報になるので、不明点があったらまず確認するようにしたい。

など、公式サイトオンラインマニュアルをチェックしておこう。

 

ミックさんの解説記事

ミックさんは、ネットでもDB技術論の記事を公開されており、参考になるかも?

(↑無料Webサーバー「Yahooジオシティーズ」は2019年3月閉鎖予定なので、読むなら今のうち?)

 

階層構造になっているデータカテゴリー情報など)をRDBに保存するとき、主なやり方が3通り紹介されてた。(上記の本でも紹介されてる)

  1. SQLで木と階層構造データを扱う(1)――入れ子集合モデル
  2. SQLで木と階層構造データを扱う(2)――経路列挙モデル
  3. SQLで木と階層構造データを扱う(3)――入れ子区間モデル

自分は(2)の「経路列挙モデル」が分かりやすくて、いつも使ってる。

 

…という具合に、ネット上の公開記事にも参考になる情報がたくさんあるよ。

(ここまでの説明URLを9個張ってしまったので、もうこれ以上URLを張れない。><

他にもGoogle検索などで役立つ記事を探してみよう!(唐突な締めw)

 

NoSQL

データストア(データを保存する道具)は、RDB以外にもいろいろある。→「NoSQL」とか呼ばれている。(自分検索してみてw)

RedisHadoop、ElasticSearch、OpenStack…いろいろな道具が発明されてるね。

RDB以外のデータストアを使うときでも、RDBと相違点を比較しながら学べば、取っ掛かりが持てて、理解スムーズになるだろう。

RDBは、知っておいて損はない。使いまくって、体得しよう!

 

まとめ

RDBSQLパズルみたいなものから、楽しんで学んで欲しい。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書 ←★今ここ★

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-10-20

anond:20181020113904

Webサーバーなんて月500円で個人で使うには十分すぎるスペックと容量手に入るよ(月100万アクセス越えとかだと流石にきついが)

ドメインプランによっては10個までとか制限あるけどいっぱい紐付けられるよ

でもってここが大事なんだけどあんなとっさにポンってサイト作れる人は既に自分用のサーバーを借りてる。だから全部埋没費用

用途仕事だったり趣味だったりする

月額か買い切りかってだけで特に金額に大差ないと思うし感覚の違いじゃないかな。ペンタブペインソフトカメラもよくて5年で買い換えるでしょ

2018-10-17

増田プログラマー養成講座 その6 OOPの種類、PHPの準備

前回は、オブジェクト説明をした。

今回は、オブジェクトの使い方=オブジェクト指向プログラミングOOP)を学ぼう。

 

OOPの種類

オブジェクト指向プログラミングには、

  1. クラスベースJavaC++など)
  2. プロトタイプベースJavaScript、Ioなど)

などの分類があります

ここではクラスベースOOPを取り上げる。学習時間を短縮するために、Javaよりも簡単PHPOOPの基本を勉強してみよう。

 

PHPとは?

PHP (プログラミング言語) - Webページ作成のために用いられることの多い汎用プログラミング言語一種

PHPは誰でも手軽に使えるように工夫された、軽量なプログラム言語です。

 

PHPの準備

WindowsパソコンPHPを使うために、XAMPPというソフト無料)をインストールしよう。

 

XAMPPはいくつかバージョンがあるけど、ここではUSBメモリに保存できる「ポータブル」を使ってみよう。

↑このページにある「xampp-portable-win32-7.2.10-0-VC15.zip」をダウンロードして、ZIPファイルを展開します。

解凍して出てきた「xampp」をCドライブ直下コピーしてください。

これでPHPの実行環境XAMPP)の準備は完了です。

 

XAMPPの起動

Port(s)が「80,443」と表示されたら、XAMPP上のApacheWebサーバーソフト)が起動して、PHPが使える状態になってます

Apacheを止めるときは、「Stop」ボタンクリックします。)

 

PHPスクリプト作成

phpとは - はてなキーワード http://d.hatena.ne.jp/keyword/php

↓こんなかんじのサンプルコードがあるよね。

<?php

print("Hello, world!");

?>

プログラムソースコード増田に直接書くと、エスケープされて違う文字になるので、上の例では一部文字を置き換えてある。)

上記の表示の中で、全角文字の不等号「<」「>」を半角文字の不等号に置き換えて下さい。)

増田プログラムコード貼付けられないのか。不便だな!)

以上で、PHPプログラミングの準備と動作確認ができた。

 

PHPの基本文法

PHPの教材は、本やネット上の記事動画などたくさんある。自分で分かりやすものを探して読んでみよう。

ここではドットインストールPHP入門を参考にしてみよう。

 

3分程度の動画が30個=90分。最初は内容を理解できなくてもいいから、とりあえず全部一通り見てみよう。(1巡目は雰囲気だけつかめOK

 

「つまづきノート」の作成

2巡目以降は分からないことがあったらノート等にメモして、後で1つずつ解明していこう。

著者あとがき

 

私はGitを学ぶのに、実はとても苦労しました。それと同時に、「きっと同じように困っている人が他にもたくさんいるはずだ」と考えました。「理解するのに数日かかることを、短い時間でパパッと学べるコンテンツを作りたい」そう思いつき、「マンガでわかるGit 第1話」個人サイトにて公開したところ、いきなり、はてなブックマークで800ブックマークされました。

 

“つまづきポイント”を先回りするために

私は、Gitを使い始めて以降、わからないことがあったら「つまづいたこノート」に書いてきました。なお、本書の執筆にあたっても、日々勉強しながら解説を書くという形でした。わかばちゃんが「なんでこうなるの?」と疑問に思う部分は、私が過去につまづいた部分です。

 

ドットインストール PHP入門
(1) PHP利用の準備

 

(2) 構造プログラミングの基礎知識

 

(3) オブジェクト指向プログラミングの基礎知識

 

(4) その他、Webサイト作成一般的知識

 

(今回は、PHPの準備、PHPの基本文法理解までで終わってしまったorz

URLリンク10個以上貼ると、日記が書き込めないみたいなので、増田では記事を分割せざるを得ない。)

次回は、OOP関係している内容(#18~#24)を一緒に確認してみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備 ←★今ここ★

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-08-11

サマータイムの影響を調べてみた

会社でどんな影響がでるのか調べてみたので、メモしておきます

チャイム

40年ものの機材。始業と昼休みと終業を告げるチャイムを車内に鳴らす。放っておいても1か月に5分進む微妙な精度。サマータイムボタンはもちろん付いていないので、手動で調整する必要がある。

FAX

時計が入っていて、タイムスタンプが入るよね。あれはあまりいじったことないけど、サマータイム機能とかなさそう。海外展開していたら、ありそうだけど、日本仕様機能デチューンしてそう。

パソコン(windows10)

UTC時を基準に動いているので、対応可能現在日本ではサマータイムがないので、タイムゾーン東京大阪あたりを選ぶとサマータイム機能オフになるようになっている。正式サマータイムが決定して、windowsアップデート後にサマータイム機能が利用可能になる。

携帯電話

いわゆるガラケーガラパゴス携帯)は、一応、電波時計の調整がかかっているので、キャリア対応すれば、勝手に変わりそうな気がする。スマホOS自体対応してそう。アプリ開発者ごとに国際化対応を考えていたかどうかなんだろう。

会社玄関にある電波時計

電波の元が調整したら勝手に変わるのか。テストしたことなないだろうから、実際に発動させたら大変そう。

各部屋にあるかけ時計

サマータイムボタンはもちろん付いていないので、手動で調整する必要がある。

webサーバー上で現在時刻を取得するプログラム

これが厄介。開始時間バーコードを読み、さらに終了時間バーコードを読むようなプログラム場合、通常時間からサマータイムに変更されるタイミングにかかったときに正しい経過時間が記録されない恐れがある。多分、夜中に行うのであれば、いまのところ影響は回避できそう。24時間操業のところだと困りそう。サーバーは、そのまま放っておくというのも手のような気がした。記録を引きだす必要があるときに変換するとか、解釈するというのが現実解かも。

・予定表プログラム

同じ時間が2回くるタイミングと2時間飛ぶタイミングはどう表現しようか。深夜のことなので、寝ているだろうからスルーしていいのだろうか。切り替えタイミングとき例外処理をいれたほうが親切かな。現時点では同じ数え方で時間が経過することを前提に描画しているので、サマータイムによる時刻の変更は想定していない。実際にない制度のことを想定してコストをかけても誰もお金を払ってくれないよね。

24時間交代勤務シフト

サマータイム初日は、夜勤の後の朝の交代の人は2時間早くくるのか。サマータイムの終わりの日は、2時間残業しないと次の交代の人がこないのか。

サマータイムしない会社

サマータイムしませんという会社が現れたら、どうなるんだろう。取引上こまることはあるかな

また、思いついたら書きますではではー。

2018-07-18

anond:20180717173436

クローン病ではありませんが、もと潰瘍性大腸炎持ちです。21歳で発病し、当初はほぼ一日中トイレ行って横になっての繰り返し。トイレでは排泄するたびに激痛が走るし便器が血で真っ赤に染まるし結構つらかった思い出が有ります

就職活動では工場見学が一番きつかったです。漏らさないように全力で尻に力入れてたのをよく覚えています会社には病気の事は言わず、結局合格して今の会社就職しました)。

就職後は会社方針工場に配置されましたが、やはりちょくちょくトイレに行くのでたまに叱られました。これは迷惑かけてるのは事実なので謝るしかないと思います。ただ、比較的寛大な職場なので病気のことを話すとそれなりに理解はして頂けました。

工場で働きながら夜はプログラミングネットワーク勉強をし、約1年したところで情報システム部の人の目に留まってそっちに引き抜いてもらいました。他の方も言っておられると思いますが、IT関連は

自分のペースで仕事ができる。途中トイレ行っても別いにいいし、期限までに終わればいい。

・実力が有れば、比較学歴関係なく雇ってくれる。

という意味お勧めです。IT関連の職場では情報系を卒業した学生を雇ってみたものの、全く基礎ができていなかったということが度々ありますし、それだったらちょっとでも実践で役立つ能力を持っている人のほうがずっと喜ばれます自作アプリなど実力を証明できるものを持って面接に臨めると最強ですね)。

また、IT以外でも、こういう病気の人は単独でできる仕事自由トイレに行ける仕事模索することをお勧めします。それ以外だと精神プレッシャーがきつすぎます

IT部門に移動してから仕事中にしょっちゅうトイレに行っていましたが期限は守って仕事をしていたので、それについて何かを言われることはありませんでした。

また、年に一回程度、複数人社員で遠くに出張に行く必要が有りましたが、現地まで単独行動することをお願いして切り抜けました。

さらに数年に一回社長同行出張というウルトラ級のイベントが発生しましたが、前日から何も食べないなどして切り抜けました。それでも出血のためにトイレに行ったりして怒られたりしましたが。

IT系にも色々な職種が有りますが、独学でも学習やす実践で役に立ちやすオープンソース系を勉強するといいと思います。私はLinuxWebサーバーメールサーバーを見よう見まねでセットアップするところから始め、RubyPHPなどのプログラミング言語をこれまた見よう見まねで勉強しました。後にiPhoneアプリなども勉強して習得しました。

1年くらい勉強してようやくなんとなくできるようになったかな~と感じたころに情報システム部から声がかかりそちらに移動になりました。声がかかったのはそっちの部署の詳しい人に色々質問したりしてたからだと思います

また、最低一台はパソコン必要というハードルが有りますが、そこさえ超えればソフトウエア基本無料で手に入るのでやる気さえあれば比較お金をかけずに勉強できる分野だと思います

就職したのが22歳の時で、現在42歳になりますが、今はすっかりよくなってほぼ普通に毎日を送れています

クローン病潰瘍性大腸炎よりずっと辛いだろうなと思いますし、私の経験談が役に立つかはわかりませんが、元増田さんが平穏毎日を取り戻されることを祈っています

2018-01-25

Erlang日本語情報サイトエロサイトになってたw

プログラミング言語Erlang」の日本語情報サイトが、いつのまにかアダルトサイトに変わってたw

 

Before

 

After

サイトタイトル 人気AV女優エロ動画erlang-users.jp

Webサーバーは、さくらレンタルサーバーだった。

WordPressで作っているっぽい。

 

[Domain Name] ERLANG-USERS.JP

[Registrant] NAKAZAWA TRADING Co., Ltd.

[Created on] 2016/08/01

[Expires on] 2018/08/31

ドメイン2016年に切り替わったみたい。

 

現在は、ドメイン事業IP分散サーバーを中心としたホスティング事業を中核に据え、さらなるお客様への利便性向上、環境改善果たしてまいります

何かのIT系企業っぽい?

 

ドメイン転売するにしても、Erlangに合わせたダミーサイトを設置した方が売れるんじゃないかな?

 

失効したドメイン業者が買い取って、結構スパムサイトに変わってしまっているんですね?

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん