「phpMyAdmin」を含む日記 RSS

はてなキーワード: phpMyAdminとは

2018-12-18

(PHP) phpMyAdminのセキュリティー

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

https://anond.hatelabo.jp/20181218231219

本番サーバには入れないでね

phpMyAdminセキュリティーって、過去の事例を見ると、あまり高くないようですね?

この手の管理ツールセキュリティ侵害を受けた場合ダメージが大きいので、インターネットからアクセスできないようにしておくのが基本です。特にphpMyAdmin過去に致命的な脆弱性が何度も発見されており、インターネットさらして利用するには向いていません。任意コード実行可能脆弱性の事例もあり、DB以外にもリスクがあります

 

内部ネットワークからしかアクセス出来ないようにしておきましょう。レンタルサーバのようなインターネット孤立したサーバであっても、VPNの経路を作りそちらからしかアクセス出来ないようにしておくようにした方がよいでしょう。

 

IPアドレスによる制限は次善策です。アクセス元のIPアドレスが固定されており他人と共有していないならそれなりに安全になります

 

URLによる隠蔽は外部から攻撃可能な既知の脆弱性スキャンするようなカジュアルアタック避け程度にはなりますが、URLは何かと漏洩するものですので、一般セキュリティ手法と見なされていません。

 

アクセス制限をした場合でも、認証は必ず設定する必要があります。例えばCSRFのような攻撃にはアクセス制限無意味です。

 

phpMyAdmin認証HTTP認証のどちらを使う方がよいかは使ったことがないのでわかりませんが、HTTP認証場合BASICではなくダイジェスト認証にしてください。BASIC認証は(ほぼ)生で認証情報が流れますので使ってはいけません。(ブラウザで人が操作する場合以外にはBASIC認証を使わざるを得ない場合もあります

対応

  1. phpMyAdminローカルの開発サーバーで使う。
  2. 本番サーバーのMySQLメンテナンスときだけ、Adminer.php等を使う。(使用前にコピーして、使用後は削除する) もしくはMySQLコマンド操作する。

こんなかんじでしょうか?

[][][] 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」はシンボリックリンクにしておけばいいかも。

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

[][] Adminer.phpでお手軽にMySQL管理

ちょっとだけGUIMySQLをいじりたいというときに「Adminer」が便利です。

phpMyAdmin」がサーバーに入ってない場合に重宝します。

2018-11-01

増田プログラマー養成講座 その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-28

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

前回は、データベース参考書を見た。

今回は、DBで使うプログラム言語SQL」の文法を見てみよう。

 

リレーショナル・データベース(Relational Database、RDB)とは?

WikipediaRDB説明を見てみよう。

関係データベース(relational database)は関係モデルにもとづいて設計、開発されるデータベースである

関係データベース管理するデータベース管理システム (DBMS) を関係データベース管理システム (RDBMS) と呼ぶ。

Oracle Database、Microsoft SQL Server、MySQLPostgreSQLDB2、FileMakerH2 Database などがRDBMSである

 

関係モデルIBMエドガー・F・コッドによって考案された現在もっとも広く用いられているデータモデルである

データベース利用者は、クエリ(問い掛け)をデータベースに与え、データ検索したり、変更することができる。

 

データは表に似た構造管理されるが、関係と呼ぶ概念モデル化される。

関係は組(タプル、表における行に相当する)、属性アトリビュート、表における列に相当する)、定義域(ドメイン)、候補キー(主キー)、外部キーなどによって構成される。

SQLなどに代表されるデータベース言語(問い合わせ言語)を用いて、関係に対して制限・射影・結合・和・差・交わりなどの関係代数演算(集合演算を含む)ないし関係論理演算を行うことで結果を取り出す。

関係複数持つことも可能で、互いを関連させることも可能である

要するに、

 

SQLとは?

WikipediaSQL説明も見てみよう。

SQLエスキューエル)は、関係データベース管理システム (RDBMS) において、データ操作定義を行うためのデータベース言語(問い合わせ言語)、ドメイン固有言語である

エドガー・F・コッドによって考案された関係データベース関係モデルにおける演算体系である関係代数関係論理関係計算)にある程度基づいている。

 

SQLは、シークェルと読まれることもある。

これは、SQLの元となったデータベース言語が、IBMが開発したRDBMSの実験実装であるSystem Rの操作言語SEQUEL (Structured English Query Language)」であったことが由来である

SEQUEL (Structured English Query Language)」を略して「SQL」と呼んだらしい。

 

  1. 質問する、尋ねる
  2. 問い合わせ[クエリー]を行う

英語クエリーは、質問する、問い合わせる、という意味なんだね。

 

SQL3分

SQL説明するとき、3つのグループに分類される。

 

↑このページをよく読んでくれ。理解できたらSQL説明は終わりだ!!!

 

 

 

…というと、説明することがなくなるので、ちょっとまとめておこう。

このページの「表1●SQLDDLDML,DCLの三つに大別できる。このうちプログラマが最も多く使うのはDMLだ」という図を見てみよう。

 

という3種類に分けてる。順番に見てみよう。

 

DDL(Data Definition Language:データ定義言語

データベーステーブル、ビュー、インデックスユーザーなどを作成/変更/削除するときに使うSQL

これでデータベースを使う準備ができる。

  • 「CREATE」…作成する。
  • ALTER」…変更する。
  • DROP」…削除する。

 

DML(Data Manipulation Language:データ操作言語

データ操作するときに使う。いわゆる「CRUD」のことで、SQLのうち、このDMLを覚えれば、とりあえずRDBは使えるようになる。

CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性の4つの基本機能イニシャルを並べた用語

その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である

ユーザインタフェースが備えるべき機能情報の参照/検索/更新)を指す用語としても使われる。

 

この中で一番活躍するのは、「SELECTコマンド命令文)だろう。

SELECTは、いろんな条件を付けてデータを絞り込む/加工することができて、便利なんだ。(Excelなどの表計算ソフトよりも高機能

 

JOIN(結合)

RDBは「リレーショナル」(関係)という冠言葉が付いてることからも分かるように、関係がある表と表をくっつけて、データを加工できる。

表と表をくっつける操作のことを「結合」という。

SQLでは「JOIN」というコマンドを使って表と表を結合できる。

↑このページにある丸と丸が重なった図を見てくれ。この図は「ベン図」といって包含関係を示す図だ。図を描いて塗りつぶせば、欲しい部分が分かりやすくなるだろう。

 

結合の種類

表と表のつなげ方には、何通りかパターンがあるよ。

  • 結合は、「内部結合」(INNNER JOIN)と「外部結合」(OUTER JOIN)の2種類に分類できる。
  • 外部結合はさらに、「左結合」(LEFT JOIN)と「右結合」(RIGHT JOIN)と「完全結合」(FULL JOIN)の3種類に分類できる。

 

内部結合は単純だ。外部結合はちょっとややこしい。

外部結合は「LEFT JOIN」の形がよく使われると思うので、まず最初にLEFT JOINの仕組みを理解すれば大丈夫だろう。

(LEFTの仕組みを基準にして、RIGHTやFULLとの相違点を意識すれば、表のつなぎ方を間違えにくい?)

 

DCL(DataControl Language:データ制御言語

トランザクション」は、データ更新に失敗したとき、元に戻せる機能だ。(安全装置

  • 「COMMIT」…更新処理の確定
  • 「ROLLBACK」…更新処理の破棄

 

言葉だけだと意味が分かりづらいと思う。

Google画像検索で「トランザクション」を検索して、分かりやすそうな図解を探してみよう。

↑このページの「図1 処理失敗による不整合の発生」を見てみよう。

 

銀行で口座間の送金を考えてみる。Aさんの口座からBさんの口座へ50万円送金したい。

  1. Aさんの口座から50万円減らす。
  2. Bさんの口座に50万円追加する。

この2つの処理が両方とも成功しないと、送金は失敗だ。(Aさんは送金できてないのに貯金が減ったら怒る。Bさんは送金されてないのに貯金が増えてラッキー!)

AとBの両方が成功したら更新処理を確定する。AとBのどちらか、または両方が失敗したら更新処理は破棄してなかったことにする。(やり直し!)

これがトランザクションだ。

 

クレーム対応難易度

ちょっと話がそれるけど、トラブルの重大さ=クレーム対応難易度について考えてみよう。

  1. 人身事故 …人命にかかわる事故は取り返しがつかない。文句も一番キツイ絶対ミスがあってはならない分野のシステム開発はなるべく避けよう。
  2. 金銭絡み …(命の次に)お金大事という人は多い。人は金の話になるとシビア文句も強烈だ。決済など金銭絡みのシステムでは、RDBトランザクションを使おう。
  3. 上記以外 …その他のクレームは、それほどハードではない。匿名掲示板とか、どうでもいいゴミ情報投稿されるシステムなら、トランザクションは使わなくてもOKだろうw

 

DB管理ツール

ここまで、SQLRDB操作する方法について話した。

RDBは、SQLコマンド操作するだけでなく、DB管理ツールを使って操作することもできる。

DB管理ツールについても知っておこう。

 

この講座では「phpMyAdmin」というDB管理ツールで「MySQL」を操作した。

他にも、Google検索で「DB 管理 ツール GUI」などで探してみよう。商用だけでなく無料でも便利なソフトがたくさんあるね。

 

など。

 

SQLパズルだ!

SQLを駆使すると、欲しいデータをホイホイ取り出せる。

SQLコマンドを組み立てる作業パズルのような要素もあるので、遊びだと思ってSQLに取り組んでみて欲しい。

SQL パズル」でGoogle検索すると、いろんなテクニックが紹介されているので、時間があったらチャレンジしてみよう!

 

SQLの話は、それだけで1冊の本になるぐらい広範だ。今回は、SQL概要説明するだけになってしまった。

SQLの詳細については、前回紹介したSQL参考書などを読んでみてね。

 

まとめ

 

次回は、データベースを使って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:20181024214737 増田プログラマ養成講座 コンテンツ一覧

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-24

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

前回まで手続言語の基本(構造プログラミングオブジェクト指向プログラミング)を見てきた。

今回から問合型言語SQLを学び、データベースDB)を使ってみよう。

 

データベースとは?

大量のデータを記録して、活用するために特化したソフトウェアが「データベース」だ。

データベースには、いろんな種類があるけど、今回学ぶのは「リレーショナル・データベース」(RDB)だ。

 

データベースの利点

データベースがなかった時代の人々は、大量のデータを扱うのに苦労していた。

データベース活用すれば、人間は脳の記憶力を補完して、膨大な知識を扱うことができるようになる。

キミも今日からデータベース活用して、記憶力を100億倍にしよう!ドラえもんの暗記パンなんて目じゃないぜ!!!

 

勉強方針

 

MySQLの起動

MySQL無料で使えるRDBです。MySQLデータベース練習をやってみよう。

それではさっそく、以前インストールしたXAMPPで、MySQLを使ってみよう。

 

  1. xamppフォルダの中にある「xampp-control.exe」をダブルクリックしてください。
  2. XAMPP Control Panel」が表示されたら、一番上の「Apache」と次の「MySQL」の「Start」ボタンクリックします。

Port(s)が「80,443」「3306」と表示されたら、PHPMySQLが使える状態になってます

 

phpMyAdminの起動

Webブラウザー(Google Chromeなど)で、「 http://localhost/phpmyadmin/ 」というURLを開く。

phpMyAdmin」という画面が出てきたらOK

 

phpMyAdminとは?

phpMyAdmin」は、MySQL管理するツールです。

phpMyAdmin」で検索したら、使い方を紹介する記事が、たくさん見つかります

 

phpMyAdmin(ピーエイピーマイアドミン)はMySQLサーバーウェブブラウザ管理するためのデータベース接続クライアントツールで、PHP実装されている。

phpMyAdminを用いることで、SQL文を記述することなく、MySQLデータベースに対して様々な操作が行える。

また、ユーザ任意SQL文を記述して実行することもできる。

 

phpMyAdminの使い方解説ページ

検索したら、こんなのがありました。

 

データベース作成

それでは練習で使うデータベースを1個作ってみよう。

後で簡単チャット(おしゃべり)ができるWebアプリ作ってみたいと思う。(Twitterをショボくしたシステムw)

チャット用のデータベースとして「chat」という名前データベースを作ろう。

 

これで「chat」という空のデータベースが1個できた。

 

テーブル作成

RDBの「テーブル」とは、データを保存する表のこと。

「chat」データベースの中に、テーブルを1個作ってみよう。

 

すると「名前」「データ型」「長さ/値」「デフォルト値」…などの空欄がたくさん並んだ画面が表示されただろう。

4段ある上から順番に、以下の通り入力してくれ。

これでテーブル構造を設定することができた。

これら4段の下にある「ストレージエンジン:」欄は「InnoDB」にしておく。

ここまで入力したら、画面右下にある「SQLプレビュー」というボタンクリックしてみよう。

すると、

CREATE TABLE `chat`.`message` (

 `id` INT NOT NULL AUTO_INCREMENT ,

 `create_at` DATETIME NOT NULL ,

 `update_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,

 `message` TEXT NOT NULL ,

 PRIMARY KEY (`id`)

) ENGINE = InnoDB;

というSQL文が表示されただろう。

これが「SQL」というデータベース操作するプログラミング言語の書き方なんだ。

今はツールを使って自動的SQL文を作成したが、SQL文法を学べば、自分で書けるようになる。

とりあえず、今はphpMyAdminでMySQL簡単操作してみよう。

 

すると、画面左側のデータベース一覧で、「chat」の下に「message」というテーブルが表示されるようになっただろう。

これでテーブル作成ができた。

 

データ作成

データベースと、その中のテーブル(表)を作ったけど、まだデータが入ってないので空のままだ。

phpMyAdminでデータを1件、追加してみよう。

すると、

INSERT INTO `message` (`id`, `create_at`, `update_at`, `message`) VALUES (NULL, '2018-10-24 12:34:56', CURRENT_TIMESTAMP, 'Hello, world!')

というSQL文が表示されただろう。

これがデータ操作するSQL文の一例だ。これも後でSQL文法を学んでみよう。

これでデータが1件追加できた。

 

こんなかんじで、とりあえず、phpMyAdminでMySQLをいろいろいじって練習してみよう。

 

まとめ

 

次回以降の予定は、

  1. データベース参考書を紹介
  2. SQL文法
  3. データベース設計方法
  4. データベースを使ったWebアプリ作成
  5. データベース理論

といったかんじです。

 


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:20181024214737 増田プログラマー養成講座 コンテンツ一覧

anond:20181023184616

データベースSQLの使い方をどうやって説明するか?検討してみた。

RDBMySQL使用XAMPPMySQLphpMyAdminですぐに練習できるから

 

RDBの仕組み

  1. RDB歴史
  2. RDB概要
  3. SQL誕生の背景(問合型言語計算モデルは「関係代数」)→ 関係代数 (関係モデル) - Wikipedia https://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82%E4%BB%A3%E6%95%B0_(%E9%96%A2%E4%BF%82%E3%83%A2%E3%83%87%E3%83%AB)
  4. 表計算ソフトExcel)とRDB比較 

 

SQL

文法コマンドの種類

  1. データ定義言語 (DDL: Data Definition Language)
  2. データ操作言語 (DML: Data Manipulation Language)
  3. データ制御言語 (DCL: Data Control Language)

 

データベーステーブル、ビューの作成
データ操作CRUD
トランザクション
バックアップリストア

 

DB設計

論理設計物理設計

  1. データ中心アプローチDOA)、ER
  2. 正規化インデックスの張り方

この手の話は、情報処理試験データベース教科書かに、よくまとまっている。

 

MVCフレームワークWebアプリを作り、データストアとしてRDBを使ってみる。

 

RDB以外のデータストア

 

データベース参考書の紹介

ミックさんの本が分かりやすい?

 

最初から欲張って、てんこ盛りにしても混乱する?

要点を絞って、情報量を絞り込まないといけない。

最低限は、

  1. SQLCRUDを書けるようにすること
  2. WebフレームワークからRDBを使えるようにすること

 

こんなかんじかなー?

2017-01-11

得体の知れないサービス参加者管理するのやめて欲しい

結婚式二次会とか、スノボ合宿みたいなちょっと人数多めで、基本的に遊びだけど本名(とメアド)が必要イベントで、幹事から「ここから必要事項を送信してね、スムーズ運営のためにご協力お願いします!」と無料フォーム登録サービスURLが送られてくる。

管理効率化したいのはわかるんだけど、運営会社がどんな所かわからないのに個人情報をホイホイ書いて送信するの怖い。どうせデータだって平文でDB入れっぱなしなんだろ、開発者phpMyAdminで中見てるんだろ。

でもそんなこと指摘しても面倒臭がられるだけだし、純粋に行きたいから不参加にしたくもないし、どうするのが一番スマートだろうか。

2015-12-15

PHPMYADMINのMysqlDumpって

よくドヤ顔リリース出来たな。ほとんど機能しとらんやんけ。

2015-08-08

新しい画像掲示板ログ庫作った話

きっか

画像掲示板スレッドを見逃してしま

とあるログ庫を漁ろうとするが…

1分で断念してしまった

似たような体験してる人もいるんだろうなと思い

シンプルで使い勝手がいいログ庫を書くことにした

そんなわけでログ庫作った

FTBucket開発サイト

http://dev.ftbucket.info/scrapshot/

「気になったスレッドを"ストック"するとサーバー側で自動追跡

あとでログを読んだりまるごとzipで落とせる」

といったread it laterのような使い方ができる

見た目も元サイトと合わせてシンプル構成にした

zip生成を最適化

zipをつくる機能は可能な限りのチューニングを行って

最終的には高速で軽量なzip生成エンジンを作ることができた

phpmyadminzip.lib.phpを改造

- ファイル個別圧縮/非圧縮を切り替え(CPU節約)

- インクリメンタル生成(メモリ節約)

- オンザフライ生成(ディスク領域節約・即時ダウンロード対応)

縮んだzipが生成待ち時間なしで落ちてくるのは結構おもしろ

他のアプリバックアップなんかにも流用している

他にもいろいろ作りこむ

さらUI/UX改善のためにも内部の作り込みをがんばった

詳細の説明はめんどくさいので箇条書きで失礼する

- mht生成対応

- 自分登録したスレッドの絞り込み検索

- 配信型のP2P対応

- 検索タグの付加

- 機械学習タグ予測

- 組み込み全文検索

- 同一画像の検知と重複排除検索

- 100万ファイル以上に対応する類似画像検索

- 全件一覧が早いNonDBデータストア

etc ...

どれも実装には苦労したけど便利な機能

ログ庫でハゲそうになった経験のある人はぜひ試してみてほしい

2014-02-19

http://anond.hatelabo.jp/20140219214902

PHPMyAdminを使っても、登録はミスるは、他のマスターデータを上書きしてレコードを消すは、

やっぱ「○○買ったはwww」みたいな言葉遣いする奴って、スラングのつもりじゃなくて素で間違って覚えてたんだ

派遣さんでの失敗

つい先日まで人手不足なこともあって、派遣さんに来ていただいていたときお話です。

送られてきたスキルシートには、

「○MySQL

「○PHP

という感じでまぁソシャゲをまわす分にはうちのやり方を多少レクチャーすれば大丈夫かなと思い面談

面談中も、「ゲームが好きです」「バハムートはかなりやりこんでました」「ターミナルも多少はたたけます」という感じで

これならOKかと思い採用して出社してもらいました。

最初環境設定やサービスを利用してもらって理解を深めてもらっていたのですが、

過去イベントの側替えをちょうどいいタイミングで始まることにしたので、必要なテーブルのコピー

アイテム登録をお願いしたところ、

PHPMyAdminを使っても、登録はミスるは、他のマスターデータを上書きしてレコードを消すは、

100件近いデータフラグミスがあったので、「0から1に全レコード変更しておいて」って

お願いしたら、PHPMyAdminで1件ずつ直してました。。。

SQL投げれない、というか、UPDATE文の書き方がまるで理解できてなかったんですよね。

当然INDEXなんて知ってるはずもなく。。。

見る目なかったといえばそれまでですが、この内容で「○MySQL」のスキルシートを提出しちゃダメだと思うんですよね。

スタッフの作業量を軽減しようとしたのに、倍以上の稼動になっててんやわんやでした。

やはり面談の際に、エンジニアさんであれば、簡単なテスト実施しないと危険すぎますね。

いい勉強になりました、という話。

2013-08-09

管理画面を作るのを工数に入れましょう

運用のために絶対に必要から

売上が乗ってきてから見積もるってのが、なんとなーくまかり通ってるけど

いやまぁ、売上もないサービスにいきなりそこまで工数掛けれないのもわかるけど

いくらスモールスタートだからって管理画面作成念頭に置こうぜ

特に企画者、ディレクター達。

自分たちで運用する気あんのかって企画はやめなさい。

エンジニアたちは技術力の安売りやめなさい。

オペレーターレベルのもをのわざわざ企画者がphpmyadmin開いてUPDATEでニュース更新とか

ブログ投稿レベルテンプレ編集エンジニア新規作成とか

[NEW]って画像つけるだけでデザイナに頼んでphotoshopでわざわざ作りなおすとか

自分たちの時間を浪費し過ぎだから

そのままだとエライことになります

管理画面を作るのを工数に入れましょう

2013-03-04

プログラマからWebデザイナー転職して1年と半年経った

Webデザイナーといっても、プログラミング経験があるからCMSカスタマイズ

小規模なシステム構築を任されることのほうが多いけれど。

最近その辺りの仕事のやり方で思うことがありすぎるので書いてきます

見た目の部分しか考えない

見た目っていうのは、デザインのものHTMLについての部分。

通常システムを作る場合設計をすると思うんだけど、まずそれをしない。

というかしないでいいと思ってる。

それはデザインが全てで、最終的に出力されるものデザイン通りであれば、

完成したということになるからだと思う。(もちろんHTMLは綺麗にコーディングする)

デザインしか考えないから、画面の仕様を簡単に変更してしまうし、

それが裏側にどれくらい影響を与えるものなのか意識できない。

見た目やユーザビリティ的にいいという理由で、製造中に画面を変えられてしま

ことが多くてとても困った。

このことは、プログラマデザイナーの衝突の原因にもなるんじゃないかと思う。

データの理解

ふだんはCMSを使っていても記事を入力したりするくらいだから仕方ないのかな、

とは思ったけど、CSVだけ渡されて 「これ取り込んでおいて」とだけ言われたのには

驚いた。

DBphpmyadminインポートエクスポートくらいしかしないから、そのくらいの時間

すむと思ったんだろうか。CSV取り込み機能なんて作らなければ存在しないのに。

DB構造意識しないので、画面上に出力するデータ整合性が取れないときがある。

モックを先に作っておきたいからと言われて、出力する配列を固定で定義してもらっていた

けど、無理やり作るしかない構造になっていたりした。

テストをしない

もちろん動作確認はしてバグがあれば修正というところはやるのだけど、

表示結果が正しければよしとしてしまう。

デザイナーでいうデバッグテストを混同しているところがあるように思う。

からまともなテスト期間なんてないし、費用納期などの問題があると

真っ先に削られてしまう。

僕自身、自分たちで作っていたシステムの見た目を改善したくて(いわゆる業務系

システムの古臭いデザインだったから)こうしてデザイン勉強をしているのだけど、

それでもデザイン重視だなんて思わないし、見た目も機能の一部だと思うので、

できるだけバランスのよいプロセスものを作っていくべきだと思う。

上に書いたことは僕の技術経験が未熟なせいで起きている問題もあるし、

コミュニケーション改善できたこともあると思う。

ただ、周りが誰一人としてシステムに関する理解がない状態で、

システムを作っていくのはプレッシャーがすごくて、

(まともなプロセスでないし、一人で責任を負わなければならないから)

最近は心労がすごくて、辞めようかという気持ちになっている。

Webデザイナーの中には、きちんとシステムへの理解があって、

プログラマーと協力しながらうまくやっている人もいるので、

どうにかなることではあると思うけど、このままではやっていけない気がする。

2012-10-26

iphoneで見れて、毎日いっぱい更新されるのエロ動画サイトを作った。【サイト構築詳細メモ

はじめに

なんちゃってプログラマーやってます

「みんなの役に立つサイトを作って、一発大きく儲けたい!」と、

思い続けて、早10年(泣)。。

なかなか画期的アイデアって出てきません。。

とりあえず、エロサイトを作るのってすごく勉強なる?楽しい?らしいので、

誰にも利用されない「へぼツール」作るより必ず誰かの為になるなぁと考え、

エロサイト作りました。(保守不要で完全自動化)

iphoneで見れて、毎日10記事絶対更新

できるだけ、誰でもわかるように、詳細を書いていますので、

これを見るだけで、ノンプログラマーの方でも、

同様のサイトは簡単に立ち上げることができちゃうと思います

つくったサイト

http://iphone-xvideos.info/

サイト名:iphone-xvideos エロ動画H (仮)

デザインデフォルトのまま(そのうち修正しまーす)

作成期間:40時間ぐらい…

iphoneでも見やすくしています

※記事は毎日10更新予定です。つまり毎日このサイトだけ見に行けば困らないってことです。

きっかサイト

http://anond.hatelabo.jp/20101219185436

http://anond.hatelabo.jp/20101203150748

http://d.hatena.ne.jp/inouetakuya/20120331/1333192327

http://anond.hatelabo.jp/20120318122617

http://anond.hatelabo.jp/20120914214121

http://anond.hatelabo.jp/20110804021353

http://anond.hatelabo.jp/20120926165533

レンサバ

saasesのVPS OsukiniサーバーLT メモリ512MB 月450円! アダルトOK

CentOS 64bitを選択。(メモリを食うだけなので、特に用がなければ、32bitにしよう!)

↑一番安いプランしか契約できなかった…

※どこにも書いてないけど、2週間以内なら取り消しできます

契約時、webmin&amp;mysqlの選択は必須にしておいたほうがいいです。私は間違えて、webmin無しにしてしまった。。

から、再インストール(初期化)すれば、再選択することができるようです。。

申し込み後、たったの30分で接続できるようになりました。

ドメイン

iphone-xvideos.info

バリュードメインで取得。280円!安い。

DNSVPSIPに変更。

不要サービスを止める

/sbin/chkconfig auditd off

/sbin/chkconfig autofs off

/sbin/chkconfig avahi-daemon off

/sbin/chkconfig bluetooth off

/sbin/chkconfig cups off

/sbin/chkconfig firstboot off

/sbin/chkconfig gpm off

/sbin/chkconfig haldaemon off

/sbin/chkconfig hidd off

/sbin/chkconfig isdn off

/sbin/chkconfig kudzu off

/sbin/chkconfig lvm2-monitor off

/sbin/chkconfig mcstrans off

/sbin/chkconfig mdmonitor off

/sbin/chkconfig messagebus off

/sbin/chkconfig netfs off

/sbin/chkconfig nfslock off

/sbin/chkconfig pcscd off

/sbin/chkconfig portmap off

/sbin/chkconfig rawdevices off

/sbin/chkconfig restorecond off

/sbin/chkconfig rpcgssd off

/sbin/chkconfig rpcidmapd off

/sbin/chkconfig smartd off

/sbin/chkconfig xfs off

※190MBが150MBぐらいになります

SSHサーバ設定

$ su root

FTP接続できるようにする。

http://support.saases.jp/index.php?action=artikel&cat=63&id=312&artlang=ja

バーチャルホストの設定

# vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80 ←これを探して、コメントアウトを削除。その下に以下を設定。

&lt;VirtualHost *:80&gt;

DocumentRoot "/home/ユーザーID/iphone-xvideos.info"

ServerName iphone-xvideos.info

&lt;Directory "/home/ユーザーID/iphone-xvideos.info"&gt;

order deny,allow

allow from All

Options FollowSymLinks

AllowOverride All

&lt;/Directory&gt;

&lt;/VirtualHost&gt;

apache再起動

# /etc/rc.d/init.d/httpd restart

httpd: Could not reliably determine the server's fully qualified domain name, using...」

再起動時に上記のエラーがでた。

その時はこちらで解決⇒http://d.hatena.ne.jp/uriyuri/20100511/1273575287

で、このままだとIPアドレスでもアクセスできてしまうので、以下もやっておく。

http://fedorasrv.com/memo/log/29.shtml

mkdir /home/ユーザーID/iphone-xvideos.info

chown ユーザーID /home/ユーザーID/iphone-xvideos.info

/home/ユーザーID/以下はpermission errorとなりアクセスできないので、権限を変える。←いいのかな?

chmod 755 /home/ユーザーID/

CentOSAPCインストール

http://blog.verygoodtown.com/2010/02/centos-apc-install-how-to/

# pecl install apc

↑これを実行した際に、「error: expected specifier-qualifier-list before 'pcre'」なんちゃらっていうエラーがでたので、以下を実行。

yum install pcre-devel

再度実行して、無事インストールできた。

# pecl install apc

# vi /etc/php.ini

extension=apc.so ←これを一番最後に追記

APCの設定】

vi /etc/php.d/apc.ini

extension=apc.so

[APC]

apc.enabled = 1

apc.shm_size = 64 ←適当。。

apc.gc_ttl = 3600 ←適当。。

apc.ttl = 3600 ←適当。。

/etc/init.d/httpd restart

  • viの基礎講座】-----

/ ←検索

n ←次の検索文字へ

i ←編集モード開始

Esc ←編集モード終了

]] ←最後尾に移動

:q! ←保存せずに終了

shift押しながらzz ←保存

--------------------------

apache再起動

# /etc/rc.d/init.d/httpd restart

phpinfoの画面でapcの項目があるか確認

vi /home/ユーザーID/iphone-xvideos.info/index.php

phpinfo();

?&gt;

apacheの負荷対策

http://tanaka.sakura.ad.jp/2011/05/centos-linux-apache-php-perl-mysql-lamp.html

↑これを参考に適当に変更してみた

MaxClients 256 ←これを40に

MaxRequestsPerChild 4000 ←これを1000

このサーバは、512MBしかいかもっと小さくしたほうがいいのかも。。

# ab -c 10 -n 100 http://iphone-xvideos.info/

【変更前】

Requests per second: 40.01 [#/sec] (mean)

【変更後】

Requests per second: 137.57 [#/sec] (mean) ←1発目

Requests per second: 552.79 [#/sec] (mean) ←2発目以降(キャッシュ後)

wordpressがらみ

http://ja.wordpress.org/

最新版をやってみるとエラーが発生。

サーバーPHP バージョンは 5.1.6 ですが WordPress 3.4.2 は 5.2.4 以上のみでご利用になれます。」

phpmysqlバージョンアップはやっかいそうなので、

3.1系を選択する。。

http://ja.wordpress.org/releases/

※↑結局、後日phpmysqlバージョンアップをやりました。

ソースをUP

DBを作る

http://自分サーバIP/phpMyAdmin/

ホームの「新規データベース作成する」と書いてある所の下にある、

DB名⇒wp、照合順序⇒utf8_unicode_ci

wp-config.php

を修正する。

プラグイン

WP-DBManager

WP Super Cache

WP to Twitter ←まだ設定してない

WPtouch ←/wp-content/plugins/wptouch/themes/core/core-header.php をちょこっと変更すればiphoneでxvideo再生ができる。

○人気記事一覧

http://the-fool.me/wordpress/plugins/wordpress-popular-posts.html

テーマデフォルトのまま。。

XML-RPC自動投稿

設定⇒投稿設定⇒Atom 投稿プロトコルXML-RPCにチェック

もう1個負荷確認

https://loadimpact.com/

キャッシュが効いていて問題ないことを確認。

クローラーを作る

wikipediaから取ってきた女優名をカテゴリテーブル(wp_terms)に突っ込む。(5,260人でした。)

↑これは月に2回更新。cronで動かすことにした。

googleブログ検索(24時間以内のもの)に女優名をつっこんで、

出てきたサイト情報を取得すればOK。

(とりあえず、引退した人の動画は少ないだろうと考え、現役2,762人分のxvideosを取得してみた。処理時間8時間、192件取得できた。)

双方とも、スクレイピングを使えば簡単に取得できます

http://www.kaasan.info/archives/1457

念のため、巡回するごとに、sleep10秒してます

動画URLを取得したら、削除されていないか調べて、OKだったら投稿

PHPからRPC投稿するやり方は、

http://www.multiburst.net/sometime-php/2009/04/newpost-with-wordpress-xmlrpc-api/

↑ここらへんを参考に

http://pear.php.net/package/PEAR/download

pear自体はここにあるので、「XMLフォルダのみをUP。

だいたい、30分で10記事取得できることがわかったので、

毎日深夜に10記事取得するようにする。

【cron設定】

$ crontab -e

00 04 * * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_X.sh &gt;/dev/null 2&gt;&amp;1

00 03 1,15 * * /bin/sh /home/ユーザーID/iphone-xvideos.info/insert_XXX.sh &gt;/dev/null 2&gt;&amp;1

http://miya0.dyndns.org/pc/settei/crontab.html

----------------------------------------------------

1日何件の更新とするか?10件ぐらい?

↑旬な情報が取れないが、とりあえず。。

前日のterm_idを記録して、

次の日はそれ以降のデータを取得する。

次のterm_id存在しなかったら、1からやる。

----------------------------------------------------

今後の追加機能予定

jqueryお気に入り作成cookieを使う。(PCのみ?)

☆好きな女優を登録しておけば、記事の更新情報メールで通知。

デザイン修正。。

感想

すぐできるかと思いましたが、結構時間かかりました。

実際、なんとなく勉強になった気もするし、楽しく作業できました。

皆さんもぜひ。毎日が少し充実しますよ。

まったくアクセス無くても、自分用にとても良いものができたと思っているので満足です。

もし繋がりにくくなったりしたら、

別のレンサバに変更しますー。

サイトオープン後のあれこれは、

随時こちらに追記していきますね。

最後まで読んで頂いてありがとうございます

2012/11/8 追記

サイトオープンから10日ほど過ぎたので状況をお知らせします。

はてぶは全くだめだった。。

ページビュー1000/日

(日々増加しているが、検索エンジンからくるようになってもまだこんだけ。。)

メモリは問題なし。512MB中ピークでも300MBぐらいしか使ってない。

30分に一回メモリ監視を仕込んだ。

# vi /usr/local/bin/memrep.sh

date &gt;&gt;$1

free &gt;&gt;$1

echo &gt;&gt;$1

# chmod 744 /usr/local/bin/memrep.sh

本日テスト的にDMM広告を張ってみました。。←すぐ消した。。

また、後日お知らせしますね。

2012/12/3 追記

1か月経ったので。。

topスライダー付けてみました。

ページビュー2500/日

自動更新なのに、きっちりアクセスは日々増えて続けていますエロは強い。

アクセス少ないので、負荷は全く問題なし。

Swapも全く使ってない。

忍者AdMax貼ってみたけど、1日20円とかで、まったく駄目。。

レンサバ代にはなりそうだけど。。なんか良い広告いかな。。

2012-09-26

【2012超まとめ】確実にWEBサービスを作りたい人へ【中編】

前編はこちら

http://anond.hatelabo.jp/20120926165407

ステップ6:MySQL(10時間)

会員情報や文章などのコンテンツを保存しておくデータべース、MySQLを調べます

データベースは他にもPostgreSQLSQLiteなどが有名ですが、やはり王道勉強します。

MySQLCakePHPや、ステップ4のWordPress他、よく使いますので把握しておきましょう。

基礎からのMySQ

http://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AEMySQL-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E7%A8%AE%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E8%A5%BF%E6%B2%A2-%E5%A4%A2%E8%B7%AF/dp/4797344385/ref=sr_1_1?s=books&ie=UTF8&qid=1348063628&sr=1-1

今はまだ関係ありませんが、余裕があればこれも読むといいです。

MySQLによるタフなサイトの作り方

http://www.amazon.co.jp/MySQL%E3%81%AB%E3%82%88%E3%82%8B%E3%82%BF%E3%83%95%E3%81%AA%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-%E4%BD%90%E8%97%A4-%E7%9C%9F%E4%BA%BA/dp/4797353937/ref=sr_1_1?s=books&ie=UTF8&qid=1348063787&sr=1-1

操作コマンドラインを覚えていく方向で、始めはブラウザ操作できるphpMyAdminを使ってOKです。

ストレージエンジンはとりあえずInnoDBで。

ステップ7:休憩(10時間)

技術調査はこの位にして、これからは実際にWebサイトを作っていきます

ここまで来ると何となくWebサイトがどんな仕組みで動いてるかが分かってくるので、

ステップ0でイメージした作りたいサイトがどんな技術で実現出来るか調べます

冒頭の「完全に一致」の中の人のようにスクレイピングしたり、

TwitterGoogleYahooAmazonなどのAPIを使ってサテライトサイトを作っても良いと思います

が、高度な事をするとはまりやすいので、ある程度やって無理だったらあきらめて次回にまわしましょう。

まずは何か一つ完成させる事のほうが大切です。

それから開発効率UPのため、Chromeプラグインを入れましょう。

説明はそれぞれのリンク先を見て下さい。

CSSViewer

https://chrome.google.com/webstore/detail/ggfgijbpiheegefliciemofobhmofgce

Firebug Lite for Google Chrome

https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench

View Selection Source

https://chrome.google.com/webstore/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj

Pendule

https://chrome.google.com/webstore/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi

BuiltWith Technology Profiler

https://chrome.google.com/webstore/detail/dapjbgnjinbpoindlpdmhochffioedbn

iPSim

https://chrome.google.com/webstore/detail/gcligifbhamdimemnemmlkffkpmflehh

Color Picker

https://chrome.google.com/webstore/detail/ohcpnigalekghcmgcdcenkpelffpdolg

CSS Tester

https://chrome.google.com/webstore/detail/pjncppaiejjkcjlcgegcbmhgkflhenfp

MeasureIt

https://chrome.google.com/webstore/detail/pokhcahijjfkdccinalifdifljglhclm

あとはFireFoxにはFireBugデバッグ定番らしいです。

https://addons.mozilla.org/ja/firefox/addon/firebug/

それから、空いた時間無料プログラミング動画サイトドットインストール」を見ておくと

ここまでの知識が定着すると思います

ドットインストール

http://dotinstall.com/

ステップ8:ドメインを取る(10時間)

ステップ7で作りたいサイトイメージ出来てきたら、ドメインを取りましょう。

サーバーさくら場合ドメインさくらで取得すると楽ですが、もっと安いところもあります

希望するドメインが空いているか調べて取得、空いていなければ他のドメインを考えます

さくらドメイン取得

http://www.sakura.ne.jp/domain/

ムームードメイン

http://muumuu-domain.com/

バリュードメイン

http://www.value-domain.com/

定番の.com、.net、.orgは誰が見ても親しみがあるし安いので、できればこの3種類のどれかにしたい所ですが、

一般的な言葉はほぼ埋まっているので、その場合.jp等にしても良いでしょう。

日本語ドメイン(www.日本.netみたいな)は流行っていないですが、

自分サイト名が「○○○.com」のような名前場合は一緒に取得して、アルファベットドメインリダイレクトしましょう。

ChromeユーザーURL欄で検索する時、「○○○.com」のように後ろに.xxxが付いているとそのURLに直接アクセスしてしまい、

 検索にならないので、アクセス機会損失を防ぐため。)

僕はバリュードメインで取得して、サーバーさくらレンタルサーバーしました。

その際の親切な設定方法の解説はこちら。

VALUE DOMAIN で取得したドメインさくらレンタルサーバで使う

http://nekohacks.com/wordpress/domain/value-domain/

ステップ9:サイトの基礎部分の開発(100時間)

実際にサイトを開発していきます

どんなサイトで、どんな機能があって、どんなページがあるかノートに書き出して行きます

初めにデータベースのテーブルやレコード構造を考えて、

次にメインとなる機能プログラムして行きます

サイトの基本的なレイアウトCSSで組みながら、デザインイメージもしておきましょう。

ここではデザインはまだやりません。

先にデザインを作っても、プログラムを進めていく過程で変更がでたりする為です。

(でもあんまり後回しにしても、見た目がチープなせいでモチベーションが下がったりするので、次のステップでやります

あと、ここで気をつけたいのは、あくまでメインとなる機能の開発を優先することです。

「あったほうが良いな」程度の機能は後回しにします。

外堀から埋めていくとそこでモチベーションが尽きてしまったり、

メインの機能を実装してみたら外堀の修正が発生してしまったりするためです。

始めると分からない事がどんどん出てくると思うので、本を読み返したりGoogle先生検索しながら進めて行きます

なかなか進まなくて検索8割、コーディング2割くらいの進め方になると思いますが、それでOKです。

長い暗闇を抜けると、少しづつ視界が開けてきます

メインの機能がなんとなく出来たら次に進みます

ステップ10:サイトデザイン(30時間)

メインの機能何となくできたら、デザインをやります

鉛筆殴り書きで良いので紙に描いてみます

いきなり慣れないCGソフト上でデザインすると、

いじっているだけでモチベーションを使い切ってしまったりするので危険です。

CGソフトは色々ありますが、おすすめフォトショ(Photoshop)です。

WebサイトデザインFireworksなども有名ですが、学習コストがかかるので、

Webサイトにもそれ以外にも使えて一番つぶしが効くフォトショップでOKです。

今年からクラウド契約が始まり、今なら1ヶ月8000円、年間契約なら1ヶ月5000円で

Adobeソフトが全部使い放題です。

Adobe Creative Cloud

http://www.adobe.com/jp/products/creativecloud.html

お勧めの本はこれ

10日でおぼえるPhotoshop入門教室

http://www.amazon.co.jp/10%E6%97%A5%E3%81%A7%E3%81%8A%E3%81%BC%E3%81%88%E3%82%8BPhotoshop%E5%85%A5%E9%96%80%E6%95%99%E5%AE%A4-CS2-CS%E5%AF%BE%E5%BF%9C-%E4%BA%95%E4%B8%8A-%E3%81%AE%E3%81%8D%E3%81%82/dp/4798111953/ref=sr_1_1?s=books&ie=UTF8&qid=1348498454&sr=1-1

基本操作を覚えたらWeb情報を収集します。

PHOTOSHOP VIPさんが親切です

http://photoshopvip.net/

から全部自分で作らなくても、素材サイトからダウンロードして加工するなどして手間を省きます

PCスマホ携帯(ガラケー)全部に対応するのは大変なので、

初めはそのサービスを最も使うだろうと思われるどれか1つに絞ります

初めに作る際のお勧めPCサイトです。

PCサイトならスマホでも最低限アクセスはできるし、携帯は縮小傾向なので優先度低、

スマホ画面サイズがまちまちでタブレット端末が目下発展中、AndroidブラウザがたくさんあるがChromeに統一されていくかも、

混沌とした状況なのでお勧めしません。

複数デバイスへの対応リリース後でも遅くありませんが、

対応する際はCSSを切り替えてレスポンシブレイアウトにするのがお勧めです。

その他、困ったらTwitter社が公開しているブートストラップを使うのもお勧めです。

ブートストラップcssフレームワークで、簡単にシャレ乙なデザインに仕上がります

超便利!Twitter BootstrapでさくさくWeb開発

http://blog.asial.co.jp/887

どうしても自分イケてるデザインが出来ないと思ったら、友だちに頼んだり、SNSコミュで募集したり、

デザイン系の大学専門学校掲示板にビラを貼らせてもらったりしましょう。制作費が出せればランサーズで募ってもいいかも。

Lancers - 仕事フリーランス発注できるクラウドソーシングサービス

http://www.lancers.jp/

僕はたまたまフォトショップの使用経験があったので、ここにかけた時間は30時間ではなく5時間程です(トータル275時間で開発)。

後編はこちら

http://anond.hatelabo.jp/20120926165920

2011-02-10

http://anond.hatelabo.jp/20110210155656

phpMyAdmin

UserNameTable{

Uid INTEGER primaryKey

HogeHoge (Bigデータでない限りは1つのテーブルへ突っ込む) Bigデーターは別テーブル化してIDを突っ込む

}

QueryDataTable{

d date; key1

Uid1 INTEGER; key2

Uid2 INTEGER; key3

 HoGeHoge INTEGER; // 実データへのID

};

key1からKey3までをこの順番でインデクス

こんなもん覚えてないw

あとは、フルメッシュはなく、必要な文だけInsertすれば ユーザ数xユーザ数xDATA ではなく 

1日にユーザーが生成したデータ数xDate に落ちるだろうから、大して増えない。 

2010-06-04

同人サイト向けレンタルサーバ個人的まとめ

2chレン鯖板スレッドhttp://f43.aaa.livedoor.jp/~sils/参照、レン鯖板の各スレより拾った。

ぐぐって見つけたコチラも参照した。http://arekore.hp2.jp/pay/

あくまでCMSツールを使用して一から同人サイトを作りたい+サポートメールコントロールパネルアクセス解析は無くていい人向けです。

順次[試用しての感想]追加予定。特に記載が無いものは使える/出来る項目。

■条件(上から下へかけて優先順位が下がる)
■以下備考

有料

残念ながらさくらインターネット総合的に見ていいのかもしれない。

サイト毎にDBを分けたいとかセーフモードやら、同人という壁は大きい。

Just-Size.Network

同人公式OK(同人アダルト可)

phpMyadmin自分インストールする。鯖によってphpMySQLバージョンが違うので面倒。

DBは重いらしい。DB鯖容量は50MB。

[同人アダルト可鯖はMySQL5に対応していない]

cgi-binフォルダ必要無し。

容量無制限、サブドメイン・独自ドメイン

ステッププロ

同人公式OK(アダルト可)

mod_rewrite使えない。

セーフモードなのでWP自動アップデートが出来ない。DBが十つ付いている。

DBは重いらしい。[プロはそこそこだと思う]

データ損失をやらかした。

容量5GB、サブドメイン・独自ドメイン

さくらスタンダード

同人黙認(同人アダルト黙認)落ちない。

cgi-binフォルダ必要無し。

WP設定が楽。DB鯖は当たり外れ有。[個人的には重いと感じる]

容量10GB、サブドメイン・独自ドメイン

ロリポ

同人公式OK(同人アダルト不可)

DBの重さに定評あり。WP設定が楽。女向。

上位にチカッパ等あるがこちらは規約同人が触れられていない。

容量8~10GB、サブドメイン・独自ドメイン

aiso.net

同人公式OK(同人アダルト可)

試用無し。MySQL使用可はプレミアムから。

MySQLは3、PHPは4。

1~2MB、サブドメイン・独自ドメイン

PANDORA.nu(サブドメイン/ホスティング

同人公式OK(同人アダルト可)

バックアップ機能有(大概の鯖は規約で、サーバ側でデータ消失しても責任は負わないと記述

600~1200MB、サブドメイン・独自ドメイン

西院ネットワーク

同人公式OK(同人アダルト可)

試用無し。MySQL使用不可

容量100MB

SPUR-NET

同人公式OK(同人アダルト可)

PHPMySQLバージョン対応が遅い。

独自ドメイン不可

容量200MB~

80code.com

海外

同人でも何でも法に違反しなければOK

永らく募集が止まったりする

DB無制限

試用無し(ただし14日間までならクーリングオフで、手数料15%引きで返金有)

容量無制限(共有だと1GB)、サブドメイン・独自ドメイン

アスリ

同人公式OK(同人アダルト可)

レスポンスが遅い(入金確認等)

試用無し。

500/1000MB~、サブドメイン・独自ドメイン

CHOCOT.NET

女性専用

同人公式OK(同人アダルト可)

PHPバージョン対応が遅い。

容量50~100MB、独自ドメイン

ポケットサーバープレミアム

同人公式OK(同人アダルト可)

容量1200MB~、サブドメイン・独自ドメイン

coreserver(mini/core-A)

アダルト小説可(ただしイラストは不可)

xreaの上位サービス

落ちると復帰が長く、サポート以前に障害対応が駄目らしい。

メール規制や使えなくなる頻度が他の鯖より高い。

DBが十つ/無制限付いている。

DB鯖は当たり外れ有、だがさくらと違い鯖間移動が簡単に出来る。

miniの方が共有相手に業者が少ない為軽いらしい。

[MINIサクサク動く]

容量6GB/15GB、サブドメイン・独自ドメイン

無料

無料でも出来る所は多々あるので触れないが、今まで使ってきた鯖感想

サポートに関してはmeganebu以外初心者お断り傾向。

最低限ファイルアップロードや設置が出来るレベルでないと厳しい。

xrea.com(中上級者向)

サポートはほぼ機能していないので自分で調べて自分で全部設定する。

ただし出来る事が多いので、中上級者向けには最適。

コントロールパネルファイルアップローダアクセス解析付き。

見てる限りでは落ちたのを見たことがない。

同人大丈夫だがアダルトは禁止。

セーフモードなのでWP自動アップデートが出来ない。

meganebu.com(初中級者向)

めがねを愛する鯖管管理するサーバ。たまに落ちる。

フォーラムには初心者が溢れて和やかなのでデビューにはいいかもしれない。

鯖管に特徴があるので人を選ぶかも。

UUHP.com

最低限のことしか書かれていない。いつまでも広告

ミラーとして使える。登録が面倒。MySQLは使えません。

redribbon.to

同人アダルトOKだが、いかんせん広告が多すぎたり。

vane.jp

MySQLが使えないが、人数が少ないので快適。同人アダルトOK。

審査制。

usamimi.info(中上級者向)

規約同人に寛容だが、初心者お断り。審査制だが相当でないと落ちることは無い。

コントロールパネルアップローダ等は一切無いがxreaのように必要なものは揃っている。

たまに落ちる。個人的にここのDB鯖はさくらより軽快だと思う。

同人アダルト可。

セーフモードなのでなのでWP自動アップデートが出来ない。

※1+Kashというutf-8記述されたウェブ拍手が使える。機能はpatipatiと同等。

WPとの兼ね合いエンコードの問題で、WEB拍手やpatipatiは文字化け起こす為。

2007-09-20

phpMyAdmin インポート時のNULL値

どうも、NULLは受け付けないようで、エクスポートしてからインポートしてもDATEの場合0000-00-00になってしまう。その後に、SQLエクスポートして'0000-00-00'をNULLに置き換えてからインポートしなおせばNULLになるが面倒…

2007-05-09

http://anond.hatelabo.jp/20070509154649

mySQL迷子

なんだこれ難しいな…。

100までの整数がなんらかの状態でレコードにあって後はSQLひとつ流せばおわりなんだけど

select 
	if (tf.fizzbuzz = '',tf.num,tf.fizzbuzz) fizzbuzz
from (
	select 
		num,
		concat(
		if (mod(num,3)=0,'fizz',''),
		if (mod(num,5)=0,'buzz','')
		) fizzbuzz
	from tmp_fizzbuzz 
) tf
;

うえのSQLphpMyAdminで流しても反応がない。。。。

mySQLコマンドラインで流せば帰ってくるんだけど。

いまいちどころか、なかなかピンとこないなぁ。

慣れてきたつもりだったんだけど。。

_ノ乙(、ン、)_

2007-04-20

[]RubyRuby on Rails

Ruby RDoc Documentation

rubyとは - はてなダイアリー Rubyとは - はてなダイアリー

はてなブックマーク - はてな - Rubyとは

「ruby」を含む日記 - はてなダイアリー

Ruby

「Ruby」に関する画像、動画、ブログ記事のタグ検索結果

Google ブログ検索

買売システム開発記録とか何とか

Rubyで投資システムを作る日記

spacecadetの日記

RubyForge: One-Click Ruby Installer: Project Info

RDE(Ruby Development Environment) - Ruby??J??????????

#!/usr/bin/ruby -Ks

# print "Content-Type: text/html;charset=UTF-8\n\n"

p "表示"


Rails Rails Framework Documentation

http://127.0.0.1/mysql/

http://127.0.0.1:3000/ http://127.0.0.1:3000/recipe/list

http://127.0.0.1:3001/ http://127.0.0.1:3001/recipe/list

http://127.0.0.1:3001/account/signup http://127.0.0.1:3001/test

http://127.0.0.1:3001/item

Hot Chips (delete) Snacks 2004-11-11

Ice Water (delete) Beverages 2004-11-11

Killer Mushrooms (delete) Snacks 2005-09-13

満足せる豚。眠たげなポチ。:Rolling with Ruby on Rails - Japanese Translation - p1

満足せる豚。眠たげなポチ。:Rolling on Ruby on Rails - Japanese Translation - p5

BookmarkOnInstantRails

ITmedia エンタープライズ:第1回 Instant Railsで始めるWindows環境のRails (1/2)

developerWorks Japan

developerWorks Japan

DROP TABLE IF EXISTS `items`;

CREATE TABLE items (

id int(11) NOT NULL auto_increment,

login varchar(80) default NULL,

password varchar(40) default NULL,

PRIMARY KEY (id)

);

えぇてるのぉと:Railsでログイン認証 - livedoor Blog(ブログ)

8 app/views/test/index.rhtmlの編集

<h1>Test#index</h1>

Welcom <%= @session['user'].login %>!

Login Generator (1) - Nowhere Near

config/environment.rb に以下の行を追加する。

module LoginEngine

config :salt, "your-salt-here"

end

Engines.start :login

http://techno.hippy.jp/rorwiki/?Wiki%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB%2F%A5%E6%A1%BC%A5%B6%A1%BC%A4%F2%C7%A7%BE%DA%A4%B9%A4%EB

パパブログ: RoR : login_generator : login中のユーザ情報の取得

@session['user'].id

@session['user'].login

@session['user'].password

で、idやloginが取得できる。

ちなみにidActiveRecordおなじみのidで、

loginがログイン名、passwordパスワードになる。


MySQL-Front download

環境変数

;C:\nonidata\InstantRails\ruby\bin;

cd C:\nonidata\InstantRails\ruby\bin

C:\nonidata\InstantRails\ruby\bin>gem install login_generator

Successfully installed login_generator-1.2.2

C:\nonidata\InstantRails>cd C:\nonidata\InstantRails\rails_apps\cookbook

C:\nonidata\InstantRails\rails_apps\cookbook>ruby script/generate login Account

create lib/login_system.rb

C:\nonidata\InstantRails\rails_apps>cd C:\nonidata\InstantRails\rails_apps\cookbook

C:\nonidata\InstantRails\rails_apps\cookbook>ruby script/generate controller test

exists app/controllers/

[Ruby] Rails(ActiveRecord)の多対多関連 - yuum3のお仕事日記

has_one

has_many

belongs_to

has_and_belongs_to_many

habtm と has_many :through (ActiveRecord)

ヽ( ・∀・)ノくまくまー(2006-01-20)

ActiveRecord の歩き方 - Association 編(1) - Rails で行こう! - Ruby on Rails を学ぶ has_many :comments

developerWorks Japan  has_one :address

Rubyist Magazine - RubyOnRails を使ってみる 【第 3 回】 ActiveRecord

create メソッドを使うこともできます。create は new したあと save (DB に格納) します。


Rubyist Magazine - RubyOnRails を使ってみる 【第 4 回】 ActionPack

find(:all, :conditions => ["user_name = ?", user_name])

find_all(["user_name = ?", user_name])

find_all_by_user_name(user_name)


Part2 Rubyに学ぶ「Ruby on Railsの正体」:ITpro

book = Product.find_or_create_by_name_and_price('book', 2079)

リスト7●productsテーブルからnameが'book',priceが2079であるようなProductオブジェクトを読み取り,存在しなかった場合はデータベースレコードを新規作成する処理


RoR Wiki 翻訳 Wiki - HowToUseLegacySchemas

恣意的で複雑なクエリや、主キーを持たないテーブルにはfind_by_sqlを使う

テーブルが論理的な主キーを持たないなら、

find_by_sqlを使えば主キーを全く指定しない曖昧で複雑なクエリを実行も実行できる。

Post.find_by_sql ["SELECT * FROM posts WHERE author = ? AND created > ?", author_id, start_date]


エディタ utf8

文字化け

ヽ( ・∀・)ノくまくまー(2006-10-11)

チュートリアルを動かしてみる - 肩書「シニアコンサルタント」のつぶやき

Railsでソーシャルブックマークを作ってみようか(第1回) - 坊やがゆく

ようこそ<%= @session['user'].login %>さん

@session['user'].id


Railsでソーシャルブックマークを作ってみようか(第2回) - 坊やがゆく

Railsでお馴染み37signalsのURLが凄い件について:TKMR.blog.show

URLにキーワードを含めことでSEO対策になるかも、でもそれだけ:TKMR.blog.show

http://127.0.0.1:3001

http://127.0.0.1:3001/recipe/list

tetraの外部記憶箱 - Instant Railsのインストール , 追記:phpMyAdminの日本語環境設定 , 未踏ソフト記事

[Ruby]PHP VS Rails (Ruby on Rails)

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