プログラミングをしてみよう。

Windows11でのJavaの開発環境の整え方教えてください!!!


javac -d . *.java
java calcapp.main.Calc calcapp.main.logics.Calclogicで実行した。
この過程でも1つのファイルで実行できるようになってない
どうすればいいでしょうか?

環境は、 Ubuntu24.10です。

「いいね!」 1

javaは昔、オブジェクト指向を学ぶために、ちょっと触っただけなんで、今はすっかり忘れてしまいました。デザインパターンの本をたまに読み返すときに、その本で使っている言語がJAVAなので、たまに思い出すぐらいですかね。

自分語りがしたかっただけなのでスルーしてくださいw

ちなみにこの本なんですけど、JAVA言語がよくわからなくても、オブジェクト指向言語をどれか触ったことがあるなら、感覚的に理解できると思います。日本人が書いたデザインパターンの本はあまりないので、デザインパターンを学びたい人にはおすすめの一冊だと思います。

お高いので、アテクシは図書館で借りて読んでます。

JAVAと名前は似ているのに、全然違う言語であるjavascriptは言語的にはいろいろ問題があるにも関わらず、改修工事を積み重ねて、今でもウェブの世界に、なくてはならない言語の一つとなっている。

javascriptに頼らないでも、ブラウザでプログラムを実行できるような仕組みが開発されたり、違う言語でなんとかならないだろうか?みたいな試行錯誤が2000年代からこの20数年間、試行錯誤されてきたにも関わらず、javascriptに対抗するようなブラウザ用言語は広まらず、javascript自体も、言語構造を大幅に変更するみたいなことが行われず、(メジャーアップデートによって、class型のオブジェクト指向と同じような書きかたができるようにはなったけども、内部的にはプロトタイプ型のままであるし、型もあいまいで、typescriptを使わないと、素人ではバグだらけのプログラミングになる可能性が高い)VRが一般的になって、メタ社がVR世界でのブラウザに変わるインターフェイス用の言語を開発でもしない限りは、スマホ時代が続く限りは、javascriptが使われなくなることはないのではなかろうか?

とはいえ、最近は、javascriptをラップしたtypescriptがメジャーになりつつあるようで、毎年やってる今年よく使われた評判のいいプログラミング言語ランキングの2024年版で、生成AIブームによって、pythonがjavascriptを初めて(なにが原因かは忘れたけど)抜いて1位になったみたいな記事を見かけたのだが、その中でも、typescriptを含めたjavascriptの勢いは衰えておらず、ユーザー数は伸びているし、その半数くらいはtypescriptを使用しているといったことが書かれてあり、まだまだjavascriptの勢いはなくならないのではないかと思ったりする。

そんなわけで、前置きが長くなったが(いつも長いけど)javascriptを学ぶ上で初心者がつまづきそうなクセのある部分を柔らかくアク抜きしている記事を見かけたので紹介しておきたい。

数行でまとめると以下のことをこの記事では言っている

スコープチェーンによって、ローカル関数から取得される外側の変数は、実行時(この表現と分類が初心者には難しいと思う。)、つまりは、関数を**FX();**みたいな感じで実行したときの場所(関数FX内部からみたときの外側の場所)にある変数Xを取得するのではなく、定義時(つまりは、コードを書いた時)の関数FXの内部から見た時の外側の場所にある変数Xを取得するということである。(数行ではなくなってしまったし、自分はわかっているつもりなのでわかる文章なのだがおそらく初心者の方にはわからないと思うので、以下の記事をじっくり読み込んでからまた読み直してほしいw)

https://replication.hatenablog.com/entry/20100309/1269052178

あと上の記事が参照している、はてな記事もおすすめです。

上の記事は旧い個人ブログなのでオープングラフに対応してないのだろうか。やっぱり概要と画像が表示されないと、インパクトに欠けるような気がする。(っていうか、よくみたら、同じはてなじゃん。ブログの方はリンク貼っただけだと、オープングラフに対応してないのかしらん。)

OGP(Open Graph Protocol)とは、ウェブページがソーシャルメディア上でどのように表示されるかを制御するためのプロトコルです。Facebookが提唱したこのプロトコルは、ウェブページのメタデータを構造化し、特にリンクが共有された際に、画像やタイトル、説明文などの情報を適切に表示するために使用されます。

OGPの基本的な構造

OGPを利用することで、以下のような情報を設定できます:

  • og:title: ページのタイトル
  • og:type: ページの種類(例:article, websiteなど)
  • og:description: ページの説明文
  • og:url: ページのURL
  • og:image: 表示したいイメージ画像のURL

これらのタグをHTMLの<head>セクションに追加することで、ソーシャルメディアがこの情報を読み取り、リンクが共有された際に適切なプレビューを生成します[2][7][12]。

OGPの利点

OGPを正しく設定することには多くの利点があります:

  • 視認性の向上: ソーシャルメディア上での投稿が目立ちやすくなり、ユーザーの注意を引きやすくなります。
  • シェアの促進: 魅力的なプレビューが表示されることで、他のユーザーによるシェアや拡散が期待できます。
  • SEO効果: OGPはSEOにも寄与し、検索エンジンでの表示順位にも影響を与える可能性があります[7][13][14]。

設定方法

OGPを設定するための基本的な手順は以下の通りです:

  1. HTMLにOGPタグを追加: 上記のプロパティを含むメタタグをウェブページの<head>セクションに追加します。

    <head prefix="og: https://ogp.me/ns#">
        <meta property="og:title" content="ページのタイトル" />
        <meta property="og:type" content="website" />
        <meta property="og:url" content="ページのURL" />
        <meta property="og:image" content="画像のURL" />
        <meta property="og:description" content="ページの説明文" />
    </head>
    
  2. CMSプラグインの利用: WordPressなどのCMSを使用している場合、OGPタグを自動生成するプラグインを利用することで、手動での設定を省略できます[2][7][12]。

まとめ

OGPは、ウェブページがソーシャルメディアでどのように表示されるかを制御するための重要なツールです。正しく設定することで、視認性を高め、シェアを促進し、SEOにも良い影響を与えることができます。これにより、ウェブサイトのトラフィックを増加させることが期待できます。

「いいね!」 1

pythonでアルゴリズムを学習する本を2,3年近くかけて、気力があるときに読んでるのだが、そのなかの練習問題が基本情報処理試験に出てくる問題なので、おのずと基本情報処理試験にも興味がでてきた。とはいえ、いまさら資格をとったところで就職口があるわけでもないので、コンピューターに対する理解を深めるために、試験対策サイトの解説ページをたまに読んだりして、断片的にかき集めてきたコンピューターに関する情報を整理したりしているところである。

で、そのサイトを以下に紹介したい。

IT初心者のための基本情報ではじめるコンピュータ科学の基礎理論 入門 | 基本情報技術者試験 受験ナビ|科目A・科目B対策から過去問解説まで 250本以上の記事を掲載

っていうか、いきなり過去問のせて、ハードルをあげるスタイルはよくないのではないだろうか?資格試験の勉強をしている人にとってはそれほど難しくはなさそうだけど、なんていうか、「もやもやしている疑問が解けたときに書き込むトピック」で扱いたい文章で問題が書かれてあり(つまり、コンピューターにそれなりに精通している人にとってはわかる文章だが、門外漢は3度読んでも問題文の意味自体がわからないので、そこで答えをみてももやもやして資格試験自体を断念してしまいそうな文章になっている)そこはどうにかしたほうがいいのでは?と思ったりする。(試験問題自体が、登場人物に状況説明をセリフでやらせている、なろう系小説になれた文系学科出身のプログラマー志望者に理系の厳しさをつきつける必要最低限の簡素な文章で書かれた問題文となっている。)

答えが以下のとおりで

論理和を簡単に説明すると、A or B というやつで、AまたはBのどちらかが1であれば1となり、どちらも0の場合0が返ってくる計算式(とかんがえてよい)

排他的論理和は、A xor Bというやつで、AかBの片方が1でもう一方が0の場合、1となり、それ以外は0が返ってくる計算式。

つまりこの問題を解くためには、まず16進数を2進数に直す必要があり、それは解説文でも00とFFを0(8個)と1(8個)に変換していて、まぁそれはよい。

問題はここからで、

ビット列と排他的論理和をとるというのは、 2 つのデータの桁どうしで排他的論理和の演算を行うという意味です。

とあるが、2つのデータってのが、一見すると16進数00とFFのように思えるが、問題文を読むと、どちらか一方しか使えず、データは1つしかないじゃん?ってなるのよね。

でも、問題文は00とFFの両方を使えとは言っておらず、「8ビットの値」を00とFFを2進数に変換したやつをつかって、反転させろとしか言っておらず、アテクシの読解力が足りてないだけでした。すいません。みたいなことはとりあえずおいておくにしても、

排他的論理和では、 1 に対応する桁が反転して、 0 に対応する桁が変化しません。
論理和では、 1 に対応する桁が 1 になり、 0 に対応する桁が変化しません。

これが初見殺しというか、意味不明に思えませんか?私(素に戻っている)だけですか、そうですか。

ツッコミを入れる前に、とりあえずアテクシの解法を以下に書いておきます。

まず問題文の8ビット(1が8つあるから、というか問題文のFFと同じ数字である)の値を11111111(これをAとする)(コピペしまくる予定、唐突なtips、クリップボードに過去コピペしたデータはウィンドウズキーを押しながらVキーを押すことで探せるぞ!)とします。

次にAと問題文の16進数FFを変換した11111111(これをBとする)を縦にならべてxor(排他的論理和)で計算してみます。

イメージとしてはこんな感じ

11111111(A)
xor
11111111(B)

:arrow_down:

00000000

という計算結果になって、Aの1ビット単位の数字が0に変りました。

排他的論理和は、A xor Bというやつで、AかBの片方が1でもう一方が0の場合、1となり、それ以外は0が返ってくる計算式。

上記のアテクシの説明文を再掲すると、以上のように、1と1では0になるので、8桁全部が0になった答えが返ってきているわけである。

では、もうひとつの問題文の16進数00を2進数に変換した数である00000000(これをCとする)を使って、計算してみたい。

11111111(A)
xor
00000000(C)

:arrow_down:

11111111

となり、Aの1ビットの単位の数字は1のままで反転しないことになる。

ではサイトの解説文を見てみよう。

排他的論理和では、 1 に対応する桁が反転して、 0 に対応する桁が変化しません。

というわけで、この文章になろう文系のアテクシがツッコミをいれるとすれば、1に対応するというその1がなんの1で対応する相手の桁はどこの桁かが書かれていないことにある。

アテクシの説明文を元に上記の文章を解説すると、対応する桁というのは、Aのことで、1というのはBで0というのはCのことであろう。

つまり

したがって、選択肢ウが正解です。

初心者が従えない雰囲気の説明文を入門編の初っ端にもってくるのは、商売としていかがなものであろうか?(っていうか、寒い夜に長文を打っていると、肩の血行が悪くなって、めっちゃ肩が痛くなる・・・)

いちおう参考にAIチャットによる一般的な論理和と排他的論理和の解説文を貼っておきます。

「いいね!」 1

最近、今話題のAI統合エディタCursorを導入して、ちょっといじってみたりしています。凄まじい勢いでAIがコードを書いてくれて、依然十数時間かけて学びながら完成?させた「底抜けテトリス」が、1分もかからず書いてもらえました。底抜けまでは指示してないんですけどね :joy:奇跡はあるよ、ここにあるよ。

SokonukeTetris
↑Cursor他力版。
picoris
↑Pico8自力版。

「いいね!」 4

AIにコーディングさせるのはずいぶんと便利ですよね……驚くほど……
このテトリスがたったの1分か……:innocent:

我が家の確定申告用帳簿作成も今年からAI式になりました。文書をスキャンするだけでカネの動きを分類・計算してExcelへ。
旧来の読み取り用ソフトが出来なかった部分にAIがめっちゃ効く。
そんなソフトのコードさえAIで自家製作できる時代になってしまった。

知識量というアドバンテージがどんどん陳腐化してしまって、むしろ思考力というかあるいは推理力というか、AIの回答をブラッシュアップできる能力が将来は価値のあるスキルになりそうな予感。

「いいね!」 3

cursorはプログラミングだけではなく、文章作成にも有用らしく、いろいろな可能性が見えてきそうな気がしますね。アテクシもそのうち(といっても、いつになるやらw)cursor触って見ようと思います。vscode互換らしいので、vscode使ってた人は、扱いやすいかもしれません。

「いいね!」 2

昔はフリーソフトを検索して、あれこれ試して、なるだけコストを抑えるやり方だったのが、最近は、いい感じのプロンプトみたいなのを探しながら、(というか、的確にAIさんと対話できれば、それすら不要かも)自分で使う用であれば、自作できるのは、IT業界のDIY化といっていいくらいの革命だと思います。

一方、企業側もそれに対抗するように、ハード側に高度なプログラムを仕込んだり、暗号化したりと、簡単には解除できないようにすることで、(もちろん、その結果、ハードを買い替えなくてもアップデートすることで、性能が良くなるという利便性はありますけども)物質的にDIYできないようにして、依存させる方向になってきているように感じます。

例えばパソコンはなんとかいまのところ、ちょっと古くても新しいOSを入れることができますが、スマホはそのへんが難しく、OSを新しくしたい場合は、ハードごと交換する必要がありますからね。あとは、一時EU圏で、i-phoneのバッテリーを自前で交換できないのが問題になっておりました。

「いいね!」 1

rootingすればAndroidの更新は可能ですし、iOSもjailbreakすればいいのでは……? :thinking:
とはいうものの、現状は最新OSに大した価値は無いかもしれません。Windows11は10と比べて占有メモリが多くなりますし、AndroidもiOSも右に同じ。古い機種に最新OSっていうのは地獄への道ですよ。どうしても最新機能をつかってみたい、というなら最新OSが利きますけれど、それほど大した機能もないし……

ハードウェアコストの問題を最重要と捉える場合、結局はArchを自分でカスタムして使うのがいいので、なんというか、貧乏人は勉強が必須だなあ、と病気してからしみじみ思います。金がないと勉強するようになってしまう:innocent:
けっこういろんなことをDIYしないとコストは下がらないんですよね。