「配列」を含む日記 RSS

はてなキーワード: 配列とは

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

”今後必要になる〜”の著者がうちの派遣おっさんだった

かなり興奮しているし酔っているので要領を得ないかも。

今日急にうちに派遣で来てるおっさんに飲みに誘われて、会社の近くの安い居酒屋につれていかれた。

なんで誘われたかというとこれもうまく言えないのだが、チームや全体での飲み会で近くにいることが多く、不幸なことに自分が少し聞き上手だからかもしれない。

とにかく席についてビールが来ないうちに、人をばかにしたような半笑いで話を切り出された。

おっさんが持っている10年も前にあったようなガラケーメモ帳画面を見せられ、君になら理解できるだろうとかクィータとかいサイトにはろくな人材がいないとかブツブツ言っていて、俺はメモの中身を読み進めているうちに顔が引きつっていくのがわかってなぜか記事自体よりもそのことで笑いが止まらなくなりそうなった。

しばらく自分はどうすればいいのか知らないふりをするべきか、なだめたほうがいいのかまじでわからなかったのだが、結局記事の本意を聞きたい好奇心には打ち勝てなかった。

ちなみに自分仕事場ではWinXPが現役で動いている。派遣おっさんも含め会社がそういうカラーだと言えば伝わるだろうか。

自分趣味でReact(ないしReactNative) とかで家計簿アプリを作っているし、Androidも(それこそJavaでだが)やっていてちょっと新しい技術は知っているというレベルである

・「マスター言語」について

端的に言うと「必修」という意味で使ったらしい。ルー大柴かおまえは。いや意味が通ってないしルーに失礼か。

JavaJavascriptが同列になっている点について

どうやらプロトタイプベースオブジェクト志向という意味をはきちがえている。

まりJavascriptはオブジェクト指向言語プロトタイプとして生まれ言語であり、完全オブジェクト指向言語(これも意味がわからなかった)のJavaとは切っても切り離せない関係であると思っているらしい。もう自分はここらへんから笑いが変な声で漏れる笑いを堪えられなくなっていて、喘息気味なんですとかアホな言い訳必死ごまかそうとしていたんだけれど、この派遣おっさんに対してそこまで気を使っている自分にも笑いが止まらなくなってまあなんというか、おもしろかった。

RubyJavaサブルーチンとは

Rubyが(というかRORが?)動作が遅いという話をどこかで読んだか聞いたかしたらしく、そして動作が遅いかわりに処理がしっかりしている(現文ママ)という位置付けの言語だと思っているらしい。正確性が必要な処理はサブルーチンにしたRubyに投げるべきだとかなんとか。

パッセンジャーよりもエンジンクスにひもづけるべき(現文ママ)とか言っててもうビールがまずくて仕方ない。

MSDN

自分MSDN学生時代にVisualC++とかで使ったことがあって、デスクトップアプリ用のライブラリだとずっと思ってたんだけど、違うんですかね。(無知

MSDM(何度聞いてもエムにしか聞こえない)の逆アセンブリ言語C++だとか、ここの話は輪をかけて本当に何言ってるのかわからなかった。

ねこのことを考えて耐えた。

SQL

あんま深く考えてなかったらしい。言語名前がついているか言語のくくりに入れた、くらいのスタンス

ちなみになぜか、使ったこともないらしいSQLiteで配列型を使えないことは知っていた。

と、ひと通り聞きたかたことを聞いた後、もうなんか疲れ果てたのでビールを半分残して帰った。

よほど調子が悪く見えたらしく、おっさんはひどく自分のことを心配してくれた。ごめんおっさん

2018-11-06

テプラの達人を増田探しに氏が差出すまをン実たのらぷ手(回文

おはようございます

遅く起きた朝アンニュイ雰囲気で、

午後の紅茶ストレートミルクティーを鍋で温め直しながら

ポテトチップスを食べてるから遅くなったってわけじゃないの。

事務所テプラを出して貼るって事で

テプラぐらい簡単よ!って調子に乗って手伝うことにしたら大変なことになったの。

結論から言うと連続印刷が出来ないから面倒くさい!

コピペできないから面倒くさい!

何個文字を打ったか画面が小さくて見えなくて数えながら打つのが面倒くさい!

と、もう面倒くさいのヒッツオンパレードなのよ!

今の時代大喜びでテプラ出してる人っているのかしら?って言うぐらい

レガシーな感じがするわ!

例えばね「みかん」ってシール10枚出したいとするじゃない、

印刷枚数指定ができないので印刷ボタン10回押さないといけないという感じなの。

わかるかしら?

え?もうマジ?今の時代連続印刷できないだなんて!!!

工夫して考えたあげく、

みかん みかん みかん みかん みかん みかん みかん みかん みかん みかん

って一行にみかんってたくさん入力して、これを1枚で印刷するのよ。

であとでちょきちょきハサミで切る感じ。

ちょっとテクってみたわよ!

10ならいいけど24枚とか35枚とか中途半端な枚数だと、

液晶画面が小さくて全体が見えないから、

入力した回数を「正」の字でカウントしながら入力するという涙ぐましんぐなダンシングヒーローなわけよ!

荻野目ちゃん!!!

復活の呪文入力するより苦痛わ!

ラブソングを探してって、

かましーわい!

まあ私はバックアップバッテリー世代からそんな苦労は知らないけど。

そんでね、

テープの長さがセンチで表示されるけど、

これが正確な回数とは限らないし、

ワカメだわ。

USBキーボードだって接続できないのよ!

いくらQWERTYUフジ配列キーボードだと言っても

小さくて入力しにくいわ!

でもね、

油を得た中華料理のようにだんだんとコツを掴んできたか

あっと言う間に出来ちゃったわ!

パチパチパチ!

出来たから良かったけど、

ちょっとパソコン接続できるテプラ機械を買うことにしたわ!

こんなローテクノロジックな場面に出くわすとはまさか平成最後にそうなるとは思わなかった。

おかげでこんなに遅くなってしまったわ。

テプラについて1日考えてみるのもいいわねと思った次第よ。

だって今日はおあいにく様、

テプラの日」なんだっていうのがなんとも皮肉ね。

うふふ。


今日朝ご飯

ハムタマサンドイッチ豆乳バナナ

これ最近お気入りなのよね。

自分でも作って試してみようと思って

バナナ豆乳を準備してるんだけど、

なかなか豆乳を投入する機会がなくて、

でも今度作るわ。

デトックスウォーター

白湯ホッツウォーラーインザ梅干し

昼はまだ暖かいときがあるけど、

朝晩はさすがに冷えてきたわね。


すいすいすいようび~

今日も頑張りましょう!

2018-11-04

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

前回は、Webアプリの骨組み(スケルトン)までを作って、製作過程を見てみました。

今回は、データベースCRUD操作を行なって、チャットメッセージを追加/取得/変更/削除する機能実装してみましょう。

 

Visual Studio Codeの準備

Webアプリを作るときに、「Visual Studio Code」というIDE統合開発環境)を使ってみましょう。PHP用の各種プラグイン(「PHP IntelliSense」「PHP Debug」など)を入れておけば、便利に使える。

 

メッセージの追加

  1. ViewHTMLのFormタグを使って、メッセージ入力送信できるようにする。
  2. Controller:Viewから送信したデータを受け取れるようにする。
  3. Model:Controllerが受け取ったデータデータベースに保存する。

という機能実装してみよう。

 

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>

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

 </body>

</html>

 

Viewの改造の解説

本当はセキュリティーを考慮して、入力値の検査バリデーション)とか、もっといろいろな仕込みが必要だが、ここでは練習なので省略します。

 

Controllerの改造

 

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

<?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);

  }

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

Controllerの改造の解説

 

Modelの改造

ここでやっとSQL文の登場だ!!!

SQL説明たかったのに(SQLとは本質的関係がない)Webアプリ説明が延々と続いた。(説明方法を変えた方がいいねw)

データベースデータを保存(追加)するSQLコマンド「INSERT」を使ってみよう!

 

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

<?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();

 }

}

 

Modelの改造の解説

 

以上、メッセージの追加を実現するために、MVCの各パーツを用意した。これでメッセージの追加だけができるようになった。

これだけではメッセージの取得=表示がまだできないので、次はデータベースからメッセージデータを取得して、Webページに表示できるように改造しよう。

 

メッセージの取得

SQLの「SELECT」を使えば、データベースからデータを取り出せる。

メッセージデータを取り出して、Webページの表示で使おう。

 

Modelの改造

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

<?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();

 }

}

 

Modelの改造の解説

 

これでデータベースからデータを取り出すSQLメソッドモデルに用意できた。

 

Controllerの改造

 

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

<?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()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

Controllerの改造の解説

これは全部CodeIgniterで用意されている機能なので、マニュアルを読めば使い方が分かるようになってます

 

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>

  <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の改造の解説

 

説明文が300行を超えてしまった!これ以上は増田で表示できない。)次回はメッセージの変更をやってみよう。

 


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

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

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

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

2018-10-19

anond:20181019170314

新規案件で違う制作会社を探そうと思ったけど能動的に探すのって結構面倒で

じゃあ募集して応募してもらっちゃうかと短絡的に考えたのが失敗だった。

単価もめちゃくちゃ安くて実績も今思えば随分ふんわりしてた。

PHP配列からね。お前何ができるんじゃってレベル

5000円でロゴ募集してるとかじゃないんだからちゃんとやってほしいわな。

クラウドソーシング業界は一回生まれ変わらないとダメだわ。

応募側も競争になるから手を抜くし(実力かも知らんが)、募集側も安く出来ればラッキーくらいで

そもそも双方ともにオンラインの受発注に慣れてないし(どうやって実力を見抜くかとか)。

anond:20181019163742

ロゴは似たようなやつばっかり来るよね。

高級感あってレクサスみたいな?とか書くとまんまレクサス文字変えただけだったり。

HPの実績でも教育系なのに全然違うデザイン実績持ってこられると「この人分かってんのか?」って思う。

HTMLコーディングとか、そんなに差が出ないやつじゃないとクラウドソーシング使えないと思う。

プログラマやばいよ。こないだ1日で契約切ったやつは10年やって配列が良く分かってないってレベルだった。

何行目に~~書いてくださいとか指定してあげたけど、もう無理だと切ったわ。

素直に制作会社見つけてパートナー契約したほうが良い。

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

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

今回は、手続プログラミングの後半となる「オブジェクト指向プログラミング」(OOP)について学ぼう。

OOPは内容が多いので数回に分けて説明してみます。(説明が下手だったらフォローお願いしますw)

 

オブジェクトとは何か?

オブジェクトobject)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象抽象化する概念である

 

オブジェクト指向プログラミングパラダイムでは、関連するデータを束ね、代入、演算手続き(関数メソッドなど)を介した受け渡しといった操作対象にでき、またメッセージ受け手になれる実体オブジェクトと呼ぶ。

多くの場合オブジェクトは他のオブジェクトを要素として格納することができ、複雑なデータ構造表現できる。

 

Wikipedia説明は分かりづらいね。(初心者だったときの私が読んだら意味理解できないと思う)

 

増田プログラマー養成講座 その2 https://anond.hatelabo.jp/20181016164341説明した「プログラム構成要素」を思い出して下さい。

プログラムは、

  1. データ
  2. 「処理」

の2つから成り立っている。

プログラミング歴史は、この「データ」と「処理」をどうやって使いやすくするか?の試行錯誤になってる。

 

Java入門書にも、データ構造について説明があっただろ?

 

構造体の発展=オブジェクト

複数データをまとめて入れておく箱は便利な道具なので、だいたいどのプログラミング言語でも用意されている。

この講座では、複数データをまとめて入れる箱を「構造体」と呼ぶことにしよう。

 

構造体の各箱には、普通データ」を入れておくんだけど、データだけじゃなくて「処理」も入れておけると便利だ。

データ」も「処理」も保管できるように拡張した構造体に、「オブジェクト」という名前を付けた。

オブジェクトとは、言い方を変えれば、「データ」に「処理」をくっ付けたものなんだ。

 

このWebページ最初の方に「図: オブジェクトフィールド(データ)とメソッドを一つにまとめたもの」という説明図があるだろ?

この図で、オブジェクトの中に、いくつか箱があるけど、

なんだ。

オブジェクトそれ自体特別ものじゃなくて、ただの箱でしかない。データ構造一種であることが分かっただろうか?

今の段階では、難しく考えなくていい。

ややこしくなるのはこの後だ。オブジェクトを使うときに「なんでそんな使い方するの?」という段階になってからだ。(気を緩めないように、ちょっと脅しておこうw)

 

クロージャ

が「オブジェクト」なら、その反対に、

もあるんじゃないか?と思ったそこのキミ。正解!

「処理」に「データ」をくっ付けた仕組みもあって、「クロージャー」と呼ばれてる。

 

クロージャ(closure)、関数閉包はプログラミング言語における関数オブジェクト一種

いくつかの言語ではラムダ式無名関数で実現している。

引数以外の変数を実行時の環境ではなく、自身定義された環境(静的スコープ)において解決することを特徴とする。

関数とそれを評価する環境ペアであるともいえる。

オブジェクトインスタンス変数とは、オブジェクトインスタンスではなく関数の呼び出しに束縛されているという点で異なる。

この説明文読んで、クロージャーの仕組みがスパッと理解できる初心者っていねーだろ?(いたらビビるw)

Wikipedia説明は「何言ってるか分かんない」状態だけど、サンプルを動作させてみれば、仕組みは簡単に分かります

 

第1級オブジェクト

ここまでの説明で、「プログラミング言語は、機能自由拡張できる」と分かっただろう。

から、「データ」と「処理」の扱い方を工夫する歴史の中で、「オブジェクト」という仕組みを閃いちゃった奴がいたんだねw

 

オブジェクトの特徴をもう一度振り返ってみよう。

普段は「データ」をぶち込んでおく箱の集合体に、処理も入れられるように改造しちゃったのが「オブジェクト」だったね?

…ってことは、処理とデータ水と油みたいに別々のものじゃなくて、実は処理もデータと同じように扱えるものだってことになるよね?

そうなんです!

実は「データ」と「処理」は全然別なものじゃなくて、同じようなものとして(扱おうと思えば)扱えるんです!

それで、このデータとして扱えるような「処理」に名前を付けてあげて、「第1級関数」とか「第1級オブジェクト」と呼んでます

(「第1級データ」という呼び名が使われてないのは、データデータとして扱えるのは当然なので、わざわざ第1級データという呼び名を付ける必要がないから)

 

第一オブジェクトファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、たとえば生成、代入、演算、(引数戻り値としての)受け渡しといったその言語における基本的操作制限なしに使用できる対象のことである

ここで「オブジェクト」とは広く対象物・客体を意味し、必ずしもオブジェクト指向プログラミングにおけるオブジェクト意味しない。第一オブジェクトは「第一データ型に属す」という。

言語によって異なるが、第一オブジェクトは概ね次のような性質もつ

上記説明文の中で「制限なしに使用できる」って部分が重要

 

第一関数(first-class function、ファーストクラスファンクション)とは、関数第一オブジェクトとして扱うことのできるプログラミング言語性質、またはそのような関数のことである

その場合その関数は、型のある言語では function typeなどと呼ばれる型を持ち、またその値は関数オブジェクトなどになる。

具体的にはプログラムの実行時に生成され、データ構造に含めることができ、他の関数引数として渡したり、戻り値として返したりすることのできる関数をいう。

上記説明文の中で「データ構造に含めることができ、」って部分が重要

 

フリーパスでどこでも入れちゃうVIPみたいだからファーストクラス(第1級)と称されてるんだね?

ドラえもんの「オールマイティーパス」を持ってる奴みたいなのが、「第一オブジェクト」「第一関数」ってわけ。

ドラえもんオールマイティーパスは、どこでも入れる通行証です。

これを係員に見せるだけで、どんな交通機関でも無賃乗車できて、どんな有料施設でも無料入場できます

通常なら入ることの許されない立ち入り禁止区域でさえ入れます

 

 

オブジェクトまとめ

 

混乱するようなら、上記説明で、クロージャー以降の話はとりあえず無視してください。

 

参考

オブジェクト説明をどうしようか?と考えるとき、参考にしたページも紹介しておきます

 

 

次回、オブジェクトの使い方=オブジェクト指向プログラミングについて学びましょう。

 


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-10-11

anond:20181011040543

人文学社会科学か。社会科学のほうが科学なのに怪しさが入り込む余地がある気がしてしまうのも奇妙だが、哲学とかだと論理的議論はあっても「正しさ」を決めることはできないからかな。

なんとなく「人文学」と書いたけど,「人文科学」と呼ぶこともある.私個人としては別にどっちでもいいかと思うけど.人文系社会科学系と呼んだりもする(総称は「人文社会系」とか「人文社会科学」とか).「社会科学」は略せないんだよな,「社会学」とかぶちゃうから.このへんは前増田で参考文献として挙げた隠岐さんの著作面白かったから読んでほしい.オススメ

理系でも教授の贔屓やコネはないわけじゃないけど論文数(あるいは引用数)で無能認定する仕組みは馬鹿排除には有効なんだよ(捏造動機にもなるけど)。

論文数で無能認定文系でもよくあることです(ただ,論文をあまり書いていないだけで該博な知識を有してる人なんかは尊敬される.周りは「もっと論文書いて! 読みたい!」って思ってるけどw そういう人がポストを得られていなかったりして業績少ないから仕方ないと思う反面すごいもったいないなと思ったり).ただこれも分野によっては1年に1本書いてりゃまあ標準的,というところもあれば1年に2・3本書くのが当然だろ? という分野もありで,その上分野によっては査読の有無での格付けとかもあまりしないので(そりゃ学振申請書では査読つきとなしを分けて書くけどね),安易に異分野の人が自分野の基準無能判定するのは本当に良くないからやらない方がいいと思う.今年は著書1冊書いてるけど論文は書きませんでした,を理系基準で業績ゼロって判定されたら暴動起きますよ.

あと歴史学文学だと,いちばん大事仕事論文執筆じゃなくて史料校訂だ,という感覚もあったりして,そのへんがきちんと評価されるのが望ましいよなぁと.ある平安貴族について論文書いても分析視角ニッチならあまり引用されないかもしれないけど,どこぞのお寺なり旧家なりにしまわれてたその貴族日記活字に起こして誤字脱字を訂正して単語意味解説して背景情報を補足して(日記って本人にとって当たり前のことは書かれないけど,1,000年経ったらそんなことわからないので),っていう作業をしたらその後平安時代歴史文学をやる人に参照されまくる基礎文献になったりする.こういう地道なレファレンス作りや史料校訂がきちんと評価される仕組みであってほしい……

で,引用数については問題点が2つあって,

1.どうやって数えるのか

これは技術問題.色んな言語で発表される紙の本での引用数,どうやって数えたらいいの……? ってやつ.異国の本屋さんで面白そうな学術書があったから手に取ってみたら私の論文引用されてたとか,異国で買った本をパラパラ読んでたら知り合いの英語論文引用されてたけどその知り合いはその異国語を読めないから多分存在を知らないだろうなとか,そういうの割とあるあるなので,人文系じゃ誰も被引用数なんて気にしてない.ぶっちゃけ無理ゲーだと思う.

あと,英語の本で引用されて,そのあとその英書が10国語翻訳出版されました,という場合は,何回引用されたと数えるべきだと思う? 1回? 11回?

2.それ数えて意味があるのか

そもそも優れた先行研究を褒めるのにもダメな先行研究をけなすのにも引用をするわけで,ある論文の中でむっちゃ参考にされた文献とけちょんけちょんにされた文献の2つがどちらも引用1回ってことにされちゃう不公平すぎない? って思うんだけど.それに,自分の専門分野についてあまりにひどい俗説が広く出回ってるとき学術文献じゃなくても引用して批判することがあるので,たとえば日本近代史の人が小林よしのりの『戦争論』を名指しで批判するとかよくある.純粋引用された数で勝負したら小林よしのり惨敗するマトモな研究者って大勢いると思うんだよね.

というか,文系だと「他人の書いた文章研究対象にする」というのがあるので,村上春樹研究なら当然村上春樹引用するわけで.さら学問分野によっては,「文献リストに先行研究研究対象を一緒くたに並べる」慣行を持つところもあり(これはその分野なら英語圏の査読誌でもそうなってる),たとえば樋口直人『日本排外主義』という日本極右研究した本の文献リストには,日本欧米社会学者が書いた真面目な研究文献と桜井誠櫻井よしこ西尾幹二の本がABC順でごちゃ混ぜに配列されていて,両者は引用形式からはまったく判別できない.本文を読めば前者を参考にして後者分析したり批判したりしてるのがわかるんだけど,機械的区別することは不可能.なので在特会に関する研究が進めば「桜井誠引用数で負ける研究者」がたくさん出てくると思うけど(というか現時点での私が負けてる疑惑),この基準どう考えてもおかしいでしょ.文系の業績を考える上で被引用数はマジで無意味だと思う.

追記

id:q-Anomaly 面白かった。一般文芸と一緒になっているから大変なのかな?理系だとわざわざトンデモさんに言及したりしないしね。間違いを指摘するとき論文ではなくて直接メール、もしくは研究会で議論かな。

もちろん文系でも別に公な場で晒し上げるほどじゃない間違いだったら直接本人に言うとかあるのでそのへんは批判する人の性格とか人間関係にも拠るところはあり,一方で理系でもSTAP細胞ときはさんざん批判論文出てたように思うので公開の場で批判する文化は当然あると思うのだけれど,間違いの指摘を必ず公開の場でやるわけじゃないとか言われるとじゃあこれまで理系には透明性のある評価基準があるけど文系にはそれがないかダメとか言ってたのはいったい何だったんだよ……って思うわ.あなたが言ってきたわけじゃないかあなたに言うのは不当なのかもしれないけれど.

id:hogefugapiyox 増田 理系(理論)でも独創的な論文で高く評価されるけど問題自体が超ニッチ引用は増えないことはありうる。そこで論文誌や国際学会のランクが役立つことはある。正しくてもレベルがそぐわないもの査読で落とされるので

これは文系でもあるあるメジャーテーマ研究していてもつまら論文しか書いてなければ意味はないしマイナーテーマでも面白論文が書ければ就職が決まる.

id:death6coin 参考にしたのと批判したのは別にリストアップする形式がいまからまれ得るかというと・・・難しそうですね。批判にも論外から一部の点で疑問があるまで程度があるだろうし。

「この論文はこんな資料を発掘してくれたので重要だ.でも発掘した資料解釈に疑問がある」とか,どっちにリストアップすればいいんだよという話で.

でもって,リストアップの形式については出典をどう示すかという形式が大きく絡んでくるんですわ.たとえば,歴史学なんかだと先行研究研究対象は別々にリストアップするけど(それでも流石に優れた先行研究ダメダメな先行研究は分けないよな),それは社会学とは違うやり方で出典を表記しているからそういうことが可能なんだという事情もあって,まあこのへんは自分学術書やら論文やらを読んで出典チェックしたことがないとわかりづらいかもねえ.社会学とか一部の分野で全部ごちゃ混ぜにした文献リストを作るのにも合理的理由があるんですわ.

id:hisawooo 増田に言うんじゃないんだけども、トンデモ論文への直接的な批判するなら一番マトモで普通な手段編集者宛のレター(つまりは読者からのお便り欄)じゃないかね(理系の話をしてます

なるほど,そういう慣習があるのね.言われてみれば文系でletter欄って見ないな.

で,文系論文だと本論に入る前に「先行研究の整理」ってやるんですわ.「先行研究Aは基本的妥当だがこの部分の解釈問題があり,先行研究Bは古いため近年発見された資料を使っておらず,先行研究Cは優れた研究だがちょっと私のやりたいことについてあまり触れられてなくて,先行研究Dは論外」みたいに整理した上で,じゃあ先行研究A~Cの成果を踏まえて先行研究Cが見落としている角度から先行研究Bが使ってない新資料を使って先行研究Aとは違う解釈します,みたいに自分論文の意義や新規性アピールするわけ.なので純粋な参考文献だけの抽出とか無理ゲー

id:enemyoffreedom 引用数の正しいカウントがやりづらいのは、さすがにその分野の引用慣習に問題ありな気も。他分野や門外漢から見た透明性の確保も今後は必要になっていきそう。まぁそれだけが業績評価を左右するようだと不健全だが

たくさん引用されたか価値がある研究! とかいローカル基準に基づいてヨソの分野の引用慣習をまるごとdisるならこっちもお前らのそれってPV数狙いのSEO対策でクソ記事垂れ流す互助会みたいなクソ慣習だなって言っていい? つーか文系査読なしで論文のチェックをしない! 不健全! と文系批判対象も引用に含めている! 不健全! ってマジどうやれば同じ口で言えるんだよって感じ.クソ論文をきっちり論文中で批判してるから正しいカウントが難しいって話に正しいカウントがやりづらいか問題とか言われるのマジ批判のための批判じゃん.全部ごちゃ混ぜで引用するのにも合理性はあるんですよ.そんなのはその分野の論文なり著書なりを読んで出典チェックしてみればわかりますよ.何度も言うけど英語圏でもこういうやり方なの.本当にこの慣習を是正たかったら理系の皆さんが大好きな英語で全世界普遍的問題提起をなさってくださいよろしくお願いしますクソが.

すごい大事追記

id:rci このシリーズはとても面白い。

面白いと言ってくれるのはありがたいんだけど,あなた一連の増田ちゃんと読んでる? このトラバリーの中で,私は何度も自分オタクだって言ってるよね? だからhttp://b.hatena.ne.jp/entry/372509722/comment/rciみたいな雑括りされても本当に困るんだけど.まあ記事の隅っこで書いてるから気付かなくても仕方ないところはあるけど,そうやって文系オタク対立構造にされて困るのは私みたいな文系オタクなんだよ.ほんと勘弁して.

正直私はキズナアイについては興味ないし,どうせならシロちゃんやらせればよかったんじゃ,とか思うけど,同時にあのくらいの服装が叩かれるとかおかしいよな,とも思うよ.なぜか服装に関してはゴリゴリ保守派になる連中が多くて目眩がしてるよ.色んな変わった服装を好む人への抑圧だろ.ぜんぜんNHKに出ていいよ.それが多様な社会であり自由社会だよ.

とにかく私は両側にもうウンザリ.ろくに事実関係を調べもせずVTuberについて基本的なことを知りもせずキズナアイを叩く連中にも,ろくに文系について知りもせずどんな研究をしているか理解もしないできないのにクソバイスを垂れ流す連中にもウンザリです.オタク叩きも文系叩きもクソくらえ.どっちも私の敵.ただもう本当にこれ以上関わり合いになりたくないのでここ数日の荒みきった心を『ヤマノススメ』の録画を見ることで癒やしてきます.一連のレイニーブルー展開を鑑みる絶対ここなちゃんはひなたをあおいから寝取ろうとしてるしかすみさんはあおいをひなたから寝取ろうとしてると思うんだよね.

もうちょっとだけ続くんじゃ

これ面白い。「実際は擁護・反発ツィートが多かった」オタがヒステリックにわめいていたことが可視化されました。千田さん、池内さん、森次さん、宇野ゆうかさんあたりはネットリンチ被害者といっていいよなあ

http://b.hatena.ne.jp/entry/373077720/comment/rci

理不尽言いがかりに反発したら「ヒステリックにわめいた」ことになるんだ.そんなの私が書いた増田を「なんで発狂してるの」とか「文系理系と違って感情的」とか言ってきたクソ野郎どもと同じじゃん.

キズナアイ叩きについてはオタクとして腹が立つし社会学叩きについては文系として腹が立つし,とにかくこの騒動に関わった連中全員不快だとしか思わないよ私は.つーか公共放送でへそ出しノースリーブの服着て解説して何が悪いんだか.

2018-10-06

anond:20181006184120

AI前例踏襲するのがお仕事なので、((セーラームーン, OK), (プリキュア, OK), (初音ミク, OK), (ケロロ軍曹, OK))という配列を与えた時に

(キズナアイ, NG)は前例一貫性がありますか? ないとしたらどこが異なりますか? どこが指摘者のキチガイポイントですか? という質問には機械的に答えられるよ

2018-10-01

anond:20181001124003

入力言語 == キーボード記号配列だと思ってる連中がIMEを見て真似た結果本物のIMEと衝突してるという印象

2018-09-24

anond:20180924095349

現場10年頑張ってる人には敵わないかな。C・C++JavaPHPPython趣味程度に勉強してきた。知り合いに技術者がいるならその人に頼ったほうが俺に聞くよりいいと思う。聞く人がいないなら学校行くか良書を探す方法があるね。プログラミングを実際おこなっている動画を見るのもありだな。大工が家を建てるのと同じで本見ただけじゃ分かり難いとこがある。

上には書いてないけど金があるなら本を買うのが大事、優れた良書は家庭教師と同じくらい役に立つ。あと1500円くらいのその言語関数の一覧が分かる本。その2冊くらいは最低必要言語自体流行り廃りや潜在的な使いやすさもあるけど、ライブラリ解説書が揃っていることも重要最後に迷ったら言語使用人数が多い言語を選ぶという手もある。分からなくなった時にWeb関数名や用途検索すれば大体の場合検索に引っかかる。例えばこんな感じ「Ruby 配列 追加」「HSP 円」マイナー言語だとこれに引っかからない場合がある。

2018-09-21

anond:20180920144020

情報系だったら3D処理は全部行列処理だから

かなり複雑な行列までわかってないと厳しいんだが…

あと普通配列処理も行列として処理するとシンプルになったりするけど、

知らないと回りくどいことやって無駄コードが増えて死ぬ

2018-09-17

アイコンが似てて区別がつかないブクマカ

デフォルト勢はidに目が行くし、出現頻度が高いのにデフォな人は限られてるから割と判別できる

の人たちはほぼ同一視してる

2018-09-08

anond:20180908093221

キートップは変えずにdvorak配列変換してると、Qwerty配列でのIがCだしOはRになって今でもキートップのOを見るとRだなって思っちゃったりする

2018-08-25

anond:20180825171233

ローカル規格大好きバカプログラマーがみんなUS配列でUS配列こそが至高とデタラメぶっこいているからな。騙されても仕方がない。

一般人は、国際規格的に正しく、日本語もよく考えられているJIS配列を買おうね。

英語キーボードバカ

JIS配列日本国内ローカル規格で馬鹿にし、USキー配列こそが世界標準だとドヤ顔で言ってるバカ

実は、国際規格的にはJIS配列のほうが正しいことを知らないただの情弱

IE使い続ければシステム変更しないで済むしActiveXも動くし便利~みんなIE統一すればいいのに~」とか言ってるアホと同類反省せよ。

2018-08-06

anond:20180806211722

そんな簡単なケースを言ってんじゃないんだよ。

それに、その例だったらinoutで行けるじゃんか。

問題は、構造体や配列系(Dictionary含む)のメンバーポインタを使えないこと。

いちいちクラス作ってクラス変数として定義しろとか、やってらんない。

2018-07-18

Touch bar は従来のファンクションキー上位互換

従来のものと全く同じ配列に固定することもできる。

2018-07-10

GPD Pocket2、すごく良くない?

スティックポインタは無くなったけど代わりに画面奥に光学ポインタ搭載となった。

キーボード配列JISっぽくなったし、Vaio U好きだった奴には堪らない級になったくさい。

前のモデルと値段同じor+1万円までなら出す価値あるぜ…!

2018-07-08

anond:20180708115802

キーボード配列関係かな?って一瞬検討したんだけどキーボード配列でも不自然過ぎて言語文化とは全く別の要素が影響したと思う

2018-06-25

.findこわい

おまえ、値返すって説明なのに実際は参照を返してるじゃねぇか…

なんでお前の結果にpushしたら元の配列の内容変わってんだよ…

ネスト

for文(配列制御関数)のネストが3重以上になると無力感に襲われる

無能でごめんなさいという気持ちになる

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