今回のスレタイはちゃんとコンパイル通ります
前回の反省を活かして
今回のスレタイはちゃんとコンパイル通ります
前回の反省を活かして
プログラマではないから何言語かわからない
気が向いたら環境構築するね
スレタイはC言語だね
C++とかObjective-CみたいなCのスーパーセットでももちろん通る
昔のCでは main 関数の return 文省略できなかった気がして調べてみたらバージョンごとの仕様まとめてくれてるブログを見つけた
https://yohhoy.hatenadiary.jp/entry/20121126/p1
これによるとC99より前のCで main 関数の return 文を省略した場合返り値は未定義になるらしい知らんかった
Cこそ最強
>>4
コンパイル「は」通るから…
インタプリタでお願いします…スクリプト言語しか知らんのです
gcc13.2.1 は通った
LSI C-86 も通ったw
LSI C-86でコンパイル通るのもまあまあすごいけど動かせる環境あるのもすごいわ
物心ついた頃には32bitから64bitへの移行で騒いでたぐらいの世代だから8086とか教科書でしか見たことない
はじめて読む8086だったかな
""">>7
Pythonならそこそこわかるよ
Hello Worldのネップバージョン作ってみた
"""
神の対義語 = 0
print("".join(chr(~-15 + 60 + デスセックス * (~-神の対義語) ** デスセックス) for デスセックス in range(4, len("時だから窓から") - 4 | len("回チンポ出した"))))
スレ盛り上げるから代わりにプログラミング教えて
何かツール作りたい
ねっぷAI作りたいけどAPIというものがわからない
初心者でAIならPythonとかがいいかも
プログラム書けるねっぱーは具体的に何作ってんの?
>>11
いいよー
AIは各社環境整備に力入れててマニュアル類もめちゃくちゃ親切だから入門に良いテーマだと思う
まず作りたいアプリの形式というかどこで動くアプリにしたいのか決めよう
それによって使える言語とUIフレームワーク(ガワを作るための仕組み)に制約があるからね
ブラウザ上で動くアプリ → JavaScriptでロジックを書いてHTML/CSSでUIを作る
iOSアプリ → Swiftでロジックを書いてSwiftUIでUIを作る(ちょいむずい)
Androidアプリ → Kotlinでロジックを書いてJetpack ComposeでUIを作る(ちょいむずい)
サーバー上で完結するアプリ(botとか) → 基本的になんでもいい
手元で動かすコマンドラインアプリ → なんでもいい
あとAI系のアプリってフロントエンド(つまりブラウザ上、スマホ上)で完結することはほぼなくて、サーバー側で処理してその結果をブラウザやスマホに送る設計にするのが普通なんだけど(そうしないとAPIキーが丸見えになってお前の金でGPT-4使い放題みたいな悪用ができてしまうから)、今回は課金が発生しないAPIを使ってあとはねっぱーを信じる路線でいいと思う
>>13
ブログシステム作るスレでブログシステム作ってたりしたよ
最近放置しちゃってるけど完成させなきゃな
一応家にはラズパイがあるよ
Model3Bだった気がするけど
いいね
ラズパイ触ったことないけどこの機会に買って俺もなんかやろうかな
AI搭載したキーボードとか作ってみたいんだよね
なんかそれすごいね
DB触れるようになりたい
NDBって製品を確認するためにやらなきゃいけないんだけど
こういう製品を使うにはまず、どんな技術が必要?
データが必要とか、データベースはどんなのが必要とか。。。
NDBでググってもこれしか出てこないけど流石にこれじゃないよね
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000177182.html
RDB, HDB, NDB, OODBとかある中のNDB(ネットワーク型データベース)の話かと思ったけども現状RDBとKVSが主流のDBの世界でNDBが必要な場面って相当ニッチだしこれも違うかな
まあNDBのくだりは置いといてDB触れるようになりたいならまずは手元のパソコンにMySQLでもPostgresでもいいからDBエンジン入れて適当にデータベース作ってテーブル作って適当にデータ流し込んで好き放題いろんなSQL打ち込んでたら基本的な使い方はすぐ覚えるとおもいます
ちなみにダミーデータ生成はChatGPTとかGeminiにスキーマ渡してこのテーブルにダミーデータ流し込むSQL書いてくれって頼むとめっちゃラク
生成AIが一番輝く使い方だと思う
https://blog.ntnx.jp/entry/2022/12/07/235802
インフラエンジニアだからこれがやりたいんだよね_(:3 」∠ )_
docker使えば構築楽なんですよね!
多分
Nutanix DatabaseでNDBなのね
ぱっと調べた感じプロプライエタリソフトウェアのようだから試すハードルも高いし俺は何も助言できない
記事読んだ感じ色々コミコミで入ってるNutanix CEという製品パッケージの中でNutanix AHVっていう専用のハイパーバイザーがあってその上でサービスを動かしてるっぽいけどそれをさらにDockerの上で走らせたら二重に仮想化することになるからモッサリしそうじゃない? 実験目的ならそれでもいいのか
あと公式が提供してるDockerイメージが見当たらないからDockerでもDockerじゃなくてもそんなに手間は変わらなそう
あ、もし「手元のパソコンにMySQLでもPostgresでもいいからDBエンジン入れ」るのをDockerでやるって話だった?
環境を隔離したい事情があるならともかくちょっと試しに触ってみるだけなら逆に遠回りだと思う
パッケージマネージャーで普通に入れたらコマンド一行だから絶対そっちのほうが早い
CEの上にAHVっていう仮想化ソフトウェアが動いてて、その上に沢山VMとか立ち上げられる感じかな
なのでそのVMの一つでDocker展開してDBの処理をさせて、それとNDBを繋げる・・・のかな
やってみなくちゃわからないけど
なので、DockerでやるのはMysqlとかの環境構築かな
まあDockerじゃなくてもAnsibleとかでVM構築の自動化ができるのかな
オラワクワクしてきたぞ
あーなるほどDockerコンテナの中でNutanix CEを動かすって話かと思ったけどNutanix AHVの上でDocker Engineを走らせてその上にコンテナ立てるっていう話か
でもすでにハイパーバイザーがいるのにその上にさらに仮想化エンジン立てるのって無駄な感じしない?
LinuxディストロのisoファイルでVM立ち上げてログインしてDBMSインストールして立ち上げてデータベース作ってっていう部分を自動化したいだけなら仮想化する必要はないからAnsibleとかTerraformとかのIaCを活用するのが正解な気がする
実際の運用ってどうするんだろう
でも少なくともベアメタルの上にハイパーバイザーがあって、そこの隣に何かを起動させるのはないかもしれないから
ハイパーバイザーの上の仮想マシンで対応するしかなさそう
何の話?
>>27
HCIはベアメタルにあるブートデバイスから起動するからストレージコンテナからの起動とは少し違う
結局のところAHV上に立ち上げたVMからしかDBの構築はできない
みんながみんな知ってる範囲の話しかできないから
中継地点がない感じだね
幅広い知識持つのって難しいな
やりたい事をもっと明確化しないと
いや>>28は>>27が何に対して「でも」なのか、「そこの隣に何かを起動させる」が一体何の話なのかわからなかったから確認したかったんだ
俺のほうも言葉足らずですまん
ごめん俺のやりたいことここに書いてたわ
https://blog.ntnx.jp/entry/2022/12/06/231052
この記事と関連記事の続きをやればデータベースはとりあえず作れるかな
問題はその次に作ったデータベースで何をするかだけど、そこでプログラミングスレに貢献できそうな話題になるかもしれない
一定間隔でデータを作って投げるプログラムとか?
>>31
俺もあやふやなレスでごめん
>>29の言うとおり、起動場所を同じストレージをパーティション分けして行うのはできなくて
>>26の認識の通り、ハイパーバイザー上に立てたVMにDockerを用いて構築する…みたいな流れを考えていた
でもわざわざVM立ててたらコンテナ型の強みってないもんね
VM上で手動でDBの環境構築したほうが良いかもね
>>32
>>21の記事で前準備としてリンク貼ってあったからそれも見たな
トラブル無ければ結構簡単に導入できそうね
個人的にはAWSのRDSやGoogle CloudのCloud SQLなんかのパブリッククラウドのDBaaSと比べたときの機能や使い心地の違いとか聞きたいかも
作るものはそれこそねっぷAIとかいいんじゃない
チャットログはLLMのAPI叩くたびに送らないといけないからどこかしらに保存する必要があって、ユーザーごとにチャットログが独立ならブラウザのlocalStorageに保存すればいいんだけど共用にするならサーバー側に保存しないといけないからここでDBが活きてくる
AWSとの比較は重要そうだね
DB理解してなきゃ試せないけど
自炊おすすめ
金曜に騒ぎになってたブルスクの直接的な原因がメモリの0x9c番地にアクセスしようとした結果のクラッシュだと判明して、これがnullポインタ周りのバグからじゃないかと言われてるのでちょっと解説してみる
やったー!
まずはNULLポインタについて
コンピュータがなにか作業するときにデータを置いておくスペースとして主記憶、いわゆるメモリがあるのはおそらくみんな知ってるよね
ポインタはこのメモリ上の番地(アドレス)を格納する変数で、アドレスとデータ型の情報をあわせてどこに何をしまったかを管理できる
しかし、まだ必要なデータが用意されてないなどの理由でポインタが「どこも指していない」状態のとき、それをどう表現するべきかという問題がある
CやC派生の言語では、ポインタがNULLという特殊な場所を指しているとき、そのポインタはNULLポインタと呼ばれ、これが「どこも指していない」状態を示すものとして使われる
ちなみに「NULLという特殊な場所」というけど実体はメモリの0番地で、ここはふつうユーザーがアクセスできない領域なのでこういう特殊状態を表すための値として白羽の矢が立ったというわけ
ただ、今回は0x9c(156)という中途半端な、とはいっても0にかなり近いアドレスにアクセスしようとしてクラッシュしていて、これはクラスや構造体へのポインタがNULLポインタなのにもかかわらずそのメンバにアクセスしようとしたからじゃないかと推測されている
そもそもクラスや構造体のインスタンスの実体は、メンバ変数やらメソッドへのポインタやらを詰め合わせてメモリ上にごちゃっと載せたものなんだ
とは言っても無造作に置くわけじゃなく、コンパイラは各メンバに対してオフセット、つまり各メンバをインスタンスの先頭のアドレスから何番地先に配置するかを決めておく
これで、あるインスタンスのあるメンバにアクセスしたいときは、(先頭のアドレス) + (メンバのオフセット) で求まる番地を見に行けばいいとわかる
そして、クラスや構造体へのポインタ(例えば class MyClass に対する MyClass*)はインスタンスの先頭のアドレスを保持している
もしこれがNULLポインタだったら…?
NULLは0だから、NULLポインタからオフセットが156のメンバにアクセスしようとしたのだとすれば、そのまんま0x9c(156)という中途半端なアドレスにアクセスしようとして失敗することになる
実際に試してみよう
Nectarクラスがあるとして、nectarインスタンスを作ってメンバvolumeの値を読み出したいとする
これは正しい例
Nectar* nectar = new Nectar(); でOSに Nectar のインスタンスをメモリ上に作ってもらい、その先頭アドレスを nectar に保存して、nectar->volume でメンバ volume の値を正常に読むことができている
https://wandbox.org/permlink/TdyKvuIERX0cWdkl
これはバグっている例
Nectar* nectar = NULL; で nectar をNULLポインタにして、nectar->volume でメンバ volume の値を読もうとすると、(先頭アドレス) + (メンバのオフセット) = 0 + 8 = 8 番地にアクセスしようとして、OSにそこ入っちゃダメ!って怒られて強制終了させられる
https://wandbox.org/permlink/WNyFLKif7ioptgQf
では、今回の騒動ではなぜプログラムが強制終了するにとどまらずブルースクリーンを起こすまでに至ったのか?
それは、問題のプログラムがカーネルモードドライバだったからなのだ
https://learn.microsoft.com/ja-jp/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode
普通のプログラムはユーザーモードという制限されたモードで動く
ユーザーモードではメモリやデバイスへのアクセスはOSやカーネルモードドライバに頼んでやってもらう必要がある
そうすることで他のプログラムが使っているメモリ空間を侵食するなどの危ない動きができないようにしている
対してカーネルモードはほぼ制限なくメモリやデバイスにアクセスできる
今回の騒動を引き起こした製品はセキュリティのために他のプログラムの動きを検知したり止めたりする必要があるからカーネルモードで動かないといけないんだね
ただ、カーネルモードとはいえ、0x9c(156)なんていうアドレスにアクセスしようとしたら、そこは恐らくOSや他の重要なプロセスが使っている領域なので、OSは破壊を止めるためにカーネルモードだとしてもプログラムを強制的にクラッシュさせる可能性が高い
そしてWindowsでは、カーネルモードドライバがクラッシュすると事態を悪化させないうちに安全にセーフモードに移行できるようにOSが自決してシステムを止めるようになっている
こうしてコンピュータはブルースクリーンを映し出して止まるんだね
マサカ、
64bit時代に「一般保護違反」を引き起こす現象に遭遇するとは...
ブルースクリーン同時多発事件、大手パブリッククラウドにも影響
CrowdStrikeが原因と明言
https://www.itmedia.co.jp/news/articles/2407/19/news187.html
CrowdStrikeは、RedHatや、その他の
Linuxで使われているのに
何故、Windowsだけがクラッシュするんだ
昨日、サイバーセキュリティ技術会社 CrowdStrike が Microsoft のユーザー向けに提供した
ソフトウェア アップデートに欠陥があったため、多くの航空会社が業務を停止した。世界
最大手の航空会社の中には、フライトをキャンセルしたり、飛行機を地上にとどめたり、
チェックインや搭乗に旧式の手法に戻ったりしているところもある。しかし、世界最大の格安
航空会社であるサウスウエスト航空は、32 年前のオペレーティング システムのおかげで、
なんとか乗り切ることができている。ダラスを拠点とするサウスウエスト航空は、世界中の
航空会社を悩ませている障害の影響を昨日受けなかった。これは、同航空会社が Windows 3.0
の後継として 1992 年 4 月に初めてリリースされたバージョンである
Windows 3.1 で作業していたためである。
https://simpleflying-com.translate.goog/southwest-airlines-old-system-unaffected-it-outage/?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc
w
サウスウエスト航空の
Windows 3.1は当時のネットワークで標準的に使われていた
NovellのNetWare IPX/SPXで継がっているのかな?
1990年代PCに於いてNetWareは一世を風靡しネットワークプロトコルの
IPX/SPXやデバイスアクセス最速のeDirectory等は先進的な存在だった
2000年代に入ると1998年頃からLinux-serverやFreeBSD-server、W2k-server
等の台頭でNetWareは勢力を失っていきNovellはSUSE Linuxを買収して
SUSE LinuxにeDirectory等を移植しエンタープライズサーバー分野に進出した
*BSD等でBSDに無いAPPはエミュレーターで openSUSEのsourceを使っている