サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
shogo4405.hatenadiary.com
数年前に記事やつぶやきをみたけたけど忘れてしまったのでメモ変わりに記載。ユニバーサルアナリティクス用のコードです。基本的にはwindow.onerrorイベントを補足してgaにイベントを送信するだけです。要素技術として、アナリティクスのイベント・トラッキングを利用しています。 ソースコード window.onerror = function(message, file, line) { message = message + " at " + file + "[" + line + "]"; // GAのイベントは category, action, labelの合計値が7kくらいまでおくれる"らしい" ga("send", "event", "error", "javascript", message.replace(/\r?\n/gm, "").substr(0, 1024 * 5))
ちょうど去年の3月末に某CSKを退社。去年の今頃新しい会社に拾われました。入った感想としては、驚きの文化として社内のコミュニケーションツールにIRCを使っているというところ。慣れるまでは大変でした。 IT企業だと案外普通みたいですね。 さて本題、社内IRCにブラウザーからアクセスしてみたかったのでInspIRCdをWebSocketに対応させてみました。InspIRCdは、C++によるIRCの実装です。 HTMLソース <html> <script> webSocket = new WebSocket('ws://localhost:3000/'); webSocket.onopen = function() { console.log("open"); this.send("NICK shogo4405\r\n"); this.send("USER shogo4405 * 0 :shog
JavaScriptで複数人開発するときのガイドライン(マイルール)です。SIerとかやっているとold JavaScriptやらモダンJavaScriptを見たりと色々な経験が得られるわけで…。やっぱり複数人開発するときには秩序は必要だなと思って、大体こんなルールにしていました。flex編はこの編 id:shogo4405:20110521:1305947042 こんなコード禁止 <html> <head> <script type="text/javascript"> // Todo あとでバグ修正する。仮起き。 function foo(){ }; funciton bar(){ }; </script> </head> <body> <input type="buttun" click="foo();" id="idFoo"> <input type="buttun" click=
最近、日記を書く機会がめっきり無くなって来ましたが。ご挨拶がてらのエントリーです。 2011年3月末日を持って、現職を退職することになりました。何かの縁で大阪で勤務できまして、関西近郊の素敵なエンジニアの方々とお会いさせていただくことができました。1人1人、ご挨拶にまわりたいのですが難しいので、この場を借りてご挨拶とさせていただければと思います。 退職した後は、もう一度上京しようと思っています。が…中々就職口がないですねw上京できなかったら海外に素手で殴りこみに行こうかと思います。技術の棚卸をかねて身につけてきた技術を備忘録的に書いていこうと思います。 それでは、関西の皆様、今までありがとうございました! shogo4405
PEAR-SOAPを用いて作られたWebServiceをFlexからSOAP通信で呼び出したときのメモです。色々とはまりどころがあったのでその際のメモも一緒に。 サンプルつくるにあたっては、サーバ側(PHP)→クライアント側(Flex)の順番で作成しています。 1.サーバ側の準備 サーバ側に必要なのは、実際のSOAP通信の際に受け口になってくるphp(xml.php)で、今回はメソッドなどを外出ししたかったので、クラスにまとめました(Service.php)。 サーバ側のソースなどは以下の通りで、簡単の為にxml.phpとService.phpをサーバのドキュメントルートに設置しています。http://localhost/xml.phpでアクセスできるようにしています。 xml.php <?php require_once 'Service.php'; require_once 'SOAP
予備知識 クエリで配列や連想配列を送りたい場合以下の形式でリクエストしてあける。以下のサンプルはURLエンコード前でつ。 // 1.配列ですよ index.html?hoge[]=10&hoge[]=20 // 2.連想配列ですよ index.html?hoge[foo]=foo&hoge[bar]=bar上記1のクエリが来たら$_GETの中身は以下みたいな感じになっている。 array(1) { ["hoge"]=> array(2) { [0]=> string(2) "10" [1]=> string(2) "20" } } HTMLだとこんな感じ。 <form action="index.html"> <input type="text" name="hoge[]" /> <input type="text" name="hoge[]" /> <input type
DataGridの選択エリアにComboBoxを使おうと思って試行錯誤したときのメモ。知らないと難しい... 何も考えないで実装するとこう 以下のようなソースのときに、"sex"カラムが、持っている値は 0 or 1だけど、男性・女性とComboBoxで編集できるようにすることがゴール。 <?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.controls.*; import mx.collections.*; [Bindable] public var list:ArrayCollection = new ArrayCollection( [ { no:1, name:"Taro", sex: 1 }, { no:2
散布図のポイントにラベルを追加したい Excelで散布図をかいたときにポイントにラベルを追加したいんですがなかなかうまくいかないので思い悩んだあげくVBAで解決したので、その際のスクリプトをかいたので公開しておきます。 方法を調べていったら、斜めにデータを配置するのがオーソドックスなやりかたみたいですね。ttp://pc.nikkeibp.co.jp/article/NPC/20060628/242035/ 使い方と前提条件 マクロ実行時に「セル名を入力を促すダイアログ」が出てきますが、そのときはラベル名の一番最初のセル名を入力してください。この例では、B3を指定するとラベルが自動的に振られます。条件としてテーブルのフォーマットはサンプルのような{ラベル名,X,Y},{ラベル名,Y,X}とかそういう表を前提としています。 マクロ実行前 マクロ実行後 ソースコード*1 Public Sub
IE8からwindow.toStaticHTML()メソッドが追加されました。引数に与えられたHTMLの断片からscriptタグや、onclick属性などのDynamic HTMLの要素を削除するためのメソッドです。 XDomainRequestのレスポンスに、意図しないscriptタグなどが入ってきたときにまずいことにならないようにそれを削除する用途で利用できます。 toStaticHTMLの利用方法 HTMLStr = "Hello<script>alert('foo');</"+"script> World!!"; alert(window.toStaticHTML(HTMLStr)); // Hello World!! alert(toStaticHTML(HTMLStr)); // Hello World!! toStaticHTMLの実行結果 例:その1 <span oncli
constructorが実装されている件 alert('constructor' in window); // true alert(window.constructor); // [object Window] div = document.createElement('div'); alert('constructor' in div); // true alert(div.constructor); // [object HTMLDivElement] alert('prototype' in div.constructor); // true alert(div.constructor.prototype.constructor); // [object Element] ということは 俺俺メソッドをHTCを利用しなくてもDOMに付与できるということ。HTMLElement Pro
Chromeには、consoleというデバッグに便利なオブジェクトがある。9月4日(木)時点でのconsoleオブジェクトには、error, info, log, warnメソッドがあるようで利用方法は、Firebugのそれに近い。 ソース string = "Hello World!!"; object = {}; object.foo = 'foo'; object.bar = 'bar'; console.log(object); console.error(object); console.info(object); console.warn(object); console.log(string); console.error(string); console.info(string); console.warn(string); 結果 オブジェクトの中身をわかるといいんだけどな
IE8からどうやらlocalStorageとsessionStorageに対応する模様。これらStorage系のオブジェクトは、WHATWGのWeb Application1.0仕様のClient Side Storageを実装したものだということを祈ります。ドキュメントは、この辺で(HTML Standard)、簡単に言うと、ブラウザー側にデータを保存するための技術。ちなみにFirefox2以上でglobalStorage/sessionStorageもClient Side Storageのそれが実装されています。 実験 ttp://localhost/foo.html <html> <head></head> <body> <script type="text/javascript"> localStorage.hoge = "Hello World!!"; </script> <a
名前から察しの通りlocation.hashが変更になったタイミングで動作する関数。初期値はnull。 alert(window.onhashchange); // null sample.html <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=8" > <script type="text/javascript"> window.onhashchange = function(){ alert(location.hash); }; </script> </head> <body> <a href="sample.html#foo">foo</a> <a href="sample.html#bar">bar</a> </body> </html>
Kana.ASとは? ひらがなをカタカナに変換したり、全角英数字を半角英数字に変換するライブラリーKana.JSのActionScript3移植版です。利用できるAPIなどはKana.JSと一緒にしてあります。 Kana.JSとの相違点 ベース文字列のクラスのStringのプロトタイプは拡張していません。というわけで以下のようなコードは利用できません。 var str:String = "こんにちは"; // str.toKatakanaCase(); ← 不可能 サンプルコード import com.googlecode.kanaxs.Kana; // インスタンス化して利用する例 var kana:Kana = new Kana("こんにちは"); kana.toKatakanaCase().toHankanaCase().toString(); // コンニチハ // インスタンス化
よくJavaScriptでスクロールしても同じ位置にエレメントを固定させているテクがあり実装されているところも少なくない。でも僕はあんまり好きではない。というのもスクロールさせたさいに”チラツク”から嫌いです。ちらつかなければな…と思いこんなコードを実装してみた。ちらつくのが嫌なので是非ちらつかないコードを実装して欲しいです。 一般的だと思うコード(ちらつきコード) window.onscrollを利用してイベント発生のつど書き直している。サンプルページ → http://www.starmsg.net/misc/2006/09/190309.html。はやくスクロールさせればさせるほどちらつく。 <style type="text/css"> #fixed { position: absolute; top: 300px; left: 64px; width: 100px; height
去る1月14日に、prototype.jsのコードリーディングとサイ本の読書会を交互に繰り返すKanasan.JSの第二回サイ本読書会に遊びにいってきました。 Lightning Talks レポートは各所で挙がっているいますので割愛。スピーカ一覧です。 http://groups.google.co.jp/group/kanasanjs/web/kanasan-js-javascript52-3?hl=ja 私もちらっとしゃべったのでその補足 JSにはinclude 'path/to/javascript'; や require 'path/to/javascript';がなくて困る。 なかったらつくればいいじゃない? じゃあどうやって? XMLHttpRequestでJSファイルを同期取得して evalか(new Function())();するといいよ というお話でした。new Fu
去る12月08日(土)にインフラ要因としてKanasan.JS#2に参加させていただきました。そのときネットワーク環境構築したのでその際のメモです。 必要なもの ノートパソコン イーモバイル 無線LAN親機(バッファロー) 有線LAN1本。 有線LANについては当日忘れてしまったのでKanasanにお借りしました。ありがとうございました。次の機会は忘れないようにいたします。 パソコンのルータ化 【イーモバイルユーティリティ】→【設定】→【ダイヤルアップ設定】を選びます。 ダイヤルアップ接続先に【emb.ne.jp】をクリックして【編集】をクリック。 【編集】をクリックすると以下のような画面出てくるので【詳細設定】をクリック あとは【共有】タブから【ネットワークのほかのユーザーに、…】にチェックを入れる 以上がイーモバイル用の共通設定。あとはパソコンがDHCP機能が入っていないルータと想定し
JSDoc(JavaScript Documentation Tool)*1をインストールしてみた。といってもPerlなのでダウンロードして適当なフォルダに突っ込んだだけ。CPANのHtml-Templateを利用するからのでDOSプロンプトで以下のコマンド叩いてインストール。Windowsは標準でPerlを利用できないのでActivePerlとかインストールしておきましょう。 ppm install HTML-Template JSDocとは JavaDocのJavaScript版でPerlで書かれています。:-) ためしに perl C:\Perl\lib\JSDoc\jsdoc.pl C:\Perl\lib\JSDoc\test.jsと叩くと自動的にドキュメントが作成される。 問題点 perl C:\Perl\lib\JSDoc\jsdoc.pl C:\Hoge\test.js pe
世の中にはdeep cloneの需要がある 僕もある。某ライブラリで実装せにゃならない。スマートな方法は思いつかず。永遠ループでまわしつづけています。この前見つけたネタのエントリ。 404 Blog Not Found:javascript - お伺い - Object.prototype.clone() http://la.ma.la/blog/diary_200711270645.htm clone関数を使ったときの挙動 clone関数を使うと分身(shogo4406)が変わってもオリジナル(shogo4405)には変化がない。ただ、オリジナル(shogo4405)が変化すると分身(shogo4406)も一緒に変身してしまうので用途によっては困る。 shogo4405 = { name:'shogo4405', age:22 }; shogo4406 = clone(shogo4405
最新版はこちら http://code.google.com/p/kanaxs/ はじめに 平仮名を片仮名にしたり。半角英数字を全角英数字にしたり。全角カタカナを半角カタカナに変換するJavaScriptです。String.prototypeを拡張していますのでString.prototype拡張が嫌いな方はPHPのmb_convert_kana相当もあるのでそちらをご利用ください。 利用できるようになるメソッド kana.js メソッド 説明 String#toZenkakuCase() 半角英数字を全角英数字に変換します。 String#toHankakuCase() 全角英数字を半角英数字に変換します。 String#toKatakanaCase() 平仮名を片仮名に変換します。 String#toHirakanaCase() 片仮名を平仮名に変換します。 String#toZenk
はじめに fixed.htcはIE6でposition:fixedが利用できないのを修正するスクリプトです。IE7ではposition:fixedが対応しているのでIE7では適応されないようになっています。 注意点 IEの描画で位置計算を都度行っているので環境やマシンスペックとかでちらつきが発生する場合があります。fixedにように全くちらつかないというのは難しいものです(--; 主観ですが、window.onload方式とかよりはましです。 使い方 position:fixedを適用したいものに以下のようなスタイルシートを記述します。 <script type="text/css"> .sample { position: fixed; top: 100px; left: 100px; /* 以下の行を適用したいものに追加 */ behavior: url('fixed.htc'); }
style.setExpressionは知っていたけどElement#setExpressionも使えるのね。IE限定でいまいち使いどころが分からない(--; var foo = document.getElementById('foo'); foo.setExpression('innerHTML','new Date().getTime()');
to-Rの西畑さんの講演を聞いてIE6でpositonfixedが動かないのを思い出した。それでそれをどう回避するかというと以下みたいにwindow.onscrollのイベントが発生したときに毎回毎回位置を計算して描画する。このコードって実は問題で描画がスクロールの速度においつかずちらつきが発生したりする。 このちらつきは僕は苦手というエントリーを以前書いた(http://d.hatena.ne.jp/shogo4405/20060919/1158664960)そこにはstyle.setExpressionを使えばちらつかなくていいとも書いた。 といわけで 今回はHTML Component(.htc)を使って書き直してみる。以下の部分をfixed.htcみたいな名前にして保存する。あとはスタイルシートのbehaviorで読み込みするだけ。 <public:component> <atta
最新版はこちら http://code.google.com/p/kanaxs/ ひらがな⇒カタカナ String.prototype.toKatakanaCase = function() { var i, c, a = []; for(i=this.length-1;0<=i;i--) { c = this.charCodeAt(i); a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c; }; return String.fromCharCode.apply(null, a); }; "ぁぃぅぇぉあいうえお".toKatakanaCase(); // ァィゥェォアイウエオ カタカナ⇒ひらがな String.prototype.toHirakanaCase = function() { var i, c, a = []; for(i
はじめに 先日YUI式JavaScript圧縮ツールが公開されたのを見て、色々と遊んでいたわけですが検証とか遊びならいいですが…毎回毎回Javaコマンド叩いて圧縮するのもめんどくさいなと思っていました。1つや2つならANTを利用してJavaタスクを書いて自動化しますが…jsの数が70近くあるようなライブラリではそれも面倒なので専用のタスクを書いてみた次第です。 使い方 タスク定義 [project] +--- builx.xml +--- [build] +--- YUICTask.class +--- yuicompressor-1.0.jar<taskdef name="yuic" classname="YUICTask" classpath="build;build/yuicompressor-1.0.jar" /> 上記のディレクトリ構成のときのclasspath設定です。クラスが
IEでHTMLElement.prototypeっぽい動作するものを考えているなかで生み出された副産物です。document.styleSheetsのaddRuleとbehavior:expressionをつかってdiv要素のheaderクラスに所属するidをアラートしています。 <html> <head> <style id="behavior"></style> <script> function showElementId(e){ alert(e.id); e.style.behavior = null; }; window.onload = function(){ document.styleSheets.behavior.addRule('div.header','behavior:expression(showElementId(this));'); }; </script>
Safari3対応のinsertAjacent.jsをつくろうかなと思って調査したところinsertAdjacentElementは既に搭載されてました。insertAdjacentHTMLとかinsertAdjacentTextは現段階では実装無。 サンプル // true alert('insertAdjacentElement' in HTMLElement.prototype); // false alert('insertAdjacentHTML' in HTMLElement.prototype); // false alert('insertAdjacentText' in HTMLElement.prototype); <html> <head> </head> <body> <div id="foo">Hello</div> <script type="text/java
今までのSafariではHTMLElement Prototypingをするのに色々とハックする必要がありましたがSafari3からは直球でHTMLElementが実装されていてハックできます。 実装されているHTMLElement系のオブジェクト JavaScriptで機械的に書き出したので漏れがあるかも…。*1 HTMLFontElement,HTMLBodyElement,HTMLScriptElement,HTMLDivElement,HTMLLabelElement,HTMLIsIndexElement,HTMLElement,HTMLSelectElement,HTMLModElement,HTMLParamElement,HTMLHeadingElement,HTMLMetaElement,HTMLBaseFontElement,HTMLDListElement,HTMLPa
僕はJavaで文字列の比較をするときは、String#equals()を使って比較するしなさいって習った。先生の説明に(文系の大学だけどなぜかJavaの講義があった)にも納得してString#equals()を使い続けてた。 Stringはプリミティブ値じゃなくてオブジェクトになるので==を利用すると、その文字の比較ではなくて同一参照か否かを確認するから結果はfalseになっちゃうよという説明。中途半端に知っていたのでその説明には納得。でも違った。 class Test { public static void main(String args[]) { String str1 = "Hello"; String str2 = "Hello"; if(str1 == str2){ System.out.println("実行されちゃう><。"); } String str3 = new S
次のページ
このページを最初にブックマークしてみませんか?
『Thousand Years』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く