
はてなキーワード:MSDNとは
リンク踏めばわかるけど、c#のregexクラスはc++みたいにイテレーター(C#だと列挙子やReadOnlySequenceクラス)を渡せない。
https://ufcpp.net/study/csharp/resource/span/#first-class-span
https://qiita.com/nskydiving/items/3af8bab5a0a63ccb9893
https://ufcpp.net/study/csharp/resource/readonlyness/
https://learn.microsoft.com/ja-jp/dotnet/framework/interop/copying-and-pinning
あと、リンク先全部読めばわかるけど、Spanやreadonly structが導入されたのはC#7.2以降(.net core2.1)なんで、油断するとコピーしまくりだったりするし、win32apiやCOMを呼び出すときにコピーされることがあるから注意しろとMSDNに書いてあったりする
と質問とした所、
いい質問。ただ、**今回私が提示した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."
某ショッピングサイトでとんでもない安さでMicrosoft Officeが売られていたり、Office付きなのに安い中古パソコンは全部非正規ってのは有名だが、ついにその闇を暴いてしまった。
仮想マシン用のライセンスが欲しくて、ネットを見ていたら、Windows11のプロダクトキーだけが売られていて、Office2021のプロダクトキーを合わせても笑っちゃうような安さだったので、「どうせ使えないんだろww」と思って興味本位で買ってみた。
購入後、数時間でプロダクトキーと一緒に使用手順がメールで送られてくるのだが、フリーダイヤルでアクティベートを行うよう書かれていて怪しさ満点。。でも、フリーダイヤルでアクティベートしたら普通に使えるようになった。
調べてみると、最安の時期には99円とかで売っていて、コンビニのおにぎりの方がまだ高いレベル。。
それはそうと、WindowsやOfficeのライセンスには購入経路などによって種類がさまざまあり、WindowsやOfficeを単体で買ってきた「リテール版」や、PCに最初からついているもので、そのPC以外では使用できない「OEM版」、そして、企業向け販売で、それを買った企業でしか使えない「ボリュームライセンス版」があり、調べてみると、おそらくこの安いライセンスは、大量購入すると安くなるボリュームライセンスの仕組みを悪用してバラ売りしているものか、企業のおこぼれを勝手に転売しているではないかと言われている。
そんな訳で、このライセンスは何なのかが気になって、Officeのライセンスの状態が見られるコマンドを見つけたので試してみると、
「Office21ProPlus2021MSDNR_Retail edition」と出た。
これの正体は「MSDNライセンス」と言って、開発者向けのもので、業務などには使えない「開発用に限って」のライセンスを発行できるサービスを悪用してライセンスを発行して転売しているわけで、ボリュームライセンスですらなく、しかも、ボリュームライセンスなんかよりも何億倍もタチが悪いものであった。
おそらく、他の激安Officeも、Office付きの中古PCも同じようなものなんだろう。もしかしたら本当にボリュームライセンスのものも紛れているかもしれないが。。
それが、ソフトウェアのランキングや、中古PCランキングの上位を占めていて、そんなPCを販売する業者がトップランカーとして表彰されているくらいだから、どうしようもないのである。
ネット上では「Microsoftやショッピングサイトのサポートに問い合わせても、買ったショップに問い合わせるように言われるだけ」、「報告しても意味がない」という声が見られ、明らかに売っちゃダメな商品にも関わらず全く対応をしないので、もはや「黙認状態」と言わざるを得ない。
配送先の住所などは抜かれているだろうし、変なライセンス使っているからとMicrosoftアカウントが垢BAN喰らうことも考えられるので、決して面白半分でも買ってはいけない。
正規品かどうかとライセンス認証できるかどうかとライセンス使用許諾違反かどうかというのはそれぞれ別の話。
ライセンス認証っていうアクティベーションの作業と、使用許諾っていうMicrosoftとのライセンス契約は別の話だからね。
Windowsの販売形態(Microsoftは使用許諾するものであって販売していないというけど)はいくつか種類があって、リテール版・DSP版・OEM版・VL版が代表的なライセンス形態。
リテール版はどんなパソコンや仮想環境でも1台のデバイスにつき1つのインスタンスまでインストールOKな単体販売のライセンス。高いやつ。
DSP版は自作パソコンやってる人にはおなじみの簡易的なパッケージで売られているライセンスで、単体販売は認められていないのでパーツとセットで購入・使用する必要がある。ライセンスがセットで買ったハードウェアに紐づいているもの。新規インストールまたはプレインストール限定。リテールよりは安い。(8/8.1の時には単体販売されていたこともある)
OEM版はパソコンメーカー向けにMicrosoftが大量に卸しているライセンスで、OEMが作ったパソコンにプレインストールする形で工場出荷したものに限って使用が許諾されているもの。中古PCとかに入っているのはだいたいこれ。ライセンスはPCと紐づいているので、出荷時にインストールされていたものなら所有者が変わってもOK。数が多いので安い。
VL版は主に企業向けにMicrosoftが卸しているライセンスで、購入した組織内に限って使用が許諾されているもの。数が多いので安い。
DSP版はLANカードみたいな安くて毒にも薬にもならんようなパーツとセットで売られることが多い。パーツとセットのライセンスなので、例えばLANカードと一緒に買ったDSP版を、セットで購入したLANカードが入っていないPCにインストールして使うのは使用許諾違反。正規品で認証も通って使えるけど使用許諾違反。
セット購入したLANカードを付けたPCにDSP版をインストールしているんだけどLANカード以外のハードウェア構成がごっそり変わってしまった場合には、正規品で使用許諾も守ってるのに認証が通らないということもある。この場合はMicrosoftのサポートに連絡が必要なこともある。正規品でライセンスも守っているなら何とかしてくれる。Microsoftアカウントに紐づけとくと便利。
OEM版は工場出荷時のPCに紐づいているので、正規品のライセンスキーでもほかのPCで使うのは使用許諾違反。
海賊版じゃない正規品で認証が通っても利用形態によっては使用許諾違反になり得る。
ソフト業界の人間じゃないのだけど、なんとか業務改善したいと思い、なんちゃってプログラミングはしてる。
Qiitaやブログなども見てるのだけど、なかなか自分の業界に合わない。
数値計算用のプログラミングやってる人なんて増えてないし、ビジュアライズするソフトもそんなに良くなってない。
Windowsしか選択肢がなかった頃は、Windowsプログラミングやってる人が多くてMSDNのよくわからない表現も、親切な人が解説してくれていた。
C++でFPGA触るプログラム書いてインタフェースをPythonなんてのは少数派なのはわかるのだけど。ドライバー周りはブラックボックス増えたように感じる。
CERNのROOT使ってグラフ描いているのも少数派に感じる。
使いにくいのだけど、ソフト業界では話題にならないから、もう改善はされないんだろうなと思ってる。
自分で直せと言われるだろうが、自分の抱えている問題を解くためだけのプログラムを組んできたので、そんなスキルはない。
機械学習が流行って、PandasやJuliaで計算する所まではよかったが、ビジュアライズが自分と合わなかった。
ヴァイオリンプロットや数字が記入されていないヒートマップなどを見ると、派手で多くの人にウケそうだけど、
議論しようとすると数値で議論できなくて誤魔化されている感じがする。
ビッグデータ必要だと言いつつ、グラフを描く段階になって、そんな大きなデータプロットできないとなって、突き放された感じがしてしまう。
Webのサーバーに登録している多くのユーザーの特徴を整理するには良いのだろうけど、
かなり興奮しているし酔っているので要領を得ないかも。
今日急にうちに派遣で来てるおっさんに飲みに誘われて、会社の近くの安い居酒屋につれていかれた。
なんで誘われたかというとこれもうまく言えないのだが、チームや全体での飲み会で近くにいることが多く、不幸なことに自分が少し聞き上手だからかもしれない。
とにかく席についてビールが来ないうちに、人をばかにしたような半笑いで話を切り出された。
おっさんが持っている10年も前にあったようなガラケーのメモ帳画面を見せられ、君になら理解できるだろうとかクィータとかいうサイトにはろくな人材がいないとかブツブツ言っていて、俺はメモの中身を読み進めているうちに顔が引きつっていくのがわかってなぜか記事自体よりもそのことで笑いが止まらなくなりそうなった。
しばらく自分はどうすればいいのか知らないふりをするべきか、なだめたほうがいいのかまじでわからなかったのだが、結局記事の本意を聞きたい好奇心には打ち勝てなかった。
ちなみに自分の仕事場ではWinXPが現役で動いている。派遣おっさんも含め会社がそういうカラーだと言えば伝わるだろうか。
自分は趣味でReact(ないしReactNative) とかで家計簿アプリを作っているし、Androidも(それこそJavaでだが)やっていてちょっと新しい技術は知っているというレベルである。
端的に言うと「必修」という意味で使ったらしい。ルー大柴かおまえは。いや意味が通ってないしルーに失礼か。
・JavaとJavascriptが同列になっている点について
どうやらプロトタイプベースのオブジェクト志向という意味をはきちがえている。
つまりJavascriptはオブジェクト指向言語のプロトタイプとして生まれた言語であり、完全オブジェクト指向言語(これも意味がわからなかった)のJavaとは切っても切り離せない関係であると思っているらしい。もう自分はここらへんから笑いが変な声で漏れる笑いを堪えられなくなっていて、喘息気味なんですとかアホな言い訳で必死にごまかそうとしていたんだけれど、この派遣のおっさんに対してそこまで気を使っている自分にも笑いが止まらなくなってまあなんというか、おもしろかった。
Rubyが(というかRORが?)動作が遅いという話をどこかで読んだか聞いたかしたらしく、そして動作が遅いかわりに処理がしっかりしている(現文ママ)という位置付けの言語だと思っているらしい。正確性が必要な処理はサブルーチンにしたRubyに投げるべきだとかなんとか。
パッセンジャーよりもエンジンクスにひもづけるべき(現文ママ)とか言っててもうビールがまずくて仕方ない。
・MSDN
自分はMSDNは学生時代にVisualC++とかで使ったことがあって、デスクトップアプリ用のライブラリだとずっと思ってたんだけど、違うんですかね。(無知)
MSDM(何度聞いてもエムにしか聞こえない)の逆アセンブリ言語がC++だとか、ここの話は輪をかけて本当に何言ってるのかわからなかった。
ねこのことを考えて耐えた。
・SQL
あんま深く考えてなかったらしい。言語と名前がついているから言語のくくりに入れた、くらいのスタンス。
ちなみになぜか、使ったこともないらしいSQLiteで配列型を使えないことは知っていた。
と、ひと通り聞きたかったことを聞いた後、もうなんか疲れ果てたのでビールを半分残して帰った。
たとえばC#など.NET系のリファレンスはMSDNで読むことができる。
RubyだってHaskellだってScalaだって、公式サイトにガイドぐらい置いてある。
Oracle、DB2、MySQL、PostgreSQL、SQLite、AccessなどSQLが実装されたDBMSは様々にあるが、どれを取っても仕様が違う。
皆が標準SQLに従っていてその上で適当に増設している程度ならよいが、もはや誰も標準SQLに従う気が無い。
根幹的に必要な機能があったりなかったりするから、あるDBMSで書けるようになったからと言ってSQLを覚えたとは言えない。
これと上記1とのせいで、何かググった時に特定のDBMSでしか解決法にならないものが大量に出てくる。
最近のプログラミング言語は大抵、雑に書いたってコンパイラが適当に最適化してくれる。
同じ結果を生むような二つのコードは、よほど下手くそに書かない限りは同じような実行速度になる。
SQLもオプティマイザが最適化はするが、ほぼ同じような二つのコードで速度が全く変わったりする。
そのため実行計画というオプティマイザの中間言語のようなものを読んであげて、
より速い中間言語が生成されるようSQLをチューニングし直さなければならない。
これでは何をやっているのかわからない。
有名なサイトでは、初心者が必死で書いたような可愛らしいSQLを「それでは遅すぎるんじゃ」とけちょんけちょんにけなし、
なんかシンプルなのだけれどよくわからない文法を一杯使って実行速度を高めたのを「正解」としていたりする。
しかもその文法、ググってもろくな解説が無かったり、特定のDBMSに依存してたりと使えないオチ。
上手い人はSQLを綺麗に書く。だけど、その綺麗さの基準が人によって違う。
エディタが単なるメモ帳でしかないようなDBMSも多いから、インデントの文字数さえ個々人に任される。
インデントは2文字か4文字か。SELECTで改行するかしないか。カンマは列の後ろか、前か。
いろいろなサイトに色々なことが書いてあったけれど、全部違うこと言ってた。
つまり各々綺麗に書ければいいやということであり、読むほうも宗教が違ってもまあ綺麗なら読めるから困りはしない。
何かの解決法をググるたびに違うスタイルだからどう書いていいのかわからない。
結局なんかいろいろな上手い人のスタイルをツギハギした新たなスタイルが世に誕生してしまうのだ。
http://d.hatena.ne.jp/megascus/20180726/1532557216
----
空リプで文句言う人がいて悲しいらしいが、直接リプライで文句言う人はブロックされたみたい(https://twitter.com/neuecc/status/1022474784569876481)(https://twitter.com/megascus/status/1022431727979913217)なんで、増田で書くわ。
@megascusがMSの自動翻訳がおかしい問題をツイッター経由で知って、軽い気持ちでフィードバックしようとしたのが6月。
https://twitter.com/megascus/status/1009298346064822273
(彼はJavaプログラマーなので、.NETのフレームワークデザインガイドラインにはモチベーションがないはずなので、たぶん気まぐれからの善意)
そしたら自動でGitHubのレポジトリにissueが立つという予想しない仕掛けだったので、一週間後に気づいてちょっと驚く。
https://twitter.com/megascus/status/1011826869413470209
どうやら、初めにMicrosoftDocsが始まった2016年の時点では、フィードバックコメントはGitHubと連動なんてしていなかったらしい。
https://docs.microsoft.com/en-us/teamblog/introducing-docs-microsoft-com
それが、2018年2月にシステムが変わってGitHubと連動するようになっている。
https://docs.microsoft.com/en-us/teamblog/a-new-feedback-system-is-coming-to-docs
でもそんなのMS寄りの人しか知らなくて当然だし、日本語ページからのフィードバックの流れの中で全然説明されていないので、@megascusが驚くのも当然だし、UXは改善されるべき。
(彼はフィードバックコメントの一週間前にMicrosoftDocsについてのQiitaの投稿を読んで「こういうのって普通なのでは。」と言ってたhttps://twitter.com/megascus/status/1006760629494042626 ようだが、Qiitaの記事のフローとは異なるので、GitHub管理されてるとはまったく思わなかったんだろう。)
それよりも、割と前から、MSDNやMicrosoftDocsの日本語文書がクオリティひくい機械翻訳ベースになって、フィードバック(コメントもissueもPRも)対応にも日本語ネイティブの人がほぼ関わってなさそうな残念な感じできてるっぽいのだけど、それもたぶんMS製品に興味ない人には関係ない話だな。
@kiyokuraはそのあたりのことをわかってるMS寄りの人なのか、issueに英語でコメント。@kiyokuraのコメントは元のフィードバックとはちょっと違う話をしているが、それより@megascusはいきなり英語で割り込まれたからまた驚いたかもしれない。
で、7/24に「マイクロソフトのスタイルガイドラインに従わない」というよくわからない不当な理由でクローズ。@megascusにも@kiyokuraにも何の問題もないにもかかわらず。@megascusのコメントをちゃんと読まずに@kiyokuraのコメントだけを読んだのか(日本語がわからないならわかるやつに聞くことをしなかったのか)はわからんが、とにかくMSの対応はひどい。
windows。そのライセンス認証の向こう側には日の巨人MSの用意した秘密の花園があるという。
MSへのお布施を納めればそのスイートな世界でビジネスは円滑に進むという。
私は計算機が好きだ。
MSDN?で俺が公開したりギッハブに上げた大規模というよりマルチマシンなアプリは誰が使ってくれるんだ?
確かに正直だ。でも正直すぎるんだ。
俺が知りたいのはそこじゃない。ほらもっと簡単に〜って初心者相手すぎるのも困るんだよ。
ある一点においては感謝している。
Linuxの動くマシンをまともな互換性で安価に提供される市場を構築、維持してくれている点だ。
まあ、それもChromeBookなんかが天下を取れば用がなくなるのかもしれないが
とにかく敷居が高い。入ってもよくわからない。なんだろう情報量がMSのガチ情報しかない。
知りたいことを知るためには、そのガチの世界を、スマートなMS社員が書いた、これぐらい知ってるよね?
って感じの文章か、プロプラ独特の弊社の責任範囲はここまでですがなにか?の足切り情報ばかりだ。
で、さらにMSの独特な世界観を表す用語を理解しなくちゃいけない。
バグ票バンバン切られるイシューのようなOSSの用語で語ってくれるフレンズもいない。
辛い。
○朝食:ヨーグルト
○調子
はややー。
仕事は技術検証というか、MSDN読んで、サンプルコード写経して、いまあるシステムと連動させたりしてた。
なんだかんだで、こういう時間が一番好きかも。
Netflixで配信が始まったので毎週ちゃんと見ようと思う。
とりあえず一話と二話を見たけど、リーリエロスで傷ついた心が癒える。
癒えるけど、僕の中でのリーリエはサンムーン女主人公とイチャイチャしていたリーリエなので、もし万が一にでもサトシとイチャつきだしたらツラいわ。
それと、劇場版も配信してたので、好きなシリーズである、ゾロアークとラティとディアンシーの面白かったシーンを探して見返したりしてた。
デイリー要素回っただけ。
そろそろアクジキングの厳選やろうかな。
未プレイ。
ドット絵バッジは悪ポケであっても躍起に集めないって自分ルールだけど、大好きな悪ポケの中でも一番好きなダーテングは例外です。
(あと一台なんだっけかなあ、普通絵の方はビビヨンその1なんだけど……)
○ポケとる
月初恒例の課金。
これさ、今の所メインステージ攻略が目的だけど、その後は捕獲にSランク埋めにと、ちょっとぞっとするやりこみが待ってるのか……
別に全てのポケモンを捕獲する気はないけど、悪ポケは全部集めたい。
けど、やっかいなのが、400ステージSランククリアのサザンドラだなあ。
まあ気長にやっていこう。
キーのかけらで開けられる金のトレボが確定というイベントが始まったので、少しだけテンションが上がりいざ対人戦。
報酬は……
・ナエトル
はーーーー。