
はてなキーワード:UNIXとは
と質問とした所、
いい質問。ただ、**今回私が提示したC#コード(MemoryMappedFile + Parallel.For でCR を数える)**には、明確に一つの「このネット上の記事/リポジトリをそのままコピーした」元ネタはありません。
いくつか似たアイデアを使ってる部分と参考になる記事/ドキュメントはあるので、それらを紹介します:
---
*Microsoftドキュメント — Memory-Mapped Files (.NET)*
([Microsoft Learn][1])
*Kieren Johnstone: 高速に MemoryMappedFileからバイト列を読む方法(StackOverflow)*
`MemoryMappedViewAccessor` を使って unsafeコードからポインタを取得し、Marshal.Copy で効率よく読み出す方法。
([StackOverflow][2])
*Red-Gate: Sharingis Caring: Using Memory Mapped Files in .NET*
MemoryMappedFile を使ったキャッシングなどの応用。
*Stephen Cleary のブログ: Memory-Mapped Files と Overlaid Structs*
メモリマップトファイルへ構造体を重ねて(オーバーレイ)扱う方法など。
([blog.stephencleary.com][4])
---
もしよければ、**あなたのコード(CR を数えるもの)に特化した元ネタをさらに探してみます**。やりましょうか?
[1]:https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"
[2]:https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."
[3]:https://www.red-gate.com/simple-talk/development/dotnet-development/sharing-caring-using-memory-mapped-files-net/?utm_source=chatgpt.com "Sharingis Caring: Using Memory Mapped Files in .NET"
[4]:https://blog.stephencleary.com/2023/09/memory-mapped-files-overlaid-structs.html?utm_source=chatgpt.com "Memory-Mapped Files and Overlaid Structs"
ChatGPT:
が、出てきて、やってくれと言ったら、こういうのが出てきた。
了解しました — 広く(英語・日本語・GitHub・ブログ・StackOverflow 等)再検索しました。結論と見つかった“近い”ソースをまとめます。
結論(要点)**
「あなたが求めている**MemoryMappedFile を使い、UTF-8バイナリ中の `CR`(0x0D)だけを数える・マルチスレッドで分割して処理する**」という **完全一致の“元ネタ”ソースコード**は、公開されたweb 上のリポジトリや記事の中では見つかりませんでした(複数の検索ワード/検索対象で確認)。([hyr.mn][1])
ただし、ほぼ同種の要素(メモリマップドファイルの読み方・大きなファイルの行数カウント・バイト単位カウントを高速化する手法)は複数見つかりました。これらを組み合わせれば、先に示した実装は典型的なパターンであることが確認できます。([Microsoft Learn][2])
見つかった“近い”・参考になりそうなソース(抜粋)**
1. .NET の公式ドキュメント(MemoryMappedFile の説明) — `MemoryMappedFile` の基本とCreateViewStream /CreateViewAccessor の使い方。必須の参照。([Microsoft Learn][2])
2. 「Countinglines withC#」というブログ記事(C# で改行(CR/LF)カウントに関する実装とGitHubリンク) — 行数カウントを目的とした実装パターンがある。([hyr.mn][1])
3. StackOverflow:MemoryMappedFileから高速にバイトを読む方法(`MemoryMappedViewAccessor` / unsafeポインタ / Marshal.Copy 等の議論) — 高速実装のヒント。([StackOverflow][3])
4. StackOverflow/Q&A:ファイル中のLF/CR の数を求める方法に関するスレッド(`grep -c $'\r'` 等のunix 例やC# でのカウント方法の議論)。([StackOverflow][4])
5.GitHub のサンプルリポジトリ(MemoryMappedFile のテスト/サンプル) —メモリマップドファイルを使う実装例。([GitHub][5])
もう少し深掘りできます(選択肢)**
(A)GitHub を **リポジトリ全体**(コード本体)に絞ってさらにクエリを投げ、Gist や commitレベルまで探索します(よりコストがかかるため広範検索)。
(B)ブログ・技術記事を対象に **全文一致(コード断片)検索** を行い、私が先に示したC#コードの実際の一節(たとえば `mmf.CreateViewStream(offset, size)` や `Interlocked.Add(ref totalCount, localCount)` など)を直接検索して完全一致を探します。
(C) 「オリジナルはGitHub にあるはず」と思われるなら、あなたが覚えている**リポジトリ名の断片/作者名/投稿日**などを教えていただければ、それを手がかりに探します(断片情報があるとヒット率がぐっと上がります)。
どれを優先して探しましょうか?(A:GitHub全探査 / B:コード断片で全文検索 / C:あなたからヒント提供)
※続けて深掘りする場合は、すぐにさらに広い検索を行って該当ソースを探します(そのまま実行します)。
[1]:https://hyr.mn/catching-flowers-with-a-net?utm_source=chatgpt.com "Countinglines withC# - hyr.mn"
[2]:https://learn.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files?utm_source=chatgpt.com "Memory-Mapped Files - .NET"
[3]:https://stackoverflow.com/questions/7956167/how-can-i-quickly-read-bytes-from-a-memory-mapped-file-in-net?utm_source=chatgpt.com "How can I quickly read bytes from a memory mapped file in ..."
[4]:https://stackoverflow.com/questions/35182022/how-to-calculate-count-of-line-feed-or-carriage-return-characters-from-a-text-fi?utm_source=chatgpt.com "How to calculate count ofline feed or carriage return ..."
[5]:https://github.com/byGeek/MemoryMappedFileTest?utm_source=chatgpt.com "test csharp code for using memory mapped file."
ダサいからなんなの?ダサくて上等だ。普通にプロでもwindowsサーバーとかに主に関わってる人もいるわけでITの仕事が全部unixだと思ってるのおかしい。
dorawiiより
-----BEGINPGP SIGNEDMESSAGE-----Hash: SHA512https://anond.hatelabo.jp/20251113165348# -----BEGINPGP SIGNATURE-----iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaRWOjgAKCRBwMdsubs4+SBu0AQDCk+381mDVI03iAQpYSAOZY6FCGhhwwXzJqzDcRo+DmQD/S65odOwdUQRkH/G1AzmlMJFWB6kKNGjLhqCtDOw0GwY==WFd7-----ENDPGP SIGNATURE-----
ChatGPTに聞いたらええんちゃうか
いい質問ですね!
これ、実は「どっちが正しい」みたいな決着はなくて、言語文化や時代背景によって意見が分かれる話題なんです。
---
1. for(;;) vs while(1) vs while(true)
* `for(初期化; 条件;更新)` のすべてを省略すると無条件ループになる。
* 昔は「最適化や挙動が明確」という理由で好まれることもあった。
* ただし「1って何?ブール値?」と初学者には直感的でないかも。
*C++やJava、C#などブール型が明確な言語では「一番可読性が高い」。
* 「ずっと真の間繰り返す」という自然な書き方なので、最近はこちらが推奨されることが多い。
* Cではtrueを使うには stdbool.h をインクルードする必要があるので、昔は避けられがちだった。
---
2. 「for(;;)派」の人は誰?
ネットでよく言われるのは、Linuxカーネルのコード規約とか古いUNIX文化の影響です。
* 「無限ループは for(;;) を使う」とカーネル開発のスタイルガイドで書かれている。
*理由は「歴史的にCで最も標準的で、誰もが見慣れているから」。
要するに「C文化圏ではfor(;;)が王道」というだけで、現代の教育やC++/Javaなどの文脈では while(true) の方が読みやすい、という感じです。
---
3. まとめると
なので、初学者が「while(true)の方が可読性高い」と思うのは大正解です 👍
---
👉質問:
UNIX哲学の「正常動作時は何もprintしない」という原則ですね。
エラーや警告、またはユーザーが明示的に要求した結果以外は、出力すべきではないとされています。
HTMLを使用する際には、さまざまな問題が発生することがあります。まず、HTMLが正しく表示されない主な原因として、タグの閉じ忘れやネスト(入れ子)のミスが挙げられます。たとえば、
タグが正しく閉じられていない場合、ブラウザは意図した通りにコンテンツを表示できません。このようなエラーを検出するには、W3Cのバリデーションツールを使うのが有効です。
次に、画像が表示されない問題については、<img>タグのsrc属性で指定されたパスが間違っている可能性があります。ファイルが存在するかどうか、また拡張子(.jpg、.pngなど)が正しいかを確認しましょう。さらに、ファイル名の大文字と小文字が一致していない場合も、特にUnix系のサーバーでは読み込まれない原因になります。
https://mavenanalytics.io/project/37984
https://mavenanalytics.io/project/37985
https://mavenanalytics.io/project/37992
リンクが機能しない場合は、タグのhref属性が誤っているか、リンク先のページが存在しないことが考えられます。相対パスと絶対パスの違いを理解し、正確なURLを記述することが大切です。また、CSSがページに反映されない問題もよくあります。これはCSSファイルのパス指定が間違っていたり、セレクターの書き方にミスがあったりすることが原因です。キャッシュが影響することもあるため、ページをリロードする際はCtrl + F5 https://mavenanalytics.io/project/37998で強制的に更新するのがおすすめです。
最後に、フォームが正しく送信されないケースでは、<form>タグのaction属性に誤りがあることが多く、また<input>タグにname属性が設定されていないと、データがサーバーに送られません。JavaScript https://mavenanalytics.io/project/37999を使用している場合は、開発者ツール(F12)を使ってコンソールにエラーが出ていないか確認するのがよいでしょう。
このように、HTMLのトラブルを解決するには、基本的なタグの構造やパス指定の正確さ、そしてブラウザの開発者ツールを活用する知識が不可欠です。
自分はAndroidからiPhoneに乗り換えた人だけど、ただ使うだけなら絶対にiPhoneのほうが使いやすい。
なぜだかわからないけど、iPhoneのほうが手に馴染むというか、直感的に操作できる感じというか。
唯一、円安もあって値段の高さだけがどうにもネックだけど、価格以外の理由でAndroidを選ぶ理由が全くわからない。
Androidのように自由にいじれないとか言ってる人もいるけど、何をどういじるんだ?
そもそもAndroidにできてiPhoneにできないことというのが、全く思いつかない。
なので正直、iPhoneがあってなおAndroidを選ぶというのは、クライアント用途でWindowsよりもLinuxを選ぶみたいな奇妙さを感じてしまうんだわ。
例えるならAndroidは機種ごとにディストリビューションが違うみたいな感じで、多様性なんてそんないいもんじゃないことの証明になっているとさえ思う。
そこに使い勝手の話を加味すると、それこそクライアント用途については「UNIXなんてダメだ」と思っているけど、それがスマホでも再現したイメージしかない。
何よりLinuxなんて登場してから10年くらいは、本当に「ワナビーのクソガキのためのオモチャ」みたいな位置づけで、フリーのUNIXというカテゴリでさえ本命は*BSDだった。
結論から言うと、「Macはウイルスが少ない」という認識は現在も“相対的には”正しいですが、状況は年々変化しています。
主な理由は以下の通りです:
Windowsは圧倒的なシェアを持つため、攻撃者にとって「効率の良い標的」でした。Macは長年シェアが少なかったため、ウイルス作者から狙われにくかったのです。
macOSはUNIXベースで、アクセス権限管理が厳格。さらに「Gatekeeper」や「XProtect」など、標準で強力なセキュリティ機能が搭載されています。これにより、不正なソフトの実行や既知のマルウェアの侵入を自動的に防ぐことができます。
App Storeで配布されるアプリはAppleの厳格な審査を経ているため、マルウェアが混入しにくい仕組みとなっています。
シェア拡大やサイバー攻撃の巧妙化により、Macを狙う攻撃も増えています。OSやアプリの脆弱性を突いた攻撃、Web経由やメール経由のマルウェア感染も確認されています。
標準のセキュリティ機能(Gatekeeper、XProtectなど)は強力ですが、未知のマルウェアやゼロデイ攻撃には対応しきれない場合もあります。実際に、Apple自身も定期的にセキュリティアップデートや脆弱性修正を行っています。
セキュリティソフトの導入やOS・アプリの最新化、怪しいサイトやメールのリンクを開かないなど、ユーザー自身の対策も重要です。
これは再インストールかなあ。
まさか復旧にネットワークが必須というアホなモジュールをubuntuが採用するとは思わなかった。
いかれてるよ。
いつものようにsambaとteratermでubuntu24LTSにアクセスして作業していたら突然の切断。
そして起動しない。
mount /snap/core22/1908: special device /var/lib/snapd/snaps/core22_1908.snapdoes not exist.
can'tlook blockdev
みたいなエラーメッセージが出ていて、よくわからないけどネットワークブートをしたいのか1分カウントダウンをしていた。
ただし、NICを認識していないっぽくてネットワークには出れない。
しかないので、エラーメッセージを手で描き移すという原始人みたいなことをしながらchatgpt先生に聞いてみると、どうやらsnapdが壊れてしまったみたいだ。
このSSDを別のマシンに刺してみると、パーティションは生きているmountもできる。
とりあえずtarでバックアップを取った。SSDのデータは無事らしい。
さて復旧なんだけど・・・これができないんだよな。
/var/lib/snapd/snaps/core22_1908.snap がないならコピーすればいいじゃんということでコピーを試みるも、正常に動作するubuntu24マシンにはそんなファイルはない。
同じUSBからインストールしたOSのはずなのに意味わからん。
しかたないので、chrootしてsnap refreshcoreを実行することにした。
sudo mount --bind /dev /mnt/devsudo mount --bind /dev/pts /mnt/dev/ptssudo mount --bind /proc /mnt/procsudo mount --bind /sys /mnt/syssudochroot /mnt#chroot内でsnap refreshcore
chatgptがいうにはこうやると復旧できるらしいが、失敗!
error: cannot communicate with server: Post "http://localhost/v2/snaps/core": dialunix /run/snapd.socket:connect: no such file or directory
やはり、ちゃんと動く方のubuntu24にはsnapdはいないようだ。
パーテーションもちゃんと見えるのに、grubとかでkernelは起動しているのに、snapdとかゴミが正しく動作しないだけでOSの再インストールをしないといけなさそうだ。
余計な手間を増やすんじゃないよ。
ubuntuインストーラーのUSBをさして、nic認識させたらCtrl+F1..F6とかでインストーラーから飛び降りてmountして復旧する作戦も試してみた。
そしたら起動時のエラーは消えたけどやはり緊急モードでしか起動しない。
もういいよ。バックアップを取っているし、再インストールしよう。
オープンソース文化が育った背景には、技術的な実利や“止まれぬ事情”も大いにありました。
⸻
たとえば1970〜80年代のUNIX系OSの時代には、同じ「UNIX」と名がついていてもベンダーごとに仕様が異なっていました(SystemV系、BSD系など)。そのうえ、
こうした状況では、ソースコードを配布しないと移植が不可能だったんです。
⸻
つまり:
⸻
なので、「思想的に自由を重んじたからソースを開いた」だけではなく、閉じていたら回らなかったという実情がちゃんとあったんです。
フリーランス時代とか含めて割といろんなとこで仕事してるけど、最近はWindowsをメインで使ってるエンジニアってほとんど見ないよね
営業とか企画とかはWindowsっぽいけど、最近はOffice依存も減ったからMacで十分なんだよね
というかOfficeも365になってOS依存がなくなったからブラウザが動けばどこでもいいでしょ
逆にブラウザはAppleとはいえSafariは微妙でChromeしか使ってない
そもそも、今時のソフトウェアエンジニアやってたらiOS対応って絶対に必要でXCodeが必要になるでしょ
WinとかAndroidはVMで動くけど逆は動かないんだからMacにするしか選択肢ないと思うんだけど
あとは、タブレットたまに使うのと通知を即座に知りたいからWatchは必要で
Unix系もMacの方が情報が揃ってるし便利(どうせDocker動かすだけだったりするけど)
まぁWindowsでもWSL2とか使えば仕事出来なくは無いけれど
何回かトラブったり対応してなかったりして諦めてMacになったかな
そしてMacだと、トラブルがあっても検索したら絶対に同様のトラブル起こしてる人がヒットするから解決策がすぐ分かる
最近だとChatGPTに聞けば懇切丁寧に教えてくれる(brewとXCode周りのトラブルとか)
Macで困ることはSteamとかゲームするときで、ゲーミングPCはWindows一択
あんまり関わったことないけど、ゲーム開発はWindowsユーザーが多いのかな
Permalink |記事への反応(26) | 14:07