「文字列」を含む日記 RSS

はてなキーワード: 文字列とは

2018-12-17

anond:20181216215840

suicaでお願いします」って言われた外国人店員が「でお願いします」のところをちゃんと聞き取れなかったようで、「なにか意味のあることを言われたけどわからなかった」って感じでパニックになってたか無意味言葉は省略したほうが親切だと思うよ。

似たような話で、一行しか表示できないタイプの駅の電光掲示板を見たら「線で人身事故により遅延が発生しています。」って文字列流れるの延々見せられて、自分関係ある路線かどうか確認するためにもう一周待ったら全然関係なかったってこと少なくないし「○○線 遅延」くらいの簡潔な表現で短くループしてほしいと思う。

丁寧部分、情報を伝える上でひたすら邪魔

2018-12-12

anond:20181212151928

誤読する人が多かった文章をあえて試した。

https://www.bengo4.com/other/1144/1282/n_2200/

タイトルの「道具が買えなくて部活を辞める・・・「家が貧しいから」と言えない日本の子どもたち」から子どもが、自分貧困を訴えることは非常に大変なことですので、まずは周りの大人が『アンテナ』を張らなければ、問題解決しないのです」」までを入れた。

凄い。部活の話が消えている。

でも、重要「アンテナ」が抜けてしまっている。「Number of Summary Sentence 」を増やせば、つまり出力文字列数を増やせば出てくるが。


解説すると、上記記事は、子ども貧困記事だ。

ところが、タイトルが「道具が買えなくて部活を辞める」で始まっているからか、部活記事だと勘違いした人が多かった。

このAIは、部活の部分が重要ではない事を判定できたらしい。

部活記事だと勘違いした人は読解力がIMAKITA未満なのだろうか。


でもAIいくら優秀であっても、コメントするにあたっては文章を全て読むという事はしなければならないだろうな。

2018-12-08

ANEMONE/交響詩篇エウレカセブンハイエボリューション

ANEMONE/交響詩篇エウレカセブンハイエボリューション について、いろいろな人がいろいろな価値判断がくだしていると思う。ここではなるべくそういったことをせず、主に筆者が気になった部分のみについて思ったことを書き留めておく、いわば個人的備忘録である。それらはハイエボ1、もしくはこれまでのシリーズ作品を突き詰めればわかることかもしれないし、ハイエボリューション3への伏線かもしれない。

当然のことながら、ネタバレありきのエントリであるので未見の方は注意してほしい。

誰の物語――ハイエボ1とは何だったのか

ハイエボリューション3部作であり、それぞれあるキャラクターを中心としたストーリーになっている。普通に考えればANEMONEは当然アネモネがメイン、そしてハイエボ1はレントンがメイン、となるだろう。しかし、ANEMONEにおいて明かされたある真実によってハイエボ1という作品意味を反転させた。

その真実とは、これまでのエウレカセブンシリーズが、実はレントンを喪って絶望したエウレカの見た夢だったということである。これにより、ハイエボ1はレントン物語であると同時に、レントンの思い出を反芻するエウレカの心の中の物語でもあったことがわかるのだ(個人的には、ハイエボ1は単体で好きな映画だったため少しショックではあった)。

ここである画像を見てほしい。ネット検索で「ハイエボ」などと調べると出てくるであろう。左から順にエウレカアネモネレントンの顔が描かれた画像である。これは、ハイエボリューションという企画が発表された最初キービジュアルだった記憶がある。それはさておき、この画像を見るとわかることがある。そう、「2017公開 ハイエボリューション1」の文字とともにあるのはエウレカの顔なのである。そして、ハイエボリューション2はアネモネの顔、3はレントンの顔のとセットになっている。

以上を考えると、ハイエボ1がエウレカ物語である、ということはあらかじめ決まっていたことなのかもしれない。かもしれない、という言い方になるのは、ハイエボ1を単体の映画として観ると、やはりレントン物語からである

とはいえ制作過程でいろいろあったという考え方もできる。ハイエボ1はエウレカ物語にするつもりだったが、様々な事情によりレントンの話にせざるを得なかったのかもしれない(余談だが、昨今アニメというコンテンツが、いか資本に歪な形で介入されているのかということを知らないで物を言う人が多いように思う)。

どちらにせよ、エウレカセブンシリーズにおいて、エウレカレントンという存在は切っても切り離せないものであり、ハイエボ1はどちらの物語なのかを考えることに意味はないのかもしれない。

金色の闇とデューイノヴァク、そしてスカブの卵

アネモネが何回目かのダイブで初めてエウレカ接触し、エウレカ石井賢の死に際を再現したシーンの最後であるエウレカの体に赤い電撃が走り、「金色の闇」に押しつぶされてしまう、というようなことを口走ったはずだ。金色の闇とは何なのか?

一方、ANEMONEに登場する、ASSIDに拘束されているデューイノヴァクの目隠しが取れるシーンがあったと思う。その目は黒い白目(なんとも矛盾した表現である)に金の瞳であった。

そして思い返せば、テレビシリーズにおいてアドロックダイアンレントンたちが邂逅するシーンなどは金色を帯びていた。

さらに、ANEMONE終盤でデューイノヴァクが「我々は受肉した!」と叫んだときの目は、金色ではなくコーラリアンの目であった。

以上のことが指し示すことととはなんだろうか?そういえば、アネモネ石井賢の思い出の場所ススキヶ原は「金色の海」だった。何か関係があるのか?

いろいろ考えてはいるのだが、長くなりそうだし、まだ整理がついていないのでここでは疑問の提起にとどめておく。

話は少し変わって、卵のことを考えたい。

ANEMONEのほぼラストスパートにおいて、空から降ってきた謎の卵を破って、ニルヴァーシュZが出てきた。ところで、ハイエボ1にも同じような卵が出てきたのに気づいただろうか?

サマー・オブ・ラブのシーンである。若きデューイノヴァクがサマー・オブ・ラブの爆心地で奇跡的に生きているわけだが、そのあとに出てくるのは割れた卵のようなものに入ったKLFがある(このKLFはもともとデューイが乗っていたものに見える)。

果たしてこれは何か。

ハイエボ1と共通するものとしては、赤いリボンのものもある。ハイエボ1では、これまたデューイシルバーボックスシステム確認しに行ったとき、急に赤いリボン状の何かに飲み込まれた(これが卵の素?)。ANEMONEでは、エウレカセブン暴走怪獣になったところで、ゲオルギウスが赤いリボンのものに飲み込まれそうになっていた。

赤いリボンと謎の卵。スカブに関連していることはわかるが、それが何を意味するかまでは筆者にはわからない。

シルバーボックスとは結局なんなのか

ところで、前節においてシルバーボックスという言葉が出てきた。しかしこのシルバーボックス、混乱している人も多いと思う。どうやらハイエボ1のシルバーボックスとANEMONEでエウレカが言うシルバーボックスは、何か共通するところはあるらしいがまったく同じものではないらしいのだ。

ハイエボ1のシルバーボックスは、アドロックの開発したスカブコーラルを倒すための音楽兵器であった。

しかしANEMONEでは、エウレカシルバーボックスに触れたことにより何か能力を得て、それが暴走してレントンが死んでしまい、エウレカの夢が始まるということになっている。

そしてデューイによるとシルバーボックスの力というのは「神の力」らしい。

さらデューイラストスパートでこんなことも言っていた。卵から出てきたをニルヴァーシュZを見て、「依り代をなくした神の力は、自らそれを作りたまう」と(うろ覚えなため正確ではないかもしれないが、おおよそこんな感じだったと思う)。

ということは、である。まず神の力=シルバーボックスの力は、やはり並行世界を行き来する力なのだと思う。そして、エウレカがその力を失ったいま、ニルヴァーシュZがその力を持っているだろうと思われる。

とはいえハイエボ1のシルバーボックスとの関係はまだよくわからないところもある。そもそもハイエボ1のシルバーボックスには謎がある。シルバーボックスは司令クラスターに着弾したが、うまく動作していなかった。そこでスカブちゃんと繋がっていないのだろうと思われ、デューイホランド派遣されたのであるしかデューイが確かめにいくと、なんと物理的に繋がっていたということがわかるのだ。

正直なところ、よくわからない。アドロックはきっと何かに気づいていたのだとは思うが……。

最後レントン

ANEMONEの最後最後は、レントンで終わる。しかし、その最後レントンは一体何者なのか。

アネモネ最初エウレカセブンダイブしたとき石井賢が取り付けた発信機は、ニルヴァーシュレントン側のコックピットで光を放っていた。つまりレントンが目印かつ、エウレカセブンの中心なのである

そして、そんなレントンはことごとく死んでしまう。それがエウレカ絶望である

だが、最後レントンは死んでなどいない。いったいどこの世界レントンなのだろう?

アイドルとしてのアネモネと謎のフォント

ANEMONEが公開になる前から分かっていた情報のなかで、最もよくわかってないものの二つが、タイトルにも挙げたように、アイドルとしてのアネモネと謎のフォントである

アイドル問題のほうは比較的わかる。ハイエボ1の予告のような形ではなかったが、ANEMONEでは実際、アネモネ世界を救うアイドルになっていた。そういえばラストスーパー6がエウレカセブンから出てきていたし、もしかするとハイエボ3においてよりアイドル的な、つまり歌って踊れるということをするかもしれない。

だが、ハイエボ1の様々な箇所にアイドルアネモネが写っていたことの意味はよくわからない。

もっとよくわからないのが、フォントである

ハイエボ1の円盤にて見ることができるPV0にて、EUREKA SEVEN HI-EVOLUTIONと思われる文字列が変わったフォントで出てくるカットがあるだろう。このフォントは、ANEMONE中にも出てくる。

筆者が気づいたのは二点しかない。実際もっとあるのかもしれない。

ひとつは、ゲオルギウスの側面。もうひとつは、喫茶店みたいなところにかかっている絵画の中。

果たしてこのフォントが何を意味しているのか、まったくと言っていいほどわからないのである

ANEMONEという映画

結びに、ANEMONEの終わりにも言及しよう。

ANEMONEをエンドロールまで観ても予告がないことにガッカリした人もいるかもしれない。果たして予告はあえて作らなかったのか、様々な事情で作れなかったのかはわからない。しかし、このことによりANEMONEはこれまでのエウレカセブンとはまったく異なったものになったと解釈できる。

これまでのエウレカセブンシリーズとまったく異なるものでありながら、それらを否定しなかったわけにするでもなく、すべてを受け止めて包括していく。

ANEMONEという映画は、そういう強度をもった作品だと思う。

触れられなかったことは多々ある。

たとえば、ミーシャ意味深な「あったことをなかったことにする。編集って最低の行為よね」発言

ANEMONEラストシーンで現れたゲッコーステイトの面々やチャールズレイたちはいったいどこの並行世界からやってきたのか(ANEMONEの舞台現代からゲッコーステイトの連中の恰好はかなり目立ちそう)。

デューイはどのような経緯で半身になってしまったのか。

並行世界をつなぐキューブ(っぽいが)、もしくは結び目のようなもの(ANEMONEに出てきたかはわからないが、ハイエボ1のサマー・オブ・ラブのシーンではキューブが結び目に変化していた)は何を意味するか。

からないことは多いが、ともかくハイエボ3が待ち遠しい、ということに尽きると思う。

追記

思っていた以上に反応があって驚いた。

それはさておき、ネット上で、これまでのエウレカセブンシリーズエウレカの見た夢だ、というのではなく、並行世界なだけだという意見を見た。これに関しては、上では特に何も述べなかったが筆者はこう考えている。つまり、少なくともシルバーボックスの力を得たエウレカにとっては、夢を見ること=並行世界を行き来するということである

そもそもコーラリアンであるエウレカにとって、人間と同じように「夢を見る」ことはできるのかどうか、わからない。ましてやシルバーボックスの力を得たエウレカにとっては。

筆者は何も、これまでのエウレカセブンシリーズがすべて、人間主人公アニメでよくあるような「夢オチ」だったのだと言いたいのではない。むしろエウレカの見た夢=並行世界並行世界として存在しており、ただしエウレカにとっては、レントンが結局死んでしまうからその多くの並行世界を受け入れられなかったため、普通人間にとっての夢と変わらないものだった、と言いたいのであるシルバーボックスの力とは、マルチプライズだかセブンスウェルだかが起きて(このあたりの用語も、筆者はあまり整理できていない)そういった並行世界への扉を開き、干渉できる力だと思う。

これまでの文章を読めばわかると思うが、筆者は無責任に思いつきをダラダラ述べているだけであり、文章推敲などいっさいしていない。そのため、これまで述べたことは相互矛盾していたり、論理がごちゃごちゃしていて結局何を言いたいのかよくわからなかったり、誤字・脱字がおおいにあるだろう。見落としや、勘違いも多々あるだろう。現に、主題歌PVを見ていたら、「受肉した!」と叫んだときデューイノヴァクの目は、コーラリアンの目などではまったくなかった。最後にそれを注意しておく。

2018-12-07

Wi-Fi無料提供してた奴、身内にいた問題

https://anond.hatelabo.jp/20181206214612

世の中にいる、家庭のIT管理者になってしまってるものです。

からWi-Fiが遅いって話がきて、ルータの置き換えしに行ってきたんですよ。

実家Wi-Fiルータ10年前のものだし、縦に長い家だから電波も設置場所から離れれば遅くなるし、そら新しいiPhoneを持っても実感は4G回線より遅いですね。

ルータ設置して、これで終わりと思った矢先。

Wi-Fiチャンネル一覧見たら鍵なしのルータがある。

試しにつなぐとつながる。

いやいや、こんなタダ乗りされたらまずい時代アカンやろwww

とか笑ってました。

気づく1時間前まで。

かのぼること実家でる数年前。

実家電波の飛びが悪いことを知ってた私は、自分の部屋にも中継器おいてたことを思い出しました。

もしやと思い、弟の部屋へ。

ええ、ありましたよ。

鍵なしSSIDと同じ文字列が書いてあるルータが。

焦って、初期化して設定変更。

当の本人に聞いたら

・今年はじめ買ったやつ

・(鍵なしについて)そんなのさわった覚えない

・やり方わからいからつながるしほったらかしてた。

・そんなこといわれたってわからない

リテラシーなさすぎとかいう、次元こえてました。

緊急策として、こっちで管理できる内容にして、わからないならもう設定をいじらないことを伝えました。

リスクの話はまた別の日にゆっくり話そうと思います

世のおうちIT管理人になってるみなさま、意外なところに落とし穴存在しています

家電説明書読まなくても使えるようにメーカーはして、リテラシーなき人も使えるようになってきています

でも使い方はわかっても、イレギュラー動作説明書みないといけないのに見ないし、リスクの話は説明書にすら乗ってない。

簡単に危ないですよってしか書いてなくて、何が危ないかすらわかってない。

ほんと次から身内ですら金もらうレベルですよ、これ。

電器屋サポートシステム、理にかなってますわ。



話題脱線しました。

とにかく、身内にフリーWi-Fiがいたら即つぶしましょう。

自分危険に晒される前に危険の芽を積みましょう。

2018-12-04

全角半角が混じった文字列を見せ続けると死ぬってあったな

はー、雑っ魚

2018-12-01

2018年人生振り返り

鬱になった

医者にかかっていないので診断が下ったわけではない。

多分世間一般のそれより軽いとは思うんだが判断材料がない。

気分の起伏が大きくなった

主に下側。良くない波というもの意識せざるを得なくなった。

思考力が落ちた

物事を深く考えられられなくなった。

筋道を立てて考えるというのも弱くなった。

集中力が落ちた

時間考えるのもしんどい

ふっと意識が別のものに行ってしまう。

情報処理力が落ちた

文章コードを読んでも一瞥意味を読み込むことが出来なくなった。

最初文字列が織りなす模様が目に映っている感じ。そこからすこしずつ意味がにじみ出てくる。

脳内イメージできなくなった

前3つと同じようなものではある。

趣味でやっている将棋で言えば脳内盤が消滅した。元々数手先のイメージ限界だったが。

物事に興味が向かなくなった

仕事にせよ技術にせよ趣味にせよ、ちょっとこれやってみるか、というのが激減した。

仕事に向き合いにくくなった

鬱の影響があるのかそもそも面白くない仕事なのか、どちらかと言われると難しいところがある。

眉間に力が入らなくなった

難しい顔をして頭から何かしらひねり出すというのが出来ない。

動画を観ることが増えた

頭使わなくて済むのでね。

YoutubeにIllegalUploadされている昔のバラエティーを見ることが多いが、出来ることなお金払って正規で視聴したい。何とかならんの。

性欲が減退した

仕方がないかな。

細かな身体的不調が出た

指に力が入らなかったり、足元がおぼつかなかったり。

最近は足裏~かかとに違和感が出るようになったけど、これは鬱とは別の症状だろうね。

----------

こうして見るとやはり鬱はでかいし痛いということですね。

良いことが皆無であったというわけではないんですが。

ちなみに今日は肉を食べに行くことになっています

人生 Advent Calendar 2018

https://adventar.org/calendars/3182

2018-11-30

anond:20181130112105

母に意味を聞いたら、「よく言うから言ったのだ」と言う

彼女が言い返したことは「でも、こう言う時はこう言うんだよ」と言う

言葉定型化が進みすぎた人においては、この「言い分」の部分にも定型化が見られる、ということに触れておきたい。

言葉意味喪失しかけた人なのだから、「よく言うから言った」という文字列についても、意味喪失させて受け取ったほうがいいと思うんだ。言葉意味、この場合の「意味」とは、文字列を介して伝えんとする意思、みたいな意味だけど、この「意味意思)」に鈍感な人は、見かけ上の文字列に引っ張られていて、「こういう場面で見かけた文字列」を記憶から引っ張ってきて採用してしまう。もちろん、よそからの借用自体はいいよ。言語は「意味の共有」が肝であるので、借用はそもそも必須なんだけれど、借用の仕方のピントがずれている人たち。

こういう人たちには2種類いて、元増田の「意味意思)」をちゃんと捉えられていない、つまり読解力がない場合と、自分自身の「意味意思)」を言葉にのっけることができない、つまり表現力がないタイプの人がいる。

そして意外と多くの場合において、表現力のほうが足りてない。「よく言うから言った」というのは、その一言すらもズレた表現かもしれない。「(言い方が思いつかなかったから、瞬間的に思いついた)よく言う言葉を(とっさに)言った」とか、そういう感じで、ピントがずれている。主題は「よく言うから」じゃなくて「思いつかなかった」なのに、そこにつながる表現が脱落する人たち。

思えば、世の中の半数近い人の言葉に対する態度はこんなものではないか、と言う気もする

そう思う。いるよな、こういう人たち。かなりいっぱいいると思う。

ただ、自分としては、彼らは言葉の使い方がうまくないだけなのではないか、というのが現状の認識で、「その場に応じたことを言うゲーム」だと思っている……ほど、考えが進んでいるとも思えないかな。

2018-11-29

ブラウザゲーのツール対策とか

Twitterブラウザゲーの公式アカウント(グラブルとか)を見てると自動化ツールなどに対する対策を求めるリプライが非常に多い

なんだけど、そもそもブラウザゲーである以上、ブラウザというサンドボックス内で出来る対策しか取ることが出来ない


人間の動きを再現するようにプログラムされた自動化ツールを使われてしまうと運営側ではそれが人間なのか、ツールなのか判断出来ない

17時間連続で動いている怪しいアカウントとかもあるんだけど、人間でもそれは出来なくはないし……

(蓋然性からいったら明らかにツール側なんだけれど)


となると、取れる対策といったら今グラブルが頑張ってやっているようなボタン認証文字列の読み取り認証かになる

が、もちろんツール側もそれは分かっているので対策はしている

例えばページ内に"認証"という文字列があったらアラートを出すとか、通常ではないページ遷移があったら停止するとか


こういった正常でない事象に対してアラートを出すような実装だと人間がつきっきりでないとダメだったりするんだけど、それはゲーム自体英語設定にして外注したりだとかで解決出来るんですよね

2018-11-25

anond:20181125091542

javascript一択だろ

プログラム入門にC言語とか寝ぼけたこと言う奴は、読書入門に現代の娯楽作品ではなくハムレットとかドグラ・マグラを読めとか言ってるようなもんだ

現代プログラム言語を扱うのにポインタ不要。参照のメンタルモデル理解できてれば十分だわ

文字列とか配列とか構造体がメモリ上でどう扱われてるかなんて知ってても、99%の状況では雑学以上の役には立たないよ

2018-11-22

デザイン勉強

最近わかってきたこ


◾️余白が大事

同じパーツで似たような配置でも余白の取り方が違うだけでだいぶ変わる。

やすさや雰囲気が変わる。

文字列行間もどれくらい余白とるか結構大事

タイトル周りはこれくらいの余白だから雰囲気を合わせるには本文はこれくらい空ける、みたいなのがある気がする。


◾️デザインルールに従いすぎる必要ない

これに捉われすぎてて頭固くなってた・・・

端っこを見えない線に揃えるとかああいうやつ。ノンデザイナーデザインブックとかで習う基礎ルール

かに無難に見やすくはなるけどあれやるだけじゃダメだ。

あのままだと硬いしそれこそ誰にでもできるデザインになる。

おもいきりが大事

崩すためにはバランスの上手さがいる。

これが上手くなさすぎて崩す勇気がなかったんだなぁと最近思う。

バナーなど面積が小さいもの練習詰むのがいいのか。


◾️メリハリ大事

これがすっごい苦手。

それだけ見てるとメリハリつけてるつもりでも全然ついてなかったりする。

他と比較して初めてちょっと大きくしたくらいじゃ全然メリハリに見えないやん・・って気付く。

感覚かめるまでプロ作品などと見比べつつメリハリとは何かを探るしかない。


◾️全体の雰囲気世界観を作る

これが結構難しい。世界観に合うパーツなどが最初から分かってればいいけど、一から作る場合ふわっとしかからない。

参考元のデザインを集めまくるしかない。

これも集め方を間違えるとブレる。

例えば、かわいい系と言っても実は細かく色々な「かわいい」がある。

今作りたいものは一体どの「かわいい」なのか見極める。

ふわふわやさしい感じのかわいいなのか?

ポップで元気な感じのかわいいなのか?

参考元を集めたら、色や素材やメリハリや余白を研究する。

パクる感覚をつかむ。そんで自分作品に落とし込む。

それでも難しい。

得意なテイストだと多少やりやすいのでそれを磨くのが本当はいいんだろうなぁ。


2018-11-21

PCandroidではちゃんと動くのに、iPhoneだとcookieに食わせた文字列が出てこない

ンモー、これだから嫌いなんだよ

2018-11-10

anond:20181110185725

ただのリッチな標準関数

プラプラついてないほうのCだと文字列とか扱うのが死ぬほどめんどくさかったり、Windowsの画面表示とかろくに扱えなかったりするだろ

そういう面倒くさいけど使用頻度が高い機能自分実装しなくても済むように大体の人がこれは要るでしょうってのをまとめたのがフレームワーク

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

前回は、SQLデータ更新をやりました。

今回は、SQLデータの削除をやりましょう。

 

メッセージの削除

基本は、同じなので前回やった更新処理をちょっと変えれば削除もすぐできます

 

投稿されたメッセージを削除する機能を、Webページに付けてみよう。

 

削除ページにジャンプするリンク

前々回作ったメッセージの一覧の中に、削除ページにジャンプするリンクも入れておいた。

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

という1行が削除ページにジャンプするためのリンクになる。

ブラウザーHTMLソースを見ると、ここが以下のようなHTMLに書き換わってる。

<td><a href="welcome/delete/2">削除</a></td>

これは「メッセージID番号が2のメッセージ」を削除対象にして、削除ページにジャンプする。

 

Controllerの改造

ユーザーが「http://localhost/waf/welcome/delete/2」というURLで、削除ページにアクセスしたら、コントローラーで「2」を受け取って使いたい。

CodeIgniterでは、URL文字列を解析して、使うことができる。

以下のようにコントローラーを改造してみよう。

 

// 削除画面

public function delete($id = '')

{

 echo "ID=".$id;

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

}

 

Controllerの改造の解説

delete()メソッド引数で、URL中の「2」の部分を受け取れる。

これは前回の編集ページ(更新の処理)と同じ。

「$id = $this->uri->segment(3);」でも受け取れる。

 

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

 

Viewの改造の解説

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

削除するメッセージを色付きで強調して、ユーザー確認してもらう。

 

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

コントローラー削除対象メッセージID番号を送るため、inputタグの「type="hidden"」でメッセージID番号を仕込んでおく。

 

Controllerの改造

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

// 削除画面

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

}

 

Controllerの改造の解説

やってることは、前回のデータ更新場合とほぼ同じ。

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

で、モデルに用意したデータ削除用メソッドを呼び出しているだけ。

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

 

Modelの改造

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

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

}

 

Modelの改造の解説

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

DELETE FROM talk WHERE id = ?」で、talkテーブルmessageid指定して削除している。

 

データを削除した後の挙動は、メッセージID番号がなくなるので、削除ページに表示できるメッセージデータがなくなる。

(例)id=2のデータを削除したら、SQLで「SELECT * FROM talk WHERE id = 2」を取得しても、空のデータデータがない状態

その場合は、

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

と表示させてる。

 

まとめ

以上で、SQLの「DELETE」を使ったデータの削除ができた。

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

 

以上で、MVCフレームワークを使ったOOPの使い方とSQLの使い方を見てきた。

SQLSQLだけで説明したほうが良かったね!MVCフレームワーク説明SQL説明が混在すると要点が分かりづらくなる?)

ちょっと失敗だったかも。m(__)m)

 

次回は、データベースの設計について学んでみよう。

 


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:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

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

anond:20181110135935

発狂」ってついたワードサラダエントリ書いた増田がこっち向いてニタニタくそ笑んできてほんと怖い。

文字列の向こうに何かみえてるんだろうな。

医者行け。もういったなら薬飲み忘れてないかかめろよ。

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

フックに引っかかり続けるブコメの君

こう、記事ってフックがあるじゃないですか。タイトルにせよ、本文にせよ。

個人的感想を言えば強すぎるタイトルのフックは好きじゃないですね。釣り記事とか言うんでしたっけ。

それでフックに引っかかって記事を読むと案外論旨は別のことを主張してたりとか、多いですよね。

まあそれはいいんですけれど、ブコメブコメでフックに引っかかり続けてるコメントをみると実に腹立たしく思えるんですよ。

君が感想を述べている項目はあくまで衆目を引くための餌で、筆者が一番言いたいことは別だろうと。そっちに言及して差し上げてはいかがかと。

いやね、わかるんですよ。そのフックが気にかかるから記事を読んだわけですし、文中で気になってることを書かれたらなんやかんやと申し上げたくなることは。

とくにブコメですとね、100文字でしょう。短い。Twitterより短い。驚きの短さなわけです。この文章ここまでで大したことを書いて無くて300字オーバーなわけです。

なんでしたっけ。フックに引っかかり続けて一番言いたいことに対しての感想を返さないのは少々悲しいものであるなあ、とそう思ったことをお伝えしたくこうして延々と文字列を伸ばしておるわけです。

お読み頂けました?読んだ方ね、あなた一昔前なら薬の瓶の説明書きまで読むタイプ活字中毒でいらっしゃる

手元に文字があれば一瞬のスキが空き次第読まずにはいられない、そんな中毒者ではないでしょうか。いや、スマホ発明されて本当に良かった。読む文字列に事欠かない良い時代です。

ではまた。

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

申請期限過ぎるまで振り込み申請なかったらそのお金没収?されてしまうやつ

メルカリ話題になってるやつは突然の垢停止によって振り込み申請したくてもできない状態で期限が来てしまうから問題なんだけど

割と短期間に思える期間で売り上げが消えてしまう仕組み自体問題ないのかな

ランサーズもそういう制度だった気がする

申請できる最低金額とかあってめんどくさくて しょーもない数百文字で数十円とかのタスクいくつかやって多分500円くらいそのまんまだ

しょーもない文字列を書き捨てただけとはいえただ働きしてしまったなあ あれはよくなかった


ゆうちょ国庫に入っちゃうのかなと思って調べたら平成19年9月30日までに最後の取り扱いか20年2ヶ月経ってると権利消滅してるらしい

それ以降は休眠口座みたいな感じになってるっぽい

2018-11-02

anond:20181102121645

昔はDB文字列を保存するときとか、長さをバイト数で管理してたから、バイト数÷2で文字数がでると管理が楽だったんじゃない。

今はUTF-8かになって単純に全角一文字バイトってカウントできないか関係ないけど、SIerとか20年前30年前の設計方法でやってたりするから、そのまんまだとか。

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