「動作」を含む日記 RSS

はてなキーワード: 動作とは

2018-11-16

歯磨き粉を歯磨きっていう人

歯磨きってどう考えても動作のことでしょ。

なんで粉を歯磨きって言うの?分かりづらすぎる。

歯磨きの主たる道具が一つしかないならそれでも分かるけど、歯ブラシ歯磨き粉でダブル主役なんだからさ。

あと歯ブラシ粉って言うのも好きじゃないなあ。

うまくはしる

真面目な話をするから聞いてくれてありがとう

足が速くなったときの思い出がある。そして、子どもがいたらぜひ試してみてほしい、というものがある。

ちなみに現在の私のスペックは脚が長い。瞬発力はない。ただ脚力はあって、腿上げジャンプが得意。周囲が言うには、脚がマンガのように速く動くわけじゃないが、一歩がすごく大きいらしい。スポーツ経験水泳サッカーで、脚が速くなったのはサッカーをする前だ。

ひとつのキッカケがあり、それが今回のトピックである

それは、馬のように脚を動かす、というもの上半身の動きはなく、片方を前脚と見たて、もう片方を後脚と見たて、動かし、後脚で地面を蹴るようなイメージ。私は当時からテレビ画面に映る合戦のなかを駆け抜ける騎馬が好きだったので、馬になりたかったのだ。

この動作で走ると、ただそれだけで速くなった、気がした。あまりにも変な走り方なので、リレーなんかでは試せなかったが、その年からリレーは一番になった。

なにか走るときの地面の蹴り方のコツでも掴んだのだろうか。それともたまたまなのだろうか。

いろんな要素があると思うが、馬のように走ってみたい人がいたらやってみてほしい。

2018-11-15

50歳から筋トレをしない方がいい。骨を鍛えた方がいい。

https://jp.quora.com/50%E6%AD%B3%E3%81%8B%E3%82%89%E3%81%AF%E7%AD%8B%E3%83%88%E3%83%AC%E3%82%92%E3%81%97%E3%81%AA%E3%81%84%E6%96%B9%E3%81%8C%E3%81%84%E3%81%84-%E9%AA%A8%E3%82%92%E9%8D%9B%E3%81%88%E3%81%9F%E6%96%B9%E3%81%8C%E3%81%84

私は、還暦過ぎなので、ぜひ、回答させて下さい。

記事は、読みました。ある程度、正しいと思います

この話は、「スポーツ力学」ではなくて、「老化の問題」として考えてみて下さい。

「骨を鍛える」と言う意味は、骨芽細胞への適度な刺激(適度な衝撃、圧迫)と、姿勢の維持、矯正免疫強化と言う意味です。

いわゆる、筋肉特定部位を鍛えるための筋力トレーニングは、50歳以上はしない方が良いというのは、私の実体験上も、正しい気がします。

高齢でも、若いからスポーツ肉体労働を続けている人は、その筋力の維持と言う観点で、論外としますが。)

実は、私も50歳頃からスポーツ器具を使った筋力トレーニングをしていました。

鉄アレーやら、ウォームレスト等、筋力強化器具を付けてのトレーニングでした。

が、55歳を越えた頃から、それを続けていて、どうも、様々な、痛みや体の不調があるなあと、少しづつ感じはじめていました。

当時は、その不調の原因が判らなかったのと、「死ぬまで筋力をつけるべし」的な神話を信じていたのは確かです。

ところが、その神話が崩れたのは、2つのできごとがあってからでした。

一つ目のできごと。

ある時、パソコンを持って、急いで会社から帰宅中。

階段の途中で、足をよじってしまい、パソコンかばって、腕でそれを支えたまま、倒れてしまい、肩、背、股関節回りの筋をひどく痛めてしまいました。

捻挫した部分や、ぶつけた部分は、一ヶ月ぐらいで治り、その他の部分も痛みが消えたのですが、

しばらく後(数カ月後)、突然、異なる体のあちこちの部位に痛みがでるようになり、酷い時は、座布団に座った状態から、立ち上がるのも苦痛になってしまいました。

その後、整形外科に行ったのですが、そこの高齢医師に言われた原因は、「筋力不足」でした。「え?」って驚きました。

私は、「自分は、普段から筋トレもして、筋力には気を付けていたのですがね」と言うと、高齢医師は、「バカモン。そんな筋トレ、やめてしまえ!」と言います

「なんで?」と思ったのですが。

高齢医師いわく、

自分体重と年齢と体格を正しく見て、不必要筋肉をつけるのはやめるべき、ということでした。

日常生活動作で使わない筋肉ならば、ちょっとトレーニングをやめれば、すぐになくなる。そういう筋力は不要だ。

年寄りは、生活する上で使う、重要筋肉バランス良く鍛えねばならないのであって、スポーツ選手になるのでないなら、日常で使わない無駄な筋力を鍛えたりしてはいけない。

そんな特定の部位の筋力をつけたら、生活必要な体の筋力のバランスが崩れて、転倒した時なんかに、あちこちの細かい筋が切れたり、炎症を起こしたり、一部の弱い筋肉部位に無理なしわ寄せが来て、姿勢まで壊れてしまう。

歳をとった体を、舐めちゃいかん!!

お前は新人から年寄り新人?)、自分が老化した経験がないから、判っとらんのじゃ!!!勉強せい!!

そんなことより、自分姿勢を正し、日常的に内臓を守ったり、危険から避けるための体の中の筋肉とか、嚥下能力とか、目の筋力とか、姿勢を維持するために必要筋肉とかを、バランス良く鍛えるべし!!

筋トレなんかやめて、体操しろ体操を!!

ということで、私は、器具を使った筋トレをやめて、その後、ヨガ毎日30分するようになりましたが、これ、結構、気が付かない、体中の細かい筋力が付くことが判りました。

自分姿勢を維持するために必要な筋力というのは、筋トレでつけるような筋力とは異なるのですね。

これで、私は筋トレを完全にやめ、より有益な(筋力を鍛える)ヨガポーズ研究するようになりました。

2つ目の出来事は、

55歳頃から始めた、散歩での出来事

階段坂道上り下りすると、左や右の膝が痛くなり、2時間散歩すると、腰がバキバキになるのです。

これも、例の、高齢医師相談したら、

「ばかもん。足を見ろ足を」

と言われ、自分の歩く姿勢を見ていて、足先が、左右に大きく開き(がに股歩き)、姿勢が、前のめりになっていました。

「街を歩いている老人を見てみろ、歩けなくなり杖を付いているやつは、大抵、足先が、Vの字になって歩いている。靴底は、両サイドばかり、片減りしているだろう。それが、どんどん進み、腰が回り、いかにも老人という姿勢になる。お前が、膝が痛く、腰が痛いのは、その姿勢で歩いたり走ったりするからだ。長時間散歩はやめろ!!」

調べると、歩く姿勢に関する色んな文献がでていて、

ガニ股や前かがみの姿勢を続けると、姿勢を維持する筋力がどんどん弱くなり、骨も関節も曲がり、膝や腰に無理な負担がかかる。

若い人間は、それでも普通に暮らせるが、高齢者は、負担のかかった所から、老化が一気に進んで、最後は寝たきりだ。とのこと。

ゾッとした私は、以降、散歩時間を半分に短縮し、代わりに、歩き方を矯正し続けるようにしたのです。すると、様々な部分の筋肉が痛みました。

要するに、姿勢矯正して歩くことを維持すると、普段、使っていなかった(本来、使うべき)筋肉部位に負担がかかったのです。

半年ぐらいで、それらの姿勢維持のための筋力が付いてきたようで、痛みはなくなり、膝の痛みも、腰の痛みも、すっかりなくってしまいました!!(ラッキー

やっぱり、歳をとった体を、舐めちゃいかん!!ということです。

今では、散歩中は、瞑想をし、大きなガラスの前を通る時は、自分の歩く姿勢をチェックし、足先ができるだけ平行になるように常に意識して歩くようにしています

1年間ぐらい、歩き方を調整すると、靴の底の片減りがなくなりました。!!!

私の体験からは、確かに、50歳からは「不必要な」「体の筋力のバランスを壊すような」筋トレはしてはいけないということです。

まず、大切なのは、歳をとった自分の体をしっかり観察することです。

死ぬまで働かせ」「死ぬまで走らせ、食わせ、消費させ」、お国企業のお役に立てる人間にし、そして、年金を受け取らずに、早く死なせるための「筋力トレーニング本」なんて、騙しです(年寄りには)、そんなもの読まずに、まずは、徐々に老いていく、自分の体をしっかり、正しく、理解し、労ることです。

なお、減量ダイエットのために筋力を付ける人がいますが、一言言わせて下さい。

あなたは、「減量ダイエットするために食べ、食べるために減量ダイエットをしてやいませんか?」

筋力トレーニングや、運動ダイエットする前に、生活習慣、食習慣を治し、健康に気を付けて下さい。(特に中高年以降の人)

走りまくって汗かいて、麦酒を飲むのは、単なる快楽主義です。

再び、「死ぬまで働き、食って、消費して、早く死ね。」の戦略に乗せられているだけです。「俺は、経済拡大のために金を使って、太く短く生きたいのだ」等と考えているなら、それは自己責任で、それでいいのですが・・・(笑)

2018-11-13

[]メタルギアソリッド1,2,3

2、1,3の順番でプレイ

全部vita

通してプレイするとさすがにマンネリだな

潜入しながら中ボス数人と戦って終盤で捕まって拷問受けて最後メタルギアと戦って最後最後肉弾戦っていう

4がムービーなげーって言われてるけど正直1のときから長いと思う

4やってねーけど

2は全編人工建造物の中だからつまんなかったけどノウハウ的な問題かいろいろあったんだろうな開発当時の

3で自然の中ってやっぱりいろいろ開発大変そうだもん考える必要あること多すぎて

クソヘタレ下手ゲーマーから難易度は一番簡単なやつで、詰まったらストレス貯める前にすぐ攻略みた

攻略みてもうまくいかん・わからんってのもあって結局イライラするのも何度もあったけど

最初オセロットとの追いかけっ子で3,4回しんですげーイライラしたw

翌日プレイしたらあっさりいけたけど

あと序盤で赤外線ゴーグルがないと厳しくて最初からやり直す羽目になったのはゲームバランス調整ミスだと思う

まあ序盤だからやり直すダメージもまだあんまなかったからよかったけど

1のときから操作性の悪さはあるんだなと変な驚き

移動したいのに壁はりつきしちゃうやつね

あと段差登るために箱に近づいてるだけなのにはりついちゃうやつも

途中から攻略見て8時間くらいでクリアした

通信シーンは音声きかずにそこそこ飛ばしたから全部聞いたら多分10時間くらいいきそう

最後911ムービーなくなったのがいたいなー

唐突感がパない

結局ソリダスと戦うのも微妙な気がするし

リダスのほうが正しいんじゃないのかと思うくらいだったか

難易度は一番低いと思う

(全部ゲームの中の一番難易度低いやつでプレイした中で

草すげー

PS4とパソゲー比べて草はえてる、みたいな比較ゲハで見かけるけどPS2でこれだったらすげーよなあ

vitaになって草増えたわけでもあるまいし

草とか洞窟とか人工建造物とかあって楽しかった

でも難易度は1,2より段違いで高くなってたかベリーイージーでやった

それでもフューリーとヴォルギンとボズは結構時間かかったし手間取ったけど

スタミナと治療要素がめんどくさかった

オセロットが可愛かった ちょっとゲイくさかったけど

格ゲーじゃないからだけど動作キャンセルいかもっさり感がすごいしイライラする

カメラ旋回速度も調整できないのと、カメラ回転とキャラ視点があってないから、カメラまわしてターゲットみつけてよし主観で狙うぞってやったときにあさっての方向むいてたりするからめんどくさい

ラスト脱出してから無駄に長くていい加減にしろという感じ

2重スパイ3重スパイってやつ、アトミックブロンド思い出したわ

2018-11-12

マウスホイールタッチパネル

Webページを読む時、下にスクロールする場合操作

マウスホイール:指をマウスホイールに置いて、指を引く。

タッチパネル:指をタッチパッドに置いて、前に押す。

で全く逆の動作をする。

なのに、マウスホイールタッチパネル上下逆に誤操作したことがない。

やっぱり頭の中でマウスホイールタッチパネルコントローラーとして別物と認識しているのだろうか。

 

でも、昔、マウスホイールタッチパネルを組み合わせたような、マジックマウスを使ってた時も上下逆に動作したことがない。

2018-11-10

anond:20181110213851

レスバトルの常套句

自分を明かさないとレスバトルでは精神的有利ポジに立ちやすいけど、喝破されて予想通りの動作取ってる時点で負けてる

2018-11-09

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RubyJavaサブルーチンとは

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

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

MSDN

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

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

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

SQL

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

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

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

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

anond:20181109164505

スイッチ本体公式サイトで買ったんよ。んで、ケースと保護フィルムつけた。

マリオパーティーとjoyconセットはまだ発売してないから、ゲオに予約した。一万円くらい。

充電器はそれじゃなくて、アマゾンで4つまとめてさせるやつを買った。

microSDはよくわからんからググったら128GB以上がおすすめって書いてあったから128GBでスイッチ動作確認済みって書いてあるやつをアマゾンで買った。

ファミコンゲームが遊べるみたいなこと書いてあったんだけど、それって無料なの?無料っていうかweb会員代だけでやれるの?子供はやらんだろうけど、自分がやるかも。

オブジェクト指向UI

最近オブジェクト指向UIみたいな記事を何本かみた。(流行ってるのか?

GUIと関連付けられて解説されてたけど、俺はDOS時代から同じような問題意識もってたわ。

まずファイル指定して、それからコピーなり削除なり、動作を指示するFILMTN系。

まずコピーや削除などを指定してからファイル指定するFDエコロジー系。

俺は前者のほうが絶対使いやすいだろって言ってたけど、FD派にはまったく受け入れられなかった。

世間的にはFDのほうがメジャーだったし。

やっと時代が俺に追い付いてきた。

2018-11-08

絶対壊れないPCって作れないの

ストレージRAIDで二重化したりするけどCPUマザボや電源も2個ずつ積んで壊れたら切り替わるようなのできないの、ぶっちゃけ8コアや16コアも要らんからそういうのやってくれよ

マザボだって8000円ぐらいが普通で上は2万以上するのがザラにあるんだから価格2倍でもぜんぜんありだろ

メモリだって16G積んで8Gとして動作しても構わない

初心者ユーザーほど壊れたらパニックになるんだからここら辺気を使った製品作ってくれないもんか

2018-11-06

同じ内容の事でも言い方や言葉の選び方によって反応が違う

ってバグじゃね?

効率良いアルゴリズムで簡潔なコード書いたら機嫌を損ねて動作しないプログラミング言語とかあったら大変じゃね?

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

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

前回は、Webアプリの完成見本を先に見てみました。

今回は、Webアプリを作る途中の過程を見て、作る雰囲気を一緒に味わってみましょう。

 

フレームワーク使用ルール=「設定より規約」=手抜きをする仕組み

最近フレームワークは、「設定より規約」(CoC、convention over configuration)という発想で作られている。

フレームワーク規約使用ルール)に従うと、プログラマー作業量が減って、楽ができる。

 

設定より規約(convention over configuration)とは、開発者の決定すべきことを減少させ、単純にするが柔軟性は失わせないというソフトウェア設計パラダイム

使用しているツール実装した規約開発者の望む動作と一致していれば、設定ファイルを書く必要もない。実装規約と望みの動作が違っている場合必要動作を設定しなければならない。

 

最近フレームワークは「設定より規約アプローチ採用しているものが多い。

例えば、Ruby on Rails、Kohana、Grails、GrokZend FrameworkCakePHPSymfony などがある。

 

CodeIgniter使用ルール

CodeIgniter使用ルールは、マニュアルチュートリアル確認できる。

↑このページの「アプリケーションフローチャート」を見てみよう。

 

  1. 一番左の「index.php」が、Webアプリ入口になっている。(エントリーポイントフロントコントローラーパターン等ともいう)
  2. から2番目の上段「Routing」で、URLに応じて、仕事の振り分け先を決定する。(ディスパッチ、マッピングルーティング等ともいう)
  3. から4番目の「Application Controller」で、具体的な処理の指示を出す。
    1. Application Controllerは、「Model」に必要データを用意させる。
    2. Application Controllerは、「View」に表示用の画面を作らせる。
    3. Application Controllerが、index.phpに表示用の画面を渡す。
  4. 表示用の画面(最終的な処理の結果)を受け取った「index.php」は、ユーザーブラウザー)に画面を渡す。

 

 


 

それでは、CodeIgniterプログラマーが用意する部分のM(Model)とV(View)とC(Application Controller)を、骨組みから作ってみよう。

事前準備として、前々回と前回のWebアプリ完成見本を用意するところまでやっておこう。

 

スケルトンとは?

スケルトン(skeleton, 骨格)とは動物人間の骨格。

コンピュータプログラムコードの骨格部分。プログラムコード作成では、初期段階でスケルトン作成し、その後で詳細部分を肉付けしていく。

 

 

 

Application Controllerの骨組み

まずは、MVCのCの骨組みを作ろう。

Controllerは、ユーザーからリクエストを受け付けて、ModelViewに指示を出す監督です。

 

上記フォルダの中に「Welcome.php」というファイルを作る。(デフォルトであるはずなので、それを使ってOK

 

CodeIgniterルールで、Application Controllerを置く場所は「application/controllers」というフォルダになっている。

CodeIgniterルールで、一番最初に呼び出されるApplication Controllerは「Welcome.php」というファイルになっている。

→これは「C:\xampp\htdocs\waf\application\config\routes.php」という設定ファイルで決められている。

$route['default_controller'] = 'welcome'; // 別の名前にすれば変えられる。

 

「Welcome.php」の中身を以下にように変更する。

<?php

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

 

class Welcome extends CI_Controller

{

 // 初期画面

 public function index()

 {

  echo "Here is index()";

 }

 // 更新画面

 public function update()

 {

  echo "Here is update()";

 }

 // 削除画面

 public function delete()

 {

  echo "Here is delete()";

 }

}

これがチャットApplication Controllerとして動作する最小限の内容=骨格だ。

 

継承

class Welcome extends CI_Controller

という行に注目してみよう。

CodeIgniterで用意されてる「CI_Controller」クラス継承して、プログラマーが「Welcome」クラスを作ってる。

継承によって、フレームワークが用意してる様々な機能をWelcomeクラス内で使えるようになる。

 

URLリクエスト)とControllerの対応マッピング)のルール

「Welcome」クラスの中に、「index()」「update()」「delete()」という3つのメソッドを用意した。

CodeIgniterURLは、Action Controllerのクラス名やメソッド名とひもづけられている。

今回作るWebアプリだと、

「http://localhost/waf/クラス名/メソッド名」

という対応関係になっている。

(例)

http://localhost/waf/        →Welcomeクラスindex()メソッドが呼び出される。

http://localhost/waf/welcome/index  →Welcomeクラスindex()メソッドが呼び出される。

http://localhost/waf/welcome/update →Welcomeクラスのupdate()メソッドが呼び出される。

http://localhost/waf/welcome/delete →Welcomeクラスdelete()メソッドが呼び出される。

 

 

 

Viewの骨組み

次にMVCのVの骨組みを作ろう。

ビューは、表示する画面の部分です。HTMLWebページの構造を書きます

 

 

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>

 </body>

</html>

 

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>

 </body>

</html>

 

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>

 </body>

</html>

 

Viewファイルの追加に合わせて、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->helper('url');

 }

 

 // 初期画面

 public function index()

 {

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

(変更点の説明

コンストラクターの追加

コンストラクター「__construct()」は、クラスからインスタンスが作られるとき自動的に実行されるメソッドだ。コンストラクターは、初期化最初にやっておくべき下準備を書いておく。

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

CodeIgniterには、リンクの表示を補助する「URLヘルパー」という機能が用意されている。

上記のように書くとURLヘルパーを呼び出して、使えるようになる。

Viewファイルの以下の行でURLヘルパーを使っている。=「base_url()」という関数URLヘルパーの1つ。

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

 

ビュー読み込みメソッドの追加

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

というメソッドによって、Viewファイルの「welcome_index.php」を呼び出し、画面を出力します。

 

これでMVCのCとVの骨組みができた。

今の段階でWebブラウザーで各ページを表示させると、各Viewファイルの中身が表示される。

 

 

 

Modelの骨組み

次にMVCのMの骨組みを作ろう。

モデルは、具体的な処理内容(ロジック)を書いて、データを読み書きする部分です。

データベースを操作するSQL文もモデルに書きます

 

上記フォルダの中に「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();

 }

}

 

CodeIgniterで用意されてる「CI_Modelクラス継承して、プログラマーが「Chat_modelクラスを作ってる。

「Chat_modelクラスコンストラクターには、以下のように書いている。

$this->load->database();

これは、データベースを使用する準備だ。

 

Modelの追加に合わせて、さらに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');

 }

 

 // 初期画面

 public function index()

 {

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

 }

 

 // 更新画面

 public function update()

 {

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

 }

 

 // 削除画面

 public function delete()

 {

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

 }

}

 

コンストラクター

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

と書いて、「Chat_model」というモデルを読み込むようにした。

これで、モデルに用意するいろんな機能コントローラーで使えるようになる。

 

 

 

以上で、MVCの骨組み(スケルトン)だけを作成するプロセスを見ていきました。

まだ中身はスカスカで、何も機能がついてませんね。

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

 


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

微熱が続く

体温計ではいつも37.2℃くらい。

体をさわると少し熱い気もするが、最近は気温が低く手が冷たいので、相対的ものである可能性もあるか。

防寒のため薄手のフリースヒートテックシャツなど着るので、それによって一時的に体温が上がっているかも。

気分は少し落ち込みぎみだが痛みなどはなく、毎日寝れないので単なる寝不足である可能性も高い。

日常動作問題なく行えるし、なんなら運動もできる。

食欲も普段と変わらず、消化不良も起こしていない。

まり、どこも不調である気がしない、寝不足かな?と感じること以外。

それでも(体温計ではかると)微熱が続くというのは、やはり何かの異常なのだろうか。

内科心療内科受診しても明確に言及がなく、病的なものではないのか。

病気でもなんでもないが、寝不足であるがゆえに体温が高くなるなんてことがあるのか。

(乳児眠いときは体温が高くなるというけれど…?)

何でもいいかもっと健やかに生きたい。

2018-11-03

https://anond.hatelabo.jp/20181103120739

しゅ‐たい【主体】の意味

自覚意志に基づいて行動したり作用を他に及ぼしたりするもの。「動作主体」⇔客体。

2018-11-02

ああーっ

かうぃい

かわいい

二次かわいい

本当いい

声いい

かわいい

ドジっこかわいい

馬鹿と思われてでも本当は賢いの本当いい

かわいい

すき

でもたくらみ事全部失敗する

すんごいかわいい

一生嫁のモーション集見ていたい

かわいい

あーっ

うPS4しまってしまった

から取り出すのが面倒くさい

あーっ

本当カワイイなお前

めっちゃすき

自分用のムービー撮っておけばよかった

本当動作の一つ一つカワイイ

転がるところとかなにお前世界一かわいいじゃん

ぐるぐる回りすぎてふらふらする絶対狙ってるじゃん

あーっ天然すぎる

天然100%のドジっこかわいすぎるじゃん

脇ほんとすき

二の腕ぎゅってしたい

ももすりすりしたい

あーっ

まれたい

でも踏みたくもある

ああーっアンビバレンツ

しゅきぃ

犬みたいな可愛さ

でもちょっとほっとかれるだけでいじけて裏切ろうとする可愛さ

犯罪すぎる

はぁ

なんで新作でクソのようなただのアホになったんだろう

もっと嫁は知的で頭の回る、でもドジで結局失敗してしまうところがよかったんだよ

ああーっ

可愛いなぁ嫁

すっごいカワイイ

妻が夢の中でオーガズムにいたった

昼寝してた妻のようすがおかしかったから起こした。なんか苦しそうなかんじ。起きてもしばらく変だったか救急車呼ぼうとしたら止められた。イってるだけだからって言われて最初意味わからんくて、マジで脳卒中言語野がやられたのかと思った。

妻によると夢の中で推しキャラセックスしたらしい。誰とは言わんがチンコデカそうなキャラ。その推しキャラ執拗にクリ攻めしてきて、脳が勘違いして現実でも感じてしまいイったんだと。イって半分目が覚めて、妻はイくとちょっと痙攣というのか、なって体の自由がややきかない変な状態になるんだが、それになってあー早く止まれーって思って体をこわばらせたらしい。その一連の動作が、たまたま妻の寝顔を見ていた俺に見つかり声をかけられた、と。ちなみに妻、無意識オナニーはしてない。横になって枕の下に手を入れてたし。完全に脳イキってやつ。

昔、目隠ししてこれは君の血だよと言って水を垂らすと脳が勘違いしてショック死するという都市伝説いたことあるが、オーガズムが脳の勘違いで起こって痙攣ぽいことが起こるんだからあながちありうるかもな……と思ったりした。その妻は夜なのにチュロス揚げてる。うまそう。

&&と||はあるのにどうして^^はないのか

考えてみた。

まず、&&と||の動作について。

A&&Bは、Aが偽なら、Bを評価せずAを返す。これによって、AがダメならBは実行しない、みたいな書き方が可能になる。なお、Aが真ならBを返す。

A||Bは、Aが真なら、Bを評価せずAを返す。これによって、AがないときだけBを計算する、みたいな書き方が可能になる。なお、Aが偽ならBを返す。

そして、^^があるとすればどのような動作になるか。

A^^Bは、どちらかのみ真という性質上、Aが真か偽かにかかわらずBを評価する必要がある。よって、A&&BやA||Bのような便利な使い方は不可能

動作についていえば、AもBも真または偽なら偽を返し、Aが真、Bが偽ならA、Aが偽、Bが真ならBを返すと考えられる。

2018-11-01

anond:20181101232640

そうか?会社員になってからというもの「こいつぁすげえ」って思う技術ほどいまいち評価されてなくて

「こんなものくだらねえな」って思うし、すげえ簡単な(ことだと俺自身は思ってる)技術ほどなぜか珍重されてる気がする

PC関係トラブルシューティングとかネットワークちょっとした設定とかクソみたいな業務ソフトの変な動作とか

本当にくだらねーこんなんヒキオタでもできるじゃん…って思いながらさくっと解決したら異常に評価されるんだけど

増田プログラマー養成講座 その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アプリの完成見本(続き)」

へ続きます

道端で唾吐くオッサン全員死ね

予備動作もなく周りも一切確認しないでいきなり吐くから横通るのも怖いわ

原始人かよ

ゴッドオブウォー3のQTE

R3とL3同時押しってのがあって、最初RとLだからスティック回すのかなと思って、あっちがうや3だから押し込むんだって思って押し込んだ

そしたらクレイトスたんがポセイドンの目ん玉をぐりゅーって両手で目潰しするQTEだったwwww

かにそういう動作になるねwww着眼点に脱帽だわwww

2018-10-31

2D格ゲーはクソ

2D格ゲーはクソ

ほんとクソ

俺にとっては格ゲーであるだけでクソゲーになる

前に「ギルティギアにクッソ好みのキャラがいたから、これを機に2D格ゲーやるかぁー」って、

ギルティギアイグザードレベレーター」っていう名前の長ったらしいゲームを買ったんだよ

それがクソ

それで2D格ゲーがクソだって痛感した

難しい

スマブラDMC無双も、レバー入れながらボタン押すだけで技が出るじゃん?

2D格ゲーじゃそんな事はない。当然コマンド入れる必要がある

コマンド入れようとするとキャラが左右に動いてジャンプして挙動不審になる

オートガードもないか攻撃めっちゃ食らう

なんでレバーガチャガチャするゲームジャンプもガードもレバーなんだよ

スマブラでもジャンプボタンもガードボタンも用意されてただろ

動作の塊じゃねーか。ユーザーフレンドリーとか辞書に載ってなさそう。ナポレオンもびっくり

難しいから当然勝てない

勝てないか全然楽しくない

じゃあ練習だって事になるけど、

練習楽しくない

コマンド練習楽しくない

めっっっっっちゃ楽しくない

音楽記号で言えばフォルティッシッシッシッシッシモ楽しくない

というか楽しめるヤツがいるのか疑問に思うほど楽しくない

「勝ち負けも練習も他の対戦ゲームの壁と同じようなもんじゃーん。お前が対戦ゲーム向いてないだけじゃーん」とか言ってる場合じゃないよ

俺は他の対戦ゲーム(3D格ゲーみたいなもの)じゃ中級者なんだよ

そのゲームコンボ練習はするし、相手コンボ差しこめる技は何かとか研究する

その基礎部分は「わーい! たーのしー!」って言うほど楽しくはないけど、上達っぷりが目に見えるからいいんだよ

でも2D格ゲーは上達が目に見にくい。光学迷彩並に見えにくい

コマンド一つ覚えて、それで戦況にどれだけの影響及ぼせるんだよ

「両脚って前後に動かすと歩けるんだー!」って覚えた状態戦場に放り出されても迅速に死ぬだけじゃん

しかも歩くってめっちゃくちゃ地味じゃん

アメとムチのアメがエチオピアから拒否されるくらい不味いじゃん

初心者救済されない

コマンド出せない!」って言うと「スタイリッシュモードがあるよ!」って、打てば響く鉄のように返ってくるじゃん

スタイリッシュモードっていうのは、ギルティ初心者救済要素

コマンドを入れなくても、スタイリッシュモードにするとレバー入れとボタンだけで必殺技が撃てるよ! 素敵!

しかボタンを連打するだけでコンボを出せるよ! 無敵!

なんで勝手コンボ出させるんだよ

そりゃ、本当に本当の初心者なら、コンボ出す機能は充分必要だよ

でもパンチ連打とかしたい場面でコンボが出てしまうっていうのは、ほんの少し慣れた程度の人間には煩わしいんだよ

「そりゃ、初心者向けの機能から。それ以上の腕前の人には必要ない機能から」って言うんだろうけどさ、

何でスタイリッシュモード一本で、上に行ける仕組みにしないの?

スタイリッシュモードの簡易入力使用したコンボができるようになった人間がいたら、それで上を目指すってなったら、

今までの努力を捨てる事になるじゃん

せめてセミスタイリッシュモードみたいな、ボタン連打でコンボが出ないモードも用意してくれよ

レバーボタンだけで技出せる技術あるんだろ?

コマンド存在意義を無くしてくれよ

Excelがある時代ソロバン経理してんのかよ

対戦楽しくない

咄嗟コマンドは怪しいけど、1P側からそこそこ安定してコンボ出せるようになった! っていう段階まで来たんだけどさ、

本当楽しくない。対戦楽しくない

そりゃ初心者だし、負ける事の方が多いからその点は楽しくないよ

でも勝っても楽しくないんだよ

びっくりだよ

カードゲームアクション音ゲーパズルゲームもしてるけどさ、

そのどの対戦でも、勝った時には「楽しい!」って思うんだけどさ、

2D格ゲーは何もない。虚無しかない

これがスマブラだったら、初心者でも「消耗している状態で、なんとかスマッシュが当たって、ド派手に相手が吹っ飛んでいく」事が多くてドバドバドーパミンモノなのさ

それがギルティになると、初心者だと「消耗している状態で、なんとか小パンが当たって、ちょこっとゲージが削れてあっさり終わる」事が多いんだよ

勝っても、「勝った!」っていう実感がない

こう考えるとスマブラ偉大だわ

初心者でも「決着ゥウ――!」と思わせる演出誘導できるのすごいわ

感動しました。ドリームミックスTVワールドファイターズファンになります

金がかかる

ギルティソフト自体、フルプライスで売ってる訳じゃん

これはまずいいのよ。他のゲームも同じだしさ

でも、格ゲー専用のコントローラー(アーケードコントローラーアケコン)はまず必須なんだよ

(こういうの:https://www.yodobashi.com/category/140007/140008/140033/140061/140063/?word=%E3%82%A2%E3%83%BC%E3%82%B1%E3%83%BC%E3%83%89)

Twitterとか見てると、格ゲーやってる大体の人間アケコン持ってる訳よ

PS4コントローラーはやり辛いから! アケコン買わないと!」ってフォロワーも言ってくる

で、値段見れば分かるけど、5,000円~10,000円する

アケコン買う値段で他のゲームもう1本、Steamの安いインディーズとかなら10本買える訳じゃん

そこまでしてアケコン買っても、格ゲー以外のゲームに流用できないのがクッッッソ萎え

じゃ、アーケードやればいーじゃーん、って、それも1回100円かかるがな

しかゲーム内容を保存したければゲーム用の電子カードも買わなきゃいけないし、

100円入れてCPU戦一戦もできずに乱入されて3分クッキングされる可能性に怯える訳だ

というかアーケードギルティはそれで萎えて一回きりで終わった

バージョンアップによるランクリセット

2D格ゲー以外にも、対戦ゲームなら「ランクマッチ」っていうのが大体あるじゃん

戦って、勝ったら上のランクに行って、負けたら下のランクに下がるヤツ

もちろんギルティにもあるし、俺は下のランクでひぃひぃ言いながらもランクマッチしてたのさ

でも発売からある程度経ってたから、飛びぬけて上手いって感じの人間とはマッチはしてなかった

それがある日

「イグザードレベレーター」だったのが、無料バージョンアップで「イグザードレヴ2」っていうのに変わった

そのバージョンアップの時に、ランクリセットされた

何が起こると思う?

上級レベル人間が一気に初心者ランクに溢れかえったんだよ

もちろんそれはほんの数日の間だろうよ

けどな、その数日の間に初心者ランクマッチに入れば、まず確実に初心者狩りに遭う訳だ

対人戦がキモゲームで、その対人戦の要であるランクマッチを数日機能しなくするってどういう事だよ

いやさあ! 上級者にとっては依然機能してるまんまだろうけどねェ!

ピヨピヨの小学生の俺にとっては、「公園砂場で遊んでたら、高校生ボコられて砂場を乗っ取られた」ようなもんなんだよォ!!!!!

初心者はさっさと上級者様の踏み台になってランクアップさせて差し上げろ」ってアークの回答だよな!!!!!

ああ分かったよ!!! 二度とこんなゲームやるかよバーーーーーカ!!!!!!!!!

これで「あ、こりゃNot for meってヤツだわ」と思って2D格ゲーから離れる事にした

以下、予想されるFAQ

Q.ギルティとか上級者向けじゃん。○○(BBTAG、アカツキスカルガ等)やろうぜ

A.適度にいい萌え具合のぶるんぶるんがおらんし、もうこれ以上格ゲーの出費を出すのが苦痛

Q.お前の根気がないだけだろ

A.半年も楽しくないゲームをやり続ける人間の方が稀有だと思うます

Q.初心者同士でやれば楽しいだろ

A.いやね?ww 自慢したくないけどね?www 2D格ゲー同じ腕前のね?wwww 何年も付き合ってるめっちゃ好き同士の恋人がいるんすけどぉwwwwwwwww 一緒にスマブラとかピクミン2とかシャドバとかMtGとか楽しくする仲なんすけどぉおwwwww うぃっひひぃwwwwwwwwwww

それで楽しくないから俺の2D格ゲーフォビアは重症だよね

anond:20181031133037

ノートPCではFnと同時押しみたいな感じで押しやられてるキーは多い

そのうちDeleteFn+Backspaceみたいになるはず

現にスマホではDeleteの削除動作をするソフトウェア入力ボタンがない

1個だけだとアレだがInsとDelのペアでなら消せるかもしれん

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