<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>ソースコード on akky@サイボウズラボ・ブログ</title>
		<link>https://labs.cybozu.co.jp/blog/akky/tags/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89/</link>
		<description>Recent content in ソースコード on akky@サイボウズラボ・ブログ</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Mon, 07 Mar 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://labs.cybozu.co.jp/blog/akky/tags/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>ワードプレスのソースコードから8年間懸案の変数名「おしっこ」が除去</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/03/wordpress-removed-pee-from-code/</link>
				<pubDate>Mon, 07 Mar 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/03/wordpress-removed-pee-from-code/</guid>
				<description>&lt;p&gt;ブログツールとして世界中の多くのサーバで使われている WordPress のソースコードの、数限りなくある中の&lt;a href=&#34;https://core.trac.wordpress.org/changeset/52789&#34;&gt;ちょっとした修正&lt;/a&gt;は、変数名の&amp;quot;pee&amp;quot;と&amp;quot;tinkle&amp;quot;を書き換えるというものでした。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;-442 function wpautop( $pee, $br = true ) { +442 function wpautop( $text, $br = true ) {&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;wpautop()という関数は、ブログ記事のテキストに2行以上の改行があった時、それを&lt;p&gt;タグに置換する、という働きをします。&lt;/p&gt;&#xA;&lt;p&gt;「WordPress(wp) が自動(auto)で p(タグ)をつける」といったあたりから命名された関数だろうと思いますが、WordPress の歴史は長いのでこの関数も昔から存在していたようです。&lt;/p&gt;&#xA;&lt;p&gt;それで、この関数を書いた誰かは「オートでPする」の響きからの連想か、引数名に $pee(しっこ、幼児語)を使う言葉遊びをしてしまったようですね。&lt;/p&gt;&#xA;&lt;p&gt;その後のどこかの時点の修正で $pees をループで一つずつ処理する際に、取り出す変数を $tickle (こちらも しっこ、幼児語)が使われています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://dictionary.cambridge.org/ja/dictionary/english/tinkle&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/03/wordpress-removed-pee-from-code/tinkle-meaning_hu_6f50088b2d4d2a2c.webp 247w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/03/wordpress-removed-pee-from-code/tinkle-meaning.png&#34; width=&#34;247&#34; height=&#34;143&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;# tinkle というとリトルスターぐらいしか連想しませんが、そんな意味もあるんですね。&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/QpHIdb23h9Y?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;WordPress の公式バグ管理システムからは、&lt;a href=&#34;https://core.trac.wordpress.org/ticket/25615&#34;&gt;8年前のチケット&lt;/a&gt;で初めてこの二つの変数名についての指摘がなされたことがわかります。&lt;/p&gt;</description>
			</item>
			<item>
				<title>CodeCaptcha - プログラマーだけを通すための CAPTCHA サービス</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/</link>
				<pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://www.codecaptcha.io/&#34;&gt;CodeCaptcha.io&lt;/a&gt; は、文字通り Code で CAPTCHA させるためのサービスです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.codecaptcha.io/&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top_hu_116b60f477293e7.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top_hu_7b85d1cb6f49d4d0.webp 496w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-top.png&#34; width=&#34;496&#34; height=&#34;472&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;webサービスの利用や登録時に、プログラム(bot)による不正な自動投稿や大量の連続投稿・いやがらせなどを防ぐため、人間でないとできない入力を要求する CAPTCHA 、一番よく見かけるのはグネグネと曲げられたりした文字列を入力するものだと思います。&lt;/p&gt;&#xA;&lt;p&gt;一般的なCAPTCHA の目的はbot を弾いて人間を通す関所のような役目ですが、CodeCaptcha では、この通行資格を人間ではなくプログラマ、あるいは少なくともプログラミングが多少わかる人、としているわけです。&lt;/p&gt;&#xA;&lt;p&gt;デモで出てくるプログラムはこちら。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo_hu_7c0a76b26dd522d3.webp 480w, https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo_hu_a7acb6802a4642da.webp 615w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2022/01/code-captcha/codecaptcha-io-demo.png&#34; width=&#34;615&#34; height=&#34;364&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;「プログラマといったって、道具も言語も人によってバラバラだろうし、どんな問題が出るのか?」と思いましたが、言語は JavaScript です。特にweb系のプログラマ向けなら妥当な選択ですね。そして、その中身もこれぐらいなら他言語しか知らないプログラマでも問題ないかと。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;function isEvenNumber(num) { return false; // Fix this }&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;// Fix this とあるように、関数名の意図にあうような結果を出すようにこのプログラムを直せばいいんですね。&lt;/p&gt;&#xA;&lt;p&gt;コードを書き換えるにつれて、リアルタイムでテスト結果が下部に表示されます。&lt;/p&gt;&#xA;&lt;p&gt;テストが通るように修正を終えると、PASSED となり、設定された目的の画面に移行します。&lt;/p&gt;&#xA;&lt;p&gt;問題はリロードのたびに違うものが出てきますが、どれも非常に簡単なレベルのものです。&lt;/p&gt;&#xA;&lt;p&gt;これについては、今後リンク作成時に問題の難易度を選べるようにしたいということですので、うんうんうなって時間を掛けないと解けない CodeCaptcha も使えるようになるかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;「リンクをシェアしたいけれど、シェアする相手はプログラマに限定したい」時などに使ってください、ということでした。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>オープンソースプロジェクト内のTODO個数調査</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/</link>
				<pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/</guid>
				<description>&lt;p&gt;マーティン・シュライスさん(Martin Schleiss)がブログで公開したのが、Linux をはじめとする巨大オープンソースプロジェクトのソースコードにおける「やらないといけない」あるいは「後で考える」マークである&lt;a href=&#34;https://schleiss.io/plotting-source-code-todos-for-open-source-projects&#34;&gt;&amp;ldquo;TODO&amp;quot;の個数の移り変わりをグラフ化したもの&lt;/a&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-php.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-php_hu_42d471dbed994217.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-php_hu_d84bf66808deea28.webp 724w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-php.png&#34; width=&#34;724&#34; height=&#34;413&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;基本的には、プロジェクトの年月が重なるほど、コードに書かれた TODO の個数は増えていくようです。上の PHP のグラフでは、メジャーリリースや通常リリースの時期の少し前に TODO が増えているようにも見えます。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-rust.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-rust_hu_e9989cc2ecec201c.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-rust_hu_f765e8e3ecc8e856.webp 720w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-rust.png&#34; width=&#34;720&#34; height=&#34;409&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;プロジェクトによっては単調増加ではないものも。Rust は TODO の個数自体が少ないように見えるし、途中で数個まで減っている時期もあるので、意識的に TODO の解消を目指したりしていたのかもしれません。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-nextjs.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-nextjs_hu_341bde9c23ce6f9f.webp 480w, https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-nextjs_hu_e416def6916be00e.webp 718w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2021/05/count-todos-in-oss-repositories/todos-chart-nextjs.png&#34; width=&#34;718&#34; height=&#34;422&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Next.js 、version 10 と 10.1 のどちらのリリース時期でもなく、突然増えています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://schleiss.io/plotting-source-code-todos-for-open-source-projects&#34;&gt;ブログ記事&lt;/a&gt;では言語処理系やライブラリなど、有名なもの20個弱についてグラフ化されています。&lt;/p&gt;&#xA;&lt;p&gt;プロジェクトの規模、歴史の長さによってもTODO の個数は変わりますが、規模や歴史と無関係に多い少ないもあったりもします。シュライスさんはTODO が有ることはどのオープンソースプロジェクトにおいても貢献をする余地があるということだ、と言っています。あなたが良く使っているツール/ライブラリのTODO は増えているでしょうか?&lt;/p&gt;</description>
			</item>
			<item>
				<title>名刺の裏にニューラルネットワークプログラム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/</link>
				<pubDate>Fri, 03 Jul 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://imois.in/posts/card-network/&#34;&gt;Card Network&lt;/a&gt; は、名刺の裏に印刷されたコンパクトなニューラルネットワークのソースコードです。&lt;/p&gt;&#xA;&lt;p&gt;名刺の裏にソースコード、という他の人のアイデアを見たアイルランドの大学で計算機科学を学ぶ修士生の Oisin さんが選んだのは、小さなニューラルネットワークを作る 878文字のC++のコード。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;bits/stdc++.h&amp;gt;&#xA;&#xA;typedef float f;typedef std::vector&amp;lt;f&amp;gt; v;f K=0.01,R=0.01;struct L{int w,h,i;v W,x,z;L(int i,int o){W.resize(i*o);for(f&amp;amp;a:W)a=(rand()/(1.1-(1&amp;lt;&amp;lt;31))-0.5)/sqrt(i+o+0.);w=i;h=o;}v F(v X){x=X;v a(h);i=h*w;while(i--)a[i/w]+=W[i]*x[i%w];z=a;for(f&amp;amp;i:a)i=K&amp;gt;i?K:i;return a;}v B(v Y){v (w);i=w*h;while(i--){f Z=Y[i/w]*(z[i/w]&amp;gt;0?1:K);X[i%w]+=Z*W[i];W[i]-=R*Z*x[i%w];}return X;}};int main(){L n[]{L(40,50),L(50,50),L(50,1)};int l,z,k,i=500337;while(i--){z=242-i%243;k=40;v x(k),y;while(k--)x[k]=sin((k%2?z/27/3.:z%27/5.)+6.14*k/20);y=x;for(l=0;l&amp;lt;3;l++)y=n[l].F(y);v Y{2*(y[0]-(&amp;#34;\x1e\0\\0\b\x01\0@H\374\377B\x12@\x18\x12G\302\\x10@\x12\372\377\221\x10\0\0\200\0\0\0\\x02&amp;#34;[z/8]&amp;gt;&amp;gt;z%8&amp;amp;1))};while(l--)Y=n[l].B(Y);putchar(&amp;#34; .,-*oO##&amp;#34;[(int)(y[0]*8)%9]);if(i%27&amp;lt;1)puts(i?i%243?&amp;#34;&amp;#34;:&amp;#34;\033[9A&amp;#34;:&amp;#34;\r\   --- Oisin Carroll ---\n\ gh:Oisincar  web:imois.in&amp;#34;);}}&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running_hu_e7b979b2babaea1d.webp 263w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-running.png&#34; width=&#34;263&#34; height=&#34;169&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ここではCのstructで3層のニューラルネットワークを作り、Oisin という名前の図形を表示できるように学習させています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result_hu_e093263a483b6a0d.webp 381w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/07/neural-network-code-on-name-card/namecard-machine-learning-code-result.png&#34; width=&#34;381&#34; height=&#34;341&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;エンジニアのスキルアピール、カンファレンスでの話題作り等に、自分の得意分野のコードをミニマムに名刺裏に掲載するアイデア、どうでしょうか。&lt;/p&gt;</description>
			</item>
			<item>
				<title>オリジナルZorkのソースコードがMITにより公開される</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/</link>
				<pubDate>Fri, 08 May 2020 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/</guid>
				<description>&lt;p&gt;往年のテキストアドベンチャーゲーム &lt;a href=&#34;https://github.com/MITDDC/zork&#34;&gt;Zork の1977年のソースコード&lt;/a&gt;が、&lt;a href=&#34;https://archivesspace.mit.edu/repositories/2/archival_objects/347748&#34;&gt;MITにより発見されて&lt;/a&gt;公開されました。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://archivesspace.mit.edu/repositories/2/archival_objects/347748&#34;&gt;MIT の説明&lt;/a&gt;によれば、1973年から1990年前半にかけての人工知能研・計算機科学研のバックアップテープから復元したデータが収集されているそうで、今回はその中から1977年のZork のソースコードが見つかったというわけ。&lt;/p&gt;&#xA;&lt;p&gt;コードを見てみるとこんな感じ。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;GDECL (FF) STRING&amp;gt; &amp;lt;DEFINE ILO (BODY TYPE NM1 NM2 &amp;quot;OPTIONAL&amp;quot; M1 M2) #DECL ((BODY NM1 NM2 M1 M2) STRING (TYPE) FIX) &amp;lt;COND (&amp;lt;==? .TYPE *400000000000*&amp;gt; &amp;lt;COND (&amp;lt;OR &amp;lt;AND &amp;lt;MEMBER &amp;quot;&amp;lt;FLUSH-ME&amp;gt;&amp;quot; .BODY&amp;gt; &amp;lt;NOT &amp;lt;MEMBER ,XUNM ,WINNERS&amp;gt;&amp;gt;&amp;gt; &amp;lt;AND &amp;lt;MEMBER .NM1 ,WINNERS&amp;gt; &amp;lt;MEMBER ,FF .BODY&amp;gt;&amp;gt;&amp;gt; &amp;lt;EVAL &amp;lt;PARSE .BODY&amp;gt;&amp;gt;)&amp;gt;)&amp;gt; &amp;lt;DISMISS T&amp;gt;&amp;gt;  ;&amp;quot;ROOM FUNCTIONS&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;往年のメインフレーム機 PDP-10 上で動くLISP系のMDPという言語だそうです。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.vice.com/en_us/article/a3xdk8/long-lost-zork-source-code-uploaded-to-github-but-few-people-understand-it&#34;&gt;2019年の4月にGitHubで公開された「Zorkのソースコード」&lt;/a&gt;と何が違うかですが、この時公開されたコードは、後に Zork を商用化(1979)して販売したインフォコム社が買収の後閉鎖された1980年代終わりに、社内のソースコード管理システムから取り出されたものなのに対し、今回のコードはInfocom 以前の MIT 時代に メインフレーム PDP-10 の上で動いていたものだということ。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:PDP-10_1090.jpg&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/PDP-10_1090_hu_a48329cdd9d409af.webp 480w, https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/PDP-10_1090_hu_9dd9c52b9ab85a2.webp 768w, https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/PDP-10_1090_hu_cd5c0abe0e8635b3.webp 896w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2020/05/original-mit-zork-code-found/PDP-10_1090.jpg&#34; width=&#34;896&#34; height=&#34;600&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Codem Ipsum - ソースコードを Loren Ipsum化</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/</link>
				<pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/</guid>
				<description>&lt;p&gt;JavaScript のソースコードを左側のペインに入れると、Loren Ipsum風に関数・変数名を置き換えて右側に表示してくれる、という&lt;a href=&#34;https://codemipsum.pomb.us/&#34;&gt;webサービス&lt;/a&gt;です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://ja.wikipedia.org/wiki/Lorem_ipsum&#34;&gt;本やウェブサイト制作時の文章のダミーとして使われることで有名な Lorem Ipsum&lt;/a&gt; のように、ソースコードのダミーとして使うことができるということ。&lt;/p&gt;&#xA;&lt;p&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/codem-ipsum_hu_4b0f406417680f0b.webp 480w, https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/codem-ipsum_hu_cfbf22f6feb3e4e3.webp 768w, https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/codem-ipsum_hu_3ef76ab7f6e281f9.webp 1282w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2019/11/codem-ipsum-ipsumises-source-code/codem-ipsum.png&#34; width=&#34;1282&#34; height=&#34;732&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/p&gt;&#xA;&lt;p&gt;作者は「&lt;a href=&#34;https://news.ycombinator.com/item?id=21544462&#34;&gt;文法的には正しいまま、ダミーのコードを作りたかった&lt;/a&gt;」とのことです。変換後のコードも動くのか、は不明です。たぶんいろいろ不具合がでるんじゃないかな。&lt;/p&gt;&#xA;&lt;p&gt;ソースコードは公開されたサイトのhtmlそのままですが、&lt;a href=&#34;https://github.com/pomber/codem-ipsum&#34;&gt;GitHub にも上がっています&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;https://news.ycombinator.com/item?id=21544051&#34;&gt;Hacker News&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Linuxのソースコードコメントからf*ckを消してhugにしようと提案するパッチが議論を巻き起こす</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/12/linux-patch-suggests-to-replace-f-cks-with-hugs/</link>
				<pubDate>Thu, 06 Dec 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/12/linux-patch-suggests-to-replace-f-cks-with-hugs/</guid>
				<description>&lt;p&gt;ヤルコ・サッキネンさん(Jarkko Sakkinen)が&lt;a href=&#34;https://lists.freedesktop.org/archives/dri-devel/2018-November/198581.html&#34;&gt;リナックスDRM開発者メーリングリストに提案した33行のパッチ&lt;/a&gt;は、コメント中の&amp;quot;fuck&amp;quot;を&amp;quot;hug&amp;quot;に置き換えるというだけのもの。提案の変更箇所は以下となり、変更内容はたとえば&lt;a href=&#34;http://lkml.iu.edu/hypermail/linux/kernel/1811.3/07110.html&#34;&gt;こんな感じ&lt;/a&gt;です。&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;In order to comply with the CoC, replace **** with a hug.  Jarkko Sakkinen (15): MIPS: replace **** with a hug Documentation: replace **** with a hug drm/nouveau: replace **** with a hug m68k: replace **** with a hug parisc: replace **** with a hug cpufreq: replace **** with a hug ide: replace **** with a hug media: replace **** with a hug mtd: replace **** with a hug net/sunhme: replace **** with a hug scsi: replace **** with a hug inotify: replace **** with a hug irq: replace **** with a hug lib: replace **** with a hug net: replace **** with a hug  Documentation/kernel-hacking/locking.rst | 2 +- arch/m68k/include/asm/sun3ints.h | 2 +- arch/mips/pci/ops-bridge.c | 24 +++++++++---------- arch/mips/sgi-ip22/ip22-setup.c | 2 +- arch/parisc/kernel/sys_parisc.c | 2 +- drivers/cpufreq/powernow-k7.c | 2 +- .../gpu/drm/nouveau/nvkm/subdev/bios/init.c | 2 +- .../nouveau/nvkm/subdev/pmu/fuc/macros.fuc | 2 +- drivers/ide/cmd640.c | 2 +- drivers/media/i2c/bt819.c | 8 ++++--- drivers/mtd/mtd_blkdevs.c | 2 +- drivers/net/ethernet/sun/sunhme.c | 4 ++-- drivers/scsi/qlogicpti.h | 2 +- fs/notify/inotify/inotify_user.c | 2 +- kernel/irq/timings.c | 2 +- lib/vsprintf.c | 2 +- net/core/skbuff.c | 2 +- 17 files changed, 33 insertions(+), 31 deletions(-)  -- 2.19.1&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>ソースコードコメント - 引継ぎ者への警告</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2018/06/warning-from-past-code-maintainers/</link>
				<pubDate>Fri, 08 Jun 2018 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2018/06/warning-from-past-code-maintainers/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;// Dear maintainer: // // When I wrote this code, only god and // I knew how it worked. // Now, only god knows it! // // Once you are done trying to &#39;optimize&#39; this routine, // and have realized what a terrible mistake that was, // please increment the following counter as a warning // to the next guy: // // total_hours_wasted_here = 25&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;// 引き継いだ人へ: // // これを書いたとき、なぜこれが動くのか理解してるのは神と自分だけだった。 // そして今、知っているのは神だけだ! // // このコードを「最適化」 しようとし、それがどんなに愚かな間違いだったか // 気づいたときは、下のカウンタを増やして次の担当者への警告とすること // // ここで_無駄にした_時間 = 25&lt;/code&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Untrusted - JavaScriptをいじって先へ進むRogueライクゲーム</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</link>
				<pubDate>Tue, 08 Apr 2014 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%A9%E3%82%A4%E3%82%AF%E3%82%B2%E3%83%BC%E3%83%A0&#34;&gt;ローグライクゲーム、というジャンル&lt;/a&gt;があります。Rogue(ローグ)を代表とする自動的に生成される迷路・迷宮から脱出するというゲームで、日本で有名なものでも、ネットハック、トルネコの大冒険、チョコボの不思議なダンジョンなど多数あります。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;Untrusted&lt;/a&gt; は、そのようなローグ風ゲームのバリエーションなのですが、JavaScriptのコードを操作することでパズル的な迷宮を解き、先へ進むというのが最大の特徴です。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e2d33f7720373311.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_e14b391d471db938.webp 768w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3_hu_284f229987e9c9e3.webp 1248w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-3.png&#34; width=&#34;1248&#34; height=&#34;596&#34; alt=&#34;untrusted-3&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;画面左の迷宮で、自分のキャラクター&amp;quot;@&amp;ldquo;を、階段&amp;rdquo;□&amp;ldquo;まで、カーソルキーを使って導かなければいけません。しかし、普通に上下左右に移動しただけでは、出口にたどり着くことはできなくなっています。&lt;/p&gt;&#xA;&lt;p&gt;そこで、右側のコードに書かれた、迷宮を生成するJavaScriptのコードのうち、書き換えて良いという黒地の部分を変更し、Ctrl+5 で実行するとあら不思議、壁や出口の場所を書き換えてしまうことで、次の階へと進むことができるようになるというわけです。&lt;/p&gt;&#xA;&lt;p&gt;いかだを使ったり鍵を探したりと、面ごとに違う趣向の障害が配置されています。&lt;/p&gt;&#xA;&lt;p&gt;その階がどういうトラップなのか、どんな障害が設けられているかというヒントがJavaScriptのコメントとして書かれているので、解く際の参考になるでしょう。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34;&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34; srcset=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_3f7c860a76ed17ec.webp 480w, https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2_hu_2cddc30d4d526935.webp 561w&#34; sizes=&#34;(max-width: 56rem) 100vw, 54rem&#34;&gt;&#xA;  &lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2014/04/untrusted-meta-javascript-rogue-like-game/untrusted-2.png&#34; width=&#34;561&#34; height=&#34;535&#34; alt=&#34;untrusted-2&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&#xA;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;壁を描画している部分の位置を書き換えるとか、出口の場所を移動するとか、で解ける面もありますが、後の面ではそれらを防ぐようなバリデーション・コードが追加されたりして、同じ手は2度使えないようになっています。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://alex.nisnevich.com/untrusted/&#34;&gt;UntrustedのソースコードはオープンソースとしてGitHub上で公開されています&lt;/a&gt;。ソースコードを見れば現在のダンジョンが何階あるかはわかってしまうのですが。&lt;/p&gt;&#xA;&lt;p&gt;# HackerNewsで紹介されたせいで、現在ゲームはちょっと重かったり、正しく動かなかったりすることがあるようです。その場合は、footerにリンクのあるミラーサイトで遊んだり、オープンソースですから自分のところで動かしたりということもできます。&lt;/p&gt;&#xA;&lt;p&gt;via HackerNews&lt;/p&gt;</description>
			</item>
			<item>
				<title>Googleコード検索の日本語インタフェース</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2006/11/google_codesearch_japanese_menu/</link>
				<pubDate>Tue, 21 Nov 2006 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2006/11/google_codesearch_japanese_menu/</guid>
				<description>&lt;p&gt;[更新 2018] &lt;a href=&#34;https://googleblog.blogspot.com/2011/10/fall-sweep.html&#34;&gt;2012年にサービス終了&lt;/a&gt;しています。&lt;/p&gt;&#xA;&lt;p&gt;via &lt;a href=&#34;http://google-code-updates.blogspot.com/2006/11/code-search-in-more-languages.html&#34;&gt;Google Code Blog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Googleコード検索の日本語インタフェースが出たそうだ。&lt;/p&gt;&#xA;&lt;p&gt;まあ、プログラマー向けのツールだし、UI部分もほとんどないので、あまりインパクトはないかもしれないけど。新人とかに使わせるためのしきいが下がったかもしれない。&lt;/p&gt;&#xA;&lt;p&gt;あと、&amp;ldquo;lang:&amp;ldquo;で指定できる検索対象の言語も、AppleScript, COBOL, ColdFusion, Haskell, Modula-2, Modula-3, OCaml, R, Rebol, SML, VHDLと増えている。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Googleがソースコード検索Google Code Searchを公開</title>
				<link>https://labs.cybozu.co.jp/blog/akky/2006/10/google_code_search/</link>
				<pubDate>Thu, 05 Oct 2006 00:00:00 +0000</pubDate>
				<guid>https://labs.cybozu.co.jp/blog/akky/2006/10/google_code_search/</guid>
				<description>&lt;p&gt;[更新 2018] &lt;a href=&#34;https://googleblog.blogspot.com/2011/10/fall-sweep.html&#34;&gt;2012年にサービス終了&lt;/a&gt;しています。&lt;/p&gt;&#xA;&lt;p&gt;噂になっていたGoogleのコード検索サービスGoogle Code SearchがGoogle Labsから公開された。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://labs.cybozu.co.jp/blog/akky/2006/10/google_code_search/codesearch_logo_sm.gif&#34; width=&#34;150&#34; height=&#34;55&#34; alt=&#34;codesearch_logo_sm.gif&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;例: &amp;ldquo;Romaji&amp;quot;でソースコード検索&lt;/p&gt;&#xA;&lt;p&gt;上の検索結果からすると、Camel Notation中の単語も探してくれるみたいだ。 IsProgrammerDifferentFromSE()みたいなネーミングからも単語を切り出してインデックスしているということで、これはありがたいかも。&lt;/p&gt;&#xA;&lt;p&gt;見つかったコードをクリックすると、キーワードハイライトされたソースコード全文、同じディレクトリ内にある他のコードのリスト、パッケージやコードのGoogleキャッシュ(!)、パッケージのダウンロードリンク、などが表示される詳細画面に移る。&lt;/p&gt;&#xA;&lt;p&gt;検索では、トップページ下にも説明がいくつか書かれているが、言語、ライセンス、パッケージ形式やファイルの拡張子などを指定しての検索ができるようになっている。また、さすがプログラマー向けというか、正規表現による検索指定ができる。&lt;/p&gt;&#xA;&lt;p&gt;例: Apache2のC言語ソースから&amp;quot;gzip&amp;quot;で検索&lt;/p&gt;&#xA;&lt;p&gt;レスポンスも、まだほとんど誰もアクセスしてないからかもしれないけど快適。まあ他のGoogle検索を見ても、ユーザが増えたからといってそんなに遅くなることはないだろうし。&lt;/p&gt;&#xA;&lt;p&gt;ソースコード検索といえば、Kodersとかcodefetch{が先行しているけど、ソースコードを含めてGoogleは元から膨大な量をクローリングしているわけだし、競合者達はここでもたいへんかもしれない。&lt;/p&gt;&#xA;&lt;p&gt;[追記]&lt;/p&gt;&#xA;&lt;p&gt;各ニュースサイトのニュースも揃ってきた&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://internet.watch.impress.co.jp/cda/news/2006/10/05/13529.html&#34;&gt;Internet Watch&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.itmedia.co.jp/news/articles/0610/05/news073.html&#34;&gt;ロイター → ITMedia&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://japan.cnet.com/news/media/story/0,2000056023,20263107,00.htm&#34;&gt;CNET → CNET Japan&lt;br&gt;&#xA;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://japan.internet.com/webtech/20061006/12.html&#34;&gt;internet.com → japan.internet.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://itpro.nikkeibp.co.jp/article/USNEWS/20061006/250017/&#34;&gt;日経IT Pro&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;[追記]&lt;/p&gt;&#xA;&lt;p&gt;しつこく&lt;a href=&#34;https://labs-staging.31tools.com/old_akky_images/archives/2005/07/regist.html&#34;&gt;regist という英語は無い&lt;/a&gt;に&amp;quot;regist&amp;quot;の検索結果を追加した。&lt;/p&gt;&#xA;&lt;p&gt;[追記][リンク無効化 2018]&lt;/p&gt;&#xA;&lt;p&gt;Now &lt;a href=&#34;http://japanize.31tools.com/&#34;&gt;Japanized!&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;[更新 2018]&lt;/p&gt;&#xA;&lt;p&gt;コメント欄指摘、当該サービスが終了していることを追記しました。文中の類似サービスについてもサービス終了やサイト応答無しのためリンクを外しました。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
