K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2337] Re:ポインタ完全制覇(第2版) p75 *pのループ中の計算
投稿者:(ぱ)こと管理人
2023/07/08 16:06:07

はじめまして。 >学生時代に逃げ出したポインタへ改めて向き合おうと思い、ポインタ完全制覇を読ませていただいております。 >読み進める中で、こちらの投稿と同じところでつまずいてしまったので質問させていただきます。 >*pという記法の場合、p+1要素のサイズという足し算が各繰り返しごとに行われていると解釈したのですが、 >掛け算はどの段階で行われているのでしょうか。 まず、array[i]の記法の場合、array[i]を使うごとに「array + (i * 1要素のサイズ)」に 相当するアドレス計算を行う必要があります。 *pの記法の場合、ループの1回のくり返しの中ではpは動かないので、上記のような アドレス計算を何度も行う必要はない(だから最適化をしないコンパイラなら速くなる)、 というのが該当の記述の趣旨だったのですが、 p.75の該当の記述は以下のようになっていて、 「*pがループの中に何度出現しても、掛け算と足し算はループの終わりの 1回だけで済みます。」 *pの記法の場合、各ループの末で行うのはp++であって、毎回ひとつずつ進めるのであれば、 確かに掛け算は不要です。 ・array[i]記法では、ループ内にarray[i]が何度も出てきたら、その数だけ掛け算と足し算を行う。 ・*p記法では、*pが何度出てきても、そういう計算は1回でよい。 ということを言いたかったのですが、「そういう計算」の中身が違いますね。 本の記述が誤りだと思います。 22年以上前の初版本からこの記述はあるのですが、この誤りは見つかっていませんでした。 ご指摘ありがとうございました。正誤表に入れさせていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2336] Re:ポインタ完全制覇(第2版) p75 *pのループ中の計算
投稿者:Okamoto
2023/07/06 21:57:11

学生時代に逃げ出したポインタへ改めて向き合おうと思い、ポインタ完全制覇を読ませていただいております。 読み進める中で、こちらの投稿と同じところでつまずいてしまったので質問させていただきます。 *pという記法の場合、p+1要素のサイズという足し算が各繰り返しごとに行われていると解釈したのですが、掛け算はどの段階で行われているのでしょうか。 ご回答よろしくお願いします。 >はじめまして。読んでいただきありがとうございます。 > >>array[i]は、ループ中に出現するたびごとに「array + (i * 1要素のサイズ)」に相当する >>アドレス計算を行うというのは理解できますが、*pでも「p + (p++ごとに1要素のサイズ)」 >>に相当するアドレス計算を行っているように思えます。「掛け算と足し算はループの終わり >>の1回だけ」という意味をご教示いただけるとありがたいです。 > >「ループの終わりの1回だけ」というのは、たとえばループが100回回ったとして、 >各繰り返しの最後に1回、という意味です。つまり、100回ループが回れば、 >「p + 1要素のサイズ」という計算は100回は行います。 >ただし、ループの中に、array[i]が5回出てくるとすれば、最適化をろくにやらない >コンパイラなら、100回ループが回った時に「array + (i * 1要素のサイズ)」という計算は >500回行われます。それが100回で済むなら、*pの方が高速になるでしょう。 >コメントで「array[i]は、何度も登場する」と書いてあるのはそういう意図です。 > >これで回答になっていますでしょうか? > >
[この投稿を含むスレッドを表示] [この投稿を削除]
[2333] Re:誤植 ポインタ完全制覇 P363
投稿者:TK
2023/05/23 20:27:58

>これですが、規格書(JIS X3010:2003)の「6.7.8 初期化」に以下の記載があります。 ご指摘ありがとうございます。このような書き方が可能なことを知りませんでした…。 勉強になりました。 良く調べてからご連絡すべきでした。失礼しました。 ご対応もありがとうございます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2332] Re:誤植 ポインタ完全制覇 P363
投稿者:(ぱ)こと管理人
2023/05/22 19:53:48

お待たせしました。 >「C言語 ポインタ完全制覇」P363 List 6-4 designated_initializer.c の 20 行目は以下ではないでしょうか。 >  誤 Hoge hoge = {.b = 3, .c = 5, {[3] = 10, 11, 12}}; >  正 Hoge hoge = {.b = 3, .c = 5, .array = {[3] = 10, 11, 12}}; これですが、規格書(JIS X3010:2003)の「6.7.8 初期化」に以下の記載があります。 >指示がない場合,現オブジェクト中の部分オブジェクトを,現オブジェクトの型に従う順序で >初期化する。すなわち,配列要素は添字の昇順で初期化し,構造体メンバは宣言の順で初期化し, >共用体では最初の名前付きメンバを初期化する(127)。 >一方,指示が存在する場合,それに続く初期化子を使って要素指示子が示す部分オブジェクトを >初期化する。そして要素指示子で示される部分オブジェクトの次の部分オブジェクトから >順に初期化を続ける(128)。 「要素指示子で示される部分オブジェクトの次の部分オブジェクトから順に初期化を続ける」 とあるので、書き方としては正当だと思います。gccに-std=c99 -pedanticオプションを付けて 警告もなく実行できました。 ただ、説明不足なのは否めませんので、補足を上げようと思います。 ご指摘ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2331] Re:誤植 ポインタ完全制覇 P363
投稿者:(ぱ)こと管理人
2023/05/20 02:35:22

>「C言語 ポインタ完全制覇」P363 List 6-4 designated_initializer.c の 20 行目は以下ではないでしょうか。 >  誤 Hoge hoge = {.b = 3, .c = 5, {[3] = 10, 11, 12}}; >  正 Hoge hoge = {.b = 3, .c = 5, .array = {[3] = 10, 11, 12}}; ご報告ありがとうございます。 すみません、この週末は用事がありまして、対応は月曜とさせてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2330] 誤植 ポインタ完全制覇 P363
投稿者:TK
2023/05/18 17:06:59

「C言語 ポインタ完全制覇」P363 List 6-4 designated_initializer.c の 20 行目は以下ではないでしょうか。   誤 Hoge hoge = {.b = 3, .c = 5, {[3] = 10, 11, 12}};   正 Hoge hoge = {.b = 3, .c = 5, .array = {[3] = 10, 11, 12}};
[この投稿を含むスレッドを表示] [この投稿を削除]
[2329] Re:感謝
投稿者:(ぱ)こと管理人
2023/04/06 01:25:33

>64才のに元ソフト系エンジニアです。 はじめまして。拙著を読んでいただきありがとうございます。 >やっと時間が出来たので、やはり買ったままになっていた前橋さんの本(2009年の初版)を >読み始めました。ネットに公開されている前橋さんのコードをエディタで関数やデータ型を >探したり眺めたりしながら、前橋さんの本を読み進めています。 この本は日本では初版しかないのですが、どういうわけか中国で評判が良いようで(中国語版が出ています)、中国人の中学生から(英語で)質問メールをもらったりしました。返信の英作文には苦労しましたが、読まれている実感があって嬉しいものです。 Diksamは、書籍出版の後もごそごそいじっていたのですが、追加機能分が結局形にならず放置状態になっているのが心苦しく思っています。 私も、定年退職でもしましたら、趣味プログラムに没頭したいものだと思っております。 >「もうひとつのプログラミング言語を作る」のような次回作を期待しています。 規模からすればDiksamよりはるかに小さいですが、静的型付けのバイトコード実行型言語として、Samplanというおもちゃ言語を作っています。 https://kmaebashi.hatenablog.com/entry/2021/10/31/211618 実用性はまったくないと思いますが、yaccに頼らず手書きの再帰下降パーサで作った言語です。よろしければこちらもどうぞ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2328] 感謝
投稿者:
2023/04/04 11:21:17

64才のに元ソフト系エンジニアです。 在職中はマルチメディア関係のシステムの研究、開発、市場開発、プロジェクト管理などをやっていました。コンパイラには学生時代から関心があり、AhoとUllumanの本を買ったりしましたが、眺めるだけで読み進めることなく定年を迎えました。 やっと時間が出来たので、やはり買ったままになっていた前橋さんの本(2009年の初版)を読み始めました。ネットに公開されている前橋さんのコードをエディタで関数やデータ型を探したり眺めたりしながら、前橋さんの本を読み進めています。 Cは学生時代から30才くらいまでコードを書いていたので分かっているつもりでしたが、結構怪しくて本を参照しながらですが。 やっとcrowbarが終わって、これからDiksamです。 前橋さんの巧妙な語り口に助けられ、補足なども楽しみながら、昔に戻って楽しい時間を過ごしています。Pascalのgotoにラベルが書けない理由、ヘッダファイルをパブリックとプライベートに分ける手法、不完全型の技法などはオールドプログラマには新鮮でした。 「もうひとつのプログラミング言語を作る」のような次回作を期待しています。 それまでになんとかDiksamも読了しておきますので。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2327] Re:入力時のバリデーションについて
投稿者:mhash
2022/11/03 14:18:41

返信が大変遅れまして申し訳ありません。 丁寧にご回答頂きましてありがとうございます。 >まず、「入力時のサニタイズ」と「入力時のバリデーション」は違う話ですよね。 >リンク先の記事を書いている大垣さんも、「入力時のサニタイズ」は擁護していないと >思います。 そうですよね。勝手に改変したものをそのまま後に渡しているのは。 >「入力時のバリデーション」は、変な入力は入力の時点でエラーにして後ろに流さない >わけですが、これは別段セキュリティ関係なく、ユーザの入力ミスに備えてやるべき >ことですし、その要件はアプリケーションの仕様に依存します。 >もちろん、電話番号欄にシングルクォートとか入力されたらエラーにすればよいですし、 >そうすることが結果的にセキュリティに資することもあると思います。 入力時のバリデーションはあくまでも「仕様の問題」ということですね。 >入力時バリデーションは、 >・そもそも要件としてバリデーションできないケースが(かなり)ある。 >・入力から、DBとか、再度画面に表示されるところまでには、プログラム的に > 長い経路があり、「セキュリティのために」狙ってバリデーションするのは > 実際には困難。 > >という問題があります。そこで、入力時バリデーションはセキュリティ対策としては >「あてにできる」ものではない、と私は思います。 入力時バリデーションがセキュリティに有効なこともあるのはあくまで結果論ということですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2326] Re:入力時のバリデーションについて
投稿者:(ぱ)こと管理人
2022/10/30 15:38:35

>kmaebashiさんが『「サニタイズ言うなキャンペーン」について、私の解釈』や、 >著書でも述べられている、「SQLやHTML等で特別な意味を持つ文字列のエスケープは、 >入力時ではなくそれが外部に出力される直前に行うべき」という主張は納得できる >ものだと私も思います。 >ただ、以下リンク先のページを見ると、CWE-20等の国際的なセキュリティ標準でも >入力時のチェックを奨励しているように思えまして、ちょっと混乱しています。 >https://gihyo.jp/dev/serial/01/php-security/0045 >「ユーザーからの入力はどんな文字列でも扱えるべきだが、システム内の各階層では、 >メソッドの引数チェックなりをしっかりやるように」との意味合いなのでしょうか? まず、「入力時のサニタイズ」と「入力時のバリデーション」は違う話ですよね。 入力時にサニタイズ(無害化)するということは、無害化したその入力を後ろに 流してしまうわけです。実際、当時のPHPのmagic quoteはそんな仕組みでした。 これはどう考えてもおかしいわけで、今はPHPのmagic quoteは廃止されましたし、 リンク先の記事を書いている大垣さんも、「入力時のサニタイズ」は擁護していないと 思います。 「入力時のバリデーション」は、変な入力は入力の時点でエラーにして後ろに流さない わけですが、これは別段セキュリティ関係なく、ユーザの入力ミスに備えてやるべき ことですし、その要件はアプリケーションの仕様に依存します。たとえばこの掲示板の 本文は、シングルクォートだろうがHTMLタグだろうが通さなければいけないでしょう。 もちろん、電話番号欄にシングルクォートとか入力されたらエラーにすればよいですし、 そうすることが結果的にセキュリティに資することもあると思います。 入力時バリデーションは、 ・そもそも要件としてバリデーションできないケースが(かなり)ある。 ・入力から、DBとか、再度画面に表示されるところまでには、プログラム的に  長い経路があり、「セキュリティのために」狙ってバリデーションするのは  実際には困難。 という問題があります。そこで、入力時バリデーションはセキュリティ対策としては 「あてにできる」ものではない、と私は思います。 徳丸浩さんの記事: もう入力値検証はセキュリティ対策として *あてにしない* ようにしよう https://tumblr.tokumaru.org/post/55393403591/%E3%82%82%E3%81%86%E5%85%A5%E5%8A%9B%E5%80%A4%E6%A4%9C%E8%A8%BC%E3%81%AF%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E5%AF%BE%E7%AD%96%E3%81%A8%E3%81%97%E3%81%A6-%E3%81%82%E3%81%A6%E3%81%AB%E3%81%97%E3%81%AA%E3%81%84-%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%82%88%E3%81%86 半面、入力バリデーション(と静的な型付け)で実際の攻撃を防げるケースもかなり あるとも言われてはいて、たとえばOWASPの Application Security Verification Standard 4.0には以下の記述があります。 https://owasp.org/www-pdf-archive/OWASP_Application_Security_Verification_Standard_4.0-en.pdf > Properly implemented input validation controls, using positive whitelisting > and strong data typing, can eliminate more than 90% of all injection attacks. > Length and range checks can reduce this further. ホワイトリストと静的型付けによる適切な入力バリデーションでインジェクション攻撃の 90%以上が防げるとあります。 大垣さんと徳丸さんとのこの手の議論は長くて、嫌気がさすほどですが(最終的に、 徳丸さんの方が、(おそらくは呆れ果てて)議論を放棄している)、 https://ockeghem.hatenablog.jp/entry/20111226/p1 https://tumblr.tokumaru.org/post/55587596019/%E5%8B%9D%E6%89%8B%E3%81%AB%E8%A7%A3%E8%AA%AC%E5%A4%A7%E5%9E%A3%E6%B5%81%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%85%A5%E9%96%80 入力時バリデーションが結果的にセキュリティ対策になることは徳丸さんは 一切否定していないので、どうもこの「議論」は食い違っているように私には見えます。 そもそも徳丸さんは、OWASP Japanアドバイザリーボードという立場の方なので、 OWASP含め、「国際的なセキュリティ標準」が何を言っているのか知らないわけはないですし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2325] 無題
投稿者:mhash
2022/10/30 08:34:03

kmaebashiさんが『「サニタイズ言うなキャンペーン」について、私の解釈』や、著書でも述べられている、「SQLやHTML等で特別な意味を持つ文字列のエスケープは、入力時ではなくそれが外部に出力される直前に行うべき」という主張は納得できるものだと私も思います。 ただ、以下リンク先のページを見ると、CWE-20等の国際的なセキュリティ標準でも入力時のチェックを奨励しているように思えまして、ちょっと混乱しています。 https://gihyo.jp/dev/serial/01/php-security/0045 「ユーザーからの入力はどんな文字列でも扱えるべきだが、システム内の各階層では、メソッドの引数チェックなりをしっかりやるように」との意味合いなのでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2324] Re:【雑談】JavaScriptの「オブジェクト指向」はやわかり
投稿者:rike1019
2022/10/15 11:42:19

書いてあったんですね。失礼しました。m(_ _)m
[この投稿を含むスレッドを表示] [この投稿を削除]
[2323] Re:【雑談】JavaScriptの「オブジェクト指向」はやわかり
投稿者:(ぱ)こと管理人
2022/10/15 11:34:06

>読みました。 読んでいただきありがとうございます。 >この参照値という言葉は初出な気がするのですが、 以下のページで出ています。 http://kmaebashi.com/programmer/beginner/javascriptintro.html http://kmaebashi.com/programmer/beginner/array.html 検索経由とかでこのページから読み始める人もいるかもしれませんが、 >JavaScriptでは、オブジェクトは参照経由でアクセスします。 >関数もオブジェクトですから、参照で扱います。ここでは、alertとmyAlertは、 >どちらも同じ関数オブジェクトを「指して」います。 >つまり、alertやmyAlertが保持しているのは関数そのものに対する参照値です。 と書いていて、図も入れてあって「オブジェクトは参照経由でアクセスします」の ところはリンクにもしてありますから、よっぽど大丈夫なんじゃないかと思っています。 ご意見ありがとうございました。 (参照周りは、「参照渡し」とかでググると絶望するほどに誤解の多いところでは あるので、くどいぐらいに書いておいた方がよいのかもしれませんが)
[この投稿を含むスレッドを表示] [この投稿を削除]
[2322] 【雑談】JavaScriptの「オブジェクト指向」はやわかり
投稿者:rike1019
2022/10/14 10:06:40

読みました。 > そして、JavaScriptの関数がオブジェクトであるということは、 > 通常のオブジェクトと同じように、 > その参照値を変数に代入したり、関数の引数にしたり、 > 関数から戻り値として返したりできるということです この参照値という言葉は初出な気がするのですが、 私はJavaを少しかじったのでプリミティブ型と参照型があるんだなー となんとなくわかるのですが、 はじめてのプログラミングの方は「参照って何?」と思うかもしれません。 他のページで解説されている箇所があったらすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2321] Re:無題
投稿者:(ぱ)こと管理人
2022/09/30 01:04:31

>コンパイルエラーは警告ではなくエラーなので修正したほうがいいと思います。 ご指摘ありがとうございます。上の行をコピペしてそのままにしてしまいました。 修正しました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2320] 無題
投稿者:rike1019
2022/09/29 05:57:04

「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」ダウンロード http://kmaebashi.com/webserver/download.html このページの > 2022/09/23追記:現状のソースだと、Tomcat10以降は警告が出ます。補足を参照してください。 コンパイルエラーは警告ではなくエラーなので修正したほうがいいと思います。 細かいことですがよろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2319] 無題
投稿者:吉野刹那
2022/09/27 18:35:59

>>2311 変な書き込みをしてしまいすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2318] Re:衝突判定と爆発のナビゲーションリンクについて
投稿者:(ぱ)こと管理人
2022/09/27 01:35:22

ご指摘ありがとうございます。 >* 10進数の20は16進数で14で文字はDC4 >* 10進数の32は16進数で20で文字はSP > 前のページ | 前のページ | ひとつ上のページに戻る | トップページに戻る 上記2点とも修正しました。 また何かありましたらよろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2317] 衝突判定と爆発のナビゲーションリンクについて
投稿者:rike1019
2022/09/26 09:46:26

(出先でChromebookで書いているのでリモートホストが変わっていますが) rike1019は同一人物です。 衝突判定と爆発――完全初心者のためのプログラミング入門 http://kmaebashi.com/programmer/beginner/collision.html このページの最下部のナビゲーションの「次のページ」のリンクが コピペでミスしたのか「前のページ」になっていて次のページに飛べません。 > 前のページ | 前のページ | ひとつ上のページに戻る | トップページに戻る 修正したほうがよろしいかと思います。いかがでしょうか? よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2316] 「文字コード」とは何か?ASCIIコードの説明について
投稿者:rike1019
2022/09/26 01:39:47

表1: ASCIIコード表を見ながら文章を読んでいましたが混乱したところがあります。 >今ではほとんど使われないものが大多数ですが、 >9のHTはHorizontal Tabulation――水平タブ、 >要するにTABキーを押すと挿入されるタブのことですし、 >10と13のLF, CRは改行コードとして使われています。 >また、20のSPは、空白を意味しています。 この9と10と13は10進数の数値の欄を指していますが、20のSPは16進数の数値の欄を指しています。混乱します。どちらかに統一したほうがいいと思います。 * 10進数の20は16進数で14で文字はDC4 * 10進数の32は16進数で20で文字はSP 修正したほうがよろしいかと思いますがいかがでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2315] Re:UFOを飛ばそうの部分についての質問
投稿者:(ぱ)こと管理人
2022/09/25 23:15:45

>リスト9: lesson04_5.html(UFOを動かすことに成功) >の20行目で、mainLoop();を呼んでいますが、まだ関数を定義する前の行です。 >なぜ、JavaScriptでこれはエラーにならないのでしょうか? これは、JavaScriptの「巻き上げ」(hoisting)と呼ばれる機能のおかげです。 https://developer.mozilla.org/ja/docs/Glossary/Hoisting JavaScriptがなぜこうしたのかといえば、単純に「その方が便利だと思ったから」 なのだと思います。たとえばJavaではメソッドの宣言順は動作に影響せず、 宣言前のメソッドも呼び出せます。もっと古い言語であるCでは、巻数は事前に 定義されていなければ呼び出せず、関数funcAがfuncBを呼び出し、 funcBがfuncAを呼び出すような相互呼び出しをやりたいときには、どちらか片方を 事前に「プロトタイプ宣言」しておく必要がありました(不便です)。 Cで不便だと思われていて、Javaでは改善されたわけですから、Javaに似せた言語である JavaScriptでは、それはJavaに合わせるでしょう。 もっとも、さすがは変態言語というか、JavaScriptでは「巻き上げ」が 関数だけでなく変数に対しても、しかも関数内の変数に対しても適用されるので、 いろいろ混乱の元になっています。 https://analogic.jp/hoisting/ >私は「完全」初心者ではないのですが、python3では、 >mainloop() >def mainloop(): > print("Hello, world!") >と書くと「NameError: name 'mainloop' is not defined」とエラーが出ます。 pythonではなぜ関数を先に定義しておく必要があるかといえば、pythonでは 関数定義のdefは通常の実行文であり、それが実行されて初めて関数が定義されるからです (逆に言うと、JavaScriptやJavaやCでは、関数定義は実行文ではありません)。 pythonのdefは単なる文なので、たとえばif文の中でdefができます。 a = 10; if a == 10: def func(): print("hoge") else: def func(): print("piyo") func() このコードは、最初にaに代入する値によって、funcの定義が変わります。 CやJavaのような言語では、こういうことはできません。CやJavaでは、関数定義は、 コンパイルの時点で決まります。 JavaScriptはJavaに似せた言語なので、これを引き継いだのだと思います。 ではJavaScriptではif文の中にfunctionは書けないのか、といえば、これがどうも 書けるようで、でも「結果は実装によって一貫性がない」そうです。さすがは変態言語。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/function | 関数は条件付きで宣言できます。つまり、関数文を if 文の中に入れ子にすることができますが、 | 結果は実装によって一貫性がないので、このパターンを本番コードでは使用すべきではありません。 | 条件付きの関数の作成には、代わりに関数式を使用してください。 私自身、CやJavaのプログラマなので、自分で言語を作ったときには、 型なし言語のcrowbarも、静的型付け言語のDiksamも、関数定義を実行文にはしませんでした。 http://kmaebashi.com/programmer/devlang/index.html なので、JavaScriptの関数定義については、このようにした気持ちはわかります。 変数定義まで(それもローカル変数まで)同じように巻き上げられるようにしたのは、 正直、理解不能ですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2314] UFOを飛ばそうの部分についての質問
投稿者:rike1019
2022/09/25 20:01:07

リスト9: lesson04_5.html(UFOを動かすことに成功) の20行目で、mainLoop();を呼んでいますが、まだ関数を定義する前の行です。 なぜ、JavaScriptでこれはエラーにならないのでしょうか? 私は「完全」初心者ではないのですが、python3では、 mainloop() def mainloop(): print("Hello, world!") と書くと「NameError: name 'mainloop' is not defined」とエラーが出ます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2313] Re:【雑談】完全初心者のためのプログラミング入門の対象読者について
投稿者:(ぱ)こと管理人
2022/09/25 14:41:37

>「完全初心者のためのプログラミング入門」を楽しく読まさせていただきました。 読んでいただきありがとうございます。 >Windows前提なのが、まず今の子供達持ってるのかな?と思いました。 確かにそれは私も不安に思っているところです。 >GIGAスクール構想で配られてるのがiPadだったりChromebookだったりして >Windows搭載のPCを配ってても開発ツールとか入れられないように >セキュリティガチガチにしてるっぽいですし >まず個人で自由に使えるパソコンを持ってる子供が >少ないんじゃないかな?と思いました。 そのあたりの事情は私は詳しくないのですが、Windows PCを配っていて セキュリティガチガチにされていたとしても、ローカルにHTMLを置いて ダブルクリックしたらEdgeが立ち上がるんじゃないでしょうか。 それも禁止されているのでしょうか。 Chromebookも持ってないのですが、エディタでHTML書いてダブルクリックして 開く、ということはできるようなので、適宜読みかえていただければと思います (子供にそれは難しいかもしれませんが、私が持ってない以上解説も書けませんし)。 >GIGAスクールで配られてるものってスペック低い上に、 >日本はハイエンドスマホのiPhoneの普及率が高いので だからといってiOSアプリを作るとなるとハードルが極端に上がりますからね (AndroidはともかくiOSとなると、私だって作れない。Macを買う気も Appleにお金を払う気もないので)。 スマホはさておきパソコンでさえあれば、MacでもChromebookでも HTMLは書けるでしょうから、「ファイルとフォルダ」、「Webページを作ろう」の章より 後ろのJavaScriptを書き始めたあたりからを参考にしてもらえれば、と思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2312] 【雑談】完全初心者のためのプログラミング入門の対象読者について
投稿者:rike1019
2022/09/25 13:14:48

「完全初心者のためのプログラミング入門」を楽しく読まさせていただきました。 Windows前提なのが、まず今の子供達持ってるのかな?と思いました。 GIGAスクール構想で配られてるのがiPadだったりChromebookだったりして Windows搭載のPCを配ってても開発ツールとか入れられないように セキュリティガチガチにしてるっぽいですし まず個人で自由に使えるパソコンを持ってる子供が 少ないんじゃないかな?と思いました。 西村博之(ひろゆき)がそれを危惧して ゲームもできるパソコンを児童養護施設に配る企画やってましたけど。 GIGAスクールで配られてるものってスペック低い上に、 日本はハイエンドスマホのiPhoneの普及率が高いので 「パソコンってなんか遅いし持ち運ぶのにも重いしスマホ(iPhone)でいいや」 ってならないかと心配です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2311] Re:初めまして
投稿者:(ぱ)こと管理人
2022/09/22 00:08:09

>こんにちは。 こんにちは。 で、何の御用でしょうか? テスト投稿ならテスト掲示板の方にお願いします。 http://kmaebashi.com/bbs/list.php?boardid=testbbs
[この投稿を含むスレッドを表示] [この投稿を削除]
[2310] 初めまして
投稿者:吉野刹那
2022/09/21 15:31:47

こんにちは。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2309] Re:Tomcat 10のパッケージ名の変更について
投稿者:(ぱ)こと管理人
2022/09/21 01:39:18

>https://qiita.com/nfujita55a/items/b335688ea2a696387deb > >このQiita記事に載っていたのですがTomcat10だと >以前以下のように書いていたインポート元を > >import javax.servlet.* > >以下のように書き換えないとコンパイルエラーになるようです。 ご連絡いただきありがとうございます。これはなかなか大きな変更ですね。 週末あたりに、Webページに注記を入れようかと思います。 ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2308] Tomcat 10のパッケージ名の変更について
投稿者:rike1019
2022/09/19 15:29:17

https://qiita.com/nfujita55a/items/b335688ea2a696387deb このQiita記事に載っていたのですがTomcat10だと 以前以下のように書いていたインポート元を import javax.servlet.* 以下のように書き換えないとコンパイルエラーになるようです。 import jakarta.servlet.* JavaとTomcatの環境構築でハマったので報告しておきます。 ウェブ上のほとんどのJava解説記事がjavax.servletと書いているので 何が悪いのかさっぱりわからず困りましたが単純な変更でした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2307] Re:『Webサーバを作りながら学ぶ~』のコンパイルについて
投稿者:(ぱ)こと管理人
2022/08/28 00:25:52

>OpenJDK 18でコンパイルしたところ、以下のメッセージが表示されました。 >ソースコードが古いAPIを使っているようです。 ご連絡ありがとうございます。私の方でも再現しました。 C:\maebashi\temp\src_20181021\src\appendix\Henacat_0_4>javac -encoding SHIFT_JIS -Xlint:deprecation com\kmaebashi\henacat\webserver\Main.java .\com\kmaebashi\henacat\servletimpl\ServletService.java:12: 警告:[deprecation] ClassのnewInstance()は推奨されません return (HttpServlet)clazz.newInstance(); ^ Tが型変数の場合: クラス Classで宣言されているT extends Object 警告1個 Java9からClass#newInstance()がdeprecatedになっているのですね (執筆時はJava8だったので気付いていませんでした)。 https://qiita.com/deaf_tadashi/items/3c3118e660861fb43434 Webページに案内を入れる等、なんらかの形で対応いたします。ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2306] 『Webサーバを作りながら学ぶ~』のコンパイルについて
投稿者:rike1019
2022/08/27 19:10:56

OpenJDK 18でコンパイルしたところ、以下のメッセージが表示されました。 ソースコードが古いAPIを使っているようです。 以下コマンドプロンプトからコピーしたものです。 F:\Programming\src\appendix\Henacat_0_4>javac -encoding SHIFT_JIS F:\Programming\src\appendix\Henacat_0_4\com\kmaebashi\henacat\webserver\Main.java ノート:.\com\kmaebashi\henacat\servletimpl\ServletService.javaは 推奨されないAPIを使用またはオーバーライドしています。 ノート:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
[この投稿を含むスレッドを表示] [この投稿を削除]