
はてなキーワード:文字コードとは
utf8の文字コードで構成されたバイナリーファイルがある。このファイルの改行の数を数えよ。改行はCRのみとする。このファイルにはCR が必ず含まれており、CRで分割すればマルチスレッドで処理できる。
size_t count_cr_in_file(conststd::string&path) {
std::ifstreamfs(path,std::ios::binary);
size_t size =fs.tellg();
fs.seekg(0);
const size_tthread_count =std::thread::hardware_concurrency();
const size_t chunk_size = size /thread_count;
std::vector<std::future<size_t>> futures;
for (size_t t = 0; t <thread_count; t++) {
size_t start = t * chunk_size;
size_t end = (t ==thread_count - 1 ? size : (t + 1) * chunk_size);
futures.push_back(std::async(std::launch::async, [start, end, &path]() {
std::ifstreamfs(path,std::ios::binary);
fs.seekg(start);
size_t count = 0;
for (size_t i = start; i < end; i++) {
char c;
if (c == '\r') count++;
}
return count;
}));
}
size_ttotal = 0;
for (auto& f : futures)total += f.get();
returntotal;
}
importmmap
mm =mmap.mmap(f.fileno(), 0,access=mmap.ACCESS_READ)
returnmm.count(b'\r')
c#で書けと指示したところ、
using System;
using System.IO;
using System.IO.MemoryMappedFiles;
{
public static long CountCRInFile(stringpath)
{
using varmmf = MemoryMappedFile.CreateFromFile(path, FileMode.Open, null);
using varaccessor =mmf.CreateViewAccessor(0, 0, MemoryMappedFileAccess.Read);
long fileSize =accessor.Capacity;
int processorCount = Environment.ProcessorCount;
long chunkSize = fileSize / processorCount;
longtotal = 0;
Parallel.For(0, processorCount, i =>
{
long start = i * chunkSize;
long end = (i == processorCount - 1) ? fileSize : (i + 1) * chunkSize;
long localCount = 0;
byte b;
for (longpos = start;pos < end;pos++)
{
if (b == 0x0D) //CR
localCount++;
}
lock (lockObj)
{
total += localCount;
}
});
returntotal;
}
{
long count = CountCRInFile(path);
Console.WriteLine($"CR count = {count}");
}
}
というコードが出てきた。
実際はcrlf,lfもあり得るんだが、そこは考慮しなくてもよく、そう考えるとaiはすごいとしか言いようがない。
なお、utf8として成立する単位で区切りつつ改行を数える場合、もう一工夫いる。
ちかごろチョイチョイ来る雑なサギスパムで、差出人名(From:ヘッダの表示名)が「警察?」って書いてあって笑っちゃったんだけどさー
コレホントに「?」クェスチョンマークなのか、いわゆる文字化けで存在しない文字コードだからなのか気になったので、AIに聞いてみたのよ。
「=?iso-2022-jp?B?GyRCN1k7IRsoQj8=?= をデコードしたらどんな文字列になりますか?」
軒並みみんな違うこと言ってんじゃんクソッタレども。ちゃんと「警察?」って文字列までデコードできたヤツが居ないww
雑なバカスパムについてはこちらanond:20251007203646
今のコンピューターとかインターネットが扱う文字の体系って漢字の文化を破壊してない?
文化の発展や新しい概念の登場に従って絶えず新しい文字が生み出されてきた歴史があると思うんだが
文字コードを割り振って文字のセットに収録するっていう今のやり方だとそこに新しい字が入る余地なくない?
アルファベットの場合使える文字は固定されてても言葉の意味はその文字の並びで表すから事実上無限に語を生み出せるけど
事実上、既存の漢字の組み合わせで熟語や合成語を作るということしか許されてないというか、言い換えれば「アルファベット的なやりかたで語を生み出す」ことのみ許されてる状態。
そもそも文字コードに収録される文字自体が「文字コードを作った時点の文化」で使われてる文字なわけで、その時点で文化が固定されてる側面あるよな。
「まったく新しい一文字」を生み出す表現力が殺されてるというか。
今のような状況で新しい漢字を生み出しても、「今の文字コードの文字」がアルファベットのようなスタンダードになってしまってて新しい字を広める術が絶望的にない。
アルファベットの場合はそれが可能なんだよ。そこの圧倒的な非対称性を問題にしたい。
文字コードの仕組み自体がアルファベットフレンドリーというかラテン文字ファーストな考え方なんだよな。
今のトレンドで文字コードに絵文字が収録さていってるのが救いかな?って気もするけど、まああれは文字コードのコンソーシアム的なとこが認めた文字だけ載る感じでちょうど昔の王様が漢字を決めてたみたいな雰囲気があって文化が生み出す漢字ってのとは微妙に違うきがする。
たとえば部首とつくりを組み合わせられるようにするとか、既存の漢字を部首やつくりみたいに配置できるとか、そういうことをするだけで全く違ってくると思うんだわ。
一応負荷は気にして、一度チェックしたのは再チェックしないようにはしてるけど、コメント数分のfetchはしてる以上、一定以上の負荷はあるよなぁ。
一応、コメント数だけのAPIもあるにはあったのだけど、それはドメインが異なっていてクロスドメインを解決しないといけないので、結構面倒くさそう。
もしかしたら、週末にでも挑戦してみるかも。
preタグは、調べてみたら、使えるは使えるけど「改行はbrタグにして、1行にする」必要があるっぽい。その上で、今は「大なり小なりの半角は書けない」っぽい?
一応はpreタグが使えるけれど、自分を完全に隠したいとかでなければ、正直ここまでして増田にコードは貼り付けないかなぁ。(URL開けばいいだけなので)
preタグの右側から文章開始。大なり全角>半角>小なり全角<半角<文字コード><。ここでbrタグ→
ここで改行→
ここで解除される。
公式資料には pine decoration と書いてあるがそこまで見ても何なのかよくわからんと思う。
煎餅🍘の絵文字をビルの向こうに見える月だと思っていた外国人の話も聞いたことがある。
UNICODE の策定の基本ルールとして「既存の文字コードにあるものは全部入れる」というものがある。
既存のデータをUNICODE に変換可能なようにしないと移行が進まないから。
あまり用途が無さそうなものが入ってるのは世界各国の文字コードの歴史的事情も含めて統合しようとしているから。
闝
読み方はヒョウと読むらしい。それにしても意味が女遊び・女性に溺れるって
を表してるらしい。なぜか機種依存文字だが、表示されない方が幸せなのカモ(´・ω・`)
https://kanji.jitenon.jp/kanjiy/28272
これに至っては表情すら出来ないが、なんだこの
ふざけた字は。門に工だと
小学生でもそんな発想しないぞ!
どうでもいいけどUnicodeはU+2B519
読み方はホウ、褒める称えるなどの意味らしい。
誰もが一度はやってみたい部首の間に部首入れたらどうなるんだ!をやってみた漢字。
こうやって見ると先人って案外バカなのかもしれない…
でもやっぱりこれが一番すき
Rubyではじめるシステムトレード (Modern Alchemists Series No. 121)単行本(ソフトカバー) –2014/5/20
坂本タクマ (著)
2014年出版のこの本に記載されているコードはRuby1.9.3で動作確認されているがRuby3.2.2環境でも動作する。標準ライブラリーのみを使用しておりgemコマンドで3rd partyライブラリのインストール無しで動作するコードであることが幸いして、文字コードをutf8に変換してやればmacOSSequoiaでもほとんどのコードが動作する。
macOSで動作しないのは、PanActive Market Databaseを利用して株価データを取得するコードだ。ActiveX(COM)はWindowsでないと動作しないからだ。
本書の第3部で記述されている事柄は今でも輝きを失っていない。株式市場の銘柄コード、時系列データを格納したデータベースをメンテナンスできる人にとっては第3部は自分で売買シミュレーションコードを書く手間を省いてくれるのだ。
2025年現在、有料の金融データプロバイダーが出現しているので(e.g. J-QuantsAPI, CQG)頑張ればデータベースの作成、日々のメンテナンスができる状況が生まれている。前者の月額料金は1,650円だ。
昔、とあるプログラミングの成果物のファイルを納品したとき、お客さんから「UTF-8で納品していただく約束でしたが、Shift-JISでした。正しいファイルをいただきたいです。」とクレームがはいった。
ご存じの通り、UTF-8、SHIFT-JIS、EUCはASCIIの文字コードは同じ、互換性がある。
言ってみれば、ASCII文字しか使っていなければ、どの文字コードでエンコードしても一緒だし、この場合エディタはどの文字コードなのかを判別はできないので推測で文字コードを決めることになる。
だから、こんな風に返事した
「本ファイルはASCII文字のみを使用しているため、UTF-8とShift-JISのいずれの文字コードでも正しく認識されます。ASCII文字は、UTF-8とShift-JISのどちらにおいても共通であり、文字コードによる違いはございません。そのため、お客様のエディタ上でShift-JISと表示された場合でも、UTF-8との互換性が保たれておりますので、ご安心ください。」
返事したんだが、帰ってきたのが
「うちのエディタではShift-JISと書かれております。互換性はあるかもしれませんが、正しく認識されるように再度おくってください」と
つまり『互換性があるということで怠けないで、問題がないにしても当初の通りエディタでUTF-8と識別されるファイルを送れ』って言われた。