X



+ JavaScript の質問用スレッド vol.126 +

■ このスレッドは過去ログ倉庫に格納されています
2018/06/02(土) 14:31:23.04ID:B1JKBGEy
JavaScript を自ら学ぶ人のための質問スレッドです。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。


前スレ
+ JavaScript の質問用スレッド vol.125 +
https://mevius.5ch.net/test/read.cgi/tech/1518940081/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
2019/01/02(水) 16:12:12.28ID:/JRa6BYE
>>762
 ・・・
 emscripten_sleep: function(ms) {
  Module['setAsync'](); // tell the scheduler that we have a callback on hold
  Browser.safeSetTimeout(_emscripten_async_resume, ms);
 },
・・・
}
2019/01/02(水) 16:28:37.28ID:/JRa6BYE
以下の前提がある時、

callback = {{{ makeGetValueAsm('___async_cur_frame', 8, 'i32') }}};
{{{ makeDynCall('vi') }}}(callback | 0, (___async_cur_frame + 8)|0);

の部分が、何を意味するのか分かる人いない?
---------------------------------------
var Module = {};
Module["asm"] = (function(global, env, buffer) {
"use asm";
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
var HEAPU8 = new global.Uint8Array(buffer);
・・・・
}

var dynCall_vi = Module["dynCall_vi"] = function() { return Module["asm"]["dynCall_vi"].apply(null, arguments) };

function makeDynCall(sig) {
if (!EMULATED_FUNCTION_POINTERS) {
return 'dynCall_' + sig;
} else {
return 'ftCall_' + sig;
}
}
2019/01/02(水) 16:46:37.75ID:+DxIoQKP
三重波括弧についてはEmscripten独自のマクロみたいだね
多分だけどビルド時に当該箇所が置換されるんだと思う
https://github.com/kripken/emscripten/blob/52479350e642453bf74ceca108fca8e1f43b30d5/src/parseTools.js#L11-L12

マクロ展開後がどうなるか分からないからこれ以上は分からない
2019/01/02(水) 18:09:44.66ID:/JRa6BYE
[何をやってるかの自分なりの推定]

例えば、main() 関数の中で、emscripten_sleep(n) を使うと、setTimeout() を使って、
emscripten_async_resume() 関数を、n(ms) 後に起動するようにしておく。そして、
その段階では、main() の後の処理を全て素通りして、main() 関数から return する。
これは、if 文で、label という名称の local 変数の値で場合わけして、goto で色々な
ラベルに飛んでいるような感じ。でも、JS には、goto 文がないので、関数の処理全体を
大体 while(1) 文のブロック中に入れてしまって、必要な時に break する事で、while
ブロックの次の場所に飛ぶようにしてある。そして、そこで label 変数の値で場合分けして、
何らかの処理を行う。実は、この時、main() 関数に割り当てられた識別番号をどこかの
グローバル変数 g_k に残しておく。この識別番号は、0 から割り振られた小さな値で、
どこかの配列 g_func_s[]には、色々な関数の先頭アドレスが入っており、main もその中の
1つとして入っている。例えば、main に割り振られた識別番号が 5 なら、g_funs[5] で
main の関数アドレスが取得できるようになってるらしい。

次に、n(ms) の時間が経過すると、emscripten_async_resume() が呼び出される。この時点では、
main() 関数は実行を終えてしまっているので、何とかして、もう一度 main() 関数を起動しなおして、
上手く、emscripten_sleep() の直後の行にまで戻りたい。そこで、g_k に残された番号を頼りに、
g_func_s[g_k] の関数を起動しなおす。g_func_s[g_k] には、main 関数の先頭アドレスが入ってい
るので、main 関数を再起動することは出来ることは出来る。

で、main をもう一度起動して、なんとかして、emscripten_sleep() の直後の行にまで進む。
これは、変数「label 」に上手く値を入れることで、何とかしているんだと思う。
この時、スタック・ポインタの値も、元に戻す。

STACKTOP が、スタック・ポインタで、HEAP32[] が、CPU 全体のアドレス空間みたいなもの。
大体、HEAP32[STACKTOP] と書くことで、該当のスタックの近くにアクセスできるらしい。
2019/01/02(水) 18:50:37.56ID:/JRa6BYE
function dynCall_vi(index,a1) {
index = index|0;
a1=a1|0;
FUNCTION_TABLE_vi[index&15](a1|0);
}

var FUNCTION_TABLE_vi = [b2,b2,b2,b2,_main__async_cb,b2,_vfprintf__async_cb,
_fflush__async_cb_2,_fflush__async_cb_1,_fflush__async_cb_3,
_fflush__async_cb,___fflush_unlocked__async_cb,___fflush_unlocked__async_cb_4,
_printf__async_cb,b2,b2];
2019/01/02(水) 19:52:48.79ID:2lhCREwi
単純にスタックを切り替えて該当処理を再開できるようにしてるだけじゃん
2019/01/03(木) 00:47:27.22ID:8NinKkm9
>>768
おいらは数学主席だが、そんな単純じゃない。
もっと非常に複雑なことをやってる。

>>765
その情報は助かった。自分一人では数ヶ月間は気付く事は出来なかったと思う。
2019/01/03(木) 01:00:48.19ID:8NinKkm9
>>768
asm.js は、JSの「subset」とされる。だから、JSでサポートされてないことは、
asm.jsでも本質的には出来ない。JSは、
・sleep()関数が存在せず、wait()関数も今のところサポートされているブラウザが
 かなり限定されるので、原則的には、関数の途中で無限ループ以外では停止する
 ことは出来ない。
・関数callを使わずに、アセンブラの単純な(大域) jmp のようなことは
 出来ない。だから、スタックポインタだけを元に戻しても、命令ポインタ(IP)
 を元に戻すことが難しい。
・LLVMでも、原則的にはコードは個別の関数としてだけ作ることが出来て、
 関数の外にコードを書くことはおそらく出来ない。
・ただし、LLVMの場合は、longjmp やスタックポインタなどのサポートが
 色々と有るのでそのあたりを利用すれば何らかの方法があるかもしれない。
・だから、Emscriptenのemsripten_sleep()は、非常に高度なことをやっており、
 「待ちたい時」は、いったんそれまでの呼び出し連鎖の全ての関数を逆に戻って、
 「システム」にまで戻る。原則的には、全ての関数は、なんらかのイベント
 からスタートしているので、これは、イベント・ハンドラの処理をいったん
 終了して、ブラウザに制御を戻すような事になる。
・一定時間が経過すると、設定しておいたresume用のハンドラがシステムによって
 起動されるので、そのタイミングで、呼び出し連鎖の全ての関数を再度、
 「再起動」する。この仕組みを使わないと「EIP」を元に戻すことが出来ない
 ためである。なお、スタックポインタについては、独自のグローバル変数を元に戻す
 だけで済む。スタック自体は、巨大な「配列」をCPUのメモリー空間のように
 して、スタックポインタに該当する変数を配列の添え字としてアクセスするような
 事をしている。
2019/01/03(木) 01:14:16.10ID:8NinKkm9
>>770
[補足]
・データ用のスタックポインタは、単純にSTACKTOPという名称のJSの
 グローバル変数によって模倣するとする。
・CPUの全アドレス空間は、HEAP32[] という32BIT整数の配列で
 模倣するとする。
・その結果、スタック変数(local auto 変数)は、HEAP32[STACKTOP + ofs/4]
 のような形式でアクセスできるようになる。
・通常のCPUでは、関数を呼び出した親のコードのアドレスが、スタック上に保存
 されたあと、命令ポインタ IP の値が、呼び出し先の関数の先頭アドレスに修正される。
・JSの関数呼び出しも、ブラウザの内部的な変数に「戻りアドレス」が保存されて、
 ある意味ではこれとよく似たことは行われていると考えてよい。
・しかし、このスタックは、HEAP32[] や、STACKTOP とはまったく独立した
 ブラウザの内部的な領域にある。
・つまり、この「戻り値アドレス」は、HEAP32[]の中には入ってない。
・だから、STACKTOP を元に戻したところで、CPUの場合のように単純にはいかない。
・その結果、関数呼び出し連鎖を全て cancel する動作と、全て call し直して元に戻す
 という動作は、STACKTOP の動作とは別に行わなくてはならない。
・ラベル名やラベル番号を指定した大域 goto 命令みたいなものが有れば話は別なのだが、
 多分、JS にはそれがないためである。
2019/01/03(木) 01:41:07.74ID:8NinKkm9
JSも、全てのコードを一つの関数の中に収めてしまって、
continue label 文や break label 文を使えば、好きなラベルに
jmp 出来る気がする。

もしそうだとすれば、関数の戻り値のラベル番号も、独自スタック
HEAP32[STACKTOP + ofs/4] に保存し、関数 call は、
JS の関数 call を使わずに、continue label / break label
を用い、関数から戻るときは、HEAP32[] から、戻り値の
ラベル番号を取得して、そのラベルに continue label または、
break label を使って jmp すれば、もっとすっきり実装してしまえる
かも知れない。
2019/01/03(木) 03:01:45.80ID:fco1PFrc
sleepは全然複雑じゃない
CPUを例に出すのは大間違いsleepしてもその間に別の処理が走るわけではないのだから
スタックの切り替えだなんだのは必要ないしやっていない
ただ処理ループを一旦抜けてsetTimeoutで待って再開してるだけ
2019/01/03(木) 05:08:32.78ID:Hc/0Zpss
> CPUを例に出すのは大間違いsleepしてもその間に別の処理が走るわけではないのだから

JavaScriptでsleepを実装すると「その間に別の処理が走ってしまうから」
それを妨害するのが大変なんでしょ
2019/01/03(木) 09:28:46.87ID:NOMEwXEr
公式のsleep(2000)の実装例
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function
てかマジでグダグダ言う前にMDNとか読めよドアホ>>770
2019/01/03(木) 10:15:21.62ID:Hc/0Zpss
>>775
だからそれsleepじゃないよ

sleepはその場で停止して(他にスレッドがないならば)
他の処理に割り込まれないという特徴がある
それを実現できてない
2019/01/03(木) 10:25:31.04ID:NOMEwXEr
>>776
おまえがsleepを分かってないことは分かった
2019/01/03(木) 10:48:05.95ID:NOMEwXEr
>>770
どうもアホがいて空回りしそうだから先に言っておく

> 原則的には、関数の途中で無限ループ以外では停止する
> ことは出来ない。
これがasync/awaitで構文的に緩和されてる。
勿論それでもシングルスレッドだから、
実行中のコンテキスト(スタック等)の切換は行わなければならないが、
async/awaitをサポートした時点でそれはJSエンジン側の仕事になってる。
emscripten自体はasync/awaitの標準化以前から存在するから、
その部分が結果的にポリフィル的になっているのは致し方ない。
2019/01/03(木) 10:52:03.35ID:fco1PFrc
>>774
妨害してないよ
正確にはビジーループに変換されるsleepもあるけど動作には関係ない
なぜなら複数スレッドの処理が実際の1スレッドで動くよう変換されるわけではないから
むしろメインスレッドをブロックしないためにsetTimeoutが使われてる
その間に別のJSが動こうとそれは世界が違う話なので関係ない
2019/01/03(木) 11:20:52.45ID:NSJq2GPH
>>778
async, await はダメだよ。
停止せずに素通りしてしまうから。
戻ってくることは出来るけど、async 修飾したその関数にだけしか
戻って来れないので、sleep には使えない。
2019/01/03(木) 11:27:05.78ID:NOMEwXEr
>>780
お前が馬鹿だということは分かった
つかマジな話、お前らsleepを全く理解してないな
2019/01/03(木) 11:37:39.37ID:NOMEwXEr
ただそれ以前に、emscriptenは要するにC++→JS変換してくれるわけで、
sleepも当然サポートされていてそれなりに変換されてるだけだろ。

馬鹿なら馬鹿なりにそれを有り難く使えばいいだけだと思うが。
お前らのオレオレ実装よりは数段マシだと思うぜ。
2019/01/03(木) 15:03:04.04ID:NSJq2GPH
現実世界では、天才だといわれてきたが。
2019/01/03(木) 16:46:36.63ID:fco1PFrc
いくら天才でも正しい前提知識を持ってないんじゃ仕方ない
2019/01/03(木) 17:47:55.93ID:gRBMU2bw
10000ms指定したらUIが10秒止まるクソ関数が作れるなんて聞いた事ないし
簡単に作れちゃったら困る
2019/01/03(木) 18:21:47.24ID:NOMEwXEr
簡単に作れるけどな
2019/01/03(木) 18:56:01.52ID:NSJq2GPH
>>782
>sleepも当然サポートされていてそれなりに変換されてるだけだろ。

バグがある。
2019/01/03(木) 18:56:36.55ID:NSJq2GPH
>>786
なら、作って欲しい。
2019/01/03(木) 19:11:23.28ID:NOMEwXEr
ggrks
2019/01/03(木) 19:19:13.19ID:NSJq2GPH
>>789
何度ググっても出てこない。
2019/01/03(木) 19:40:17.29ID:fco1PFrc
どういうときにどう上手く行かないのかを言ってくれないとな
2019/01/03(木) 20:06:11.56ID:NOMEwXEr
そんな知能なさそうだし。
sleepなんて昔から話題としては出尽くしていて、ググレばいくらでも出てくる。
それを出てこないと言いきる辺り、つまりはコードクレクレ君で、コピペプログラマ以下だろ。
(ググったコードについても読めないからコピペすら出来ない)
2019/01/03(木) 21:50:51.86ID:eJU/mZfW
また数学首席くんが妄想してんの?
いい加減自分が向いてないって気づけば良いのに。
2019/01/03(木) 22:48:54.84ID:NOMEwXEr
こいつはスルースキル特化型だな。

俺はスルースキル・モンスターと呼んでいるが、最近このタイプは増えてきている。
危険な兆候だよ。
2019/01/03(木) 22:52:45.12ID:Hc/0Zpss
じゃあお前の職業は、スキースキル・ハンターで
2019/01/04(金) 09:17:15.97ID:ry6hJENG
>>794
「スルースキル・モンスター」を説明してください
2019/01/04(金) 09:53:39.24ID:GK4v5jr/
canvas の width や、グラフィック描画時の座標指定が、ブラウザの拡大率を
100%にしても、実際の画面のピクセル座標とは違っている。

<meta name="viewport" content="width=device-width, initial-scale=1">

を指定しても駄目だった。ぴったり同じにする方法ある?
2019/01/04(金) 15:04:48.00ID:GK4v5jr/
Chromeで拡大率100%の時、HTML 内の JS で、
value = window.devicePixelRatio;
console.log( "window.devicePixelRatio = " + value );
とすると、1.25 と表示される。
HTML の <div> tag の style を css で width: 100px; などとしたものを
Chrome で 100% の拡大率で表示したものを、ScreenShot をとって調べてみると、
125 dot 程度になっていた。

使用OSは、Win7 で、確か、文字を大きめに表示する設定にしてある。
2019/01/04(金) 15:50:35.77ID:XP0z3+7N
canvasの内部的な座標とcanvasのelement的な座標の比で調整するのじゃダメなんかい
2019/01/04(金) 16:11:48.10ID:fcxyg7i+
そもそもピクセルが正方形とも限らないわけで
デバイス、ドライバ、OSが順に抽象化したあと更にブラウザが抽象化したものが
Webアプリからは見えるのでそこをどうこうしようとするのはナンセンス

それでもどうしてもどうにかしたいというのなら
devicePixelRatioやrenderedPixelWidthを元にその文だけCanvasをCSSで縮小してみるとか
2019/01/04(金) 16:50:58.90ID:GK4v5jr/
色々試して、以下のようにすると、ほぼ 1px = 物理 1 pixel になった。
こんな方法でよい?

<style>
#div0 {
transform: scale(0.8); // 1.0 / 1.25
transform-origin: top left;
}
</style>

<div id="div0">
実際に表示したいタグ達
</div>
2019/01/05(土) 01:10:26.21ID:A90WoquU
それでいいけど
単純にwidthを表示の1.25倍にしたらどうなるのかな
2019/01/05(土) 08:40:55.94ID:7vIhmJH5
canvas の putImageData() で、引数が7つのタイプの場合の引数の意味が分からない。

context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);

http://www.webtech360.com/detail/html5-canvas-draw-pictures-and-manipulate-pixels-3555.html

↑の図で合ってる? 日本人の感覚だと、この図では、「dirtyAaaa」という言葉
と合ってるようには思えないんだけど。
2019/01/05(土) 09:24:30.49ID:7vIhmJH5
>>802
実験してみると、
HTML tag の width と、css(style) の width の二種類の意味が違っていて、
<canvas width=aaa style="width:bbb;">
とした場合、
 aaa = 論理的な横方向のドット数;
 bbb = 物理的な横方向のドット数;
の意味になるらしく、canvas の色々な描画関数で渡す x 座標を log_x とすると、
原則的には、
  phys_x = canvas_phys_left + (log_x / aaa * bbb);
のように座標変換された後に画面に表示されるらしい。
JavaScript だと、
 canvas = (getElementById("ID名") などで DOM 要素を取得);
 canvas.width = 論理的な横方向のドット数;
 canvas.style.width = 物理的な横方向のドット数;
と書けるようだ。

ただし、>>801 のやり方だと、canvas の左上の座標が(0,0)で
ない場合にも、canvas の左上の位置を自動的に調整(縮尺)してくれるが、
今回のやり方だと、それは自分で調整しなくてはならない。
2019/01/05(土) 09:26:31.72ID:7vIhmJH5
>>804
あ、確か逆さまだったと思う。
だから、
誤: <canvas width=aaa style="width:bbb;">
正: <canvas width=bbb style="width:aaa;">

が確か正しい。
2019/01/05(土) 09:27:38.04ID:7vIhmJH5
>>805
だから、確か、
canvas.width   = 物理的な横方向のドット数;
canvas.style.width = 論理的な横方向のドット数;

だったと思う。
2019/01/06(日) 18:47:08.41ID:RK31I1jj
つ チラ裏
808デフォルトの名無しさん
垢版 |
2019/01/06(日) 22:56:13.91ID:EEI9V+3n
webページでフォーム入力した項目を確認のために埋め込まれたような形で一旦表示させたいんですけど、こういうのはJavaScriptで実装するんですかね?
どうググったら、ここら辺の情報取得できますかね?

自分、pythonしかできなくて、フロントエンド的なところは全然わからないです。。。
2019/01/06(日) 23:16:51.05ID:QwoLvlkS
javascript使う
vue.jsとか使えば楽
2019/01/06(日) 23:31:44.52ID:pcr+etW3
>>808
そもそも何を表示するの?
フォーム入力した項目って最初から見えてるだろ。
811デフォルトの名無しさん
垢版 |
2019/01/06(日) 23:38:17.77ID:TbUKTpaD
>>808
まず現状フォームをどうやって表示してるのか
サーバーサイドPython?
入力フォームなら値をPOSTで受け取ってるだろうから
確認画面を生成するだけなのでは
2019/01/06(日) 23:53:49.41ID:QwoLvlkS
フロントでvaildateしてユーザーに伝えたいという意味と解釈したけど違った?
813デフォルトの名無しさん
垢版 |
2019/01/07(月) 00:28:47.48ID:nb8eFh2w
>>809 >>810 >>811 >>812

イメージとしては、5chのこの投稿欄みたいにフォームに入力した後に、
入力事項が画面に埋め込まれて、下のあたりに「投稿」のようなボタンが出るイメージ

確かにPOSTで受け取った内容を生成すればいいだけか...笑
サーバサイドはpythonです。

JSでもできるけど、その場合フォーム入力の内容をDBのデータと比較検証したい場合
には不向き、ということになるんですかね...?
2019/01/07(月) 00:47:13.54ID:IMoYk5nw
>>813
あるサイトと同様のものをJavaScriptで得たい場合、F12を押してコードを見るのが一番早い。
つっても2chなんてゴミなので、参考にするならもうちょっとましなサイトの方がいいが。

DBと照合したいのならサーバーサイドで、君の場合はPythonでやった方がいいと思うよ。
815デフォルトの名無しさん
垢版 |
2019/01/07(月) 00:51:51.70ID:nb8eFh2w
>>814

なるほど!
どうもです!ありがとうございます!
2019/01/07(月) 02:05:35.08ID:52D4hsE6
> あるサイトと同様のものをJavaScriptで得たい場合、F12を押してコードを見るのが一番早い。

そうとは限らない。今のJavaScriptは圧縮などかけられてるから
見た所で意味不明というものがたくさんある
2019/01/07(月) 02:07:20.52ID:52D4hsE6
>>809
> vue.jsとか使えば楽
vue.jsの出番なし(笑)
2019/01/07(月) 06:08:04.91ID:fwjV5x3t
javascriptの出番なし
2019/01/07(月) 11:09:06.87ID:pzLLoDSE
jsいらんだろ
2019/01/07(月) 12:01:38.74ID:52D4hsE6
>>819
それはある意味真実。HTMLとCSSだけで殆どのことができますっていうのが理想
2019/01/07(月) 12:31:11.69ID:lmbNEshB
>>803
dirty の意味は、汚染されている事。
つまり、Canvas のデータの事だろ

一度でも、Canvas に描いたものは汚染されるから、JavaScript のデータには戻せない。
ブラウザのセキュリティ機構をパスしていない
2019/01/07(月) 12:51:53.95ID:iRM6IrG4
ちょっとググった限りでは、refreshしないといけない部分だからdirty rectangleと言われるようになった感じ?
823デフォルトの名無しさん
垢版 |
2019/01/08(火) 01:00:58.27ID:o7vKw7lQ
dirty bitとかのdirtyと同じ
ただ「描き込みがされる、変更がされる」という意味なだけ
2019/01/08(火) 02:56:28.08ID:Wrr+1l7l
汚ねぇ花火だなのdirtyと一緒?
2019/01/12(土) 07:29:22.71ID:7un73cLT
どうやったら習得できるんでしょうか?
授業だけでは全然習得できませんでした
jQueryをコピペするだけしかできません

教科書書き写せって言われたのでしていますが
タイピング練習している気分で、1行1行
何かいてるか理解できていません

読めないから見るのも嫌になってます
初心者の時に何やってたか教えてください
2019/01/12(土) 09:25:53.56ID:Ybdj3XEu
>>825
> 授業だけでは
> 教科書書き写せって言われたのでしていますが
どこでどういう風に習ったんだ?
JavaScriptは比較的簡単な言語ではあるが、
授業で習った程度で出来るようになると思っている時点で大間違いだぞ。
ズブの初心者が数時間で出来るようになるのなら、専門職として成立しないだろ。
2019/01/12(土) 09:56:20.35ID:Ybdj3XEu
あと、どこを目指している?
Webデザイナになりたいのなら、そんなもんで構わないとも思うが。
2019/01/12(土) 10:13:31.48ID:8njw2BgM
コピペして必要になったら理解するための勉強すればいいんじゃね
それだと基礎ができてねえとか言われるしクソコードになるけど
基礎勉強していてもどうせクソコードと言われるんだしな
2019/01/12(土) 15:57:47.77ID:xa1AucJl
詐欺プログラミングスクールの何週間でプロに、とか3ヶ月でマスター全部ウソだから。
宗教ビジネスとかに近いやり口だよアレ。規制・逮捕・投獄すればいいのに。
2019/01/12(土) 16:28:36.05ID:gZqMJwxN
>>825
読めないし意味がわからないのは当たり前だし
それをどうこうする方法もない

新しいことを学ぶというのは非常に困難なことだと理解しろ
数学や国語だって頭の柔らかい子供がきっちり何百年もかけて練られた
体系立てられた教育で10年以上もかけてやっと習得できるものなんだぞ
つまりざっと1000時間は必要ということだ
もちろん1000時間かけても分からない人も居る
でも自分の頭を信じて、わからないものが分かるようになれると信じて
いやいや苦しいながら1000時間頑張る以外無いんだよ

とりあえずチュートリアル的なサイトを最初はコピペから一通りやる
そのときにちょっと改変してみたりしてどう結果が変わるのかから
それがどういう意味をもつ行為だったのか、そこがどういう効果をもつ部分だったのかを理解していく
意味が分からないことが100出てきたら、ググり倒してなんとかそれを99にするよう必死に努力する
多少程度分かるようになってきたらもう一度MDNのような網羅的に載っているとこをみて自分が知らない知識を仕入れる
構文やAPIは別に暗記する必要はない こういうことに使えるものがあるということをできるだけ知っておく

その繰り返し つまり基礎と応用を行ったり来たりして
段階的にではなくまんべんなく少しずつ積み重ねていき、ある時からはその穴を埋めていく
基礎はだいたいわかったと思ったら、ググって他人の書いたコードを見る
そうすると自分の知らない書き方や機能が使われていて、しかも非常に読みにくい
でもそれに慣れていく

もう一度MDNを全部隅から隅まで必ず読む
JS再入門をやってみる それで中級者
各構文の詳細をきっきり理解し、スコープチェーンやプロトタイプチェーンといった概念を学び
今まで何となく書いてきたものの真意を理解する
構文やAPIを仕様書を直接見て理解できるようにする
基本的な仕様書を一通り必ず読む それで上級者
そっからは自分の好きなコミュニティに所属して深掘りする
2019/01/12(土) 16:39:55.64ID:9/u5urH+
>>830
長い
2019/01/12(土) 17:08:51.58ID:XDHakXaX
>>825
初心というか、新しいことを始めるときにはだいたいこんな感じ。
1) 適当に検索して必要な部品をコピペする
2) コピペ同士の整合性確保と自分の美意識に従って整形する
3) 時間が許す限り 2 を繰り返す
4) 試験する

整形するところで、たとえば未知の関数ならその役割や必要なパラメータを理解する必要があるし。
コピペを適当に順序を組み替えてみると予期しないエラーが生じることもあるから、その原因を調べることで理解が深まったりするし。
要は好奇心が自分を動かしてるんだろうな。そりゃ打ち込みだけなら眠くなるだけだわ。
2019/01/12(土) 19:02:39.47ID:7un73cLT
たくさんのレスありがとうございました。
ちょっとやる気出てきました
が、道のりは険しそうですね

webの専門学校の授業でhtmlとcssを学び
ページは作れるようになったものの
javascriptはよくわからないまま授業が終わり
今はphpを覚えさせられてる段階です
3ヶ月ぐらいです

授業は教科書一冊を前から順番に終わらせた感じですが
先生はcssで出来るなら無理にjavascriptを使わなくて良いって言ってました
先生も他の言語が得意みたいで、あまりjavascriptは詳しそうな感じではなかったです

jQueryはどんなライブラリがあるのかを知り、
それを確実にコピペができることが大事って言われたのですが
コードが読めないjQueryをコピペするのはあまり面白くありませんでした

目指してるのはwebアプリとかゲームとか個人で作りたいです
javascript(Vue.js)とphp(laravel)を覚えてアプリを作ろうと考えています
将来グーグルアプリやアップルストアに置いたりしたいです

MDNは先生もおすすめしていますが
難しすぎるのと、同時に画面表示すると作業しにくいので本を書き写しています
まだ寝るまで時間あるので引き続き書き写ししようと思います

クラスで取り残されてて、あんまり質問できない空気なので
意見もらえて勉強になりました
2019/01/12(土) 19:42:31.64ID:Ybdj3XEu
>>833
> 同時に画面表示すると作業しにくいので本を書き写しています
今すぐ2画面にして、片方でMDNを見ながらもう片方でコーディングする癖を付けろ。
今なら2万円くらいで出来るはず。
そして今すぐゲーム作成に着手しろ。(詳細後述)

> (略) 3ヶ月ぐらいです
ズブの素人からか?ならそんなもんだ。
君が特に頭が悪いって事ではない。

> コードが読めないjQueryをコピペするのはあまり面白くありませんでした
これはもうやらなくていい。時間の無駄だ。

> 目指してるのはwebアプリとかゲームとか個人で作りたいです
> javascript(Vue.js)とphp(laravel)を覚えてアプリを作ろうと考えています
Webで言う「アプリ」は「ドキュメント」と対比されるもので、
上記jQueryを使うのは主に「ドキュメント」であり、つまり君にはjQueryの知識は不要だ。
そして、「アプリ」と言われるのは実はHTML主体のアプリ(ECサイト/掲示板/社内クライアント(勤怠管理等))であって、
これら向けのフレームワークがvueであり、またサーバーサイドの知識も有った方がいいからPHPもありだが、
君の目標のcanvasアプリでは、はっきり言ってvueやPHPの知識はいらない。

君の専門学校は一般的なHTML/CSS/JavaScript/PHPの講習をしており、これ自体は悪くない。
しかし君にはjQueryもvueもPHPも必要なく、今現在のHTML/CSS/JavaScriptだけで出来る。
だから今すぐゲーム作りに着手しろ。最初は○×ゲームやオセロ等で構わない。

プログラミングなんて手段でしかないから、結局のところ、モチベーションが上がらないと上達もしない。
写経の際にいじくり倒して快感を得られるタイプなら写経も効果あるが、
君の場合はそうではないのだから、写経は時間の無駄だ。
一応の知識は揃っているはずだから、君は今すぐ君がやりたいこと、例えばゲームを試しに作ってみることだ。
そうすれば、今の自分に何が足りないか分かるだろうし、そこを先生に聞けばいいんだよ。
折角金払って専門学校に行っているのだから、先生をうまく活用した方がいい。
2019/01/12(土) 20:05:20.01ID:Ybdj3XEu
ちなみに、今時のPCで2画面出力出来ないのはほぼあり得ないし、
TVが有ればHDMI端子がないのもほぼあり得ない。
そして、線をつなげば割と自動認識していきなり2画面になるという安直さ。

まあ、TVが有ればやってみ。
2019/01/12(土) 20:59:34.69ID:7un73cLT
詳しくありがとうございます

クラスではipadを見ながらやってるって人がいて
うらやましいと思ってましたが、2画面って方法があるんですね
勉強のためにバイトやめてしまったので今お金がないです(T_T)
お金でき次第買います

今すぐ、ゲーム作りですか?
見た目を用意するのはhtmlで出来そうですが
参考書でも買わないと作れないですね

作りたいゲームはあると言えばあるので
明日本屋で見て、できそうならやってみます
2019/01/12(土) 22:20:16.81ID:Ybdj3XEu
>>836
> クラスではipadを見ながらやってるって人がいて
それと同等にはなる。
スマホだとさすがにきついと思うから、安物でいいからモニタを買った方がいい。
つか、専門学校なら最初から2画面にしとけよ、とは思うが。(君が悪いわけではないが)

> 見た目を用意するのはhtmlで出来そうですが
それでいい。
見た目だけ、例えばオセロならまず盤面をHTMLで用意するところから始める。
次に、クリックしたら石をおくようにする。つまりはクリックしたところにクラスを加えるだけだが。
そしたら、後は、「挟んだ石は自動的にひっくり返る」ようにすれば、手動での対戦は出来るようになる。
そして後はCPUで適切な手を考えられるようにすれば、CPUとの対戦が出来るようになる、というわけだ。

これ読んで大体「オセロなら出来そうだ」と思えるか?
なら、もう十分だから、アイデアもあるようだし、それに取りかかった方がいい。
やらないと上達しない。やる為には、自分がやりたいことをやるのが一番いい。
本を買う必要は無いとも思うが、まあ思うようにやればいい。
2019/01/13(日) 10:01:03.08ID:ZUrC3wug
ただゲームを作りたいというだけなのに練習にしろ本番にしろ
HTML/CSS/JSのセットを学ぶ必要性はない
Google Blockyやプチコンのようなもので学んだほうが良い
2019/01/13(日) 10:14:09.92ID:/M42Y9uV
HTML/CSS/JSのセットを学ぶことは無駄にはならんよ。
今後のGUIの主流になりつつあるから。
ただ、ゲームを作りたいだけならオーバースペックだ、というだけで。
2019/01/13(日) 10:32:25.08ID:/M42Y9uV
あとその手の「初心者でも子供でも簡単に出来る」って奴は大概すぐポシャるので俺は勧めないね。
scratchが一時期言われてたけど、今全く聞かないでしょ。
何故プロがそれらを使わないのかを理解出来ないうちは、所詮その程度って事だよ。

専門学校はプロ養成予備校みたいな位置づけだし、今ならHTML/CSS/JavaScriptで妥当だ。
当人は「学ばないと出来ない」という感覚なのか、出来ない理由を探しているから、
そうではなく、出来るところから始めろ、というだけ。

JavaScriptはコミュニティが腐っているが、言語としてはまあまあだよ。
そこで上達出来るかは本人次第だ。
とはいえ、初心者だと雑音を雑音と認識することも難しいから、難儀な話ではあるが。
2019/01/14(月) 14:10:49.06ID:qAC/hIw5
このスレはじめてきたけど、上の方でjQueryをやたら推してる人って頭おかしいの?
2019/01/14(月) 14:47:13.30ID:WA0+I2lc
jQuery推しがおかしいかおかしくないかはどうでも良くて
それに論理的に反論できないならば、言ってることは正しいってことさ
2019/01/14(月) 14:50:15.30ID:qAC/hIw5
えっ、jQueryおじさんが反論を理解できていないだけじゃないの?
2019/01/14(月) 15:20:39.58ID:WA0+I2lc
それは違うな。
2019/01/14(月) 16:57:53.59ID:MmdBprG3
>>843
そうだよ
2019/01/14(月) 17:36:34.87ID:WA0+I2lc
jQueryのシェアがまた伸びてた。73.7%。5ヶ月連続で毎月0.1%増えてる。
0.1%増加なんて僅かだと思うかもしれないが、
Reactの現在のシェア(増加ではない)が0.2%、Vueが0.2%、Angularが0.4%
https://w3techs.com/technologies/history_overview/javascript_library/all
2019/01/14(月) 18:16:36.57ID:ft32dWPM
>>843
× 反論を理解できていない
○ 何も理解出来ていない
2019/01/14(月) 21:49:08.71ID:E+94DXGY
shadow-root(attachShadow)って何ができるの?
ふつーに要素を作るんじゃなくて使うってことは何かできることがあると思って
2019/01/15(火) 19:19:49.80ID:Mzm8zFRT
jQuery使わない人の声だけがでかいのはわかる
javascriptフレームワークなんて誰も使ってない
2019/01/15(火) 19:25:43.57ID:URfldHzA
声がでかいのはjQueryバカだが。
2019/01/15(火) 20:18:42.32ID:XcHWZlYr
jQuery厨は結局「jQueryは不滅です」と言い張るだけだから議論する意味はない。
実際はじきに結論がでるから待てばいい。

予想するなら、version3に上げている連中(6.4%)は今後とも使う気なのだと思う。
今だにversion1を使っている(=バージョンを上げてまで使う気はない)のが大半(85.7%)で、
つまり大半は様子見中で、だからこそこの話に食いつく奴が多い。
https://w3techs.com/technologies/details/js-jquery/all/all

このサイトのシェアはサイト数で算出しているから、
どうしてもvue等の「アプリ」用フレームワークは低く出る。
とはいえ、それを勘案しても実際に低いのも事実だが。
https://w3techs.com/technologies/topsite/javascript_library
2019/01/15(火) 20:21:33.86ID:JZTSzU8d
> 実際はじきに結論がでるから待てばいい。

いつでるんだよ・・・もう3年経ってるぞ
2019/01/15(火) 20:33:42.53ID:XcHWZlYr
>>852
>>369
俺は堂々巡りの話はもうやらない。

jQueryと心中するのも、脱jQueryするのも、自由。
それぞれが自分が正しいと思う方向に向かって進めばいいだけ。
シェアを過度に気にするのは、自分で判断出来ない証拠。
2019/01/15(火) 20:40:39.71ID:JZTSzU8d
シェアを気にしてるんじゃないんだよ。合理的な判断から。
ウェブの大半を占めるウェブサイトを作ってるのはウェブデザイナーが大半で
ウェブアプリを開発してるのはごく一部。そんなところにプログラミングが主である
React、Angular、Vueが普及するわけもなく、殆どは軽い使い方しかしてないんだから
jQueryで必要十分だってこと
シェアは単にそれを証明している指標に過ぎない
2019/01/15(火) 21:23:45.38ID:o/u10+7j
これからはBackboneや!
これからはEmberや!
これからはKnockoutや!
これからはAngular1や!

フレームワーク使ってるほうが死亡してるんだけどな
2019/01/15(火) 21:26:47.44ID:XcHWZlYr
>>854
サイト数で言えば「ドキュメント」が多いだけで、
トラフィックの大半は「アプリ」ないしはニュースサイト等の「軽量アプリ+DB」だよ。
つかそれ前にも言ったけど、お前普段どんなサイトを見てるんだよまじで。

とりあえず単純に定義しておくと、以下な。
アプリ: ajaxやPOST使いまくり
軽量アプリ: POST機能はあるが主ではない
ドキュメント: ajaxやPOSTは全くない
2019/01/15(火) 21:31:34.93ID:+Q2URMA7
>>856
そんな定義初めて見たわ
2019/01/15(火) 21:31:43.02ID:o/u10+7j
トラフィックの大半は映像、JavaScript関係ないがな

世界のインターネットトラフィックの過半数を「映像視聴」が占めている
https://gigazine.net/news/20181003-global-internet-downstream/
2019/01/15(火) 21:41:47.16ID:XcHWZlYr
>>858
ああ、まあそりゃそうだ。
ただ、その手のサイトは普通「アプリ」だと思うぞ。

が、まあ、それなら、ダウンストリームを除いて、アップトラフィック、で測るべきだな。
回線速度サイト等で言う、「上り回線」内のトラフィック数だ。
(映像視聴中もping的なアップトラフィックがあるのは知っているが、それらは除いて)
2019/01/15(火) 21:48:27.78ID:XcHWZlYr
>>857
ならお前がもっと『ここでの議論に適した』いい定義を出せばいいだけの話
お前らゆとりはそういうところが駄目なんだよ
2019/01/15(火) 21:49:57.09ID:o/u10+7j
>>859
連想ゲームやってるんじゃねーんだ

トラフィックが多いのは映像
映像はアプリ
アプリはJavaScriptを使ってる
だからトラフィックが多いのはJavaScript

違うからな。
ゲームで考えてみろ。多いのはデータであって
プログラムじゃねぇ
2019/01/15(火) 21:56:31.56ID:XcHWZlYr
>>861
バカなのかお前は。
話が見えてないなら読み直せドアホ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況