<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>Information</title>
    <description>javascriptその他いろいろで何か作ってます。</description>
    <link>http://cln01.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>JSEditBoxを公開しました</title>
      <description>&lt;h2&gt;&lt;a href=&quot;http://clone.ninja-web.net/editBox.htm&quot;&gt;JSEditBox&lt;/a&gt;を公開しました&lt;/h2&gt;
&lt;p&gt;使い方 : &lt;br /&gt;
inテキストエリアにテキストを貼り付ける &lt;br /&gt;
&amp;darr; &lt;br /&gt;
functionテキストエリアにスクリプトを書く &lt;br /&gt;
&amp;darr; &lt;br /&gt;
functionボタンを押す &lt;br /&gt;
&amp;darr; &lt;br /&gt;
outテキストエリアに結果が表示される&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;サンプル : 行番号付加スクリプト&lt;/h3&gt;
&lt;textarea rows=&quot;22&quot; cols=&quot;55&quot;&gt;var ret=inStr.replace(/\r\n/gm,&quot;\n&quot;).match(/^.*/gm)
var pow10=1
var log10=0
var logMax=Math.floor(Math.log(ret.length)/Math.log(10))//LN10
var nbspc=&quot;&quot;
function fillSpc(n,max){
	var ret=&quot;&quot;
	for(var i=n;i&amp;lt;max;i++){
		ret+=&quot; &quot;
	}
	return ret
}
for(var i=0;i&amp;lt;ret.length;i++){
	if(i+1==pow10){
		nbspc=fillSpc(log10++,logMax)
		pow10=pow10*10
	}
	ret[i]=nbspc+(i+1)+&quot;|&quot;+ret[i]
}
return ret.join(&quot;\n&quot;)
&lt;/textarea&gt;&lt;hr /&gt;
&lt;h3&gt;開発ノート&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot; https://developer.mozilla.org/ja/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API &quot;&gt;MDN - Web Storage API を使用する&lt;/a&gt; の localStorageの機能検出の部分に『 localStorage がサポート済みかつ使用可能であるかを検出する関数 』が載っていたのでコピペして組み込んだ。&lt;/p&gt;
&lt;p&gt;androidな環境でtextareaにtabを入力してインデントしたいと思ったのが泥沼の入り口だった。&lt;br /&gt;
tabを挿入するだけなら &lt;a href=&quot; https://www.htmlcenter.com/blog/insert-text-into-textareas-using-javascript/ &quot;&gt;HTMLCenter Insert Text Into Textareas Using Javascript April 4, 2009 Javascript Tutorials by Curtiss &lt;/a&gt;の関数で出来たが、テキストの先頭に挿入出来ない。&lt;br /&gt;
if(obj.selectionStart)でセレクションオブジェクトの判定をしているのが原因だった。 selectionStartの値が0のとき単純な判定式だとfalseになって弾かれてしまう。 &lt;br /&gt;
if(&quot;selectionStart&quot; in obj)に書き換えた。&lt;/p&gt;
&lt;p&gt;複数行選択されているときインデント/アウトデントするようにした。 &lt;br /&gt;
tabを行頭に挿入するか有効な文字列の先頭に挿入するか悩んだ。どっちでもたいして変わらないが行頭に挿入することにした。 正規表現でさっくりと処理できると思ったら上手く行かず手間取った。&lt;/p&gt;
&lt;p&gt;IE用の範囲選択処理を &lt;a href=&quot;http://archiva.jp/web/javascript/getRange_in_textarea.html&quot;&gt;Archiva textareaの選択範囲を取得し、前後に文字列を挿入する 2007&amp;ndash;03&amp;ndash;23 /web/javascript &lt;/a&gt; と &lt;a href=&quot;https://ok2nd.hatenablog.com/entry/2010/12/21/180616&quot;&gt; 中級プログラマの自宅でPHP ブログ 2010-12-21 textarea文字列をタグで囲んだ後のカーソル表示 &lt;/a&gt;を参考に書き換えた。&lt;/p&gt;
&lt;p&gt;firefoxだとerrorオブジェクトでエラー発生行と列が取れる。他のブラウザではスタックトレースを参照するようにした。window.onerrorハンドラで処理したほうが簡単かと試してみたらイベントが発火しない(&amp;acute;Д｀)&amp;hellip;。 IE系のエラーメッセージはどうにもならんので放置。&lt;/p&gt;</description> 
      <link>http://cln01.blog.shinobi.jp/_js/20190603</link> 
    </item>
    <item>
      <title>スマホ用スタイルシート追加</title>
      <description>&lt;a href=&quot;http://clone.ninja-web.net/moji_j2.htm&quot;&gt;文字列逆転器unicode版&lt;/a&gt;と&lt;a href=&quot;http://clone.ninja-web.net/cellam/cellautomaton2.htm&quot;&gt;線形セルオートマトン2019年版&lt;/a&gt;のスタイルシートをスマホ向けにいじりました。&lt;br /&gt;
縦画面でも横画面でも使えるようにしてみました。</description> 
      <link>http://cln01.blog.shinobi.jp/_js/%E3%82%B9%E3%83%9E%E3%83%9B%E7%94%A8%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%88%E8%BF%BD%E5%8A%A0</link> 
    </item>
    <item>
      <title>線形セルオートマトン 2019年版　公開しました</title>
      <description>旧版と見た目はたいして変わっていませんが&lt;a href=&quot;http://clone.ninja-web.net/cellam/cellautomaton2.htm&quot;&gt;2019年版&lt;/a&gt;はGIF画像を生成しているので気に入った模様が出来たらダウンロード出来ます。&lt;br /&gt;
オプション説明&lt;br /&gt;

&lt;pre&gt;スタイル
　ノーマル : セルを塗りつぶします
　タイル : タイル状に塗ります
　ドット : 点を打ちます
　ステッチ : 縫い目風に塗ります
始端と終端
　セル列の先頭と末尾をつなぐかどうかです
　つながない場合、先頭と末尾は常に状態0のセルと接しているとみなして出力ルールを適用します
出力
　アニメGIFの生成には少し時間がかかります
再出力
　同じ初期値とルールで出力します
　各種設定を変更して同じ模様を出力したいときに使います
背景画像に設定する
　生成した画像を背景画像に設定します
&lt;/pre&gt;
&lt;hr /&gt;使ったライブラリは&lt;a href=&quot;https://github.com/antimatter15/jsgif/blob/master/README.md&quot;&gt;jsgif&lt;/a&gt;です。&lt;br /&gt;
簡単にjavascriptでGIF画像が生成出来ます。&lt;br /&gt;
ただしGIF動画のリピート回数を1に設定しても2回くり返すので&lt;br /&gt;
GIFEncoder.jsの 第96行の0を-1に書き換えました。&lt;br /&gt;

&lt;pre&gt; if (iter &amp;gt;= -1) repeat = iter;
&lt;/pre&gt;
リピート回数を1回にしたいときはsetRepeatで-1を設定します。&lt;br /&gt;
設定を変えて画像を生成するときは毎回 new GIFEncoder()でエンコーダを作るべきなのかもしれない。まあいいや。&lt;hr /&gt;今回、onloadで嵌まった。古臭い書き方だと動かぬ。&lt;br /&gt;

&lt;pre&gt;document.body.onload=function(){
　//実行されない
}
&lt;/pre&gt;
&lt;br /&gt;
上位オブジェクトにすると動く。&lt;br /&gt;

&lt;pre&gt;window.onload=function(){
　//動く
}
&lt;/pre&gt;</description> 
      <link>http://cln01.blog.shinobi.jp/_js/20190505</link> 
    </item>
    <item>
      <title>文字列逆転器ユニコード版更新</title>
      <description>&lt;a href=&quot;http://clone.ninja-web.net/moji_j2.htm&quot;&gt;文字列逆転器ユニコード版&lt;/a&gt;を更新しました。 &lt;br /&gt;
ライブラリを自作しました。&lt;br /&gt;
拡張書記素クラスタはUnicode12.0.0準拠です。 regGraphemeCluster.js 16.98kiB&lt;br /&gt;
ハングルのデータをスクリプトで生成するようにしたらファイルサイズがかなり小さくなりました。&lt;br /&gt;
&lt;a href=&quot;https://github.com/nota/split-graphemes&quot;&gt;split-graphemes&lt;/a&gt;のコードを組み込んだのでインド・東南アジアの文字を正しく分割出来るようになったはず。&lt;br /&gt;
読めないのでよくわかりませんが。&lt;br /&gt;
&lt;hr /&gt;書記素クラスタについて調べたらUnicode.orgの&lt;a href=&quot;http://www.unicode.org/reports/tr29/&quot;&gt;Text Segmentation&lt;/a&gt;に拡張書記素クラスタの正規表現が載っていたので数日前からちまちまと作業していました。&lt;br /&gt;
Unicode.orgからダウンロードしたプロパティデータと拡張書記素クラスタの正規表現を正規表現で整形してスクリプトを組み立てるという正規表現漬けの日々でした。&lt;br /&gt;
そんな中、android版WaterFoxのjavascriptの正規表現で\p❴❵が使えないことが判明。&lt;br /&gt;
更にモジュールも使えないことが判明。&lt;br /&gt;
&amp;hellip;まあ使わないんですが。&lt;br /&gt;
文字列結合で配列.joinメソッドより+を使ったほうが速いというのをほぼ出来上がってから知ってしまい(&amp;acute;Д｀)ﾏｼﾞｶﾖとなりました。</description> 
      <link>http://cln01.blog.shinobi.jp/_js/%E6%96%87%E5%AD%97%E5%88%97%E9%80%86%E8%BB%A2%E5%99%A8%E3%83%A6%E3%83%8B%E3%82%B3%E3%83%BC%E3%83%89%E7%89%88%E6%9B%B4%E6%96%B0</link> 
    </item>
    <item>
      <title>文字列逆転器　ユニコード版　4月20日バージョン</title>
      <description>&lt;a href=&quot;http://clone.ninja-web.net/moji_j2.htm&quot;&gt;文字列逆転器&lt;/a&gt;のユニコード処理ライブラリをunistring.js(86.66kiB)からgraphenesplitter.js(47.81kiB)に変えました。 &lt;br /&gt;
合成可能なダイアクリティカルマーク (U+0300..U+036F)も適当に左右反転するようにしました。どれが何なのかよく分かってないので本当に適当です。 &lt;br /&gt;
&lt;hr /&gt;ユニコードの書記素クラスタについて調べていたらスクリプトで処理を書いている人たちがいた。 &lt;br /&gt;
&lt;a href=&quot; http://appsweets.net/blog/tag/unistring/&quot;&gt;unistring.js&lt;/a&gt; javascript&lt;br /&gt;
&lt;a href=&quot;https://github.com/orling/grapheme-splitter&quot;&gt; grapheme-splitter &lt;/a&gt; javascript &lt;br /&gt;
&lt;a href=&quot; https://ufcpp.net/blog/2017/11/graphemesplitterbyproduct/&quot;&gt;GraphemeSplitter の副産物(絵文字調査ツールとRangeスイッチ)&lt;/a&gt; C# &lt;br /&gt;
皆さんuncode.orgからデータを拾って来てスクリプトで加工して作っています。&lt;br /&gt;
unistring.jsとgrapheme-splitterを使わせていただきました。&lt;br /&gt;
&lt;hr /&gt;ウインドウズにおいて&lt;a href=&quot; https://ja.m.wikipedia.org/wiki/%E5%86%86%E8%A8%98%E5%8F%B7#%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AB%E3%82%88%E3%82%8B%E6%89%B1%E3%81%84 &quot;&gt;バックスラッシュと円記号の表示の問題&lt;/a&gt;がありますが文字列逆転器ユニコード版ではスラッシュとバックスラッシュを相互変換しています。 &lt;br /&gt;
&lt;hr /&gt;左右反転させるのは記号のみという方針なので 顔文字で使われる漢字や片仮名 &lt;br /&gt;
「丿」と「乀」 &lt;br /&gt;
「ヾ」と「ﾉﾞ」 &lt;br /&gt;
などを対応させていません。&lt;br /&gt;
やりだしたらきりがないので( &amp;acute;Д`) &lt;br /&gt;
&lt;hr /&gt;調べたら丿乀（へつぽつ）なんて言葉があるんですね。船などが左右に揺れるさまのことだそうです。</description> 
      <link>http://cln01.blog.shinobi.jp/_js/%E6%96%87%E5%AD%97%E5%88%97%E9%80%86%E8%BB%A2%E5%99%A8%E3%80%80%E3%83%A6%E3%83%8B%E3%82%B3%E3%83%BC%E3%83%89%E7%89%88%E3%80%804%E6%9C%8820%E6%97%A5%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3</link> 
    </item>
    <item>
      <title>セルオートマトンのページをサルベージしました</title>
      <description>geocities.comのアーカイブであるoocities.orgから&lt;a href=&quot;http://clone.ninja-web.net/cellautomaton.htm&quot;&gt;セルオートマトンのページ&lt;/a&gt;をサルベージしました。</description> 
      <link>http://cln01.blog.shinobi.jp/_js/%E3%82%BB%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E3%82%B5%E3%83%AB%E3%83%99%E3%83%BC%E3%82%B8%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F</link> 
    </item>
    <item>
      <title>文字列逆転器　ユニコード版　公開しました</title>
      <description>&lt;a href=&quot;http://clone.ninja-web.net/moji_j2.htm&quot; title=&quot;String Reverser ver.2019&quot;&gt;文字列逆転器　ユニコード版&lt;/a&gt;を公開しました。&lt;br /&gt;
ユニコード化するだけなのでちょっといじれば出来ると思っていたら日付が変わるまでかかってしまった。&lt;br /&gt;
ユニコードの時代になってもマルチバイト文字の処理をせねばならんとは。サロゲートペアめ。&lt;br /&gt;
あとユニコードの矢印多すぎ。他にも表示出来ないやつや合成文字で使うやつはパス。</description> 
      <link>http://cln01.blog.shinobi.jp/_js/%E6%96%87%E5%AD%97%E5%88%97%E9%80%86%E8%BB%A2%E5%99%A8%E3%80%80%E3%83%A6%E3%83%8B%E3%82%B3%E3%83%BC%E3%83%89%E7%89%88%E3%80%80%E5%85%AC%E9%96%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F</link> 
    </item>

  </channel>
</rss>