Yahoo!のエンジン
一般紙でも記事になるくらい影響度があることになってるんでしょうか。
SEO屋さん業界では、結構インパクトあるニュースでしょうけど、それ以外の人たちはあんまり影響ないような。
Yahoo! JAPAN もアメリカに右へ倣えでBingを採用するもんだとばっかり思ってたんですが、SEOにちょっと足を突っ込んでいるヒトにとってはヨカッタのではないでしょうか。
ワタシ的にもBing対策とかの情報を追わなくてすみそうなのでまぁヨカッタかなと。
インスピリットで働くゆるーいプログラマが拾った情報をてきとーに放り込んでおくサイト。
一般紙でも記事になるくらい影響度があることになってるんでしょうか。
SEO屋さん業界では、結構インパクトあるニュースでしょうけど、それ以外の人たちはあんまり影響ないような。
Yahoo! JAPAN もアメリカに右へ倣えでBingを採用するもんだとばっかり思ってたんですが、SEOにちょっと足を突っ込んでいるヒトにとってはヨカッタのではないでしょうか。
ワタシ的にもBing対策とかの情報を追わなくてすみそうなのでまぁヨカッタかなと。
自分でイベントを発行して、addEventListener で登録した関数で受けたいって時の仕掛けについて。
以下は、1秒後に完了するタイマー。
完了すると、イベントを発行する。
package {
import flash.events.*;
import flash.display.*;
public class EvClass extendsEventDispatcher {
public static const COMPLETE:String = "EvComplete"; // 適当に設定
// コンストラクタ
function EvClass() {
var timer:Timer = new Timer(100,10); // 0.1秒を10回繰り返し
timer.addEventListener( TimerEvent.TIMER, // タイマーの周期処理
function(){ // 適当な処理 }
);
timer.addEventListener( TimerEvent.TIMER_COMPLETE, // タイマー完了時処理
function(){
dispatchEvent(new Event(COMPLETE)); // イベント発行
}
);
timer.start(); // タイマー開始
}
}
}
EvClass を受ける側のソース。
イベントが発行されたら、onComplete 関数で受ける。
var evsample:EvClass = new EvClass();
evsample.addEventListener(EvClass.COMPLETE, onComplete);
function onComplete(e:Event):void{
trace("Complete");
}
xmlファイルを読み込んで、読み込んだ要素の扱いについて。
といっても、要素の扱いについては、属性値を表示するだけ。
データを扱う際の書き方は、その都度調べればいぃってことでココでは触れず。
import flash.events.*;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
var myloader:URLLoader;
var myxml:XML;
// URLLoader作成
myloader = new URLLoader();
myloader.dataFormat = URLLoaderDataFormat.TEXT;
myloader.addEventListener(Event.COMPLETE, onLoaded);
var urlreq:URLRequest = new URLRequest("xmlファイル");
myloader.load(urlreq);
public function onLoaded( e:Event ) : void{
myxml = new XML(myloader.data); // XMLオブジェクト
var n:Number = xml.item.length(); // の数
for (var i:Number = 0; i < n; i++){ // の数だけ
trace(myxml.item.@name); // name属性をログに表示
}
// ちなみに xml データをファイルに出力するときは、以下のような感じ。
var file:File = new File("ファイルパス名");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes( "\n" );
stream.writeUTFBytes(myxml);
stream.close();
}
読み込むxmlファイルは、こんな感じ。
<data> <item name="1"></item> <item name="2"></item> <item name="3"></item> <item name="4"></item> <item name="5"></item> </data>
別flaで作ったモノを swfファイルを呼び出すのではなく、ライブラリ的に使う方法がないかってことで、ムービークリップシンボルをswcファイルにしてからクラスとして呼び出す方法についてメモ。(しょーもないことですが)
**** swcファイル ****
(1)必要な要素を含んだ素材(言い方が変ですが・・・)をムービークリップシンボルに変換。
このとき、リンケージでクラス(任意の一意になる名前:SClass)を設定。
(2)変換したムービークリップシンボルを選択し、ポップアップメニューから「swcファイルの書き出し」を起動。
swcファイルがライブラリパスに格納されるようにフォルダを選んで保存。
**** 呼び出す側 ****
スクリプト内の任意の場所で、クラスを生成することでアクセス可能。
var _csample:CSample = new CSample(); addChild( _csample ); // ムービークリップの表示
といった感じ。
複数のswf間での変数の受け渡しがよくわからなかった件でメモ。
a.swf 、b.swf という2つのswf を用意。
a.swf から b.swf を呼び出すことを想定。
その際、自作クラス Csample を渡します。
*** Csample.as の内容 ***
package {
public class Csample {
var a:int;
function Csample() {
a = 1;
}
public function getA():int{
return a;
}
public function setA(p:int):void{
a = p;
}
}
}
いくつかやり方があるようです。
●その1(シンプルなやり方?)
*** a.swf の内容 ***
var csample:Csample = new Csample(); // 自作のクラス
*** b.swf の内容 ***
// 参照したい場所で
var pobj:Object=this;
trace("rootの変数を参照 ="+pobj.parent.parent.csample.getA());
// といった感じで書くと受け渡された変数にアクセスできるようです。
// この場合は、Csample 内の関数 getA() にアクセス。
●その2(もうちょっとしっかりしたやり方?)
*** a.swf の内容 ***
var csample:Csample = new Csample(); // 自作のクラス
var loader:Loader = new Loader();
var subswf:*;
// b.swf を呼び出すボタンをbtn1として
btn1.addEventListener(MouseEvent.CLICK,onBtn1);
function onBtn1(e:Event):void {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
var request:URLRequest = new URLRequest("b.swf");
loader.load(request);
}
function onComplete (e:Event):void { // 読み込みが完了
e.target.removeEventListener(Event.COMPLETE, onComplete);
addChild(loader);
subswf = loader.content;
subswf.setParam(csample); // b.swf に関数 setParam() が宣言されている
}
*** b.swf の内容 ***
// 呼び出し元から呼び出される関数を用意
var csmpl:Csample; // 自作のクラス
function setParam(p:Csample):void{
csmpl = p;
trace(csmpl.getSample()); // 任意の場所で渡された変数を使用可能
}
Googleのパーソナライズ検索が一般にも適用されるようですね。
海外SEO情報ブログ さんで触れています。
リアルタイム検索については、SEMリサーチ さんで触れています。
技術だけでは、検索結果上位表示が難しくなったりするんですかね・・・
Googleブログに「思いどおりの日本語入力 - Google 日本語入力」ということでIMEが発表されましたね。(ベータ版だけど)
どんなもんかということで早速インストール。
サジェスト機能を有効にしているからなのか変換がチョット重い感じがする時がありますね。
記事を見るとスゴそうなことが書いてあるのでしばらく使ってみようかと。
flash で音声制御(停止したり、再生する)って、やはり悩むところなのかしら?
ググるとそれなりに件数がヒットしますね。
ということでワタシもご多分にもれず、よくわからなかったのでメモ。
(1)音声データを「ファイル」→「読み込み」→「ライブラリに読み込み」
(2)「ライブラリ」から読み込んだデータを選択して右クリック。
サウンドプロパティをあけて、「リンケージ」にクラス名を適当に設定し、基本クラス:flash.media.Sound を設定。
チェックボックス:ActionScript用に書き出し、1フレーム目に書き出しをチェック。
(3)スクリプトレイヤを作って、以下のスクリプトを登録。
var fctrl:int = 0; // 制御判定用フラグ
var snd:Sound = new snd_1(); // snd_1 は、(2)で設定したクラス名
var sc :SoundChannel ;
var pos:uint = 0;
sc = snd.play();
//制御ボタンを張り付けてインスタンス名(適当につけたctlbtn)にイベントを追加。
//ここでは、クリックした際に、タイムラインを止めると同時に、音声も止めたり、再生したりする。
ctlbtn.addEventListener(MouseEvent.CLICK, onClickCtrl);
function onClickCtrl(event:MouseEvent):void
{
if( fctrl == 0 ){ // 再生状態のとき
stop(); // タイムラインを止める
pos = sc.position; // 音声の再生位置を覚える
sc.stop(); // 音声停止
ctlbtn.label = "再 生"; // ボタンのラベルを「再生」に変更
fctrl = 1; // 停止状態に設定
}else{
ctlbtn.label = "停 止"; // ボタンのラベルを「停止」に変更
play(); // タイムラインを再生
sc = snd.play(pos); // 音声を停止位置から再生
fctrl = 0; // 再生状態に設定
}
}
ある事情で、php を CGIモードで動かす必要があったんです。
初めは、cgi-bin みたいな実行可能なディレクトリに放り込んでおいて、実行属性を付ければ動くんじゃない?なんて思ってたですよ。
そしたら、これが思ったとおりに動いてくれなくて ^_^;
ググってみても探し方がよくないのか、そのものズバリみたいなモノが無くて、試しながらやって結果が以下のとおり。
とりあえず動きました
(1)(/usr/local/binとかにある)php-cgi をパスとして参照可能なフォルダにコピー。
今回は、URLでいうところの ルートフォルダ『 /』にコピー。
(2)php を格納したフォルダに .htaccess を作って、
(3)ファイル固有にしたかったので、以下のような項目を記載。
<Files xxxx.php>
AddHandler application/x-httpd-phpcgi .php
Action application/x-httpd-phpcgi /php-cgi
</Files>
/php-cgi は、(1)でコピーしたphp-cgi のURL。
結局のところ、どのように設定するのが正解なのかよくわからないのですが、動いたのでよしとしました。
以前に作ったプログラムの手直しで、行が削除できない現象発生ってことで、久しぶりにDBをいじった。
ダメだ、すっかり忘れてる。
テーブルに制約かませてることをすっかり忘れてて、にもかかわらず行削除しようとしてて・・・ orz
さっそく、 alter table で書き換えようって思ったら、はて、制約名って何だっけ?
Posrgresって、その辺の情報ってどっかにあるんだろうか。
とりあえず、psql で\dS 叩いてシステムのテーブルにそれらしいものがないかっと。
おぉ、テーブルに pg_constraint なんて名前のそれらしいのがあるじゃないですか。
select * from pg_constraint; してみると、見つかりました
無事、alter table できました。