カテゴリー 「DIY」 RSS

2023-06-20

[]

aで買い物するか(・・?はげしく迷っている。紫外線発光ダイオードが魅力的すぎるのだ。基板つきで350円だか破壊的値段。密林でも買えば数千円だからな。

しかしあそこは送料無料ライン結構ハードなんだよな。一万一千円だっけ。

ラインクリアするために太陽パネルでもあがないまくるか(・・?20Wで三千八百円。上の階のトイレの窓にでも設置しようかな(・・?

リチウム電池電池ホルダー→あります普段使いデスクトップのためのUPS的なものでも自作するか(・・?リチウム電池については取扱ナシ。鉛蓄電池が主力。

蓄電池運用テレビって・・どうなんだろうか(・・?シガーソケットシガープラグってなにが違うのか(・・?雄と雌の関係

タブオン端子ってファスト端子のが別名なのだね(・・?蓄電池接続に使える。これはグッド!!!

# 表をつくろう

product, price@, number, pricesum

PV, 3800, 2, 7600

faston, 10, 16, 160

batt. box, 90, 4 , 360

uvled,350,4,1400

inverter,1450,1,1450

cigar,180,1,180

total = 11,150yen now

2023-06-14

[]

やっぱりアセトン○○しかいか(・・?そしたら人数分作品現実的だ。どうすっかな(・・?

へらを割りばしか自作(・・?へら(・・?

アセトンでうまくいくまで遊ぶ(・・?あそぼぉ。あそんでる間はいやなこと忘れられる

プリント普通紙(・・?あつめのビニールそれはあるなぁ。板は大量あまってる。

2023-06-13

[]

今日ちょっとソーラー注文してみるか(・・?

まったく利益は出ないと思うけど、まあ趣味節約ごっこということで・・・子どもがむかしかったペルチェ式の冷却水発生器を別室におき、ホースで延ばして気化熱方式クーラーもどきをつくるか(・・?

2023-06-10

[]

LiFePO4の蓄電池をとりあえずいくつかあがなう12V 12Ah

しか可変電圧源がどっかにあったのでヘヤにもちこむことによってヘヤで充電してみよう。タイマー必須(・・?。それか尼で安売りしている充電ユニットみたいなやつ(・・?どうする(・・?

LiFePO4をリュックではこぶ。源としてデスクトップパソコンうごかす。夕方からかいはじめてLiFePO4がきれたらおやすみなさい。スリープタイム!!!!!!!!!

12V 12Ahってことは、144Whってこと。デスクトップの消費電力っておそらく30Wくらい(・・?モニターモバイルタイプに置き換えたほうがいいなぁ。だとして持ち時間が4時間弱。ちな、デスクトップが19ボルトドライブなのだ直流コンバーター必要(・・?そもそも論なぜパソコンって19なんだろか(・・?マザボ説明書とかみると、5ボルトが主で、たまに12ボルトがある。19もいらんのちゃうか(・・?イラン人(・・?ペルシャじゅうたん(・・?ちゅーか今の時代ゲーム動画編集するわけでもないのに家にデスクトップいらんのちゃうか(・・?タブレットキーボードでいいのでしょうか?

2023-06-05

[]

なぜ秋〇は、鉛用のチャージャーしか販売しないんだろ?いまのトレンドリン酸リチウムであろうかと。スマホでも制御できるバッテリーマネジメントシステムとか不要。鉛用のチャージャー流用して、最低限のBMSつくれないか。なぜ鉛〇電池は、単純な回路で過充電保護できるのに、リチウムイオンとかリン酸鉄とかは、スマホ制御機能とかなんだろうか。でも18650とかの充電器にはスマホ制御機能ついてないで。

2007-10-30

[]55行で作るC#テンプレートエンジン

http://anond.hatelabo.jp/20071030034313二番煎じ

あまりのアホさに、作ってて気が狂いかけた

方針


using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Microsoft.CSharp;

delegate void ConvertTemplateDelegate(TextWriter tw, Dictionary<object, object> args);
static class TemplateGenerator {
    public static ConvertTemplateDelegate Generate(string code) {
        CompilerParameters param = new CompilerParameters();
        param.GenerateInMemory = true;
        param.ReferencedAssemblies.Add("System.Web.dll");
        CompilerResults rs = new CSharpCodeProvider().CompileAssemblyFromSource(param, ParseTemplate(code));
        if (0 < rs.Errors.Count) {
            StringWriter sw = new StringWriter();
            sw.WriteLine("Compile Error...");
            foreach (CompilerError err in rs.Errors)
                sw.WriteLine(err.ToString());
            throw new Exception(sw.ToString());
        }
        return (ConvertTemplateDelegate) Delegate.CreateDelegate(typeof(ConvertTemplateDelegate), rs.CompiledAssembly.GetType("Template", true).GetMethod("Convert"));
    }
    private static string ParseTemplate(string code) {
        using (StringWriter sw = new StringWriter()) {
            sw.WriteLine("using System; using System.Collections.Generic; using System.IO; using System.Web;");
            sw.WriteLine("public static class Template {");
            sw.WriteLine("public static void Convert(TextWriter tw, Dictionary<object, object> args) {");
            int index = 0;
            while (0 <= index &amp;&amp; index < code.Length) {
                int i = code.IndexOf("<%", index);
                sw.WriteLine("tw.Write(\"{0}\");", EscapeString(i < 0 ? code.Substring(index) : code.Substring(index, i - index)));
                if (0 <= i) {
                    i += 2;
                    int i2 = code.IndexOf("%>", i);
                    if (0 <= i2) {
                        string cc = code.Substring(i, i2 - i);
                        if (cc.StartsWith("="))
                            sw.WriteLine("tw.Write(HttpUtility.HtmlEncode(\"\"+({0})));", cc.Substring(1));
                        else
                            sw.WriteLine(cc);
                        i = i2 + 2;
                    }
                }
                index = i;
            }
            sw.WriteLine("}}");
            return sw.ToString();
        }
    }
    private static string EscapeString(string code) {
        return code.Replace("\\", "\\e").Replace("\"", "\\\"").Replace("\t", "\\t").Replace("\n", "\\n").Replace("\r", "\\r").Replace("\\e", "\\\\");
    }
}

サンプル C# コード。ためしにテンプレートから Xml 生成して、標準出力してみる。

class Program {
    static void Main(string[] args) {
        ConvertTemplateDelegate func = TemplateGenerator.Generate(TemplateEngine.Resource1.template);
        using (StringWriter sw = new StringWriter()) {
            Dictionary<object, object> arg = new Dictionary<object, object>();
            arg["title"] = "template sample";
            arg["data"] = new string[] { "foo", "fooo", "<strong>foooooooooo!</strong>" };
            func(sw, arg);
            Console.WriteLine(sw);
        }
    }
}

サンプルテンプレート

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title><%= args["title"] %></title>
  </head>
  <body>
    <h1><%= args["title"] %></h1>
    <table>
<% string[] data = (string[]) args["data"]; %>
<% for(int i = 0; i < data.Length; i++) { %>
      <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
        <td><%= i %></td>
        <td><%= data[i] %></td>
      </tr>
<% } %>
    </table>
  </body>
</html>

出力例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>template sample</title>
  </head>
  <body>
    <h1>template sample</h1>
    <table>


      <tr bgcolor="#FFCCCC">
        <td>0</td>
        <td>foo</td>
      </tr>

      <tr bgcolor="#CCCCFF">
        <td>1</td>
        <td>fooo</td>
      </tr>

      <tr bgcolor="#FFCCCC">
        <td>2</td>
        <td>&lt;strong&gt;foooooooooo!&lt;/strong&gt;</td>
      </tr>

    </table>
  </body>
</html>

CodeDom 使って動的コンパイル……って、このコードのままだとセキュリティ的に大問題な気がするな。

素直に ASP.NET 使ったほうが楽だと直感した。

あと EscapeString すっごく自信ない。たぶん修正が必要だと思うw

 
ログイン ユーザー登録
ようこそ ゲスト さん