約 4,530,824 件
https://w.atwiki.jp/chapati4it/pages/66.html
dotcloud/play1.2.5アプリのデプロイの続きです。 dotcloud + Play framework1.2.5 + PostgreSql で使ってみましょう。 構成ファイルにPostgreSqlを使う記述を追加 $ vi ~/play/dotcloud/hello/dotcloud.yml www type java data type postgresql helloプロジェクトをデプロイ ※一旦デプロイしないとDB接続情報を見られません。 $ dotcloud push hello ~/play/dotcloud/hello/ DB接続情報確認 $ dotcloud info hello.data config postgresql_password ぱすわーど created_at 1341474539.4294181 datacenter Amazon-us-east-1c image_version 220b790a574f (latest) instance data.0 memory - total reserved N/A (sandbox app) - total used 8MB - cache portion 3MB of 8MB (43%) ports - name ssh url ssh //postgres@hello-chapati.dotcloud.com ぽーと番号 - name sql url pgsql //root ぱすわーど@hello-chapati.dotcloud.com ぽーと番号 pricing free state running type postgresql DBユーザー作成 $ dotcloud run hello.data -- createuser chapati --pwprompt # createuser chapati --pwprompt Enter password for new role 新しいユーザーのパスワード入力 Enter it again 再入力 Shall the new role be a superuser? (y/n) y DB作成 $ dotcloud run hello.data -- createdb mydb # createdb mydb helloプロジェクト修正 DBを使えるか確認するための簡単なプログラムを作成します。 修正内容 トップページにユーザー情報入力フォームを表示。 トップページにユーザー一覧を表示。 登録ボタンで入力されたユーザー情報を登録しトップページに戻る。 application.confにDB接続情報を記述 ※DB接続情報確認で表示された情報をちょこっと加工してあります。 $ vi ~/play/apps/hello/conf/application.conf db=postgres //root ぱすわーど@hello-chapati.dotcloud.com ぽーと番号/mydb Applicationコントローラ修正 $ cat ~/play/apps/hello/app/controllers/Application.java package controllers; import play.*; import play.mvc.*; import java.util.*; import models.*; public class Application extends Controller { public static void index() { List User users = User.findAll(); render(users); } public static void registUser(User user) { user.save(); index(); } } Application/index.html テンプレート修正 ユーザ登録フォームとユーザ一覧を表示できるようにします。 $ cat ~/play/apps/hello/app/views/Application/index.html #{extends main.html /} #{set title ユーザー登録 /} h3 ユーザー登録 /h3 #{form @Application.registUser()} div 名前 input type="text" value="" name="user.name"/ /div div メールアドレス input type="text" value="" name="user.email"/ /div input type="submit" value= 登録 #{/form} h3 登録ユーザー /h3 #{list items users, as user } div ${user.name} ${user.email} /div #{/list} User モデル作成 $ cat ~/play/apps/hello/app/models/User.java package models; import javax.persistence.Entity; import javax.persistence.FieldResult; import javax.persistence.ManyToOne; import play.db.jpa.Model; // dotcloudのDBにUserテーブルは作成できないためテーブル名指定 @Entity(name="helloUser") public class User extends Model { public String name; public String email; public User(String name, String email, String desc) { this.name = name; this.email = email; } } 修正したhelloプロジェクトをデプロイ $ ~/play/play-1.2.5/play war hello -o ~/play/dotcloud/hello/hello.war --zip $ dotcloud push hello ~/play/dotcloud/hello/ ブラウザから何人かユーザー登録 ちゃんとDBに登録できたか確認 sshでhello.dataに接続 $ dotcloud ssh hello.data # $SHELL postgres@hello-default-data-0 ~$ mydbに接続 postgres@hello-default-data-0 ~$ psql mydb psql (9.0.4) Type "help" for help. hellouserテーブルをselect文で確認してみる mydb=# select * from hellouser; id | email | name ----+----------+---------- 1 | test | test 2 | hogehoge | hogehoge 3 | 2222 | 1111 4 | 88888 | 9999 (4 rows) 画面と同じ物が表示されたのでOK!!
https://w.atwiki.jp/taer/pages/200.html
last modified 2009年07月15日 (水) 12時30分29秒 Desktop Tower Defense http //www.handdrawngames.com/DesktopTD/Game.asp タイムアタック、スコアアタック共に、Ver,PRO、Sprint Modesで行う 最終wave終了後スコアが表示されクリアとなる 再びステージ選択を行うと、各難易度におけるベストタイムが表示される NA2タイムアタック 順位 タイム 達成者 達成日 1 14 55 NAKO 2009年6月25日 NACタイムアタック 順位 タイム 達成者 達成日 1 16 59 NAKO 2009年6月8日 NA2-NSタイムアタック 順位 タイム 達成者 達成日 1 22 49 NAKO 2009年6月8日 NA2スコアアタック 順位 スコア 達成者 達成日 1 5298 NAKO 2009年6月25日 NACスコアアタック 順位 スコア 達成者 達成日 1 5190 NAKO 2009年6月8日 NA2-NSスコアアタック 順位 スコア 達成者 達成日 1 4658 NAKO 2009年6月8日
https://w.atwiki.jp/gleaning/pages/4.html
Gentoo Linux運用環境 Xeon (EM64T) デスクトップ CPU Xeon 3.8GHz×2 (HT) RAM 4GB Video nVIDIA Quadro FX 1400 (128MB) Sound AC 97 Audio Controller (ICH5) Network Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet 特徴 Hyper Threading (HT)を enable にした Xeon をデュアルコアで運用。見かけ4CPUです。SATA接続の250GBのHDDを二台、DVD±R/RW(DL対応)、CD-R/RWが各一台。 HPのワークステーション(xw6200)です。 VAIO Z1R/P CPU Pentium M (1.5GHz) RAM 512MB Video ATI RADEON (16MB) Sound AC 97 Audio Controller (ICH4) Network Intel PRO100/V と Intel PRO/Wireless LAN 2100 特徴 HDDを標準の60GB(4200rpm)から80GB(4200rpm)に換装してある。 VAIO type S CPU Pentium M 760 (2.13GHz) RAM 2GB Video nVIDIA GeForce 6200 TC (32MB) Sound Intel HD audio (ICH6) Network Intel PRO100/VE と Intel PRO/Wireless LAN 2200 特徴 2005年春の Sony Style モデル。ディスプレーが13インチ1280x800 とワイド。 でも狭い。小型に見えて結構重い(1.9kgくらい)。計算中はファンが激しい。 Pentium IIIデスクトップ CPU Pentium III (1GHz) RAM 1GB Video Matrox G450 (32MBだったような) Sound Creative Labs SB Live! EMU10k1 Network Intel Ethernet Pro 100 特徴 7年になる旧式マシン。もっぱら各種サーバとして運用しており、デスクトップとしては活用してない。HDDは現在は120GBのものを2基積んでいる。
https://w.atwiki.jp/mgnrc/pages/30.html
Rudder T4 Rudder T5 Rudder T6 Rudder T7 Rudder T8 Rudder T9 Rudder T10 Rudder T4 Health 1,056 2,835 72 24 CPU Load 20 pFLOP Robot Ranking 394 Heal Rate 2.00 Resistivity 15 % Barrier Protection 18 % Mass 5.3 kg Drag Speed Minimum 163 mph Maximum 178 mph Max Mass Per Foil 352 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 285 mph Overclocked Max Ceiling 910 mph Rudder T5 Health 1,753 3,859 86 30 CPU Load 21 pFLOP Robot Ranking 1,116 Heal Rate 2.00 Resistivity 15 % Barrier Protection 19 % Mass 5.9 kg Drag Speed Minimum 164 mph Maximum 179 mph Max Mass Per Foil 420 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 286 mph Overclocked Max Ceiling 910 mph Rudder T6 Health 2,783 7,621 126 37 CPU Load 22 pFLOP Robot Ranking 3,157 Heal Rate 2.00 Resistivity 15 % Barrier Protection 21 % Mass 6.4 kg Drag Speed Minimum 165 mph Maximum 180 mph Max Mass Per Foil 488 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 288 mph Overclocked Max Ceiling 910 mph Rudder T7 Health 4,217 14,176 204 46 CPU Load 23 pFLOP Robot Ranking 8,911 Heal Rate 2.00 Resistivity 15 % Barrier Protection 22 % Mass 7.0 kg Drag Speed Minimum 166 mph Maximum 181 mph Max Mass Per Foil 556 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 290 mph Overclocked Max Ceiling 910 mph Rudder T8 Health 6,081 27,582 342 58 CPU Load 24 pFLOP Robot Ranking 25,105 Heal Rate 2.00 Resistivity 15 % Barrier Protection 23 % Mass 7.6 kg Drag Speed Minimum 167 mph Maximum 182 mph Max Mass Per Foil 624 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 291 mph Overclocked Max Ceiling 910 mph Rudder T9 Health 8,329 49,100 565 72 CPU Load 25 pFLOP Robot Ranking 70,607 Heal Rate 2.00 Resistivity 15 % Barrier Protection 24 % Mass 8.2 kg Drag Speed Minimum 168 mph Maximum 183 mph Max Mass Per Foil 692 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 293 mph Overclocked Max Ceiling 910 mph Rudder T10 Health 10,801 89,558 936 88 CPU Load 26 pFLOP Robot Ranking 198,266 Heal Rate 2.00 Resistivity 15 % Barrier Protection 25 % Mass 8.8 kg Drag Speed Minimum 169 mph Maximum 184 mph Max Mass Per Foil 761 kG Max Ceiling 700 m DiminishingReturns Start 4 rudders End 12 rudders Overclocked Max Speed 294 mph Overclocked Max Ceiling 910 mph
https://w.atwiki.jp/myfavoritepcsettings/pages/42.html
目次 ↑ 概要 URL インストール 設定 タグ 概要 全デスクトップの番号アイコンをタスクトレイに並べ、各デスクトップにクリック一発で切り替えられるようにする URL http //virtuawin.sourceforge.net/downloads/modules/cooldsvw_x64.zip インストール 展開後のファイル群をVirtuaWinインストールディレクトリの modules サブディレクトリにコピーする タスクトレイアイコンを右クリック > Modulesタブ > [Reload]ボタンをクリック でモジュールが追加される 設定 デスクトップ名は VirtuaWinの Desktop Configuration に合わせて明示的に設定する タスクトレイに矢印アイコンは表示せず、番号アイコンだけにする VirtuaWinのアイコンは表示しない タグ
https://w.atwiki.jp/titanquest/pages/234.html
Paladinビルドガイド Titan Quest Forumsのビルドガイドです。 経験者による補完希望です。 Paladin-Complete Guide 目次 構想戦い方 パーティプレイ 良い点、悪い点良い点 悪い点 スキル配分スキルオプション ステータス配分 装備装備例 装備オプション その他育成について 注意点 最終更新日:2016年09月16日 構想 盾持ち近接戦士にStoの魔法を付与。 (Stoの魔法メインにDefの回復魔法と盾スキルを使うというキャスター系もある) 戦い方 Squallをかけて、盾と右手武器で殴りつける。 パーティプレイ 良い点、悪い点 良い点 Stoの反撃技が活用できる。防御力は高い。 悪い点 エネの消費が激しい。右手武器を強化するスキルが乏しい。キャスターには全く向かない。 スキル配分 Skill Name Lv Comment Defense Mastery MAX Concussive Blow Max 鈍器を使うなら Batter 1~ →Rend Armor 1 Armor Handling 1~ Adrenaline 1 →Resilience 1 →Defensive Reaction 1~ Shield Charge 1 →Disruption 1 Shield Charge Max Disable Max Pulverize Max Colossus Form 1~ Storm Mastery Max Storm Nimbus 1 →Heart of Frost Max →Static Charge Max Squall Max →Obscured Visibility Max Energy Shield Max →Reflection Max Storm Surge Max スキルオプション Skill Name Lv Comment Freezing Blast 1~ AE版なら ステータス配分 Str重視、Dexそこそこ。 装備 氷雪ダメか雷ダメのついた鈍器が右手武器として推奨。 装備例 武器(メイン): 武器(サブ): 頭: 首飾り: 胴: 腕: 指輪: 指輪: 脚: アーティファクト: 装備オプション その他 育成について Defから育て、Stoは後から。 注意点
https://w.atwiki.jp/gleaning/
ここはどこ? Linuxをdesktop OS として日常から利用している私(管理者)が、個人的メモをまとめた wiki ページです。というわけで、管理者以外は編集できません…。 ディストリビューションは? 今は Gentoo Linux を中心に利用しています。 この wiki ページも Gentoo Linux 用です。 あんた誰? しがないサラリーマンです。 何やってる人? ひょっとすると、数値計算かもしれません。 でも、きっと下働きです。 訪問者数 これまで - 人 今日は - 人 昨日は -
https://w.atwiki.jp/cloneofminecraft/
2016年4月に[sandbox.yoyogames.com]が閉鎖されたので同サイトにアップロードされていたものは、すべてリンク切れしています。 各ページに振り分ける時間がないので、取り敢えず見つけたものの一覧です。 振り分け待ち 目次 目次 Wikiについて! Minecraft以外の無料ゲームまとめ クローンゲーム報告 ダウンロードランキング 一時ゲーム置き場 お知らせ Wikiについて! Minecraftのクローン/パクリゲームまたは風のゲームのまとめWikiです。 ほぼ同じゲームシステムなので、Terrariaのクローンもまとめてます。 ※クローンではなく別ジャンルのゲームの公式パッチで後に登場した場合も載せています。 各ゲームは、メニューより機種を選択しそこからお探しください。 このWikiは、Minecraftのクローンゲームまとめているだけです。Wikiで掲載しているゲームにウイルスがないとは言い切れません。 プレイする前にきちんと調べてください。 Minecraft以外の無料ゲームまとめ http //www46.atwiki.jp/free-gaming/ クローンゲーム報告 Minecraftのクローンゲームを発見したら ここ で知らせてください 注意 @WikiのWikiでは、編集者のIPを管理人および他の編集者(ログイン済み)が確認できます 荒らしなどの行為があった場合アクセス拒否設定をします 酷い様であればプロパイダーにも報告させていただきます ダウンロードランキング ※当Wikiのアップローダーからダウンロードした数のみ表示/また手動更新なので順位が異なっている場合があります。 + ... ※更新していないので順位が違う可能性大 1.Lamecraft Op-30 署名版 / 紹介ページを開く 2.Lamecraft Op-30 非署名版 / 紹介ページを開く 3.Lamecraft PSN Version / 紹介ページを開く 4.Minecraft 2D 1.3(Laster) / 紹介ページを開く 5.LameCraft Op-10 署名版 / 紹介ページを開く 一時ゲーム置き場 見つけたゲームを一時的にメモしておくスペースです。後日各ページに振り分け予定のものです。 ゲーム 振り分け待ち Mod お知らせ [部分編集] ※上ほど新しいお知らせ 2023年6月10日 ゲーム追加 PCページ Born to Build 2021年3月27日 ゲーム追加 PCページ VoxelSrv/WolkenWelten 2021年1月14日 ゲーム追加 PCページ Lovecraft/MineClone-Unity 2020年1月9日 ゲーム追加 3DSページ Minecraft/Battleminerz/キューブクリエイターDX/Terraria/CraftusReloaded ゲーム追加 その他の機種ページ Crafti(ドリームキャスト/Ti-Nspire)/AmiCraftNova(PC/Amiga) + 2018~2019年のお知らせ 2019年5月15日 ゲーム追加 PCページ OpenMiner/Vintage Story 2019年3月12日 ゲーム追加 PCページ cppcraft/Hytale 2018年3月27日 ゲーム追加 PCページ PixArk 2018年2月17日 ゲーム追加 Minecraft Classicページ - Minecraft Classic Revived + 2017年のお知らせ 2017年12月10日 ゲーム追加 PCページ - Ore Infinium 2017年9月2日 Mod追加 Minecraft PSP(woolio)ページ - Mod 2017年8月9日 ゲーム追加 PCページ - Minecraft 我的世界(My World)/Untold Universe/Block Island 2017年8月8日 ゲーム追加 PCページ CloudLand/Konstructs/Eco/noa 2017年6月23日 ゲーム追加 PCページ TrueCraft 2017年6月21日 ゲーム追加 PCページ Colony Survival 2017年5月17日 ゲームのお知らせ PC/minicraftページ Minicraft+ DevBuild(現在開発中) 2017年5月15日 ゲーム追加 PC/minicraftページ Minicraft Flash 2017年4月12日 ゲーム追加 PCページ The Last Leviathan/Avorion/blocaria サイトインフォ これから管理者が忙しくなるためなかなか更新されなくなる可能性があります。 Wikiは閉鎖する予定はありません。 2017年2月9日 ゲーム追加 PC/minicraftページ Minicraft Ultimate Edition/Minicraft3DS 2017年01月29日 ゲーム追加 PCページ Voxelized(有料欄から無料欄へ移動,説明追加(このゲームは、他人が作ったクローンゲームをテクスチャを差し替えただけで販売していました。無料化された現在も同じです)) 2017年01月28日 ゲーム追加 PCページ StarForge(無料化に伴い、有料欄から無料欄へ移動) + 2016年のお知らせ 2016年9月4日 ゲーム追加 PC/minicraftページ Minicraft Plus v1.8 2016年7月30日 ゲーム追加 PCページ - Utopia Realms/Tiny Blueprint Minecraft Clone 2016年5月29日 ゲーム追加 PCページ - BLOKZplus/Hexillion/Civil/MinecraftPrototype/Elevox ゲーム追加 Androidページ - Supreme Craft Lite VR 2016年5月27日 ゲーム追加 PCページ - Blocklife 2016年5月25日 ゲーム追加 その他の機種ページ - Minecraft 2D for TI-Nspire ゲーム追加 PCページ - Cave Game 2D/Trianglecraft/Minecraft Unity(yotoprules)/Minecraft 2D(crazygaming89games) 2016年5月11日 ゲーム追加 PCページ - BlockField 2016年4月21日 ゲーム追加 PCページ - Chunks 2016年4月6日 ゲーム追加 PCページ - MiniTerra 2016年3月30日 ページ追加 Wiiページ ゲーム追加 Wiiページ - Build Blocks Wii/Wiicraft 2 ゲーム追加 3DSページ - 3DScraft ゲーム追加 NDSページ - Minecraft2DS/DSCraft2D 2016年03月27日 ゲーム追加 3DSページ - バトルマイナー ゲーム追加 NDSページ - LuaCraft/Mine DS/DS Craft 2016年03月08日 ゲーム追加 PCページ - (仮称)Voxel World 2016年03月02日 ゲーム追加 WindowsPhoneページ - Minecraft Windows 10 Edition,Minecraft Pocket Edition,Explotion Lite,CraftWorld Free,CraftWorld Beta,Cubes Crafter,Loving Cube Engine Editor,Exploration Base,CraftWorld 2016年02月24日 ゲーム追加 PCページ - Minecraft Windows 10 Edition 2016年02月20日 新規カテゴリー追加:Windows10ページ 2016年02月17日 ゲーム追加 Androidページ - Worldcraft Block Story Mode/Minebuild free maynkraft/Multicraft syberia story mode/Бесплатный майнкрафт 2/Play survival craft/Five Mayncraft night/Castle Medieval Build Craft/Pickaxe Game Crafter/Modern House Building/MineBuilder Craft/Build a Village/Mineblock/Planet Build of Craft/Freeminer- Parody/ロボットクラフト/SkyBlock - Craft your island/Cube Fire/Cutecraft/SkyBlock Craft Adventure/Mini Craft Mod 2016年02月14日 ゲーム追加 Androidページ - FancyCrafting-空想 工芸/クリスマス クラフト/AlienCraft-3D-/Cube World Survival Simulator/Crafting Games Build Craft/World Exploration and Craft/Crafting Pocket Edition/Worldcraft Super Craft/WORLDCRAFT - HUNGER GAMES 2016年02月13日 ゲーム追加 Androidページ - Reloaded Craft/Crafting 2/Dreadcraft HD/Craft story walking dead/Buildcraft PE Worldcraft/World Craft - Dream Island/Multicraft Free Maynkraft/Pixel Multicraft Story mode/Five Nights at Minebuild/Shelter planets story mode/Planet Craft Survial City/Story mode pixel block gun 3d/CraftyWorld Survival/Citycraft pixel Strike 3d/Five Multicraft Nights Craft/Build craft walking dead/Block Craft Space Edition 2016年02月12日 ゲーム追加 Androidページ - Terra Craft World/Tropical Craft Jungle Story/Craft Minecraft 2016/WorldCraft 2 Pocket Edition/Modern House 2 Build Craft PE/Multicraft Pixel gun 3d/マインクラフト無料ダウンロ/Multicraft Gun 3d Story mode/Pixel WorldCraft Story Mode/Ssundee minecraft game/FreeCraft, survival a creative/Maincraft survivalcraft/ピクセルブロックサバイバルクラフト/SkyBlock Survival Craft/Ocean Is Home Survival Island/アドベンチャークラフト/SurvivalCraft Explore World HD/素敵な造り:クラフトの生存/Skyblock Craft/Dread Craft - Русская Версия/Limon Craft - Super Edition/OneMil Craft 2016年02月11日 ゲーム追加 Androidページ - Winter craft snow build/Survival Games/Crafting For Girls/Crafting Pocket edition free/Pocket edition free/Crafting games for girls/Tutorial for Minecraft/Western Craft 2 Wild West/Herobrine Craft Magic Recipe/Fairy Craft/Construct Craft Block QUAD/Fairy Craft 2/Western Craft Wild West/The Elder Craft Frozenland/Tropical Craft 2 Jungle Mine 2016年02月10日 ゲーム追加 Androidページ - Modern House Craft,Village Craft Pocket Edition,Pocket Edition Mine,Multicraft Free Pocket Edition,マインクラフト世界のパロディ,世界のクラフトパロディ,World of Craft Discovery,SkyBlock Survival Craft,Craft Exploration Master,Craft Exploration Master 2 2016年02月09日 ゲーム追加 Androidページ - Squeake Craft PLUS/PlanetCraft/Worldcraft Pocket Edition/World of Craft Water Survival/Pixel Block Cube Craft Builder/World Сraft Pocket Edition/New World Craft Free Edition/Siberia Winter Craft FREE/Safari Craft - survival island/Obsidian Craft Pocket Edition/Horror Craft Five Nights/Dragon Craft Pocket Edition/Horror Craft 5 nights Free/Cast Craft/Kingdom Craft (pre-release)/Crafting Game + Crafting Guide/Crafting Game Build a House/Crafting Game Build a village/Craft Games/Pickaxe Games/Castle Craft Build Sandbox/Crafting Building and Survival 2016年02月08日 ゲーム追加 Androidページ - Crafting Game Pocket Edition/Snow Craft/Winter Crafting Survival/Pocket Craft Exploration/Crafting and Builder/Monster Craft Minebuild2/Winter Multicraft Pocket Ed/FreeCraft Exploration/Island Craft World Exploration/FreeCraft Exploration/Block World Pixel Craft/Galaxy Craft Exploration/Pixel Craft Story mod/Story craft Island Survival/Ark Craft Survival Evolved/Siberia World Survival Craft/Forest Craft Bulding House/Block Builder Mine Build FREE/World Craft Survival/Singlecraft Multi World/Siberia Craft Winter Hunter/Worldcraft Exploration 3D/Minebuild Worldcraft Survival 2016年02月07日 ゲーム追加 Androidページ - MultiCraft Classic (OLD)/PixelCraft — 3D Survival!/Hode/minetest(freeminer)/Blox Craft - Castle World PE/Cartoon Craft Castle World PE/Megacraft Block Story World/Pixel block Story Mode/Voxel Craft Castle Build PE/magichet/Winter Multicraft Pocket Ed/WorldCraft 3 HD/Buildcraft(GameABC Studio)/Squeake Craft 2016年02月06日 ゲーム追加 Androidページ - Minecraft 3 Pro Edition/Craft Exploration Master/Exploration Craft/iLands/WorldCraft 3D Blocks Craft PE/Planet of Cubes - Blocks Craft/Summer exploration Story mode/ExploreCraft 2 Build Edition/SimpleCraft 2 Biomes/Exploration Craft Lite/Mini Craft Mod/クラフトの世界:ビルド/Pizzeria Craft Survival/MultiCraft ― Free Miner/Planet of Cubes - Blocks Craft 2016年02月03日 ゲーム追加 Androidページ - Tiny Craft 2016年02月02日 ゲーム追加 Androidページ - Heaven Story HD/Moon Craft HD/Craft Exploration Survival PE/Crafting and Building/Cubed Craft Survival/Creative Craft/Tiny Craft/Poky Craft - Jolly Edition/Skyblock Craft 2016年02月01日 ゲーム追加 Androidページ - Medieval Craft 2 Castle Build/Summer Story/City Craft Herobrine/Winter Craft 2 Survival/City Craft Building/City Craft 2 TNT Clowns/Winter Craft HD/Summer Craft Exploration 2016年01月31日 ゲーム追加 Androidページ - Savanna Craft/Pirate Craft/FreeCraft/Jurassic Craft/World of Craft Survival Build/Five Craft Nights/World of Craft Mine Forest/Halloween Craft Mine Horror/Five Craft Nights Reborn/WorldCraft 3D Blocks CraftPE/PlanetCraft/Overcraft2/Winter Craft 3 Mine Build/SimpleCraft 2 Biomes/Winter Craft 4/City Craft 3 TNT Edition/SimpleCraft 2/Winter Blocks 2016年01月25日 新規ページ追加 Androidページ - FreeCraft (parody of Minecraft/Mine Builder/Cubes Craft HD ゲーム追加 PCページ - BlenderCraft 2016年01月24日 新規ページ作成 3DSページ - キューブクリエイター3D Androidページ - Little Craft/pixelcraft/Multicraft Pocket Edition 2016年01月23日 新規ページ作成 Androidページ - Exploration Lite/Starve Game/Buildcraft/Wasteland/Mine World Craft/Minebuild/World Craft 2 Exploration/WorldCraft HD/Minedroid/SimpleCraft HD/Medieval Craft Town Building/Medieval Craft 3 ゲーム追加 Androidページ - Medieval Craft 3/Cubes Craft HD/FreeCraft 2016年01月22日 ゲーム追加 PCページ - UberBlox 2016年01月10日 ゲーム追加 Androidページ - Exploration Lite/Mine World Craft/Little Craft/pixelcraft/freeminer/minetest/Multicraft Pocket Edition/multicraft2/Survivalcraft Minebuild World/Survival Craft Exploration + 2015年のお知らせ 2015年12月09日 ゲーム追加 PCページ - Xcylin 2015年12月07日 ゲーム追加 PCページ - Greensandbox 2015年11月21日 ゲーム追加 PCページ - Sky Nations 2015年10月26日 ゲーム追加 PCページ - jfCraft 2015年10月22日 ゲーム追加 PCページ - Triton Forge/Subterra/Craft The World/Edge of Space/UpvoidMiner 2015年10月21日 ゲーム追加 PCページ - Redstone Circuit Designer/Custom Minecraft Client 2015年10月20日 ゲーム追加 PCページ - Cubic/Mine-In-Unity/FastCraft 3D/Unity3D Minecraft Wii Uページ - Cube Life Island Survival 2015年10月17日 PCページのレイアウト変更 CTRL+Fで検索しやすいように折りたたみをなくした。 ゲーム追加 PCページ - StoneQuest/Creativerse iOSページ - Block Earth + 2014年のお知らせ 2014年11月05日 facebookのコメント欄を削除、一部のページの表にソートを追加しました 2014年9月21日 3Dグラフィックは"3Dブロックグラフィック",リアル3Dグラフィックは"3Dグラフィックに変更(現在はPCページのみ)Steamの円表示対応で今後追加するものは円表示で追加します。(ドル表示のもしばらくして変更する予定) 2014年9月17日 パスワードがかかっているファイルで今まではDLpass ////という表示にしてましたが今後はパスワードをクリックすると表示されます。 2014年9月14日 編集再開しました 2014年7月3日 広告などがないフォーラムに変更しました いろいろな話題をできればと思います http //mcclonefourm.freeforums.org フォーラムの日本語化をするのにはアカウントが必要です アカウント作成後に日本語に変更する方法については こちら をご覧ください URLのとこ誤字ってますがもう作成した後なのでご愛嬌で 2014年7月3日 現在PCページにてジャンルわけを行っています これについて今まで通りかジャンル分けしたほうがいいかよろしければコメントをいただければありがたいです コメントは ここ にお願いします ※コメント受付しています(アカウント必須) 2014年7月2日 Minicraft Japan Wiki を借りていたのを忘れていて更新する予定なのでリンクを追加しました 2014年7月2日 Terrariaのページを作成しました 2014年7月1日 Terrariaのニュースページを作成中(アップデート予定 パッチノートではありません) 2014年6月17日 重要なお知らせ Lester Murillo製作のMinecraft2D公式サイトよりアバストがウイルスを発見したので一時的に伏せています これに関しては現在調べています 2014/07/04でもウイルス反応 誤検出かもしれませんが公式サイトに訪れる際は自己責任でお願いします 2014年6月2日 Minecraft 2D(Laster) 新サイトを発見したのでリンクを更新しました 2014年5月18日 LameCraftのS4inexCraftのファイルが壊れていたのでファイルを交換しました 2014年5月12日 Androidのページを一気に編集しました ぜひ面白いゲームを発見してください 2014年5月10日 製作者orゲーム紹介ページをゲーム紹介ページに戻しました 2014年4月23日 CastleMiner シリーズのWikiを立てました CastleMiner,CastleMinerZ,CastleMiner Warfareすべての情報を載せていく予定です※CastleMinerZ Wikiは近日閉鎖します CastleMiner シリーズWiki 2014年3月8日 ゲームの名前をクリックすると公式Webサイトに飛ぶようにしました 2014年2月8日 トップページの名前を変更しました 2014年1月30日 ゲーム紹介ページという欄を製作者orゲーム紹介ページに書き換えました(その製作者が他にもMinecraftのクローンゲームを製作していた場合その欄は開発者名になります) + 2013年のお知らせ 2013年12月27日 カウンターを設置しなおしました 2013年12月18日 Clone of Minecraft Forumを作りました 皆さんでマイクラクローンゲームについて質問しあったり雑談しあったりしましょう Clone of Minecraft Forum 2013年12月17日 新編集者がCastleMinerZのWikiを新しく作ってくれています CastleMinerZ Japan Wiki ※Wiki編集初心者なのでそこのところよろしくお願いします 2013年12月16日 メイン編集ページはPCとXbox 360ページです 2013年12月16日 カウンターを設置しました 2013年12月16日 長らく放置してましたが編集を再開します Mojang © 2009-2016. "Minecraft" is a trademark of Mojang Synergies AB このサイトはMojang社が運営しているものではありません。このWikiに記載されているクローンゲームをプレイしたことによる損害は、Wiki側では一切お受けしません。
https://w.atwiki.jp/aceshigh/pages/269.html
入門用として最適なフライトシミュレータ用スティックVKB-SIM GLADIATOR MK.II JOYSTICK 高精度・高耐久のMaRSセンサーと金属製ジンバルのお陰で滑らかかつ精確な動作が可能となっています。 捻りラダー、簡易スロットルが付いているため、このジョイスティックだけですべての舵(エルロン、エレベータ、ラダー)の操作が可能です。 ベース部分とグリップ部分は簡単に着脱交換が可能です。このため、購入時にはグリップ部分を選択することになります。また、別のグリップを後から購入して交換することも簡単にできます(Rev-Aのみで、現行GunfighterのRev-Bとは異なるので要注意)。 グリップ部分にはHAT他最低限のボタンしかありませんが、ベース部分にシフト機能のついたボタンが配置されているので、Aces Highであれば空戦に必要な最小限の機能は割り当てることができると思います。 ボタン数、拡張性、価格帯等いずれの点からも入門用として最もおすすめできるスティックです。 特徴 WWII KG12グリップ(非着脱式)、右利き用 人間工学に基づいたグリップ角度(左15度回転) ピッチ、ロール、ツイスト(ラダー)軸 スロットル軸 長期間使用するための頑丈な内部構造 安定性を高める金属製地板 強力な表面グリップのためのシリコーンのパッド 仕様 非接触型MaRSセンサ(X,Y,Z軸)、高分解能 32ビットARMコントローラ 17個のプログラマブルボタン 29 シフト/モード機能を使用した論理ボタンの総数 ハットスイッチ(8ウェイ)1個 2個のLED(モード選択) ドライバーフリーのプラグ&プレイ(ほとんどのユーザーに推奨) USB経由でのファームウェアのアップグレード プロファイルを保存するためのオンボードメモリ VKB-Sim T-ラダーペダル接続用ポート オプションのプログラミングソフトが利用可能(上級者向け) 軸のキャリブレーション - デッドゾーンの作成 プロファイルの保存と読み込み - 軸解像度の調整 購入先 VKB FSC Europe 購入方法の参考は こちら 参考サイト 誕生秘話 ジョイスティック一覧 名前 コメント Aces High (PC CD) (輸入版) T-Flight Hotas X フライトスティック 並行輸入品 Saitek Pro Flight X-55 Rhino H.O.T.A.S. (Hands On Throttle And Stick) System」(サイテック プロフライト X-55 ライノ ホタス (ハンズ オン スロットル アンド スティック) 戦闘機などPCフライトシム操縦に 9軸コントローラー (MC-X55) CHProducts FighterStick USB接続 chfis [取寄10]MC-CMB-RPED(Saitek Pro Flight Combat Rudder Pedals)
https://w.atwiki.jp/natsutan/pages/29.html
概要 generic/tclBasic.c 引数 Tcl_Interp *interp TCL インタープリタへのポインター const char *script 実行するコマンド int numBytes scriptのバイト数。0より小さいときは全バイト。 int flags 制御フラグTCL_EVAL_GLOBALのみサポート int line スクリプトの開始行数 int* clNextOuter CONST char* outerScript outerスクリプト。一番outer(呼び出しの浅い)スクリプトを示す。outerScript == scriptの時、一番outerなスクリプトであることを示す。 戻り値 実行結果 処理 変数の宣言 Interp *iPtr = (Interp *) interp; const char *p, *next; const unsigned int minObjs = 20; Tcl_Obj **objv, **objvSpace; int *expand, *lines, *lineSpace; Tcl_Token *tokenPtr; int commandLength, bytesLeft, expandRequested, code = TCL_OK; CallFrame *savedVarFramePtr;/* Saves old copy of iPtr- varFramePtr in case * TCL_EVAL_GLOBAL was set. */ int allowExceptions = (iPtr- evalFlags TCL_ALLOW_EXCEPTIONS); int gotParse = 0; unsigned int i, objectsUsed = 0; /* These variables keep track of how much * state has been allocated while evaluating * the script, so that it can be freed * properly if an error occurs. */ Tcl_Parse *parsePtr = (Tcl_Parse *) TclStackAlloc(interp, sizeof(Tcl_Parse)); [[CmdFrame]] *eeFramePtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); Tcl_Obj **stackObjArray = (Tcl_Obj **) TclStackAlloc(interp, minObjs * sizeof(Tcl_Obj *)); int *expandStack = (int *) TclStackAlloc(interp, minObjs * sizeof(int)); int *linesStack = (int *) TclStackAlloc(interp, minObjs * sizeof(int)); /* TIP #280 Structures for tracking of command * locations. */ /* * Pointer for the tracking of invisible continuation lines. Initialized * only if the caller gave us a table of locations to track, via * scriptCLLocPtr. It always refers to the table entry holding the * location of the next invisible continuation line to look for, while * parsing the script. */ int* clNext = NULL; if (iPtr- scriptCLLocPtr) { if (clNextOuter) { clNext = clNextOuter; } else { clNext = iPtr- scriptCLLocPtr- loc[0]; } } if (numBytes 0) { numBytes = strlen(script); } Tcl_ResetResult(interp); savedVarFramePtr = iPtr- varFramePtr; if (flags TCL_EVAL_GLOBAL) { iPtr- varFramePtr = iPtr- rootFramePtr; } /* * Each iteration through the following loop parses the next command from * the script and then executes it. */ objv = objvSpace = stackObjArray; lines = lineSpace = linesStack; expand = expandStack; p = script; bytesLeft = numBytes; /* * TIP #280 Initialize tracking. Do not push on the frame stack yet. * * We may continue counting based on a specific context (CTX), or open a * new context, either for a sourced script, or 'eval'. For sourced files * we always have a path object, even if nothing was specified in the * interp itself. That makes code using it simpler as NULL checks can be * left out. Sourced file without path in the 'scriptFile' is possible * during Tcl initialization. */ if (iPtr- evalFlags TCL_EVAL_CTX) { /* * Path information comes out of the context. */ eeFramePtr- type = TCL_LOCATION_SOURCE; eeFramePtr- data.eval.path = iPtr- invokeCmdFramePtr- data.eval.path; Tcl_IncrRefCount(eeFramePtr- data.eval.path); } else if (iPtr- evalFlags TCL_EVAL_FILE) { /* * Set up for a sourced file. */ eeFramePtr- type = TCL_LOCATION_SOURCE; if (iPtr- scriptFile) { /* * Normalization here, to have the correct pwd. Should have * negligible impact on performance, as the norm should have been * done already by the 'source' invoking us, and it caches the * result. */ Tcl_Obj *norm = Tcl_FSGetNormalizedPath(interp, iPtr- scriptFile); if (norm == NULL) { /* * Error message in the interp result. */ code = TCL_ERROR; goto error; } eeFramePtr- data.eval.path = norm; } else { TclNewLiteralStringObj(eeFramePtr- data.eval.path, ""); } Tcl_IncrRefCount(eeFramePtr- data.eval.path); } else { /* * Set up for plain eval. */ eeFramePtr- type = TCL_LOCATION_EVAL; eeFramePtr- data.eval.path = NULL; } eeFramePtr- level = iPtr- cmdFramePtr ? iPtr- cmdFramePtr- level + 1 1; eeFramePtr- framePtr = iPtr- framePtr; eeFramePtr- nextPtr = iPtr- cmdFramePtr; eeFramePtr- nline = 0; eeFramePtr- line = NULL; iPtr- evalFlags = 0; do { if (Tcl_Parse[[Command]](interp, p, bytesLeft, 0, parsePtr) != TCL_OK) { code = TCL_ERROR; goto error; } /* * TIP #280 Track lines. The parser may have skipped text till it * found the command we are now at. We have to count the lines in this * block, and do not forget invisible continuation lines. */ TclAdvanceLines( line, p, parsePtr- commandStart); TclAdvanceContinuations ( line, clNext, parsePtr- commandStart - outerScript); gotParse = 1; if (parsePtr- numWords 0) { /* * TIP #280. Track lines within the words of the current * command. We use a separate pointer into the table of * continuation line locations to not lose our position for the * per-command parsing. */ int wordLine = line; const char *wordStart = parsePtr- commandStart; int* wordCLNext = clNext; /* * Generate an array of objects for the words of the command. */ unsigned int objectsNeeded = 0; unsigned int numWords = parsePtr- numWords; if (numWords minObjs) { expand = (int *) ckalloc(numWords * sizeof(int)); objvSpace = (Tcl_Obj **) ckalloc(numWords * sizeof(Tcl_Obj *)); lineSpace = (int *) ckalloc(numWords * sizeof(int)); } expandRequested = 0; objv = objvSpace; lines = lineSpace; for (objectsUsed = 0, tokenPtr = parsePtr- tokenPtr; objectsUsed numWords; objectsUsed++, tokenPtr += tokenPtr- numComponents+1) { /* * TIP #280. Track lines to current word. Save the information * on a per-word basis, signaling dynamic words as needed. * Make the information available to the recursively called * evaluator as well, including the type of context (source * vs. eval). */ TclAdvanceLines( wordLine, wordStart, tokenPtr- start); TclAdvanceContinuations ( wordLine, wordCLNext, tokenPtr- start - outerScript); wordStart = tokenPtr- start; lines[objectsUsed] = TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine -1; if (eeFramePtr- type == TCL_LOCATION_SOURCE) { iPtr- evalFlags |= TCL_EVAL_FILE; } code = TclSubstTokens(interp, tokenPtr+1, tokenPtr- numComponents, NULL, wordLine, wordCLNext, outerScript); iPtr- evalFlags = 0; if (code != TCL_OK) { goto error; } objv[objectsUsed] = Tcl_GetObjResult(interp); Tcl_IncrRefCount(objv[objectsUsed]); if (tokenPtr- type == TCL_TOKEN_EXPAND_WORD) { int numElements; code = TclListObjLength(interp, objv[objectsUsed], numElements); if (code == TCL_ERROR) { /* * Attempt to expand a non-list. */ Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( "\n (expanding word %d)", objectsUsed)); Tcl_DecrRefCount(objv[objectsUsed]); goto error; } expandRequested = 1; expand[objectsUsed] = 1; objectsNeeded += (numElements ? numElements 1); } else { expand[objectsUsed] = 0; objectsNeeded++; } if (wordCLNext) { TclContinuationsEnterDerived (objv[objectsUsed], wordStart - outerScript, wordCLNext); } } /* for loop */ if (expandRequested) { /* * Some word expansion was requested. Check for objv resize. */ Tcl_Obj **copy = objvSpace; int *lcopy = lineSpace; int wordIdx = numWords; int objIdx = objectsNeeded - 1; if ((numWords minObjs) || (objectsNeeded minObjs)) { objv = objvSpace = (Tcl_Obj **) ckalloc(objectsNeeded * sizeof(Tcl_Obj *)); lines = lineSpace = (int *) ckalloc(objectsNeeded * sizeof(int)); } objectsUsed = 0; while (wordIdx--) { if (expand[wordIdx]) { int numElements; Tcl_Obj **elements, *temp = copy[wordIdx]; Tcl_ListObjGetElements(NULL, temp, numElements, elements); objectsUsed += numElements; while (numElements--) { lines[objIdx] = -1; objv[objIdx--] = elements[numElements]; Tcl_IncrRefCount(elements[numElements]); } Tcl_DecrRefCount(temp); } else { lines[objIdx] = lcopy[wordIdx]; objv[objIdx--] = copy[wordIdx]; objectsUsed++; } } objv += objIdx+1; if (copy != stackObjArray) { ckfree((char *) copy); } if (lcopy != linesStack) { ckfree((char *) lcopy); } } /* * Execute the command and free the objects for its words. * * TIP #280 Remember the command itself for 'info frame'. We * shorten the visible command by one char to exclude the * termination character, if necessary. Here is where we put our * frame on the stack of frames too. _After_ the nested commands * have been executed. */ eeFramePtr- cmd.str.cmd = parsePtr- commandStart; eeFramePtr- cmd.str.len = parsePtr- commandSize; if (parsePtr- term == parsePtr- commandStart + parsePtr- commandSize - 1) { eeFramePtr- cmd.str.len--; } eeFramePtr- nline = objectsUsed; eeFramePtr- line = lines; TclArgumentEnter (interp, objv, objectsUsed, eeFramePtr); iPtr- cmdFramePtr = eeFramePtr; iPtr- numLevels++; code = TclEvalObjvInternal(interp, objectsUsed, objv, parsePtr- commandStart, parsePtr- commandSize, 0); iPtr- numLevels--; iPtr- cmdFramePtr = iPtr- cmdFramePtr- nextPtr; TclArgumentRelease (interp, objv, objectsUsed); eeFramePtr- line = NULL; eeFramePtr- nline = 0; if (code != TCL_OK) { goto error; } for (i = 0; i objectsUsed; i++) { Tcl_DecrRefCount(objv[i]); } objectsUsed = 0; if (objvSpace != stackObjArray) { ckfree((char *) objvSpace); objvSpace = stackObjArray; ckfree((char *) lineSpace); lineSpace = linesStack; } /* * Free expand separately since objvSpace could have been * reallocated above. */ if (expand != expandStack) { ckfree((char *) expand); expand = expandStack; } } /* * Advance to the next command in the script. * * TIP #280 Track Lines. Now we track how many lines were in the * executed command. */ next = parsePtr- commandStart + parsePtr- commandSize; bytesLeft -= next - p; p = next; TclAdvanceLines( line, parsePtr- commandStart, p); Tcl_FreeParse(parsePtr); gotParse = 0; } while (bytesLeft 0); iPtr- varFramePtr = savedVarFramePtr; code = TCL_OK; goto cleanup_return; error /* * Generate and log various pieces of error information. */ if (iPtr- numLevels == 0) { if (code == TCL_RETURN) { code = TclUpdateReturnInfo(iPtr); } if ((code != TCL_OK) (code != TCL_ERROR) !allowExceptions) { ProcessUnexpectedResult(interp, code); code = TCL_ERROR; } } if ((code == TCL_ERROR) !(iPtr- flags ERR_ALREADY_LOGGED)) { commandLength = parsePtr- commandSize; if (parsePtr- term == parsePtr- commandStart + commandLength - 1) { /* * The terminator character (such as ; or ]) of the command where * the error occurred is the last character in the parsed command. * Reduce the length by one so that the error message doesn't * include the terminator character. */ commandLength -= 1; } Tcl_LogCommandInfo(interp, script, parsePtr- commandStart, commandLength); } iPtr- flags = ~ERR_ALREADY_LOGGED; /* * Then free resources that had been allocated to the command. */ for (i = 0; i objectsUsed; i++) { Tcl_DecrRefCount(objv[i]); } if (gotParse) { Tcl_FreeParse(parsePtr); } if (objvSpace != stackObjArray) { ckfree((char *) objvSpace); ckfree((char *) lineSpace); } if (expand != expandStack) { ckfree((char *) expand); } iPtr- varFramePtr = savedVarFramePtr; cleanup_return /* * TIP #280. Release the local CmdFrame, and its contents. */ if (eeFramePtr- type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount(eeFramePtr- data.eval.path); } TclStackFree(interp, linesStack); TclStackFree(interp, expandStack); TclStackFree(interp, stackObjArray); TclStackFree(interp, eeFramePtr); TclStackFree(interp, parsePtr); return code; } ソース int TclEvalEx( [[Tcl_Interp]] *interp,/* Interpreter in which to evaluate the * script. Also used for error reporting. */ const char *script,/* First character of script to evaluate. */ int numBytes,/* Number of bytes in script. If 0, the * script consists of all bytes up to the * first NUL character. */ int flags,/* Collection of OR-ed bits that control the * evaluation of the script. Only * TCL_EVAL_GLOBAL is currently supported. */ int line,/* The line the script starts on. */ int* clNextOuter, /* Information about an outer context for */ CONST char* outerScript) /* continuation line data. This is set only in * TclSubstTokens(), to properly handle * [...]-nested commands. The 'outerScript' * refers to the most-outer script containing the * embedded command, which is refered to by * 'script'. The 'clNextOuter' refers to the * current entry in the table of continuation * lines in this "master script", and the * character offsets are relative to the * 'outerScript' as well. * * If outerScript == script, then this call is * for the outer-most script/command. See * Tcl_EvalEx() and TclEvalObjEx() for places * generating arguments for which this is true. */ { Interp *iPtr = (Interp *) interp; const char *p, *next; const unsigned int minObjs = 20; Tcl_Obj **objv, **objvSpace; int *expand, *lines, *lineSpace; Tcl_Token *tokenPtr; int commandLength, bytesLeft, expandRequested, code = TCL_OK; CallFrame *savedVarFramePtr;/* Saves old copy of iPtr- varFramePtr in case * TCL_EVAL_GLOBAL was set. */ int allowExceptions = (iPtr- evalFlags TCL_ALLOW_EXCEPTIONS); int gotParse = 0; unsigned int i, objectsUsed = 0; /* These variables keep track of how much * state has been allocated while evaluating * the script, so that it can be freed * properly if an error occurs. */ Tcl_Parse *parsePtr = (Tcl_Parse *) TclStackAlloc(interp, sizeof(Tcl_Parse)); CmdFrame *eeFramePtr = (CmdFrame *) TclStackAlloc(interp, sizeof(CmdFrame)); Tcl_Obj **stackObjArray = (Tcl_Obj **) TclStackAlloc(interp, minObjs * sizeof(Tcl_Obj *)); int *expandStack = (int *) TclStackAlloc(interp, minObjs * sizeof(int)); int *linesStack = (int *) TclStackAlloc(interp, minObjs * sizeof(int)); /* TIP #280 Structures for tracking of command * locations. */ /* * Pointer for the tracking of invisible continuation lines. Initialized * only if the caller gave us a table of locations to track, via * scriptCLLocPtr. It always refers to the table entry holding the * location of the next invisible continuation line to look for, while * parsing the script. */ int* clNext = NULL; if (iPtr- scriptCLLocPtr) { if (clNextOuter) { clNext = clNextOuter; } else { clNext = iPtr- scriptCLLocPtr- loc[0]; } } if (numBytes 0) { numBytes = strlen(script); } Tcl_ResetResult(interp); savedVarFramePtr = iPtr- varFramePtr; if (flags TCL_EVAL_GLOBAL) { iPtr- varFramePtr = iPtr- rootFramePtr; } /* * Each iteration through the following loop parses the next command from * the script and then executes it. */ objv = objvSpace = stackObjArray; lines = lineSpace = linesStack; expand = expandStack; p = script; bytesLeft = numBytes; /* * TIP #280 Initialize tracking. Do not push on the frame stack yet. * * We may continue counting based on a specific context (CTX), or open a * new context, either for a sourced script, or 'eval'. For sourced files * we always have a path object, even if nothing was specified in the * interp itself. That makes code using it simpler as NULL checks can be * left out. Sourced file without path in the 'scriptFile' is possible * during Tcl initialization. */ if (iPtr- evalFlags TCL_EVAL_CTX) { /* * Path information comes out of the context. */ eeFramePtr- type = TCL_LOCATION_SOURCE; eeFramePtr- data.eval.path = iPtr- invokeCmdFramePtr- data.eval.path; Tcl_IncrRefCount(eeFramePtr- data.eval.path); } else if (iPtr- evalFlags TCL_EVAL_FILE) { /* * Set up for a sourced file. */ eeFramePtr- type = TCL_LOCATION_SOURCE; if (iPtr- scriptFile) { /* * Normalization here, to have the correct pwd. Should have * negligible impact on performance, as the norm should have been * done already by the 'source' invoking us, and it caches the * result. */ Tcl_Obj *norm = Tcl_FSGetNormalizedPath(interp, iPtr- scriptFile); if (norm == NULL) { /* * Error message in the interp result. */ code = TCL_ERROR; goto error; } eeFramePtr- data.eval.path = norm; } else { TclNewLiteralStringObj(eeFramePtr- data.eval.path, ""); } Tcl_IncrRefCount(eeFramePtr- data.eval.path); } else { /* * Set up for plain eval. */ eeFramePtr- type = TCL_LOCATION_EVAL; eeFramePtr- data.eval.path = NULL; } eeFramePtr- level = iPtr- cmdFramePtr ? iPtr- cmdFramePtr- level + 1 1; eeFramePtr- framePtr = iPtr- framePtr; eeFramePtr- nextPtr = iPtr- cmdFramePtr; eeFramePtr- nline = 0; eeFramePtr- line = NULL; iPtr- evalFlags = 0; do { if (Tcl_ParseCommand(interp, p, bytesLeft, 0, parsePtr) != TCL_OK) { code = TCL_ERROR; goto error; } /* * TIP #280 Track lines. The parser may have skipped text till it * found the command we are now at. We have to count the lines in this * block, and do not forget invisible continuation lines. */ TclAdvanceLines( line, p, parsePtr- commandStart); TclAdvanceContinuations ( line, clNext, parsePtr- commandStart - outerScript); gotParse = 1; if (parsePtr- numWords 0) { /* * TIP #280. Track lines within the words of the current * command. We use a separate pointer into the table of * continuation line locations to not lose our position for the * per-command parsing. */ int wordLine = line; const char *wordStart = parsePtr- commandStart; int* wordCLNext = clNext; /* * Generate an array of objects for the words of the command. */ unsigned int objectsNeeded = 0; unsigned int numWords = parsePtr- numWords; if (numWords minObjs) { expand = (int *) ckalloc(numWords * sizeof(int)); objvSpace = (Tcl_Obj **) ckalloc(numWords * sizeof(Tcl_Obj *)); lineSpace = (int *) ckalloc(numWords * sizeof(int)); } expandRequested = 0; objv = objvSpace; lines = lineSpace; for (objectsUsed = 0, tokenPtr = parsePtr- tokenPtr; objectsUsed numWords; objectsUsed++, tokenPtr += tokenPtr- numComponents+1) { /* * TIP #280. Track lines to current word. Save the information * on a per-word basis, signaling dynamic words as needed. * Make the information available to the recursively called * evaluator as well, including the type of context (source * vs. eval). */ TclAdvanceLines( wordLine, wordStart, tokenPtr- start); TclAdvanceContinuations ( wordLine, wordCLNext, tokenPtr- start - outerScript); wordStart = tokenPtr- start; lines[objectsUsed] = TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine -1; if (eeFramePtr- type == TCL_LOCATION_SOURCE) { iPtr- evalFlags |= TCL_EVAL_FILE; } code = TclSubstTokens(interp, tokenPtr+1, tokenPtr- numComponents, NULL, wordLine, wordCLNext, outerScript); iPtr- evalFlags = 0; if (code != TCL_OK) { goto error; } objv[objectsUsed] = Tcl_GetObjResult(interp); Tcl_IncrRefCount(objv[objectsUsed]); if (tokenPtr- type == TCL_TOKEN_EXPAND_WORD) { int numElements; code = TclListObjLength(interp, objv[objectsUsed], numElements); if (code == TCL_ERROR) { /* * Attempt to expand a non-list. */ Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( "\n (expanding word %d)", objectsUsed)); Tcl_DecrRefCount(objv[objectsUsed]); goto error; } expandRequested = 1; expand[objectsUsed] = 1; objectsNeeded += (numElements ? numElements 1); } else { expand[objectsUsed] = 0; objectsNeeded++; } if (wordCLNext) { TclContinuationsEnterDerived (objv[objectsUsed], wordStart - outerScript, wordCLNext); } } /* for loop */ if (expandRequested) { /* * Some word expansion was requested. Check for objv resize. */ Tcl_Obj **copy = objvSpace; int *lcopy = lineSpace; int wordIdx = numWords; int objIdx = objectsNeeded - 1; if ((numWords minObjs) || (objectsNeeded minObjs)) { objv = objvSpace = (Tcl_Obj **) ckalloc(objectsNeeded * sizeof(Tcl_Obj *)); lines = lineSpace = (int *) ckalloc(objectsNeeded * sizeof(int)); } objectsUsed = 0; while (wordIdx--) { if (expand[wordIdx]) { int numElements; Tcl_Obj **elements, *temp = copy[wordIdx]; Tcl_ListObjGetElements(NULL, temp, numElements, elements); objectsUsed += numElements; while (numElements--) { lines[objIdx] = -1; objv[objIdx--] = elements[numElements]; Tcl_IncrRefCount(elements[numElements]); } Tcl_DecrRefCount(temp); } else { lines[objIdx] = lcopy[wordIdx]; objv[objIdx--] = copy[wordIdx]; objectsUsed++; } } objv += objIdx+1; if (copy != stackObjArray) { ckfree((char *) copy); } if (lcopy != linesStack) { ckfree((char *) lcopy); } } /* * Execute the command and free the objects for its words. * * TIP #280 Remember the command itself for 'info frame'. We * shorten the visible command by one char to exclude the * termination character, if necessary. Here is where we put our * frame on the stack of frames too. _After_ the nested commands * have been executed. */ eeFramePtr- cmd.str.cmd = parsePtr- commandStart; eeFramePtr- cmd.str.len = parsePtr- commandSize; if (parsePtr- term == parsePtr- commandStart + parsePtr- commandSize - 1) { eeFramePtr- cmd.str.len--; } eeFramePtr- nline = objectsUsed; eeFramePtr- line = lines; TclArgumentEnter (interp, objv, objectsUsed, eeFramePtr); iPtr- cmdFramePtr = eeFramePtr; iPtr- numLevels++; code = TclEvalObjvInternal(interp, objectsUsed, objv, parsePtr- commandStart, parsePtr- commandSize, 0); iPtr- numLevels--; iPtr- cmdFramePtr = iPtr- cmdFramePtr- nextPtr; TclArgumentRelease (interp, objv, objectsUsed); eeFramePtr- line = NULL; eeFramePtr- nline = 0; if (code != TCL_OK) { goto error; } for (i = 0; i objectsUsed; i++) { Tcl_DecrRefCount(objv[i]); } objectsUsed = 0; if (objvSpace != stackObjArray) { ckfree((char *) objvSpace); objvSpace = stackObjArray; ckfree((char *) lineSpace); lineSpace = linesStack; } /* * Free expand separately since objvSpace could have been * reallocated above. */ if (expand != expandStack) { ckfree((char *) expand); expand = expandStack; } } /* * Advance to the next command in the script. * * TIP #280 Track Lines. Now we track how many lines were in the * executed command. */ next = parsePtr- commandStart + parsePtr- commandSize; bytesLeft -= next - p; p = next; TclAdvanceLines( line, parsePtr- commandStart, p); Tcl_FreeParse(parsePtr); gotParse = 0; } while (bytesLeft 0); iPtr- varFramePtr = savedVarFramePtr; code = TCL_OK; goto cleanup_return; error /* * Generate and log various pieces of error information. */ if (iPtr- numLevels == 0) { if (code == TCL_RETURN) { code = TclUpdateReturnInfo(iPtr); } if ((code != TCL_OK) (code != TCL_ERROR) !allowExceptions) { ProcessUnexpectedResult(interp, code); code = TCL_ERROR; } } if ((code == TCL_ERROR) !(iPtr- flags ERR_ALREADY_LOGGED)) { commandLength = parsePtr- commandSize; if (parsePtr- term == parsePtr- commandStart + commandLength - 1) { /* * The terminator character (such as ; or ]) of the command where * the error occurred is the last character in the parsed command. * Reduce the length by one so that the error message doesn't * include the terminator character. */ commandLength -= 1; } Tcl_LogCommandInfo(interp, script, parsePtr- commandStart, commandLength); } iPtr- flags = ~ERR_ALREADY_LOGGED; /* * Then free resources that had been allocated to the command. */ for (i = 0; i objectsUsed; i++) { Tcl_DecrRefCount(objv[i]); } if (gotParse) { Tcl_FreeParse(parsePtr); } if (objvSpace != stackObjArray) { ckfree((char *) objvSpace); ckfree((char *) lineSpace); } if (expand != expandStack) { ckfree((char *) expand); } iPtr- varFramePtr = savedVarFramePtr; cleanup_return /* * TIP #280. Release the local CmdFrame, and its contents. */ if (eeFramePtr- type == TCL_LOCATION_SOURCE) { Tcl_DecrRefCount(eeFramePtr- data.eval.path); } TclStackFree(interp, linesStack); TclStackFree(interp, expandStack); TclStackFree(interp, stackObjArray); TclStackFree(interp, eeFramePtr); TclStackFree(interp, parsePtr); return code; }