仕事を効率的にこなす、3つのこと

11月 2nd, 2011

1.寝る

2.食う

3.運動する

history api

10月 11th, 2011

history apiのさわり

twitterとかでみるハッシュフラグメントURL(?)のやつ

とりあえずやってみた

html

<div id="content">index page</div>
<div id="main">
    <p><a href="#!/guide" title="guide">guide</a></p>
    <p><a href="#!/company" title="company">company</a></p>
    <p><a href="#!/products" title="products">products</a></p>
    <p><a href="#!/news" title="news">news</a></p>
    <p><a href="#!/contact" title="contact">contact</a></p>
    <p><a href="#!/member" title="member">member</a></p>
    <p><a href="#!/privacy" title="privacy">privacy</a></p>
</div>

JavaScript

window.onload = function(){
    var m = document.getElementById("main");
    var d = document.getElementById("content");
   
    addEvent(window,"popstate",changeContent);
   
    function changeContent(){
        switch(location.hash.split('#!/')[1])
        {
            case "guide":
            setElement(d,"ガイド");
            break;
            case "company":
            setElement(d,'会社');
            break;
            case "products":
            setElement(d,'製品');
            break;
            case "news":
            setElement(d,'ニュース');
            break;
            case "contact":
            setElement(d,'お問い合わせ');
            break;
            case "member":
            setElement(d,'メンバー');
            break;
            case "privacy":
            setElement(d,'プライバシー');
            break;
            default:
            setElement(d,'HISTORY API TEST');
            break;
        }
    }
}

function setElement(target,arg){
    document.title = arg;
    target.innerHTML = arg;
}

/**********************************************************
*   クロスドメイン用イベントリスナ登録関数
*   @param {String} target  ターゲットエレメント
*   @param {String} name    イベントタイプ
*   @param {String} fn      登録するイベント
***********************************************************/

function addEvent(target,type,fn){
    if(window.addEventListener){
        addEvent = function(target,type,fn){
            target.addEventListener(type,fn,false);
        }
    }else{
        addEvent = function(target,type,fn){
            target.attachEvent('on' + type, fn);
        }
    }
   
    addEvent(target,type,fn);
}

でとりあえずタイトル部分も変更できてる

popstate

はハッシュ値変更した場合に発火するのです。

登録したイベント内でハッシュ値から表示するエレメントだったりをわけたらいいんじゃないって感じで。

IEでうんともすんともならん…

IEのために

    //IE用
    if(navigator.userAgent.match(/MSIE/)){
        changeContent();
        var a = m.getElementsByTagName("a");
        for(var i = 0;i < a.length;i++){
            addEvent(a[i],"click",clickContent);
        }
    }
   
    function clickContent(evt){
        var arr = evt.srcElement.href.split('/');
        location.hash = '!/' + arr[arr.length - 1];
        changeContent();
    }

を追加して対応したらでけた

サンプル

EC-CUBE[メモ]

9月 19th, 2011

購入時の商品ごとの送料加算のカスタムは

SC_CartSession.php 内 calculateメソッドでカスタム出来る。

厳密に言えばcalculateをSC_CartSession_EX.phpにコピペして使用する。

// 商品ごとの送料を加算
if (OPTION_PRODUCT_DELIV_FEE == 1) {
$cartItems = $this->getCartList($productTypeId);
$max_fee = 0;
$count = 0;
foreach ($cartItems as $item) {
if($max_fee < $item['productsClass']['deliv_fee']){
$count = $item['quantity'];
$max_fee = $item['productsClass']['deliv_fee'];
$results['deliv_fee'] = $item['productsClass']['deliv_fee'] * $item['quantity'];
}else if($max_fee ==  $item['productsClass']['deliv_fee']){
$count += $item['quantity'];
$results['deliv_fee'] = $max_fee * $count;
}
               
#$results['deliv_fee'] += $item['productsClass']['deliv_fee'] * $item['quantity']; //デフォの部分
}
}

どんな計算かというと、送料が高いものが優先され、送料の安いものは送料の高いものに吸収される

かつ、送料が高いものは個数分加算される。

  • A:送料2000円
  • B:送料500円

とした場合、AとBを1つずつ購入した場合、送料が高い方のAにBが吸収されるので、合計送料は2000円

Aを3つ、Bを5つ購入した場合は、送料の高い個数分加算するので、合計送料は6000円、となる。

ざっとしたメモ

オートローダーっぽいの

8月 24th, 2011

forked: flicker test – jsdo.it – share JavaScript, HTML5 and CSS

フルスクリーンの方が見やすいです

JSブラウザの判定

8月 11th, 2011

JSでブラウザ毎に解釈が違うっていうことで、

悩んでました

jQueryのscrollTopで現在地のyを知りたいだけなのに、

クソ面倒だったので、メモしておく。

自作モーダルを作ってて、ほんと、いやになっちゃくくらい分岐が激しいのです。

 

// Determine the browser
if(navigator.userAgent.indexOf("MSIE") != -1){
    // IE
    if (typeof document.body.style.maxHeight != "undefined") {
        // IE7, IE8 more
        if(document.documentMode >=8){
            // IE8 more
            var top = $("html");
        }else{
            // IE7
            var top = $("html,body");
        }
    } else {
        // IE6
        var top = $("html");
    }
}else if(navigator.userAgent.indexOf("Safari") != -1){
    // safari, chrome
    var top = $("body");
}else if(navigator.userAgent.indexOf("Firefox") != -1){
    // firefox
    var top = $("html");
}else if(navigator.userAgent.indexOf("Opera") != -1){
    //opera
    var top = $("html");       
}else{
    var top = $("html");
}

 

はぁ、ねぇ、IEだけでも、結構たいへんでしたー。

EC-CUBE 2.11のSC_ProductクラスとSC_Query

7月 28th, 2011

超個人的メモ

商品詳細ページ(products/detail.tpl)

require_once '../require.php';
require_once CLASS_EX_REALDIR . 'SC_Query_Ex.php';

//CATEGORY取得
$c_que = new SC_Query_Ex();
$cate_que = $c_que->select("category_id","dtb_product_categories",'product_id='.mb_substr($_SERVER["QUERY_STRING"],11));

$cate_id = $cate_que[0]["category_id"];

でカテゴリIDが取得できた。

select(“カラム”, “テーブル”, where文) だわさ。

まぁ、クラスのソースを見てもらったほうがわかりやすいけど。

2011.7.28追記

<!--{$arrRelativeCat[0][0].category_id}-->

でカテゴリーID取れるわ。。。

トップページ(index.tpl)に登録商品を

require_once './require.php';
require_once CLASS_EX_REALDIR . 'SC_Product_Ex.php';
require_once CLASS_EX_REALDIR . 'SC_Query_Ex.php';

//CATEGORY
$c_que = new SC_Query_Ex();
$cate_que = $c_que->select("product_id,category_id","dtb_product_categories");

//ALL ITEMS
$prod = new SC_Product_Ex();
$prod->setProductsOrder("product_id");

$lists = array();

foreach($cate_que as $list){
    $lists[] = $prod->getDetail($list["product_id"]);
}

で $lists に商品データをぶっ込める。

SC_Product と SC_Query は便利っぽい。

大阪ひよこの会 第四回勉強会 「トゥイーン祭り!」

6月 20th, 2011

Tweenerのサンプルっていうか、アレ作りました。

先日のひよこの会に参加してきました。

僕も発表しました。レアです。アレですけどレアです。

発表っていうか、まぁ、作ったんですよ。

Tweenerのtransitionってたくさん(41種類)あるけど、どんなもんだ!?って思うわけです。

よく使うやつから、全然興味がわかないやつ

Tweenerのドキュメントで全部どんなもんか見れるんですが、ぶっちゃけ、想像しにくいなぁって。

もっと視覚的にわかりやすいサンプルってナカナカなくて、そうやったら自分で作ってみたらどうだろう。

で、作ったのが下記のやつ

Tweener Transition

this content needs adobe flash player.


僕の中で「大きさ」「移動」「回る」ってのが、よく使うもんじゃないかなぁと、3つの動きをご用意。

「change tween」ボタンでトゥイーンを切り替えて「transition」でトゥイーン(変な日本語ですいません)

各ブロックに数字が3つあるのは「scale」「x」「rotation」です。

 

これでもまだわかりにくいなぁ

「Back」とか「Cubic」とかが10種あって、それぞれに「easeIn」とか「easeOut」やらが4種ある

それを踏まえて、並べてみたのが下記リンクにあります(デカイのでブログに貼れなかった。。。。)

Tweener Transition

 

少しでもTweenerのTransitionにどんなものがあるのか、というのでお困りの方にとって役に立てたら幸いです。

これをみて色々言いたいことがあるかもしれませんが、お手柔らかに。。。

 

※森さん(@ymori_tw)からの宿題(クリックしてそのtransitionのコードをクリップボードにコピーしてはどう?)はまだ出来ておりませんが、近いうちにやります。

その他のレポートはにゃあプロジェクトに上がってきてるようなので、そちらも是非!

twitter follow button test

6月 1st, 2011

デフォルト表示


背景:明るい / フォロワー数:いいえ


背景:暗い / フォロワー数:いいえ


背景:明るい / フォロワー数:はい


背景:暗い / フォロワー数:はい
テキスト部分(◯◯フォロワー)は白文字なんで、背景色が白なら見えん

——————————-

カスタムできる部分

文字色 data-text-color=”#FF0000″
リンク data-link-color=”#0000FF”
CSSのように省略(#F00等)は不可
aタグで挟むテキストは何を入れても(◯◯フォロワー)になる
元テキストに「つまんないかもしれんけどgainaをフォローしちゃって」と記入したけど、書き換えられてる

Facebookページ

4月 20th, 2011

なんの因果(?)か、Facebookページを作ってみた。

nagaiさん

アプリ入れてiframeでなんじゃかんじゃして、

ユニークページの作成に成功。

 

使用したアプリは「Adcode Apps スタティックタブ」なるもの。

ほえー

ちょっと楽しかった。

NetStream

12月 16th, 2010

adobeのリファレンスみたら一発だった。

何でそんなことにも気がつかなかったのか。。。

1、flv・f4vの総時間

まずはNetConnectionをnewして

var _nc:NetConnection = new NetConnection();
_nc.addEventListener(NetStatusEvent.NET_STATUS, ConnectCheck);
_nc.connect(null);

NetStatusEvent.NET_STATUSをリッスンリッスン。

でコネクトに成功していたらっていうのは、

private function ConnectCheck(e:NetStatusEvent):void {
    if (e.info.code == "NetConnection.Connect.Success") {
        var _ns:NetStream = new NetStream(_nc);
        _ns.client = {} ;//new Object()でも可
         _video.attachNetStream(_ns);
         _ns.play("path");
    }
}

みたいな。

_videoはコストラクタでnewしてaddChildしているものとして下さいな。

で、肝心の「総時間」は、

_ns.client = {};

にぶち込む用(?)のonMetaDataっていうコールバックがあるってさー。

function getMetaData():Object {
    var _obj:Object = {};
    _obj.onMetaData = function(meta:*):void {
        totaltime = meta.duration;
    };
    return _obj;
}

っていうことで、durationが総時間になります。

_ns.client = getMetaData();

って呼んであげて下さい。

2、現在の再生位置(時間)

は、

_ns.time //ミリ秒

です。

はい。

3、音量

は、volumeプロパティがないので、わざわざSoundTransformを生成して、あてます。

var _st:SoundTransForm = new SoundTransform(音量, パン);
_ns.soundTransform = _st;

という具合に。

スライダーか何かで制御したい場合は、

_st.volume = 0.5;  //0 - 1 の間ですわ。
_ns.soundTransform = _st;

と、volumeに値を代入した後は、NetStreamインスタンスのsoundTransformに再度代入してください。

忘れがちな私のメモでございやした。