2018年03月

    Factorioの原子炉の効率計算した

    PAYDAY2 Blacklist Assist

    最近更新中のPAYDAY2のBlacklist MODの補助ツール
    ※特に理由が無い場合は最新バージョンを使用してください。


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━

    Factorioを(ほとんど放置だけれど・・・)500時間くらいプレイして、そろそろ原子炉に移ってみようかと、

    というよりも太陽光発電機が13kも置いているのに電力が枯渇して、バイターさんに施設をつまみ食いされた・・・。

    せっかくなので文字として共有できるようにスプレッドシートで計算してみた。
    設置の仕方は接地面が多くなりつつ、インサータによる燃料の出し入れが可能な形状



    ■■■
    ■■■
    といったように2行を横に伸ばしていくものとする。
    スプレッドシートとグラフは記事下部。

    所見



    燃料棒対発電率の効率の上昇量は原子炉1-10基の間で大きく、その後24基付近でほぼ収束する。
    このため、原子力発電を行う際には最低原子炉10基は設置するとよいだろう。



    効率計算表とグラフ


    シートURL
    https://docs.google.com/spreadsheets/d/1FuZXNlN6jzmOj5Y5CviJxZKhScbvUvLMx80wA2v06JA/edit?usp=sharing



    グラフも書いたがスプレッドシートはいろいろいじりづらかったのでエクセルの画像をぺたり。

    FactorioAtomEffi.jpg
    スポンサーサイト

    ニコニコ動画の生放送コミュニティを色付けするプラグイン作った

    PAYDAY2 Blacklist Assist

    最近更新中のPAYDAY2のBlacklist MODの補助ツール
    ※特に理由が無い場合は最新バージョンを使用してください。


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ニコニコ動画を今更見始めたが、お口が悪かったりする配信者のものは見ていて気持ちの良いものではないので、次回以降見ないように気を付けるのだが、そういうものを登録する機能があるのかないのか・・・とりあえず見つけられなかった。

    強調表示くらいできればよいかなと思いTempermonkyのスクリプトをばばばっと書いた。
    javascriptを書くのは半年に一回くらいなので毎回変数の扱いから要素へのアクセス方法などすべて1から調べるためとても非効率的。

    英語が怪しいのはいつも通り。

    ニコニコ動画の生放送検索画面の放送コミュニティの画像を左クリックするとお気に入り、右クリックするとブロック、中クリックするとお気に入り、ブロック解除する。

    設定してみた画像がこちら。(単純に上からお気に入り、ブロック、指定なしとしているだけで他意はない)

    screencapture-live-nicovideo-jp-search-1519983830676.jpg

    グローバル変数の
    is_block_hideを
    trueでそのコミュニティの表示自体を消す
    falseでそのコミュニティ名をブロック色表示

    colorの
    likeとblockのカラーコードを変更すると表示職の変更を変えられる。
    取りえず2色あればよいだろうと拡張性は考えていない。
    (右クリックメニューを任意に追加してラベル付けとか考えたが、難しそうだったのでやめた。)



    // ==UserScript==
    // @name NiconicoLiveCommunityChecker
    // @namespace http://rinatl.blog.fc2.com/
    // @version 0.1
    // @description try to take over the world!
    // @author rin_jugatla
    // @match http://live.nicovideo.jp/search*
    // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
    // @grant GM_setValue
    // @grant GM_getValue
    // @grant GM_listValues
    // @grant GM_deleteValue
    // ==/UserScript==

    // グローバル変数
    var debug = false;
    var is_block_hide = false;
    var color = {"like": "#7FFF00", "block": "#FF0000"};
    var like = LoadArray2GM("like");
    var block = LoadArray2GM("block");

    // selector
    var live_block = "#main-for-following-ad > ul:nth-child(4) > li";
    var live_img_block = "div.program-summary-area > div > img";
    var live_span_block = "div.program-summary-area > div > span";

    $(
    function () {
    AddEvent2Image();
    }
    );


    function AddEvent2Image()
    {
    // 各リスト初期化
    // community list 取得
    var communities = document.querySelectorAll(live_block);

    for (var i=0; i<communities.length; i++)
    {
    // コミュニティ番号の取得
    var community_no = communities[i].querySelector(live_img_block).currentSrc.match(/co\d+/);

    // console.log(communities[i].querySelector("img").currentSrc);
    // コミュニティ画像にクリックイベントの追加
    // コンテキストメニューを表示するイベント時のコールバック
    // http://tmlife.net/programming/javascript/javascript-right-click.html
    communities[i].querySelector(live_img_block).addEventListener("contextmenu", function(e){
    // デフォルトイベントをキャンセル
    // これを書くことでコンテキストメニューが表示されなくなります
    e.preventDefault();
    }, false);

    // エレメントをクリックした際に呼ばれる処理
    communities[i].querySelector(live_img_block).addEventListener("mousedown", function(e){
    // 押しているボタンに応じて処理を切り替える
    // ここで2の時に独自のコンテキストメニューを表示したりする
    var community_id = GetCommunityID($(this).attr("src"));
    switch (e.button) {
    case 0 :
    // Left Click
    if(jQuery.inArray(community_id, like) == -1)
    {
    like.push(community_id);
    if(block.indexOf(community_id) > -1)
    block.splice(block.indexOf(community_id), 1);
    console.log("%cadd to like", "color: green");
    }
    break;
    case 1 :
    // Middle Click
    if(like.indexOf(community_id) > -1)
    like.splice(like.indexOf(community_id), 1);
    if(block.indexOf(community_id) > -1)
    block.splice(block.indexOf(community_id), 1);
    console.log("%cdelete from like & block", "color: blue");
    break;
    case 2 :
    // Rrght Click
    if(jQuery.inArray(community_id, block) == -1)
    {
    block.push(community_id);
    if(like.indexOf(community_id) > -1)
    like.splice(like.indexOf(community_id), 1);
    console.log("%cadd to block", "color: red");
    }
    break;
    }

    // リストの保存
    SaveArray2GM("like", like);
    SaveArray2GM("block", block);
    // リストの情報に基づき色の変更
    CheckColor();
    // リストの内容を確認
    if(debug)
    ViewList();
    }, false);

    // コミュニティがリストに存在するか確認
    if(jQuery.inArray(community_no[0], like) > -1)
    {
    communities[i].querySelector(live_span_block).style.color = color.like;
    }
    else if(jQuery.inArray(community_no[0], block) > -1)
    {
    if(is_block_hide)
    communities[i].hide();
    else
    communities[i].querySelector(live_span_block).style.color = color.block;
    }
    else
    {
    communities[i].querySelector(live_span_block).style.color = "black";
    }
    }
    }

    function CheckColor()
    {
    var communities = document.querySelectorAll(live_block);

    for (var i=0; i<communities.length; i++)
    {
    // コミュニティ番号の取得
    var community_no = communities[i].querySelector(live_img_block).currentSrc.match(/co\d+/);

    // コミュニティがリストに存在するか確認
    if(jQuery.inArray(community_no[0], like) > -1)
    {
    communities[i].querySelector(live_span_block).style.color = color.like;
    }
    else if(jQuery.inArray(community_no[0], block) > -1)
    {
    if(is_block_hide)
    communities[i].hide();
    else
    communities[i].querySelector(live_span_block).style.color = color.block;
    }
    else
    {
    communities[i].querySelector(live_span_block).style.color = "black";
    }
    }
    }

    function GetCommunityID(src)
    {
    var temp = src.match(/co\d+/);
    return temp[0];
    }

    function ViewList()
    {
    console.log("%clike", "color: green");
    console.log(like);
    console.log("-----\r\n");
    console.log("%cblock", "color: red");
    console.log(block);
    console.log("-----\r\n");
    console.log("");
    }

    // 変数をローカルに保存
    function SaveArray2GM(key, arr)
    {
    var temp = "";
    for(var i=0; i<arr.length; i++)
    {
    if(i != arr.length - 1)
    {
    temp += arr[i] + ",";
    }
    else
    {
    temp += arr[i];
    }
    }
    GM_setValue(key, temp);
    }

    // ローカルから変数をロード
    function LoadArray2GM(key)
    {
    var temp = GM_getValue(key);
    if(temp != null)
    return temp.split(",");
    return [];
    }
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。