【PHP】下らねぇ質問はここに 9
レス数が1000を超えています。これ以上書き込みはできません。
質問者の聞きたいことは
出来るか出来ないかなので
出来ないと言う結論が出て
質疑は終了していると思うけど 非正規蔵を作られて鯖にアクセスされたくないってのが元々の質問内容
それに対して、暗号化して定期的に別パターンに変更するのが当たり前(ドヤ
とか宣い始めたのが>790>809(もうちょっと前から)なんだよね。
当たり前っつーならそれ挙げてみ?って書いたら、全然そうなってない例しか
挙げられなかった始末。
挙げ句の果てには809の言いぐさで論点すり替えて未だにマウンティング
しようと必死なわけ。
普通に考えたら、暗号化までは普通だろうが、暗号化パターンを定期的に変更
しようなら短スパンでの蔵の更新か暗号パターンファイルの更新をして配布
しなきゃならん。当然鯖の方も対応せにゃならん。
(日付時間を種にしてやる方法もなきにしもあらずだが穴がある)
809の脳味噌はそこまで一切考えずにゲーム脳の脊椎反射でマウントドヤドヤ
してるだけだろ。 https://mevius.5ch.net/gamedev/
こっちの板でやれよ
馬鹿にされないようにな
ここから来ましたって絶対に言うなよ >>814
俺は横からツッコんだだけで、むしろお前がガッツリ絡んでた話題だろ
なに他人の振りしてんだよ禿 自動でログインしてセッション確立して投稿するようなスクリプトがあるけど
HTTPに限らず通信手順をちゃんと模倣できていればそれが可能
防ぎたいのなら通信部分を解析されない対策をとればいいのだけど
まあ専門外になるしPHPerには難しいと思うよ 俺、セガよりも大手でゲーム作ってたけど、
>>802の言ってることは何も間違ってないと思うぞ
話の流れよく分からんからこれ以上のことは何も言えんが 話の前の方から引用すると
>最初から毎週暗号化しろっていってんじゃん。
これやってないよねって話でしょ
802自身が実際にはキャプチャしたら暗号化すらしてないって言ってる
毎週暗号パターン変更してるのかしてないのかの事実関係は
どうでもいいんだけど、上から目線で言う事毎回矛盾してるのはどうなのって話なのでは 別口からのアクセスおさえたいなら暗号化しろと
>>746あたりのレスに>>760が答えたのと
>>792に対するレスとして>>802が答えたのは関連があるのか? 関連ないのを持ち出されても関連ないとしか言いようがないな
>>787から「ゲーム会社では〜」を持ち出し、>>787-790で「毎週変えられたら」
という話が出たから>>792を書いたに過ぎない
結果的にゲーム会社でそこまでやってる例を挙げてるつもりで、暗号化されてない
例を挙げてドヤ顔してるやつが居るよなって話になってるだけ 配列で得られたデータをオブジェクトに変換してリターン
している例を見たのですが、何かメリットがあるのでしょうか?
return (object)$arr; 何かよく分からんが
勝手にマウント(笑)がどうとかと勘違いして
勝手にドヤ顔(笑)がどうとか喚き散らしてるだけって事はよく分かったw
つかプライドが高いのかなんなのかしらんが
現実世界で話したら実に面倒臭そうなやつばっかだなw
セガでもそんな感じなんだし難しい事考える前に適当に作って動かしてみれば
俺が言いたいのはこれだけ
何をそんなに噛み付く必要があるんだw キモすぎww >>822
返り値を受け取る側でオブジェクトの方が都合が良いからだろ
まあPHPerは配列大好きだからな
例えばPDOのPDOStatementなんかはTraversableだから
そのまんまforeachでぶん回せるのに
それをわざわざfetch()とかで配列にしてみたりとかさw >>823
偉そうに自己矛盾を認めないで草を生やして相手を卑下している時点で、どっちが面倒なのかな。 とりあえずプロトタイプをというのは至極まっとうな意見だと思うので
何をそんなに顔真っ赤にする必要があるのやら全くもって理解不能 マウント
ドヤ顔
上から目線
このあたりの単語を好んで使う人は自己愛性人格障害だから相手にしないのが吉 >>792に答えてって質問に対して的外れなことばかり言ってんじゃねえよ
的外ればっかだし、もうマウント取るしか能が無いよね?って話で図星突かれて
さらに的外れ続けんの?無能すぎね? う〜ん。
自分も非正規蔵の件について話に入ってたけど、認識違いとかのズレで
まあどうでもいいやと思って黙ってたけど、結論はいいとして方法論で
これが当然のようにいいながら矛盾しつつ相手を卑下するやり方には
同意しかねるね。
議論の内容より相手を叩く事に重点を置いてるだけにしか見えない。
まあこんなところで議論とか求めても仕方ないけど、筋が通ってない分
ヤクザにも及ばないタチの悪さとは思う。 792は自分が馬鹿にされてると勘違いしてるのか
大手でもそんなことやってないと818も言ってるんだなら答え出てるだろ
やっぱり病気だわお前 ローカルプロキシ使ってキャプチャするぐらいなら簡単にできるんだから実際にどんなデータになってるか見てみればいいのにね
他の人が言ってるとおり意外と簡素なものも少なくないと思うよ 毎週暗号化手段を変えろ
↓
>>792 そんなことやってるアプリあるの?
↓
>>802 セガでもやってなかったぞ
>>818 セガより大手でもやってないぞ
↓
>>792 激おこ
うん。意味が分からない >>833
当人じゃないが、端から見てて
>>792 そんなことやってるアプリあるの?
↓
>>802 セガでもやってなかったぞ
↑
そうじゃなくて
>>802 セガでこんなのやってたぞ(やってない)
としか読んでなかったですわ。 読み返してみてだいたいどうしてこうなったか理解した
毎週変える対策すればクライアントなんて出来ないはず→
「はず」ってのは考えが甘い→
言い方がわるかった「はず」ではなくて不可能→
毎週変えなかったら解析されてしまうだろ→
最初から毎週変えろいってる
この最後のはそういう前提で話をしてるってことであって
別にそれが当たり前だとは言ってないと思うんだわ 話の流れがイマイチ読めないが暗号化のキーは共通鍵って話なの?
それとも暗号化のアルゴリズムを変えるとかトンでも理論の話なの?
どっちでもおかしな話だけれど
そんなことしてるアプリあったら教えてほしいw ttps://www.otwo.jp/blog/cheat_measures/
多分こんな感じの話 >>829
>>792の毎週暗号化法を変えてるアプリはあるの?
に対する答えは
1.そういう事をやってるものもある「かも」
2.やってないものもある
のどちらかなわけで
1の具体例はまだないが
>>802は2の具体例なんだから別に的外れじゃないでしょ
誰も”全部そうしてる””絶対にそんな事はない”という0か1かの話しじゃないのにさ
マウントだの何だの言ってるあなたの方がよほど的外れだ 外から解析できるような鍵なら毎週変えたところで無意味だし、
リバースして解析されるならそれこそ毎週変えても無意味だと思うの。
だからそんなことは置いといて、さっさとプロト作れってこった。
それが出来たらパラメタのチェック方法を掘り下げていく方が効果的。 >>836
>どっちでもおかしな話
だよなw
暗号化やハッシュ値生成のためのアルゴリズムは高度な数学の話になるから
そのアルゴリズム自体を毎週新しく生み出せってのはトンデモ話だが
既存のアルゴリズムの組み合わせ順を変えるとか
暗号化⇔複合に使うキーやベクトル値を変えるとかって話なら
週ごとどころか通信毎にランダム化できるんだから別に非現実的な話じゃないよな
※つか、なぜ”週”単位なのかの方がよく分からんw
>>838
もうそいつの事はほっとけよw
>>839
特に下2行には激しく同意 >>838
>>792では「【あって当たり前な流れになってるけど】あるなら具体例を教えてくれ」であって「あるかないか教えてくれ」ではないんだよ
単純明快な日本語でなにもおかしくないだろ
求めてるのは完全に1.(あればだが)なんだが、なんで2.でOKみたいな流れになってんのよ いつまでクソみたいな揚げ足取りをやってるんだか
特にお前の話は糞の役にも立ってないんだから黙ってクソして寝てろ
マウントとかドヤ顔って単語を好んで使う奴ってほんとゴミクズだわ >>841
じゃああなたの質問には誰も何も答えないのが正解ってことね
それで満足?
はいはい
こんな人を真面目に相手にした俺が馬鹿でしたよ まあでもlocalに串立ててGUIでデータの中身見るなんてのは
専門知識も要らない低レベルな話なんで
そんな話をドヤ顔だのマウントだのと言われて俺困惑ww
何がこいつの逆鱗に触れたんだろうw
おちょくる分には面白いが あるなら教えてくれ(あればな)→これでドヤ!(ないけど)→ねえんだろ何ドヤ顔してんの
この流れで悔しがってるのが802以外に居るのが不思議だね
本人か親兄弟か何か? PHP 7でASPタグが廃止された理由ってなに?
セキュリティ?パフォーマンス? (当たり前というのは思い込みだが)当たり前の流れにしたくなさそうな>>792に
加勢した>>802になぜか噛み付いてるんだもん
wiresharkでパケットキャプチャしたってのが何か高度なスキルに思えて
そんな自己満披露せんでいいよとかキレちゃったのかはわからないけど
傍からみててなぜキレてるのかさっぱりわからないw 自分も誤読した立場なんでどっちでも取れるレスだったなあと思えたけど、
こうやって一々煽りに来るのが一番悪いと思いますね
いつまで続けるんです? >>848
wiresharkじゃなくてburpsuite
burpsuiteの方がそういう用途に特化してて簡単
それでも>>792にとってはドヤ顔に見えてしまった
つまり792はその程度の知識の持ち主だってこと
もう相手にするのはよそう >>850
こういうproposalに対してさえnoを投じるrasmusほんま老害 >>851
採用例を求めてるのに、採用してなかった一例のみ挙げて加勢とか判断材料にもならん
馬鹿としか思えんし、その加勢方法がキャプチャなんて所がむしろ失笑しかしてないけど?
高度でもないのに自分でそんな詳細一々紹介しに来る神経がもう、背伸び精一杯だろ
やっぱりドヤ顔してたんで?
ドヤ顔指摘がツボすぎるから悔しくて粘着して煽りに来てるんだろ? >>850
ありがとです!
使用頻度が低いことや、言語の発展上の弊害になると考えられたようだね strlen()にintegerを渡してもちゃんと桁数が返ってくるのはなぜですか?
stringじゃなくても動作するってことは、どこかで型変換されてるんですか? http://php.net/manual/ja/functions.arguments.php
> 強い型付け ¶
> デフォルトでは、間違った型を渡された場合でも、可能な限りは来されている型に変換します。
> たとえば、string を想定している関数のパラメータに integer が渡された場合は、その値を string 型として受け取ります。
declare(strict_types=1);
気になるなら、これいれるとTypeError投げるようになる。 >>857
うえ、そんなんありっすか
噂に違わぬPHPの片鱗ということですね
ありがとうございました > 組み込み関数内からの関数呼び出しは、 strict_types 宣言の影響を受けません。
とも書いてあるな。
strlenはもろに影響受けてるようだけど、よくわからなくなってきたw >>858
逆にこういう挙動じゃない動的型付けの言語教えて 文字列のUnicodeを10進数または16進数の配列として取得するにはどうすればよいですか? >>862
文字列を $s としたとき、$s[$i] で $i バイト目の文字が得られる。
これを ord するとその ASCII値が得られる。
UNICODE文字単位でそれがやりたいなら、mb_substr を組み合わせてやる感じかな。 >>862
$str = 'unkoうんこ';
$arr = [];
foreach (preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY) as $char) {
$arr[$char] = [
'hex' => bin2hex($char),
'unicode' => base_convert(bin2hex(mb_convert_encoding($char, 'UTF-32BE', 'UTF-8')), 16, 16),
'json' => json_encode($char),
];
}
print_r($arr);
あとは結果見て都合の良いように改変してどうぞ よろしくお願いします。
$date=date('Y-m-d H:i:s');
$sql="INSERT INTO tableName (name,comment,created) VALUE (:name,:comment,'{$date}')";
のこコード中で、最後の出てくる ' { $date } ' が、シングルクォートで囲まれているのは何故でしょうか?
$dateが文字列になるからなのでしょうか? >>865
前後がないとわからんがPDOかな?
:nameや:commentはパインド変数だから
型を意識する必要ないけど$dateはバインドしてないから
文字扱いにしてるんやろね
んで、文字列でシングル使いたいから全体はダブルで括るという SQLでは文字列リテラルはシングルクオーテーションで囲まないと駄目ってだけだぞ
SQL文として正しくなるように文字列を組み立ててるだけって事を理解しろ さらに言うと
{$date}は 2018/01/01 01:00:00 みたいに展開されるわけだが
シングルクォートが無いとこの部分は数値と除算と…のように解釈されてエラーになるわけだ
MySQLだと日付時刻の指定はYYYYMMDDhhmmssかYYMMDDhhmmssの形式の数値でもいいから
$date=date('YmdHis')かdate('ymdHis')
だったらクォートいらないけどな みなさま、ありがとうございました!
朝からスッキリできました!
皆様偉大な先生です。本当にありがとうございました!! 下記のように名前空間(ディレクトリ名)とクラス名が重複するのって何かデメリット的な事ありますか?
use Myapp\FooBar\FooBar;
FooBar::new(); >>871
どこをどう見ても3にしかならないし
実際実行しても3が出力されるんで
何かどっかがおかしいんだろ
つか変数のglobal宣言なんていまさら使うことなんかないから
理解できんのなら忘れていいよこんなもんw >>872
検証ありがとうございました。
その後、必死でテストしたのですが2しか出ません。
>つか変数のglobal宣言なんていまさら使うことなんかないから
なぜですか? >>873
宗教上の理由。
global だって使うときは使うから使い方は覚えておいた方がいい。 >>873
必死ってのがよく分からんw
コードをコピペして実行するだけなんだから数秒で終わる話だと思うんだが
ひょっとしてコードを見よう見まねで手打ち(「写経」という)してね?
写経が無駄だとは言わんが
もうちょい色々分かりだしてからやった方がいいぞ
globalについては
グローバル汚染って言葉でググってみ
今PHPをやってるって事はセットでJavaScriptもやる可能性が高いわな?
そこも踏まえて言語を問わず
今自分がどこの空間を使っててそこを「汚染」しないようにはどうすりゃいいか
意識した方がいいぞってことだ
って書くのが面倒くさかったから適当に書いたw 適当すぎだなww
今はよく分からなくてもその内何となく分かってくるから
今わかんないなら気にするなw 使い方は覚えておいた方がいいけど
なるべく使わずにすむようにした方がいいだろうね
WordPressはglobal宣言しまくってるけど設計としてはあまりまねしてほしくないのは確か wpは歴史的に仕方ない
ポリシー的に後方互換を大事にしてるしな
設計はまねするなという意見には同意
そろそろ後方互換を捨てろよって思うけどfirefoxみたいなことになる可能性もあるからなー wordpressって推奨はPHP7以降になっているけど、
実際はPHP5.2とmysql5.0でも最新版が動くらしい
下手すると10年以上前?
>>876を見て久しぶりにコードのぞいたら本当にglobalだらけで笑った
こういう古い設計のコードを見てPHPがくそ言語だと言われるのはモヤッとする プラグインやテーマもテンプレートエンジンを使わずに素のPHPを使ってるもんだからXSSやCSRFとかの対策が完全自動化されてないのも問題
2018年にもなって素のPHPで書いたテンプレートなんか読みたくないよ。。。 5.2っていうと配列をarray()って書いてた時代か
名前空間も無名関数もタイプヒンティングもないし
定数定義にdefine使ってグローバルで衝突しないように接頭辞を付けるようにしてたっけ
WordPress頑張りすぎだろ まぁ現状のコードベース維持するならコードスタイルもコードベースに合わせざるを得ないわな
モダンな書き方にするなら新規で書き起こした方が低コストだろうし >>881
だな
まあWPはしゃーない
プラグインとテーマの豊富さが売りなんだから
そこ切り捨てちゃったらそれこそFireFoxみたいなことになるw
大昔はこんな実装をしてたんだと反面教師にするにはいい材料だ
モダンなものに触れるだけじゃなぜそうすべきなのかが理解できないしな
俺の知り合いにもWPに親殺されたみたいなのがいるから
WPがこの世から消えれば幸せになれるやつも少なくないんだろうが
逆にWPだけで飯食ってるようなやつもいるからなあw サイトマップから各ページのURL読み込むの作ってたら
http://mutimutigazou.com/sitemap.xml
こういうのができたのだがどう処理すればいい? お願いします。下記はテキストからの抜粋です。
新規登録するメールが、DBで重複していないかチェックするコードです。
function email_exists($dbh,$email){
$sql="SELECT COUNT(id) FROM members where email=:email";
$stmt=$dbh->prepare($sql);
$stmt->bindValue(':email',$email,PDO::PARAM_STR);
$stmt->execute();
$count=$stmt->fetch(PDO::FETCH_ASSOC);
if($count['COUNT(id)']>0){
return TRUE;
}else{
return FALSE;
}
}
解説では、入力するメールアドレスが「何件あるか」調べます。取得する値は0か1。
しっかりと行数をカウントし、メールアドレスが登録済みかチェックします。
と記載されています。
コードを見ていると、fetchで連想配列を1行だけ$count変数に格納しているだけに読めてしまい、
「何件存在しているか」、「行数をカウントする」、という部分の記載が、コード上理解できません。
上記のコードで、DB上で該当する行の行数をカウントしている部分はどこにあたるのでしょうか? SQL文自体でカウントしてるから1行読むだけでいいやん
てか、1行しか返ってこないし >>885
カウントはSQLの集計関数であるCOUNT()でやってる
SELECT COUNT(id)
のところな
こういう時は
"SELECT COUNT(id) AS cnt FROM members";
みたいに別名を付けるくせを付けといた方がいい
ちなみに今回のようにカラム1個のデータだけ欲しい時は
fetch()ではなfetchColumn()を使って
$count = $stmt->fetchColumn();
とすれば
$count には配列ではなく直接 COUNT(id) の値が入るんで楽
さらにこうやって書けば
$count = $stmt->fetch(PDO::FETCH_ASSOC);
以下の冗長な6行がこうやってたった1行で書けるわな
return (bool) $stmt->fetchColumn(); >>885
さらに言えばw
メアドが登録済みかどうかを知りたいだけなら
COUNT()なんか使う必要はなく
$sql="SELECT id FROM members where email=:email LIMIT 1";
でいい
まぁその例はあくまでも教科書的に「何件あるか」を調べる方法を書いてるだろうが
DB処理ってのはボトルネックになりやすいんで
sqlはなるべく簡素にするのが基本な >>883
XMLなんだからsimplexml系とか(他にも色々あるが)で処理すればいいだろ?
gzされてるデータの扱いが分からんのか?
gzされてるデータはローカルに保存した上でgzopen()で開いて処理してもいいし
データ取得にcurl使って CURLOPT_ENCODING => 'gzip' ってオプション指定して自動展開してもいいし
そのままとってきてgzdecode()通してもいいし
好きなようにすりゃいい >>886
>>887
>>888
ありがとうございます。
$count には ['COUNT(id)']=>行数という連想配列が、
$count['COUNT(id)'] には 行数が、
それぞれ格納されているのですね。
return (bool) $stmt->fetchColumn();や
実務的なSQLの考え方を教えてくださってありがとうございます! >>891
お、おう
そういうレベルだったのかw
変数の中身がどうなってるかわけ分からん時はすぐに
var_dump($count);
ってするんだ
$countが「配列」や「オブジェクト」だと分かってる時は
print_r($count);
ってした方が見やすいから使い分けるといいぞ
とにかく初心者の内はちょっとでもあれ?って思ったらすぐ var_dump() しろ >>885の変数COUNT(id)なのですが
$sql="SELECT COUNT(id) で、変数宣言された、ということでしょうか? >>894
上でも書かれてるけどそういう疑問を持ったら実行してvar_dump
スクリプト言語はそうやって簡単に実行して結果が見れるのがメリットなんだから、
もし今それができないなら環境構築から見直さないとものにならないよ
あと上の人もだけどPHPというよりはSQLが分かってない
勉強の仕方が間違ってる コレは解説のサンプルコード書いてるヤツが頭ワルイわ
$countを$$colum_valuesとか別の名前にするべき
countと直接一切関係ない
$stmt->fetch()は行の列を全部とってくるのは分かるヤツがみれば
コード書いたアホがなにをやりたいかなんとなく分かる
きっとなウンコphpのウンコライブラリ使うと
辞書の連想配列にカラムの値が格納される仕様になってるのは分かる
コレでわかる
$$column_values=$stmt->fetch(PDO::FETCH_ASSOC);
if($$column_values['COUNT(id)']>0){
↓低学歴知恵遅れが書いた解説コードはペケ
$count=$stmt->fetch(PDO::FETCH_ASSOC);
if($count['COUNT(id)']>0){ PHP 7.2の初歩的な質問をさせてください。
下記のようにコンストラクタの戻り値を宣言すると __construct() cannot declare a return type エラーになります。
__construct( ): void { }
コンストラクタは何も型宣言をしてはいけないということでしょうか? >>899
> コンストラクタは何も型宣言をしてはいけないということでしょうか?
その通り
というかコンストラクタの返却値型宣言していい言語ってある? ありがとうございました。
さあ…?
そんなに詳しくないので知りません。 コンストラクタの機能は100%インスタンスの生成を成功することなので仮に失敗もあるならbool値のみ、でも言語の機能としてインスタンスの生成を失敗したら使い物にならないので100%インスタンスの生成を成功する言語のはずだから戻り値は必要ない コンストラクタはなくてもインスタンス作れるから戻り値の保証はする必要ない voidぐらいさせてくれてもいいじゃない。
C言語おじいちゃんなんだからあ… @のコメントあるから別に困りはしないよ。
すべて統一という気分の問題かな。 返り値のことを返却値というやつって何なんだろう
何も返却なんてしてないのだが >>908
たぶん何も考えてないんだろw
>>909
その発想はなかったわw
>>897
PHPerは何でも配列にしたがる癖があるのが困り物だが
配列にしてわけが分からなくなるなら
変数名の付け方をもっと工夫すりゃいいのにってのは思う
配列には$rowArrとか$row_arrとか付けるようにするとかさ
前の方にも書いたが配列として取得しなくても
fetchColumnでスカラー型として取得する方法も知っておくべきだと思うし
$arr['COUNT(id)']みたいにSQLの集計関数の結果をそのままキーとして使わずに
COUNT(id) AS cntみたいにエイリアス使って
$arr['cnt']ってする癖をつけておくべきだと俺は思うけどな オブジェクトで返ってきてるんだから、そのままオブジェクトとして操作すればよいと思うぞ。 xamppでPHPUnitの連続実行ってどうやるの?
shスクリプトでは複数行書けば全部実行してくれる。
batファイルだと最初の1行を実行して終了する。
おま環? >>895
>>896
>>897
ありがとうございました。
よく理解できていないのでメモさせてもらい
勉強を進めて後々で再度確認してみます laravelがrailsと比べて優れているところ教えて下さい 最大のメリットは php である事。最大のデメリットも php であること。
。。。比較の軸ぐらい考えろよ。オマエアホだろ。 >>916
言語の質ではなくフレームワークの質を聞いてるんです。 比較の軸が出てきたなw
どっちも変わらん。要件次第。
もうちょっと聞きたいことを整理して質問しようぜぃ♪ >>919
プログラミング初心者なので一番知りたいのは学習コストで、どちらが学習コスト低いですか?やはり日本語情報の多いRailsの方が有利でしょうか?わかりやすさの面ではどちらでしょうか?もう1つ聴きたいのですが将来性はどちらに方があるでしょうか?長文すいません。 書いてんじゃん。どっちも変わらん。要件次第。前提次第。
XXと〇〇、どっちが優れてますか系の質問するやつにまともなエンジニアはいないんだよ。
要件整理して、前提確認して、比較軸作って、ドキュメント読んで、必要なら検証するのがエンジニア。
手が動かないなら向いてない。 >どっちが優れてますか系の質問するやつにまともなエンジニアはいないんだよ
>手が動かないなら向いてない
これ両方共すげぇ分かるww ものすごく感覚的な話で申し訳ないけど
Railsは出た当時は画期的だったけど、他のフレームワークがRailsの良いところをどんどん取り込んでいったので優位性がなくなっていってるイメージが強いかな
あとこんな事書くとRuby使いの人が怒るだろうけど
どこかの海外フォーラムで最近、死に向く言語ランキング上位にrubyが入ってたっけ
ソースを探したんだけど、どこだったかど忘れして探しきれなかった
申し訳ない
かといってこれから先はPHP?って言われると答えはNoだけど(スレのみんなごめん)
今から勉強始めるなら、個人的には色んな意味でPythonをおすすめするかな
Pythonっていうと機械学習や深層学習のイメージが強いと思うけど、
WEBフレームワークもどんどん進化してるし、
スクレイピングライブラリなんかも超高性能なのが出てきてるし
手っ取り早く結果を出すだけならまだまだPHPの方がかなり楽だけどね サーパーサイドなんてもうNode一択
他はNode書けないやつが使うもの >>926
ruby のどんな点がクソなんですか? バグらない、Ruby >> Python, JavaScript >> PHP、よくバグル
PHP の本は、デザイン主体だろ。
プログラミングの本は、ほとんどない
ゲームエンジン・フレームワークの巨人、掌田津耶乃の本も、初めて出たばっかり。
Node.js超入門、2017
Python Django 超入門、2018
Rails は既に、何十冊も出ている。
この2冊が最短
たのしいRuby 第5版、2016
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7
他に、無料のRails チュートリアルがある。
これの10日ぐらいの解説講座もあるらしい
YouTube に、Rails の動画もある。
フリーエンジニアになる人は、Rails が多い
Pythonは、ラズパイ・AI・機械学習・統計処理とか、普通のウェブページではない。
サーバーサイドは、node.js
Railsでも、HTML, CSS, JavaScript(JS), jQuery は必須だから、
プログラミングやテスト工程をマスターするには、Rubyがよい
Railsの前に、Sinatra をいじくりまわして、ウェブページの仕組みを学ぶのがよい。
Nokogiri, Selenium WebDriver で、スクレイピングするのも勉強になる
Rubyで学んだことは、そっくり、JS で使えるから、JSで学ぶよりも効率的。
Rubyの方が、他の言語よりも可読性が高く、バグらないから! ちゃんとした質問しないから、エンジニアになれなかった亡霊が無駄コメント残し始めたじゃないか。。。
責任とって、クローズしろよ。 git commit -m "close #915" HTMLとJVSCRIPT、PHPは相性がいいの?
SNSとかコミュニティサイトを作って
海外のユーザにも利用してもらおうとしたら、PHP? 相性は別に良くないと思うよ。
フレームワーク次第じゃない?
そういう話なら既存のOSSなSNSをインストールするべきと思う。
OpenPNEやWordPressのプラグイン等など… プログラム言語やツールは物を作る道具や手段であってできるものに変わりはない
HTMLのようなGUIを作る場合はエディタが出来栄えを左右することもあるだろう
ただPHPでやることはバックエンドの目に見えない地味な場所であって
頑張って書くようなコードでもなければ体感速度もサーバのスペックが大きく物を言う
そんなところで良し悪しを熱く語ってるやつはたいていアホで出来ない子
つられやすい話題につられるのもアホで出来ない子 HTMLやCSS出来なくても
WordPress使えば誰でも子供でも
ホームページが!
それもタダで無料で!
WordPressはPHPで構成されてます人気もあります
でも問題ないわけではないです!
子供より若い園児向きには Flat-File CMSを
データベース不要でPHPで動きます! >>936
意味わからんこと言って不親切よりいいわ。
そんなにもできる子は世の中お前しかいないんだよ。 >>933
初心者でも簡単にapacheのモジュールとしてインストールして動かせるって意味では相性いいと思うよ
>>936も言ってるように
プログラミング言語というのはあくまで手段であって目的によって使い分けるものなので
これは絶対こう絶対違うって書き方してる人のことはスルーしとこう
webアプリといえばperlかc言語のcgiみたいな感じだった昔とは違って今は色んな選択肢がある
phpはその内の1つってだけ
phpのいいところは学習コストの低さかな
脳死でさっと結果を出したい時はphpみたいに何かに特化してる言語はとにかく楽
最近10年以上前にperlで書かれたcgiを触る機会があったけど
たったこれだけの事するのに何でこんなにあれこれ書かないといけないんだ…って萎えまくった(perlは文字列処理が得意だけどウェブに特化してるわけじゃないから仕方ない)
php以外にも色んな言語に触れてた方がいいとは思うけど
ウェブアプリを作ることを目的とした初学者が選ぶ言語としてはまだまだ第一選択肢となり得る言語だよ >>939がいいことを言った
プログラミング言語には自分との相性みたいなのもあるからな
色んなものを試してみて1番自分に馴染みそうなのを選ぶのもいい
とにかく0か1かでしか物事を語れないプログラマ脳のいうことは鵜呑みにしちゃだめだ perlは、同じ事するのでも人によって色々アプローチが違ってて
それはそれで面白いんだけどね
perlをとっつきにくくさせているのは変数の宣言と使い方じゃないかな
書いた人を呪いたくなる事があった >>942
TIMTOWTDIがperlの設計思想だしね
>書いた人を呪いたくなる事があった
あるある過ぎて泣ける
perlはその自由度のせいで可読性が損なわれやすい(もちろん書き方の問題)けどそういう言語は最近は不人気だね
正規表現使ってワンライナーでさくっと何かしたい時とかやっぱperlはいいなって思う事もあるけど
あんまりやり過ぎると5時間後の自分にすら読めなくなるという… >>943
設計思想的にPerlの対極にいるのがPythonで今や大人気だもんな
Pythonは数学者が作ってPerlは言語学者が作ったって話を初めて知った時はめちゃくちゃ納得した >>944
だね
昔は趣味のスポーツカーが流行ったけど今は使い勝手や燃費重視のコンパクトカーや軽が流行るのと同じで
pythonは悪くいえば遊び心はないけど可読性と再利用性の高さは強力な武器だよ
流行るわけだ
プログラミング言語には作者の性格が色濃く現れてるから面白いよね
php作者の名言集
https://anond.hatelabo.jp/touch/20100427231539
ディスる時によく使われるけど俺はそんなphpも好きだ >>945
> 僕なら、10リクエストごとにApacheを再起動しますね
ワロタwwwww
これ有名なの?恥ずかしながら初めて知った
面白いな わりと有名だと思うよ
ついでにこれとか
https://takahashifumiki.com/web/programing/2209/
あんまり書いてるとマジレスして怒る人が出たら嫌なのでこの辺で…
繰り返すけど言語はあくまで手段に過ぎない
phpもperlもpythonもその内の1つに過ぎないってことでおやすみなさい 一気読みしてしまったけどめちゃくちゃ面白かった
サンクス
俺もPHPをもっと好きになれた気がするww
そしてPHPにもgotoがあることを知って驚愕
まあ使う必要はないとだろうけど
わざわざあとから付け足したみたいだが必要だったのだろうか ラスマスさんインタビュー
http://gihyo.jp/news/interview/2010/rasmus
ここでは自分のことを利己的と表現してるが
現実主義・合理主義者なんだよな
アホのいうことは相手にせず適当にスルーしてるから
>>945みたいな感じになるとw
> 言語は開発者が考えているほど重要ではありません。
> 重要なのはどのような製品が必要とされているのかではないでしょうか。
> 必要とされている製品をいかに速く作り,かつ簡単に維持するかが重要です。
> エンドユーザは,どの言語で書かれているか?なんて気にしていません。
このスレの誰かさんに100回声に出して読めといいたいw >>949
少し上の方にあったglobalの話と似たようなもので
使わなくて済むなら使わない方がいいって感じのもんだな
他の言語にもgotoはあるけど使ったことないや
あ、basicやったことないの?なんていうおっさんは相手にしてませんので
(書いとかないと相手にするのがめんどくさいw) すみません、よろしくお願いします。
function readLines(string $path){
$i=0;
$file=fopen($path,'rb') or die('ファイルが見つかりません');
while($line=fgets($file,1024)){
yield $line;
}
fclose($file);
}
$gen=readLines('sample.txt');//***
foreach($gen as $line){
print $line.'<br>';
}
?>
読みだす対象ファイルは10行あります。
***の部分なのですが、$genで関数readLine()を1度呼び出して
対象ファイルから一行読みだしているように思えるのですが、
実際には、対象ファイルの全行を読みだしています。
$genで全行(10行)格納できているのは、どんな働きがあってのことなのでしょうか? >>953
たった8行しかない関数なんだから
自分で1行ごとに何しているかを調べてみよう >>953
while ($line=fgets($file,1024)) { }
がループ処理だって事も分からないのはやばいぞ
もう少し頑張れw
このコードはだめだな
while($line=fgets($file,1024))
これだと 0 だけとか改行だけの行があったらそこで処理が止まる
同じように書くなら
while (($line = fgets($file, 1024)) !== false) { }
こう書かないと駄目
PHPerはよく if ($hoge = fuge()) みたいな書き方をするけど
分かってる上で手抜きでそう書くなら別にいいが
分かってないならそんな書き方はやめるべき ジェネレータ使ってるから一見何してるか分かりにくいように見えるかもね
とはいえ便利だし1行ずつ読めば難しくない
ifの条件文中で代入するのはむしろCでよく見た >>957
swiftとかpythonだとこういう書き方はできないからね(代入式が値を返さない)
そのおかげでヨーダ記法みたいなヘンテコリンな書き方をしなくてもミスが防げるんだけど
一長一短だしこの書き方を全否定してるわけじゃないってことで
perlのワンライナーが気持ちいいってのもよく分かるが
人が書いたものは見たくないというのもよく分かるw すまん下の2行
全然関係ない文章が入ってしまった
書こうと思って削除した文章がクリップボード履歴からコピペされてしまった なぜ文字列結合を . にしちゃったんだろう
フレームワークを通さずにドットチェーンでサクッと書きたい時に悲しくなっちゃう >>953
$gen=readLine('sample,text'); は、$genに関数を入れてるだけで、
書き換えるのなら
foreach(readLine('sample.text') as $line){
print $line'.<br>';
}
ということでは? >>966
ありがとうございます。変数に関数を入れられるのですね。
書き換えられた方はテキストの別のページに載ってるのと似ているので理解できました。
すっきりしました。ありがとうございました。 >>967
別の人も書いてるけどジェネレーター(yield)を使ってて分かりにくいなら
yield使わずに同じことやってみたらいいかも >>968
ありがとうございます。
各yieldの前後や、関数の呼び出し元に
print文でどこを実行しているのかを表示させるようにして確認しました。
yield fromを混ぜ込んだ文も、同様に処理するようにしたら
ずいぶん理解できるようになりました。
皆様、ありがとうございます。 $gen=readLine('sample,text');
これで代入されてるのは関数じゃなくてジェネレータ関数が返す反復可能なオブジェクト(への参照)かな
ジェネレーター関数を呼び出したのをvar_dumpするとこんな感じだわ
object(Generator)#1 (0) {} Laravelのログイン処理をゼロから解説してる学習リソースありますか? 青い本とオレンジ色の本
Amazonで探せばすぐにわかる >>974
こんな性格じゃそりゃいつまで経ってもゴミのままだわな よろしくお願いします。
for($i=1;print"{$i}<br>",$i<6;$i++);
for($i=1;$i<6,print"{$i}<br>";$i++);
前者は、1〜6までをプリントしますが、後者は無限にプリントされてしまいます。i++が6を超えてしまうのはなぜなのでしょうか? >>978
ありがとうございます。
判定がtrueになり続けてしまうということなのですね。
もう一つ質問があります。
class A{
private $B;
public function __construcr($C){
$this->B=$C;
}
というコードなのですが、classAのフィールドで変数$Bを宣言して
関数のコンストラクタの$thisで、変数$Bに引数を代入してますが
この時、変数Bの$が取れているのはどういう仕様なのでしょうか? $が取れていることで可変関数を使える仕様になっている >>982
ありがとうございます。
可変関数は、$変数に関数名を格納して使うものだと理解していました。
もう少し、可変関数に関して調べてみます。 $db=getDb();
$opDB=$db->prepare('SELECT * FROM sample WHERE id=?');
$opDB->bindValue(1,$_GET['id'] ?:1);
このコードから質問お願いします。
2行目の id=? は、ワイルドカードのようなものですか?
3行目のbindValueの一つ目のパラメータの1は、何を指しているのでしょうか? 返答ありがとうございます。
id=? っていうのは、どういう働きをするコードなのでしょう
一つ目とか、bindValue(1,$_GET['id']);の、'1'です >>984
>>986
SELECT * FROM sample WHERE id=?
というSQLの中で使われている「?」はプリペアドステートメントというもの
http://php.net/manual/ja/pdo.prepared-statements.php
?だと理解し難いなら名前付き(例えば今回なら :id とか)にした方が理解しやすいと思う
$hoge = $_GET['id'] ?: 1;
はエルビス演算子という三項演算子を省略した書き方
可読性が悪いのであんまり使わない方が良いと思う
・同じ事を三項演算子で書くなら
$hoge = ($_GET['id']) ? $_GET['id'] : 1;
・同じ事をif文で書くなら
if ($_GET['id']) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
だが、このケースでは、こんな書き方をしてはいけない。
(続く) (続き)
$_GET['id']が定義されていない事を考慮した正しい書き方は
・PHP7以降ならNULL合体演算子を使って
$hoge = $_GET['id'] ?? 1;
・↑が分かり難いなら
$hoge = (isset($_GET['id'])) ? $_GET['id'] : 1;
・↑でも分かり難いなら
if (isset($_GET['id'])) {
$hoge = $_GET['id'];
} else {
$hoge = 1;
}
このケースでエルビス演算子をこんな使い方するような糞コードは、あんまり参考にしない方がいい >>977も読んだが、エルビス演算子の使い方といい
いったい何を参考にしてこんなコードを書いてるんだろうか
もし本を参考にしてるなら焼き捨てた方がいいレベルで酷い
クイズ的に質問してるなら面白いけどw 演算子の説明だけだとシンプルで理解しやすいけど実用性ではクソ
実用性重視の説明だと本来説明したいもの以外の説明で蛇足だらけで
紙面使いすぎでクソ
というジレンマなんやろ $input = trim(fgets(STDIN));
while($input)
{
echo $input;
}
これってwhileの式のところでは$inputの中が空かって判断してるの?そういう機能がついてるのか? >>984
SELECT * FROM sample WHERE id=?
id=? は、placement。
? の所に、値が入る
SQL injection 対策
例えば、単純な文字列をつなげて、問い合わせると、
? が「1; DROP TABLE 何々」とか、クラッカーに入力されると、
「SELECT * FROM sample WHERE id=1; DROP TABLE 何々」のように、
; で、危険なSQL文をつなげてくる
placement で、SQL文をつなげられないようにしている >>991
そのコードだと、trim(fgets(STDIN))の値が (bool) true であった場合に永久ループになるw
実際は
while ($input = trim(fgets(STDIN))) {
echo $input;
}
こう書くべき処理なのでは? while分の中では$inputをbool型にして判定してるわけか? 空文字がFalse判定されることを利用して
空行入力で終わるようにしてるんだろうけど
ゼロとかもFalse判定されて終わっちゃうんじゃないか
試してないけど Ruby では、nil, false の偽が2つだけ。
一方、JavaScript, Python, PHP などは、偽が10個ぐらいあるから、超危険!
基本的に、Ruby 以外は、バグってどうしようもない >>987
ありがとうございました。プレイスホルダなのですね。
prepareでSQLを用いて、プレイスホルダを使うとき、
SQL文の中で、左から数えたプレイスホルダの順番を、
bindValueのカッコ内の数値で指定してバインドする、ということもわかりました。
?:や??:の解説もありがとうございました。
>>989
独習phpというテキストを使っています。
>>992
ありがとうございます。
prepareステートメントが悪意ある入力に対策しているとテキストにも書いてありました。
皆様、ありがとうとざいました。
今のテキストを読み終えたら、もう少しテキストを吟味して、違うテキストを探してみようと思います。 >>994
そういう事
ただ>>995,996の言う通りなので
while (($input = trim(fgets(STDIN))) !== false) {
echo $input;
}
こう書くのが正しい
(なんか前にも似たような事を書いた気がするw) すまんw 大嘘書いたww
>>998のコードだと trim() によって string型にキャストされるから永久ループするわwww
while (($input = fgets(STDIN)) !== false) {
echo $input;
}
が正しいが場合によっては
while (($input = trim(fgets(STDIN))) !== '') {
echo $input;
}
が期待した動作なのかもしれない このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 342日 23時間 9分 23秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。