効率が良いかって?一番効率が良いのは手を動かさないことですよ🙄。 #花形

2022.09.10

Logging

おはようございます。今日はどんより曇り空。

さて、NHKプロフェッショナルに真鍋大度さんが出てた時にNHKのスタッフさんが質問した回答をタイトルにしてみました。やってみたら分かると思いますが、プログラムってキラキラした仕事ではないですよ、何方かと言えば努力と労力がかかる世界です。好きでないと続かないという様な世界です。

Tohji, banvox – Super Ocean Man (Official Music Video)
スーパーオーシャンマン

因みにAIなどで花形職も当然、大変なお仕事ですそんなに簡単なものではない。機械学習で大事なのはデータなんですよ。それは手を動かしてやってみないと分からないこと。だからデータサイエンティストなんて職業が生まれたわけですからね。

追記して意味深な事を少し書いときます。昔から自分は見えないので俯瞰して見ないといけないとこれだけは心がけています。何故なら人の評価は当てにならないです、上手く行けばって話ですからね。上手くいっていない時に評価してくれていた人、そういう人に自分はなりたいと思います。人の批判ばかりは何とやらです。

最後にNHKプロフェッショナルの真鍋大度さんのアーカイブ載せときます。プロフェッショナル 仕事の流儀 「まず動け、未来はその先にある~プログラマー/アーティスト・真鍋大度」

タグ

AI, NHK, オーシャン, お仕事, こと, これだけ, サイエンティスト, スーパー, スタッフ, それ, タイトル, データ, プログラム, プロフェッショナル, マン, もの, わけ, 世界, , , 今日, 仕事, 何方, 俯瞰, 努力, 労力, 効率, 回答, 大事, 大変, 大度, 学習, 少し, , , , 曇り空, 機械, 真鍋, 簡単, 職業, 自分, 花形, 評価, , 質問, 追記,

映画、ケネディ家の身代金を途中まで見ましたが💰

2022.08.24

Logging

こんにちは、今日は曇り空ですが何だか蒸し暑いですね😎。

さて、ネトフリで映画、ケネディ家の身代金を途中まで見ましたがネタバレサイトを少し見てしまいまして、途中で見るのを止めてしまっています。理由は耳をザクザクと斬るシーンがあるのだとか、それも生々しいらしく。これはちょっとヤダなという事で見るのを止めています…。

映画『ゲティ家の身代金』予告編

なお、このケネディ家の身代金は実話ベースに着色した内容なので実話とは展開は違うようですね。それでもそのシーンはあまり観たいものではない。結局、身代金をケネディは渡すのかどうか?孫は助かるのか、など結局、結末は知りたいので少しずつだけ進めながら観ていきます。

追記:ケネディ家の身代金の撮った監督さんはプロメテウスを撮った監督さん。あのリドリー・スコット監督です、それを聞くと何だか耳のシーンとかのリアリティーを追求するのはよく分かる気がします。でもそういう表現があるから何だかこの映画の意義を感じてしまいます。

※追記は投稿する前に付け加えました。

タグ

ケネディ, これ, サイト, シーン, スコット, それ, ネトフリ, プロメテウス, ベース, もの, リアリティー, リドリー, , 今日, 内容, , 実話, 少し, 展開, 意義, 映画, 曇り空, , 理由, 監督, 着色, 結末, , 表現, 身代金, 追求, 追記, 途中,

今頃になってdocker(ドッカー)を勉強していたりしている。

2022.04.30

Logging

おはよう御座います。4月も今日が最後になってしまいました。

皆さんGW(ゴールデンウィーク)は何処か行きますか?、自分はしれっと仕事しているかも知れません。明日は休みですが・・・。

さて、今頃になってdocker(ドッカー)を勉強していたりしてします。dockerとはなんぞやという人はエンジニアでは恐らくないと思います😭。知らない方はググってくださいな。

今までdockerなんて使わなかった、バーチャルボックスがあれば何でも出来ると今でも思っていますが、まぁ一応、dockerも触らないといけないなとか思いましてdockerを始めました。

dockerでイメージを作ってdocker Hubで公開しようと思います。公開する内容は、PHP5系から8系までの環境を構築出来る提供するつもりです。

公開したら追記としてURLを記載しますので、しばしお待ち下さい。来月の半ばまでには構築出来る環境を提供するつもりです。

尚、dockerのCUIなどの操作方法はこちらを参照すると良いですよ。

追記出来ました(5月を待たずして):https://hub.docker.com/r/zip358com/rockylinux-php-56-81-apache

docker pull zip358com/rockylinux-php-56-81-apache
docker run -d -p 80:80 --privileged --name 任意のコンテナ名 zip358com/rockylinux-php-56-81-apache /sbin/init

cgi-binを見てください。PHP5.6からPHP8.1まであります😌。

Apacheの設定、php-cgiを使用する方法はこんな感じです😀

<Directory "/var/www/cgi-bin">
    AllowOverride All
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
Action php-cgi-7.1.9 /cgi-bin/php-cgi-7.1.9
<Directory "/var/www/html/xxxx.site">
    Options +ExecCGI
    AddHandler php-cgi-7.1.9 .php .html
    AddType application/x-httpd-php .php
</Directory>

タグ

4, 5, 8, docker, GW, Hub, php, url, イメージ, エンジニア, お待ち, カー, ゴールデンウィーク, しれっと, つもり, バーチャル, ボックス, , , 今日, 今頃, 仕事, 休み, 公開, 内容, 勉強, 半ば, 提供, , 明日, 最後, 来月, 構築, 環境, 皆さん, 自分, 記載, 追記,

HUNTERxHUNTERの文字が生成できるサービスを作りましたよ。

2021.10.22

Logging

今日はお昼ぐらいから、天気が良くなりましたね、、昨日はどんよりしていて自分のテンションもどんより気味でしたのでブログをお休みしていました。そんな中でも一応、プログラムして一つのサービスを世に出しました?!

さて、タイトル通りHUNTER?HUNTERの文字が生成できるサービスを作りましたよ。ってお話です。これを作った経緯はこういうサービスは有るには有るけど、精度がいまいちなものばかりだったので作ったわけです。今回は漢字をひらがなに変換する機能は使用していません、理由はレンタルサーバーでは漢字をひらがなにするという処理を自前が出来ないのです、だからAPIに頼る必要があるのです。しかしながら、、、このサービスが軌道に乗り回転数(PV)が上がればAPI制限の上限に達しAPIが使用できない懸念があるのでAPIを使用するのは控えました。

今はそんな事はないのですけどね。そんな理由からハンター文字生成サービスは、あまり負荷のかからない処理にしています。Twitterでシェア出来るので共有して頂けたら幸いです😁。

https://hxh-moji.com/

追記:HUNTERXHUNTERの作者である漫画家、冨樫先生はいつ連載再開出来るのでしょうかと思っているファンも多いかと思います。自分も首を長くして待っていますが、中々、難しいじゃないかなと…。いろいろな説が出ているのですが、本当のことを知っているのは関係者ぐらいのものでしょう。恐らく病気かなにかの説が正しいような気がします。言えないってことはそういう事なのかなぁって思います。いちファンとしては、期待せずに待つのみですね。

タグ

API, API制限, HUNTER, HUNTER×HUNTER, PV, Twitter, テンション, レンタルサーバー, 上限, 作者, 冨樫先生, 懸念, 漢字, 精度, 経緯, 自前, , 負荷, 軌道, 追記,

全国各地のダム貯水率を可視化してみた。

2021.03.02

Logging

全国各地のダム貯水率を可視化してみた。以前、高知県のダムの貯水率を可視化した事を記事にしたのですが、意外にもある一部の人達に好評なので全国のダムファンのために、全国各地のダム貯水率を可視化してみましたよ。あまり好評だったら、取得してきているサーバーに負荷がかかるため、中止します。

なお、どこから取集してきているかというとダムの貯水状況 – 国土交通省からです、正直なところcsvデータ化して頂きたいなと思う人もいるのではないでしょうか?

追記 2021:この頃、ブロックされて私のHPから拾えなくなりました・・・。もしくはHTMLの構造が変わった可能性があります。

	[
		{
			"ken": "北海道道北", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0102/ipDamGaikyo_pc0102_pg1_fw0.html",
				"dam_name": ["愛別ダム", "西岡ダム", "有明ダム", "小平ダム", "岩尾内ダム", "サンルダム", "留萌ダム", "大雪ダム", "金山ダム", "忠別ダム"]
			}
		},
		{
			"ken": "北海道道東", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0103/ipDamGaikyo_pc0103_pg1_fw0.html",
				"dam_name": ["佐幌ダム", "庶路ダム", "鹿ノ子ダム", "十勝ダム", "屈足ダム", "札内川ダム", "糠平ダム", "元小屋ダム", "活込ダム", "仙美里ダム"]
			}
		},
		{
			"ken": "北海道道央", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0104/ipDamGaikyo_pc0104_pg1_fw0.html",
				"dam_name": ["美唄ダム", "栗山ダム", "徳富ダム", "当別ダム", "朝里ダム", "豊平峡ダム", "夕張シューパロダム", "滝里ダム", "漁川ダム", "定山渓ダム", "桂沢ダム", "芦別ダム"]
			}
		},
		{
			"ken": "北海道道南", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0105/ipDamGaikyo_pc0105_pg1_fw0.html",
				"dam_name": ["新中野ダム", "矢別ダム", "上ノ国ダム", "高見ダム", "様似ダム", "浦河ダム", "美利河ダム", "二風谷ダム", "厚幌ダム"]
			}
		},
		{
			"ken": "青森県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0201/ipDamGaikyo_pc0201_pg1_fw0.html",
				"dam_name": ["津軽ダム", "遠部ダム", "飯詰ダム", "浅瀬石川ダム", "久吉ダム", "相馬ダム(利水)", "世増ダム", "下湯ダム", "小泊ダム", "浅虫ダム", "清水目ダム(利水)", "川内ダム"]
			}
		},
		{
			"ken": "岩手県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0301/ipDamGaikyo_pc0301_pg1_fw0.html",
				"dam_name": ["四十四田ダム", "胆沢ダム", "早池峰ダム", "御所ダム", "綱取ダム", "入畑ダム", "湯田ダム", "遠野ダム", "遠野第二ダム", "田瀬ダム", "滝ダム", "鷹生ダム", "日向ダム", "綾里川ダム"]
			}
		},
		{
			"ken": "宮城県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0401/ipDamGaikyo_pc0401_pg1_fw0.html",
				"dam_name": ["鳴子ダム", "花山ダム", "長沼ダム", "上大沢ダム", "化女沼ダム", "小田ダム", "荒砥沢ダム", "栗駒ダム(利水)", "漆沢ダム", "宮床ダム", "南川ダム", "樽水ダム", "釜房ダム", "大倉ダム", "七ケ宿ダム", "七北田ダム", "惣の関ダム", "払川ダム"]
			}
		},
		{
			"ken": "秋田県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0501/ipDamGaikyo_pc0501_pg1_fw0.html",
				"dam_name": ["早口ダム", "山瀬ダム", "素波里ダム", "萩形ダム", "森吉ダム", "森吉山ダム", "砂子沢ダム", "旭川ダム", "鎧畑ダム", "玉川ダム", "皆瀬ダム", "板戸ダム", "岩見ダム", "大松川ダム", "協和ダム", "大内ダム"]
			}
		},
		{
			"ken": "山形県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0601/ipDamGaikyo_pc0601_pg1_fw0.html",
				"dam_name": ["長井ダム", "高坂ダム", "白水川ダム", "寒河江ダム", "木地山ダム", "田沢川ダム", "最上小国川流水型ダム", "留山川ダム", "蔵王ダム", "前川ダム", "神室ダム", "綱木川ダム", "白川ダム", "荒沢ダム", "月山ダム", "月光川ダム", "温海川ダム", "横川ダム"]
			}
		},
		{
			"ken": "福島県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0701/ipDamGaikyo_pc0701_pg1_fw0.html",
				"dam_name": ["摺上川ダム", "三春ダム", "堀川ダム", "真野ダム", "木戸ダム", "小玉ダム", "こまちダム", "高柴ダム", "四時ダム", "大川ダム", "新郷ダム(利水・東北電力)", "山郷ダム(利水・東北電力)", "上野尻ダム(利水・東北電力)", "片門ダム(利水・東北電力)", "奥只見ダム(利水・電源開発)", "田子倉ダム(利水・電源開発)", "本名ダム(利水・東北電力)", "滝ダム(利水・電源開発)", "大鳥ダム(利水・電源開発)", "上田ダム(利水・東北電力)", "宮下ダム(利水・東北電力)", "柳津ダム(利水・東北電力)", "只見ダム(電源開発)", "日中ダム", "東山ダム", "田島ダム"]
			}
		},
		{
			"ken": "栃木県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/0901/ipDamGaikyo_pc0901_pg1_fw0.html",
				"dam_name": ["塩原ダム", "寺山ダム", "西荒川ダム", "東荒川ダム", "川俣ダム", "川治ダム", "三河沢ダム", "中禅寺ダム", "五十里ダム", "湯西川ダム", "松田川ダム"]
			}
		},
		{
			"ken": "群馬県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1001/ipDamGaikyo_pc1001_pg1_fw0.html",
				"dam_name": ["四万川ダム", "矢木沢ダム", "藤原ダム", "草木ダム", "八ッ場ダム", "薗原ダム", "相俣ダム", "奈良俣ダム", "桐生川ダム", "塩沢ダム", "道平川ダム", "大仁田ダム", "坂本ダム", "霧積ダム"]
			}
		},
		{
			"ken": "埼玉県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1101/ipDamGaikyo_pc1101_pg1_fw0.html",
				"dam_name": ["渡良瀬遊水地", "下久保ダム", "二瀬ダム", "荒川第一調節池", "浦山ダム", "滝沢ダム", "有間ダム", "合角ダム"]
			}
		},
		{
			"ken": "千葉県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1201/ipDamGaikyo_pc1201_pg1_fw0.html",
				"dam_name": ["亀山ダム", "片倉ダム", "高滝ダム", "矢那川ダム"]
			}
		},
		{
			"ken": "神奈川県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1401/ipDamGaikyo_pc1401_pg1_fw0.html",
				"dam_name": ["城山ダム", "宮ヶ瀬ダム", "宮ヶ瀬副ダム", "三保ダム"]
			}
		},
		{
			"ken": "新潟県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1501/ipDamGaikyo_pc1501_pg1_fw0.html",
				"dam_name": ["大石ダム", "揚川ダム(利水・東北電力)", "豊実ダム(利水・東北電力)", "鹿瀬ダム(利水・東北電力)", "早出川ダム", "下条川ダム", "刈谷田川ダム", "笠堀ダム", "城川ダム", "破間川ダム", "広神ダム", "三国川ダム", "正善寺ダム", "三面ダム", "奥三面ダム", "胎内川ダム", "奥胎内ダム", "内の倉ダム", "加治川治水ダム", "鯖石川ダム", "久知川ダム", "新保川ダム", "大野川ダム", "柿崎川ダム", "大谷ダム"]
			}
		},
		{
			"ken": "富山県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1601/ipDamGaikyo_pc1601_pg1_fw0.html",
				"dam_name": ["宇奈月ダム", "室牧ダム", "熊野川ダム", "久婦須川ダム", "和田川ダム", "利賀川ダム", "境川ダム", "刀利ダム", "子撫川ダム", "城端ダム", "臼中ダム", "朝日小川ダム", "角川ダム", "上市川ダム", "上市川第2ダム", "白岩川ダム", "舟川ダム", "布施川ダム", "大谷ダム"]
			}
		},
		{
			"ken": "石川県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1701/ipDamGaikyo_pc1701_pg1_fw0.html",
				"dam_name": ["手取川ダム", "赤瀬ダム", "犀川ダム", "辰巳ダム", "内川ダム", "新内川ダム", "我谷ダム", "九谷ダム", "小屋ダム", "八ヶ川ダム"]
			}
		},
		{
			"ken": "長野県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2001/ipDamGaikyo_pc2001_pg1_fw0.html",
				"dam_name": ["浅川ダム", "大町ダム", "松川ダム", "片桐ダム", "小渋ダム", "美和ダム", "高遠ダム", "横川ダム", "味噌川ダム", "牧尾ダム(利水)"]
			}
		},
		{
			"ken": "岐阜県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2101/ipDamGaikyo_pc2101_pg1_fw0.html",
				"dam_name": ["丹生川ダム", "御母衣ダム(利水)", "小里川ダム", "丸山ダム", "中野方ダム", "阿木川ダム", "岩屋ダム", "大ヶ洞ダム", "横山ダム", "徳山ダム", "阿多岐ダム", "岩村ダム", "打上ダム(利水)"]
			}
		},
		{
			"ken": "静岡県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2201/ipDamGaikyo_pc2201_pg1_fw0.html",
				"dam_name": ["長島ダム", "佐久間ダム", "秋葉ダム", "船明ダム", "太田川ダム", "奥野ダム", "青野大師ダム"]
			}
		},
		{
			"ken": "愛知県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2301/ipDamGaikyo_pc2301_pg1_fw0.html",
				"dam_name": ["新豊根ダム", "宇連ダム", "矢作ダム", "木曽川大堰(利水)"]
			}
		},
		{
			"ken": "三重県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2401/ipDamGaikyo_pc2401_pg1_fw0.html",
				"dam_name": ["君ヶ野ダム", "蓮ダム", "宮川ダム", "三瀬谷ダム(発電)", "安濃ダム(利水)", "比奈知ダム(機構)", "滝川ダム", "青蓮寺ダム(機構)", "小森ダム(電発)"]
			}
		},
		{
			"ken": "福井県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/1801/ipDamGaikyo_pc1801_pg1_fw0.html",
				"dam_name": ["九頭竜ダム", "龍ヶ鼻ダム", "広野ダム", "二ツ屋分水堰", "永平寺ダム", "浄土寺川ダム", "浄土寺川ダム(貯砂ダム)", "笹生川ダム", "真名川ダム", "雲川ダム(利水)", "桝谷ダム", "河内川ダム", "大津呂ダム"]
			}
		},
		{
			"ken": "滋賀県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2501/ipDamGaikyo_pc2501_pg1_fw0.html",
				"dam_name": ["青土ダム", "日野川ダム", "永源寺ダム(利水)", "宇曽川ダム", "姉川ダム", "余呉湖", "石田川ダム", "天川ダム"]
			}
		},
		{
			"ken": "京都府", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2601/ipDamGaikyo_pc2601_pg1_fw0.html",
				"dam_name": ["和知ダム(利水)", "大野ダム", "日吉ダム(機構)", "天ヶ瀬ダム", "高山ダム(機構)", "畑川ダム"]
			}
		},
		{
			"ken": "大阪府", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2701/ipDamGaikyo_pc2701_pg1_fw0.html",
				"dam_name": ["箕面川ダム", "狭山池ダム", "滝畑ダム(利水)"]
			}
		},
		{
			"ken": "兵庫県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2801/ipDamGaikyo_pc2801_pg1_fw0.html",
				"dam_name": ["三宝ダム", "栗柄ダム", "一庫ダム(機構)", "大路ダム", "与布土ダム", "但東ダム", "権現ダム", "平荘ダム", "川代ダム", "大川瀬ダム", "呑吐ダム", "糀屋ダム", "みくまりダム", "安富ダム", "引原ダム", "青野ダム", "生野ダム", "菅生ダム", "安室ダム", "金出地ダム", "長谷ダム", "石井ダム", "天王ダム", "大日ダム", "分水堰", "牛内ダム", "成相ダム", "北富士ダム", "諭鶴羽ダム"]
			}
		},
		{
			"ken": "奈良県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/2901/ipDamGaikyo_pc2901_pg1_fw0.html",
				"dam_name": ["布目ダム(機構)", "室生ダム(機構)", "初瀬ダム", "大門ダム", "天理ダム", "白川ダム", "岩井川ダム", "大滝ダム", "猿谷ダム(利水)", "九尾ダム(利水)", "川迫ダム(利水)", "二津野ダム(電発)", "風屋ダム(電発)", "池原ダム(電発)", "坂本ダム(電発)"]
			}
		},
		{
			"ken": "和歌山県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3001/ipDamGaikyo_pc3001_pg1_fw0.html",
				"dam_name": ["七色ダム(電発)", "二川ダム", "椿山ダム", "七川ダム", "広川ダム", "切目川ダム"]
			}
		},
		{
			"ken": "鳥取県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3101/ipDamGaikyo_pc3101_pg1_fw0.html",
				"dam_name": ["殿ダム", "賀祥ダム", "菅沢ダム"]
			}
		},
		{
			"ken": "島根県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3201/ipDamGaikyo_pc3201_pg1_fw0.html",
				"dam_name": ["尾原ダム", "布部ダム", "山佐ダム", "志津見ダム", "八戸ダム", "大長見ダム", "御部ダム", "三瓶ダム", "浜田ダム", "第二浜田ダム", "益田川ダム", "嵯峨谷ダム", "笹倉ダム", "大峠ダム", "銚子ダム", "美田ダム", "清瀧ダム", "津田川ダム"]
			}
		},
		{
			"ken": "岡山県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3301/ipDamGaikyo_pc3301_pg1_fw0.html",
				"dam_name": ["苫田ダム", "八塔寺川ダム", "津川ダム", "旭川ダム", "湯原ダム", "竹谷ダム", "河平ダム", "鳴滝ダム", "河本ダム", "千屋ダム", "新成羽川ダム", "黒鳥ダム", "三室川ダム", "高瀬川ダム", "楢井ダム"]
			}
		},
		{
			"ken": "広島県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3401/ipDamGaikyo_pc3401_pg1_fw0.html",
				"dam_name": ["土師ダム", "灰塚ダム", "庄原ダム", "三川ダム", "八田原ダム", "野間川ダム", "四川ダム", "御調ダム", "山田川ダム", "温井ダム", "小瀬川ダム", "弥栄ダム", "福富ダム", "椋梨ダム", "魚切ダム", "梶毛ダム", "野呂川ダム", "仁賀ダム"]
			}
		},
		{
			"ken": "山口県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3501/ipDamGaikyo_pc3501_pg1_fw0.html",
				"dam_name": ["小瀬川ダム", "佐波川ダム", "島地川ダム", "阿武川ダム", "菅野ダム", "向道ダム", "御庄川ダム", "生見川ダム", "中山川ダム", "荒谷ダム", "一の坂ダム", "厚東川ダム", "木屋川ダム", "湯免ダム", "黒杭川ダム", "川上ダム", "末武川ダム", "今富ダム", "大坊ダム", "見島ダム", "屋代ダム", "真締川ダム"]
			}
		},
		{
			"ken": "徳島県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3601/ipDamGaikyo_pc3601_pg1_fw0.html",
				"dam_name": ["池田ダム(機構)", "宮川内ダム", "川口ダム(利水)", "長安口ダム", "正木ダム", "福井ダム"]
			}
		},
		{
			"ken": "香川県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3701/ipDamGaikyo_pc3701_pg1_fw0.html",
				"dam_name": ["内場ダム", "五名ダム", "大川ダム", "前山ダム", "長柄ダム", "府中ダム(利水)", "吉田ダム", "門入ダム", "五郷ダム", "粟井ダム", "粟地ダム", "殿川ダム", "千足ダム", "大内ダム", "田万ダム", "内海ダム"]
			}
		},
		{
			"ken": "愛媛県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3801/ipDamGaikyo_pc3801_pg1_fw0.html",
				"dam_name": ["柳瀬ダム", "新宮ダム(機構)", "富郷ダム(機構)", "銅山川ダム群", "石手川ダム", "野村ダム", "鹿野川ダム", "黒瀬ダム", "鹿森ダム", "玉川ダム", "台ダム", "須賀川ダム", "山財ダム"]
			}
		},
		{
			"ken": "高知県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/3901/ipDamGaikyo_pc3901_pg1_fw0.html",
				"dam_name": ["早明浦ダム(機構)", "永瀬ダム", "大渡ダム", "桐見ダム", "中筋川ダム", "横瀬川ダム", "鏡ダム", "坂本ダム", "鎌井谷ダム", "以布利川ダム"]
			}
		},
		{
			"ken": "福岡県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4001/ipDamGaikyo_pc4001_pg1_fw0.html",
				"dam_name": ["犬鳴ダム", "力丸ダム", "福智山ダム", "陣屋ダム", "藤波ダム", "江川ダム", "小石原川ダム", "山神ダム", "寺内ダム", "日向神ダム", "油木ダム", "北谷ダム", "ます渕ダム", "鳴淵ダム", "南畑ダム", "瑞梅寺ダム", "猪野ダム", "牛頸ダム"]
			}
		},
		{
			"ken": "佐賀県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4101/ipDamGaikyo_pc4101_pg1_fw0.html",
				"dam_name": ["平木場ダム", "厳木ダム", "本部ダム", "狩立・日ノ峯ダム", "伊岐佐ダム", "井手口ダム", "矢筈ダム", "嘉瀬川ダム", "都川内ダム", "有田ダム", "竜門ダム", "深浦ダム", "岩屋川内ダム", "横竹ダム", "中木庭ダム"]
			}
		},
		{
			"ken": "熊本県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4301/ipDamGaikyo_pc4301_pg1_fw0.html",
				"dam_name": ["下筌ダム", "竜門ダム", "緑川ダム", "市房ダム", "石打ダム", "氷川ダム", "上津浦ダム", "亀川ダム", "路木ダム"]
			}
		},
		{
			"ken": "大分県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4401/ipDamGaikyo_pc4401_pg1_fw0.html",
				"dam_name": ["耶馬溪ダム", "松原ダム", "大山ダム", "ななせダム", "野津ダム", "稲葉ダム", "黒沢ダム", "床木ダム", "安岐ダム", "行入ダム", "青江ダム"]
			}
		},
		{
			"ken": "宮崎県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4501/ipDamGaikyo_pc4501_pg1_fw0.html",
				"dam_name": ["祝子ダム", "松尾ダム", "渡川ダム", "綾南ダム", "瓜田ダム", "岩瀬ダム", "綾北ダム", "田代八重ダム", "立花ダム", "長谷(補助)ダム", "広渡ダム", "日南ダム", "沖田ダム"]
			}
		},
		{
			"ken": "鹿児島県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4601/ipDamGaikyo_pc4601_pg1_fw0.html",
				"dam_name": ["鶴田ダム", "川辺ダム", "西之谷ダム", "大和ダム"]
			}
		},
		{
			"ken": "沖縄県", "Children": {
				"url": "https://www.river.go.jp/kawabou/html/list/7/4701/ipDamGaikyo_pc4701_pg1_fw0.html",
				"dam_name": ["福地ダム", "新川ダム", "安波ダム", "普久川ダム", "辺野喜ダム", "漢那ダム", "羽地ダム", "倉敷ダム", "金武ダム", "座間味ダム", "金城ダム", "我喜屋ダム", "大保ダム", "儀間ダム"]
			}
		}
	]

タグ

2021, Children, CSV, go, HP, html, https, jp, kawabou, ken, lis, quot, river, url, www, サーバー, ダム, ため, データ, どこ, ところ, ファン, ブロック, 一部, 中止, , , 以前, 全国, 北海道, , 取得, 可能性, 可視, 各地, 国土交通省, 好評, 構造, 正直, 状況, , 記事, 負荷, 貯水, 追記, 道北, , 高知県,

Yahoo japanサイトのコロナ情報リンク集です。好評に付きVer2。

2020.12.21

Logging

Yahoo japanサイトのコロナ情報リンク集です。好評に付きバージョン2を
作成しました。見た目はこんな感じです。県名をクリックするとYahoo!japanのコロナサイトの
画面が開きます(遷移します)。ほんとは、Yahoo!データをウェブスクレイピングしようと思ったのですが、別にそこまでする必要はないかなと思いとどまり、いまに至っています。
データは国もJSONで公開していますのでわざわざ作ることもないのですけど、自分が見やすいように、時間があれば改善していきます。

追記:時間があったので改善しました。

https://zip358.com/tool/COVID-19-japan/

var ken_json = {};
fetch("./assets/js/ken47.json").then(response => response.json()).then((data)=>{
	let ken = [];
	for (const key in data) {
		ken.push("<a href='#' onClick='c19(\"" + "https://hazard.yahoo.co.jp/article/covid19" + data[key].roman +"\")' onmouseover='c19_f(\"" + data[key].roman.toUpperCase() + "\",\"red\")'' onmouseout='c19_f(\"" + data[key].roman.toUpperCase() + "\",\"#fff\")'>" + data[key].name + "</a>");
	}
	document.getElementById("covid19-link-list").innerHTML = ken.join(",");
	for (const key in data) {
		document.getElementById(data[key].roman.toUpperCase()).setAttribute("fill","#fff");
	}
});

function c19(url){
	window.open(url,"_blank");
}
function c19_f(kenid,color){
	document.getElementById(kenid).setAttribute("fill",color);
}	
{
	"1": {
		"name": "北海道",
		"roman": "hokkaido"
	},
	"2": {
		"name": "青森",
		"roman": "aomori"
	},
	"3": {
		"name": "岩手",
		"roman": "iwate"
	},
	"4": {
		"name": "宮城",
		"roman": "miyagi"
	},
	"5": {
		"name": "秋田",
		"roman": "akita"
	},
	"6": {
		"name": "山形",
		"roman": "yamagata"
	},
	"7": {
		"name": "福島",
		"roman": "fukushima"
	},
	"8": {
		"name": "茨城",
		"roman": "ibaraki"
	},
	"9": {
		"name": "栃木",
		"roman": "tochigi"
	},
	"10": {
		"name": "群馬",
		"roman": "gunma"
	},
	"11": {
		"name": "埼玉",
		"roman": "saitama"
	},
	"12": {
		"name": "千葉",
		"roman": "chiba"
	},
	"13": {
		"name": "東京",
		"roman": "tokyo"
	},
	"14": {
		"name": "神奈川",
		"roman": "kanagawa"
	},
	"15": {
		"name": "新潟",
		"roman": "niigata"
	},
	"16": {
		"name": "富山",
		"roman": "toyama"
	},
	"17": {
		"name": "石川",
		"roman": "ishikawa"
	},
	"18": {
		"name": "福井",
		"roman": "fukui"
	},
	"19": {
		"name": "山梨",
		"roman": "yamanashi"
	},
	"20": {
		"name": "長野",
		"roman": "nagano"
	},
	"21": {
		"name": "岐阜",
		"roman": "gifu"
	},
	"22": {
		"name": "静岡",
		"roman": "shizuoka"
	},
	"23": {
		"name": "愛知",
		"roman": "aichi"
	},
	"24": {
		"name": "三重",
		"roman": "mie"
	},
	"25": {
		"name": "滋賀",
		"roman": "shiga"
	},
	"26": {
		"name": "京都",
		"roman": "kyoto"
	},
	"27": {
		"name": "大阪",
		"roman": "osaka"
	},
	"28": {
		"name": "兵庫",
		"roman": "hyogo"
	},
	"29": {
		"name": "奈良",
		"roman": "nara"
	},
	"30": {
		"name": "和歌山",
		"roman": "wakayama"
	},
	"31": {
		"name": "鳥取",
		"roman": "tottori"
	},
	"32": {
		"name": "島根",
		"roman": "shimane"
	},
	"33": {
		"name": "岡山",
		"roman": "okayama"
	},
	"34": {
		"name": "広島",
		"roman": "hiroshima"
	},
	"35": {
		"name": "山口",
		"roman": "yamaguchi"
	},
	"36": {
		"name": "徳島",
		"roman": "tokushima"
	},
	"37": {
		"name": "香川",
		"roman": "kagawa"
	},
	"38": {
		"name": "愛媛",
		"roman": "ehime"
	},
	"39": {
		"name": "高知",
		"roman": "kochi"
	},
	"40": {
		"name": "福岡",
		"roman": "fukuoka"
	},
	"41": {
		"name": "佐賀",
		"roman": "saga"
	},
	"42": {
		"name": "長崎",
		"roman": "nagasaki"
	},
	"43": {
		"name": "熊本",
		"roman": "kumamoto"
	},
	"44": {
		"name": "大分",
		"roman": "oita"
	},
	"45": {
		"name": "宮崎",
		"roman": "miyazaki"
	},
	"46": {
		"name": "鹿児島",
		"roman": "kagoshima"
	},
	"47": {
		"name": "沖縄",
		"roman": "okinawa"
	}
}

タグ

19, 2, 358, 47, assets, com, covid, fetch, gt, https, JAPAN, JS, json, ken, quot, response, then, tool, var, ver, www, Yahoo, zip, ウェブ, クリック, こと, コロナ, サイト, スク, そこ, データ, バージョン, ピング, ほんと, リンク集, レイ, わざわざ, 作成, 公開, , 好評, 必要, 情報, 感じ, 改善, 時間, 画面, 県名, 自分, 見た目, 追記, 遷移,

まともな考えが消えかけている。

2020.08.09

Logging

暑い日々が続きますね、高知県では今日は雨か曇りらしいです。久しぶりに雨なので一コマ漫画(絵)をお休みしてYOUTUBEチャンネルの紹介です。(※追記:めちゃめちゃ晴天ですね)

YOUTUBEで茂木健一郎さんが語っているのが動画がこの頃伸びてきているのが救いだなと思う。まだまともな考えが少なからずいるのは救いかと思うけど・・・。

軽薄な日本にサヨウナラ

やっぱ社会ではそういうのが、受けているだろうなと思う今日このごろですね。茂木健一郎さんはパロディーからランニング、Vlogまでいろいろな事を公開しています。自分はいろいろな知識を解説していることや対談している動画が好きで見ています。

#自動運転車 の倫理問題

茂木健一郎さんのYOUTUBEチャンネル登録はこちらから
https://www.youtube.com/channel/UCIvVJaNmUFJ8MKpyBfgslCg

タグ

Vlog, youtube, いろいろ, お休み, こちら, こと, チャンネル, パロディー, まとも, ランニング, 一コマ, 久しぶり, , 今日, 今日このごろ, 公開, 動画, 対談, 日々, 晴天, 漫画, 登録, 知識, 社会, 紹介, , 自分, 茂木健一郎, 解説, 追記, , , 高知県,

YOUTUBER、松嶋初音さんのはつねちゃんねる

2020.07.12

Logging

松嶋初音さんのはつねちゃんねるを知ったのはdrikinさんとのコラボ対談です、それを見ていてこの人、伸びそうだなと思ったので紹介します。

【ガレキ】インドで生きてるインドサイを頑張って再現したんだ。

実は有名な人なのかな?、YOUTUBE概要欄にはGオフィス所属の松嶋初音と記載されています、そういうこともありGオフィスを調べてみました。結果、芸能人だという事が判明。ドリキンさん、ついに芸能人の方と絡むようになってしまったのか・・・・。

「松嶋初音さんとシネマティック雑談!」第991話

因みにドリキンさんは知っていたけれど、松嶋初音さん知らなかったのはかなり重症なのかな・・・?、この頃、TVは見ないに等しいのでまったく知りませんでした。ドリキンさんとの対談を聞いているとこのひと(松嶋初音さん)、自分持っているなという気がしてこのひと、良いなと思いました。

追記;書きながら思い出しました、このひとファイナルファンタジー7リメイク(FF7R)でレビューしていた人だということを・・・。そしてデスストを語っていた人だなということを・・・ごめんなさい間接的に知っていました。

【松嶋初音】 デスストランディングをプレイしてる全ての人に贈るメッセージ ep786 【ネタバレなし】

最後にチャンネル登録はこちら(はつねちゃんねる)
https://www.youtube.com/channel/UCUSncLw7VuhfjztgDpiXdLQ/about

タグ

-LDR, , 7, 8, com, drikin, https, JCIvA, TV, watch, www, youtube, YOUTUBER, オフィス, かなり, こと, コラボ, それ, チャンネル, ドリキン, はつね, ひと, ファイナルファンタジー, リメイ, , , 判明, 対談, 所属, , 有名, 松嶋初音, 概要, , , 紹介, 結果, 自分, 芸能人, 記載, 追記, 重症, ,

bitflyer.comでAPI使ってみたよ、遅っいぞ。

2020.06.05

Logging

bitflyer.comでAPI使ってみたよ、遅っいぞ。自分の回線が悪いのかわからないけれど、データの結果が返却されるまで2?4分ぐらい時間がかかるのです、レスポンスが遅い恐ろしく遅いのだ。
まるでオイラのようだ(´・ω・`)。

ccxtとかも使ってみたら・・アレ大丈夫?
PHPで再度を自作してみた「body部分は間違っているかも。いや間違っているよ・・・?。」とぶつぶつ言いながら制作。

追記:
PHPのレスポンスが遅いのは、LinuxのOSをゴニョゴニョしたからでした。OS入れ直して再度コードを走らすと普通にレスポンスが返ってきました、、、。

返ってきたときには「ほんと、何やねん」とボヤきました?。

PHPのソースコードを記載します。

<?php
date_default_timezone_set('Asia/Tokyo');
class Api_Bitflyer_Class
{
    var $basic_url = "https://api.bitflyer.com";
    public function __construct()
    {
        require_once __DIR__."/../common/init.php";
    }
    /**
     * @param timestamp $timestamp
     * @param string $path
     * @param string $method
     * @param string $body
     */  
    public function api_set($timestamp = "", $path = "/v1/me/getbalance", $method = "GET", $body = "")
    {
        $url = $this->basic_url . $path;
        $data = strtolower($method) === "get" ? $timestamp . $method . $path : $timestamp . $method . $path . (function ($body) {
            if (!is_array($body)) {
                $body = [];
            }
            return json_encode($body);
        })($body);
        $access_singn = hash_hmac("sha256", $data, APISECRET);
        $headers = [
            'ACCESS-KEY: ' . APIKEY,
            'ACCESS-TIMESTAMP: ' . $timestamp,
            'ACCESS-SIGN: ' . $access_singn,
            'Content-Type: application/json',
        ];
        return new class($url, $method, $headers, $body)
        {
            var $url = "";
            var $method = "";
            var $headers = "";
            var $body = "";
            /**
             * @param string $url
             * @param string $method
             * @param string $headers
             * @param string $body
             */              
            public function __construct($url, $method, $headers, $body)
            {
                $this->url = $url;
                $this->method = $method;
                $this->headers = $headers;
                $this->body = $body;
            }
            public function api_run()
            {
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $this->url);
                curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $this->method);
                curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);
                strtolower($this->method) == "post" ? curl_setopt($curl, CURLOPT_POSTFIELDS, $this->body) : "";
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                $response             = curl_exec($curl);
                // $response_info        = curl_getinfo($curl);
                // $response_code        = $response_info['http_code'];
                // $response_header_size = $response_info['header_size'];
                curl_close($curl);
                print date("Y/m/d H:i:s");
                var_dump(json_decode($response));
                // var_dump($response_code);
                // var_dump($response_header_size);
            }
        };
    }
}

$Api_Bitflyer_Class = new Api_Bitflyer_Class();
$Api_Bitflyer_Class->api_set(time(),"/v1/me/getbalance","GET","")->api_run();

PHPとは別にnode.jsでリアルタイムAPIを使用した動画を貼っときます。

bitflyerAPI_PHPcode

なお、よく読んだほうが良いAPI Documentation

bitFlyer Lightning では、HTTP API と Realtime API の 2 種類の API を提供しています。

尚、ビットコイン高くて買えないので、ビットコインの売買したい知人は格安で自動売買のシステム作りますよ。

タグ

2, 39, 4, API, Asia, bitFlyer, body, ccxt, class, com, date, default, Linux, lt, OS, php, set, timezone, Tokyo, アレ, おいら, コード, ゴニョゴニョ, ソース, データ, とき, ほんと, レスポンス, , 再度, 制作, 回線, 時間, 普通, 結果, 自作, 自分, 記載, 返却, 追記, , 部分,

1%の努力を読みました。著:西村博之 氏

2020.03.11

Logging

1%の努力を読みました。著:西村博之 氏、二、三日で読むつもりが時間の合間、合間に読んだので読み終えるのに一週間ほどかかりましたが、前からいっているように賢い市民です。メディアのイメージとは怖いものだと思います。実際、本を読むと人柄でてます。自分のイメージは賢い市民だと捉えています。

よくある勝ちに行けとか言うアオリ系の本ではないし洗脳みたいな自己啓発本でもない。何ていうか、自分はこう生きたけど「どうよ」と言う感じに書かれていて良かったです。生きるスキルの底上げのような本ではないかなと思います。読んでよかったなと思える本です、電子書籍も本もそれほどお高くないからなお良いですね。ちなみに早い人なら半日もあれば読了します。

追記:ぺんぎん村の事も最後の方に書いています。

タグ

, アオリ, イメージ, スキル, つもり, ペンギン, メディア, もの, , , , , , 人柄, , 努力, 半日, 合間, 啓発, 実際, 市民, 底上げ, 感じ, , 時間, 書籍, 最後, , , , 洗脳, 自分, 自己, , 西村博之, 読了, 追記, 電子,

レンタルサーバーの帯域幅を増やしたい

2019.12.26

Logging

浜辺美波VS池田エライザの妖艶対決? 「賭ケグルイ」OP映像特別編第1弾が公開

レンタルサーバーの帯域幅を増やしたい、そうする事によって表示速度はかなり変わる、特にモバイルファーストにはかなり良いと思うのだ。

レタリング処理能力が上がるのと帯域幅を増やすことによってモバイルファーストの評価は上がるだけど
共有のレンタルサーバーは帯域幅を上げることはすら出来ない仕様になっているところが多い。

WordPressを高速に動かすクサナギとかいうやつが良いのだが・・・。
それでもそんなに評価が上がるわけでもない。

WordPress専用サーバなどを試したことがないので試してみたいのだが、自分が思うにはあまりレタリング処理は
変わらないのではないかと思っている。

悩ましい、収入が安定すれば良いサーバに変えてみようとか密かに思っています。

やはりモバイルファーストってかなり影響するよね。
追記2021:因みにカゴヤ・ジャパンのレンタルサーバーだと帯域幅を増やせますよ。

Japanese Webmaster Office Hours(ウェブマスター オフィスアワー 2016 年 12 月 7 日)

タグ

2021, https, WordPress, www, You, かごや, かなり, クサナギ, こと, サーバ, サーバー, ジャパン, ところ, ファースト, モバイル, やつ, レタリング, レンタル, わけ, , 仕様, 共有, 処理, 収入, 安定, 専用, 帯域, , 影響, 能力, 自分, 表示, 評価, 追記, 速度, 高速,

眩(くらら)?北斎の娘?が良かったー!

2019.11.09

Logging

眩(くらら)?北斎の娘?というドラマがNHKで放送されていたのですが
これ、かなり大好きな作品です。内容が良いです、ほんとに。

モノづくりをしている=クリエイターがみると
共感できるところがあるじゃないかなとそんな内容が散りばめられています。

そんな 眩(くらら)?北斎の娘? がBlu-rayで発売されていました。
やっぱりなと、発売してほしいという人がいるだろうなと
自分が検索したときにはNHKオンデマンドで視聴も出来なかったのですが
いまでは視聴も出来るようになっています。

尚、葛飾北斎の娘役で宮崎あおいさんが出演しています。

7月27日発売!眩(くらら)~北斎の娘~ PR動画

NHKオンデマンド: https://www.nhk-ondemand.jp/goods/G2017081436SA000/

追記2021:眩(くらら)?北斎の娘?を購入しました。

タグ

000, 2017081436, 2021, Blu-ray, goods, https, jp, NHK, nhk-ondemand, SA, www, あおい, いま, オンデマンド, かなり, くらら, クリエイター, これ, たー, とき, ところ, ドラマ, ほんと, もの, , 作品, 共感, 内容, 出演, 北斎, , 娘役, 宮崎, 放送, 検索, 発売, , 自分, 葛飾北斎, 視聴, 購入, 追記,

高知県のダム貯水率をグラフ化してみた。

2019.09.21

Logging

高知県のダム貯水率をグラフ化してみた。
親戚にダムに勤めている人がいるのがきっかけで貯水率って
HPで表示させているのかなという事で調べてみました。
結果、かなり古いデザインサイトが現れた。
何とも懐かしい気持ちになりました。
そこでこの表からグラフ化してみたいなとか思って
ゴニョゴニョ作ってみた。
ちなみにソースコードが変わると
抜き取り出来なくなります。
追記:やはり変更されていました2へ続く
ソースコードを貼っときます。
ajaxとPHPを使用してます、XPathで貯水率だけ抜き取ってます。
サンプルサイト
https://zip358.com/tool/demo6/index.html

<?php
$html = file_get_contents("高知県のダム情報のURL");
$html = mb_convert_encoding($html,"UTF-8","SJIS");
$dom = new DOMDocument();
$html = mb_convert_encoding($html, "HTML-ENTITIES", 'UTF-8');
@$dom->loadHTML($html,LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$ary=array(
    "nagase",
    "kamaidani",
    "kagami",
    "sameura",
    "kirimi",
    "sakamoto",
    "oodo",
    "nakasugawa",
    "iburigawa"
);
for($i=3;$i<=11;$i++){
    foreach ($xpath->query("/html/body/form/div[2]/table/tr/td/table/tr[$i]/td[7]") as $node) {
        $r[] = preg_replace("/x{00a0}/u","",$node->textContent);
    }
}
foreach ($r as $key => $value) {
    $obj[$ary[$key]] = $value;
}
print json_encode($obj);
$(function(){
    dam();
    //setInterval(dam,9999)
});
function dam(){
    $.ajax({
        url : './dam.php',
        dataType : 'json',
        success : function(obj){
            $("#nagase").attr( "style","width:"+ parseInt(obj.nagase) +"%");
            $("#kamaidani").attr( "style","width:"+ parseInt(obj.kamaidani) +"%");
            $("#kagami").attr( "style","width:"+ parseInt(obj.kagami) +"%");
            $("#sameura").attr( "style","width:"+ parseInt(obj.sameura) +"%");
            $("#kirimi").attr( "style","width:"+ parseInt(obj.kirimi) +"%");
            $("#sakamoto").attr( "style","width:"+ parseInt(obj.sakamoto) +"%");
            $("#oodo").attr( "style","width:"+ parseInt(obj.oodo) +"%");
            $("#nakasugawa").attr( "style","width:"+ parseInt(obj.nakasugawa) +"%");
            $("#iburigawa").attr( "style","width:"+ parseInt(obj.iburigawa) +"%");
            $("#nagase").attr( "aria-valuenow",parseInt(obj.nagase));
            $("#kamaidani").attr( "aria-valuenow",parseInt(obj.kamaidani));
            $("#kagami").attr( "aria-valuenow",parseInt(obj.kagami));
            $("#sameura").attr( "aria-valuenow",parseInt(obj.sameura));
            $("#kirimi").attr( "aria-valuenow",parseInt(obj.kirimi));
            $("#sakamoto").attr( "aria-valuenow",parseInt(obj.sakamoto));
            $("#oodo").attr( "aria-valuenow",parseInt(obj.oodo));
            $("#nakasugawa").attr( "aria-valuenow",parseInt(obj.nakasugawa));
            $("#iburigawa").attr( "aria-valuenow",parseInt(obj.iburigawa));
            $("#nagase").text(obj.nagase + "%");
            $("#kamaidani").text(obj.kamaidani + "%");
            $("#kagami").text(obj.kagami + "%");
            $("#sameura").text(obj.sameura + "%");
            $("#kirimi").text(obj.kirimi + "%");
            $("#sakamoto").text(obj.sakamoto + "%");
            $("#oodo").text(obj.oodo + "%");
            $("#nakasugawa").text(obj.nakasugawa + "%");
            $("#iburigawa").text(obj.iburigawa + "%");
        },
        error: function(obj){
            alert("error");
        }
    });
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>高知県のダム貯水率</title>
    <script src="../jquery/jquery-3.4.1.js"></script>
    <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
    <script src="./js/dam.js"></script>
    <style>
        body{
            background-color: #3e4654;
            color: aliceblue;
        }
    </style>
</head>
<body class="d-flex flex-column h-100">
    <main role="main" class="flex-shrink-0">
        <div class="container">
            <table class="table table-dark">
                <tr>
                    <td style="width:15%">
                        <p>永瀬ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress"  style="width:100%">
                            <div id="nagase" class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>鎌井谷ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kamaidani" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>鏡ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kagami" class="progress-bar progress-bar-striped progress-bar-animated bg-info" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>早明浦ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="sameura" class="progress-bar progress-bar-striped progress-bar-animated bg-secondary" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>桐見ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="kirimi" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>坂本ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="sakamoto" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>大渡ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="oodo" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>中筋川ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="nakasugawa" class="progress-bar progress-bar-striped progress-bar-animated bg-dark" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td style="width:15%">
                        <p>以布利川ダム</p>
                    </td>
                    <td style="width:85%">
                        <div class="progress">
                            <div id="iburigawa" class="progress-bar progress-bar-striped progress-bar-animated bg-warning" role="progressbar" aria-valuenow="20"
                                aria-valuemin="0" aria-valuemax="100" style="width:20%"></div>
                        </div>
                    </td>
                </tr>
            </table>
        </div>
    </main>
    <footer class="footer mt-auto py-3">
        <div class="container">
            <span class="text-muted">©zip358.com</span>
        </div>
    </footer>
</body>
</html>

タグ

2, 358, 6, 8, ajax, com, contents, convert, demo, encoding, file, GET, HP, html, https, index, lt, mb, php, SJIS, tool, url, UTF-, XPath, zip, かなり, きっかけ, グラフ, コード, ゴニョゴニョ, サイト, サンプル, ソース, そこ, ダム, デザイン, , , , 使用, 変更, 情報, 気持ち, 結果, , 表示, 親戚, 貯水, 追記, 高知県,

画像をタイル状に分離して一括ダウンロードさせるジェネレーター

2019.09.07

Logging

画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)

追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>画像分離してダウンロード:画像分離ジェネレーター</title>
        <meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="../jquery/jquery-3.4.1.js"></script>
        <link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
        <!-- Global site tag (gtag.js) - Google Analytics -->
        <script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
        <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());

        gtag('config', 'UA-71682075-1');
        </script>        
        <style>
            body{
                background-color: black;
                color: antiquewhite;
            }
            img{
                margin:10!important;
                padding:10!important;
            }       
            #container{
                width: 100%;
            }
            #container img{
                margin:10px;   
            }       
        </style>    
    </head>
    <body>
        <span id="bat"></span><a id="dl"></a>
        <input class="form-control" type="file"></input>
        <div id="container"></div>
        <script>
            $(function(){
                $("[type=file]").on("change",function(){
                    $('#container').html("");
                    $("#bat").html("");
                    console.log($(this));
                    if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
                        alert("ファイル形式エラー");
                        return false;
                    }                        
                    var canvas = document.createElement('canvas');
                    var reader = new FileReader();
                    reader.onload = function(event) {
                        var image = new Image();
                        image.onload = function() {
                            sprite = {width:50,height:50};
                            canvas.width = sprite.width;
                            canvas.height = sprite.height;
                            var ctx = canvas.getContext("2d");                            
                            var x = 0;
                            for(var i=0; i*sprite.height<image.height; i++){
                                for(var j=0; j*sprite.width<image.width; j++){
                                    ctx.drawImage(
                                    image,j*sprite.width,i*sprite.height,
                                    sprite.width,sprite.height,
                                    0,0,
                                    sprite.width,sprite.height
                                    );

                                    var spriteElement = new Image;
                                    spriteElement.src= canvas.toDataURL();
                                    $('#container').append(spriteElement);
                                }
                            }
                            $("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
                        }
                        image.src = event.target.result;                       
                    }
                    reader.readAsDataURL($(this).prop('files')[0]);
                    
                });
            });

            function bat_img(){
                var data = [];
                for(var i=0; i< $("img").length;i++){
                    data.push({"base64":$("img").eq(i).attr("src"),"no":i});
                }
                $.ajax({
                    type: 'POST',
                    url: 'bat_img.php',
                    data:{"obj":data},
                    dataType: 'json'
                }).done(function(obj){

                    if(obj[obj.length - 1 ].chk=="ok"){

                        var link = document.getElementById("dl");
                        link.href = obj[obj.length - 1].zippath;
                        link.download = "zipimg.zip";
                        link.click();

                        var data2 = [];
                        for(var i = 0 ; i < obj.length ; i++){
                            if(i==0){
                                data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
                            }else{
                                data2.push({Path:obj.path,no:obj.no,t:obj.t});
                            }
                            
                        }

                       var del = function(){
                            $.ajax({
                                type: 'POST',
                                url: './bat_del.php',
                                data:{"obj":data2},
                                dataType: 'json'
                            });
                        };
                        del();
                    }
                    });
                }
        </script>
    </body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
    $b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
    $no = (int)$val["no"];
    $t = time();
    $Path = "./bat_img/tmp/$t-$no.png";
    $re = @file_put_contents($Path,$b64);
    if($re){
        $obj[$i]["chk"] = $re?"ok":"ng";
        $obj[$i]["name"] = "$t-$no.png";
        $obj[$i]["path"] = $Path;
        $obj[$i]["no"] = $no;
        $obj[$i]["t"] = $t;
        $i++;
    }
}
$obj[--$i]["zippath"] = zipfile($obj);

print json_encode($obj);


function zipfile($obj){
    $ZipFiles = function($obj){
        foreach($obj as $key=>$val){
           $path[] = $val["path"];
        }
        return $path;
    };
    $Zip_Files = $ZipFiles($obj);
    $zipFileName = time().'_zipimg.zip';

    set_time_limit(0);
    $zip = new ZipArchive();
    $zipTmpDir = './tmp/zip/';
    $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
    if( $result !== true ){ //エラー処理
      echo 'error!';
      exit();
    }
    foreach ($Zip_Files as $key=>$filepath) {
      $filename=basename($filepath);
    // ZIP圧縮するファイルを追加
    // ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
      $zip->addFile($filepath,$filename); 
    }
    //ZIP 出力
    $zip->close();

    return $zipTmpDir.$zipFileName;
}
<?php

unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
    $Path = $val["Path"];
    $no = (int)$val["no"];
    $t = (int)$val["t"];
    
    $cmd = function(){
        foreach(glob("./bat_img/tmp/*") as $file_name){
            $command = "rm -rf " . realpath($file_name);
            exec($command);
        }    
    };
    
    if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
        if(is_file($Path)){
            sleep(30);
            unlink($Path);
        }else{
            $cmd();
        }
    }else{
        $cmd();
    }

}

タグ

, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,

PHPの無名関数の使い道が未だにわからないし…

2019.03.09

Logging

<?php
$mumei = function()
{
    if($cnt = func_get_args())
    {
        foreach($cnt as $key=>$value)
        {
            print func_get_arg($key);
        }
    }
};
$mumei(1,2,3,4,5,6);

わからない、未だにわからないし、使う機会が少ないのだけどいったいどこに使うのか。

追記:
2021年の今、無名関数を使ってコードを書くことが増えました、PHP8になりオブジェクト指向が洗練されてきています。今後、無名関数を使用してコードを書くこともあると思います。因みにJSの方が無名関数でコードを書くことが多いですね。

PHPでの無名関数の問題点は、頻繁に無名関数ばかり使用していると他のエンジニアが読みづらく感じる所かもしれません。特にPHPの昔のバージョンになればなる程、読みづらいと思います。

タグ

, 2, 2021, , 4, 5, 6, 8, arg, args, as, cnt, foreach, FUNC, function, GET, gt, if, JS, key, lt, mumei, php, print, value, エンジニア, オブジェクト, コード, こと, どこ, , 今後, , 使い道, 使用, 問題点, , 指向, , 未だ, 機会, 洗練, 無名, 追記, 関数, 頻繁,

windows10 1809 不具合 Chromeが繋がらない(タイムアウト)

2019.02.02

Logging

windows10アップデート後(1809) 不具合 :Chromeが繋がらない
(タイムアウト)の対応策。
初期化して再度OSを入れ直すのもアレなんで対応策として
スタートアップ時にBatを走らせる事にした。
管理者権限にするBatとネットワークサービスを再起動するBatで
なんとか次期OSのアップデートかGさんが解決してくれる事を
期待しています。
それまでコンピュータ管理のサービスとかも停止せず待っときます。
Batは下記になります。
追記:
累積アップデートで直りましたと言いたいところだけど
一度、累積アップデートの一部を削除して再度、累積アップデートを
適応したら直りました・・・。

net stop CryptSvc
net start CryptSvc
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process (管理者)ネットが繋がらないよ.bat -Verb runas"

タグ

-ExecutionPolicy, -NoProfile, 10, 1809, Bat, Chrome, CryptSvc, net, OS, powershell, start, stop, unres, Windows, アップ, アップデート, あれ, コンピュータ, サービス, スタート, それまで, タイムアウト, ところ, ネットワーク, 一度, 一部, 下記, 不具合, , 停止, 再度, 再起動, 初期, 削除, 対応策, 期待, 権限, 次期, 管理, 管理者, 累積, 解決, 追記, 適応,

javascriptでテキストファイルやCSVファイルを読み込む方法。

2018.11.13

Logging

javascriptでテキストファイルやCSVファイルを読み込む方法は下記になります。
この他に、jqueryだとajaxを使用して読み込む方法などもありますが、あえて
javascriptで記述しています。

rt();
function rt(){
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET","xxx.txt",true);
    xmlHttp.send(null);
    xmlHttp.onload = function(){
        var data = xmlHttp.responseText;
    }
}

追記:アクセス数が結構あるのでサンプルを作りました。
下記のコードをお試しください。
デモページはこちらになります。
https://zip358.com/tool/demo13/ 【改良前】
https://zip358.com/tool/demo13/index2.php 【ちょっと改良】
https://zip358.com/tool/demo13/index3.php 【もうちょっと改良】
https://zip358.com/tool/demo13/index4.php 【もっと改良】
https://zip358.com/tool/demo13/index5.php 【もっともっと改良】2022年度版


※文字の中にカンマ区切りがあるのには対応してません?

"use strict";
var csv = {
	load:async function(filename,id){
		await fetch(filename).then(data=>data.text()).then((res)=>{
			let result = (res.split("\r\n").map(value=>{
				return "<tr>" + (value.split(",").map(val =>{
					return "<td>" + val.slice(1, -1) + "</td>";
				})).join("") +"</tr>";
			})).join("");
			if(result){
				document.getElementById(id).innerHTML = result;
			}
		}).catch(m =>{
			console.error(m);
		});
		return true;
	}
}

csv.load("xxx.csv", "table");
"use strict";
var csv = {
	load:async function(filename,id){
		const res = await fetch(filename);
		const data1 = await res.text();
		let separate1 = /\r\n/;
		let separate2 = ",";
		let data_tbl = (data1.split(separate1)).map(function(value){
			return (value.split(separate2)).map(function(value1){
				return value1.slice(1, -1);
			});
		});
		var str = "";
		for (const key in data_tbl) {
			str+=`<tr>`;
			for (const key1 in data_tbl[key]) {
				str+=`<td>${data_tbl[key][key1]}</td>`;
			}
			str+=`</tr>`;
		}
		document.getElementById(id).innerHTML = str;
		return "OK";
	}
};

csv.load("xxx.csv", "table");
"use strict";
var csv = {
    load: function (filename, id) {
		fetch(filename).then(
			Response=>{
				return Response.text();
			}).then(data1 =>{
                let separate1 = /\r\n/;
                let separate2 = ",";
				let data_tbl = (data1.split(separate1)).map(function(value){
					return (value.split(separate2)).map(function(value1){
						return value1.slice(1, -1);
					});
				});
				var str = "";
				for (const key in data_tbl) {
					str+=`<tr>`;
					for (const key1 in data_tbl[key]) {
						str+=`<td>${data_tbl[key][key1]}</td>`;
					}
					str+=`</tr>`;
				}
				document.getElementById(id).innerHTML = str;
				return "OK";
			}).catch(error=>{
				console.log("失敗しました" + error);
			})
    }
};

csv.load("xxx.csv", "table");
"use strict";
var csv = {
    load: function (filename, id) {
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", filename, true);
        xmlHttp.send(null);
        xmlHttp.onload = function () {
            if (xmlHttp.status === 200) {
                let separate1 = /\r\n/;
                let separate2 = ",";
				let data1 = xmlHttp.responseText;
				let data_tbl = (data1.split(separate1)).map(function(value){
					return (value.split(separate2)).map(function(value1){
						return value1.slice(1, -1);
					});
				});
				var str = "";
				for (const key in data_tbl) {
					str+=`<tr>`;
					for (const key1 in data_tbl[key]) {
						str+=`<td>${data_tbl[key][key1]}</td>`;
					}
					str+=`</tr>`;
				}
				document.getElementById(id).innerHTML = str;
				
            }
        };
    }
};

csv.load("xxx.csv?123", "table");
"use strict";
var csv = {
    load: function (filename, id) {
        var data = {};
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", filename, true);
        xmlHttp.send(null);
        xmlHttp.onload = function () {
            if (xmlHttp.status === 200) {
                let separate1 = /\r\n/;
                let separate2 = ",";
                let data_org = xmlHttp.responseText;
                let data_en = data_org.split(separate1);
                for (let d in data_en) {
                    data[d] = data_en[d].split(separate2);
                }
                //data load
                var t = document.getElementById(id);
                var h = "<table>";
                for (var o in data) {
                    h += "<tr>";
                    for (var r in data[o]) {
                        h += "<td>";
                        h += data[o][r].slice(1, -1);
                        h += "</td>";
                    }
                    h += "</tr>";
                }
                h += "</table>";
                t.innerHTML = h;
            }
        };
    }
};
csv.load("xxx.csv", "table");

タグ

358, ajax, com, CSV, data, function, GET, https, javascript, jquery, new, null, onload, open, quot, responseText, rt, send, too, true, txt, var, xmlHttp, XMLHttpRequest, xxx, zip, アクセス, コード, こちら, サンプル, テキスト, デモ, ファイル, ページ, 下記, , 使用, 方法, 記述, 追記,

プロセス残してSSHログアウトする方法。

2018.11.11

Logging

screenっていうコマンドを使用するとプロセス残してSSHログアウトする事ができます。ちなみにscreenというコマンドは仮想ウィンドが立ち上げる機能です。
まずscreenをインストールし、実行したいコマンドを実行します。
実行すると仮想ウィンドが立ち上がります。
立ち上がっている画面の確認はlsで確認することが可能。
その画面を読み込むときは-r を使用します。
lsで表示されているプロセスID(PID)を記入してコマンドを実行することで再接続することが可能となります。
追記:こんな方法もあります。
Linuxでプロセス残すなら!

yum -y install screen
screen php test.php
screen -ls
screen -r PID

タグ

-r, -y, ID, install, Linux, ls, php, PID, screen, SSH, test, yum, インストール, ウィンド, こと, コマンド, とき, プロセス, ログアウト, , 仮想, 使用, 可能, 実行, 接続, 方法, 機能, 画面, 確認, 表示, 記入, 追記,

jQueryの基礎1

2018.11.11

Logging

世の中、javascriptへの原点回帰が進んでいますが、だからといって、jqueryが無くなるかといえばそうでもない気がします。トイウコトデ、jqueryの基礎的なデモページを作成しました。
ご参考程度どうぞ。これから毎週1回以上、プログラムのデモ的な内容をUPしていきます。自分の勉強や復習の意味合いも兼ねています。プログラム言語はPHP、JS、C#が主の掲載となります。

追記:2021年、jqueryは使わなくなってきています、そのうち使わなくなる可能性があります。
https://zip358.com/tool/demo1/demo1.php

$(function () {
	$(".alert.alert-danger").html("未記入です");
	$("input").keyup(function () {
		if ($(this).val()) {
			$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
		} else {
			$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
		}
	});
	$("input").blur(function () {
		if ($(this).val()) {
			$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
		} else {
			$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
		}
	});
	$("input").focus(function () {
		if ($(this).val()) {
			$(".alert.alert-danger").eq($("input").index(this)).html($(this).val());
		} else {
			$(".alert.alert-danger").eq($("input").index(this)).html("未記入です");
		}
	});
});

タグ

, 2021, alert, alert-danger, eq, function, html, if, input, javascript, jquery, JS, keyup, php, quot, this, UP, val, うち, これ, ご参考, デモ, トイウコトデ, プログラム, ページ, , , 作成, 内容, 勉強, 原点, 可能性, 回帰, 基礎, 復習, 意味合い, 掲載, 毎週, , 自分, 言語, 記入, 追記,

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法。

2018.11.08

Logging

さくらレンタルサーバーとかで制限以上のクロンタブ(crontab)を使う方法
10年ぐらいまえのコードを見直して改善したコードが下記になります。
10年前はクラスを使わない方法で構築したのだけど、今回はクラスの概念を
使って構築。ここ何年かで自分のコーディングの技術は上がっているかといえば
そうでもないですが、昔よりかは技術の幅は広がっていると思いたいw
※qiita日付は数年前にUPしたのですけど、コード自体は10年前のコードです。

追記:2022/10/08 修正:詳しくはコチラ
https://qiita.com/question909/items/8f1df9b62ab4fba76243

<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}

タグ

08, 10, 2022, 39, 5, Asia, class, cron, crontab, date, default, function, if, lt, obj, php, public, qiita, set, timezone, Tokyo, UP, , クラス, クローン, クロン, コーディング, コード, ここ, コチラ, サーバー, さくら, タブ, まえ, レンタル, 下記, 今回, 何年か, 修正, 処理, 分刻み, 制限, 場合, , 技術, 改善, , 方法, 日付, , 有効, 概念, 構築, 無限, 自体, 自分, 負荷, 追記,

本音ベース。

2018.10.14

Logging


昨日、仕事とは関係のない人達と出会える機会があって
殆ど話すことなく場の中にいたのだけど、みんなそれぞれ頑張っているなって感じた。
勝者の条件×敗者の条件=勝つことに意味はない。にタイトルを変えてこのブログも
心機一転して書いていくことに決めた。そして本音ベースで書いていく。
タイトルは何となく、こんなので良いだろうと決めた。
自分が20代のころ、負け組、勝ち組とかいう言葉が流行ったけれど
実際のところ、何を持って勝ち負けを決めるのかというのは疑問だった。
いま40間近で答えを出すとすると、勝つことに意味はないだということだ。
勝つよりも人とひとなんだということ。
いろいろあるけど、前進しているひとが、
一番じゃないのかなと。
追記:タイトル名が何か適当すぎたので
笑顔×努力+効率=?に変更しました。

タグ

タイトル, タイトル名, ところ, ひとなん, ブログ, みんなそれぞれ, 人達, 仕事, 勝ち組, 勝ち負け, 勝者, 実際, 意味, 本音ベース, 条件×敗者, 機会, 殆ど話すことなく場, 疑問, 笑顔×努力+効率, 言葉, 負け組, 追記, 関係,

C# でYOUTUBEダウンロードもどきを作ってみました。

2018.04.28

Logging


C# でYOUTUBEダウンロードもどきを作ってみました。ライブラリを使用しているので、結局、楽に作れるわけです。ホントに有り難いものです。YOUTUBEやニコニコ動画をダウンロードするソフトが売られていますけど、おそらくソフトウェアプログラマーは買うことはないだろうなと言う印象を作ってみて思いましたね。

【表示する】buttonを押下後、【ダウンロードする】を押さないとダウンロード出来ない仕様に変更してます。

ライブラリにこちらのライブラリを使用しております。
https://www.nuget.org/packages/VideoLibrary/

追記:ソースコードは控えることとにしました。下記の理由から・・・。今後どうなるか不透明なので使用する場合はご自身の判断の元で!尚、私自身はオススメはしません。

タグ

button, https, NuGet, org, packages, VideoLibrary, www, youtube, おすすめ, コード, こちら, こと, ご自身, ソース, ソフト, ソフトウェア, ダウンロード, プログラマー, ホント, もの, ライブラリ, 下記, 不透明, 今後, 仕様, 使用, , 判断, 動画, 印象, 場合, 変更, 押下, 理由, , 自身, 表示, 追記,

このサイトは安全に接続できません。

2018.01.13

Logging


このサイトは安全に接続できません。という表示がされて開発が思うようにできない。
最初はサービス提供元の問題かなと思っていたのですがどうもそんな感じではないような気がしてきた。
サービス提供元と自分のレベルを考えた所、どう考えても自分の技術の方が劣っているはずだと・・・考えた際・・・。
おそらく自分のコードが駄目なんだろうと、ブラウザではこのような表示が出るけれど・・・プログラム実行時にはうまく動くように出来ているように作成されているのではないかと思うようになってきた。
となると・・・・。
自分のコードが駄目なんだろうと。
週明け見直してみないといけないな・・・。
追伸.英語から日本語へブログ記事を元に戻しました。
理由はボットが大量に流れ込むようになったからというのが理由です。
英語で記事を書くサイトを設けました。
https://zip358com.hatenablog.com/ [不定期掲載?]

追記:SSL(https)対応ではないと接続は安全ではありませんのような事が表示されるようにChromeが対応を行うらしいですね。
あんまり嬉しくはない機能をChromeは導入するのでしょう。WEB業界は一時的に潤うかもしれませんが・・・?
尚、業者にボッタクられないように言っとくと、SSL対応費は基本無料でも出来ますので、あとはホームページ内のリンクなどを修正費用が一度だけ発生します。そこらへんの説明無しで高額な費用が発生した場合、おそらくボッタクリな金額を請求されています。お気をつけて・・・(*´ω`*)

タグ

358, com, hatenablog, https, SSL, zip, コード, サービス, サイト, パス, ブラウザ, ブログ, プログラム, ボット, レベル, 不定期, 作成, , 問題, 大量, 安全, 実行, 対応, 感じ, , 技術, 接続, 掲載, 提供, , 日本語, 最初, , 理由, 自分, 英語, 表示, 記事, 追伸, 追記, 週明け, 開発, , 駄目,

友だちが少ないがそれは問題ではない。むしろ多い人のほうが?

2017.07.15

Logging


自分は友だちが少ない、これ昔からそんな感じです。
小学校なんて友達っていうのはクラスの中にいなかったように思えます。
それより近所の子と遊んでいたことのほうが多かった。
今でも友だちが少ないわけです、お酒を飲みに行ったりワイワイガヤガヤする機会も
人より少ない。半端ないぐらい少ないのかなと高知県に住んでいると
実感するわけですけど、さて自分は結構、お酒の席がどっと疲れてしまう、
気の合うひとと飲みに行ったりしても、やはり疲れてしまう。
その場を愉しめば良いのですけど、
あまりたのしいと感じないですね、どちらかと言えば
サシで飲む方が愉しい楽だと感じます。
団体で飲むのは自分には合わないなという感じです。
友達もそうで旅以外なら2人派だと思います。
そういう意味では友達でも女友達を見つけて遊んだほうが
自分には会っているのかもなと。
自分が今思うのにほんとうに友達は必要なのか?
一人でいて寂しいと感じる人は友達を見つけたほうが賢明だと思いますが
自分みたいな一人でいて寂しいと思わないタイプは
無理に見つける必要はないかなと、それより好きなことを
したり、頑張りたいことを頑張ったりする時間やぼーっと休息する時間を
持つほうが良いかなと感じます。
※少し前までは友達が必要かなと思っていたのですけど
それはいっときの感情でした。
(虚しいさや寂しいという感情になった時に思うです。)
追記:
虚しいさや寂しいというのは
ずっと続くものでもないですね、なので友達がいないからと言って
悲観することはないと思います。自分が思うに
その時間が結構無駄かなと友達を通り越して彼氏彼女を探したほうが
良いかなと思います。

タグ

いっとき, お酒, クラス, サシ, タイプ, どちらか, ひと, 一人, 友だち, 団体, 女友達, 小学校, 彼氏彼女, 感情, 旅以外, 時間, 虚しいさや, 追記, 高知県,

凹むわー。

2017.02.26

Logging


ついにメインのパソコンが死んだ。
生き返りそうにない・・・死から蘇ってほしいのだけど
今度ばかりは無理な気がする。
もう8年も使い続けていたのだけど
どうもブラックスクリーンから生き返りそうにない。
BIOSのビープ音もならずご臨終となった気がする。
ここから復活させるには全部とっかえないといけないだろうな・・・。
泣き面に蜂とかいう言葉を思い出した。この頃、暗い記事が多かったのも
良くなかったのかもしれないなぁ反省。
トイウコトデ
笑う門には福来るになりたい今日このごろです。
追記:
少しずつ少しずつ部品を代金を貯金して買うことにするつもりです。
いきなりパソコンを購入する事は嫌なので・・・。
 

タグ

8年, BIOS, ご臨終, トイウコトデ, パソコン, ビープ音, ブラックス, メイン, 今日このごろ, 代金, 反省, 暗い記事, , , 泣き面に蜂, , 笑う門, 言葉, 追記, 部品,