◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:+ JavaScript の質問用スレッド vol.135 + YouTube動画>14本 ->画像>3枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/hp/1533007852/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは
>>950 が(本スレで改善案があれば考慮して)立ててください
■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ ■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです
■FAQ ◆開発者ツール(Developer Tools)の基本的な使い方 ▼諸注意 - 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。 - Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません) - Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。 https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html ▼要素を検証 1. ページ上で右クリックして [要素を検証] 2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す) 3. 右側のサイドバーから知りたいステータス名のタブを選択する - [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される) - [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される) - [Properties] タブ … 選択したDOMノードのプロパティを表示 ▼コンソール 1. JavaScript コード上で console.log('Hello, World!'); と入力 2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く 3. [Console] パネルに "Hello, World!" と表示される (※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。) ■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に
http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。
例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。
■各種仕様
◆ Standard ECMA-262
http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
http://www2u.biglobe.ne.jp/ ~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/ http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
前スレの977の方ありがとうございました。 仕様上できないのですね。 残念です。
装飾はいくらでもできるけどここはJavaScriptスレだからスレチ
前スレの、>978
<div id="div-a">
<input type="text" id="text-a" value="あいう">
<input type="text" id="text-b" value="abc">
</div>
var input_elems = $.map( $('#div-a > input'),
function(elem, index) {
return $(elem).attrAll(); // this === element
}
);
Cookies.set( 'input', input_elems ); // 設定
obj = Cookies.getJSON('input'); // 取得
console.log( obj );
結果
id: "text-a", type: "text", value: "あいう"
id: "text-b", type: "text", value: "abc"
Cookie のライブラリは以下を使っています。
js-cookie/js-cookie
https://github.com/js-cookie/js-cookie $.fn.attrAll は、以下のブログで定義されています。
要素の属性を全部取得する
https://hokaccha.hatenablog.com/entry/20130819/1376895914 特定の <div> のなかの <input> の状態を全部sessionStrageに保存して あとでそれを再セットするって input の数や種類に依存せずにかけませんか? div にも input にもユニークな id が振られてます input.type は今の所 text select と checkbox だけです native js でも jQuery でもいいです
>>9 前スレの
>>978 じゃないけど、
要素の属性取るならそんなプラグイン使わないで
jQuery標準の $.serialize か $.serializeArray を使えば良いんだよ
<form>要素以下になくても使える
今回の場合はserializeArrayの方が使い勝手良いかな?
https://api.jquery.com/serialize/ https://api.jquery.com/serializeArray/ で、実はそんなのは簡単で、面倒なのはこっち
> input.type は今の所 text select と checkbox だけです
フォームの中身を全て保存して戻すってのは
以前に実装したことあるけど、
typeみてselectだったら〜checkboxだったら〜みたいな
コードを書いた記憶がある。意外と面倒くさい
inputのtypeでselectってなんだ?教えてクレヨン input type="file"があったら面倒なことになりそうな そうでもないか?
あー、でもidで見分けるのか。inputっていうからnameで見分けるのかと思った var data = {}; $(":input").each(function() { switch(this.type) { case 'checkbox': data[this.id] = this.checked; break; default: data[this.id] = this.value; } }) データをかき集める所はこんな感じかな idでユニークになるならserializeArrayみたいに配列で持たなくていいね。 ちなみにmultipleなselectには対応していない こんな風にtypeを使って見分けることになるんで > input の数や種類に依存せずにかけませんか? に関しては、書けません。というのが答えになる。
>>15 時間の無駄。わかってる結論へ至る道はお前1人で勝手に進んでろ
>>11 serializeArray は、送られる属性が少ないし、
successful controls しか送られていない
使いどころが難しそう
送られる属性ってなんや? フォームのGET・POSTで送られる情報の 全てを網羅してるぞ?
serializeArray を使うなら、name, value を使うように統一しないといけない。 type, id が無いから、使いずらいかも input.type には必ず、text, select, checkbox を指定しておけば良いかも
serializeArray を使う場合、type, id が無くても、 name, value を使って、name がユニークなら、コントロールを特定できるのか
formだと既存のjsコードと衝突したらかなわんし ほぼ同一のformが複数あるなんてしょっちゅうあるから 汎用性なんて考えない方がいい気がする
<select name="single"> <option>Single</option> <option>Single2</option> </select> select は、input タグじゃないのか
>>16 分からない場所に突き進む道を選ぶのね、ご愁傷様
九州は汲み取り式とか四国はベルサイユ宮殿式とかそういうのがあんの?
雑多な要素を後から保存するのは無理がある データの作成・保存はカスタムエレメントで閉じておくべき 例のvalueの問題はinputやtextareaを継承してonchangeで見てもいいが contenteditableとして要素ごと作ればobserveも統一できるし見た目の調整もやりやすい
>>26 正しい仕様を確認するための質問を無視する→理解の放棄
>>15 HTMLはその場合の操作も定義されている
>>The type attribute ...... the invalid value default are the Text state.
>>33 そりゃそうだが、将来的にtype属性値の種類が増えるかもしれんし、わざわざ不正値を指定する理由はあるまい
まだ到着してなかったのかよw 俺は最初からわかってる結論へ至る道の到着点にいるぞ?w
selectボックスで、10番目の要素を自動的に一番上までスクロールさせる方法ってありますか?
/::::::::ソ::::::::: :゛'ヽ、 /:::::::-、:::i´i|::|/:::::::::::ヽ /::::::,,、ミ"ヽ` "゛ / ::::::ヽ < 一億総活躍 /::::::== 卍 `-::::::::ヽ l::::::::/ .,,,=≡, ,≡=、l:::::::l /. ̄) 英訳は「Promoting Dynamic |:::::l゛ .,/・\,!./・\ l:::::::! / /二、. |`:::| :⌒ノ/.. i\:⌒ |:::::i 丿 Y .i Y Engagement of All Citizens」 (i ″ ,ィ____.i i i // ( ゝ' ノ ./ / ヽ i / ■ .i i / ,ゝ-、_)--'-' (全国民の精力的な参画の推進) l ヽ ノ `トェェェイヽ、/´ /{ ゝ、__ハ|ヘ /|、ヽ `ー'´ / ィ'/ハ____ハ つまり国家総動員 //l ヽ ` "ー−´/ ////////////ノ ,,ィ''"/// | >< ////////////{/////////// r''"////// ..|/:::::ノ//////////////}/////////Y ////////| /:::::{///////////////{//////////
Javascriptのデータ型って先に指定できないのか? int Number; とか string name; とかは
データ型を指定できてたら良くなかったことはたくさんある 例えばここ何年か今までintだったDOMの値が 高画面解像度デバイスのためにfloatになってきる
>>43 それは型キャストで解決できる程度の問題かな
floatを返していても型がintだったら自動的に
小数点以下切り捨てられる
むしろその方が想定しない型にならないのでいいかもね
>ここ何年か今までintだったDOMの値が >高画面解像度デバイスのためにfloatになってきる どういうこと?
4Kとかだとコンテンツ全体表示できるから要素固定して表示するようなソリッドレイアウトよりも リキッドデザイン的なものに変わってきた、ということでは
2^32-1を超える値扱ってんの?それとも小数点以下の値が来てんの?どこで?ってことなんだけど
一時そういう話があったがここにあるように今はまたintに戻った
https://www.w3.org/TR/cssom-view/#changes-from-2013-12-17 だけどChromeではまだサポートされてて
ズームしてdocumentElement.scrollTopなんかを弄ると分かる
200%以上に拡大すると分かりやすいだろうけど
特に低スピードのスクロール時にここで実際に役に立つことが分かる
http://output.jsbin.com/qedore 別に入ればなんでもいいんだけどいつもvarで型を作って自動でやってるから Javascriptの基本的な型の作り方はvarなのかなって
朝鮮人みたいに揚げ足とる根性悪い奴がいるな 普段何の仕事してんの? ニート?
根性悪いやつが居るように見えるのは本人が根性悪いんだろうな
朝◯人と悪口いってる時点で人の屑 ジャップのくせに
「朝鮮人」は今や悪口ではないし 「JAP」は昔は米国新聞でも普通に使われてたただの略語というか日本の愛称だった たかが三文字の言葉であれこれ思うのも馬鹿らしいよ
リアルで朝◯人なんて言ってみろよ どう言うことになるか分かるか? リアルで言えない差別用語をネットで 使って吠えてる糞野郎
>>58 意味分からん
中国人
フィリピン人
朝鮮人
普通に使うぞ
変な嫌悪感を持ってるのはそういう学校教育された中年世代だけだろ
【研究】飲むだけで差別主義者が更生する「道徳ピル」 >米国では、多くの学生が成績向上や適性試験をパスするために、リタリンを治療以外の目的で服用しているとの報告がある。 差別主義者は薬物でも服用させなければ駄目だな 市ぬかもしれないが生きてても仕方ない奴らだからどうでもいいわ
知能が低いと複雑なことを考えられないから 極端な白黒思考になる これが差別主義者 道徳ピル飲んで知能を上げるしかない 薬害で市んだら害虫が一匹消えたという事でそれはそれでおっけ
DOMは仕様がコロコロ変わる だからその違いを吸収するライブラリが必要になる
逆だな 原則DOM標準は後方互換性を守る JSのライブラリはバージョンアップで簡単に切り捨てる ライブラリを使ってるとむしろ追従が大変になる
自分の引き出しにあんまり実例なくてわからないんだけど バージョンアップで切り捨てるって旧UAを?だったら旧バージョン使い続ければ良いのでは?
uaって?無駄にコンテキストから推測させないでほしい。 あなたは数文字節約できるかもしれないけどこっちはいい迷惑。
>>67 パフォーマンスや新機能のためにバージョンアップしたくても
再設計が必要なほどAPIが大きく変わってることが珍しくないということ
YouTubeのCr以外で遅い問題もPolymerがそうだからYouTubeが追従できないから
crって?無駄にコンテキストから推測させないでほしい。 あなたは数文字節約できるかもしれないけどこっちはいい迷惑。
>>66 > JSのライブラリはバージョンアップで簡単に切り捨てる
> ライブラリを使ってるとむしろ追従が大変になる
どのライブラリ? AngularとかReactとかかな?
なんか更新頻度高いしね
その点jQueryは安定していていいよ。
そもそも追従するほどバージョン出てないしw
>>69 それ、単にそのライブラリ・フレームワークの設計が杜撰ってことじゃ
その互換性の部分以外のとこも大丈夫なのか?となりそう
angularって言うほどいいかな? 偉そうな事言うのは嫌なんだけど vueやreactの方が絶対いい
>>72 杜撰ってわけでなくJS界のトレンドなんだろうな
jQueryみたいに切り捨てられないと(それでも利用度からすれば比較的切り捨ててる方)
負の遺産化するし
>>74 jQueryは負の遺産にはならんよ。
DOM操作を短く簡潔にするためだけのものだから
使わないならjQuery1行をそのまま数行に対応付けて書き直せる
冗長になりますよってだけで誰もやらないけどね
負の遺産っていうのはAngularやReactなどの
最近のフレームワーク。違う書き方にしようとしたら
全体に手を入れなければいけない
フレームワークは離脱するには設計から構造からやり直さないといけない jQueryのようなライブラリは設計構造はそのままで済む場合が少なくない(※)が使用部分が広範になりがちで書き直し量が多い ※例えばアニメーション関係をjQueryに頼っていると構造にも絡んでくる 独特な機能を提供するライブラリは関係部分だけ書き直せば済むといえなくもない
フレームワークで作られるのは迷惑。 意識高い系の人がフレームワークで使って作ったサイトをサーバに乗せるのに凄い苦労した経験あり。
jQueryで唯一評価されるのはSelectorsAPIの基礎になったってことだけ
element.style="width:100px;background-color:green;"; でいけたんだけど、element.style.width="100px"みたいにプロパティと値をわけて書くのと何か違いはありますか
可読性がよくないぐらいでは element.setStyle({ "width": "100px", "background-color": "green", }); とかがあればいいな prototypeいじりたくないけど
>>79-81 に便乗質問なんだけど
・element.styleにはCSSStyleDeclaration オブジェクトが入ってる
・element.styleに直接CSS定義テキストを代入できる
・element.styleに直接CSS定義テキストを代入した直後でも
element.styleにはCSSStyleDeclaration オブジェクトが入ってるし
element.style.width を変更することもできる
CSS定義に変更があった場合変更内容を元にelement.styleを再設定してるという感じだと思うんだけど
こういう挙動はどう理解したらいい?
より具体的には、ブラウザの実装がそうなってるというだけなのか
それとも同じような挙動をユーザがjsコードで実現できるのか
>>81 Object.assign(element.style,{
width: "100px",
backgroundColor: "green",
})
>>82 内部Proxyだと理解したら良い
>>78 SelectorsAPIなんてjQueryの劣化版だろw
単にNodeListを返すだけで、そのNodeListを扱う方法まで作らなかった
jQueryはNodeListみたいに単に要素の配列を返すのではなく
要素の配列を内包した、jQueyrオブジェクトを返すことで
要素の配列そのものをメソッドで操作できる
ここが重要な所なのに、SelectorsAPIはそれを理解せず
単に要素の配列を返しただけ
jQueryはいつgetContextに対応してくれますか あとマウス座標取得決定版みたいなのも欲しいです $(event)みたいにできたらいいのにな
>>83-84 thx
あるんだな・・・意義はわかんなくはないけど正直どうかと思うが・・・
あとでじっくり読んでみる
>>86 getContextに対応するだけでいいの?
canvas自体に対応しないとあまりメリットなくない?
jQueryになれてるなら、D3.js を使うのが良いと思う
canvas操作をjQueryライクに書くことができる
俺も普段はjQueryを使うけど、canvasを操作したい場合はD3.jsを使うよ
こんなk何時
https://codezine.jp/article/detail/7459 > D3.jsのセレクタを用いて宣言的に記述すると、以下のように簡潔に記述することができます。
> d3.selectAll("p").style("color", "white");
> コードも、d3.selectAll("p")ですべてのp要素を取得、style("color", "white")で
> 文字色を白に設定、と直観的で分かりやすくなったのではないでしょうか。
>>86 > $(event)みたいにできたらいいのにな
$(window).on('mousemove', function(event) {
console.log(e.screenX);
console.log(e.screenY);
console.log(e.pageX);
console.log(e.pageY);
console.log(e.clientX);
console.log(e.clientY);
console.log(e.offsetX);
console.log(e.offsetY);
});
あ、間違った。 × console.log(e.screenX); ○ console.log(event.screenX); 以下同じ
>>87 今だったらもしかしたらゲッターセッターになるのかもしれないけど
それらがJSに無かったころからCSSOMはあるしね
配列のlengthのようなものだよ
array.lengthはちょっと違うのでは array.lengthを書き換えても即座に自動的に書き換えられたりしないだろう
するよ TypedArray の様にゲッターやセッターではなく プロパティアクセス時に0や1などと同等にフックして内部プロパティを変更してる
JavaScriptって最近、変数に型つけたり、クラスを作ったりするらしいけど もはやそれActionScriptじゃねーの?
>>94 昔ES3(ECMAScript 3)っていうのがあって、その後普及したのがES5
今はES6という名前だったのがES2015に変わって、ES2016だとかES2017だとか・・・
それは良いとして、ES3とES5の間にあったのがES4
ES4の夢は壮大で、クラスベースで型もあって・・・
そのES4に完全準拠することを目標にActionScriptは開発されていた
ところがES4の夢があまりにも無謀で破綻した。
そして型などの機能を減らして現実的にしたES5ができた
ActionScriptは破綻したES4相当なんだよ。消えたES4の成れの果て
JavaScriptに準拠しつつ型を取り入れたのはTypeScript
A → B → C → D とasync関数が繋がってるのをイメージしてください Aから始まりEが完了すれば順にC、Bと完了してAに戻ってくるイメージです ここで、Dの段階でBからの流れをやりたいとします しかし、Dの次にBを続けると、 それまでのB → Cの流れの中で消費されているメモリが残ってしまいます。 もうDや過去のCやBに戻らせる必要はありません。 しかし、Dを開放してB'を開始すると、Aまで完了してしまい、それはよろしくありません。 A → B → C → D まで来たところで A → B → C → D → B' → C' → D' となるのはメモリリークしやすく、チェーンが非常に長くなると色々なバグも発生しやすく デバッグのしやすさにも関わってくるので避けたいです とはいえ A → B → C → D -...> B' → C' → D'と切り離すと Aで行っている初期化・完了・例外処理から外れていってしまうため問題です 理想的には、チェーンをA → B' → C' → D' とつなぎ直したいのです どうしたらよいでしょうか
設計段階でみょうちきりんな動きの要求を加味しとけよ
仕様としては、どの処理進行状態でもリセット、ぶつ切り行為が発生しうるという状況です 一応今はBで作業キューを持ってそれにCを追加する形にしていますが、 いかんせんコードがキレイではありませんし、僅かな仕様妥協が入ります おそらくPromiseのラッパー的なとこから、根本的な非同期チェーン構造を 素朴なPromiseではなく1から考え直して別の物にすべきだと思うのですが いいアイディアは無いでしょうか 全てのasync、async generator関数でCancelの概念と実装をしたら良いのでしょうか 全てのawait時にそれがCancelかどうかチェックして処理をするとか それはそれで漏らせないコードが多くなりそうですし、処理が複雑になりそうです 一応今は各処理にセッションを渡すようにしていて、表に影響がある処理ではそのセッションが切れていたら何もしないことで、 特にイベント等から繋がる不要なチェーンが発動しても空回りさせることで影響がないようにしています 今はメモリの開放は時間経過やイベントをあえて見捨てたチェーンに伝わらせて 空回りを利用して自然と勝手にほぐれて、その後GCが回収してくれることに頼っています しかし、今回は下手に空回りもさせたくないという状況です コードを極力シンプルに保ちながらしっかりしていてかつ柔軟性も持った非同期処理構造を作るにはどうしたらよいでしょうか 例えば非同期でも、場合によっては完了を待たずに次に進みたいことってありますよね 例えば、Loadingを表示するとき await View.fadeInLoadImage() let file = await Network.fetchFiles( ) await View.fadeOutLoadImage() とするとフェードイン、アウトの時間が無駄なので View.fadeInLoadImage() let file = await Network.fetchFiles( ) View.fadeOutLoadImage() とすると思います。ですが、このフェードが動いているときに コンテキストがリセットされると、色々懸念事項が生まれます そういうのもスマートに扱える方法を知りたいです
真面目に言うと ・開示されたごく一部だけで単純な仕様ではないことがわかるのに ・全貌の情報なしに ・コードがきれいかどうかや柔軟性など曖昧な要求を回答できる人間はいない
>View.fadeInLoadImage() >let file = await Network.fetchFiles( ) >View.fadeOutLoadImage() >とすると思います。 let file = await Network.fetchFiles( ) だけやればいいじゃん馬鹿なの
>>101 具体的な細かな話は気にしなくて結構です
私が知りたいのは、皆さまが一般的にこういう問題を抱えないために使っている
オススメTask系のフレームワークだったり、普段意識してる設計パターンについての話です
コードが綺麗とか柔軟とかいうのも、厳密に定義しようとしてもらわなくて結構です
そこは私がどう感じるかではなく、皆さんが素直に自然と良いと思ってる手段を知りたいと言うだけです
安全な近道なんて無い > しかし、今回は下手に空回りもさせたくないという状況です 下手に空回りさせないように地道に書けとしか F/W信奉者にありがちだが解決してくれる何かを探すのを止めてみるべき
>>103 質問が意味わからん。最初にasyncって決めつけてるのが駄目なんじゃないの?
asyncは実装なんだからそれを使うと決めるのは最後。
実装の話は忘れて、何がしたいのか綺麗にまとめたら?
あんなごちゃごちゃしてたら読む気にもならんよ
AとかBとか処理があるんだろ? function process() { A(); B(); C(); D(); B(); C(); D(); } 普通に書けばメモリリークにもならんし、 何が言いたいのかさっぱりわからない。 ここを出発点として、何が言いたいのかをまとめろ。
あとから動作仕様変えても処理順や状態に起因するバグを起こさないパーフェクトなフレームワークはなんですか 一行にまとめるとこんなかんじ?
いまいちよくわからんが なんかデータ読んでる最中に(let file = await Network.fetchFiles( )) フェードイン/フェードアウトみたいなことしてるんだけど(View.fadeInLoadImage()) 読み込み中止ボタンを追加したいんだが(Cancelの概念と実装) そんなときどうしたらいいの って質問なんだろうか?
そういう処理を自分で書くのは面倒だから嫌だそうだ >全てのawait時にそれがCancelかどうかチェックして処理をするとか >それはそれで漏らせないコードが多くなりそうですし、処理が複雑になりそうで 自分で細かく書かなくてもうまいことやってくれる何かが 希望のようだが、それをハッキリと書かないところをみると フレームワークやライブラリ推しの書き込みの準備行動じゃねーかな
>>104 地道に書くのは良いのですが
この先あちらもこちらもその場その場に書いていくと
メンテ面とか手に負えなくなって破綻してしまうかもしれないので
まだ取り返しの付く段階で場合によっては基礎システムを1から挿げ替えたほうが良いかもと思った次第です
>>105 現在Workerも使った大きく分けて十種類程度のタスクモジュールがあり、その中の関数の殆どが非同期もしくは並列に動いている状態です
最初はコールバックでも良いような規模で、その後async関数に切り替え、途中から自作イベント管理を追加し。。。。。。
という感じで大きくなるごとに対策してきました。
もう次に何かするなら、それで最後まで行きたいので相談させてもらっています
>>106 それで直ちに問題が会って動かなくなるというわけではないのですが、そうしたくないいくつの理由があります
・AからDまでの生存期間がそれなりに長い(ユーザーの操作次第、通常数分〜数時間程度)
・BからDまでは無制限に繰り返される可能性がある(ユーザーの操作次第)
・BからDまでで大量のリソースを使い得る(通常数十MB〜数百MB)
また沢山イベントハンドラやフックが残ったままになるのが気持ち悪い
(BからDまでが終われば生きた参照が無くなるのでGCによって自然と開放される)
>>107 その通りですが、最初は問題なかったけれど複雑度が上がって無理が出てきた現状を
改善できる今より一歩上の非同期取扱概念(コツ)を知りたいと言うだけです
例えばPromiseにしてもCancellableだったりCancalTokenだったり
async generatorの代わりにObservable系を使うという手もあると思います
そういうちょっとした変更やラッパーで乗り切れるのではないかと感じています
>>108 それは例です。実際はそういうコードはありません。
メインの質問は
>>97 です
その例で言いたいことは、フェードアウト処理が例えば大げさに10秒かかったとします
そしたらその間にもう画面がローディング画像のフェードアウトをしていて欲しくないものになってる可能性もありますよね
1つの考え方としてはView.fadeOutLoadImage()にキャンセルできる関数を返させて、
それを関数の最後まで保持しておいて呼ぶとか考えられます
実際にそういうことをしているのですが、変数の局所性が悪くなってコードが読みづらくなります
また、その関数の終わりまでしか引き伸ばせません。もう少し先までで良いという時はイベントに登録したり煩雑になってきます。
今は場合によってはキャンセル手段を返させたり、イベントを監視させたり、セッションを確かめさせたり色々やっていますが
いかんせん一貫性がないので、その点も合わせてもっとステキな方法があるのではないかなというための例です
>>109 また自分で思いつきで書いても良いのですが、私だけのコードではないので
将来メンテする人のために少しでも良い方法を知りたい感じもちょっとはあります
async関数が繋がるってのがまず分からない サンプルコード位は出せないの
頑張って説明してくれてるんだろうけど 俺の頭では理解できない 後は頼んだ
>>112 ,113
繋がると言うのは
async function A ( ) { ...... await B( ) ...... }
async function B ( ) { ...... await C( ) ...... }
async function C ( ) { ...... await D( ) ...... }
のときA( )と呼んでからD( )まできた状態です
Dが解決しないとCが進みませんし
Cが進んで終わり解決しないとBが進みませんし
Bが進んで終わり解決しないとAが進まない状態です
問題はここでDから仕切り直してまたB'を呼びたいというときです
感じとしてはAがOSの起動、Bがブラウザの起動、Cがページの起動、Dがその中のプログラムスクリプトだと思ってください
OSはブラウザを起動し、もし終了したら自信も終了するよう計画します
ブラウザはページを起動し、もし終了したら自信も終了するよう計画します
ページはスクリプトを起動し、もし終了したら自信も終了するよう計画します
今したいこととは、DがB'、つまりスクリプトが新しいブラウザウィンドウを立ち上げようとしている状態です
ここで、他と同様にスクリプトがそのブラウザウィンドウの終了を待機したとしましょう
ブラウザウィンドウが無数に増え得てまずそうですよね
それでは、スクリプトがブラウザウィンドウの終了を待機しなかったとしましょう
この場合はスクリプトの処理が終わり、芋づる式にページ、ブラウザと終了します
そこまでは良いのですが、それに続けてOSも終了してしまうことになり、これは問題です
なので今取っている対策としては、Bにタスクを登録できるようにするということで、
つまりブラウザをタブ化して1つのインスタンスとし、全てのタブが閉じるまではブラウザが終了しないようにしています
それで上手く言ってるのですが、このような工夫をしないといけない箇所が段々増えてきており
危機感を感じているという次第です
>>110 お前は自分が賢いと思ってるつもりの馬鹿だよ
基礎を何もわかっちゃいねぁ
>>106 を読んで理解できてないだろ?
function process() {
A();
B();
C();
D();
B();
C();
D();
}
このコードでな、Aの中のコードの生存期間は、
Aが呼ばれた時に始まり、Aが終了すると消えるんだよ
B〜Dも同じ。お前のように長い生存期間のものなんて一つもない
>>113 わかるわけがない。
こいつは、基礎から大幅にずれた理解をしてる。
完全に間違った知識をもとに語っているから
説明全てが的外れ。
そんなのを読んで理解できるわけがないんだよ
>>97 >>103 > 具体的な細かな話は気にしなくて結構です
あなたが解決できない原因はこれ。
理屈をすっ飛ばして、結果だけを求めるから理解できない。
ぶっちゃけ、一般的なフレームワークを使ってるという安心感が欲しいだけで理解する気は全くないでしょ?
解決手段は、配列と再帰を組み合わせるだけ
タスクでも監視でも、これらの強制途中終了または放置が、予期しない副作用が不具合を起こす可能性をゼロにすることは不可能だろう 将来どんなコードが来るかわからんのだろ 自分でもそう思ってるけど上司の説得材料が欲しいから こんなに長文を書いて反論で説得材料持ってきて欲しい、ってところじゃないのかね?
ちょっと日本語文法おかしくなったがあまり気にしないでくれ
チェーンさせるのとworkerで並列動作させるのとじゃ全然事情違くね
>>120 >>97 は並列動作じゃなくて、逐次動作じゃないの?
つーか非同期処理を含む関数を同期的に順次実行することを チェーン って言うもんなんか?
>>122 >>97 を読む限り、完了をトリガーに次の処理に移っているように読めるけど、彼は並列処理の意味を理解してるのかね…
そもそも、並列処理なら、Promise.allで十分だろうに
なんとなく程度しか理解してないのに再設計を振られた上流SE説
>>123 だーかーらー、
こいつは基本自体がわかってないから
用語も間違ってると考えて間違いないよ
だから難しい用語をなくして、
基本の基本の話からしないといけない
その証拠が
>>115 にレスがまったくないこと
このレベルの話から自分が抱える問題につなげることができない
関係のある話だってわかってないから
あいつが気にしてるのは、リソースの問題 関数の生存期間の話をしてるのだから 並列処理は全く関係ない話なんだよ。 ようはローカル変数がわかってないレベル asyncとかpromiseの関係ない話をすると疲れるだけだぞ。 関係ないことを教えるだけで問題解決せずに終わるからな
>>115 ,116
問題は、今回の処理は非同期で繋がっているので、
つまり、そのように並べた状態ではなく入れ子状態になっているということです
お伝い忘れてすみませんが、A->B->C->Dという関係は対等な処理を分けたものではなく
親子関係というか、包括関係と言ったらいいのですかね?とにかくそのようなものになっているのです
例えばDがメニューバーの表示とすると、
B'を再び呼び出す必要があるかどうかはDの動作にユーザーがどう反応をしたかどうかであり
勿論違う処理のケースも有るのでその結果をCで待ちわびなければなりません
実際はもう少し複雑ですが、簡単に書きますと
>>114 のような関係になっているということです
要するにDは下っ端も下っ端だけど、その特質上特権的な状態変化を起こす可能性があるものということなのです
>>117 私はここ何年かちょくちょくこの非同期の問題をどういう形で解決したら良いかを考えたこともあります
なので皆さんの中でよく考えて持論だったりそういうセンスを習得した人が居るのではないかと思いました
私が聞きたいのはそういう感覚であり、まさか具体的なコードに対する回答が貰えるとは思っておらず、
>>97 や
>>100 で挙げたようなパターンに対して、ビビッとそういうときはこうするもんだという
決めつけたような適当な経験の言葉をいくらか頂けたら刺激として私に取り込もうと思ったところです
なので皆さん、適当でいいので言葉をください
例えば
>>115 さんは大変参考になりました
関数を小さく分割して入れ子になりがちだけど、もっと整理して単純なものに持っていけるのならそうしようと思います
>>118 ,119
最後の頑張りのための気持ちを高めるためと、問題提起というわけでもないですが、
非同期処理の様々な難しさに対して皆さんがどう思考してるのかを聞きせてほしいということであります
>>123 チェーンというときはだいたいPromiseチェーンを意識しています
>>120 ,121,124
沢山のことを、直接的に掛けない部分もあり、事実と例えの質問を交ぜて書いた事もあって混乱させてしまいすみません
AからDまでは平行処理ではありません。沢山の非同期関数が同期的に枝分かれ状に呼び出されているルートの内の1つを選びだしたと考えてください。
実際のコードでは平行、並列の部分もありますが、ひとまずそうお考えください
話を単純に戻して整理します
質問A)
皆さんは非同期処理が複雑になってきたらどのような対処を考えますか?
例1) コンテキストが変わると無効になるセッションをほぼ全ての関数に渡して置いて逐一セッション切れを調べるようにする
例2) キャンセルの値や手段を定義してそれを伝播させる(Cancellable Promise)
例3) その合わせ技のようなもの(CancelToken)
その他)
質問B)
>>114 の状態で
>>97 の問題に直面したとき、
要するにいままで繋がってきた流れの中で突然安全にリセットしたくなったときはどうすればいいのか
例1)
>>114 で言ったように、ブラウザがほぼいつでも安全にタブを閉じれるように、
つながりの根本の方に枝を生やしたり切り落とせるポイントを用意しておく
例2) チェーンにを触れるPromiseをメモリリークを起こさないよう必死に再実装して明示的に切り離すようにする
例3) 生Promise+awaitに頼らない新設計を考える
その他)
質問C)
イベントを使うと不特定多数の直接知らない待機状態の処理を動かせて便利だが、
非同期処理のためタイミングが問題になる場合はどのような工夫をすればいいか
つまり、一方的にイベントを発火するだけではなく、それを全員がきちんと受け取って把握し
必要なら一定の準備ができたというフィードバックを得られるようなイベントシステムをきちんと整備するべきか、
それとも質問Aに書いたようなセッションだったり、今の共有状態変数を準備して対処するか
皆さんはどちらで組まれてるコードがお好きか
また他の場合でも一般に、問題解決のために高度に抽象化仕切ったシステムを作り上げたものと
例えばグローバル変数を1つ使うなどしてでも比較的シンプルに乗り切ったもの
場合によってそれらのスタンスを使い分け混合した状態
皆さんはどのスタンスで組まれてるコードがお好きか
質問1〜3)コードの正確性や安全性の検証に、コードを書くよりも圧倒的に多い工数/人数を費やす 結局、突き詰めると把握できない把握しきれない何かが問題なら どんな状況でもコード生産速度を優先した途端に必然的に不具合が生まれる 規約が守られているか設計思想に合っているか 確認させる土壌を作るほうがマシ
>>129 > 問題は、今回の処理は非同期で繋がっているので、
> つまり、そのように並べた状態ではなく入れ子状態になっているということです
なりません。
少なくともメモリ使用量に限っては関係ありません
入れ子というのはこういうもののことです。 promiseやasyncではこうなりません function process() { A(function() { B(function() { C(function() { D(function() { B(function() { C(function() { D(function() { // do something }); }); }); }); }); }); }); }
>>131 > 皆さんは非同期処理が複雑になってきたらどのような対処を考えますか?
非同期処理も、非同期処理じゃない場合も同じ。
処理を単純化して、その組わせで作る
> 例1) コンテキストが変わると無効になるセッションをほぼ全ての関数に渡して置いて逐一セッション切れを調べるようにする
> 例2) キャンセルの値や手段を定義してそれを伝播させる(Cancellable Promise)
> 例3) その合わせ技のようなもの(CancelToken)
これらは非同期処理が複雑になったときの対処法ではない。
非同期処理かそうかは関係なく、処理の途中で
キャンセルしたい場合に実装すべきこと
1のセッション切れは意味不明。独自用語使うな。
何がしたいのか全く不明
繰り返しになるけど頼むからサンプルコードで示してくれ 長々説明してくれるのは良いけど独自用語が混ざって訳分からん
>>132 確かにそうでしょうが、その規約だの設計思想だのも私に委ねられてる状態でして
結局の所、コードが動かないから、不具合が生じているから質問しているわけではありません
ただ少しでも良いコードを残したい、書いていきたいと思った次第で、
私はJSの「良い」コードというのはその時その時代の世界のJSerがどう考えているかで決まると長年思っているのですが
async関数やPromiseが入って2,3年がたった今どのような「良さ」を皆さんがそこに考え出してるのか
その感覚の言葉のシャワーを浴びて私の感覚を少しでも正しい方向に矯正したいというのが正直な気持ちです
>>133 ,134
言葉に認識の違いがあるのかもしれませんが要するに
>>114 の形だとお考えください
>>137 確かにおっしゃる通りです 同期と読み替えてくださって構いません
結局私は自分の中でも問題をまとめきれて居なかった上、色々書きすぎて本質を見失っていたようです
大変申し訳ございません
実際のところ、私がこれまで書いてきた問題(
>>111 など)は全て繋がっていて切り離せないものだったようです
結局私は、非同期『管理システム』、そのパターンを求めているのです
非同期と同期の大きな違いは、非同期は、同期で言う割り込みのように、
ユーザーの操作などによるイベントによる別の処理が途中と言って良いようなところで発生し得ることでしょうか
私は
>>114 でBで複数のCを待ちわびることで解決したと言いましたが、本当はそれだけではないのです
Cに相当する処理は実際は複数の非同期関数が繋がっているということもありますし、
その中ではawait Promise.race([D(),timeout(42),listen('buttonclick')])のようなものも使っています
ユーザー操作やタイマーや、他所から来たイベント次第でいつどう処理が完了するかは分かりません
要するに、シンプルに考えればDがBにnewC'を登録し、Dが終了すればoldCが開放されるように見えますが
実際はDが終了した段階でCはもうDを待ってはおらず、別の処理を始めているかもしれないです
Dはメニューと例えていたので変かもしれませんので言い換えると、
実際はC5が終了した段階でC4はもうC5を待ってはおらず、別の処理を始めているかもしれない、ということです
なので独自用語でセッションと言いましたが、関数開始時などに渡され、その関数が担当する処理が
未だ有効かどうか分かるオブジェクト用意し、コンテキストが変わるときにそのオブジェクトを無効状態にしておくことで、
そのような「タイミングのズレ」にだいたい対処しています
つまり、私は今基本的に素のasync-awaitを使いながら、時にはイベントを使ったり、セッションを使ったり、
Bのような部分的にタスク管理したり、色々しすぎているので
これを大きくまとめた比較的大規模なタスク管理システムを導入して整理し直すか、
もしくはそこまで行かないが10必要だったその場しのぎ対処が5になるような
比較的ちょっとした共通追加対応策についてのヒントや方向性のアドバイスが知りたいと言うことです
すみませんでした。
>>141 あぁ、わかった
お前に言えることは「余計なことすんな」だ
問題がわかってないお前が決めた所で失敗するだけ
問題が発覚した時に、後から方向転換できるようにしていればいい。
問題が起きたときに、最初に決めたルールは絶対守れと押し付けるはやめろ
> これを大きくまとめた比較的大規模なタスク管理システムを導入して整理し直すか、 そんなものはこの世に存在しない 大規模 = 悪 だから覚えておいたほうが良い つまりお前の発想は間違いに突き進んでる
>>143 ,144
私はこれまでこのプロフェクトを2度白紙にして本当に0から作り直したのですが
この調子で行くと完成と同時くらいに3度目の限界点が来るんじゃないかなと
次の人が必要なら好きに作り直しゃ良いですっかね?
間違いを指摘されて、本当に理解したかはともかく、それを間違いと認められる点は美徳 ただ、「あるはずだ」で質問を延々続行するのはどうかと
>>146 反省してないからそうなる
先に問題点を洗い出せ
問題点がわかってなくて反省できるわけ無いだろ
この調子で行くと3度目じゃ終わらないだろうな
反省しないお前のやり方じゃ何度も同じことを繰り返す
要するにお前の能力不足だ
能力不足っていうのは、プログラミング能力だけのことじゃない 不足してるのはリーダーや管理者的な能力だよ
だいたい過去2度白紙になった原因は何よ要件変更じゃないの どんな要件変更にも耐える設計作るのと永久機関作るのとどっちが現実的
>>148 ,149
それは十二分に承知してる
俺じゃなかったら1回目で済んでる
なんで経験浅い俺に任されたんだ
正直問題点は行の数だけある
流石に3回目なのでなんで動いてるのか分からんようにはなってはいない
でもそれが俺の限界
この先最後の最後に細かなバグに苦しめられることは必死
多分修正しきれる可能性のほうが低いだろう
もう疲れたよ
すみません
質問閉めます
と言っても多分参考になった
頑張る
>>150 1回目、2回目は成果物完成間近に根本的問題が避けられないことが分かったが
コードが密結合過ぎて要件大変更に耐えられそうになかった
だから3回目は俺もかなり加わって極力個々を小さく、素に作った
要件変更には強い
だが小さなバラバラに動く歯車を管理するのに限界がきそう
>>152 根本的問題って何?3回目スタートのトリガーは何?
>1行目「1回目、2回目は(略)根本的問題が避けられないことが分かった」
ほうほうなるほど1回目2回目は明確な問題があったんだな
その書きぶりだと要件変更のせいで作り直しとかじゃなかったんだな
>2行目「分かったがコードが密結合過ぎて要件大変更に耐えられそうになかった」
は?問題があったから作り直したんちゃうの?
要件大変更は生じたの?それとも未来くるかどうかわからない大変更に備えての作り直し?
無駄な情報を追加してる一方で、必要な情報が不足し整合性がない
日本語でこれ
1回目>設計だけやった
一応なんとか形になったものの解消できないバグが残った
しかも将来の仕様変更に耐えられそうもなかった
バグの対応と将来の仕様変更への不安から設計からやり直すことになった
2回目>設計だけやった
1回目の失敗から設計をやり直したが、最終的な結果は1回目と同じだった
やはりバグの対応と将来の仕様変更への不安から設計からやり直すことになった
3回目>設計だけでなくコーディングにも入った
なんとかバグを解消しつつ想定される仕様変更にも一定程度対応できるようになった
しかし部品ごとの独立性を重視して非常にきめ細かく作り込んだため全体像から細部まで把握するのが至難の業になった
なお1回目から3回目まで通じて仕様変更はなかった
妄想推測と過去レスを元に書くとこんなところか?
密結合を嫌って疎結合にし機能ごとの独立性を重視した結果煩雑になったというならば
>>97 や
>>100 末尾の諸問題は各機能のインターフェースや実装のレベルまで落とせそうなものだが
>>130 自分は平行処理なんて書いてないから
そもそも、平行処理って何?並行処理のこと?
並行処理と並列処理の違いを理解してるの?
「並列処理じゃなくて逐次処理じゃないの?」と指摘されてるのに、なんでそっちはガン無視なのよ
専門用語を使えば使うほどボロを出してるから、もっと平易な日本語で書きなよ
知ったかしないで、分からないことは分からないと認めなきゃ先に進めないでしょ?
htmlを新しいウィンドウで開く方法ってないでしょうか window.open(url) はurlを引数に取りますが window.open('<html><body>Hello!</body></html>'); みたいにhtmlを引数にして新規ウィンドウで開く方法ってないでしょうか
あるけどjQueryの話題じゃないので頑張ってくれ
>>159 ブランクで開いてからhtmlを設定したらいいんじゃね
>>161 一応できて動きました。こんな感じですかね?
function new_window() {
var w = window.open("", "NW");
w.document.open();
w.document.write("<html><body>hello</body></html>");
w.document.close();
}
new_window();
>>129-130 皆、非同期処理のネストの深さに困ったから、
ネストが深くならないように、await が作られた
>>159-162 Selenium WebDriver では、ctrl+T キーを送って、別のタブを開いて、
そのタブに移動する、というサンプルがあった
非同期処理についての質問者は、 名前欄に、最初の書き込みの番号を入れてくれ 処理の基本は、all or nothing A | B | C というパイプラインがあって、B で失敗した際、A だけが更新されると、 データの不整合が起こり、データの一貫性がなくなる データベースなどでは、roll back して、Aの更新前に戻す。 中途半端な更新をしたら、絶対にダメ!
>>153 ,154
もうただのおしゃべりになるのであまり自ら事情をバラしたくないのだが、
その問題のために要件も含めて設計を大胆に見直す必要が出たってこと
/*このあと15行ほど書いたが削除した。察して欲しい。*/
>>155 勿論十二分に理解して書いてるよ
だって書く前にググったもの しっかりとね
2chに書いてるんだからそれくらいのことは当然してる
バカにしないで
>>その他のレスの人
アドバイスや意見をどうもありがとう
> その問題のために その問題を自分で理解してないんでしょ?
js固有でもないプログラミングの基礎の用語を 書く前にググらなきゃいけない時点でバカにされても仕方ない 1、2回目を限界が来たと書いていたけど 要件定義不備設計不備に由来する不具合が原因の作り直しじゃん
ちょっとでもぐぐってたらセッションという言葉の独自定義は避ける
>>168 その問題というのは誰が見てもハッキリ分かるもの
度合い問題でもあるが
何を何に変えてそこから何に変えて良くしたか
3段階で解決できるものと言ったら
>>170 たしかになぁ
でも何とも言えんわ
正直言えば1回目で完成ですでも良かったわけだし
仕様はこうです、合わせてくださいってこちらから言える案件だし
つうか目的くらいしか決められてないしどういう機能があるべきかそれほど自明でもないし
そのくせ追加要望は未だにしょっちゅうしてくるし
ここまで聞いて分かったと思うけど、直接目的を達成するものだけを作ってるわけじゃないし
>>171 セッションは本来の呼び名を避けて適当に言ったんだよ!
ググってなくてすまんかったな!
よかったら良い呼び名を教えてくれ
次からそれを使う
並列処理とか普通にやればいいだけなんだが 何に困ってるか説明できてないので答えようがない まあ全てはこいつの能力不足だ お前が教えるんじゃなくてお前が教えてもらうほうだ
まずは端的かつ明確に回答を行えるようになることを目標にすべき 同僚の苦労が偲ばれる
>>131 の質問の内容からして自分の常識とは異なっている
実装手法なら、周辺環境や規約にもよるけど、だいたいこのように書くと言えることもある
でも設計だと一部を抜き出して語る意味がない
全体を知っている者同士の会話でもなければ良し悪しの判断基準がないから語りようがない
毎回個別に考えて調べて考えるのが原則
だから設計は単価が高くて人工が多い
JavaScript関係ない話みたいだし 元質問者も多少おさまりつかないとこあるかもしれんけど もうやめといたらどうか
なんか先日からアプデ可能って出るんですがやっても必ず失敗します 何かあったんですか?
if(true){ ・・・ }else{ ・・・ } みたいな文を書くとエラーが出るのだが、ダメなのか?
>>179 >みたいな文
というのがよくわからないので
if(true){ console.log(1) }else{ console.log(2) }
これ試してみて
>>180 ()内の条件が定数だと警告が出ていたようです。
自分でlintかなんか使ってわざわざ警告出るようにしておいて 相談するってさっぱり意味が分からんな
あれだろ 解決してほしいんじゃなくて話を聞いてほしいだけ 車が故障したと電話する女、クソまじめに解決のため診断方法をレクチャーしようとしちゃう男、みたいな
javascriptのクラスを駆使して何か作ってみたいんだけどどういう内容のものならクラスがバリバリ活躍できる? 車クラスを作ろう!とかそういう練習問題的なのは無しとして
車クラスは作れるのかな? オレには作れん(´・ω・`)
>>186 実践的なお題がないかと思いまして
動物クラスを継承して犬クラスを吠えさせる、みたいなのでは実際にはどういうシーンで役立つのかイメージがつかないのですが…
実際にはどういうシーンで役立つのか知りたいというだけなら classを使っててclassでないと困る実例を聞けばいいと思うんだけど なんでjavascriptのクラスを駆使して何か作ってみたいの?
お題スレでお題攻略してみるとか
+ JavaScript のお題用スレッド +
http://2chb.net/r/hp/1526666703/ <button onclick="if(typeof MyFunc == 'function') MyFunc();" ・・・ と言うような記述を見たのだが、 ifは何のためにあるの? 何が目的なの?
>>194 それ悪い書き方
MyFuncに関数が入っていない場合(=バグ)
バグの場合にバグを無視するというコードになってる
>>194 良し悪しはともかく目的がなにかと想像すると
MyFuncは別のとこで代入されてるとか
代入されるまではundefinedなりnullなり
別にnullやundefinedが入ってても問題はないし 目的は呼べないものを呼ばないようにすることじゃなくて 呼べるものを呼ばなくすることだな 例えばNodeとかでV8に手を入れてtypeofを拡張してるとか それで例えば呼ぶとエラーになるクラスのコンストラクタは'constructor'を返すようにしてるとか 一度しか呼ぶことを期待していない関数が呼ばれた後は'function'じゃなくすとか 十分に考えられる
MyFuncなんてふざけた名前付ける奴がそこまで高尚なことを考えてるだろうか
>>188 IE11用にPromiseのPolyfill作成
>>199 >>194 の事例なら、onclickを付け外しする方が圧倒的にスマート
onclick="MyFunc()" が一番スマート
>>206 そこはaddEventListenerじゃないのか
ジェネレーター関数で function* g(){ const n=yield 0; yield n; } var f=g(); console.log(f.next()); console.log(f.next(3)); nextで直前のyield部の変数に値を渡せる、みたいな機能がありますが これをうまく利用した例などはありますでしょうか ぱっと見どこに値を渡したのか?という見辛さに違和感があるのと 実行直前の値を変えたい、という状況が思いつきません
普通受ける方も送る方もfor文で回しながら渡すだろ
index.htmlで、JSの読み込みが三つあり <script src="file1.js"></script> <script src="file2.js"></script> <script src="file3.js"></script> では正常に動作するんだけれど、三つのファイルを単純に連結して一つにして、 <script src="fileAll.js"></script> とするとエラーが出まくるんだが、一般に、このやり方はエラー出るの? 単純に連結しているから、三つに分離している場合と同じだと思うのだが。
でない。理由は思いつくが、興味ないので他の人に任せる
前後のファイルがつながって、1文扱いにならないように、 ファイルの冒頭に、; を入れておけば?
Q ○○したらエラーが出ます A エラー内容確認してがんばって直せ
でもエスパー能力高いやつって経験豊富だから大体どういう理由でエラーが出てるか予想できるよね
>>221 チンコ晒せといってるじゃないんだから。
Githubとかあんなところもその恥ずかしいという気持ちを乗り越えてからすべてが始まるんだぞ
>>221 その理屈だと、エスパーも恥ずかしくてコードを晒せない
,.:::.⌒⌒:::::ヽ (::::::::::::::::::::::::::::) (::::::::::::::::::::::::::::::::::) (:;;;::::::::::::::::::::::::::::::::::::) (:;;;;;:::::::::::::::::::::::::::::::::::::) (;:::::::::::::::::人:::::::::::::::::ノ (::::::: (´・ω・`):::::ノ
jqueryのmapとjavascriptのmapって全然違いますよね jqueryの方はreturnで配列返したら配列じゃなく展開されて値が代入されてました なので配列で返したいときは $().map(_=>[[]]) みたいに入れ子にしないといけない、でよいでしょうか?
>>228 なんか根本的に間違ってるぞ。
jQueryのmapは二種類ある。
$.map と $().map だ。
前者は、(jQueryが開発された当時、存在しなかった)
JavaScriptのmap相当の機能を提供するものとして作られた。
後者はjQueryオブジェクト(=要素の配列をラップしたもの)に対して
mapを実行するもの・・・が基本ではあるんだが、jQueryオブジェクトというのは
いうのはDOMだけではなく任意のオブジェクトをラップすることが可能なので
いろんなものに使えたりはする。
で、JavaScriptのmapとして使いたいなら、$.mapの方を使う。これは配列が
mapメソッドの引数になっているという違いはあるがJavaScriptのmapと同じように使え、
真の配列だけではなくlengthプロパティがある配列っぽい(Array-like な)ものを
扱えるという便利さもある。
> みたいに入れ子にしないといけない、でよいでしょうか?
入れ子にしないといけないとかいうのは意味がわからん。
後者を変な使い方をしてるだけだろう。
あんたが欲しいものは前者だ。それ使っておけば悩むことなど無いはずだ。
>>229 実際に試してみるとわかる
var arr=[1,2,3];
console.log( $.map(arr,_=>[1,2,3]) ); //[1, 2, 3, 1, 2, 3, 1, 2, 3]
console.log( arr.map(_=>[1,2,3]) ); //[Array(3), Array(3), Array(3)]
console.log( $.map(arr,_=>[[1,2,3]]) ); //[Array(3), Array(3), Array(3)]
ということではないかと
>>230 マジかw それはしらなかった。
jQueryのmapってRubyでいうflat_mapだったんだ。
ってことはmapといいながら1対1での変換じゃなくて
要素を増やしたり減らしたりもできるってことか。
なんでjQueryのmapはdeprecatedにならないのかと
思っていたらそういうことだったんだな
$.map, $().map jQuery には、2種類のメソッドがある $.メソッド名は、汎用的なユーティリティ関数で、 $().メソッド名は、this を持つ、インスタンスメソッド
thisを持つとかまた頭悪いオレオレ用語開発したなw 付き合ってあげるここの人たち優しい
var tName = []; var tNumber = []; var i = 0; var o = document.getElementsByTagName("a")[25]; for( i=6;i <=24;i++ ){ tName.push(document.getElementsByTagName("a")[i]); tNumber.push(document.getElementsByTagName("a")[i-1]); if(tName[i].textContent.includes("(1001)") == true){ tName[i].style.display = "none"; tNumber[i-1].style.display = "none"; } } if( o.textContent.includes('(1001)') == true ){ o.style.display = "none"; } これ実行するとTypeError: tName[i] is undefinedって出るんですが原因わかる方いますか? 実行順序の関係だろうか.
空のtNameにpushしてるから ループ最初のi==6の時はtName[0]しかないぞ
>>239 エラー出た時にブラウザでオブジェクトの中身覗いたら原因丸わかりじゃないですか?
いつもどういうデバッグしてるんですか
いつも割と気合と努力で(console.log)でゴリ押ししてたからなぁ汗
ブラウザのコンソールはエラーと警告が出るだけの場所だと思い込んでてまさかコード打ち込んでデバッグ出来るとは青天の霹靂だ
>>241 tNameは最初の一個しかないのが意味が分かりません
ほぼ同じソースコードだけど別のページだと動くのに.
ゴリ押ししたら動くのにforとarray使ったら動かなくなるのなんでなん
ループの中の if(tName[i].……の直前で i と tName をconsole.log()にかけるコード1行入れりゃ理解できるんでね
for使わずにtNameだけ書くと
>>239 var tName = [];
var i=0;
//i=0からi=5は、何もしていない
console.log(tName); // []
i=6
tName.push('要素a');
console.log(tName); // ['要素a']
console.log(tName[i]);// undefined == tName[6]
i=7
tName.push('要素a');
console.log(tName); // ['要素a','要素a']
console.log(tName[i]); // undefined == tName[7]
//以下繰り返し
>>240-241 ,243,245-246
とりあえずこれで事なきを得ました。ありがとうございました。
var tName = [];
var tNumber = [];
var i = 0;
var o = document.getElementsByTagName("a")[25];
for (i = 6; i <= 24; i++) {
tName[i] = document.getElementsByTagName("a")[i];
tNumber[i-1] = document.getElementsByTagName("a")[i - 1]
if (tName[i].textContent.includes("(1001)") == true) {
tName[i].style.display = "none";
tNumber[i - 1].style.display = "none";
}
}
if (o.textContent.includes('(1001)') == true) {
o.style.display = "none";
}
質問です
JSというかYouTubeの問題かもしれませんが
iframeAPIを使ってYouTube動画を貼って、準備出来たら再生、とするのに
再生(playVideo())の前に消音(mute())した場合
http://jsfiddle.net/xvc70zn9/1/ 消音(mute())しなかった場合
http://jsfiddle.net/q9x2Lfma/1/ Chromeで後者が再生されないのは、おま環でしょうか?
そりゃiframe内の動画がユーザーアクション無しで音声流そうとすればブロックされて当然でしょ いまデスクトップでもどんどん厳しくなてるんだから WebAudioAPIとかもポリシー変更になるでしょ
>>249 つーことは
俺環だけでなく、そちらでも再現してる?のかな?
chrome://flags/#autoplay-policy * Default * No user gesture is required. * User gesture is required for cross-origin iframes. <-- * Document user activation is required.
>>253 それは知ってました
何れにせよこちらからのアクションは
postMessageで送っているようなので
不可解なのはなんでMuteすればOKなのかということです
なので、おま環なのかなーと
window.addEventListener("load", function(e){ var list = document.getElementsByTagName('a'); ってやってるんだけど、aタグ一杯あるのにlistに空の配列が返される しかも最近突然起こるようになったんだけど、何が原因かわかりますか
おま環、もしくは勘違いじゃね? getElementsByTagNameが返すのは配列ではなくコレクションだから 配列が返ってるならおかしい
>>254 なんで不可解なのかが不可解
ミュートだったら再生させることによる悪影響の可能性が小さいだろうってことは分かる?
モバイルではもっと前からミュートで見えてるビデオだけ自動再生可の仕様だったでしょ
そして最近デスクトップにも似た仕様が入ったでしょ
デベロッパーなら最低限このページのことくらいは把握しておかなきゃ駄目よ
https://www.chromestatus.com/features >>257 あ、配列じゃないのかこれ。NodeListというのが返ってきてlengthが0になっています
考えられるとしたらDOMがまだできていない等だけどloadイベント発火時にそんなことってあるのかな
setTimeOutで待ってみても同じだから、DOM構築が間に合ってないってわけではないっぽい
F12でコンソール開いてdocument.getElementsByTagName("a")って打ってみて
>>264 やってみた。それだと正常に取得されました
javascriptもclassを実装したの? 煩雑なprototypeは改めて欲しい。
プロトタイプはクラスと比較してもしなくてもこれ以上無いくらい簡単な仕組みで 複雑なのはnew演算子だって何回言ったら分かるんだろうね
>>278 実装が簡単なのと使い方が簡単なのをごっちゃにしてるぞ
例えば、gotoはコレ以上無いくらいに簡単な仕組みだ、
そのgoto一つで分岐処理、ループ処理、例外処理、
処理の流れを変えることはなんでもできる
だけど、使うのは難しい
原子的な機能であればあるほど、実装は簡単で
いろんな応用ができる。だけどそのせいで間違った
使いかたもできるから、使いこなすのは難しんだよ
小学生の時にBASICやってたなあ そんでGOTOやGOSUBのなにがいかんのかイマイチわからん
問題が出るのはたとえばこういう場合 ・後でコードを見たときに ・意図や目的のコメント文がぜんぜんなくて ・大きく飛んだり戻ったりで全容を掴むのが至難の業で ・書いた本人も気づいてないgoto由来のバグが潜んでる よって、次のことが言える 自分がメンテするのでなければ何も問題がない
お腹に刺さると死ぬから包丁は使うべきじゃない 的な
gotoって確か行数かマーカー依存だったよな 行数の場合、ソース変更したら処理が変わるし、マーカーだと処理を追いにくいからあまり推奨されてない 大規模開発だと(他人にソースコードを読ませる関係上)問題になるが個人での開発ならそれほど問題にならない
goto乱用よりも 仕様ひっくり返すユーザ、設計をひっくり返す上流SE、みたいな
要件を正しく伝えない蔵担当者 勝手に要件を追加する蔵担当者の上司 最終段階で「これ本当に必要なの〜?」とぶちかます蔵の社長、とか
質問です 自分は障害持ちで将来的に在宅で 仕事したいと思っとります 在宅でのweb系の仕事を考えるなら、javascriptとphpどちらを先に勉強すべきでしょうか?すぐに仕事に繋がりやすいのはどちらでしょうか? 大金稼ぎたいとかじゃなく、少し稼げれば良いです 宜しくお願いします 長文失礼しました
まずwebのことなんて一旦忘れて c書けるようになってサーバ操作に慣れろ
>>291 考え方が逆
何ができれば良いか、ではなく何が出来なくても許されるか、だね
んで在宅≒フリーランスだとあまりないかもなあ、出来なくてもいいこと
デザインくらいかなあ
最近この手のクラワのステマじみた何かをよく見かけるな
>>291 WebAssemblyもあるから何とも言えんな
C++とjavascript学んでおけばいいんじゃね
ウェブサイトにアニメーションを実装するとなると Canvas使うよりよりSVGやCSSアニメーションのほうが優勢ですか 例えばページ背景に複数の円が色を変えながら動き続けるとかです
>>295 c +は難しそうですね phpがオススメとも聞きましたが、逆の意見も耳にします
>>296 WEB+DB vol.106 に、次世代のアニメ規格、Web Animations API の記事が載っている
これのPolyfill として、web-animations-js が公開されている
言うほど枯れてるだろうか? そんなに使われまくってる?
原則CSSのanimation/keyframesと一緒でしょ 枯れてると言って良いと思う
> 原則CSSのanimation/keyframesと一緒でしょ > 枯れてると言って良いと思う だめだろ。できることが一緒でも、 それを実現している技術は最近だろ? これはCSSではない新しい技術なのだから枯れてない 長い期間実際に使われてないなら枯れてるとは言えない
実際に多くの人に使われてるかどうかは関係ない 同時期の技術で言うとWebRTCのように使うべき人が使ってきて 議論が出尽くして仕様が固まって可能性も粗方掴めた段階で枯れてると言える もう先人が試しきってるんだからね
次世代とかウン十年前のゲーム機の宣伝文句じゃないんだから
>>304 まだドラフトかよw
枯れてるとか嘘じゃん
>>309 あなたは、ドラフト(草案)がもうこれから
変わらない仕様だと断定したいんですかね?w
https://www.nttpc.co.jp/yougo/%E6%9E%AF%E3%82%8C%E3%81%9F.html > しかし単に古いだけでなく「すでにトラブルが出尽くしていて、
>そのトラブルも解決され尽くしている」といった意味が強い。
ブラウザで実装してこの仕様でなにかトラブルがないですかー?って
調べてるのが今の段階で、トラブルはまだ出尽くしていない
枯れるわけがないだろ。常識で考えろや
これらの書き込みで1600円の雑誌が何冊余計に売れるのかね
枯れてない=トラブルが多く仕様が不安定 とすると 枯れてない=使い物にならない可能性が高い、細かいトラブル対応はネット漁るしかない=本見る意味なし 枯れてる=トラブルが出尽くし解決され尽くすほど普及してる=mdnで十分、本見る意味なし
>>310 意味分からん
ブラウザはまだAPIの一部しか全然実装してないし個々何年もする気もないだろ
ずっと見てきたわけもでないのにしったげに言うな
むしろ使う人が居なくて仕様の中核以外の部分は廃止されてもおかしくないような状態だから
もう枯れ切ってるんだよ
崩れる前に使い始めようっていうのに近い
>>314 意味がわからんのは、お前が「"仕様"が枯れた」なんて
意味不明なことを言ってるからだよ
いいか? 俺らは使う側。APIを使う。使うにはブラウザに実装されていなきゃいけない。
いくら仕様がずーっと前から変わらなかったとしても、それがブラウザに実装されてない以上
使えないし、Polyfillがあろうがブラウザに実装されようが、それなりの期間使われてないと
バグがあるかもしれない。だからいくら仕様が安定してようが「"実装"は枯れてない」んだよ
それとも何か?「枯れてるけど使えません。」とか言うつもりか?
枯れたっつーのは、なんつうか、こう 世界中のいろんな現場で使い倒されてる感がないとね
Web技術は枯れてからようやく使われるようになる 色んなメディアやブログが取り上げ始めたらその合図
>>315 俺らは使う側?は?何言ってんだお前。
Webって言うのは皆で作っていくもんだろ
その大原則を忘れるとかアホかお前
ほんとアホなこと言ってる暇あったらMLに参加するなり、実装にパッチ投げたりしろよドアホ
皆が苦労して決まりきってから腰を上げるお前みたいなのに仕様が云々語る権利は一切無い
Webの世界(要するにウェブサイト)は皆で作るが 仕様は皆で作らない
>>315 > だからいくら仕様が安定してようが「"実装"は枯れてない」んだよ
いつの間にか、「実装が枯れてない」にすり替わってる
っていうか実装が枯れてないというのがどうも 枯れてるものを移植したら枯れてない新世代ぎじゅつに様変わりするのか?んなわけないだろ
不毛でも感覚をぶつけ合って少しでもすり合わせておくことは大事 皆がバラバラな方向いてたらWebは崩壊する
下のコードでaddEventListenerが実行されないのが良く分かりません。 window.onload = function () { window.addEventListener('load', function () { ・・・ // 実行されなかった }); }; なぜですか? なお window.onload = function () { ではなく、 jQuery(function ($) { でも実行されませんでした。そう言う仕様ですか?
>>330 ロードイベントが起こった後にロードイベントを監視しても、もう起こった後だから起こらない。
>>330 そりゃ二重にロードイベントに紐付けしたら起動するわけが無い
どっちかだけにしろ
Life is a series of choices.(人生とは選択の連続である)- William Shakespeare(ウィリアム・シェイクスピア)
>>330 おかしいな? jQueryの場合は動くはずだけど?
jQueryのloadはPromise的な処理になっていて
あとからつけても発動するように考慮されてある
jQueryの古いバージョンは違ったかな?って思って1.9.1にしたけど動く
それよりも古いバージョンはしらないけど
https://jsfiddle.net/6q4whbty/ あ、逆か。 外側をjQueryにして、中をDOM APIにするわけね。 そりゃDOM APIじゃむりだ。中もjQueryにしなきゃ ってか、外側でjQuery使っていてjQueryでやれることを DOM APIを使ってやる必要ないでしょw
必要かどうかは私が決めることです 分からないのなら解答しなくていいので黙っててください
>jQueryのloadはPromise的な処理になっていて >あとからつけても発動する どういう経緯でこうなってるんですか pure-js側はそんなことないですよね デバッグの妨げになるようにも思えるんですけど
どういう経緯って言われても、何度も発生するイベントと
resolve(またはreject)状態になってから変わらないものは
そもそも性質が異なるからですよ。
Promiseもいまやpure-jsですが、昔はそんなものがなかったからイベントで代用していましたが、
他のイベントと違い発生したタイミングが重要なのではなくロードは発生したタイミングが知りたいというより、
「現在ロードされているか?されていなければされるまで待つ」という処理を行うのが普通なので
現在の状態を判断するという処理が必要になります。
結構複雑ですよ?まずjQueryのloadはブラウザのloadイベントではなく
それよりも早い段階で発生する、DOM構築が完了した直後の
DOMContentLoadedを捉えるものだというのは知っていますか?
DOMContentLoadedはHTML5で標準化されましたが、それまでは非標準で
https://qiita.com/mamosan/items/ff336b5cc0a1a95e03a7 Firefox 2 (2006年)、Safari 3.1(2008年)、Chrome 4(2010年)、IE 9(2011年)で
予約サポートされたものです。jQueryは2006年なので普及しておらず当時は
使えない人が大半だったってのがわかりますね?
jQueryのloadはこのDOMContentLoadedをシミュレートする形で実装されました。
詳細は省きますがドキュメントのとあるプロパティをsetTimeoutで監視して読み取れれば
イベント発生扱いとしています。この部分のコードだけでも面倒なのですが、今は
DOMContentLoadedが使えるし、シミュレートが完璧に動作すると信じて
DOMContentLoadedの話にすすみましょう。
DOMContentLoadedが発生するのはDOM構築が完了した直後です。ここで問題になるのは
パフォーマンスアップのために使われる非同期で実行されるJavaScriptの存在です。
同期的に実行されるJavaScriptはDOM構築完了前に実行されますが、非同期で実行される場合
DOM構築完了後に実行されます。つまりDOMContentLoadedが発生した後に
DOMContentLoadedを監視することになるわけです。つまりイベントはすでに発生しているので
捉えることはできません。
>>330 と似たような状況になりますね。
ではどうするのかというと、イベントを監視する前にすでにDOMContentLoadedが発生したかを document.readyStateを使ってチェックするわけです。 ですが単純には行かず、document.readyStateを使ってチェックしてまだloading中であれば、 addEventListenerでDOMContentLoadedを監視すると書いてしまうと、チェックした段階では loadingだったが、addEventListenerするまでに間にDOMContentLoadedが発生してしまって イベントが捉えられない可能性があります。 なので逆に実装し、addEventListenerでDOMContentLoadedを捉えるようにしてから、 document.readyStateを監視して、すでにreadyStatusがinteractiveにだったら ずっと前にDOMContentLoadedが発生していたと判断するわけですが、 実はaddEventListenerを設定した直後にDOMContentLoadedが発生した可能性があるため この場合は2回イベントが発生する可能性があります。それを避けるために状態管理で 1回しか発動しないようにするわけです。 これらの動きはDOM読み込みとJavaScriptの実行タイミングによるものなので 毎回発生するものではなく、まちまちで見つけづらいバグとなってしまいます。 ローカルでは問題ないのにサーバーにアップした発生する。 でも2回目以降はキャッシュが効いて速いので発生しないとかですね。 このように完璧に対応するのは複雑なのです。DOMの非同期読み込みをやめれば 解決するのですがパフォーマンスアップのためにブラウザに搭載された機能を 使うなというのは、ライブラリとしてありえませんね。 他のイベントでは必要ないのにloadに関してこれらが必要になるのは DOM構築が完了したあとに何度も発生するイベントと、そもそもDOM構築完了を監視する DOMContentLoadでは性質が異なるからなのです。 そして実際のユースケースを考えたら「ロード済みかロード完了時にイベント発生」して 欲しいため、APIもそのようになっているのが望ましいわけです。 開発者が上で書いたようなな複雑な処理を書くことなく、単純なAPIで判断できるため それが原因で起きるマイナーなバグから逃れることができます。
>パフォーマンスアップのために使われる非同期で実行されるJavaScriptの存在です。 >同期的に実行されるJavaScriptはDOM構築完了前に実行されますが、非同期で実行される場合 >DOM構築完了後に実行されます。つまりDOMContentLoadedが発生した後に >DOMContentLoadedを監視することになるわけです。つまりイベントはすでに発生しているので >捉えることはできません。 これどゆこと ブラウザにおけるjavascriptの実行ってのは 今も昔も非同期な関数(呼び出し)があるだけで、原則は全部同期実行なんじゃないのけ setTimeoutやXHRのcallbackの中でwindow.addEventListener('load', ... )なんてしないし
「なんでonloadではなくDOMContentLoadedなのか」は? つか化石IE対応のための負の遺産的挙動じゃないん
>>344 scriptタグのasync属性のことだよ。
HTMLの読み込みとJavaScriptの実行が非同期で行われる。
つまりaddEventListenerでDOMContentLoadedを監視する前に
HTMLの読み込みが完了してしまうことがある
参考
https://iwb.jp/domcontentloaded-javascript-async-forbidden/ >>345 IEは9の時代からDOMContentLoadedに対応してる。
対応してないブラウザのためというのなら、別にIEだけじゃなくて
その他のブラウザも非標準のDOMContentLoadedには対応していなかった
DOMContentLoadedが標準化されたのはHTML5になってからだ。
それはわざと。レスする気なくするでしょ?それが狙い 不正にjQueryを貶めようとする奴らに反論する気をなさせる
asyncは「DOM構築完了後に実行」される、ではなく 「DOM構築完了後に終了する場合がある」というべきでは つかasyncしてもwindow.onload使えばいい話じゃないのか
この件は良く知らんのだけど ・>>337 いわく1.9.1の時点からそういう挙動 ・scriptのasyncはHTML5から ・jq 1.9.1リリース 2013年02月04日 ・HTML5勧告 2014年10月28日 順番おかしくね >>351 jQのpromise的動作とjsタグのasync的動作はまったく別物
>>352 >>346 JQueryの良く分からん挙動がscriptのasyncと関係ないということになると
>>342-343 の大長編レスの前提が崩れるんじゃないか?
>>351 > ・
>>337 いわく1.9.1の時点からそういう挙動
どこにも1.9.1の時点からなんて書いてない。
少なくとも1.9.1ではそういう挙動だったってだけ。
おそらく最初からそうだろう
>>352 何を持って別物と言ってるのかは知らないが、
PromiseオブジェクトにはPromise.resolve()とPromise.reject()という
メソッドがあって、それぞれ解決済み、リジェクト済みのオブジェクトを返す。
このオブジェクトにあとからthenメソッドでコールバック関数を
くっつけてもちゃんとコールバックが呼ばれるんだよ。
> jQのpromise的動作とjsタグのasync的動作はまったく別物 jsタグってなに?HTMLタグっていいたいの? HTMLタグのasyncはJavaScriptの実行を遅らせることで 見た目上のパフォーマンスを上げる技術で その弊害として、DOMContentLoadedが先に呼ばれてしまうから JavaScriptの発動が起きないってものなんだけど jQueryはそのことも考慮されてるから、普通に書くだけで 非同期でJavaScriptが読み込まれても大丈夫って話をしてるんだよ Promise的動作っていうのは、コールバックを後から追加しても 発動するって話。あんた全く別物の話をしてるよ
>asyncはJavaScriptの実行を遅らせることで 遅らせてるのか? htmlの解析処理と当該jsファイルのダウンロード・実行処理とを 切り離して並行処理させることで、htmlのパース・文章や画像の配置等が妨げられないようにしているだけでは? DOMContentLoadedより後に処理が開始されるのではなく DOMContentLoadedの前に終わるとは限らないというだけの話では?
> DOMContentLoadedより後に処理が開始されるのではなく > DOMContentLoadedの前に終わるとは限らないというだけの話では? 今はそういう細かい話はどうでも良くて、 需要なのはscriptタグのasyncを使われてると、DOMContentLoadedが 先に発生してしまうことがあるってことですよ 他にもRequireJSのような非同期でJavaScriptモジュールを読み込む仕組みを 使ったときにも発生しましたね。
たとえ細かい話でも虚偽が含まれてる人の話は信用できないからなあ
はは、信用出来ないっていうだけで、間違ってるとは言えない あわれよのうw
まあ間違ってるわけじゃないからね。信用出来ないってだけ
>>354 >>357
>>358 ごめん訂正するね
言葉足らずだった
「別物」ではなく「実装箇所が別物」
動作としては似たようなものだ
一番最初の気持ちとしてただ
>>351 の言ってることが的外れだったので意図としてはそれを訂正したかった
window.addEventListener('load', ... )ではどうしてもダメなケースを聞きたい
>>330 のような無能サンプルコードは除外するものとする
>>367 ページ内にある画像全てが読み込まれないと
JavaScriptが動かないのでダメ
>>368 操作性悪くなって遅くても動くからダメじゃないんですって主張は禁止なw
その理屈だと電気がなくても生きていけるって回答になる。
asyncで読ませたい どうしても早いタイミングDOMContentLoadedで動かしたい asyncするとDOMContentLoadedに間に合わないリスクが怖い・・・ jQueryなら専用のコード書かなくてもすぐに実現!! ←今ココ ざっくり書くとこんな感じかね? DOM APIでもできないわけではないし jQueryならといっても最初からそれを狙った実装ではないようだが 現実として便利に転用できますよ、という具合
>>370 どっちにしてもwindow.onloadだとロードイベントに一個しか関数を紐付けできないから不便極まるんだよなぁ
一個だけしか使わないってんなら関係ないけどさぁ…
>>374 たまにはaddEventListenerのことも思い出してあげてください
そんなことよりお前らremoveEventListenerとか使ったことある? 使う機会がまったくないよなアレ
>>377 そもそも今この瞬間までそいつの存在すら知らなかったぞ
>>377 使ったことはないが
disableにできない類のもののイベントリスナを切りたいとか
起動する関数を切り替えたいとか
使える機会はいろいろ思いつくぞ
呼び出される関数側でチェックして即returnとかの別手段でだいたい十分だけど
>>379 > 呼び出される関数側でチェックして即returnとかの別手段でだいたい十分だけど
そういうのはクラス名で制御すべきだよ。
例えばこんな感じにしてると、spanのクラスが
それぞれmode1 or mode2 の場合のみ、該当のものだけ発動してくれる
$('span.mode1').click(function() { alert('click1'); })
$('span.mode2').click(function() { alert('click2'); })
>>377 普通に使うけどなあ
来れなかったら、addしたイベントをどうやって剥がしたら良いのかわからん
addしたイベントを剥がす機会がないということでは?
要素が増減するならばデリゲート使って親要素でイベントを捉えれば良いし その方が効率なわけで、わざわざイベントハンドラを外すことはないね
>>383 なるほどー
>>384 増減しない時は?
>>386 つけっぱなしで良いこともあるし外さにゃならんこともあるな
この辺は経験というか、やったことあるかどうかの差だからしゃーないわな
だからその外さなきゃならない場合ってのが無いんだっていう話をしてるんだが 経験があるというのなら、その経験を語れよ
webページ作るのに外さないといけないユースケースは確かにめったに無さそうだ。 実はコンソールで色々いじくって実験する用なんじゃないのか。console.logみたいに
使った経験は無いが、想像するに一つのボタンに複数の機能を持たせるときには使えそう
>>390 >>380 を見てね
ロジックで処理を分けるのは古いやり方だよ。今は状態ごとの処理を定義する。
こうすることがバグも減らせるんだよ。ちゃんと外せたか?二重に登録してないか?
なんて考える必要がない。
こういうものこそ経験っていうんだけどな
>>391 ますますremoveEventListenerの使い道ないじゃないか…(憤慨)
>>388 色々あるけどなあ
フレームワークっぽいもの作ってたときとかよく使ったよ
一個のサイト作る場合ではなく 複数のサイトで汎用的に使うコンポーネントなんかを作るケースだと CSSまで自由に出来なくてJSでやらにゃならんこともあって そんな時には必要になるなあ みんなも自分のサイトに組み込んでるフレームワークやライブラリのコードをのぞいてみると 案外使われてるのに遭遇すると思うよ
いちいち重複イベントチェックなんて面倒だ まとめてごっそり総入れ替えだ
リフレクションAPIやプロキシーAPIと同じでフレームワークとか作る人用か。使うだけの人には洋ナシ体型
phpよりjavascriptを勉強すべき、という理由を教えてください 私は頭が悪いので分かりやすく頼みます
PHPを作ってるところは一つ JavaScriptはMS、Google、Apple、Mozillaと大企業が力を注いている
javascriptも、もはやc++やその他言語を呼び出すだけのものになりつつある
>>402 なるほど、ありがとうございます
本当に死ぬ気で毎日勉強した場合、
理解できるようになるまでどれくらい掛かりますか
C++はもはやJavaScriptから呼び出すライブラリに成り下がったんだな
呼び出されることすらできなかった状態から成り上がったんやぞ。
(javascriptの実行速度が遅すぎて使えないからこういう方法が生まれたんだけど…)ボソッ
でファミコンエミュレータwasmにしてみたらjsより遅かったんでしょワロスwwwww
>>410 ブラウザ /JS版 /Wasm版
Chrome 63/4.36ms/5.68ms
Firefox 58/5.76ms/3.98ms
Safari 11/9.98ms/4.21ms
これ?要はchromeの実装がクソ雑魚だったってだけでしょ
firefoxとsafariはjs版を大きく超えてる
>>411 え?たったそんだけしか違わないの?msって
人間が知覚できるレベルじゃないじゃん
なんでchromeで遅くなってるの? chrome、前はjsの最適化で最速とか言ってたけど sandboxとかセキュリティ絡み?
>>411 ご覧くださいwww「javascriptの実行速度が 遅 す ぎ て 使 え な い」とまでイキッておいてコレwwwww
cとphpやpyの差みたいに10倍かそれ以上速くなるもんだとばっかり思ってた カスだな
コンパイルの手間かけてまでこの程度かよw 時間は有効に使えよ?みんなお前に付き合うほどヒマじゃねーんだw
これでセキュリティに穴が見つかろうものならまるで利用価値なしのゴミ屑扱いになってしまう
エロゲー廃人速報改 http://erogehaijin.com/ ・生活保護の不正受給カミングアウトして自慢 ・DMMからステマ脅迫工作で雇われる ・アフィで稼ぎまくり ・DLsiteはじめ各流通やメーカーへの脅迫 ・ステマ工作で金貰ってるのは言うに及ばず ・風俗通い・焼肉ざんまい エロゲー廃人速報改 http://erogehaijin.com/ ∧_∧ ピュー ( ^^ ) <これからもエロゲー廃人速報改(ナマポ不正受給)を応援して下さいね(^^)v =〔~∪ ̄ ̄〕 = ◎――◎ 👀 Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) >>405 どういうところに行きたいかによるから何とも…試しにこういうのでもやってみれば?
https://prog-8.com/languages/es6 wasm使うならもはやjs発である必要性ないと思うんだが js使いたいだけっていう 違うコンパイル言語開発しろって
>>402-405 プログラマーが、クソ言語のPHP を使う理由がない
Ruby on Rails などのフレームワークを使うけど、
画面は、Vue.js など、JavaScript(JS) になるので必須
初心者は、Ruby, JS を数年やればよい。
それ以外の言語は難しいから、数年後に始める
wasm, wasmってまあ良く聞くけど ・wasmの性能って「元の言語/コードの効率性」と「wasm形式にしてくれるコンパイラの(最適化)性能」と 「ブラウザの方のwasm動作環境の性能」の全部に左右されんだよね? ・「wasmはロード時間短縮にはなるけど動作速度は変わらない」って主張が今でもいくらか見られるけど jsで動かしてたものをc-wasmに変えれば動作速度は劇的に改善される可能性もまあ普通にあるよね? ・jsと違って低次元なメモリ管理できちゃうけど、 wasmが個々のwasmに割り当てられたメモリ領域以外を読み書きできちゃって セキュリティ的に大問題になる、ってことは生じ得ないの? activexで脆弱性突いてウィルス散布、みたいな現象はノーサンキューなんだけど
そもそもwasmっていうのは既存のサイト速くするものではないからな 既存のサイトは、サーバー側でバッチ処理をさせるという設計 クライアントでやることが少ないから、いくらwasmでクライアントが 速くなったとしても効果は殆ど無い。 ぶっちゃけるとwsamの主な用途はゲームだよ ゲームは反応速度が重要なのでバッチ処理でさせると成り立たない あとはせいぜいグラフィックソフトぐらいだろう
ユーザに気付かれないようにクライアントに高処理効率でマイニングさせるとかな
>>425 WASMはJSエンジンのバックエンドを流用できるよう設計されていて
現状ではGCもなくほぼasm.jsと同じだからasm.jsのバックエンドが使われてるよ
正確には最近はasm.jsの方がWASMにコンパイルされてWASMのバックエンドで動くんだけど
だから実行速度に関してはJSの限界というかasm.jsと同等になる
ただこれからSIMDが入ったりして、最適化も進めば
原理上ターゲットを絞りきれないネイティブコードより早くなることもあり得る
ただJSで動かしていたものをWASMにすれば早くなるかと言うとそういうものではない
asm.jsでも同じだが、JS-WASM間の関数のやり取りにはオーバーヘッドがあって、
インライン化などの相互最適化も効かないので
基本的に沢山呼び出される小さな関数をWASMにすると性能は悪化する
だから大きな処理を丸っとWASMにするという使い方が一番良い
それと別に低次元なメモリ管理はできない
WASMにとってのメモリとはただのArrayBufferだから
勿論サイドチャネル攻撃はいくらかできるがそれはもうWASMに限った話ではないので仕方がない
ネイティブより速くとか無理ゲーだろ C/C++で書いたアプリより速く計算しますってことだぞ
jsが超早くなった!! cよりも早く!! → c側のコードが糞過ぎただけでした chromeのjs処理が**より数段早くなった!! → chromeが決め打ち特化でチューンした部分だけでの話でした この手の誤った性能比較話を連想した
ブラウザが仮想マシンの代わりになるのはいいけど そのブラウザが乱立してる状況じゃ安定性は得られんよね 結局Windows OSみたいな独裁体制にしないと
>>430 全然無理じゃない
そこらのネイティブコードっていうのは多くの環境に対応するため最新のCPU機能を使いきれずコンパイルされてるから
ちょっとしっかりしたのだとスイッチ使ったりインストール時にコンパイルするけど
それでも実行の直前にコンパイルするのに原理的に勝りはしない
WASMならそれこそ10年前に書いたコードでも最新の機能を使って最新のコンパイラでコンパイルされる
まあ現実未だ可能性の話でしか無いが、中間コンパイルというものにはそういうメリットが昔からある
コンパイルするということは書いたコンテキストが失われるということだから
それに将来的にJITも働くようになればもっと最適化の可能性が広がる
無理ゲーだが原理的な可能性はあるということ
特に個人的にはメニーコアの時代がやってきてるのにOSが支援が弱い
パラレリズムとそのバランサをブラウザにやってもらいたい
>>431 決め打ちチューンは正当な最適化手段
可能性の高い方に賭けるというのはCPUでさえもやってること
前身のasm.jsなんて大分前からあるのに なんで変な誤解されるんだろ
全C使いと全Java使いの中央値の力量を持った者同士にアプリを作らせたら Java使いの方がパフォーマンスも安定性も使い勝手も良いもの作ることは間違いない でもAndroid開発でもそうだけど今どきCやC++を使うということは 「あえて」使ってるということだから、プログラマのレベルも高いし それで比較的劣るものができるはずがない
>>442 証明したければ自分が相当数の被験者集めて実験したら?
>>443 >>442 ではないが、なぜ442が441の論を証明しなければならんのだ?
俺はあくまで(経験上)間違いがないと言っただけで 証明が欲しいなら勝手に自分でやれってことだ
>>447 は無職の荒らしであって実はJavaもCも扱ったことがない
俺の経験上間違いない
赤の他人の正しさを「証明」する人はいないが、「確認」ならするかもしれない
MathJaxを使っています
$\begin{array}{cc}
a & b \\
c & d
\end{array}$
はちゃんと機能していますが、
$\begin{array}{cc}
a & b \\
\multicolumn{2}{c}{d}
\end{array}$
が機能しません。
なぜですか?
MathJaxでは\multicolumnは実装されていないんですか?
使っているMathJaxは
<script type="text/javascript"
src="
https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML" ;>
</script>
です。
>>449 俺は別に俺の言ってることが正しいから思えら黙って信じろとは言ってないんだが
>>450 もしかして「間違いない」って言葉尻に反応してるのか?
>>451 multicolumnの検索結果— MathJax 2.7 documentation -
https://docs.mathjax.org/en/latest/search.html?q=multicolumn& ;check_keywords=yes&area=default
>>452 命題が真である事を確認するのが「証明」
MathJaxでarray環境の入れ子って何重まで可能ですか?
自己解決したら解決方法まで書きましょう それが他の人の助けになるかも知れません
<INPUT type="textbox" name="test">などのフォームのnameから フォームがテキストボックスかセレクトボックスかチェックボックスかラジオボタンかを判別するにはどうすればいいんですか?
.checkedや.valueでundefinedでない値さがせば?
>>460 var elm = document.querySelector('[name="test"]');
console.log(elm.type==="text");
var elm = $('[name="test"]')[0]; console.log(elm.type==="text");
在宅プログラマーってエクセルできないと無理?エクセルから逃げてきたんだ
>>465 単に
>>463 に合わせただけ。あえて一つだけ処理しようとするとこうなるという例
もちろん
>>463 もそうだけど、こういう書き方は良くない。
name属性がtestのものがない場合や複数ある場合に対応できないからね
一つだけ処理する場合でも、動的なページで要素がない場合でもエラーにならない
$('[name="test"]').attr('text')
またこうすれば、0個から複数全てに対応できる
$('[name="test"]').each(function() {
console.log(this.type==="text");
})
でもそうすると
>>463 よりも長くなってしまう。
それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから
DOM APIで実現しているレベルにまで下げることで短いということを示しただけ
ちなみにjQueryでjQueryオブジェクトを外すのは普通
そもそも上のeachの中のthisはDOM要素なんだから
>>465 そういうこというと、こういう面倒くさい宗教論が始まるから控えてくれ
jQueryの話題が出ることが許せないんだ。 僕のスレのルールは僕が決めるんだ
jQueryは便利だけどprototype.jsとコンフリクトするのがなぁ…
nameだと複数あるものだしそもそも要素の特定をどうするのかって問題が有るでしょ もしidが'test'なら console.log(test.type==="text"); でOk
>>473 prototype.jsはもう使われてないし、
使われていたって同居できるので問題ない
>>474 条件付きでOKといわれてもな。
その条件を満たせないときはNGだろ
条件付きでOKと言いたいわけではない 今提示されてる条件の範囲では解答が出せないと言ってるんだよ
条件っつってnameで引っ掛けてelem.typeを見ましょうで終わりじゃん
俺はそう簡単な話とは思えないけどな 質問者が求めていそうなこと、実際にあり得る状態の組み合わせはかなり合って そもそもnameを見ることが不適切な場合もあるってことだ
そんなこと言い出したらjavascriptを使うのが適切じゃない場面も多々あるぞ
極論を言ってるのではなく極めて常識的な範囲での話のつもりはなんだが まあ多分これ以上話しても分かり会えないだろうからここで止めにしよう
>>480 お前が悪いのは、答えが出ない問題と言ってるくせに
答えが出ない問題だと言わずに
答えを出しているところなんだよ
最初からjavascriptなんて使わなけりゃよかったんだよ
>>469 >またこうすれば、0個から複数全てに対応できる
>でもそうすると
>>463 よりも長くなってしまう。
>それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから
>>463 は単数処理なのになぜ複数処理と比較したの
比較するなら
>>463 ベースの複数処理と
jQueryでの複数処理じゃないの
>>481 詭弁だな
もしこういう場合ならこうと答えを出すのは
答えが出せないと思ってることと矛盾しないし悪いことである訳がない
それにマシンじゃないんだからさ
人の主張に込められた思いというのはたった1つで
かならず0か1かハッキリできるものかのように話を進めるのは止めてくれない?
今回はただ君の頭が硬すぎて変な思い込みしちゃったってだけの事件
それ以上でも以下でもない
GitHubほど大きいところがjQueryなんて大味なライブラリ使っちゃ駄目だろ もっと軽量なものだけにして後は自分たちで最適化したものを開発するだけのメリットが有る
>>485 >? 比較するなら
>>463 ベースの複数処理と
>? jQueryでの複数処理じゃないの
ぷぷぷ
>>463 のどこが複数処理なのか
DOM APIも理解してないやつが、DOM APIすごいとか
言ってるんだよな。傑作だwww
>>487 > GitHubほど大きいところがjQueryなんて大味なライブラリ使っちゃ駄目だろ
だから大味なライブラリじゃないってことでは?
GitHubほどの大きい所がjQueryを使ってるんだから 信頼性は高いだろう どこの馬の骨ともわからんやつが、 大手が使っちゃダメなんだって叫んでも信用できない
jQueryって文字があると使ってる事になるってマ?
まずは
>>482 の記事読めよ。
そんなだからjQueryバカはバカにされるんだよ。
そんなだからGitHubに捨てられちゃうんだよ。
Vueってやつが都会じゃナウでヤングなハイカラらしいってばっちゃが言ってた
そういや、jQueryはこれからも使われ続けるって言っていたやつが
↓のスレたてたっけ
2017年 JavaScript★71.9%ものサイトがjQueryを利用 [無断転載禁止]©2ch.net
http://2chb.net/r/prog/1485008061/ 今どうなったかな? あと2ヶ月すればスレ立てて2年立つけど
https://w3techs.com/technologies/history_overview/javascript_library/all jQuery
72.9%
72.9%
73.0%
73.1%
73.2%
73.2%
73.4%
73.3%
73.2%
73.3%
73.3%
73.4%
73.3%
73.3%
やっと73.2%〜73.4%で安定したみたい。
GitHubがjQueryの使用をやめたのは分かったがなぜjQueryがバカにされるのか分からない
馬鹿にしている方もわかってないんだから 誰にもわからないだろうさw
2015年6月1日
jQueryは有害なのか
https://postd.cc/jquery-considered-harmful/ これが3年前か。ディスってたやつって今どんな気持ちなんだろう?
むこうでもいるいらねの喧嘩になってんじゃん ここと一緒だな
githubなんてオタクの相手だけしてりゃいいんだからjqueryも簡単に捨てられるわな githubはjqueryのことバカにはしてないけどな
jQueryディスるのにGitHubを持ち出してきた奴がバカだってことでよろしいでしょうか?
githubのようなシステム屋なら 技術者がたくさんいるからjQueryなくてもやれるんですよ! 社長。githubに勝てると思いますか? うちでは無理です。
JavaScript使ってますけどjQueryは使ってませんっていうのは 全世界で2.8%しかないのな
会社で一人でもjquery使ってたら会社丸ごとjqueryユーザ理論
どうやって一人がjQuery使ってるって調べるの? 調べる方法がない=そういう統計も出せるはずがない と思うけど?
>>488 ?
例えば
>>463 ベースなら、querySelectorAllでforなりmapなり書かれたものと
>>469 の$('[name="test"]').each云々を比較するならわかるが
複数処理の場合、単数処理である>463とは別の見地なんだから
>でもそうすると
>>463 よりも長くなってしまう。
みたいにコードの長さを気にしている意味がわからんというか違和感だらけなんだが。
そもそも
>>464 を
>>463 に合わせてかつ全部jQueryで書くと
var elm = $('[name="test"]:eq(0)');
console.log(elm.attr('type')==="text");
なわけだろ(てか
>>469 のコード間違ってね?5行目あたり'text'じゃなくtypeじゃないの)
>>463 が82文字で
上のコードが75文字だから
別に>短くかけるという俺の主張に反するから
には反してないよなぁ
一体何を気にして
>>464 を投稿したんだろうか
一つの処理だから:eq(0)すらいらなかったわ
>>513 >>513 > 例えば
>>463 ベースなら、querySelectorAllでforなりmapなり書かれたものと
あのさぁ、
>>463 にかいてあるquerySelectorを
しれっとquerySelectorAllに変えないでくれないかなぁ
気づかないとでも思ってんの?
ほんと、いつもお前のやり口は卑怯
>>514 jQueryオブジェクトから[0]で0番目のDOM要素が
取れるっていうのもjQueryの機能なんだわ。
jQueryではDOM要素も併用する
簡単に併用できるってことも特徴のひとつなわけ
>>513 jQueryで単数で処理するなら
var elm = $('[name="test"]')[0];
これになるわけよ。これ。単数
var elm = document.querySelector('[name="test"]'); console.log(elm.type==="text"); var type = $('[name="test"]').attr('type'); console.log(type==="text"); まあどうしてもっていうのなら、こう書いてもいいけどさ
>>514 > 一体何を気にして
>>464 を投稿したんだろうか
>>464 と全く同じ結果(要素が見つからないときにエラーになる)
をもたらす同等のコードのjQuery版
まあ普通はエラーになるのは良くないが、
それを許容すれば、さらに短くなるということ
>>518 >jQueryの機能なんだわ。
メンバ演算子がjQueryの機能・・・????
>>517 >気づかないとでも
?? 隠してないが?
>いつもお前のやり口
????
>>469 (1)
>>463 に合わせ単数
(2)jQueryで、かつ短く書きたい
(3)単数版$('[name="test"]').attr('type')、または
(4)複数対応版(略
(5)単数版
>>463 と比べ、コードを短くしたい
3→5はいいとして
4→5は別物コードなんだからコードの長さが違うのは当たり前じゃないの
>でもそうすると
でも、ってなんなの
同じものの比較 単数版DOM API(要素がない場合にエラーになる版) var elm = document.querySelector('[name="test"]'); console.log(elm.type==="text"); 単数版jQuery(要素がない場合にエラーになる版) var elm = $('[name="test"]')[0]; console.log(elm.type==="text");
単数版DOM API(要素がない場合にtypeがnullになる版) var elm = document.querySelector('[name="test"]'); var type = elm ? elm.type : null; console.log(type==="text"); 単数版jQuery(要素がない場合にtypeがnullになる版) var type = $('[name="test"]').attr('type'); console.log(type==="text");
>でもそうすると
>>463 よりも長くなってしまう。
あきらかにコードの長さに言及してるんだよなぁ・・
そして別物コード同士の比較が動機になっているという
流石に
>>525 見れば、同じものがどういうものか
理解したようだな
少なくともおれは別物コードの比較で長さを気にしてることに違和感を感じたことしか言ってないわ そしてまだ回答は得られていない
別物のコード比較ってなんのこと?
そんなことしてないけど
>>525-526 みて満足したなら帰れよ
最初から
>>469 の
>それはどんな場合でもjQueryの方が短くかけるという俺の主張に反するから
>またこうすれば、0個から複数全てに対応できる
>でも
の違和感について
>>524 しかきいてない
はぁ?理解力無いのか。同じことを実現するなら、 どんな場合でもjQueryの方が短くかけるんだよ
>>532 君だよ理解してないのは。
こちらは、短くかけないとは一言も言ってないぞ
typeとtextを間違う程度のレベルだからしょうが無いだろうが
短くかけると言ったのは俺だってーの お前の話なんか知らんわ
短く”かけない” な typeとtext間違えるは、聞き間違えるは どうしようもないなほんと
だから俺が短くかけると言って、 お前は何も言ってないんだろ? 何も言ってないなら、そこで終わりだろ
いや、強いて言えばおれは
>>463 の単数 と jquery単数版
も
>>463 の複数版 と jquery複数版
も短くかけると思ってる
おまえはなぜか
jquery複数版 と
>>463 の単数処理(あえて版とは言わない)
でコードの長さについて言及している
>>469 あれみて、jQueryの複数版とDOM APIの問題がある版(あえて単数版とは言わないw) で長さ比較してると思ってるのかw jQueryだと普通に書いたら、DOM APIのような問題あるコードは簡単に排除できるんだよ。 それじゃ比較にならないから、最初にDOM APIと問題があるコードにしたんだろ 同じもので比較するために
いや
>>469 のどこをどうみても
>でもそうすると
というレスの前に、
>一つだけ処理する場合でも と >またこうすれば 複数全て云々
が書かれている
それらに対して逆説として、>でもそうすると
が書かれており、その直後に>それは
と書かれていることから
>>469 が
単数処理である
>>463 のコードについて>長くなってしまう
というコードの長さについて触れているのは明確
決定的なのは、仮に、
複数版である>またこうすれば、 略 ="text"); })
の行を消去した場合、>一つだけ処理する場合でも云々
のコードは既に
>>463 より短いため、
>よりも長くなってしまう
の意味は通じなくなる
これらのことから、
>でもそうすると
>>463 よりも長くなってしまう。
とは>複数全てに対応できる云々の複数版コードの長さについて
言及していたものと思われる
俺はjQueryを使えばいかなるDOM操作も 同じことをDOM APIを使うよりも簡潔に書けるって 言ってるだけなのに、どうも関係ない所に反応するんだよなぁ 反論しないなら意味不明なこと言わなくていいのに
質問の主旨は
>>460 判別する手段を与えてあげればいいだけ
短くできるとかいう主張はまさに
まったくもって関係ないところ
そしてその答えがこれなわけ 464 名前:Name_Not_Found[sage] 投稿日:2018/10/13(土) 23:58:51.51 ID:??? var elm = $('[name="test"]')[0]; console.log(elm.type==="text"); これに対して関係ない質問をするなってこと
まとめると
>>464 が何の進展もない駄レスしただけの話
おれならわざわざjquery使って同じような回答するくらいなら
console.log( $('[name="test"]').map((i,_)=>_.type) );
判別手前だが、こういうのでいいじゃんと思うわ
そもそも
>>460 のレスから察するにコードすらいらないと思うわ
おそらくelement.typeで取得できるかどうかを知りたかったレベルだろうし
>>464 は
>>460 にレスしてるわけで何の問題もない
問題はその
>>464 に意味のない質問をしたやつ
>>548 お前なに自分でコード書いて、自分のコードが不要だっていってんの?
> おそらくelement.typeで取得できるかどうかを知りたかったレベルだろうし
それが
>>464 だろ? typeが取得できるかどうか
だれにレスしてるかもわからん馬鹿
>>464 質問者に安価つけてる
>>463 ここで解決
typeで取得できるのを示唆する目的なら
>>463 で終わってる話
なんだ。単に誰にレスしてるのかわからんかっただけかw
そう 解決してるのにわざわざ同じようなレスしちゃった馬鹿がいるんだよなぁ
jQueryを使った例ってだけですが? 自分の気に食わないレスだから叩いてるんだね。 これからも頑張らなきゃ(笑)
このスレ的にはjQueryの存在が害悪だな 必要のない諍いを生み出す
やっぱりいち早くjQuery使って回答してすでに答えが出てるから そんな冗長な例出すなって流れにしないとダメだな 質問が来てるのには気づいていたんだが ちょっと放置したのがまずかった
そう最初からjquery使ってれば
>>464 の馬鹿が
>>463 真似して馬鹿なコードも書くことがなかったのにな
わかった。今度からjQueryのコードが出るまで待つことにするよ
え、もしかして土曜からずっとやってんの お前ら働けよ…
jQueryだと短く書けるモン!とか言って $('[name="test"]')[0] みたいなコード出してくるのホンマ草www $が何千行の関数なんだよとww それゴマカシていいんだったらjQuery あろうがなかろうが俺ならもっと短く書けるぞ。 a() ほらよバーカw
a()が何も書かないで期待通り動いてくれればいいねw
$は何千行にも渡るコードなのにノーカンw aは何も書いてはいけないww jQueryだと短く書けるモン!君のオレオレルールにはかなわねぇwwwww
>>568 当たり前じゃね?
jQueryは汎用のコードですでに動くものがある。
それにたいしてa()は中身を書かないと使えないんだから。
問題を出す前にすでにコードが有るなら使えると言えるけど、
問題聞いてから作らないと使えないんじゃね
有る前でも後でも質問者にライブラリのインストールを強いるなら同じこと jQuery使おうぜっていうのはBabel使おうぜとかRust.js使おうぜって言ってるのと同じことってことが何故わからない 自分の好きなもの勧めるのは悪いことじゃないけれど それが普通とか勘違いするのは駄目
いや、そうじゃなくて ライブラリのインストールをするだけで終わるのと 自分でa()の中身を書かないのと行けないのじゃ ぜんぜん違うでしょと言う話だ
インストールするだけ(約100kB ASCII文字にして10万文字)
最終的な主張はそれか。 ま、いいだろ。ずいぶんしおらしくなった。
a()の中身を書けばa()だけで呼び出せる! って言っていたことについてはなかったコトにするつもり?
>>575 a()と書くのがスマートだからそっちにしろと言ってるわけじゃなく
下手をするとそれと同程度な行為に捉えられ得るという悪い見本として言ってるんだが
>>571 jQuery乱用解答へのの批判として
jQueryの読み込みscriptタグ貼ったら文字数の差が無くなるような例が多い中
全然「全然」違うってことはないよね
jQuery使ったら全然違うように書き手がだけが勘違いしてる事のほうが多いよね
もう一つ短い解答への批判として
別にa()の中身がライブラリ使ってないとは言ってないんだから
そうやって質問者にできるだけコードを読み書きする負担を与えず問題を解決するコードを提示するのって
質問者が自ら学ぶという目的のこのスレに於いて良くない行為だと思うんだよね
回答者はjQueryとか自分が好きなアピールしたい技術があって、
自分の思いつき解法を公開したくなったとしても
ぐっと我慢して質問者が自分で考えて解決できるようなヒント程度の提示にして
あとは質問者とよく話し合って導くことが大事だと思うんだよね
スマートだと思う解答をポーンと投げるだけ、そして後は批判合戦は違う
最後に、これはjQueryを使わない解答にケチが付いた流れに対して言ってる一般的なことで
その他の具体的な質問・回答は関係ないからね
原理主義者は何を言っても改宗しないので時間の無駄だよ
jQuery原理主義者は悪魔だと思う 親切な顔をして実際はポリフィルも自分で組めない jQueryの範囲でしか何もできない無能を作り出して 自分より優秀な人材が育たないようにしてる悪魔
jQueryが原理主義になるわけがないだろう だいたいこれDOM操作ライブラリやで?
jQueryの素晴らしさの一つは、セレクタを自分で拡張できるところだと思う DOM APIではできないことができる。
原理主義ってのは人の考え方のことよ スレに張り付いて3連続レスもできる気持ち悪さのことよ
原理主義の原理の意味もわかってないのか 原理主義と言いながら、ただの主義の話をしている
とにかくjQueryがいいってんなら原理主義だろ 違うならたまにはjQuery以外の話してみろよ
ごめん、原理主義は意味が違うらしいな 絶対主義だな
jQueryがいいと言ってるが、jQueryですべてできるなんて思ってない。 jQueryはDOM操作ライブラリなんだから、例えば日付の計算にjQueryは使えない つまり、jQueryを使ってる人はjQuery以外も使ってるということ
私たち日本人の、日本国憲法を改正しましょう。 総ム省の、『憲法改正國民投票法』、でググって みてください。拡散も含め、お願い致します。
>>581 もちろん俺の希望だよ
俺が俺の意見以外言えるはずがないじゃないか
何当たり前なこと言ってるの?
>>581 だって希望であってほしいという君の希望だろう?
「ストローおじさん」って知ってる? 昔、映画館とかに置いてあったタン壺(みんながカ〜ッペ!とタンを吐く壺)に ストロー突っ込んで全部飲み干すらしいよ。ゴックンゴックン! ストローが透明だから飲んでるのが丸見え! たまにハナクソが詰まるらしいけど、思いっきり吸って食べるらしい。スッポン! ちなみにストローは絶対に洗わない方針だそうです。 「どんぶりおじさん」もいるようです。 タン壺を熱いご飯にぶっかけてジュルジュル流しこむように食べるそうです。 ごはんの上にハナクソとか鼻毛が丸見え! 汁はご飯の隙間を通って下に溜まるけど、全部飲み干すそうです。ゴクゴク!
>>589 > もちろん俺の希望だよ
> 俺が俺の意見以外言えるはずがないじゃないか
意見と希望は違う
意見を言ったんじゃなくて希望を言ったんだね。
そう書いているもんね
>
>>581 だって希望であってほしいという君の希望だろう?
それは希望ではなくて指摘。その指摘に対して、
あんたはそうだと答えた。
指摘も希望も意見も大した違いはないでしょ 君が希望と言うんなら希望で良いよ お、こいつ、自分の発言を希望と認めたな!!! で、だからどうなるのって感じ
> 指摘も希望も意見も大した違いはないでしょ それもお前の希望だなw ↑これは指摘。ぜんぜん違う
jsの前に日本語勉強しなおした方がいいんじゃねえの
jQuery君は希望的観測という言葉を知ってるのかな
希望、指摘、意見に続いて、 今度は新たに希望的観測が増えました。 用語を増やして何がしたいんだろう?
>>593 だから俺のが希望でお前のが指摘でいいけど
それで何がどうなるのかって話だよ
ん? jQueryユーザーを根拠なく貶めるのが目的だったんじゃないのか? jQueryユーザーとはこういうものですーという書き込みが単なる希望だと自白した。 つまり、jQueryユーザーとはこういうものであってほしいんです。という書き込みだった。 それで何がどうなるかって? jQueryユーザーを貶めることに失敗したってことだろう
jQuery君の目的はjQueryのメリットを唱えて支持者を増やすのが目的でしょ
>>598 jQueryユーザーを貶める?
なにトチ狂った意地の悪いこと言い出してるんだ?
>>579 に書いたように、俺は俺の思ったことを素直にそのまま書いただけ
それ以上でも以下でもない
それにjQueryユーザーがとは言ってないし、勝手な被害妄想して変なケチ付けんな
君たちどっか他のところ行ってくれませんかね…わざとなんだろうけど
喧嘩してるように見せかけて 両者とも何か共通の目的のためにやっているのだとしたら…
jQuery厨は相変わらずうざいな。いよいよ余裕なくなってきたかw
> 俺は俺の思ったことを 事実ではなくて、希望を書いたらしいなw
だから「思う」って書いてるでしょ? しつこいね君は そもそも悪魔が事実だったら大事じゃん 最近勝手に煽られたと思い込む煽り耐性マイナスのやつ多いね 短期で余裕がないっつうか
そっちじゃねーよw > 親切な顔をして実際はポリフィルも自分で組めない > jQueryの範囲でしか何もできない無能を作り出して > 自分より優秀な人材が育たないようにしてる ↑これが事実ではなく、お前の希望だっていってんの
お前らスレ違い ここは品評スレじゃなくて、質問用スレ 回答者の価値観を問うところではない いい加減に成仏しろよ
無理です jQuery君は数年前からこのスレを見張っており生き甲斐なのです
.cssのファイル内の値を動的にできないでしょうか HTML側はjsもphpも使用不可なのですが、 cssファイルは別サーバーに置ける為、使用可能です
具体的には、 タイマーで、ある特定の期間だけcssファイルで指定しているheightの値が変わるように仕組みを作りたいんです。 バッチファイル+タスクスケジューラでアップロードする方が現実的でしょうか?
>>611 サーバ側でクロンでも書けばいいじゃない
>>610 jsも別サーバーに置けないの?
っいうかなんだってそんなことに?
>>612 それが一般的な方法ぽいですね・・
>>613 jsはcssと同じ外部サーバーに置けます。
ECモールだとこんなのばっかりですよ
>>614 > それが一般的な方法ぽいですね・・
いやいや、一般的ではないよ。
特定の期間以外はCSSファイル見てもわからないようにしたいっていうのなら話は違うが
cssファイルを動的に生成するのは一般的にはアンチパターンだよ
(ついでにいうとJavaScriptファイルも動的に生成しないほうが良い
必要ならばJSONデータを動的に生成してしようする)
>>611 > タイマーで、ある特定の期間だけcssファイルで指定しているheightの値が変わるように仕組みを作りたいんです。
「ある期間」っていうのが午前、午後やタイムセール、キャンペーン期間中みたいに
特定の言葉で表せるのであれば、以下のようなCSSを書く
div { height: 100px }
.sale div { height: 200px }
HTMLの<html>や<body>なんかのclassで現在の期間を表現する
例えば <body class=""> or <body class="sale"> みたいな感じ
ここまではCSSの範疇だからJavaScriptしらない人でも画面デザインだけ担当できる。
でJavaScriptで特定の期間を判断して<html>や<body>のclassを書き換える
用途は違うがModernizr (
https://modernizr.com/ ) でも用いられているテクニック
見ての通りJavaScriptもCSSも静的で作れる
これが一般的な方法
>>606 だから希望でも何でも良いよ
俺は俺の思ってることを素直に書いてるだけだから
君がどう捉えたかという話はどうでもいい
好きにして
俺は事実を素直に書いてるだけだから
>>579 が間違いだから、間違いって書いただけ
>>615 なるほど。
>でJavaScriptで特定の期間を判断して<html>や<body>のclassを書き換える
しかし、セキュリティ的な問題か何かしりませんが
html側のサーバーにはjsを効かせる事はできません。
cssのみ可能なのと、そのcssの外部サーバーにはjsを置く事はできます。
>>618 その外部jsをhtml側から読むことはできない設定(?)なんだよね?
>>617 うーん、最初からそれだけでいいじゃん
君が突っ込んだ色々な不思議ポイントは結局全部君の思い込みだったわけだしね
恥ずかしい人
>>618 > しかし、セキュリティ的な問題か何かしりませんが
> html側のサーバーにはjsを効かせる事はできません。
>>614 で
> jsはcssと同じ外部サーバーに置けます。
ってかいたよな?
jsが使えないのに、わざわざ置けますって言ったのか?
そりゃ置くだけなら置けるだろうけど、動かないんじゃ
置いたって意味ないじゃん
>>620 あんたのレスが「思い込み」と指摘されたからって
相手にも同じ言葉を無理やり使おうとしなくていいよw
日本語がおかしくなってる
意見も希望も主観には変わらないわけで、その定義に拘って議論するのは馬鹿馬鹿しい
>>619 はいそうです
>>621 なるほど、phpファイルのheaderでcssファイルとして認識させるようにすればいいんですね
>>622 はいそうです。直接jsファイルは読み込めません。すみません。
>>625 もしくは.htaccessとかで-.cssが呼ばれた時-.phpを呼ぶようにcssを置くサーバーで偽装する
>>621 こんだけ限定された条件だと
これに一票かなあ
初心者です。 if (!args.length) { 処理 } の条件を日本語訳してもらえませんか? argsは変数なんですが、lengthは変数じゃないです。 変数argsの長さじゃなかったら? でしょうか。。おねがいします
>>628 否定 javascript
か
falsy javascript
あたりで検索してみるとか
lengthは長さを数値で返す 数値をそのまま条件にすると 0は否、0以外は正。 それを!で逆転してるので 長さが0であれば、の意。 ※argsが存在して配列や文字列などlengthメソッドが働く前提
ありがとうございます!よくわかりました。これで先に進めそうです。またお願いします
適当に書くときはいいけど 慣れちゃうとちょっと怖いよね args.lengthがundefinedでもnullでもfalseでも通っちゃうし
>>633 それが排列であることを確定させているなら、問題はないかと
NodeRedって流行ってるの? 知識ない自分の力量不足だけど使いにくい…
>>636 ハイパーカードを思い出す
これでできる範囲のことであれば楽できるね
ってやーつだと思ってる
>>638 簡単なUI作ったりするのは便利なんだけどDBとのやりとりとかExcelに出力したりさせようとしたら訳わからなくなって詰まった
こういうのをNodeRedでやろうとするのが間違ってるのかなぁと思ったり
>>631 lengthはプロパティでもメソッドでもなくプロパティアクセス時にArrayの内部プロキシによって特別に扱われる名前
アクセサメソッドにも近い
Pythonを学習中です。 Webの事は全くの素人です。 スクレイピングや可視化する際、CSS XPath JavaScriptなどの事が分からなくて行き詰まってしまいました。 PythonとJavaScriptではじめるデータビジュアライゼーションという本で詰まりました。 知人にJavaScript第5版という古い本をもらいましたが、言語仕様が延々と書いてあるような感じで、自分には早過ぎました。 CSS、XPath、JavaScriptこの辺りを体系的に学べるおすすめの本あったら教えて欲しいです。
>>640 今でも読まれるたびに数えてんですかね?
うろ覚えだが呼ばれるたびに数えてたことはなかっただろう 更新のたびに内部プロパティを更新してそれを読み出すような仕組みじゃなかった?
>>641 HTML, CSS, JavaScript は、初心者用の本を読む。
CSS セレクターは、jQuery で学ぶ
または、CSS セレクター・XPath は、入門用サイトを見る
CSSセレクターは、jQueryの本に書いてあるけど、
XPathは、どの本にも書いていないから、入門用ウェブサイトを見る
XPathは重要度が低いから、無視してもよい。
CSSセレクターを使う方が、読みやすい
プログラミングは体系的には学べない 分からなければ分かるようにならない でもそこで諦めたらそこまで 「言語仕様が延々と書いてあるような感じ」と思ったのなら 分かったのが0ということではないはず 最悪書いてある日本語は読めるのだから、1万分の1は分かるだろう なら5万回分読めばいい そしたら1-(1-0.0001)**50000で0.9932637373893968で99%理解できる 分からなくてもほんの少しは分かるまで血を吐きながら無理やり頑張る その繰り返しの修行で覚えるのがプログラミング
俺もXPathは後回しでいい…ってかやらなくてもいいと思う。 昔はCSSセレクタより表現力高いからとか言われてたがよくも悪くもXML全般に使われる汎用仕様だからな。 HTML/CSS仕様に寄り添い、技術要素疑似セレクタも使えて素のJavascriptやjQueryなどでも手厚くサポートされているCSSセレクタ覚えたらWeb系技術以外扱わないならXPathなんて正直いつ使うんだっていう。 Javaとかやるなら別だけど… あれか、Pythonと一緒にやろうとしたからPythonライブラリの都合に引っ張られちゃったんだな!
>>647 書いてて恥ずかしくならない?
読んでて赤面したわw
どうもありがとうございます
結果的にPythonスレとマルチポストになってしまっていたらごめんなさい。
>>646 PythonスレのRubyの方ですかね?
その節はありがとうございます。
初心者用というのはHTML5の初心者という事ですよね?
よく分かる〇〇とかいちばんやさしい〇〇だとか過去に読んだことあるんですが、その手の本ってパソコンそのものの初心者が対象なのか、
〇〇のコードを使ったらハンバーガーメニューが出せますとか、このコードを使ったらこういうレイアウトに出来ます。今流行りのスマホPC両対応のレスポシブなんちゃらのカッコいいホームページを作ろう、みたいな。
そういう本って理屈は置いておいて、カッコよさげなホームページが作れた。よかったね、っていう感じの本だから、
それぞれのコードの中身や用語の解説じゃないから結局提示されたcssのコピペだけで終わり訳もわからず応用が利かず結局何も身に付かなかったです。
オライリーからPythonの本が大量に出てるけどそんな感じの本があればいいんですが。
>>647 やっぱ甘えてますね、自分。
辛いけど、出来るようになりたいから読むしかないのかぁ。
>>648 Webサイト作りそのものには全く感心は無いんですが、Pythonを学ぶうちに作ったデータの可視化をWebでやりたくなりました。
Pythonを学んだら今までは怖かったJavaScriptも基本的な文法はPythonで書いた場合を考えながらやればJavaScriptでもSwiftでもObjective-Cも何となく理解出来るようになりました。
JavaScriptもWeb用のナニカじゃなくて、これもPythonと同じプログラム言語だと分かったのでおもしろくなってきたました。
XMLを弄るにもXPathが分かれば簡単に弄れそうなんですが、XPathそのものが難しい。
Chromeの開発者ツールの使い方も分からないままだし。
>>649 けど、正論だと思いました。
オライリーからHTML5という本が出てますけれど、7年以上前の本だからやめておいた方がいいでしょうか?
>>641 で読んでる本の最初のページにこんなイラストが載ってました。
まさに自分もこんな認識です。
>>651 セレクタを覚えるなら、jQueryよりCSSを覚えた方が良い
jQuery拡張記法を覚えても何にもならん
https://triple-underscore.github.io/selectors4-ja.html XPathは今でもCSSセレクタ以上の事が出来るが、日本語の資料は多くないので、初心者向きではないだろうな
>>645 Array(10).length = 1; // これはsetterでは?
getter, setterという場合、 Array(10).getLength(); Array(10).setLength(5); などのようにメソッドの形を取る。 Array(10).length = 1; は上のsetLengthとやることは同じだが、(実装はどうあれ)プロパティ形式を取っているのでsetterとは呼ばない。 なお説明に使っただけでArrayにgetLength、setLengthとあったメソッドは無い。
TypedArrayのlengthはgetter,setterだが Arrayのlengthは内部プロキシが特別に扱っている名前というだけ
>>656 Atrayのlengthはset/getが使えなかったときからある。だから
>>655 漏れが、XPath を使うのは、CSS セレクターでできない場合だけ。 例えば、5ch の書き込み内のa タグを抜き出すなら、 このCSSセレクターでできるけど、 div.thread > div.post > div.message > span > a a を含む、post_node だけを抜き出す場合、 div.message の子孫で、aタグを含むものがある場合、 そのaタグの祖先のdiv.post を抜き出す。 (自分の処理では、div.postを主体に処理している場合) CSSセレクターでは、div.message div.post a descendant は子孫、ancestor は祖先。 post_nodes = doc.xpath "//div[@class='thread']/div[@class='post']/div[@class='message']/descendant::a/ancestor::div[@class='post']" 子孫に何々要素がある場合の、その祖先を求めるとか、 条件が複雑で、CSSセレクターでは表せない場合だけ、XPathを使う jQueryのCSSセレクター一覧表を見て、それでできなければ、XPathを使う
:has擬似クラスが仕様に入ったからXPathの出番はますます無くなる
jQueryは:hasに独自で対応しているから、JavaScriptでは もうXPathの出番はなくなってるね。
XPathってJavaScript以外で使えたっけ? jQueryで:hasが使えるならもういらないような
>>662 なに言ってんだ各言語にライブラリ出てるよXPathくらい…
>>657 その理屈はおかしい
lengthはProxyがない時代からある
漏れは、Ruby のNokogiri で、XPath, CSS セレクターを使っている
Proxy APIの話ではなくプロパティが設定されるときに働く [[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを 分かりやすく内部プロキシと言い換えただけなのにね
>>666-658 同じ言葉をそっくり
>>657 に返したいね
> Atrayのlengthはset/getが使えなかったときからある。だから
>>655 setがなくても、setterとして機能があればsetterだろう
lengthプロパティ代入時に処理が働くのだから、setter以外にそれを実現する方法はない
ついでにいうと、
>>654 もおかしい
プロパティだからsetterじゃない、とかどの言語の話だ?
>>668 >>653 からどうしてその話が出てくるんだ?
おまえのいってるのは、
Array(1)[3] = 1;
だろう
Proxyでのハンドリングもsetterと言うのならArray#lengthもsetterと呼んでいいと思うけど 普通JSでsetterって言ったらプロパティディスクリプタがアクセサタイプでsetにメソッドが入ってる状態を言うと思うけどな
>>671 いや、数値文字列と、lengthの2種類ともを特別に扱ってるんだよ
MDNはprototype経由せずDateやらArray やらから直接生やされたメソッドを静的なメソッドと表現したりクラスベースの人に配慮した柔軟な記述見かけるよね。
>>674 ,675
その疑問は全てここまでに書かれてるよ
もう一度読み直してみて
>>677 > [[DefineOwnProperty]]内部メソッドをオーバーロードしてlengthを書き換えてることを
> 分かりやすく内部プロキシと言い換えただけなのにね
これがProxyの条件か?
ただの内部 プロパティを書き換えるだけでProxy扱い
しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな
> しかも、Array(19).length = 1; 時に [[DefineOwnProperty]] が書き換わらんし、到底理解できんな 訂正する Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる しかし、他所のプロパティ [[DefineOwnProperty]] が書き換わるだけで、lengthプロパティはProxyの動きをしていない
こういう事かな const a = []; a[0] = 1; // 668「a[0] はProxyなプロパティです」→OK a.length = 0; // 668「a[0]を書き換えるa.lengthもProxyなプロパティです」→ん? この場合、a.lengthを書き換えるa.fooを定義したら、a.fooもProxyになる Proxyが感染していく
>>679 大きな勘違いしてるね、Arrayのインスタンスオブジェクトはlengthと言う通常のプロパティを持っているが
それと同時に数値文字列と"length"という文字列のプロパティ設定に関して特別な振る舞いをするんだよ
つまりProxyのようなのはArrayのインスタンスの事であって、
そのプロキシは"length"プロパティアクセスがあると、間接的にlengthプロパティを設定して配列の要素を調整すると言う動作をするんだよ
ただし、setterとは違うという話
ようそこまで内部動作把握してるな こういう人はそんなの当然って言うんだけど大半の人はそんなの無理
アニメスレに沸く小説板から来た設定厨を思い出しました。
>>682 勘違いなどしていない
setterのトラップで内部プロパティが書き換わるだけ
setter以外のトラップが必要なら、それを示してくれ
>>681 やっとわかった
ラッパーって言いたいのかw
>>686 誰もわかってくれないからって自己レスするな
>>668 は確かにwrapperって感じだが、wrapperとsetterは両立出来るんだよなあ
ぶっちゃけ、
>>653 がsetterで実装できなくて、Proxyでなければ実装できない機能って何なの?
>>685 勘違いというか、全く分かっていなかったんだね
実際Arrayオブジェクトのlengthはsetterではないということが話の肝
Arrayのlengthは普通のオブジェクト固有のプロパティだ
Object.getOwnPropertyDescriptor( Array(1), 'length' )
// {value: 1, writable: true, enumerable: false, configurable: false}
参考までにTypedArrayのlengthは共通親クラスから継承したgetterだ
Object.getOwnPropertyDescriptor( Uint8Array.__proto__.prototype, 'length' )
// {get: ƒ, set: undefined, enumerable: false, configurable: true}
ならArrayのlengthへ値を代入したときの振る舞いなどはどう説明するのかといえば、
Arrayオブジェクトのプロパティ設定のトラップでlengthを特別扱いしてるということだ
そしてそれはもちろんsetterとは違う
言い換えればArrayオブジェクトはそのただ1点を除いて普通のオブジェクトと何にも変わらない
[ 'a', 'b', 'c' ]は{ '0':'a', '1': 'b', '2': 'c', 'length': 3 } と全く違いはない
ただたった一つ、[[DefineOwnProperty]]内部メソッドの振る舞いが違う、
プロパティアクセス時に'length'と数字プロパティへの設定を特別に監視するということだけが
ArrayをArrayたらしめてる理屈
>>679 のこの行がそもそもだいぶトンチンカン
>>Array(19)[1] 以降が削除されるので、[[DefineOwnProperty]] は確かに書き換わる
[[DefineOwnProperty]]は内部「関数」なのだから、書き換わったりしない、呼ばれる対象
そしてlength要素に設定時に適宜配列のプロパティが消されるから呼ばれるのではなくて、
length要素設定時にこれが呼ばれたときに間接的にプロパティを消してる、因果が逆
因みにプロパティが消されるときに呼ばれるのは[[Delete]]
[[DefineOwnProperty]] はこの場合関わらない
そもそも、length に設定するのが、おかしい。 意味不明のソースコード 普通は参照しかしない
new Int8Array([1,2,3]).__lookupGetter__('length') //=> f length() { [native code] } [1,2,3].__lookupGetter__('length') //=> undefined ほんまやTypedArrayのlengthにはGetter設定されてるけどArrayは無い
だからtypeof new Arrayは'object'なんだよな そこしか違いがないから
大雑把にはわかっていたつもりだったけど 詳しい説明ありがたいわ
jQueryの.nextUntil() をJavaScriptで書くのは難しいでしょうか?
>>700 難しいかどうかはその人のスキルによるとしか。。。
困難かという意味ではそうでもないかも parentNodeのChildNodesを、その要素以降順に見ていくだけだから ていうか、jQueryだってJSで書かれているわけだしね
質問を変えて、jQueryの.nextUntil()をDOM API以外のライブラリを使わずに 10行以内(セミコロン不使用、横80文字まで、普段やらない書き方を使うのなし)で 作れるでしょうか?だったらどう?
まず親要素のquerySelectorAllで セレクタにマッチする小要素を全部取り出しておく 目的の要素のnextSiblingが、上のマッチした要素群に含まれれば当たり なければ次のnextSiblingを見る なんとか80字でいけるか?
全部取り出しておいてfilterしてもいいし、 ただ単に次の要素を見ていくだけのイテレータでもいい 5行くらいの関数で書けるんじゃない?
function nextUntil(el, selector){
const result = [];
while(el = el.nextElementSibling){
if(selector && el.matches(selector)){
break;
}
result.push(el);
}
return result;
}
こんな感じか。matchesはIEで動かんからポリフィルを追加して
https://developer.mozilla.org/ja/docs/Web/API/Element/matches はー matchesなんてあったんだな 勉強になる
function * nextUntil ( el, sel ) { while ( el = el.nextElementSibling && ! el.matches( sel) )yield el }
>>707 上手く行きました。
凄いですね、こんなのを書けるなんて。
>>710 私にはレベルが高すぎて付いて行けません。
結果の取り出し方を教えて下さい。
>>710 は単なる技術マウントだから無視してよい。
技術マウントだからと言って無視するか、 技術を勉強するか どちらを取るかね?
>>711 >>710 は代入演算子と論理積演算子の優先順位を間違えているから結果がバグっている。
修正してオプションのfilter足してjqueryのnextUntilの
http://js.studio-kingdom.com/jquery/traversing/next_until のデモと同じことする使い方を
https://codepen.io/anon/pen/VVwdQB に上げた。
しかし結果を配列でまとめて取り出す使い方しかしないなら
https://codepen.io/anon/pen/YRzvWa みたいになりわざわざジェネレータ使う意味ないしこんなことするなら
>>707 のほうがいいな。
>>715 =>
...
yield
など知らない文法ですが、テストしたら動きました。
大変参考になりました。このコードが理解出来るように勉強します。
ところで707 nextUntilを応用してnextAllを作ってみたのですが、これで良いでしょうか?
function nextAll(el, selector) {
const result = [];
while (el = el.nextElementSibling) {
result.push(el);
}
return result;
}
一つ質問ですが、const指定しているresult変数に値を代入しても良いのですか?
定数なら変更してはいけないような印象を受けるのですが。
>>719 良く分からないのですが、
C言語などならconst指定があると値を代入出来ませんよね。
JavaScriptのconstはそうでは無いのですか?
>>720 result = 1;
で正しくエラーになる
>>721 ではJavaScriptにはCやC++のconstに相当するものはありますか?
つまり一切変更出来ない定数。
CやC+に一切変更ができないconstなんかありません
chromeだけど、dataスキームで新しいタグ開いてhtmlを表示させたいんだけど data:text/html;云々をwindow.openするとabout:blankになってしまうたすけて (data:text/html;云々を直接urlボックスにいれて移動、は表示される)
>>722 一切変更出来ないとは?
変更不可対象を明確にしろ
constは名前に対して働くもので値に対して働くものではない
>>722 そもそもがcのconst勘違いしてないか。
プリミディブ値ならjsのconstでも同じように使えるし、
cではjsのconst OBJ = {a: 1, b: {c: 2}};みたいにオブジェクト直接入れるみたいなことはそもそも出来ない。
ポインタ使うにしたってOBJ.aやOBJ.b.cなどメンバーを書き換えられてしまうことは同じ。
まあやりたいことは分かる…気がする…
以下にdeepFreezeの実装例出てるから参考にしてみたら?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze こういうことでしょ?違う?
https://codepen.io/anon/pen/EQxJKB >>725 いろんなサイトでconsole開いて実行したので、jsfiddleのコードに書いて実行してしまうと若干挙動が違う気がするので
具体的には
window.open('data:text/html;charset=utf-8,'+encodeURIComponent('<!DOCTYPE html><html lang="en"><body>hoge</body></html>'));
を適当なサイトでコンソール開いて実行
一応jsfiddleでもやってみたけどポップアップ禁止みたいなのが出てきた
https://jsfiddle.net/pLdojb9w/ ポップアップ許可するとabout:blank
ちなみに用途としては とあるサイトの画像urlだけをスクレイピングして htmlで新しいタブに<img src=>みたいに単純表示したいだけ 今までconsoleで<img src="">を出力してコピペ→テキストエディタでhtmlで新規保存 ブラウザで開いてウェブ丸ごと保存ってやってたのでめんどくさくなった (別のスクリプトやアプリで画像urlだけ抽出してダウンロードしたらいいのではと思うし 都合が良いところはそれでやってるけど)
あと、document.writeで上書き版もしたけど ajaxでページロードしてる感じのとこだと続きの画像表示したいときに不便だった
dataURI直で新規タブ開いて中身反映されないのはセキュリティ理由によるもの blob→objectURL化が必要 const blob = new Blob([ '<!DOCTYPE html><html lang="en"><body>hoge</body></html>' ], { type: 'text/html' }); const url = URL.createObjectURL(blob); window.open(url);
>>733 で、できたー!
画像も問題なく表示され
ありがとうございました
>>728 解説ありがとうございました。
JSのオブジェクトの挙動が理解出来ました。
値は変更出来ないけれど、メンバを変更する事は
出来るんですね。
漏れは、Ruby で、selenium webdriver, Nokogiri を使って、 5ch の書き込み内から、画像リンクだけを取り出して、 Nokogiri で、img タグを構築して、そのsrc 属性に設定して表示している ブラウザに、5ch のスレを表示して、結果はそれとは異なる、新しいタブに表示している driver.execute_script "window.open()" # 新しいタブを開く driver.switch_to.window ( driver.window_handles.last ) # 新しいタブへ移動する ERB みたいな、HTML 内にRuby プログラムを書ける、 埋め込みテンプレートを使えば、もっと簡単にできるのだろうけど
jsならコンソールやブックマークレットでできることをそんな大がかりにしてバカみたい。 で、何をやってるかと思えばjs呼び出してるだけwww そりゃそうだよなruうんこbyなんてブラウザで動かないもんなwwwww
>>738 > そりゃそうだよなruうんこbyなんてブラウザで動かないもんなwwwww
いつの時代の話してるんだよwww
Ruby2.0はChromeブラウザでネイティブに動くようになりそう
http://hoshi.air-nifty.com/diary/2012/05/ruby20chrome-d6.html echo.jsより容量小さい画像遅延読み込みのスクリプトってあんの?
>>735 変数名と紐付いている値を更新することはできないというだけ
その値自体にはなんの制約もない
RubyみたいなポンコツエンジンをNative Clientで走らせるとか愚の骨頂の考えだった WasmにコンパイルしてJSエンジン上で走らせる方がよっぽどパフォーマンス出る可能性がある
jQueryだと $(window).on('resize', data, func); のようにdataを与える事が出来ますよね。 それを window.addEventListener('resize', data, func); とは出来ませんが、どうやれば同じようにdataをfuncにパス出来ますか?
>>745 レスありがとうございました。
>クロージャで
なるほど。
では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか?
えっ、なにが疑問なのかよく分かんない… function chinko(data) { return 'I love ' + data; } function manko(func, data) { if (!data) data = func.name; console.log(func(data)); } let data = 'unko'; manko(chinko); //=> "I love chinko" manko(chinko, data); //=> "I love unko"
>>748 > えっ、なにが疑問なのかよく分かんない…
なんでクロージャーがでてきたのか考えてみたら?
回答する側がアホの事例
>>744 みたいな疑問が浮かぶ人はjQueryのソースを読んでみるべきだと思う
勉強になるぞ
>>751 お前が、
>>748 のコードにクロージャーを取り入れて
書き直したら教えげあげようw
こう? function chinko(data) { return function() { return 'I love ' + data; } } function manko(func) { console.log(func()); } let data = 'unko'; manko(chinko(data)); //=> "I love unko"
もういいから教えてよ。 コードで示してくれりゃ分かるのにめんどくさい。 質問に回答するより煙に巻いて指示するのが好きなの?
質問スレに何しに来てんだよ…… こう? function chinko(data) { return function() { return 'I love ' + data; } } function manko(func, data) { if (!data) data = func.name; console.log(func(data)()); } let data = 'unko'; manko(chinko); //=> "I love chinko" manko(chinko, data); //=> "I love unko"
var clos = function closure( data ) { return function( ) { return 'I love ' + data; } } function caller( func ) { console.log( func() ); } var data = 'cat'; caller( clos( data ) ); //=> "I love cat"
>>759 >>753 となにが違うの?「違う」って言われたんだけど
>>754 >>755
>>744 より > では、jQueryの場合、スコープが異なるfuncになぜデータを渡せるんですか? > > jQueryだと > $(window).on('resize', data, func); > のようにdataを与える事が出来ますよね。 ↑ この場合、jQueryのfuncは以下のように定義しますよね? function func(event, data) { console.log('I love' + data); } でも、>>758 を見ると、以下のような書き方でjQueryの場合と全然違います。 何故でしょうか?jQueryはどんなマジックを使っているのでしょうか?疑問です。 function chinko(data) { return function() { console.log('I love ' + data); } } -------------------------- >>748 わかったか? お前は何が疑問なのかよくわからないって言ったが、 これが疑問なんだよ。 >>756 ここは自ら学ぶスレだから
モロ回答はしない
そういうのは知恵袋なり他にたくさんある
ここは2chだからな
>>744 .on() が内部でコールバック関数を渡す前にクロージャでラップしてるから
ちなみに、
>>761 はjQueryの動きになってない上、コールバック関数を渡す実装もしていない無視して良い
http://api.jquery.com/on/ 最も、addEventListenerなら、handleEvent付きのオブジェクトを指定する方がスマートだと思うが
function hoge(){ /*この中に重複作業をまとめたいときがある*/ } 例えば function hoge(x,y){ function sum10(x) { return x+10; } return [sum10(x),sum10(y)]; } このsum10は汎用なのでhogeの外にsum10を書いても良いような気がしますが 仮に、hogeだけでしか使わないような関数でも 外に出しておいた方が良いのでしょうか? 今まで、単に見た目の問題なのかな?と思い、適当にやっていたのですが
訂正 >hogeだけでしか >hogeの中だけでしか
>>765 一回しか使うかどうかで、関数にするかどうかを決めるんじゃない。
また同じ処理だからって言うだけで、関数にするのでもない
長いコードがあったとき、読むのが大変になるから、
その中の一部に適切な名前をつけて関数にすることで、名前だけから
やってることがわかるから中を読まなくていい。
読まなくていいから長いコードを読むのが楽になった!
という目的のために、関数にするんだよ
1回しか使わなくても、長いコードを読むのが楽になるなら
関数にするべきだし、関数にしたからと言って、長いコードを読む時に
関数の中まで見ないとやってることがわからないなら、
それは関数にするやり方間違ってる
読むべきコードを減らすのが関数にする目的
だから独自で作るよりも既存のライブラリを使ったほうが良いという話にもつながる
独自で作ると少なくとも一回は中を読まないといけない。
既存のライブラリは、たいてい中を読まないで使ってるだろう?
関数ってよりサブルーチンとかプロシージャっぽい説明だね。
>>768 関数とサブルーチン・プロシージャーの違いは?
どこが後者の話になってるのか?
何か引数を受けて、何かしらの処理をし、何かを返すのがfunction(関数) プログラムの中で一定の処理をひとまとまりにしてモジュール化したものを メイン処理と対比して呼ぶのがsub routine(サブルーチン) プログラムの中で、サブルーチンを作るために作られた 何も返さない関数がprocedure(プロシージャ) であってるかな 横からですが
んにゃ、合ってない それらの用語は各言語仕様やコミュニティ毎に定義されている
本質的にはあってんじゃない? いろんな方言的解釈があるのはその通りだが
> 読むべきコードを減らすのが関数にする目的 ??? ['80', '9', '700', 40, 1, 5, 200] .sort((a, b) => a - b);
>>774 それもsortの処理を読まなくてすんでますね。
例え1回しか使わなくても、そうすべきなんですよ
>>775 そうすべき?
じゃあそうではない、減らす前の関数を使ってないダメなコードとやらを見せてください。
>>776 じゃあsort関数の中身をここにコピペして
sort関数ではなくsort関数の引数に渡す関数の話をしています。
>>770 によると、
> 読むべきコードを減らすのが関数にする目的
なのでしたね。
どういうことか説明してください。
>>778 sort関数に渡す引数?
(a, b) => a - b のこと?
なにを突っかかってきてるのか知らんが、
const byAsc = (a, b) => a - b;
const byDesc = (a, b) => b - a;
みたいなの並び替えアルゴリズムとして関数化しておけば、
aからbを引いて・・・ってどういうこと?って
もう読まなくてすみますね。
['80', '9', '700', 40, 1, 5, 200].sort(byAsc);
計算部分を読まなくてすむから楽になった!
(a, b) => a - bは既に関数。それは関数に名前をつけているだけ。 関数化www
だから関数に名前つけるって言ってるじゃん バカなのかな?
> その中の一部に適切な名前をつけて関数にすることで、名前だけから
訳:「読むべきコードを減らすのが関数にする目的」というのは嘘でしたすみません!「読むべきコードを減らすのが関数に名前をつける目的」でした!あと関数化とかいうオレオレ用語で混乱させてしまってすみません! こうかな
いや違うな。名前をつけて関数化したんだから 読むべきコードが減ってる。 重要なのは読むべきコードを減らすこと。
いやはや、また
>>783 はいつものキチガイなんだろうねw
>>774 から
>>779 にするのがとこが「名前をつけて関数化」なの?
元々関数。名前をつけているだけ。
それは関数じゃなくてアロー関数 重要なのは読まなくて良いコードを増やすことなんだが、 そっちへのレスがないってことは、逃げてんだね
>>786 お前は他人に謝らせてSNSにアップして炎上する
コンビニ客のマネはやめたほうが良いよw
恥ずかしい
>>787 >>774 の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw
> それは関数じゃなくてアロー関数
関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});
話はぐらかそうとしてドツボwwww
>>779 byAscよりもアロー関数ベタ書きのほうが分かりやすい人多いと思うよ
もし.sort(降順)とかにすればわかりやすいけど、それでも降順関数の中身確認したくなると思うけどな
.replace().replace().replace()....replace地獄になります クールな書き方をおしえてください
単なる数値ではないソートの場合に名前がめっちゃ長くなりそう
>>792 第二引数を関数にして中でゴニョゴニョするとか
>>792 [ ['私', '拙者'], ['シッコ', 'ウンコ'], ['マンコ', 'チンコ'], ['好き', '嫌い'], ].reduce((acc, [oldWord, newWord]) => acc.replace(oldWord, newWord), '私は、シッコとマンコが好きです。'); //=> "拙者は、ウンコとチンコが嫌いです。" それでもいいけどreplacer関数作って渡す方が筋がいいかもな。
>>791 まあ、そこは本質的なところではないんでどうでもいいんだわw
バカに付き合ってあげただけ
重要なのは、読むべきコードを減らすのが関数にする目的
だ〜れも、なんでもかんでも関数にしろとか言ってない
関数にする基準の話をしてるところに
重箱おじさんが連れたので、つついてあげただけw
バカ「バカに付き合ってあげただけ」 重箱つつかれたのはお前ww
読むコード減らすべきおじさん「読むコード減らす」 まで読んだ
面白いように反応してくれるなw で、いちばん重要な「読まなくて良いコードを増やすこと」には ほら、反論できないでしょ?w そういうとこやで
>>787 >>774 の通り元々
> 読むべきコードを減らすのが関数にする目的
についての話。
これについては降参逃亡ということですねw
> それは関数じゃなくてアロー関数
関係ありませんwww
['80', '9', '700', 40, 1, 5, 200]
.sort(function (a, b) {return a - b;});
話はぐらかそうとしてドツボwwww
>>801 ハッハッハ、反論無しで降参逃亡ということだったかwww
だから読まなくて良いコードを増やすことについては何も言わなかったんだな
>>802 頭が悪いんだからしょうがないよw
読まなくて良いようにすることに重要性がわかってないんだから
ワロタ 読まなくていいようなこと、そもそも書くなよw んでそんなもの増やすなw スクリプト言語なんだから
こんなゲームにマジになっちゃってどーするの式逃亡か?w
>>794-795 ありがとうございます
同じ文字の複数置換がしたかったのでnew RegExpで795しました
あと他にreplaceの第二引数でreplacerも試みたのですが
やり方が悪かったのか今度はif地獄になってしまったので、
根本的に変えて
((str,
reg = new RegExp('[abcd/!/"]','g'),
sub = {
'a':'あ',
'b':'B',
'c':'C',
'd':'D',
'!':'?',
'"':'\''
}) => str.replace(reg,old=>sub[old])
)('abbcdd!"');
// あBBCDD?'
としましたが、見難かったのと
objectのプロパティ名に!とか"とか使わないほうがいい気がしたのでこちらは諦めました
>>809 見にくいか?
'abbcdd!"'.replace(/[abcd/!/"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\'',
}[old]));
// あBBCDD?'
>>811 訂正
'abbcdd!"'.replace(/[abcd!\"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\''
}[old]));
// あBBCDD?'
>>812 ごめん再訂正
'abbcdd!"'.replace(/[abcd!"]/g, old => ({
'a': 'あ',
'b': 'B',
'c': 'C',
'd': 'D',
'!': '?',
'"': '\''
}[old]));
// あBBCDD?'
毎度思うけど、頭が硬いと思う 'abbcdd!"'.replace(/[abcd!"]/g, old => ({ 'a': 'あ', 'b': 'B', 'c': 'C', 'd': 'D', '!': '?', '"': '\'' }[old])); // あBBCDD?' 改行しろって言われたから、改行してます 理由?知りません。って言いそうだわw この程度ならこれでいいけどな const data = { 'a': 'あ', 'b': 'B', 'c': 'C', 'd': 'D', '!': '?', '"': '\'' }; 'abbcdd!"'.replace(/[abcd!"]/g, from => data[from]);
オブジェクトの部分は勝手にコード整形で改行展開されちゃうわ。 全部手動でコードのレイアウト()やってんならそれでいいけどw
>>815 なんて整形ツール?
今どきデフォルトで見にくく整形するツールがあるとはね
有名所のスタイルチェックツールのデフォルト or 推奨設定では
問題ない書き方なのに
整形ツールはPrettier
これはVSCodeのプラグイン経由で使ってるわ。デフォルトで使ってるはずだけどこれは展開されるな。
ESLintも使っててチームのスタイルガイドが当たるがこっちも展開されてる。
rule設定で
https://eslint.org/docs/rules/object-curly-newline の"ObjectExpression"が"always"になってんじゃねえかな。
今確認できんが。
【環境】 Win7-Pro、主にGoogleChrome(たまにFirefox) 【期待する結果】 文字列型オブジェクトのキー値の参照 例えば obj = {x:100, y:200, 'font-size':16} とあったときに、x は obj.x で 100 と 参照できるのですが 'font-size' のようなキーはどうすれば参照できますか? そのまま obj.'font-size' とすると Uncaught SyntaxError: Unexpected string というエラーになります。
var obj = { x:100, 'font-size':16 }; console.log( obj.x, obj[ 'font-size' ] ); //=> 100 16
関数内の変数は関数が終了するとメモリ開放されるようですが クロージャ内でも同様でしょうか? hogeは他から参照はされていません (function(){ var hoge = 'abcde'; }());
ES仕様にはWeak*系やSABを除いてCGやメモリの定義はない 基本的にJSはメモリを回収しなくても仕様違反とはならないし、 そのタイミングや挙動に関しては完全にブラウザ・実行系依存だから このスレで聞くのは間違ってる
> そのタイミングや挙動に関しては完全にブラウザ・実行系依存だから > このスレで聞くのは間違ってる はて? このスレはES仕様限定でブラウザ・実行系の話は禁止でしたっけ? ならDOM APIの話も禁止ですな。
ESにもW3C/WHATWGにも無いなら ブラウザの名前くらい示してくれないと答えようが無い
__proto__みたいに仕様のほうが追認することもある(あった)から……
MathJaxの質問です。
MathJaxのサードパーティーによる追加機能である XyJax を追加したいですが、追加方法が分かりません。
ヘッダには、
script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: { extensions: ["AMSmath.js", "AMSsymbols.js", "
http://sonoisa.github.io/xyjax_ext/xypic.js" ;] },
tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] }
});
/script>
script type="text/javascript" src="
https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML" ;>
/script>
と書いたのですが、上手く行きません
どうしたらいいですか?
注意 < script と書き込もうとすると5chから書き込めないといわれたので、 わざと左三角括弧< を削除しました
>>831 だから、書いてある通りにやって出来ないから聞いてんだろ
一々低次元なところからスタートするな低脳
ってかお前みたいなレスしてる奴が正解を出せるわけがないんだからアホは黙っとけ
>>832 ライブラリスレで聞けや低脳
JavaScript ライブラリ総合質問所 vol.5
http://2chb.net/r/hp/1465399470/ >>832 いや
それを書いた人に言ったらなんて返ってきたのかと
まさか聞いてないなんて思わんし(・∀・)
>>825 ではどこで聞けばいいでしょうか?
メジャーなブラウザ、一般的(曖昧ですが)な場合だけでいいです
と言いたいところですが解決しましたのでもういいです
>>838 そうなんですか
幾つかのサイトからコピペですが、忠告ありがとう
IIFEの例じゃないの?letの普及で役割を終えた。
>>824 メジャーなエンジン実装で言うと
関数が終了したら解法ではなく
定期的に全ての要素を見て回って
ルートから辿れなければ解法の方が近い
実際は別言語間との循環参照だったり
非常にややこしいが
基本的に同期的には開放しない
基本的に同期的には開放しないっていうのは 開放しないってことですか?
えっ?今?w 今それ解放する?www って時に解放する。
>>843 >>837 で解決した質問を継続するなと
解決後にどや顔回答を期待して解決したふりかね?
ここは質問するのも自由だし回答するのも自由 他人に口出す必要はない
>>844 つまり解放するんですよね?
なんで、非同期で解放すると言えなかったんでしょうか?
>>847 分かんない。俺
>>842 じゃないし。
質問が関数が終了するとメモリ開放されるかどうかを問うているからじゃないの。
>>847 ブラウザの任意のタイミングだからね
あんまりこういうタイミングで開放されるだろうとか期待するもんじゃないよ
>>846 解決したなら、回答する必要がないからね
本当は解決してないのがバレバレ
本当は解決してないのなら引き続き回答が付く流れになって何が問題なんだ? 何が言いたいんだこいつ、自分自身が何を言ってるのか認識しながら書いてるのか?
>>845 質問した824ですが843は別人です
よって回答は不要です
ただ別の人が興味持って続けたりするのはお好きにどうぞ
実際この問題けっこう面白いです
MathJaxについて質問です サードパーティーによる拡張機能を追加する時は、どういう記法がいいんですか?
>>832 ライブラリスレで聞けや低脳
JavaScript ライブラリ総合質問所 vol.5
http://2chb.net/r/hp/1465399470/ >>852 別人だろうが同一人物だろうが関係ないよ
そんなこと考えて返信したりはしないから
コテハンも付けもしないくせにそんなこと言っちゃって変なの
>>858 ならなぜコテハンを付けない???
>>852 が別人アピールをしたところで何がどうなる?
むしろそうでない人
>>845 が不快になって荒れる原因にしかならんだろ
俺には成りすましよりもずっと荒らしに見えるよ
質問です class Company { constructor(){ this.factory = new Factory(); this.shop = new Shop(); } } class Factory { constructor(){} } class Shop { constructor(){} } こうしたときに factoryとshopがお互いを参照するためには それぞれのインスタンスを作るときに Companyのthisを渡すので良いのでしょうか?
factory・shop が、お互いを参照するためには、 それよりも1階層上のCompany に、メソッドを定義すればよい Companyからは、両方へアクセスできるから
>>862 は引数で渡せば共有可能なことは分かってる
で、要件考察を放棄して「どうすれば良いですか」と最良のコードを聞いてるわけ
典型的なコピペプログラマ
>>862 Companyのthisを渡すのが良いね
>>863 ,865,866
あざます
微妙な聞き方ですみませんでした
ベストプラクティスが知りたかったです
コピペプログラマ以前の、まだペーペーでして
class使わずに書いてた時はCompanyの中でこんな感じで
var company = {
constructor : function(){
this.factoty = this.createFactory();
},
createFactory : function(){
var A = this;
var factory = {
constructor : function(){
// ここではAでcompanyが参照できる
}
};
factory.constructor();
return factory;
}
};
コンストラクタ作らずに、直に{}でオプジェクトとして生成してたので
参照に困ることがなかったのですが
これ自体正しいのかわからんし、classで書くにはこうも出来んので
どうするのが良いのか聞いてみた次第でした
ありがとうございました
ベストプラクティスと言っても魔法の解があるわけじゃないし JSはいろんな書き方ができる言語だから 結局はその要件・コンテキストでどれだけ自然かってことになる でもそれってプログラミング関係なくて 実際の「企業」「工業」「店」の関係に置き換えて想像してみたら もし変なことをしていたりムダがあってもすぐ分かるよ
<script src="js1.js"></script> <script src="js2.js"></script> js2からjs1に書いてある関数を実行するにはどうしたらいいでしょうか? 書き込めないので2バイト文字にしてます
それだけだと普通に呼べばいいのではと思うが 特殊な事情があるならそれを書いて欲しい
まじすか、リファエラー出てて、スコープは問題ないし 見直してみます
>>871 ,873
今時の奴はマルチポスト先で解決したら、「全てのマルチポスト先で解決方法を書く」程度の礼儀も知らんのか
全員がお前と同じスレを同じタイミングで見ているわけではないんだぞ
解決済みの質問に回答が来てもお前は困らないだろうが、無駄に骨を折らせるだろうが
しかも、スコープの問題ではないといってるし
$(function () {
var a = 1;
});
$(function () {
a; // ReferenceError: a is not defined
});
「それが普通とあれば解決です」といっている辺りからして、コピペコードのネタを探しているだけで理解する気はなさそうだな
質問者本人は「使いたい関数定義義は $(function の外にだすのが普通、と分かったので他はどうでもいいです」な考えだろうから、相手するだけ無駄って感じ それはそれとして、moduleも解決策の一つだと思うけど、なぜ向こうではカスタムイベント一択の人が必死になってるんだろ
jQueryを使えばIEサポートできるよ派が必死になってるのね カスタムイベント、IEでも使えるんだけどねえ
しかし、グローバル変数を敬遠してカスタムイベントを使うのはどうなんだろうな カスタムイベントにも衝突のリスクがあるという点では問題が内在している事になるのだが グローバル変数は一つのオブジェクト内にプロパティ定義すれば、汚染変数を一つに集約できるが、カスタムイベントは複数あれば複数定義してやらねばならない 必ずしも、カスタムイベントに優位性はないと思うんだがな
カスタムイベントの人、衝突のリスクを真面目に考えてはいないと思うな 衝突を回避しようとすると、module一択になると思う IEに対応するなら、一つのファイルに連結させるぐらいしか思いつかない
カスタムイベントもグローバル変数もページ単位でスコープを持っているので、リスクは同等なんだよな カスタムイベントに「関数をグローバルに定義する必要も importも使う必要もない」といえる程のメリットはない 衝突のリスクがないmoduleとは比較にならない
JS全般に言えることだけど衝突してもすぐ分かるので問題にならない そんな来年になったら衝突しだしたみたいなことはまず起き得ないのだから
> JS全般に言えることだけど衝突してもすぐ分かるので問題にならない const宣言しておけば、確かにわかるな だが、カスタムイベントは検知できない
衝突の問題って自分がa.jsとb.jsを両方管理していればそうそう起きないけど、管理外のc.jsを別の人が加えた時点で発生するんだよね 全てのjsファイルを一人が管理しているなら発生しづらいけど、運用の都合上、編集権限がないjsファイルがあるかもしれない あるいは、自分が今までに関わっていないサイトの機能拡張を依頼されて、そのサイトのグローバル変数に関するドキュメントがないかもしれない そういう時に衝突しない仕組み(module)だったり、衝突しても自動的にエラーになる(constでグローバルスコープに宣言)のは大きい
そんな大真面目にバグの可能性をできるだけ検知しようとしなくてもいいじゃん どうせjQuery使う程度のサイトなんだからさ そんなちょっとテストしてみてわからないバグなんてクリティカルじゃないよ あとで気づいたり指摘されたときになおすので十分で 製作時はそんなこと考えずに適当に思いつくままパパっと作ったのでいいじゃない どうせjQuery使う程度のサイトなんだからさ
>>885 君は
>>883 って事でいいのかな?
> そんなちょっとテストしてみてわからないバグなんてクリティカルじゃないよ
「すぐに発見できないバグ=クリティカルなバグじゃない」は通らないよ
むしろ、すぐに発見できない重大なバグの方が恐ろしいので、早期発見に努めたいと俺は思うね
> どうせjQuery使う程度のサイトなんだからさ
あなたが「品質保証しません」なスタイルなら、いいと思うよ(顧客の信用は失うけど)
http://2chb.net/r/hp/1510321470/643- は何かしらのポリシーをもって、カスタムイベントを推奨していたみたいだからおかしいとは思ったけどね
俺は883じゃないよ そんなバグを潰したければTSも使うしjQueryは使わないよ jQueryは何となく作ってそれなりに良いようにやってくれるライブラリなのに それをちょっとでもマシにしようと考える時点で間違ってるんだよ
>>886 を訂正
× 君は
>>883 って事でいいのかな?
〇 君は
>>882 って事でいいのかな?
>>887 君の中ではこういうこと?
低品質コード: jQueryを使ったコード (jQueryで高品質なコードを作ろうとすることが間違っている)
中品質コード: TSとjQueryを使ったコード
高品質コード: TSを使ったコード
ぶっちゃけ、いずれも同様にJSなので品質が変わるのはおかしい気がするけど、TSに君の頭が最適化されているって事かな
jQueryの内部コード読んでると、共感できない実装が多いので、気持ちは分からんでもないけど
正直、1年前に書いた自分のコードを書き換えようと思っても、細部まで覚えていられる自信はない 直近なら完璧に管理できると思うけど、時間が経てば忘れるので、「自動的にエラーが検知される機構」か「エラーにならない機構」であって欲しいなあ
>>875 >>873 で一旦落ち着いてるのに何向きになってるんだ
>>891 >>873 は「スコープは問題ない」と書いているのがおかしい気はする
以下に、複数ファイルに分割して、読み込む方法が書いてある
JavaScriptの設計について考える - 機能ごとに分類する
http://tech.leihauoli.com/post/2014/11/10/program-design-1.html でも、ファイル数が増えると、読み込みが遅くなるから、
webpack などで連結して、1つのファイルにまとめるのが普通
>>880 > カスタムイベントの人、衝突のリスクを真面目に考えてはいないと思うな
名前空間使えばいいだけだろ
つまり、jQueryのカスタムイベントを使う方法は、 名前空間があるから、衝突のリスクも少なく 推奨できる方法というわけか
>>889 > jQueryの内部コード読んでると、共感できない実装が多いので、気持ちは分からんでもないけど
共感できない実装を、あなたの実装に変えると
どういうメリットが有るの?
なぜこの場合にカスタムイベントが適切かと言うと
>>871 の書き込みだけ見てるとわからんのよ
http://2chb.net/r/hp/1510321470/635-636 こっちをみないと理解できないだろう
そっちを見るとわかるのが、ex_js_2.js から呼び出しているのが
ex_js_1.js が担当しているDOM要素の初期化処理なんだよ
単一責任原則からするとモジュール(ファイル)が分かれているのだから
担当すべきものは別々でなければならない。
ex_js_1.js が担当している処理の内部実装に依存するのは良くない
本来なら ex_js_1.js で完結させるべきことだろう
だがどうしてもex_js_2.jsから呼ばなければいけないというのならば、
モジュール間の結合度を下げるためにイベントを使うのが適切
module使うのもモジュール間の結合度が高まってるのでなんの解決にもなっていない
カスタムイベントと聞いてDOMのカスタムイベントと同様のことしかできないと
思い込んでいる無知がいそうだが、jQueryのカスタムイベントは
名前空間が使えるからかぶるリスクも少ない
そこまで考慮した上でのレスなんだよ
呼べればいいだろレベルの浅い考えの答えとはわけが違う
>>890 > 正直、1年前に書いた自分のコードを書き換えようと思っても、細部まで覚えていられる自信はない
誰でもそう。記憶力に頼って仕事なんてできないし、
そんなものに頼ってはだめ。
だからといってドキュメントをたくさん残せば良いのかと言うと
それも違う。読むものが増えると、その分忘れた記憶を取り戻す時間がかかる
じゃあどうするのかと言うと、結局は読むべきものを減らすということに尽きる
ドキュメントもそうだしコードもそう
プロジェクト依存の知識は、そのプロジェクトから外れると必要なくなる。
つまり忘れる。だからプロジェクトに依存しない知識を使いつつ
より少ないドキュメントやコードで構成しなければいけない
もう分かるね? どんなにjQueryがなくてもできようが、
jQuery使ったほうがコードが減るなら、jQuery使ったほうが良いってことだよ
もちろんjQueryとTSを使ったほうがより良いだろう
TS単体よりもjQuery使ったほうがプロジェクト固有の知識は必要なくなる
それってjQueryのAPIを忘れないよう未来永劫使い続けること前提じゃん ライブラリにロックインされるのは嫌だわ
未来永劫、jQueryを使ったほうがコードが減るなら そうした方が良いのでは?w
フレームワークにロックインっていうのならわかるが ライブラリにロックインってよくわからんな フレームワークは一つの大きな枠組みだから、 外すときは中身が全てばらばらになってしまうが ライブラリは、中身で使ってるだけだから、 一つづつ中身を置き換えていける ロックインってほどのものじゃない
>>900 > もう分かるね? どんなにjQueryがなくてもできようが、
> jQuery使ったほうがコードが減るなら、jQuery使ったほうが良いってことだよ
jQueryの内部コードを完全に把握していて、jQueryがバージョンアップする度に更新内容を詳細に知る努力を維持しているならね
根幹のjQueryを他者が完全に把握するのは不可能
> jQueryの内部コードを完全に把握していて、jQueryがバージョンアップする度に更新内容を詳細に知る努力を維持しているならね そんなこと必要ないのでは? 誰もOSの中身やブラウザの中身なんて完全に把握してないでしょう? もう少しさ、公平な視線で見れないの?
読むコード減らすべきおじさん いい加減自重してほしい… ここは質問スレなんで 自己主張はブログでも作ってそこでやってください
>>906 >>1 を読もうね
> ・質問への「答え」だけでなく「意見」を出しても良い。
議論用スレじゃないのに明らかにおかしいね。 荒らしが足したのかな? 次スレ立てるとき消しとくわ。
>>909 じゃあ、自重してほしいというのをやめてほしい
ほとんど議論なんだから議論スレ立てて好きにやれば?
phpやrubyと違ってjavascriptは簡単な言語です、 とか言ってる人もいるけど、間違ってると思いませんか
>>898 例えばだが
1は他の様々なプロジェクトでも使える基本関数
それを2から呼び出すとか
phpのincludeのように
複数のページにまたがって使えるような定数の集まりや関数など include的に使いたいとき皆どうしてるんだろう
jsの場合、ファイル分けてもあまり意味がないからincludeしなくなったわ 一つのファイルにまとめている。アナリティクスすら一つのファイル
>>920 そう
どうせキャッシュから読み出すので速度は問題ない
javascriptウルトラ初心者がいきなりvue.jsやっても良いですか
>>923 別にいいっちゃいいけどvue.jsはいつも通り、いつの間にか消えて行くパターンだろうなぁって感じ
ただそういう意味では逆に使って置くと良い。あの絶望感は楽しい
>>925 vue.jsってあんまり普及してないんですかね?
>>926 一時的に普及はしてるけど、いつもの流行り
多分君みたいな「なんか革新的で凄そう!」って人が使ってしまっている
俺もその昔、jquerymobileっての使ってた。今みたらgithubは二年も更新止まってるわ・・・まぁいいけど
こういうのはある程度やってないと分からない
まぁ時間を無駄にしたくなければjQuery使っておけばok
SPAを今の環境でやるには便利だし普及してるとは思う けど、SPAをもりもり作ってる人ってのがそもそも少ないだろうし より最適化したものが作られたりUA側の環境が変われば また変わっていくでしょう
>>929 あぁそういう風に受け取ったのか、お前は本当に素人だなwww
phpから出力してheadに直接出力してるんだよ
>>927 jquerymobile廃れたじゃんふざけやがって
>>930 なんでjsスレでphpありきの話してんだよ
ここでなら普通phpなしが前提だろ
>>931 まぁ、わざと大袈裟に言った。
アホな事やって周りにまで迷惑掛けてしまったからな
>>932 俺に言われても。
>>933 で、その挙げ句が
>>929 という発想だろ
ボトルシップでもやってんのか、ありえない
お前みたいなアホがシステムと連携せずにフロントをぐちゃぐちゃにするんだよ
もっと全体を見てくれ
PHPでとか言ってるの俺じゃねぇからな
>>916 > 1は他の様々なプロジェクトでも使える基本関数
だからコード見る限りそういう使い方じゃないから
カスタムイベントと言ったんだよ
>>936 jQueryはDOM操作用ライブラリ
俺を騙るのはやめろ
>>914 Ruby が圧倒的に可読性が高く、各バージョンの互換性も高い。
言語に、include, require もある
>>917 >>893 のリンクにあるような、共通ライブラリにして、先に読み込む。
かつ、2回読み込まない
>>923 初心者は、jQuery から。
Vue.js は無理
electronでアプリ作ったらソース丸見えなの?
>>940 Rubyはマジで勉強しなくて良かったと思ってる
こんなに急速に終わるとは思わなかった
rubyなんで終わったん? なんか便利そうだな〜って思ってる内にフェードアウトしていた
元々Railsのおかげで流行っただけだし、ある種当然の流れともいえる
ライブラリの出来の差でpythonに二周差くらいつけられた。 有名な先端のC/C++で書かれたライブラリ(ネイティブ)なんかも大抵Pythonから呼び出すインターフェースを公式で提供されてる。 Rubyだってできるもん!と馬の骨がRubyラッパーを作っても誰もメンテしない始末w あとディープラーニングなんかはMacでGPUサポートが弱い関係でWindows(やLinux)が主戦場になってるがRubyのコミュニティはWindows蔑視の伝統がありそのツケがまわってきてしまった形w自業自得www もうRailsのDSLとしてしか息してない。
>>937 元々それも含まれてます
むしろそれがメインです
Rails一発屋「Pythonは機械学習一発屋!!」
>>950 何回も叫ばなくてもわかってるよw
Pythonは機械学習一発屋!!!
7月生まれだからルビーって名前つけられたのがムカつくわ パール参考にしてんだからオパールとかでいいのに
次スレ
+ JavaScript の質問用スレッド vol.136 +
http://2chb.net/r/hp/1542707959/ >>953 それみたらc++以下は全部オワコンだな
>>957 画像の右のグラフも合わせて見ないと。
rustは生まれたてで急速に成長、
rubyは死にかけの消えかけと分かる。
rustなんてマニアック言語、ぜったいはやらないわ
rustに失速の可能性はあるよもちろん。 rubyに復活の可能性はないけどwww
JavaScript強すぎだな これはもう言語自体に何か人をくすぐる要素があるんだろ 俺にはわからんけど
レンタルサーバーでちょろちょろっとサーバーサイドの処理書くから PHPは消えてほしくないな……
>>963 そういうことではなくてブラウザで動く唯一の言語という特権ではないかな。
今後はwasmがあるからjsの落日が〜とかいうやつもいるけどそんなことには絶対ならない。
だから言語勝負の時は殿堂入りで除外される。
でpython vs rubyだがコミュニティがクズ過ぎてrubyの自滅だったね。
ドキュメント軽視、Windows蔑視、
で逆にドキュメント重視、Windowsにも手厚いコミュニティサポートのPythonがアカデミック領域の真面目な人たちの気を引いて学術ライブラリが充実、
真面目だからメンテもしっかりされてそれがまた人を惹き付けてのポジティブサイクルでgoogleやらにも気に入られて勝負あった。
GoogleのDartがMSのTypeScriptに負けるあたりも面白い
ブラウザクラッシャーのjavascriptがこんな立派に成長するなんて そのうちなくなるだろうって思ってたのに 素質が良かったのと周りに助けられて育ったんだな
真だけを処理する三項演算子の書き方はないのかと思ってググったところ、 同じようなことを考えた人は結構いるようですが、大体「{}無しのif使え」という結論のようでした。 実際のところ、 A===1?B=C:''; で行けるようなんですが、これだと何か問題あるでしょうか?
三項である必要がないんだから三項演算子でやろうということが矛盾してる &&でいいじゃん
何が問題かって、そんなおかしな書き方してたら読みづらくて仕方ない 素直にif使うか、ギリギリ許せて&&だ
>>970 三項演算子は式で使う
if節は文(ステートメント)で使う
今回のケースは文
よってif文を使う
使い分けに明確な差がある
逆に
let B
if (A === 1) B = C else B = ""
これなら
const B = A === 1 ? C : ""
と書く
書けるかどうかではなく意味論の話
ドヤ顔のところ悪いが
>>970 が偽でもBに空は入らないし
''がないとエラー
>>946 おー、なるほど分かりやすい。ありがとう
そう、昔はruby・pythonそれぞれのラッパーがあったんだよね
>>965 ここで上がってるJSはnodeの方が多いんではなかろか
>>946 WindowsとMacが云々はあまり関係ない気がするなあ
最近はやりの他の言語もさして変わらんし
強いて言えば、Unix/Linux環境ありきの言語なので
Windowsはちと親和性が低いくらいのもんで
関係ないけど
WSLには期待してたんだがなあ…
WSLはめちゃくちゃ使えるし、実際に使ってるけど?
そういやlindowsってどうなったんだろう ・・・13年前に終了していた
>>979 Windowsでbashが使えるって触れ込みだったから
てっきりWindowsをシェルで操れるようになるもんだと思ってたんだがなあ
あれじゃあ、単に並列にubuntuが起動して
Windowsのボリュームをマウントしてるだけじゃねえかと
>>982 > てっきりWindowsをシェルで操れるようになるもんだと思ってたんだがなあ
操れるよ?
bashからWindowsのコマンドが実行できる(その逆も可能)
だからどんなことでもシェルで扱える
> あれじゃあ、単に並列にubuntuが起動して
> Windowsのボリュームをマウントしてるだけじゃねえかと
Windowsのボリュームをマウントしてるだけなら
UbuntuからWindows用のコマンド実行できないね
>>982 お前にwolはブタに真珠だなぁ
そんなのcygwin、mingw、gitbashで出来てたじゃん。
wolがすごいのはシステムコール変換だぞ!バイナリ互換だぞ!
ぼく「~が」 敵「それはWindows側ではなくLinux側の…」 ぼく「sudoで」 敵「だからLinux側の…」 ぼくはwslを諦めた Windowsは無理に世間に迎合しないで 独自路線突っ走ってればいいんじゃねえのかなあ 会社の文房具としては揺るぎない地位を確立してんだし
>>987 Windows側のHOMEが知りたければ、wslpathで知ることが出来るし、
Windowsの管理者権限がほしいならrunasコマンドを実行すれば?
自分ができないからって、OSのせいにするなよ
> Windowsは無理に世間に迎合しないで
> 独自路線突っ走ってればいいんじゃねえのかなあ
> 会社の文房具としては揺るぎない地位を確立してんだし
そうしてくれないとお前が困るもんねw
これからも文房具だって馬鹿にしたかったのに、
Windowsが本当になんにでも使える道具になってしまった
開発するのはWindowsが一番便利だなんて!
お前は、困るよねw
どうしたの急に よくわかんないけど 俺の愛してるWindowsバカにすんなこのやろう
>>989 俺の大嫌いなWindows馬鹿野郎って
言ってる人には妥当なレスですねw
>>987 >会社の文房具
すごい!個人的に流行語大賞だわw
>>992 それ批判するときの使い古された言葉だよw
文房具は安いという前提があって成り立つ批判なんだが
ようするに便利な道具で実際には会社以外でもどこでも使えるわけで
値段を除けば批判する点はなく、値段も別に安くもないので
何一つ批判になってないというw
WindowsではLinuxが走るけど LinuxではWindowsが走らない どっちがいいかは自明
vineだかwineだかなかった? フォントサイズおかしくなったけど普通に動いたぞ
wineは動くのと動かないの、動かすにしてもコツがいるのなどいろいろあるよ そろそろさすがにスレチじゃね
>プログラミング教育の本格的な導入に向けて実務家や有識者などからなるIT教育再生審議会による審議で、小学校ではRubyを、中学校ではC++を導入することが明らかになった。
>>997 どんな有識者で話し合うとこういう結論になるんだ、、
次スレ
+ JavaScript の質問用スレッド vol.136 +
http://2chb.net/r/hp/1542707959/
read.cgi ver 07.7.25 2025/07/21 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20251028003018caこのスレへの固定リンク: http://5chb.net/r/hp/1533007852/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓この板の人気?スレ↓(一覧 ) ・ブラウザ搭載JavaScriptスレ (Ajax,DOM含む) ・WordPress逝ってよし!と思った瞬間 ・中学2年生 恋愛 ・画像素材屋がマターリ雑談するスレ 20 ・HTML/CSS のどんな質問にも優しく答えるスレ 40 ・個人サイトはどんな形態がおすすめですか? ・【WooCommerce】ワードプレスでネットショップ ・無料掲示板について語ろう (その3) ・ちちの物欲という楽天ゴミブログ ・弁護士 の 高野洋明 氏、唐澤貴洋弁護士を擁護する ・今ココにある危機!もはや誰もHPをやらなくったり…? ・著作権・肖像権うんぬん厨への対処方法 3 ・時代を変えるWebアプリケーション作りたい ・個人サイトは1日50hitあれば成功の域 ・SOHOやフリーでそこそこ食えてる奴の2人目 ・Web開発に適したブラウザはIE8である ・【喜びも】同盟サイト管理人の溜まり場【苦労も】 ・今こそ手に職を!Webデザイナー募集! ・SOHOやフリーで本当に細々と食ってる奴の133人目 ・多摩あおば病院 看護師 ・【イカれた】goo テレビ番組ナビ【横幅】 ・フリーランスになるために ・Web制作者が愚痴るスレ 36クレーム目 ・アクセス乞食が集まるスレ ・HTML/CSS のどんな質問にも優しく答えるスレ 48 ・延々とタグを打ってホームページを完成させるスレ ・人生詰んだ俺の週末WEB制作実況 ・スライス加工 ・HP作成詳しい人お願い