「変数」を含む日記 RSS

はてなキーワード: 変数とは

2019-01-18

○○とはなにか

仮に自分AIをつくりたいとする。

AIをつくりたいのであれば、AI定義しなければ具体的な作業にとりかかれない。

AIとは知性を持ったコンピューターである定義する。

そして「知性とは…」「コンピューターとは…」とどんどん定義していく。

そして定義は一度決めた場合でも途中で変えてもよい。言葉変数だ。

人によって定義は違うし、自分の中でも時間が立てば変わるものだ。

変えるのは当初の目的に沿う形であればよい

「知性=X」でありXに好きな定義をいれてください。それがあなたの今のAIです。

当初の目的は「AIをつくりたい」である。これが「自分の思うAIをつくりたい」なのか、「みんなが思うAIをつくりたい」なのかによってつくるべきAI定義は変わるだろう。

後者場合は「みんな」の定義もしなければならない。それが過半数なのか、2/3なのか、全員なのか。

前者であるならば、定義自由自在だ。

「それは知性とは言わない」とか言われても無視すればよい。お前の中ではそうなんだろうな、俺の中ではこうだ、で終わりである

定義が極めて重要になってくるのは法的な問題とかだろうか。

たとえばAがした行為セクハラか否か?とか。

Aがした行為セクハラに該当するのであれば罰せられるという状況であれば当事者真剣定義に考えざるをえない。

しかし、どうとでも取れる言葉定義議論するのは楽しいものでもある。

文学とは何か?文系とは何か?理系とは何か?右翼左翼とは?

ただ単にレッテルをはって馬鹿にするためだけに定義議論する人もいるが、あれこれ意見を言い合うのは楽しいと思う。

手段過程定義を考えるのはなんとなく理系的だと思うがただ単に定義を考えるのは哲学的であるきがする。

これは自分が「理系」や「哲学的」をどう定義しているかを考えるためのとっかかりになるのだろう。

しかし、今は特に興味がないので考えない。

2019-01-09

anond:20190109160207

これは光速に近い物体挙動をうまく表している方程式がまずあって、

その方程式の「速度」の変数光速以上の値を入れて方程式を解くと、「時間」の変数マイナスなっちゃうってだけの話

anond:20190109160207

数学的には、銀行に預けた期間がマイナスになると残高が減少する」みたいなもんだろ

変数に「経過時間」や「増加の割合」とかunsigned doubleを含む計算式を作ると無理矢理負の数値や1.0を割る数値をぶち込んだ場合計算結果ができる

じゃあ現実にどういう操作をしたら経過時間マイナスになるんですか? それは知らね、でももしそうなったらこの結果になるんじゃね、という話

2019-01-07

anond:20190107104436

ステップ実行の結果表示って結構めんどくさいんだよ

制御構造をきちんと理解していることが前提だし

初心者フレンドリーではないので避けられがち

変数表示デバッグのほうがまだなんぼか素直

どちらかというと変数表示デバッグの次の道筋がないことが問題

プログラミング初心者に対するアドバイス

「まずデバッガの使い方を覚えろ」というのを見ないな。

変数の中身を確認しながらステップ実行をするって、コード挙動理解するのに超有用だと思うけど。

マニアな人はIDEとか馬鹿にして、viとかemacs使ってるからそういう発想にならないのだろうか。

2019-01-02

プログラミング素養

初めてプログラミングに触れたのは小学4年生の時。

Flashゲームを作りたくてアクションスクリプトの本を買ってもらったんだけど、本の通りに書いてもエラーが出て動かなかった。

今になってみると何故動かなかったのかの見当がつく、セミコロンコロンを打ち間違えてたんだ。

もし最初の本が初めてプログラミングに触れる初心者向きで、それこそ変数とは?関数とは?どんなことに気をつければいいのか、というところから一歩ずつ書いてある本なら投げ出さずに済んだかもしれない。

大学に入ってからJavaScriptPHPを少し触るようになった。

小学生の時の挫折があったからなのか、周りの学生よりも多少理解が早かった。

エラーが出たらエラー文でググる、がこの時の私の対処方法だった。

カッコの閉じ忘れや変数名間違いで数十分悩むこともザラだった。

しょーもない間違いを積み重ねていくうち、なんとなくエラーの原因に見当がつくようになってきた。

でも意味のわからない記述は全部おまじないだと思ってた。

他人コードを見ても、どこまでが元から用意されている機能で、どこからがこの人が新たに定義した何かなのかがわからない。

上手な人のコードは簡略化されすぎてて、私にはまるで理解できない。

JavaScript関数の書き方が何通りかあって、それぞれの違いがよくわからなかった。

困るのは見たことない書き方を見てもそれをググれないこと。記号が入り混じってて検索ワードとして成立しなかったり、そもそもプログラミングやってる人からしたら常識だったりして、わざわざ空は青いですよ、みたいな分かりきったことは書いてくれてないのだ。

たまたまプログラミングの得意な先輩に教えてもらう機会があって、色んなことを教えてもらった。

例えばツール

閉じ忘れや変数名間違い、全角スペースで数十分悩む必要は無い。だってツールが教えてくれるから…。

それまでメモ帳に毛の生えたようなテキストエディタを使ってたんだけど、SublimeTextとかVS Codeとか色んな選択肢があることを知った。すごいんだよ!コードを補完してくれる機能があったり、閉じ忘れてると教えてくれたりするの…。

こんな便利な関数があるよ、それは古い書き方で今はこんな新しい書き方が主流だよ、とか。

インデントは揃えようって口を酸っぱく言われた。確かに揃えた方が読みやすいよね。

エラーが出た時の対処方法自分とは違ってた。そうか、これ、原因になる行がエラー文に表示されてたのか…。

あとコンソール!何はともあれコンソール

どこまで値を渡せてるのか順番にコンソール出して確かめればいいって発想が自分に全く無かった。そうだよね、どこで失敗してるかわからないものね。

んで、就職して社会人になったわけだけど、コードを書く機会はほとんどない。あ、いやたまにある。ランダムおみくじを表示させる程度のものとか。

あとは趣味簡単ミニゲーム作ったりもする。

プログラミング、まあまあ好きだと思う。

でも自分にはその素養が無いって常々感じる。なんか根本の考え方が上手な人と全然違うみたい。

初心者エラー文読まない、読んでも見るだけで理解してないのはガチ

どうやったら上手な人と下手な人の溝が埋まるんだろう、ってたまに考えるんだけど、

人間やっぱ得手不得手ってあるよね。

かに教えて貰わずともボール蹴るのが上手な人も居れば、教えて貰っても下手な人もいるわけで。

でも学校の体育ってやり方教えてくれないよね?

跳び箱ぐらいかな、コツ教えてくれるの。踏切位置や手をつく位置、あれを上手くやれば高い段もするんって跳べる。

そういえば高校プログラミングの授業でもコツとか教えて貰わなかったな。

もうただ単純にこのコードを書いてくださいね、書きましたか、動きましたね、はい終わり。みたいな。

2019-01-01

anond:20190101174449

描画部分の違い

変数 y をつかって

高さが8までで移動するように

yが変わると■のいちも変わるから

タイマーで呼び出されるたbに

下へ 下へと作画される

から まぁ アニメーションに見える

8のところを16に変えれば もっと長いアニメーションになる

次はタイマー部分を説明

	BOOL OnPaint(PAINTSTRUCT &ps)
	{
		HDC hdc = GetDC(hWnd);
		HBRUSH hBrush = CreateSolidBrush(RGB(48, 48, 246));
		RECT Rect = { 0,0,48,48 };
		Rect.top = 48 * y;
		Rect.bottom = 48 * (y+1);
		if (y > 8) {
			y = 0;
		}
		BOOL ret = FillRect(ps.hdc, &Rect, hBrush);
		DeleteObject(hBrush);

		return TRUE;
	}

2018-12-26

anond:20181226205502

データというのはそういう話の流れの中で出てくる文字変数なんだよな、放射脳にとっては

2018-12-11

求人に書いてあることと違うことをさせる株式会社アイビス

株式会社アイビスは、お絵描きアプリアイビスペイント出しています

私は、株式会社アイビスで2年ほど働いていましたが、精神的肉体的に社会復帰できなくなってしまったので退職しました。

理由は2つあります

1つ目は、営業の人が案件エンジニア技術力を考えないで、プロジェクトに任命させることです。

私は、言語としては、C++基本的に触っていましたが、営業の方から案件がないかGo言語でもいい?というか、それしかいからお願い、と頼まれました。案件は水ものだししょうがないよねと、営業の方自信が自分にいいきかけせている感じでした。それでプロジェクトに入りましたが、現場ではめちゃくちゃ怒られる毎日でした。そもそものお作法変数の型宣言が後置である)も知らないからです。

このことでプロジェクトに合っていないと営業の人に言って離任を申し出ますが、うちではみんなこんな感じだから我慢してと言われるだけでした。そのまま、3ヶ月が過ぎたら10キロ以上も痩せて、配属先の会社から離任を申し出てきました。

離任後は、自社に戻ると営業の人は、顔も合わせず次のプロジェクト先をメールで伝えるだけでした。

もちろん次も経験のないJavaAWS環境インフラ設計製造です。しかも、プロジェクト先が都内から1時間30分以上もある厚木です。対応できなくものすごく怒られ1ヶ月でお客さんから離任を告げられました。

このことで、求人に書いてあることは自分の得意な言語仕事出来るはずじゃないですかと営業の方(採用担当していた)に問い詰めますが、仕方ないじゃん、案件は水ものなんだしと。そんなことなら、もっと遠方に行かせるか炎上案件に行かせるよと言われました。その後も、同じような案件で数か月で終了する感じで2年続けて精神的肉体的にまいりました。

2つ目は、1つ目と似ていますが、求人内容と書いてあることが全く違います

私は、C++モバイルアプリが少しつくれる程度で会社の人とチームを組んで、開発がしたいがためにこの会社に入りました。

しかし、求人内容に書いてあることとはほとんどが違います

求人研修では、あなたに合わせた研修とありますが、基本は放置です。

ワードドキュメントテトリスをつくってください。仕様は○○ですとA4の1ページにも満たない、仕様書があるだけです。更新日も5年以上前になっています

基本誰とも話さずググって下さいと。質問してもググって下さいと言われるだけです。Redmineを使って質問ができますが、一日一回だけです。しかも、研修用で使えるPCメモリは2GBで、2つ以上アプリを開いたら、フリーズします。

研修は、4ステップありますが、ほとんどの人がステップ1も終わらないで、現場に行くことになります

現場に行く時は、もちろん営業としての単価がいい案件なので、炎上か高難易度案件です。未経験の人でも大丈夫で4割が未経験でチームでプロジェクトに入ります求人表に書いてありますが、一人で案件に行かされます。チームで行くことはたまにありますが、みな個人プレーで自社の人とは関わりません。フォローもなく、むしろ出来なかった時だけに怒鳴られます平成終りなのに、やっていることは昭和初期の根性論のような会社です。

最後に、会社トップの人は自社開発のアプリしかしていなく、全く経営をしていません。

例えばですが、今だに、派遣先での勤怠を自社に提出する際は紙ですし、社内システム10年以上前のもの使用しています

社長はめんどくさい事は、管理職に丸投げをして、暇さえあればツイッターをしているような人です。そんな暇があるならば、社内インフラを少しでも良くしてほしいですが、それも気づいてないです。

さらに、今後上場を考えています上場したら優秀な人材が集まり、今いる人と競わせて、優秀な人だけ残すと言っているのです。社員をただのお金としてしか、考えていないので非常に残念な経営者です。

ちなみに私は、中途で入り手取り20万円で入社しました。しか一年目はボーナスなし。年収300万円も行かなかったです。しかし、今転職した会社では、月給は32万で、手取り28万円になりました。やっている事は変わっていないのにです。年収も400万円までいきました。これでも、他の会社と比べたら少ない方ですが、株式会社アイビスいか低賃金で働かせていることか身に染みました。

エンジニアを安く買い叩かれることがないように、間違えて自分と同じようなミスをして欲しくないために今回記事を書きました。

少しでも多くのエンジニアが豊かになるために。

※色々とコメントありがとうございます

少しだけ、追記します。

今回の記事株式会社アイビスが都合のいい人だけ集めていること、SESシステムエンジニアサービスエンジニア派遣です。)に問題があることをもう少し説明します。

株式会社アイビスは、都合のいいエンジニアだけ集めて、後は切り捨てるという考えです。プロジェクトマッチしない人でも、辛抱強く続けられる人は会社としては利益になる。優秀でなんでもできる人ならマッチしなくてもどのプロジェクトでも活躍できる人が残っている人の2パターン。仮にマッチしなくてもやめる人のケースの場合でも、責任営業エンジニアになりますが、実質エンジニア(話し合っても、普段話しなれていなエンジニアは、丸めまれる。または、受け流されて、変わらないことに気付いてやめる)になる。会社としての損害はほぼなく、利益は減るが、新たなプロジェクトを探し出せることになっている。常に求人をしているので、そんなことを知らない人が同じようなループに入ります。そこで、続けられる人が見つかれば会社としてはラッキーという感じです。そして、そこに残っている人はすごい低賃金で歯を食いしばってやっている人か、ものすごい技術力がある優秀な人かの両極端になります自分がどちらか気付いたときは、そのポジション言動をとるようになっています。歯を食いしばるか、サクサクコードモンキーになるか。

常に求人が出されています

https://tenshoku.mynavi.jp/jobinfo-214515-2-3-1/?ty=kyujin&src=ssS

もう一つ、SES問題点は上記であるように派遣プロジェクトに入るところです。チームで何かしらをつくりますが、この時に株式会社アイビス営業会社エンジニア、お客さん(1次受け、2次受けで責任者が複数にいる状態)いますが、そもそもプロジェクト自体炎上していて、失敗したら責任はお客にあり、エンジニア地獄をみます営業会社は「しかたないでしょ」となります。もちろん、成功したら「よかったよかった」になりますほとんどの場合は、微妙燃えています。そこでカギになっているのがエンジニアの力量ですが、プロジェクトによって使う技術が決まっていないので、地頭力か歯を食いしばる力(お客は求めていないが、自社は求めている。派遣するだけで利益になるのだから)が求められる。結果的に優秀な人は、機械学習Python)であったり、Reactであったり、クラウドの(AWSAZUREGoogle Cloud Platform)にも対応できます。お客さんもエンジニア便りになって、正しくプロジェクト成功できるかは、優秀な人を揃えられるかどうかです。歯を食いしばったところで意味がないのに、会社というポジションでそれをやらせ会社はどうかなと思いますしかし、会社利益を出さないいけないということで、目先のお金SES)で稼ぐのです。

少しでも、エンジニアいい方向に進めればいいと思うので、コメントが増えましたら、新たな問題点を提起します。

久々に読んだ入門系の技術書レベルの低さに驚愕した話

新しい技術勉強しようとして入門系の技術書を買ったら

変数からして怪しい

日本語そもそもなっていない

冗長説明を何度もする

・すべての方法説明だけして、ベストプラクティス説明しない

・画面キャプチャ多すぎ

説明の順番がおかし

などあって、中身のレベルの低さにイライラしながら参考書を読んでいる。

一応その分野の技術書の中では最も売れていて評価が高いものなのにこの内容は。。。と思った。

これなら素直に英語公式サイトチュートリアルを読む方が絶対効率的だと思う。

こんな状態から日本エンジニアレベルが低いんだと感じた。

PS. 最初から英語ドキュメント読めばいいやん・・というツッコミはなしです。

2018-12-09

シェンゲン協定フランス暴動

シェンゲン協定ってのは労働者域内移動の自由保証するわけなんだけど、この協定に従って、労働者がたとえば出身地への愛情とか所有する家とかの諸条件を一旦無視して、経済的合理性だけで移動した場合労働者能力レーティングに従ってEU域内の豊かな場所から順にアサインされることになるよね。つまりそれは能力の高い人が豊かな場所に住むって意味だ。

このモデル思考実験で追いかけると、フランスEU域内において、ドイツに次ぐ富裕国なわけだから、(適当過程数字だけど)EU全域統計における能力偏差値56〜53くらいの労働者が集まって住むことになる。もともとフランス国内にいた労働者のうち偏差値57以上の人はドイツに行くだろうし、53未満のひとは新しくやってくるボリュームゾーン労働者に職を奪われて、それぞれの偏差値にふさわしい国や地域に移動して労働することになるだろう。これがシェンゲン協定実態だよね。それがこの10年で明らかになったのが今の光景じゃないかな。

まり労働者移動の自由保証する」協定は、自由自由競争に連結されている以上、能力主義によって追い出されて職場を選べないという「住居の自由保証しない」協定になりうる。

もちろん上記モデル仮定のものなので色々要素が抜けている。政府は他の様々な政策福祉就業支援移民政策)を通じてこのモデルに手を加え制御しようとするし、生まれ育った地域に対する愛情とかすでに持ってる不動産とか親戚づきあいとか、人口移動(あるいは不動)に対する影響変数はほかにもたくさんある。

フランス域内では裕福な場所で、それはつまり目指すインセンティブが高い国家という意味だ。この国家の魅力を偏差値的に表現すると55だとしよう。このフランスで、55未満の市民に対する福祉的な政策をしてしまうと、シェンゲン協定は、EU域内から55未満の移民をかき集めてしまう。豊かな国なのに比較納税額が少ない人をケアすれば、周辺国から見て弱者をすてる老人ホームになってしまうということだ。これはつまりフランスにはフランス市民にたいして手厚く福祉をする政策自由度がないことを意味する。

もちろん様々な工夫の余地はある。国籍を取って50年以上たった市民のみが福祉を受けられるとか。でもそれってたぶん欧州委員会に殴られるわけで、もっと細かく様々な方法差別化するしかない。公務員として古いフランス市民雇用して慰撫するとか。なんにせよ、EUがない国家に比べて政策自由度がすごく低いということは理解すべきだ(日本での報道とかコメント見てると、このあたりを蹴飛ばしててすごく不公正な感じする)。

フランスフランスの豊かさと文化を守るためには、そしてEU内での地位を守るためには、「フランス金持ち向けの国家であり今後そうする」っていうデザインを取らなきゃならない。その意味マクロンはその方針に対して忠実ではあったんだよ。でもその方針って「今すでにフランスに居る基準以下の労働者(先程の表現で言えば偏差値55以下の市民)は移動の自由に従って国外放出する」ことも意味してて、それがフランス市民には我慢ならなかった。

フランス庶民貧困層フランス国民としてフランスで裕福になる権利があるってリベラルの人は言うかもしれないけれど、でもEU域内での庶民貧困層あきらかにフランス庶民貧困層より更に貧しい)は、フランスを含むEU域内自由場所で、EUの平均程度に豊かになる自由権利があるわけだ。それはむしろリベラルの人がEU建設時に熱心に主張してた自由権利なわけだよね。

今の日本報道はこの点に対して随分一方的なように見えて、そこがなんだかもやもやする。

2018-12-05

anond:20170920232940

三つしかない条件のうちふたつが体格で残りが「暴力振るわない」ってようするに「選んでない」ってことだろ?

選ばないで適当に籤引けば、アタリも出ればハズレもでる。

ランダムに一回だけ抽出した変数の値から敷衍して何かに失望してみたり先のことを不安に思ってみたりと、とても救いようのない頭の悪さを感じる。

べつに「選ばない」っていう選択もありだけど、それなら今回の籤と次回の籤にはなんの相関もないことを理解してとっとと次行かないと。

籤を引かなきゃアタリも出ない。

  

  

  

  

身も蓋もない種明かしをすると、じつは「今回の籤」と「次回の籤」には非常に大きな相関があって

それはつまり「(おそらく)自分を選んで寄ってきたもののなかから籤を引いてる」っていうことなんだね。

まり自分の周りにハズレしか集まってこなければ何回引いてもハズレしか出ない。

自分の周りにハズレしかいないのはなぜかっていうと、まあ、、、ドンマイ。

2018-11-30

差別撤廃無駄不要有害

例えば入試

女子学生に不利になっていたり、浪人生に不利になっていたりするという差別が明らかになったが、これを撤廃したところで入学できる受験生の数は増えないことが重要だ。

女子差別撤廃し、浪人差別撤廃したら合格者の中に占める女子浪人生割合は増えるだろう。

だが結局入試差別することが目的で、差別しなければ意味がない制度だ。

テストスコア差別をするということは、生育環境遺伝子によって差別をしているのと同じだ。

テストスコア努力によって伸ばせると言ってみても同じことだ。努力をできる生育環境遺伝子があったもの優遇することにしかならない。

社会的構造的に最初から不利であることが知られている学生スコア補正するようなアファーマティブアクションが行われている場合もあるが、そんなことをしても結局はその制度において不利な属性と有利な属性が現れるだけで、不利な属性の持ち主が差別されていることには変わりはない。

本当に差別撤廃したければ、完全にランダムに合否を決める必要があるが、様々な属性差別をする現行の仕組みよりもその方がマシだと思う人はいるだろうか?

差別撤廃偽善だ。男女、年齢と言った注目を集めやす特定変数だけに注目し、それ以外の注目を集めにくい、あるいは未知の変数無視して、それに基づいた差別を新たに開始しようとするのが、差別撤廃本質である

2018-11-29

デバッガの使い方をおぼえろ」とアドバイスしてやってほしい

初心者プログラミング勉強方法を教えたがる人っていっぱいいるじゃん。

どの言語からやれとか、お勧めの本とか、写経がいいとか、こうすればモチベーションを保てるとか、いろいろ。

でも、まずデバッガの使い方を覚えろって人を見たことない。

逆にIDE(たいていデバッガ機能がある)は使うなって人はいるけど。

昔、2chプログラム板を見てたときに、10行か20行程度のコードを貼って「うまく動きません!」みたいな人を良く見た。

あいうのは、デバッガの使い方を覚えて、変数の中身を見ながらステップ実行でもすれば自分解決できるよなっていつも思ってたわ。

初心者ががんばって、何十行も入力して、実行して、思ってたのと違う動きをしたら途方にくれるしかない。

デバッガで一行ずつ動かしたほうが絶対イメージやすいと思うわ。

2018-11-26

コード見るのが一番の判断基準だと思う

ITエンジニアで、割とすごいと思っていた上司がいる

本人の話ではできそうな人だった


あるときその人の作ったものを引き継ぐ事があったのだけど、コードゴミのようだった

よくこれで動くなというかメンテしてきなっていうレベル


当たり前のようにグローバル変数を使うし、どこで最初に代入されるかも全コードgrep書けないとわからない

関数化もせずコピペが多い

mapやreduceみたいなものは一切使わず繰り返しはすべてfor文


本気でコードは捨てて仕様に基づいて1から作り直したほうがいいレベル


変に速度にこだわって、そんなの誰も気にしないってレベルのことにまで文句つけてくるくらいだから最適化の結果関数はインライン化して使い捨て変数はなしでグローバルを使うとかやってるのかと好意的に考えようともした

しかし、見ていると、その辺のwebページコピペがそのままコードに残ってるし、そういうところはインデントも揃ってなくてグチャグチャ

タブとスペースの混在も当たり前

あれこれ試した結果が見えるコードコメントアウトは全部残っている

単に能力無いようにしか見えない


それでも一応なにかそれなりのものを作れてしまうのが悪いところなんだと思う

趣味でやる分にはそういうので動くのはいいと思うが、仕事でそういうのはホントやめてほしい

ずっと一人で作っていて他の人と変わらないでもらいたい

昔はそこそこあった尊敬度もいまではマイナス、見下す対象しかならない



ということがあって、採用とかしてる人は本人が何作ったとか何使えるとか言っても、ちゃんコードみて能力判断したほうがいいと思った

外面のいいものが作れても中身がボロボロものが長く使えるとは思わないし、チームで作業するなら邪魔なだけ

特にキレイに書いたり修正やすものパフォーマンス落とすだけとか時間無駄って考えてるようだからどうしようもない

2018-11-24

anond:20181124164501

エディタとかIDEとかで変数名を一覧化してデバックしたりしないの?

適当変数名でもいいじゃない

変数名は必ず意味のあるものにすべし。みたいなのあるけど、意味を与える必要がない場合もあるんじゃないかと思うわけよ。

 

例えばreturn用の変数

List<Item> getCheckedList(List<Item> itemList){
    List<Item> checkedList = new ArrayList<>();
    for(Item item: itemList){
        if(item.isChecked()){
            checkedList.add(item);
        }
    }
    return checkedList;
}

"return用"ということが分かれば良いと思うのだが、それが何か分かる変数名にしろという。

getCheckedListがcheckedListを返すって、わざわざ書かないと分からいか

 

分かってる、Stream使って書けるって言うんだろ。

List<Item> getCheckedList(List<Item> itemList){
    return itemList.stream().filter(Item::isChecked).Collect(Collectors.toList())
}

これで分かるんだったら、元のやつでも変数名が何であれ理解できるはずでは?

 

 

結構あるんだよね。前者のコードみたいに、本当は変数を用意したくないんだけど、仕方なく、一時的な入れ物として変数を作るとき

本当は変数にしたくないし、streamAPIみたいに余計な変数を減らせる仕組みが増えていくのは有り難い。

 

こういう変数名って付けるの悩むし、結局レビューとかしても「うーん、じゃそうする?」みたいな感じの名前しかならない。

そういうのはさ、適当でもいいんじゃないかな。

2018-11-21

anond:20181121164951

元号アルファベット1文字表記するシステムとかあるやん?

M=明治

T=大正

S=昭和

H=平成

これで、次の元号清新 で S だった日には発狂したくならない?

変数用意するだけじゃだめじゃん。みたいな。

anond:20181121164951

できる

むろんそうしなかった奴が一方的に悪い

しかし作った奴はすでにここにはおらず、プログラムデータベースけが残されているのだ

元号にあたる部分を全部変数にしておいて、元号が発表されたらその変数新元号を突っ込むだけみたいな状態にすることできないの?」と100万遍叫んでみてもプログラムは変わらず改元は迫るばかりなのだ

改元についてのシステム改修って

元号にあたる部分を全部変数にしておいて、元号が発表されたらその変数新元号を突っ込むだけみたいな状態にすることできないの?

anond:20181121003311

現在私が抱えている10課題

・「隠れた変数」の発見によるEPR paradox証明

・いわゆる「主客問題」の解決

カントール対角線論法を超える方法論による「実無限」の証明

・「私」と「現在」と「ここ」と「同一性問題解決

・「言語」と「論理」と「物自体」との関係性の規定

ライプニッツの「普遍数学」に倣った「普遍統計学」の確立

・「普遍統計学」を応用した株価予測技術の開発

純粋唯物的脳科学アプローチによる「倫理」「美」「目的論」等の「価値問題」の完全処分

・余白が足りない

2018-11-18

関数型プログラミングに変えた方がテストが楽

関数型で副作用を分離=参照透過性を活用すれば、テストの組み合わせ爆発は避けられる。

変数をすべて定数にしてもプログラムは書ける。

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

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