PageSourceSearch

https://h-kono-it.github.io/

html h-kono-it.github.io collected 2026-10-03 09:15:58 UTC 18,570 bytes, 624 lines download raw bytes

1<!DOCTYPE html>
2<html lang="ja">
3  <head>
4    <meta charset="UTF-8" />
5    <link rel="stylesheet" href="https://fonts.xz.style/serve/inter.css" />
6    <link
7      rel="stylesheet"
8      href="https://cdn.jsdelivr.net/npm/@exampledev/[email protected]/new.min.css"
9    />
10
11    <title>アニメ視聴</title>
12  </head>
13  <body>
14    
14<script
15      src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"
16      integrity="sha512-d9xgZrVZpmmQlfonhQUvTR7lMPtO7NkZMkA0ABN3PHCbKA5nqylQ/yWlFAyY6hYgdF1Qh6nYiuADWwKB4C2WSw=="
17      crossorigin="anonymous"
18    ></script>
18
19    <label for="label1">基本情報</label>
20    <input
21      type="checkbox"
22      id="label1"
23      onchange="toggleAcc(this)"
24      data-target="base-info"
25    />
26    <div id="base-info" style="display: none">
27      <p>
28        <label for="name">名前:</label
29        ><input type="text" id="name" value="ひろ" />
30      </p>
31      <p>
32        <label for="age">年齢:</label
33        ><input type="text" id="age" value="ヒミツ" />
34      </p>
35      <p>
36        <label for="work">職業:</label
37        ><input type="text" id="work" value="プログラマ" />
38      </p>
39      <p>
40        <label for="live">住処:</label
41        ><input type="text" id="live" value="千葉" />
42      </p>
43      <p>
44        <label for="qualification1">スキル1:</label
45        ><input type="text" id="qualification1" value="DBスペシャリスト" />
46      </p>
47      <p>
48        <label for="qualification2">スキル2:</label
49        ><input type="text" id="qualification2" value="応用情報" />
50      </p>
51      <p>
52        <label for="qualification2">スキル3:</label
53        ><input type="text" id="qualification3" value="自動車免許" />
54      </p>
55      <p>
56        <label for="parsonality">性格</label
57        ><textarea id="parsonality" rows="2" cols="32" style="resize: none">
58    コミュ障
59    負けず嫌い</textarea
60        >
61      </p>
62      <p><label for="image">画像</label><input type="file" id="image" /></p>
63    </div>
64    <label for="label2">レーダーチャート</label>
65    <input
66      type="checkbox"
67      id="label2"
68      onchange="toggleAcc(this)"
69      data-target="radar-info"
70    />
71    <div id="radar-info" style="display: none">
72      <p>
73        <label for="front">フロント:</label
74        ><input type="number" id="front" value="1" max="5" min="1" />
75      </p>
76      <p>
77        <label for="back">バック:</label
78        ><input type="number" id="back" value="1" max="5" min="1" />
79      </p>
80      <p>
81        <label for="infra">インフラ:</label
82        ><input type="number" id="infra" value="1" max="5" min="1" />
83      </p>
84      <p>
85        <label for="db">DB:</label
86        ><input type="number" id="db" value="1" max="5" min="1" />
87      </p>
88      <p>
89        <label for="security">セキュリティ:</label
90        ><input type="number" id="security" value="1" max="5" min="1" />
91      </p>
92      <p>
93        <label for="management">マネジメント:</label
94        ><input type="number" id="management" value="1" max="5" min="1" />
95      </p>
96      <p>
97        <label for="free_skill_name">フリー:</label
98        ><input type="text" id="free_skill_name" />:<input
99          type="number"
100          id="free_skill_value"
101          max="5"
102          min="1"
103        />
104      </p>
105    </div>
106    <label for="label3">言語</label>
107    <input
108      type="checkbox"
109      id="label3"
110      onchange="toggleAcc(this)"
111      data-target="lang-info"
112    />
113    <div id="lang-info" style="display: none">
114      <p>
115        <label for="">C:</label
116        ><input type="number" id="lang1" value="0" max="100" min="0" />
117      </p>
118      <p>
119        <label for="">C++:</label
120        ><input type="number" id="lang2" value="0" max="100" min="0" />
121      </p>
122      <p>
123        <label for="">C#:</label
124        ><input type="number" id="lang3" value="0" max="100" min="0" />
125      </p>
126      <p>
127        <label for="">PHP:</label
128        ><input type="number" id="lang4" value="0" max="100" min="0" />
129      </p>
130      <p>
131        <label for="">Java:</label
132        ><input type="number" id="lang5" value="0" max="100" min="0" />
133      </p>
134      <p>
135        <label for="">Kotlin:</label
136        ><input type="number" id="lang6" value="0" max="100" min="0" />
137      </p>
138      <p>
139        <label for="">Ruby:</label
140        ><input type="number" id="lang7" value="0" max="100" min="0" />
141      </p>
142      <p>
143        <label for="">Python:</label
144        ><input type="number" id="lang8" value="0" max="100" min="0" />
145      </p>
146      <p>
147        <label for="">Swift:</label
148        >
148<input type="number" id="lang9" value="0" max="100" min="0" />
149      </p>
150      <p>
151        <label for="">Haskell:</label
152        ><input type="number" id="lang10" value="0" max="100" min="0" />
153      </p>
154      <p>
155        <label for="">Scala:</label
156        ><input type="number" id="lang11" value="0" max="100" min="0" />
157      </p>
158      <p>
159        <label for="">Erlang:</label
160        ><input type="number" id="lang12" value="0" max="100" min="0" />
161      </p>
162      <p>
163        <label for="">Go:</label
164        ><input type="number" id="lang13" value="0" max="100" min="0" />
165      </p>
166      <p>
167        <label for="">JavaScript:</label
168        ><input type="number" id="lang14" value="0" max="100" min="0" />
169      </p>
170      <p>
171        <label for="">HTML5+CSS3:</label
172        ><input type="number" id="lang15" value="0" max="100" min="0" />
173      </p>
174      <p>
175        <label for="">Sass:</label
176        ><input type="number" id="lang16" value="0" max="100" min="0" />
177      </p>
178      <p>
179        <label for="">COBOL:</label
180        ><input type="number" id="lang17" value="0" max="100" min="0" />
181      </p>
182      <p>
183        <label for="">Rust:</label
184        ><input type="number" id="lang18" value="0" max="100" min="0" />
185      </p>
186      <p>
187        <label for="">Clojure:</label
188        ><input type="number" id="lang19" value="0" max="100" min="0" />
189      </p>
190    </div>
191    <label for="label4">フレームワーク</label>
192    <input
193      type="checkbox"
194      id="label4"
195      onchange="toggleAcc(this)"
196      data-target="frame-info"
197    />
198    <div id="frame-info" style="display: none">
199      <p>
200        <label for="">Spring:</label
201        ><input type="number" id="frame1" value="0" max="100" min="0" />
202      </p>
203      <p>
204        <label for="">Jakarta EE:</label
205        ><input type="number" id="frame2" value="0" max="100" min="0" />
206      </p>
207      <p>
208        <label for="">CakePHP:</label
209        ><input type="number" id="frame3" value="0" max="100" min="0" />
210      </p>
211      <p>
212        <label for="">Symfony:</label
213        ><input type="number" id="frame4" value="0" max="100" min="0" />
214      </p>
215      <p>
216        <label for="">Laravel:</label
217        ><input type="number" id="frame5" value="0" max="100" min="0" />
218      </p>
219      <p>
220        <label for="">Ruby on Rails:</label
221        ><input type="number" id="frame6" value="0" max="100" min="0" />
222      </p>
223      <p>
224        <label for="">Django:</label
225        ><input type="number" id="frame7" value="0" max="100" min="0" />
226      </p>
227      <p>
228        <label for="">Play Framework:</label
229        ><input type="number" id="frame8" value="0" max="100" min="0" />
230      </p>
231      <p>
232        <label for="">.NET Framework:</label
233        >
233<input type="number" id="frame9" value="0" max="100" min="0" />
234      </p>
235      <p>
236        <label for="">React:</label
237        ><input type="number" id="frame10" value="0" max="100" min="0" />
238      </p>
239      <p>
240        <label for="">Vue.js:</label
241        ><input type="number" id="frame11" value="0" max="100" min="0" />
242      </p>
243    </div>
244    <label for="label5">インフラ</label>
245    <input
246      type="checkbox"
247      id="label5"
248      onchange="toggleAcc(this)"
249      data-target="infra-info"
250    />
251    <div id="infra-info" style="display: none">
252      <p>
253        <label for="">AWS:</label
254        ><input type="number" id="infra1" value="0" max="100" min="0" />
255      </p>
256      <p>
257        <label for="">GCP:</label
258        ><input type="number" id="infra2" value="0" max="100" min="0" />
259      </p>
260      <p>
261        <label for="">UNIX:</label
262        ><input type="number" id="infra3" value="0" max="100" min="0" />
263      </p>
264      <p>
265        <label for="">Windows Server:</label
266        >
266<input type="number" id="infra4" value="0" max="100" min="0" />
267      </p>
268      <p>
269        <label for="">Apache:</label
270        ><input type="number" id="infra5" value="0" max="100" min="0" />
271      </p>
272      <p>
273        <label for="">Tomcat:</label
274        ><input type="number" id="infra6" value="0" max="100" min="0" />
275      </p>
276      <p>
277        <label for="">nginx:</label
278        ><input type="number" id="infra7" value="0" max="100" min="0" />
279      </p>
280    </div>
281
282    <label for="label6">その他</label>
283    <input
284      type="checkbox"
285      id="label6"
286      onchange="toggleAcc(this)"
287      data-target="other-info"
288    />
289    <div id="other-info" style="display: none">
290      <p>
291        <label for="past">略歴</label
292        ><textarea id="past" rows="4" cols="56" style="resize: none">
293    SIerで5年間、金融系システムなどの基幹システムに携わる。
294    主にJavaを使い、Webサービスを実装。
295    自社サービスに関わりたいと思い転職して今に至る。</textarea
296        >
297      </p>
298      <p>
299        <label for="hobby">趣味</label
300        ><input type="text" id="hobby" value="TRPG, 一人カラオケ" />
301      </p>
302      <p>
303        <label for="sp_skill">特技</label
304        ><input type="text" id="sp_skill" value="縄跳び" />
305      </p>
306    </div>
307
308    <button id="draw" onclick="draw()" style="display: none">描画</button>
309    <button id="download" onclick="download()" style="display: none">
310      download
311    </button>
312    <canvas
313      id="myChart"
314      width="250"
315      height="250"
316      style="display: none"
317    ></canvas>
318
319    <canvas
320      id="canvas"
321      width="870"
322      height="1200"
323      style="display: none"
324    ></canvas>
325    <canvas
326      id="image-canvas"
327      width="200"
328      height="200"
329      style="display: none"
330    ></canvas>
331  </body>
332</html>
333
334<script>
335  var file = document.getElementById("image");
336  var image_canvas = document.getElementById("image-canvas");
337  var canvasWidth = 200;
338  var canvasHeight = 200;
339  var uploadImgSrc;
340
341  // Canvasの準備
342  image_canvas.width = canvasWidth;
343  image_canvas.height = canvasHeight;
344  var image_ctx = image_canvas.getContext("2d");
345
346  const chara = new Image();
347  chara.src = "image0.png"; // 画像のURLを指定
348  let chara_width = 0;
349  let chara_height = 0;
350  chara.onload = function (event) {
351    chara_width = this.width;
352    chara_height = this.height;
353    document.getElementById("draw").style = "display: inline-block;";
354    document.getElementById("download").style = "display: inline-block;";
355  };
356
357  function loadLocalImage(e) {
358    // ファイル情報を取得
359    var fileData = e.target.files[0];
360
361    // 画像ファイル以外は処理を止める
362    if (!fileData.type.match("image.*")) {
363      alert("画像を選択してください");
364      return;
365    }
366
367    // FileReaderオブジェクトを使ってファイル読み込み
368    var reader = new FileReader();
369    // ファイル読み込みに成功したときの処理
370    reader.onload = function () {
371      // Canvas上に表示する
372      uploadImgSrc = reader.result;
373      canvasDraw();
374    };
375    // ファイル読み込みを実行
376    reader.readAsDataURL(fileData);
377  }
378
379  // ファイルが指定された時にloadLocalImage()を実行
380  file.addEventListener("change", loadLocalImage, false);
381
382  // Canvas上に画像を表示する
383  function canvasDraw() {
384    // canvas内の要素をクリアする
385    image_ctx.clearRect(0, 0, canvasWidth, canvasHeight);
386
387    // Canvas上に画像を表示
388    var img = new Image();
389    img.src = uploadImgSrc;
390    img.onload = function () {
391      image_ctx.drawImage(
392        img,
393        0,
394        0,
395        canvasWidth,
396        this.height * (canvasWidth / this.width)
397      );
398    };
399  }
400
401  function toggleAcc(ele) {
402    target = ele.getAttribute("data-target");
403    document.getElementById(target).style = ele.checked
404      ? "display: block;"
405      : "display: none;";
406  }
407
408  function check() {
409    const messages = [];
410    checkRaderMax("front", "フロント", messages);
411    checkRaderMax("back", "バック", messages);
412    checkRaderMax("infra", "インフラ", messages);
413    checkRaderMax("db", "DB", messages);
414    checkRaderMax("security", "セキュリティ", messages);
415    checkRaderMax("management", "マネジメント", messages);
416    checkRaderMin("front", "フロント", messages);
417    checkRaderMin("back", "バック", messages);
418    checkRaderMin("infra", "インフラ", messages);
419    checkRaderMin("db", "DB", messages);
420    checkRaderMin("security", "セキュリティ", messages);
421    checkRaderMin("management", "マネジメント", messages);
422  }
423
424  function checkRaderMax(id, name, messages) {
425    if (document.getElementById(id).value > 5) {
426      messages.push(`${name}は5以下で入力してください`);
427    }
428  }
429  function checkRaderMin(id, name, messages) {
430    if (document.getElementById(id).value < 1) {
431      messages.push(`${name}は1以上で入力してください`);
432    }
433  }
434
435  function draw() {
436    const canvas = document.getElementById("canvas");
437    const ctx = document.getElementById("canvas").getContext("2d");
438    ctx.clearRect(0, 0, canvas.width, canvas.height);
439    const dstWidth = chara_width * 0.3;
440    const dstHeight = chara_height * 0.3;
441    ctx.drawImage(
442      chara,
443      0,
444      0,
445      chara_width,
446      chara_height,
447      0,
448      0,
449      dstWidth,
450      dstHeight
451    );
452    ctx.lineJoin = "miter";
453    ctx.miterLimit = "1";
454    drawTextBase(ctx, document.getElementById("name").value, 180, 40, 40);
455    drawTextBase(ctx, document.getElementById("age").value, 750, 50, 30);
456    drawTextBase(ctx, document.getElementById("work").value, 400, 80, 20);
457    drawTextBase(ctx, document.getElementById("live").value, 400, 110, 20);
458    drawTextBase(
459      ctx,
460      document.getElementById("qualification1").value,
461      400,
462      140,
463      20
464    );
465    drawTextBase(
466      ctx,
467      document.getElementById("qualification2").value,
468      400,
469      170,
470      20
471    );
472    drawTextBase(
473      ctx,
474      document.getElementById("qualification3").value,
475      400,
476      200,
477      20
478    );
479
480    drawTextArea(ctx, "parsonality", 280, 260);
481
482    Array.prototype.forEach.call(
483      document.getElementById("lang-info").children,
484      (element, index) => {
485        drawTextBase(
486          ctx,
487          element.lastElementChild.value,
488          330,
489          380 + index * 29 + index / 5,
490          20
491        );
492      }
493    );
494    Array.prototype.forEach.call(
495      document.getElementById("frame-info").children,
496      (element, index) => {
497        drawTextBase(
498          ctx,
499          element.lastElementChild.value,
500          800,
501          380 + index * 29 + index / 5,
502          20
503        );
504      }
505    );
506    Array.prototype.forEach.call(
507      document.getElementById("infra-info").children,
508      (element, index) => {
509        drawTextBase(
510          ctx,
511          element.lastElementChild.value,
512          800,
513          760 + index * 29 + index / 5,
514          20
515        );
516      }
517    );
518
519    drawTextArea(ctx, "past", 20, 1070);
520    drawTextBase(ctx, document.getElementById("hobby").value, 650, 1070, 20);
521    drawTextBase(ctx, document.getElementById("sp_skill").value, 650, 1170, 20);
522
523    const chartElement = drawChart();
524    ctx.drawImage(image_canvas, 25, 70);
525    ctx.drawImage(chartElement, 610, 50);
526    chartElement.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);
527    canvas.style = "display: block;";
528  }
529
530  function drawTextArea(ctx, id, x, base_y) {
531    var text = document
532      .getElementById(id)
533      .value.replace(/\r\n|\r/g, "\n")
534      .split("\n");
535    for (var i = 0; i < text.length; i++) {
536      if (text[i] == "") {
537        continue;
538      }
539
540      drawTextBase(ctx, text[i], x, base_y + i * 30, 20);
541    }
542  }
543
544  function drawTextBase(ctx, text, x, y, size) {
545    ctx.font = `bold ${size}px serif`;
546    ctx.lineWidth = 3;
547    ctx.strokeStyle = "#FFF";
548    ctx.strokeText(text, x, y);
549    ctx.fillStyle = "#000";
550    ctx.fillText(text, x, y);
551  }
552
553  function download() {
554    draw();
555    let canvas = document.getElementById("canvas");
556
557    let link = document.createElement("a");
558    link.href = canvas.toDataURL();
559    link.download = `${document.getElementById("name").value}_skill_sheet.png`;
560    link.click();
561  }
562
563  function drawChart() {
564    var ctx = document.getElementById("myChart").getContext("2d");
565    const labels = [
566      "フロント",
567      "バック",
568      "インフラ",
569      "マネジメント",
570      "DB",
571      "セキュリティ",
572    ];
573    const data = [
574      document.getElementById("front").value,
575      document.getElementById("back").value,
576      document.getElementById("infra").value,
577      document.getElementById("db").value,
578      document.getElementById("security").value,
579      document.getElementById("management").value,
580    ];
581    if (
582      document.getElementById("free_skill_name").value &&
583      document.getElementById("free_skill_value").value
584    ) {
585      labels.push(document.getElementById("free_skill_name").value);
586      data.push(document.getElementById("free_skill_value").value);
587    }
588    var myChart = new Chart(ctx, {
589      type: "radar",
590      data: {
591        labels: labels,
592        datasets: [
593          {
594            label: "",
595            data: data,
596            backgroundColor: "RGBA(225,95,150, 0.5)",
597            borderColor: "RGBA(225,95,150, 1)",
598            borderWidth: 1,
599            pointBackgroundColor: "RGB(46,106,177)",
600          },
601        ],
602      },
603      options: {
604        responsive: false,
605        maintainAspectRatio: false,
606        animation: false,
607        legend: {
608          display: false,
609        },
610        scale: {
611          ticks: {
612            suggestedMin: 0,
613            suggestedMax: 5,
614            stepSize: 1,
615            callback: function (value, index, values) {
616              return value;
617            },
618          },
619        },
620      },
621    });
622    return document.getElementById("myChart");
623  }
624</script>
vendor: 1 bytes, line 624
624

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.