約 2,213,334 件
https://w.atwiki.jp/aotd/pages/15.html
◆伝説◆ 人と龍は別々の世界に暮らしていた。 しかしある時、龍の長「神龍」によって異世界を隔てる扉が開かれ、 龍による人間界への侵攻が始まる。 その最中、龍と人の間に生まれた三人の子供がいた。 子供達は人を越えた力を持っていた。 彼等は人を束ねて龍と戦い、異界へ通じる扉を閉じ、 人間界に残った神龍を封印することに成功した。 そして、いずれ来たる戦うべき時の為に、 自らの龍の力を武器に封じ込め、神龍の封印を解く鍵とした。 ◆国◆ 【ファーティレイ王国】 守りに長けた守龍の血を継ぐ英雄が建てた豊穣の国。 草原地域と森林地域があり、 国の北西に位置する森林地域の中心、開けた地に王都がある。 東には草原地域が広がり、少数部族が其々の生活を営んでいる。 【リンデザルト王国】 魔力に長けた聖龍の血を継ぐ英雄が建てた砂漠の国。 オアシスを中心に複数の都市が形成されている。 国境付近は商人が多く、交易が盛ん。同時に商人を狙った賊も多い。 王都には魔法使いが多く、魔道の聖地とよばれる。 王侯貴族の子女をはじめ、魔道の才に恵まれた者が留学に訪れることも多い。 【ヒースディーン王国】 力に長けた戦龍の血を継ぐ英雄が建てた荒野と渓谷の国。 難攻不落だが人が住める場所も少なく、全ての人間が豊かに暮らしているとは言い難い。 南方には獣人達がそれぞれの生活を営んでいる。 飛竜やペガサス等に騎乗した兵が多い。
https://w.atwiki.jp/scriptuploader/pages/15.html
Script uploader https //img.atwiki.jp/scriptuploader/attach/15/11/doodstream.site.js
https://w.atwiki.jp/tianlang/pages/523.html
以下、 http //www.coolwebwindow.com/weblife_column/coolweb/000301.php より引用 ▼ jQueryでスムーススクロール 最近、Webサイトを制作していて必ず要望に入れられるのが「スムーススクロール」です。 あまりJavaScriptに詳しくないので、ライブラリのプラグインばかり使用していたのですが、 jQueryのみでも、スムーススクロールができることを知りました。 jQueryを最近ようやく勉強しはじめて、知ってる人には知っているという内容なので恐縮なのですが、私はあまりというかほとんどと言っていいほど JavaScriptを知りません。たまに作りたいスクリプトがあったら自作とかしますが、全くといっていいほど基礎を知りません。 そういう非プログラマーの強い見方が「jQuery」といったJavaScriptのライブラリです。これにより、かなりJavaScriptの記述が簡単になり、Webデザイナーなど普段プログラムを組まないような人でも、Webサイトによく組み込まれる「ロールオーバー」や「ドロップダウンメニュー」なども簡単に設置できるようになります。 いろいろ便利な使い方が出来るのですが、今回は「スムーススクロール」について述べますね。 JavaScriptのライブラリ JavaScriptのライブラリには以下のようなものがありますが、私はjQueryしか使ったことないです。 * Prototype * jQuery * MooTools jQueryのダウンロード まずは、jQueryをダウンロードします。単純に呼び出すために使うので、ソースコードや改行が省略化されたPRODUCTIONバージョンを選びましょう。 jQuery The Write Less, Do More, JavaScript Library HTMLの記述 HTMLを以下みたいな感じで記述して、jQueryを呼び出します。 HTMLコード !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http //www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" html xmlns="http //www.w3.org/1999/xhtml" xml lang="ja" head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" / meta http-equiv="Content-Script-Type" content="text/javascript" / meta http-equiv="Content-Style-Type" content="text/css" / title テスト /title link rel="stylesheet" type="text/css" media="all" href="common.css" / script src="jquery-1.4.4.min.js" type="text/javascript" /script script src="function.js" type="text/javascript" /script /head body div id="header" ・・・ /div div id="contents" p テキストテキストテキスト /p p テキストテキストテキスト /p p テキストテキストテキスト /p p a id="sample" サンプル /a /p p テキストテキストテキスト /p p テキストテキストテキスト /p p a href="#sample" サンプルへ移動する /a /p div id="#totop" a href="#" ページのトップへ戻る /a /div /div div id="footer" ・・・ /div /body /html スムーススクロール用JavaScript 新規にfunction.jsというJavaScriptファイルを作り、以下のように記述します。ファイル名は何でもよいのですが、WordPress でもそうですし、どうやら関数はfunction.jsといったファイルにまとめて書いたほうがメンテナンスがよい気がします。 JavaScriptコード $(function(){ // #で始まるアンカーをクリックした場合に処理 $( a[href^=#] ).click(function() { // スクロールの速度 var speed = 400;// ミリ秒 // アンカーの値取得 var href= $(this).attr("href"); // 移動先を取得 var target = $(href == "#" || href == "" ? html href); // 移動先を数値で取得 var position = target.offset().top; // スムーススクロール $($.browser.safari ? body html ).animate({scrollTop position}, speed, swing ); return false; }); }); コメントを書いているのでだいたいわかると思いますが、内部リンクは全て#から始まりますので、まず、「$( a[href^=#] ).click(function() 」で最初が#から始まるアンカーをクリックした場合のみ処理が起こるようにします。a[href^=#]というのはCSS3の書き方です。 アンカーの取得は「var href= $(this).attr("href");」という書き方をしていますが、「var href= this.hash;」でも取得できるようです。しかしこの場合、アンカーが#のみであった場合、値がないのですよね。なぜなのかはよくわからないので、 attrで取得するようにしています。 移動先は、#のみの場合htmlタグへ、それ以外はアンカーに記述されているidのところへ、というふうに条件を振っています。 animateでアニメーション効果をつけることができます。 引数は、値を変更したいプロパティ,スピード,動き,コールバック関数、になります。 scrollTop positionで移動先のスクロールの位置を指定します。 speedでスクロールの速度を指定します。単位はミリ秒です。 動きは、linearとswingがあります。linearは直線的な一定の速度で、swingは最初はゆっくりで徐々に早くなります。 コールバック関数はここでは指定していないので割愛します。 ($.browser.safari ? body html )という記述がありますが、ページの戻りを指定する場合、基本的にhtmlタグのところを指定すればよいのですが、なぜかSafariと Chromeはhtmlタグを指定するとスクロールが有効にならないので、bodyタグを範囲にしています。 このスムーススクロールのよい点 いろいろな書き方が出来るのですが、この場合だと、ページのトップへ戻るのも、内部リンクも特別なことをしなくても(クラスを指定したり、戻り値を個別に指定しなくても)スムーススクロールになるので便利です。 あと、このスムーススクロールのいいところは、リンク先のURLにアンカーで指定した文字が付加されないということです。つまり、「http //www.coolwebwindow.com#」というようにならず、「http //www.coolwebwindow.com」のままでスクロールしてくれます。これのいい理由は、検索ページがおかしくならないという点です。 どういうことかというと、つまり、検索ページのURLって大抵引数がついていますよね?それが内部リンクによってさらに引数がついてしまうと、別の検索結果になってしまい、ページの内容がおかしくなってしまいます。それが回避できるのです。 動作確認 WindowsXPのIE6、Firefox3.6.13、Opera10.63、Safari5.0.2、Chrome8.0です。(あれ、いつのまにChromeってバージョン8までいったの?)これらでは全て正常に動作しました。 もっとダイナミックな動きをさせたい場合はプラグインを 今回はjQueryのみで実装しましたが、スムースさ加減が二種類しかないので、スムーススクロール用のプラグインなど読み込めばもっといろいろな動きでスクロールすることができます。 プラグインについては以下などを参考にしてみてください。 ページ内スクロールのjQueryプラグインいろいろ - かちびと.net 参考にしたサイトなど。謝辞。 jQueryでページ内リンクをスムーズスクロールする | TRIPLEXXX jQueryで遊んでみる その7 · CamCam jQueryでアンカーリンクをスムーズスクロールの練習 | 乱雑モックアップ 参考にした書籍 完全カラーですっごいわかりやすいです!初めてjQueryを学ぶなら絶対買いですよ!感謝!
https://w.atwiki.jp/vpvpwiki/pages/288.html
MMD周辺ライブラリ アプリケーション製作時に有用な、汎用性のあるプログラム部品について。 ※ ツール・アプリケーション本体、及びアプリケーションを選ぶ類のライブラリ(プラグイン)は別ページで。 .NETMMF(Miku Miku Flex) SlimDX C++Bullet DXライブラリ MeshIO MikuMikuPenguin (MMP) libvpvl JavaTogaGem MMDLoaderJME WebGL (JavaScript)three.js MMD.js enchant.js jThree.MMD.js RubyMMD on Ruby UnityMMD4Mecanim MikuMikuDance for Unity 終了したプラットフォームMicrosoft XNA(.NET2.0)MMDX version2(旧 MikuMikuDance for XNA) MMDモデル(.pmd)コンテンツパイプライン マルチプラットフォームNyMmd DLLインジェクション/APIフックMMaccel MMD Bridge フォーマット樋口M氏による、MMDのIK処理ソースコード断片IKについて レンダリング ユーザーによるMMD独自形式のフォーマット解析モデル(XX、PMD) モデル(PMX) モーション(VMD) プロジェクトデータ(PMM) MME PMDエディタ その他 .NET MMF(Miku Miku Flex) 本家 (開発停止) 派生版 MMD、MMEの仕様を満たすモデル、エフェクトの表示などをするオープンでフリーなライブラリです。一度開発が停止したものの、別の開発者が引き継ぎ開発を継続中。 DirectX11上で動作 旧名 Miku Miku Dance Drawer library(MMDD) 紹介動画 +開発停止中 SlimDX https //github.com/SlimDX/slimdx .NET環境でDirectXを利用するためのライブラリした。開発停止しており、Direct3D 11.1以降にまだ対応していません。 PMDEditorが利用。 C++ Bullet http //www.bulletphysics.org/ MMDやBlender、GTAIVが利用している物理演算ライブラリ。 DXライブラリ DXライブラリ 関数リファレンスページ>3D関係関数リファレンス 「3Dモデル関係の関数」>「モデルの読み込み・複製関係の関数」の項目でMMD関連ファイルを扱っています 読み込むことのできるモデルファイル形式は x, mqo, mv1, pmd( + vmd ), pmx( + vmd ) の4種類です。( 但し、pmx は pmd 相当の機能だけを使用していた場合のみ正常に読み込める仮対応状態です ) MMD( MikuMikuDance )のモデルファイル( pmd or pmx )とモーションファイル( vmd )について。 <対応度について> 一応モーションの再生と取れに伴うIK、物理演算に対応していますが、完全に本家 MikuMikuDance と同じというわけではありません。 超国営バトーキン場バトーキン氏、DXライブラリを使って自プログラムを開発したときの、メモ書きあり。 +開発停止中 MeshIO http //meshio.osdn.jp/ pmd, vmd, mqoの読み書きライブラリ MikuMikuPenguin (MMP) 開発者ブロマガ github MMDモデル表示ライブラリ 2014/11/17に開発終了 紹介動画 libvpvl http //blog.hikarin.jp/ https //github.com/hkrn/MMDAI/wiki/libvpvl MMDAI2の開発者によるC++ライブラリ。MMDAI2の終了に伴い、開発停止中。 Java +開発停止中 TogaGem http //mikutoga.osdn.jp/togagem.html PMDやVMDのファイルパーサライブラリなど。 コンバータPmd2XMLやVmd2XMLの下請け。 MMDLoaderJME [https //osdn.net/projects/mikumikustudio/ https //osdn.net/projects/mikumikustudio/]] JavaでMikuMikuDanceのファイルの読み込み、表示を行うライブラリ。 MikuMikuStudioの作者によるライブラリ。 WebGL (JavaScript) ウェブブラウザで3次元コンピュータグラフィックスを表示させるための標準仕様。 技術的には、JavaScriptとネイティブのOpenGL ES 2.0のバインディングである。 (Wikipediaより引用) three.js https //threejs.org/ GitHub デモページ:MMDLoader test +開発停止中 WebGL 1.0までしか対応しないものなど。 MMD.js edvakf/MMD.js · GitHubソース edvakf氏ブログ(関連記事あり) デモページ:MMD on WebGL enchant.js enchant.js PMDやVMDを使うためのプラグイン、mmd.gl.enchant.js を公開。 jThree.MMD.js jThree MMDをウェブ上に公開するjQueryプラグイン jThree.MMD.jsプラグイン自体がmmd.three.jsを開発者katwat氏の協力の元でjThree用にカスタマイズしたものソース 現在jThree.jsは廃止され、後継のGrimoire.jsが開発中となっている。 Ruby +開発停止中 MMD on Ruby MMD on Ruby紹介ページ(?) Unity MMD4Mecanim http //stereoarts.jp/ Nora氏によるMMDをUnity で使えるようにするツール。 PMX(PMD) + VMD を FBX に変換するツール & Unity (Mecanim) で一通り動作させるためのスクリプトです。 Bullet Physics をサポートしています。 +開発停止中 MikuMikuDance for Unity MikuMikuDanceをゲームエンジンの一つでもあるUnity上で動作させるためのライブラリです。 →MikuMikuDance_for_Unityにまとめました GitHub 終了したプラットフォーム +Microsoft XNA(~2014年) Microsoft XNA(.NET2.0) XNAは2014年にMicrosoftが開発終了している。 MMDX version2(旧 MikuMikuDance for XNA) http //sourceforge.jp/projects/mmdx/ モデル、モーションの読み込み。アニメーションの表示 作者のブログゆるアマクリエイターの日記 MMDモデル(.pmd)コンテンツパイプライン とあるPGの研究記録Ⅱ>XNAライブラリ/ツール一覧 モデルデータ読み込み。開発終了 マルチプラットフォーム +開発停止中 NyMmd http //code.google.com/p/nymmd/ PMDモデルファイルの読み込みと、VMDモーションの再生が可能なクラスライブラリ。 Java/C#対応。 DLLインジェクション/APIフック プラグイン機構の無いMMDでは、機能拡張のためにコードインジェクションが必要となります。コードインジェクションは、MMEでも使われている一般的な手法です。 MMaccel https //github.com/LNSEAB/mmaccel ライセンス https //github.com/LNSEAB/mmaccel/blob/master/mmaccel_readme.txt MMD Bridge https //github.com/uimac/mmdbridge MITライセンス。 フォーマット 樋口M氏による、MMDのIK処理ソースコード断片 2012/5/15現在、公開終了? http //www.geocities.jp/higuchuu4/ik.zip (PMD版?) http //www.geocities.jp/higuchuu4/ikx.zip (PMX版?) IKについて ボーンに「ひざ」と名前がつくと、X 軸方向にしか曲がらない(英語だとkneeが対応すると思われる。) はてなブログ edvakf氏 MMD on WebGL 踊れるようになった(あと IK について)(2011-11-02) レンダリング 透明な材質の奥ではエッジを描画しない。 材質 透明度0.98でその材質のみシャドウを落とさない。 ユーザーによるMMD独自形式のフォーマット解析 モデル(XX、PMD) 通りすがりの記憶>MMDのモデルデータ(PMD)形式 めも (まとめ) MMDのモデルデータについて語るスレ(2008/08/30-2009/06/21)MMDのモデルデータについて語るスレ Part 2(2009/05/31-2010/08/28) Olyutorskii’s shack>PMDファイル構造のUML化(改訂2稿)(2012/06/27) モデル(PMX) PMXのフォーマットは公開されています。PMDエディタに同梱のファイルをご覧ください。(商用利用についても言及あり)参考ページ:PMDエディタの使い方/Version情報 MikuMikuDance/PMXの概要 Olyutorskii’s shack>PMXファイル構造のUML化(改訂2稿)(2012/06/27) モーション(VMD) 通りすがりの記憶 2010-02-20 MMDのモーションデータ(VMD)形式 めも 寝不足でつ インドカレー氏 VMDファイルフォーマット Yumin Space 【MMD】VMDConverter モーションファイル変換ツール公開しました。 針金のブログ 針金P 2011/03/02VMDメモ…VMDの内部フォーマットを自己解析してみました とある工房 極北P 2013年06月07日 MMD7.40以降のVMDの変更内容に関して0219 はてなブログ edvakf MMD on WebGL カメラとライトと表情のモーションに対応(あと補間曲線について)…補間曲線に使われているベジエ曲線の計算式など プロジェクトデータ(PMM) skydrive そぼろ氏 pmm解析中 Google Drive 魚圭糸工氏 Pmmフォーマット解析 推定構造 MME MikuMikuEffectで学ぶHLSL入門(舞力介入P、ビームマンP) MMD関連プログラミングスレ>樋口氏(M、MMD開発者)と舞力介入P(MME開発者)のMME導入のやりとり PMDエディタ ザック・マイルド氏 PMDE プラグイン クラス図-PMX(2012/07/16) PMDE_Plugin astah* プロジェクトファイル(2012年07月16日) PMDE_Plugin astah* プロジェクトファイル(2012年07月18日) その他 wiki内 MikuMikuDance/拡張子…MMDに関わる拡張子情報 MikuMikuDance/PMXの概要 外部リンク frivolouslife>プログラム…MMDと同じようにモデル・モーションを出力する試行錯誤の日記。関連記事は「はじめての DirectX 」で統一されている。 みくだん>MMD基準モデルフォーマット、PMD/PMXについて プロジェクト 初音の未来プログラマ向け情報へのリンク 名前 コメント
https://w.atwiki.jp/aki-lyon/pages/24.html
myD = new Date(); myYear = myD.getYear(); myYear4 = (myYear 2000) ? myYear+1900 myYear; myMonth = myD.getMonth() + 1; myDate = myD.getDate(); myDay = myD.getDay(); monthdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if(((myYear%4==0) (myYear%100==0))||(myYear%400==0)){ monthdays[1]=29; } switch(myDay){ case 0 myD.setDate(myD.getDate() - 6); break; case 1 myD.setDate(myD.getDate()); break; case 2 myD.setDate(myD.getDate() - 1); break; case 3 myD.setDate(myD.getDate() - 2); break; case 4 myD.setDate(myD.getDate() - 3); break; case 5 myD.setDate(myD.getDate() - 4); break; case 6 myD.setDate(myD.getDate() - 5); break; } document.write( 更新日: + myD.getFullYear() + 年 + (1 + myD.getMonth()) + 月 + myD.getDate() + 日 );
https://w.atwiki.jp/mopsprogramming/pages/156.html
Mopsで既に定義されて準備されているコードの基本単位は"ワード(word)"と呼ばれます。コンピュータ科学の方面には別の意味のワードも使われるので、はじめのうちは注意しないといけません。コンピュータ科学でのワードは機械の記憶の基本単位のことで、32ビットコンピュータなら32ビットで1ワード、64ビットコンピュータなら64ビット1ワードということです。MopsというかForth系一般ですが、そこでいうワードは、他のプログラミング言語でいう関数や手続というものに当たります。正式なコンピュータ用語(あるいはFortranとか)ではサブルーチン(subroutine)と呼ばれるものです。 サブルーチン では、サブルーチンってなんでしょう。ルーチン(routine)は"決まり切った作業"という意味で、それにサブ(sub 下位のとか副次的なという意味)がついたのが、この言葉の成り立ちです。サブがあれば、スーパーというかメイン(main 主要な)があるわけです。実際、メインルーチンというのもあります。メインルーチンは、プログラムの一番最初に実行されます。そして、適当に必要になったところで、サブルーチンを呼んで、必要な仕事の手助けをしてもらうわけです。 そんなわけで、サブルーチンというのは、あるまとまった処理をするコードの集まりです。どうしてこういうものが必要になるかというと、例えば、同じパターンの計算をプログラムのあちこちで何回も何回も実行しなければならない場合というのがあります。このとき、その場所にいちいち同じコードをくり返し書かないといけないとすれば、作業も大変ですし、プログラムも長くなってしまいます。サブルーチンがあれば、これを一カ所にまとめて書いておき、必要なその都度名前で呼び出すことによって、コードを大幅に節約することができるわけです。 ワードの定義 で、このサブルーチンがMopsではワードとよばれるわけです。Mopsの中には、すでにかなりの数のワードが定義されています。これらを組み合わせて、自分で新しいワードをつくることもできます。ワードをつくるときにはその内容を決めることになるので、ワードを定義するといいます。いったん定義されると、はじめから定義されていたものと自分が定義したものとは区別されません。 普通のワードの定義のときにはコロン記号" "で始めます。そのためコロン定義(colon definition)と呼ばれます。そしてワード名、それから内容を書いて、セミコロン記号";"で定義を閉じます。 SUMIMASEN m(_ _)m ; いや、まあ、こんなのはありませんが。すでに定義されているワードを呼び出すには、その名前を書きます。 OWABI SUMIMASEN MOHSHIMASEN YURUSHITE ; 上でコロン記号とセミコロン記号と書きましたが、本当はこれらは単なる記号ではありません。これ自体きちんと定義されているワードで、一文字でできた名前をもつワードなのです。Mopsのワードは半角空白か改行で周囲と区切らなければなりません。逆に一つのワード名は中に空白を含むことはできません。これは、Mopsのワード名をつくるときの数少ない制限の一つで、もう一つは、Mops独特のメソッドとの関係上、ワード名の最後にコロンを使うことはできません。制限はこれだけです。漢字かなも大丈夫でした。ビックリ。 コロン定義するワード名に大文字小文字の区別はありません。実際には、すべて大文字に変換された上で記録されます。 Mops/Forthプログラミングの原則 ワードはできるだけ小さく、細かい作業単位で区切るのが原則です。そのようなワードを少数ずつ組み合わせながら、次第に1ワードの行う現実の作業を複雑化し、抽象化して行きます。この過程は、統合による単純化、明確化の過程であるべきです。理想的には。 ともかく、あまり長~い定義を持つワードは極力つくらない、というのが原則です。このような考え方をすることによって、問題をより明確に把握できる上に、再利用可能性の高いワードをつくることができ、さらには、コードの保守、つまり改訂や修正がしやすくなるということです。あまりキツくは考えず、努力目標ということで良いと思いますが。 サブルーチン呼び出し? -- ちょっと入り組んだ話 サブルーチンを"呼び出す"といいましたが、それはどういうことでしょう。お察しの通り、初回にふれたジャンプをするわけです。つまり、呼んでここに来てもらうというより、サブルーチンのコードがあるところに飛ぶのです。 ただし、実をいうと、このジャンプにも二種類あります。これらは普通、機械語の命令として組み込まれています。 一つ目のジャンプは、本来の意味のジャンプというか、行ったきりになるジャンプです。戻ってくることを考えない、鉄砲玉ジャンプとでもいいますか。この場合、行った先のコードで、そこの部分が完了したらどこに行くという具体的な情報を自前で持っていないといけません。まあ、全プログラムを終了してもいいんですが。 もう一つのジャンプは、ジャンプした先のまとまった処理が終わった後には戻ってくるということを前提としたジャンプです。これは、ジャンプ前にいた場所のコードが、後で戻ってきて欲しい場所の番地(アドレス)を、ジャンプ前に予め保管しておくことで実現されます。飛んで行った先のコードには、そこでのまとまった処理が終わった後具体的にどこに行けばいいのかという情報は書き込まれていません。ですが、戻る場所を格納しておく場所は予め全体として決めておくので、それはわかっているわけです。ですから、終わったらその格納場所を見て、そこに記録されている場所に戻ることになります。 で、サブルーチンの"呼び出し"というのは、後の方のジャンプのことを指します。サブルーチンというのは、作業が終わったら呼び出し元に戻るというのが原則ですから。この「必ず戻ってくる」ということを考えると、"赴き"ではなく"呼び出し"といってもいい気がしてくるのではないかと思います。その"働き"にちょっと一時的に来てもらう、というか、ん~、かえってわかりにくいですかね。ともあれ、この機構は、機械語として組み込まれたこの機構をサブルーチンで利用しているというよりも、ソフトウェアのサブルーチンの機構を実現する手間を省くために機械が対応したものだろうと思います。 Forth環境というのは伝統的に、といいますか、一番はじめから、この"呼び出し"のプロセスを自前で持っていました。つまり、ソフトウェアとして実現していたのです。Mopsはネイティブコード方式なので"呼び出し"は機械語で実装されている方法を使っています。機械に組み込まれた方法を使った方が直接的だから当然速い、と思われるかもしれませんが、実は必ずしも当然じゃないらしいのです。まあ、PowerPCは機械語バージョンの方が速いようですので、Mopsに関しては最も速い方法を採用しているといえます。ところが、ちょっと前の普通のCPU(インテル系とか)だと、そうじゃないらしいのです。 この局面に関しては出来が悪い機械もある、といえないこともないのですが、実は、後からコードを追加していくことができないといけない Forth系の特性も絡んでいまして、どこにどのような形でジャンプするのかによって、標準と違うと予想をしくじったりとか、ひどく手間取ったりするらしいのです。こういう機械では、平均すると、ソフトウェアの方で呼び出しの作業をしてやった方がロスが少なかったりすることもあるのだそうです。最新のものはそうでもないらしいですが。ですから、Forthが特に呼び出しの手順をソフトウェアとして準備していることは、今でも意味はあることらしいです。とくに、コンピュータ科学としてはこの機構を知ることは基本とすべきだともいえますね。ソフトウェアで作ってある結果として操作可能性も高まります。Mopsではこの部分をいじるのは危険ですが、仕組みを理解することはできます。 いずれにせよ、呼び出しというのは、少しではありますが、ベタでコードを実行していく場合よりも手間取るわけです。そのため、 Forthの原則通り細かく細かくサブルーチンを分けてつくると、一般に時間のロスは大きくなるわけです。まあ、サブルーチンの呼び出しの際の余分な手間(オーバーヘッドといいます)というのはジャンプに関するものばかりではありません。C言語などの普通の関数呼び出しでは、その他のオーバーヘッドというのが、かなりあるように思われます(仕組みからの推論 -- パラメターや局所変数の値、その他戻ってくるときまで残しておかなければならない値を全部どこかにしまっておかないといけない。どの程度手間かは機械の仕組みに依存する。)。そうすると、この部分がほとんどないMopsなどでのワードの呼び出しのオーバーヘッドは、他の言語の場合よりも軽くみていいということはいえるわけです。 あまり効率ばかり気にしてもしょうがないのですが、こういうことを考えるのは、コンピュータが実際にどういう風に動かされているのかを意識する結果になるので、一般的には良いことだと思います。観念的な論理の世界だけでプログラミングを思考する、というのも、面白いといえば面白いですけどね。 ワードは基本単位--補遺 このページの内容は、ワードはサブルーチンということで説明してきました。狭い意味でのワードに限れば、これはそれほど外れていないともいえます。しかし、ワードは「プログラムの基本単位」というときには、実はもう少しワードを広く考えています。つまり、名前を付けて呼び出せるものは全てワードだと考えているのです。具体的には、いわゆる関数やプロシジャーに当たるものの他に、変数も含まれます。さらに、Mopsではクラスやオブジェクト(インスタンス)も含まれてきます。このように考えると、Mopsプログラムは、まさにワードから成り立っているのです。先走りで恐縮ですが。 前へ 次へ 目次へ トップページへ
https://w.atwiki.jp/internetkyogakusys/pages/170.html
https://w.atwiki.jp/fxext/pages/47.html
Places のコンテキストメニューに項目追加表示非表示の切り替え 右クリックメニューから、選択されてるノードを取得する Places のコンテキストメニューに項目追加 menupopup id="placesContext" menuitem label="サンプル" oncommand="function();" selectiontype="single" selection="bookmark|folder" insertbefore="placesContext_openSeparator"/ /menupopup placesContext は chrome //browser/content/places/placesOverlay.xulに書かれているので、それを overlay してやればいい。 SCRAPBLOG Places 右クリックメニューへのメニュー項目追加 表示非表示の切り替え onpopupshowing なんて使わなくても属性を設定するだけで簡単に表示の切り替えが出来る。places/controller.js に実装されている。 属性 説明 selectiontype single/multiple のいずれか。単数/複数選択で表示 selection 下記の表の値。"|"で複数指定可能。条件が合えば表示 forcehideselection 下記の表の値。"|"で複数指定可能。条件が合えば隠す hideifnoinsetionpoint 値はtrue固定。挿入する場所が無いと隠す。例えばクエリフォルダ内にアイテムの新規作成とか selection や forcehideselection に設定できる値のリスト 値 説明 query nsINavHistoryResultNode で RESULT_TYPE_QUERY host nsINavHistoryQueryOptions で RESULTS_AS_SITE_QUERY day これは RESULTS_AS_DATE_QUER か RESULTS_AS_DATE_SITE_QUERY dynamiccontainer RESULT_TYPE_DYNAMIC_CONTAINER folder フォルダ separator セパレーター link RESULT_TYPE_URI、RESULT_TYPE_VISIT、RESULT_TYPE_FULL_VISIT bookmark ブックマーク microsummary tagChild livemarkChild 右クリックメニューから、選択されてるノードを取得する var view = PlacesUIUtils.getViewForNode(document.popupNode); var node = view.selectedNode; // single の場合 var nodes = view.selectedNodes; // multiple の場合 PlacesUIUtils.getViewForNode が超便利。 view は tree要素。places/tree.xml にプロパティやメソッドが定義されてる。 node はnsINavHistoryResultNode。nodes はその配列。 SCRAPBLOG Places ビューと nsIPlacesView インタフェース Displaying Places information using views | MDN
https://w.atwiki.jp/three-amigos-eg/pages/2.html
メニュー トップページ プラグイン メニュー メニュー2 @ウィキ ガイド @wiki 便利ツール @wiki 更新履歴 取得中です。
https://w.atwiki.jp/fxext/pages/35.html
ブックマークメニューへの項目の追加 ブックマークフォルダ内の一番下にある「タブですべて開く」メニューのようにメニューを追加する方法。 ブックマークメニューは動的に生成されてるので、JavsScriptでやる必要がある。 omni.ja/chrome/browser/content/browser/places/browserPlacesViews.js内の PlacesViewBase.prototype._onPopupShowing にコードを追加してやればいい。 下のコードはちょっと古くて今は使えないので注意。ちゃんと調べて適切に実装するように。 eval( PlacesViewBase.prototype._onPopupShowing = + PlacesViewBase.prototype._onPopupShowing.toString().replace( this._mayAddCommandsItems(popup); , $ this.sampleAddItem(popup); ) ); // 名前が被らないように注意 PlacesViewBase.prototype.sampleAddItem = function(aPopup) { // ルートメニューなら表示しない if (aPopup == this._rootElt) return; // ライブブックマークなら表示しない var itemId = aPopup._placesNode.itemId; if (itemId != -1 PlacesUtils.itemIsLivemark(itemId)) return; if (!aPopup.sampleItem) { aPopup.sampleItem = document.createElement( menuitem ); aPopup.sampleItem.setAttribute( label , sample ); aPopup.appendChild(aPopup.sampleItem); } }