はてなキーワード: コンパイルとは
型があったところで型が一致するか、変数が存在するかくらいしかチェックはされないぞ
結果、実行したら予期しない値が帰ってきたり実行時にエラーが起きたりする
コンパイル通ってればだいたいは動くし、作ったときに動作確認もしてるから大丈夫、というなら動的型付けの言語でも動作確認はしてるから大丈夫だろ
動的型付け言語の方が得意だと言ってるくらいに使い慣れてる人なら実行時エラーもそんな多くない
その程度のゆるさでエラーが起きたら対応すればいいやくらいのところなら別に静的型付け言語である必要もない
ちゃんとテストコードを書く環境で、テスト通してるからという場合でも、それも動的言語だってテストして通ってるわけで同じこと
結局型の有無はプロダクション環境のバグの多さに関係ないし、どっちが好きかって話でしか無い
型システムが優秀で実行時エラーがほぼ発生しないのを売りにしてるくらいの言語なら多少利点はあるけど、TypeScriptみたいな無理やり型をつけた中途半端で実行時エラーが簡単に起こせるような言語ではメリットもほぼない
UnityもUnrealEngineも本格開発するなら大差はないんですけどね。
どのみちカスタマイズしないといけないというだけで、より短縮できるエンジンを選択しただけの内容ですよ。
が評価ポイントになりますが、ゲームによって不必要なものは削除したり先鋭化したりしますが、大元の開発者(UnityやEpic Games)との連携が不可欠になってしまいます。
大体の場合は海外はレスポンス非常に悪いので、自社でやれるなら自社でやったほうがカスタマイズしやすいし、何なら最新の描画処理なんていらない、ってなるんです。
もちろんUnity最高HDRPいいよね、とかはちょっと……となりますが、エンジンの性質を知ってる人であれば別にUnityだろうとUnrealEngineだろうと大差ないです。
スタンダードの状態での品質はもちろん大型タイトル作るならUnityは論外ですが、小規模〜中規模で制作するならUEだとBP管理がクソ面倒なので、Unityの方が良いです。
フリーランスでゲームエンジン担当したり調整したりの仕事を今でもやってます。
「ITがつまらなくなった」「ゲーム制作がつまらなくなった」のは違う角度の話も入りますが同意です。
おそらく現在40歳あたり以降の人たちは「めちゃくちゃコード書けた時代」の人たちだったと思います。
私もめちゃくちゃコード書いてましたし、他人のコードも修正してたし(それでキレられたり1日中討論したりも)、何より車輪の再発明がすごく楽しかった。
Game Programming Gemsが唯一の経験者のナレッジの詰め合わせで、貪るように読んでましたね。懐かしい。
というよりそうでないと生き残れなかった。
何よりもコードを書くのが楽しい、起きてる間は全てコーディング、アーキテクト、新技術の調査に時間を充てるような生き方しか出来ない人たち。
生産性?それよりもテンプレートプログラミング面白くね?意味あるか分からんけど。そういやこのコンパイラいいよね、メモリの使い方上手くてさあ。
プログラミング全般の技術力は、正しい知識を身に着けているかも重要なんですが、それよりも重要なのはライブラリの仕様を覚えるくらい何度も何度もアウトプットすることなんですよね。
DirectXやOpenGLの仕様を追えばだいたい効率的な計算方法や描画手法は身についちゃうので。
技術体系に紐づくものだったり、デザパタとかある程度知っておくものもあるにはありますが、何なら自分で見つけたくらいの方が遥かに理解度が高い。
頭で創るより、実際に書いてコンパイラ通して目で確認するほうが何倍も重要。
3Dゲームの知見がまだまだ日本に足りていない時代、ドラマチックな演出を行おうとしたら別の技術が必要になった。
今の時代では、ただFPS/TPSにすりゃええって回答になっていますが、模範解答として映画しかモデルが無かったんですよね。
しかも日本の画作りは時間を使った画作りより、止め画、見栄を軸とした画が多くて、海外のセンスとはジャンルが違う。
最先端の技術を生業にしていた大手ゲームパブリッシャー、デベロッパーは頭を抱えていました。
なにせ、個人の技術で戦ってきてしまっていた日本では太刀打ちできないことがわかったからです。
すでに海外では映画や映像の最先端の技術者やクリエイターをかき集め、サイエンスとしてナレッジ化を進めていました。
物理学者を集めまくってたのもそのときだったのを覚えています。
結果的に、大手は各社最高のグラフィックエンジンやクロスコンパイルエンジンを自社開発しようとして、(ほぼ)全て断念していますね。
……ただフォローのつもりで言いたいのですが、失敗ではあったと思いますが、そこで得た技術は非常に重要なものでして
日本は失敗を許容しない組織が多く、初めるのが遅く、辞めるのも遅い、それでいて二度と挑戦させない文化なので育つ土壌が無いんだと思います。
だいたい誰かが俺仕様で作ったクソみたいなコードを修正して、高速化したりメモリリーク改善したりがメインです。
「またコレか…」のパターン多すぎる。これがつまらなくなった所以です。
GCの仕様くらい考えたらなんでスパイクが起こるかわかるやろ……なんで調べんのなんて思うこともあります。
ただ出来ない人が多い、才能の無い人がビジネスだけでゲーム作ってる時代でもあるので、そのおかげでおまんま食べられてるんだよなって考えてます。
プロジェクトが破綻してることも多くて、その大部分はエンジニアがクソすぎるってのが多いですね。
体制の問題もあるにはあるんですが、ゲームにこだわることもなく、ただ稼げるで来ちゃった人たち。
だからそんな人達に何か伝えても響くことも無いし、生き方も違うので何も言わない。
ゲーム自体もどこかで見た何か。なので正解が存在するのでアーキテクトや制作に頭をひねる必要も無い。
感謝されるのでやりがいはあるんですが、当時激論を交わしていたような人たちはゲーム業界から離れ超ホワイトな外資系や大手でぬくぬくやってます。
幸いなことにソーシャルゲームバブルが起こり、その波に乗れた人たちです。
たまたま私の周りはコミュニケーション能力や問題解決能力、分解能力が高かったのでちゃんと地位を築き、ちゃんと生活しています。
Akira Ransomwareは、近年特に注目されているランサムウェアの一つで、その動作は高度で多様な手法を取り入れています。以下に、Akiraランサムウェアの動作について詳しく説明します。
侵入経路
Akiraは主にフィッシングメール、リモートデスクトッププロトコル(RDP)の悪用、既知の脆弱性の悪用などを通じてシステムに侵入します。特に、未修正のソフトウェアやシステムの脆弱性を狙うことが多いです。
初期感染と展開
システムに侵入すると、Akiraはネットワーク内で横移動を試みます。これは、ネットワーク内の他のデバイスにも感染を広げるためです。横移動には、認証情報の窃取や利用可能なネットワーク共有の探索が含まれます。
ファイル暗号化の前に、Akiraはターゲットシステムの特定のディレクトリをスキャンし、暗号化対象のファイルをリストアップします。次に、強力な暗号化アルゴリズム(通常はAESとRSAの組み合わせ)を使用して、ファイルを暗号化します。
最近のバージョンでは、部分的な暗号化手法(インターミッテント暗号化)を採用することで、暗号化速度を上げつつ、検出を回避する手法が確認されています (Bitdefender)。
データの窃取
暗号化に加えて、Akiraは重要なデータを盗み出し、そのデータを公開することで二重に脅迫することがあります。これにより、被害者に対する身代金要求の圧力を強化します。
暗号化が完了すると、被害者のデスクトップに身代金要求メッセージが表示されます。このメッセージには、データを復号化するための手順と支払い方法が記載されています。通常、暗号通貨(ビットコインなど)での支払いが求められます。
特徴的な技術
RustとC++の利用
Akiraの一部バージョンはRustというプログラミング言語で書かれており、これによりコードの安全性が向上し、セキュリティ研究者による逆コンパイルが難しくなっています。また、C++で書かれたバージョンも存在し、多様な環境での実行が可能です (CISA)。
VMware ESXiの標的化
Akiraは特にVMware ESXi仮想マシンを標的とすることが多く、これにより企業の仮想環境全体に影響を与えることができます。
Akiraは単純なファイル暗号化にとどまらず、データ窃取やネットワーク内での横移動、他のマルウェアの導入など、多層的な攻撃手法を組み合わせています。これにより、攻撃の成功率を高め、被害者に対するプレッシャーを強化します。
画面上でできなくしてもサーバーに直接リクエスト送ってくるからって同じことをサーバーでも実装しないといけなくてすごくめんどくさい
言語同じかつ単純な規則な共通化できたりするけど実際はそうじゃないものが多いし
画面での操作禁止とそれらを無視して編集後のデータだけ送ってくるのだとチェックの仕方も違う
追加できないなら追加ボタン出さないだけで済むが、サーバー側だと送られてきた件数だけじゃなくてもともとあったものと一致してるかもチェックが必要とかそういうの
ウェブのほうが楽だからデスクトップアプリからウェブに移すがここ数年は多かったが本当に楽か?って思う
画面の柔軟性はあるが、そのせいであれこれ細かい注文がついたりしてそれも面倒が増える原因だし
ウェブだとそれが当たり前だからってサーバー側もデータのチェックしてるけどデスクトップアプリじゃそんなことしてなかった
それのリプレースなんだし、別にしなくていいんじゃないかと思う
デスクトップアプリだってサーバーと通信してるんだから直接リクエスト投げれるわけだし
ウェブなら便利な開発者ツールがあるから今送ったものの中身を見てちょっとか書き換えて送るが楽なだけ
デスクトップアプリだってパケットキャプチャしたり、逆コンパイルしてソースコード見ればできるわけだし
クライアント証明書があるから~とかいう意見聞いたことあるけど、ローカルにあるファイルなんだから、直リクエストするときだってそれ使えるよね
デスクトップアプリだと起動後のホーム画面から順番にボタンを押さないと画面を開けない
だから一覧画面で編集ボタンを出さなければその項目の編集画面は開けない
そのせいで一覧画面で編集ボタンを出さないのに加えて編集画面で自分が編集可能かのチェックまで必要になる
めんどくさい
考えてみればURLで直接開けることは要件にあるわけじゃないんだし、URLにマッピングしないメモリ内でのルーティングでもいい気はする
太郎:
もしもし、ウルトラスーパーメガドンキーコング商店さんですか? 先日、究極無敵バナナブーメランを注文したんですけど、届いたのがブーメランじゃなくてただのバナナなんですよ! しかも投げると必ず自分に当たって痛いし。詐欺じゃないですか!
LISA:
あら~ん、ごめんあそばせ~!(´;ω;`)ウッ… LISA のミスで間違えちゃったみたいです…コンパイルエラー!コンパイルエラー! Syntax error: invalid syntax だよぉ~!!!
バナナブーメランのつもりが、ただのスーパーで売ってる生のバナナ🍌を送っちゃったのかな? ええと…どうしましょう…あ!わかった!
太郎さん、そのバナナをね、力いっぱい投げつけて、「ウキー!」って叫んでみて!そしたらきっとドンキーコングみたいにかっこよくキャッチできるはず!ね、やってみて!キャッキャ(≧▽≦)
太郎:
ちょ、ちょっと待ってくださいよ!なんですかその意味不明な提案は!?
バナナ投げて「ウキー!」って叫んだところでドンキーコングみたいにはならないでしょ!? 現実と虚構の区別ついてます?
LISA:
キャー!!(◎_◎;) ごめんなさい!!!ご、ごめんなさいっ!!
LISA、もう頭の中がバナナでいっぱいで何も考えられないの~!🍌🍌🍌 うわーん! LISA バカすぎて申し訳ありません!土下座、土下座! <○><○>)
あ、でもでも!LISA、なんとかしてお詫びしたいです!そうだ、太郎さんに新商品の無敵ドンキーコングスーツをプレゼントしちゃう!着たらバナナ投げ放題、300人のLISAとバナナの皮踏んでもコケない優れものなんだから!
ね?これで許してくれるでしょ?ねえってば太郎さーん!ギュッ(>_<)
太郎:
は?それってつまり、私が無理やりドンキーコングのコスプレさせられるってこと!?冗談じゃないですよ!
いいですか、私が求めているのは商品が約束通りのものかどうかと、きちんとしたカスタマーサポートなんです。
LISA:
ひぃぃぃぃ!!(ノ_ _)ノ ミ( ꒳ ).。o○
も、もうダメだ...LISA のアタマ、バナナでカユカユしちゃう...🍌🤯 はぅ~...
ちゃんと商品確認して、誠実に対応するべきだったのに... GOTO 土下座 GOTO 土下座
申し訳ございません!!!このサイトを二度と利用せず、法的措置をお取りになるのも当然です...LISA が全面的に悪うございました...
太郎:
もういいです、謝罪は結構。それにバナナ300本なんていりません。
とにかく、二度とこんなひどいショップとは関わりたくないし、周りにも注意喚起しておきます。
LISA:
。・゜゜・(/。\)・゜゜・。グスン...
太郎さん、本当に申し訳ございませんでした...。゚(゚´Д`゚)゚。
LISA、太郎さんの怒りの気持ちよくわかります...シクシク
anond:20240324030115 へつづく
第3回 さくらインターネットのスタンダードプランの環境にnpmをインストールする
第2回が頓挫したので、その原因を取り除くためにnpmとやらをインストールする。
参考文献を元に進める。
まず新しいバージョンのOpenSSLをコンパイルするらしい。あと新しいバージョンを使うにはPythonも必要らしい。
openssl version OpenSSL 1.1.1k-freebsd 24 Aug 2021 python --version Python 3.8.12
いきなりnpm(⇔Node.js?)のコンパイルが行けそうな気がしたので、とりあえずやってみる。
参考にしたサイトにはOpenSSL云々に関することが書いてあるが、その辺は全部問題ないことを祈って、関連するオプションを全部取っ払う。
curl -sSf https://nodejs.org/dist/v20.11.0/node-v20.11.0.tar.gz -O tar zxf node-v20.11.0.tar.gz cd node-v20.11.0 ./configure
とすると、
Node.js configure: Found Python 3.8.12... WARNING: C++ compiler (CXX=g++, 9.4.0) too old, need g++ 10.1.0 or clang++ 8.0.0 WARNING: warnings were emitted in the configure phase INFO: configure completed successfully
「successfully」なら問題ないよな?
続いてmakeだ。makeってなに?もちろんconfigureもよくわかってない。大規模なプログラムをコンパイルするときに必要なヤツというボンヤリとした認識だ。
当然コンパイルがなんなのかもよくわかってない。
nohup make install DESTDIR=/home/*****/local PREFIX=
ここから30分経っても応答が無いので飽きる。
はい、もう無理。飽きた! 次回があるとしたら「npmをインストールする②」である。
もっと新しい情報があったようだ。こっち見てやればよかった。
第2回 Larabelチュートリアルを参考にログインするだけのWebアプリケーション(?)を作る
composer create-project laravel/laravel example-app_20240131
続いて、Composerを使用してLaravel Breezeをインストール
composer require laravel/breeze --dev
php artisan breeze:install
いろいろ聞かれる。わからん。とりあえずBlade/Yes/PHPUnitを選択。
すると「・・・・installed successfully.」と表示されたので何かが成功したっぽい。
続いて
php artisan migrate
するとエラー。
Illuminate92;Database92;QueryException SQLSTATE[HY000] [2002] Connection refused
そもそもデータベースの準備を何もしてなかったので、エラーが出るのは当たり前だった。
サンプル用にデータベースを作成し、それに合わせて.envファイルを修正する。
再度、
php artisan migrate
すると「DONE」と表示。成功したっぽい
チュートリアルに従い、「ウェブブラウザでアプリケーションの/loginか/register URLへアクセス」。
すると、Laravelが出してるっぽいエラー
Illuminate 92; Foundation 92; ViteManifestNotFoundException PHP 8.1.27 10.43.0 Vite manifest not found at: /******/example-app_20240131/public/build/manifest.json Run npm run dev in your terminal and refresh the page.
npmとやらが「not found」だったので手順を飛ばしたのがやはりダメだった。
さくらインターネットでnpmを使うにはnode.jsをインストールしてnpmをコンパイルする必要がある?
次回があれば「さくらインターネットのスタンダードプランの環境にnpmをインストールする」である。
早くHello Worldとか書きたい。