@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
Pythonでノイズキャンセリングアプリ化するコードです😤デスクトップアプリ
2024.12.14
おはようございます.昨日の続きを記載します、Pythonでデスクトップアプリを作りました、デスクトップにPythonが入っている環境で下記のファイルを実行することでノイズキャンセリングが出来ます.
尚、前手順でライブラリを2つインストールください.
pip install scipy noisereduce
import tkinter as tk
from tkinter import filedialog, messagebox
from scipy.io import wavfile
import noisereduce as nr
import os
def select_file():
file_path = filedialog.askopenfilename(
filetypes=[("WAV files", "*.wav")]
)
if file_path:
file_entry.delete(0, tk.END)
file_entry.insert(0, file_path)
def reduce_noise():
file_path = file_entry.get()
if not os.path.isfile(file_path):
messagebox.showerror("エラー", "Please select a valid WAV file.")
return
try:
# Load data
rate, data = wavfile.read(file_path)
# Perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
# Save reduced noise file
output_path = os.path.splitext(file_path)[0] + "_reduced_noise.wav"
wavfile.write(output_path, rate, reduced_noise,stationary=True,prop_decrease=0.7)
messagebox.showinfo("成功", f"出力先:\n{output_path}")
except Exception as e:
messagebox.showerror("Error", f"An error occurred: {e}")
# Create the main application window
root = tk.Tk()
root.title("ノイズキャンセリングツール")
# Input file selection
frame = tk.Frame(root)
frame.pack(pady=10, padx=10)
tk.Label(frame, text="Select a WAV file:").grid(row=0, column=0, pady=5, padx=5)
file_entry = tk.Entry(frame, width=40)
file_entry.grid(row=0, column=1, pady=5, padx=5)
select_button = tk.Button(frame, text="Browse", command=select_file)
select_button.grid(row=0, column=2, pady=5, padx=5)
# Noise reduction button
process_button = tk.Button(root, text="ノイズ除去", command=reduce_noise, bg="lightblue")
process_button.pack(pady=10)
# Run the application
root.mainloop()
因みにこのコードをパッケージ化したい場合はPythonの下記のライブラリをインストールするとパッケージ化が出来ます.
pip install pyinstaller
pyinstaller noise-cut.py
自分でもノイズキャンセリングを試してみましたが精度はいまいちでした、noisereduceの微調整が必要になりそうです.
明日へ続く
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
エラー, コード, デスクトップ, デスクトップアプリ, ノイズキャンセリング, ノイズキャンセリングツール, ノイズ除去, パッケージ化, ファイル, ライブラリ, 下記, 出力先, 前手順, 微調整, 成功, 環境, 精度, 自分,
【実写映画】【漫画】東京リベンジャーズを観ました.漫画だな.
2024.07.01
おはようございます.漫画、東京リベンジャーズの実写映画を今頃、ネトフリで観ました.完結に感想を書くと漫画的なストーリー展開で少し物足りない感じがしました.もしこれを中学生の時に観ていたら抱く感情が変わっていたんだろうなって思いもあります.
映画って今見ても面白いと思う映画といまだけ面白い映画、そして歳を重ねて観ると理解できる映画があります.いまだけ面白いと思う映画って後から再度見ても刺さらない内容なんですよね.その時の感情や環境と合ってなんか共感できる内容の映画、それはいまだけ面白い映画だと思います.
東京リベンジャーズはそんないまだけ面白い映画のジャンルに入る映画だと思います.因みに東京リベンジャーズ2を観るかどうかは今のところ未定です.尚、ネトフリでは今のところ観れるようになっています.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Photo by Nothing Ahead on Pexels.com, ジャンル, ストーリー展開, ところ, ネトフリ, 中学生, 内容, 再度, 完結, 実写映画, 少し物足りない感じ, 感情, 感想, 映画, 東京リベンジャーズ, 歳, 漫画, 環境, 面白い映画,
サービスで提供しているサンドボックス使う派?使わない派?どっち?
2024.06.02
おはようございます、サービスで提供しているサンドボックス使う派?使わない派?ですか?自分は基本的にサンドボックスは仕事では使わない派です.コードの流出に繋がる可能性があるのでほぼ使いません.使うときは、PHPのドキュメントの例文を使用してどんな動きするか確認する時ぐらいです.
この頃はDockerでひとつサンドボックスとして使用する環境を作っています.これで情報漏れを防ぐことが可能です.ちなみにPHPのバージョンもコマンドで切り替えることが可能にしています.
仕事では使わない派ですが個人開発をするときは使用したりします.使用するサンドボックス環境はパイザアイ・オーさんのサンドボックス環境を良く使用します.よく使用する方は自分のアカウントを取得しておくと良いと思っています😌
これからPHPやPython言語を学びたいと参考書を買った方はアカウントを取得し非公開の状態で参考書のコードを試してみるのも良いかと思います.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
docker, php, Python言語, アカウント, コード, コマンド, サンドボックス, サンドボックス使う派, サンドボックス環境, ドキュメント, バージョン, パイザアイ・オーさん, ひとつサンドボックス, 例文, 参考書, 情報漏れ, 派, 流出, 環境, 非公開,
腕の良いエンジニアの下で
2024.04.23
おはようございます、腕の良いエンジニアの下で働くのとそうでもないエンジニアの下で働く一年とでは1年後の技術力は違う.こればかしは運になると思うのですが、腕の良いエンジニアがいなくても生成AIを使用するとスキルアップに繋がるので生成AIを使用するのはオススメです.
今まで自分はコードレビューとかしてくれなかった環境で働いてきたのですが、ここ一年レビューしてくれる環境にいます.これは自分にとって大切な時間だと思っています.有り難いことです.
この頃YOUTUBEでninoさんというエンジニアさん向け動画を見つけました.初学者向けなんちゃって動画が多い中、ninoさんの動画はちゃんとしている動画だと思います.ただし詳しく学びたい方は会員にならないと駄目なんですが、この人の下で学べば良いエンジニアになれるだろうなって思います.
駆け出しのフロントエンドエンジニアさんで一応エンジニアとして従事しているひとがninoさんのターゲットなのかもしれないなって動画を見て思いました.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ninoさん, Photo by Pixabay on Pexels.com, エンジニア, エンジニアさん向け動画, コードレビュー, この頃YOUTUBE, スキルアップ, ターゲット, ひとがninoさん, フロントエンドエンジニアさん, 会員, 初学者向けなんちゃって動画, 動画, 技術力, 有り難いこと, 環境, 生成AI, 腕, 良いエンジニア, 運,
ウラ漫
2024.04.20
おはようございます、ウラ漫を見て思ったことを綴っていこうかなって思います.まず、ウラ漫は漫画家さん目線ではなくて編集者の目線で描かれている動画になっています.それが良いか悪いかは別として漫画を生み出すっていうのは大変だなって思います.
特に週刊連載の漫画は余裕無さそうな気がしてならないし、今では連載という枠を超えた活動している人もいるわけだから、そういう才能をどうやって獲得するかなどが社運を握っているように感じます.
いや本当に好きでなくては続きそうにない環境だなってヒシヒシと伝わってきます.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ウラ漫, 人, 余裕無, 動画, 才能, 枠, 気, 漫画, 漫画家さん目線, 環境, 目線, 社運, 編集者, 良いか悪いか, 連載, 週刊連載,
流体シミュレーション
2024.04.15
おはようございます、Misaki Nakano(@misaki_mofu)さんの流体シミュレーション作り方を書かれた記事が素晴らしい.これは今年初の「うぉ」っていう驚きの内容でした、分かりやすく丁寧に解説してくれています.まだ半分ぐらいしか良いでいないけど、なんか自分でも出来そうなだなって思える内容.
https://mofu-dev.com/blog/stable-fluids
賢い人には敵わない気もするけど、環境を人を作るのだなって思うこともあります.因みにMisaki Nakano(@misaki_mofu)さんはgithub社に所属しているそうです.いやー天と地ほど能力に差があるけれども、近づけるように努力したいなって思えたwebサイトでした.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
github社, Misaki Nakano, misaki_mofu, WEBサイト, 人, 内容, 初, 半分, 地ほど能力, 天, 差, 敵わない気, 流体シミュレーション作り方, 環境, 素晴らしい.これ, 自分, 記事, 賢い人,
バッド・ランズを観ました。
2024.01.13
おはようございます、大晦日にバッドランズを観ました。全然良かったんだけどヤバいなとも思った作品です。バッドランズとは悪地(住みにくい良くない土地)という意味だとか、映画を観ていると何となくだけども、その意味する所が分かる気がする。
環境が人を作るというのが正しいのか分からないけれども、少なからず環境が起因することはあると思います。そういう事を考えながら観ているとちょっと疲れはするものの、どういう結果で終わるのかと思うとやっぱり最後まで観てしまう映画でした。
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
新語:物魂電才『ぶっこんでんさい』。#生成AI時代
2023.07.30
おはようございます、皆さん生成AI使ってますか?自分は日に一回は確実に業務で使用しています。今回はシン・ニホンを書かれた安宅和人 氏の動画をみていて日本結構大変ですね(・・;)。日本は結構瀬戸際に来ているじゃないかなって思います。そして世界も日本と同じ問題を潜んでいるということとか、結構たいへんな課題。
安宅和人 氏を聞いているとAIより世界的な問題などになりつつある。環境の問題などへ焦点を向けているなって思っています。AIの先の話をしているように感じました。まだYOUTUBEにUPされていない後半の部分、恐らくそういう事が今後大事になってくる。
AIをどう使い今後の世界的な問題などとどう向き合うかが大切になってくるのではと動画をみていてそう受け取りました🗿。因みにこの記事をUPしている頃にはPIVOTに後半がUPされている頃になると思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AI, Photo by Sahil prajapati on Pexels.com, PIVOT, シン・ニホン, 世界, 使い今後, 先, 動画, 問題, 安宅和人, 後半, 業務, 瀬戸際, 焦点, 環境, 皆さん生成AI, 自分, 話, 課題, 部分,
デジタルツインが胸熱かも。NVIDIA強し。
2023.01.21
おはようございます、毎日、タスクを消化していく日々です。
さて、今日はデジタルツインが胸熱っていうお話です。デジタルツインとはリアルの世界と同じ環境をデジタルの中で作ってシュミレーションして見るというお話です。
シュミレーションした良い結果は、リアル世界に反映していくという事でとても効率よい方法です。いま、この手法でロボットの学習させたり、自動運転のテストを何度も繰り返してAIに学習させたりしています。ある程度学習を積んだAIでリアル世界で実地テストするという感じです。
因みにこの世界も実は仮想世界かも知れないというのは、否定出来ないのかって思っています。まぁその話はまた今度しますが、デジタルツインは結構胸熱ですよ。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AI, タスク, デジタル, デジタルツイン, テスト, リアル, リアル世界, ロボット, 仮想世界, 何度, 効率よい方法, 実地, 手法, 日々, 環境, 程度学習, 胸熱, 自動運転, 良い結果, 話,
dockerでlaravel環境構築したお話。 #hosts
2022.12.08
おはようございます、今日は早朝に明日の記事を書いています😆。
さて、dockerでlaravel環境構築したお話を書いていきます、Dockerの環境でApacheをインストールし、バーチャルホストを設定してwindows側のhostsも変更しDocker側のhostsも設定、起動確認も取れたので、一旦Dockerを終了し再度立ち上げるとDocker側のhostsが初期値に戻っている🤔。
これDockerの仕様らしいので、下記のようにdocker-compose.ymlを設定(extra_hosts)するか、Docker runでコンテナを立ち上げる場合はパラメーター–add-hostを付与してあげないといけない😳。
version: "3"
services:
web:
image: almalinux:latest
container_name: Apache_v2.4
ports:
- 80:80
privileged: true
command: /sbin/init
extra_hosts:
- "example1.com:127.0.0.1"
- "example2.com:127.0.0.1"
volumes:
- E:\var\www\html:/var/www/html
docker run --add-host=example1.com:127.0.0.1 .....
尚、Docker側のhostsを変更しないまま、立ち上げてもLaravelは動かないと思います。何故、動かないかはここでは割愛させて頂きます🙇。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
--add-host, 3, almalinux, ap, Apache, container, docker, docker-compose, extra, hosts, image, Laravel, latest, name, quot, run, services, Version, web, Windows, yml, インストール, お話, これ, こんてな, バーチャル, パラメーター, ホスト, 一旦, 下記, 今日, 仕様, 付与, 側, 再度, 初期, 場合, 変更, 早朝, 明日, 構築, 環境, 確認, 終了, 記事, 設定, 起動,
諦めたいと思った時が続ける時だ。 #KeepGoing
2022.11.24
おはようございます、昨日はPM4時頃から晴れましたね、高知県の話ですけどw。
さて祝日後の仕事は憂鬱かもですね。そんなモチベーションを下がった時に見る動画。動画でも強調している継続(努力)出来ない人が多い、継続は力なんだと思いますよ。
因みに、仕事で大事なのは何かと言えば気持ちです。前向きな気持ちになれる環境が大事になります、人を貶しているような環境の職場ヤバい、そんな環境では生産性は上がりません。そういうのは伝染します、そうなったら足の引っ張り合いが始まり大きな発展はしません。
環境作りは大事だということ、皆がやるぞという環境を作るのが上司の役割なのかなって思います、ダメなものはダメだという意識付けが大事なんだと思います。
マインドが大事、それは技術よりもです、技術は熟していくと最低限の技術は付きます。人を称えない会社に未来あるのかな🤔。
頑張りましょう、いってらっしゃい!!。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4, KeepGoing, PM, w, こと, それ, ため, マインド, モチベーション, もの, 上司, 人, 仕事, 会社, 伝染, 何, 前向き, 力, 努力, 動画, 大事, 強調, 役割, 意識, 憂鬱, 技術, 昨日, 時, 最低限, 未来, 気持ち, 環境, 生産性, 発展, 皆, 祝日, 継続, 職場, 話, 足, 高知県,
文字数カウントは奥が深いよ。日本語より𓅇エジプト😇 #javascript #code #プログラミング #unicode
2022.10.05
おはようございます、先日(日曜日のこと)は久しぶりに本屋さん巡りしていました😋。本屋📖は良いですね落ち着きます。
さて、文字コードのカウントは奥が深いなって話を記載していきます。人目線からすれば文字をカウントするという至って簡単な話にですが、PC(コンピューター)にとっては奥が深いです・・・日本語漢字も面倒だけどエジプト系の象形文字系(unicode)は本当に面倒そうです。まだ、作りかけですがツイッターの用な文字コードのカウントするjavascriptコードを書きましたのでサンプルコードとしてご使用ください。
※WindowsOSの環境下でChromeブラウザ動作させ検証しました。コピペ文字には対応していません😇。UTF-8 ではない違う文字コードを貼り付けてみてください、変なことになると思います😂。例えばEUC文字コードだとか・・・。
動作サイトはこちらです。
function moji(o) {
let m = o.nextElementSibling;
//ads
let h = ((o) => {
let l = o.value.match(/(https?:\/\/[a-z|A-Z|0-9|\-|_|%|\.|\/]{0,})/giu);
let ml = l ? ((l) => {
return sum = l.reduce((s, e) => {
return s + e.length;
}, 0);
})(l) : 0;
return l ? {
len: (l.length * 23),
mlen: ml
} : {
len: 0,
mlen: ml
};
})(o);
//zenkaku
let k = ((o) => {
let l = o.value.match(/[^\x20-\x7e]/giu);
let ml = l ? ((l) => {
return sum = l.reduce((s, e) => {
return s + e.length;
}, 0);
})(l) : 0;
return l ? {
len: (l.length * 2),
mlen: l.length
} : {
len: 0,
mlen: ml
};
})(o);
m.innerHTML = "【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】";
if ((o.value.length + h.len - h.mlen + k.len - k.mlen) >= 280) {
m.innerHTML = "<span class='text-danger'>【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】</span>";
}
}
<label for="my-textarea" class="h3">文字を入力してください。</label>
<textarea id="my-textarea" class="form-control" oninput="moji(this);" name="" rows="3"></textarea>
<span class="h3"></span>
尚、サンプルコードは1バイトを一文字としてカウントしていきます、そしてURL文字はどんなに長くても23文字にカウントされます、これはTwitter社の仕様と合わしています。URL文字はURL短縮が行われ23文字の短縮URLが生成されるからその様にカウントしているのですが、なんか本物と違うですよね挙動が・・・🙇♂。因みに絵文字がどのようにカウントされるかは確認していません。
※UTF8では絵文字(unicode)を3バイトで表記させているそうです。昔、UTF-8は2バイトで表現しているとか習っていたのですが、それはカナリ古い知識だったみたいです😇。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
8, Chrome, Code, EUC, javascript, PC, Unicode, UTF-, WindowsOS, エジプト, カウント, コード, こと, コピペ, コンピューター, サンプル, ツイッター, ブラウザ, プログラミング, 久しぶり, 人目, 使用, 先日, 動作, 変, 奥, 対応, 数, 文字, 日曜日, 日本語, 本屋, 本当, 検証, 漢字, 環境, 用, 簡単, 記載, 話, 象形, 面倒,
Dockerは楽だなという事を今頃理解しましたよ。 #vbox #docker
2022.10.03
おはようございます、月曜日の朝はテンション低めな方も多いはず😇。
さて、今日は先週の木曜日と金曜日にふと今後のためにDockerをもう少し触ってみようと思い作業終了後触ってみました、触れて気づいた事は開発環境を作るのがとても楽だということ(気づくの遅い?🫠)。自分は昔の人間なのでvisualboxばかり触っていたのですがDockerは素晴らしい。サーバー周りが得意な人にイメージを作ってもらってそれを共有すれば皆、同じ環境下で開発が出来るので良いという事に今頃気づいた・・・。
docker run -it -d -v C:\var\www\html\:/var/www/html --privileged -p 80:80 --name こんてな命名 イメージid /sbin/init
※Visualboxでも可能ですけどね。Dockerのだとそこが楽だしマウント(フォルダ共有)もスムーズに行くので自分は良いなと感じました。
ちょっと残念だった点は自宅で作業している中、バッファローのNAS🍆に作業ファイルを入れているのですが、それとは共有出来なかった点です、対応として実PCをrobocopyしてNASと同期を取るという形にしました。これで問題はなくテスト環境下で開発ができます。尚、高級なNASではそういう問題なく上手くいくそうですよ。※NASはバックアップデータになりました。
robocopy <コピー元> <コピー先> /E /DCOPY:DAT
尚、mirのオプションにしなかったのには理由があります。コピー元のファイルが消えたり、ディレクトリが破損した場合、コピー先のファイルやディレクトリが消えて無くなるらしいので・・・。完璧なミラーリングは辞めました。
こんな感じで快適なテスト環境が作れます(上記のコマンド参考に)。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
--privileged, -p, -v, 80, D-, docker, html, ID, init, IT, name, run, sbin, var, vbox, Visualbox, www, イメージ, こと, こんてな, サーバー, スムーズ, そこ, それ, ため, テンション, パス, フォルダ, マウント, 事, 人, 人間, 今後, 今日, 今頃, 低め, 作業, 先週, 共有, 可能, 周り, 命名, 得意, 方, 昔, 月曜日, 朝, 木曜日, 理解, 環境, 皆, 終了, 自分, 行, 金曜日, 開発,
Sqliteで作った簡易掲示板のコードを配布致します。#php #code
2022.09.20
おはようございます。台風は過ぎ去りましたがせっかくの三連休が残念です💦。
今日は先日、Sqliteを使用して簡易掲示板を作ってみましたのでコードを配布致します、尚、PHP8の環境下で動作させています(PHP7系でも動作すると思います)。
Sqliteってnow()関数がなかったりだとか、Deleteする時に、noカラムを昇順しlimitを使用して削除出来ないだとか、いろいろとMysqlとは違う所があり、面倒だなと思いながらコードを書きました、尚、SqliteはWebサーバーの階層に置かないように、置いても良いですが・・・。そのままの状態だと誰でもダウンロードが可能になってしまいますのでご注意ください。自分は地下に眠らしています😅。
一応、二重投稿防止の為に20秒経過しないと再投稿出来ないようにしています😌。トライしていない事は禁止ワード等がありません🤔。つけようと思ったのですがまぁ良いかなと、、、。
動作している環境のリンクはこちら。
軸となるPHPのソースコードを2つ貼っときますね。
<?php
session_start();
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">
<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">
<meta name="Description" content="Enter your description here" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css?<?= time() ?>">
<title>掲示板</title>
</head>
<body class="p-3 text-white">
<div class="p-4 shadow rounded" style="background-color:#d6dbdf;">
<div class="container mt-5">
<div class="row">
<div class="col-12 text-center">
<h1 class="shadow" style="color:#195a57;">掲示板::version 2.5</h1>
</div>
<div class="col-12">
<div class="input-group shadow rounded">
<div class="input-group-append">
<span class="input-group-text bg-dark text-white" id="my-addon">ニックネーム</span>
</div>
<input class="form-control" type="text" name="name" placeholder="ニックネームを入力" aria-describedby="my-addon">
</div>
<div class="form-group shadow rounded">
<label for="my-textarea">コメント</label>
<textarea id="my-textarea" class="form-control" name="comment" rows="7"></textarea>
</div>
<button id="btn" class="mt-2 btn btn-info text-white shadow rounded" type="button">投稿する</button>
</div>
</div>
</div>
<div class="container mt-5">
<div class="row">
<div id="view" class="col-12"></div>
</div>
</div>
</div>
<footer>
<a href="/">TOP</a> :: © Reborn9.sakura.ne.jp <?=date("Y")?>
</footer>
<input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
<script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/js/bootstrap.min.js"></script>
<script src="assets/js/main.js?<?= time() ?>"></script>
</body>
</html>
<?php
class db
{
var $pdo = null;
function __construct()
{
try {
$this->pdo = new PDO("sqlite:../../bbs.sqlite3");
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //code...
} catch (\Throwable $th) {
//throw $th;
print $th->getMessage();
}
}
function select_limit()
{
if($this->pdo){
$stmt = $this->pdo->prepare('select * from bbs order by no desc limit 0,5');
$stmt->execute();
$result = $stmt->fetchAll();
$stmt = null;
$this->pdo = null;
return new view($result);
}
}
function insert($name,$comment,$sns_cnt=0)
{
try {
$stmt = $this->pdo->prepare('INSERT INTO bbs (`time`,`name`,`comment`,sns_cnt)values(strftime(\'%Y年%m月%d日 %H時%M分%S秒\',CURRENT_TIMESTAMP, \'localtime\'),:name,:comment,:sns_cnt)');
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
$stmt->bindParam(':sns_cnt', $sns_cnt, PDO::PARAM_INT);
$stmt->execute();
$stmt = $this->pdo->prepare('DELETE FROM bbs WHERE bbs.no = (SELECT no from bbs ORDER BY no ASC LIMIT 1);');
$stmt->execute();
$stmt = null;
$this->pdo = null;
return true;
} catch (\Throwable $th) {
print $th->getMessage();
return false;
}
}
}
class view{
var $item = null;
function __construct($item)
{
$this->item = $item;
}
function view_item($item="")
{
try {
$item = $item?$item:$this->item;
ob_start();
?>
<?php
foreach($item as $key=>$value){
?>
<div class="mt-2 row txtbox shadow rounded">
<div class="col-3 name_<?=$value["no"]?> rounded-start fs-6">
ニックネーム::<?=$value["name"]?>さん
</div>
<div class="col-9 time_<?=$value["no"]?> fs-6">
投稿日時::<?=$value["time"]?>
</div>
<div class="col-12 comment_<?=$value["no"]?>">
<?= nl2br($value["comment"])?>
</div>
<div class="col-12 sns_cnt_<?=$value["no"]?>">
<!-- <?=$value["sns_cnt"]?> -->
</div>
</div>
<?php
}
?>
<?php
$ret["view"]= ob_get_clean();
$ret["msg"]= "done";
} catch (\Throwable $th) {
//throw $th;
$ret["msg"] = "error";
}
return $ret;
}
}
session_start();
$ret = null;
$mode = xss_defence($_POST["mode"]);
// $time = ;
$name = xss_defence($_POST["name"]);
$comment = xss_defence($_POST["comment"]);
$sns_cnt = (int)xss_defence($_POST["sns_cnt"]);
if (isset($_POST["csrf_token"])
&& $_POST["csrf_token"] === $_SESSION['csrf_token'] && (function($t){
return time() - $t > 20?true:false;
})($_SESSION["save"])) {
if($mode==="save"){
$name = !preg_replace("/[ | ]/","",$name)?"匿名":$name;
$comment = !preg_replace("/[ | ]/","",$comment)?"":$comment;
if($comment){
$db = new db();
$db->insert($name,$comment);
$_SESSION["save"] = time();
}
}
$db = null;
$db = new db();
$ret = $db->select_limit()->view_item();
print json_encode($ret);
}
function xss_defence($value){
if(is_array($value)){
foreach($value as $key=>$val){
$value["$key"] = strip_tags($val);
$value["$key"] = htmlspecialchars($value["$key"],ENT_QUOTES);
}
}else{
$value = strip_tags($value);
$value = htmlspecialchars($value);
}
return $value;
}
配布コードはこちらです。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
20, 7, 8, Code, Delete, LIMIT, MYSQL, no, Now, php, Sqlite, web, いろいろ, カラム, コード, ご注意, サーバー, せっかく, そのまま, ダウンロード, トライ, ワード, 三連, 事, 二, 今日, 休, 使用, 先日, 削除, 動作, 可能, 台風, 地下, 所, 投稿, 掲示, 昇順, 時, 残念, 為, 状態, 環境, 禁止, 簡易, 経過, 自分, 良, 誰, 配布, 関数, 防止, 階層, 面倒,
1万件のCSVを読み込みテーブルに保存する雛形コード #PHPCode
2022.09.08
おはようございます、徐々に秋ぽっい日差しになってきましたね(まだ暑いけども😌)。
今日は、1万件のCSVを読み込みテーブルに保存する雛形コードを昨日、ちょちょっと書きましたので記載します。ファイルをダウンロードして使いたい方はGithubのリンクを下に貼っときますので、ご使用頂けたらと思います。尚、テーブルなどはCSVを参考にご自身で構えてください。
※動作環境はPHP8系です、なのでPHP7系では一部エラーが出ます。fgetcsv…nullを0へ変更。
Githubのリンクはこちら
Qiitaの方に記載しようかどうしようか、迷ったのですが第一弾目がアクセス数がそこそこ伸びたのでこれ以上、注目されるのは嫌なのでブログの方に記載しました。1万件のCSVを簡単に読み込ませる方法はPHPコードを書くのではなく、SQLのコマンドで実行した方が実は早いですけど・・・。
早いですけど、その場合、CSVがちゃんとしたファイルではないと上手くテーブルに保存されない場合や、そもそもコマンドラインで操作出来ない場合もあったりしてPHPコードなどで制御しないと駄目な事もあります。そんな時に、このコードをサンプルとして使って頂ければ良いなと思い作りました。
そんなにコードを書かなくてもまぁ動くんですよ。ちなみにソースコードには、あまりコメントを書いていないですが、プログラマーなら大体の人が理解できるレベルかと思います。
<?php
//ini_set("display_errors","On");
session_start();
require "db_config.php";
//読み込みCSVファイル名セット
class csv
{
/**
* @param string $filename
* @param int $cnt
* @return Object
*/
public function ini_csv($filename = "", $cnt = 0)
{
return new csv_read($filename, $cnt);
}
}
//CSVデータを読み込ます
class csv_read
{
var $max = 10000;
var $cnt = 0;
var $handle = null;
/**
* @param string $filename
* @param int $cnt
*/
public function __construct($filename = "", $cnt = 0)
{
$this->cnt = $cnt;
$this->handle = fopen($filename, "r");
$_SESSION["offset"] ? fseek($this->handle, $_SESSION["offset"]) : $this->handle;
}
/**
* @param int $header_skip
* @return Object
*/
public function reader($header_skip = 0)
{
if ($this->handle !== FALSE) {
$response = null;
$data = fgetcsv($this->handle, null, ",");
if (!$header_skip || $_SESSION["offset"]) {
if ($data !== FALSE) {
$_SESSION["offset"] = ftell($this->handle);
$response["data"] = $data;
$response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
$flag = true;
} else {
$_SESSION["offset"] = null;
$flag = false;
}
} else {
$_SESSION["offset"] = ftell($this->handle);
$response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
$flag = false;
}
} else {
$_SESSION["offset"] = null;
$flag = false;
}
return new table_save($flag, $response);
}
}
//tableにCSVデータを保存
class table_save
{
var $flag = false;
var $result = null;
/**
* @param boolean $flag
* @param array $response
* @return void
*/
public function __construct($flag, $response)
{
$this->flag = $flag;
$this->result = $response;
$this->column_name = "name,,...";
}
/**
* @param string $column_name
* @return void
*/
public function tbl_save($column_name = "")
{
if ($this->flag) {
$column = $column_name ? $column_name : $this->column_name;
$is_column = explode(",", $column);
foreach ($is_column as $key => $val) {
$is_value[$val] = $this->result["data"][$key];
}
try {
$pdo = new PDO(DSN, USERNAME, PASSWORD);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = (function ($is_column) {
$INSERTFIRST = null;
$INSERTLAST = null;
foreach ($is_column as $key => $val) {
$INSERTFIRST[] = "$val";
$INSERTLAST[] = ":$val";
}
$INSERTSQL = "(" . implode(",", $INSERTFIRST) . ")values(" . implode(",", $INSERTLAST) . ")";
$UPDATESQL = null;
foreach ($is_column as $key => $val) {
$UPDATESQL[] = "$val = :$val";
}
return "INSERT INTO " . TABLENAME . $INSERTSQL . " ON DUPLICATE KEY UPDATE " . implode(",", $UPDATESQL) . ";";
})($is_column);
$stmt = $pdo->prepare($sql);
foreach ($is_value as $key => &$value) {
$is_type = ($key === "test3" || $key === "test13") ? PDO::PARAM_INT : PDO::PARAM_STR;
$stmt->bindValue(":$key", $value, $is_type);
}
$this->result["sql"] = $stmt->execute();
} catch (\Throwable $th) {
//throw $th;
$this->result = null;
print $th->getMessage();
}
}
print json_encode($this->result);
}
}
//RUN...POST DATA
if (isset($_POST["csrf_token"]) && d_xss($_POST["csrf_token"]) === $_SESSION['csrf_token']) {
$_SESSION["offset"] = (int)d_xss($_POST["reset_flag"]) === 1 ? null : d_xss($_SESSION["offset"]);
$filename = d_xss($_POST["filename"]);
$cnt = (int)d_xss($_POST["cnt"]);
$column_name = "test1,test2,test3,test4,test5,test6,test7,test8,test9,test10,test11,test12,test13,test14,test15";
$header_skip = 1;
$csv = new csv();
$csv->ini_csv($filename, $cnt)->reader($header_skip)->tbl_save($column_name);
$csv = null;
} else {
print "";
}
function d_xss($data){
$data = strip_tags($data);
$data = htmlspecialchars($data,ENT_QUOTES);
return $data;
}
<?php
// ログインした状態と同等にするためセッションを開始します
session_start();
// 暗号学的的に安全なランダムなバイナリを生成し、それを16進数に変換することでASCII文字列に変換します
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
// 生成したトークンをセッションに保存します
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">
<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">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<title>CSV</title>
</head>
<body>
<input type="hidden" name="csrf_token" value="<?=$csrf_token?>">
<span class="h3" id="cnt"></span><br><br>
<span class="h4" id="read_csv"></span><br><br>
<span class="h4" id="debug"></span><br><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script>
window.onload = function(){
read_csv(0,1);
};
function read_csv(cnt,reset_flag){
try{
$.ajax({
type: "post",
url: "./assets/php/class_csv.php",
async: false,
data: {csrf_token:document.getElementsByName("csrf_token")[0].value,reset_flag:reset_flag,filename:"dummy.csv",cnt:cnt},
dataType: "json",
success: function (response) {
if(response){
cnt = response.cnt;
document.getElementById("cnt").innerText = cnt;
if(response.data){
document.getElementById("read_csv").innerText = response.data[0] + response.sql;
document.getElementById("debug").innerText = cnt ===21?response.data:document.getElementById("debug").innerText;
}
setTimeout(function(){read_csv(cnt)},0);
}
}
});
}catch(e){
console.warn(e);
read_csv(cnt);
}
}
</script>
</body>
</html>
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 1, 7, 8, CSV, fgetcsv, github, null, php, PHPCODE, qiita, SQL, アクセス, エラー, コード, こちら, コマンド, これ, ご使用, ご自身, ダウンロード, ちょ, テーブル, ファイル, ブログ, リンク, 一, 一部, 万, 下, 今日, 保存, 動作, 参考, 変更, 実行, 方, 方法, 日差し, 昨日, 有言実行, 注目, 環境, 秋, 簡単, 記載, 雛形,
先日、サーバーを移行しました。AWSさようなら。
2022.06.30
おはようございます。初夏らしいですが初夏? 増暑です…😆。映画、SLAM DUNKが待ち遠しいです。
其れはさておき、サーバーをAWSからさくらVPSサーバーに移行しました、迷っている暇は無かった・・どんどんと経費がかさむので止む得なく急遽、平日の休みを使用してサーバーを移行しました。移行したんだけど、少しミスってアクセスの多いサーバーを見えなくなるという現象が出てしまいました。40分ほど閲覧できなくなってしまっていた。
結構焦りますよね。
閲覧できない状態が数時間とか続いたら大変ですよ本当に…。仕事では失敗したくないなって思います。今回の反省点はやはりサーバー移行すると何かしら環境が違うので動かなかったりする。
そういう時は落ち着いて深呼吸でもして、ログを見ることが大事、結局のところログに答えが載っていることが多いです。今回もそんな感じでした。
因みに以前書いた、サーバー移行時にscpを使う方法。これはFTP使用するよりも時間短縮になるから覚えていたほうが賢明です。
scp -irp /~/example.pem /var/www/html/* root@example.com:/var/www/html/
# scp -irp [鍵.pem] [転送元ディレクトリ] [ユーザー@ホスト:転送先ディレクトリ]
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
40, AWS, DUNK, SCP, SLAM, VPS, アクセス, こと, サーバー, さくら, ところ, ミス, ログ, 今回, 仕事, 以前, 休み, 使用, 先日, 其れ, 初夏, 反省点, 増, 大事, 大変, 失敗, 少し, 平日, 感じ, 数, 方法, 映画, 時, 暇, 本当, 深呼吸, 状態, 現象, 環境, 移行, 経費, 閲覧,
物体認識ではラズパイが必ず必要でもないとふと思った。
2022.06.24
おはようございます。記事の投稿の時間帯から変えようか悩んでいます。
さて、今日のお題は「物体認識ではラズパイが必ず必要でもないとふと思った。」です。Iot(Internet of Things)で脚光を浴びたのが小さなパソコンとも言われるラズベリーパイです。これを使用して温度計や湿度、気圧などを測ったりそれを記憶出来たりします。ラズパイにカメラを接続し機械学習させて物体認識なども可能です。
ただ、物体認識に言えばお使いのWindowsやMacの入ったパソコンでもそういや出来てしまうなと思ったので、それを記事にしました。物体認識で重要なのはやはり学習なのですが世の中にはオープンソースで機械学習をある程度してくれているモデルが出回っています。なので、そちらをベースに再学習させる事により学習が可能かと思います。
物体認識するためには、WEBカメラが必要ですし、機械学習が出来る環境構築も必要になります。例えばTensorFlow(テンソルフロー)が動作出来る環境だとか、、、因みに古いパソコンでもTensorFlow(テンソルフロー)のバージョンを変えれば動きます。githubのmasterを使用せず古いバージョンを使いさえすれば。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Internet, IoT, Mac, of, te, Things, web, Windows, オープン, お使い, カメラ, これ, ソース, そちら, それ, ため, はい, パソコン, ベース, モデル, ラズ, ラズベリー, 世, 中, 事, 今日, 使用, 可能, 学習, 帯, 必要, 投稿, 接続, 時間, 構築, 機械, 気圧, 温度計, 湿度, 物体, 環境, 脚光, 記事, 記憶, 認識, 重要, 題,
Windows10~起動時にアプリ(ソフト)を自動起動させる方法です。
2022.06.23
おはようございます。隠しフォルダーが見える環境です。
さて、今日のお題はITエンジニアなら朝飯前のことだと思います。「Windows10~起動時にアプリ(ソフト)を自動起動させる方法です。」知らなかったら恐らくとても運の良いITエンジニアかと思います。方法を箇条書で記載しますねーーー😌。
- 隠しフォルダが表示できるようにエクスプローラーの設定を変更します(ググって)。
- 下記のフォルダ場所まで移動します(ユーザー名はご自身の環境によって違います)。
- 移動したフォルダにご自身が自動起動したいアプリのショートカットリンクファイルをコピペ(コピーアンドペースト)します。
- 再起動してみてアプリが自動起動している事を確認する。
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
職場のPCが変わったりした時は必ず最初にやっていた作業になります。これをすることで出社しPC立ち上げ後、アプリの立ち上げなどは全くしなくて良くなります。因みにショートカットリンクにパラメーターを与えてあげることで、もっと短縮できる可能性があります。そこは割愛します。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, AppData, IT, menu, microsoft, PC, Programs, Roaming, start, Startup, users, Windows, アプリ, アンド, エクスプローラー, エンジニア, こと, コピー, コピペ, ご自身, ショートカット, ソフト, ファイル, フォルダ, フォルダー, ペースト, ユーザー, リンク, 下記, 事, 今日, 再起動, 場所, 変更, 方法, 時, 朝飯, 環境, 確認, 移動, 箇条書, 職場, 自動, 表示, 記載, 設定, 起動, 運, 題,
サーバーの引っ越しのヒントです。いや答えですねw😌
2022.06.16
おはようございます。あと一ヶ月もすれば炎天下の下でお仕事をする人もいるでしょう。大変ですね。
昔はよくサーバーの引っ越しを仕事でしていました。代わりに誰か出来る人もいなかったので自分が行っていましたが、サーバーの引っ越しほど時間のかかる仕事はありません。
scp -r -p /var/www/html/ user@example.com:/home/user/www/
scp [コピー元のファイル] [コピー先のユーザー名@コピー先のホスト] [コピー先のファイル]
何より責任、重大ですから色々と経験して思ったのは、サーバーの移行作業後に何らかの「動かない」というバグとりを速やかに行えるかどうかが大事かと思います。それはある意味、経験が物を言う世界かもしれません。こんなズブの素人でも少しだけサーバーの事を理解できたので、今思えば良いことなのかもしれません。
因みに上記に記述しているコマンドを旧サーバー環境で実行すれば新サーバーへファイル転送出来ます。いちいちFTPソフトでダウンロードしてアップロードするという事を行わなくて良いです。そして何よりパーミッションやタイムスタンプまで引き継いでくれるので便利かと思います。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-p, -r, com, example, home, html, SCP, user, var, w, www, お仕事, こと, コピー, コマンド, サーバー, それ, どり, バグ, ヒント, ファイル, ホスト, ユーザー, 一, 上記, 下, 世界, 事, 人, 今, 仕事, 何より, 作業, 大事, 大変, 実行, 少し, 引っ越し, 意味, 昔, 時間, 炎天下, 物, 理解, 環境, 移行, 答え, 素人, 経験, 自分, 色々, 記述, 誰, 責任,
そろそろPHPのバージョン引き上げしないと駄目。WPの話。
2022.06.09
おはようございます。お腹が痛くなるとそれが一週間ほど続いたりします😭。
今日のタイトルは「自分のサーバーのPHPバージョンをアップさせない駄目。WPの話」です。いつの間にかWordPressのバージョンが6になりましたよね。いまの推奨環境ではPHP7.4以上になっています。ワードプレスのロードマップがどうなっているかは知りませんが、そのうちPHP7.4は非推奨になり何れ動作しなくなることは目に見えているので、近々、PHPのバージョンアップを行いたいと思います。
その際はサーバーを停止することもあるので、表示されないという事象が起こる可能性があります。
尚、cgi-binを使用して動かすようになると思います。エンジンエックスでcgi-binを使用するのは初めてですので、長い間、サーバーが不安定な状態になるかもしれません。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
6, 7.4, cgi-bin, php, WordPress, wp, アップ, いま, うち, エックス, エンジン, お腹, こと, サーバー, それ, タイトル, バージョン, プレス, マップ, ロード, ワード, 一, 不安定, 事象, 今日, 何れ, 使用, 停止, 初めて, 動作, 可能性, 推奨, 状態, 環境, 目, 自分, 表示, 話, 間, 際, 駄目,
先を読む。未来を読む。
2022.05.31
おはようございます。5月も最後ですね、今年は梅雨入りしても即、梅雨明けするじゃないかって思っています。それがぐらい晴天の日が多い気がします。
今日のお題は「先を読む。未来を読む。」です、この力は何だか人より自分は強い気がします。そんな自分が今、未来はこうなると思っているのは、プログラマーという職は数十年後にはなくなっている気がする。コードはAIが自然言語から理解し生成してくれるので、AIが書いたコードを修正する人や正しく機能しているかなどを修正する人が必要になるぐらいなる。
デジタルの価値は限りなくZEROに近くなると思います。誰でもサービスが創り出せる世の中が到来する。これからはプラットフォームやコミュニティーを作れる人のほうが将来性があると思っていて、デジタルを知っていてそれを活かしつつ人との繋がりを提供するそういう環境やサービスを提供するほうが良いと考えている。昔も今も人は欲している。特に同じ考えを持った人々と語り合いたいと思っているので、デジタルを入り口にそういう環境を提供する人が生き残っていくだろうと。
自動運転だけが走る世の中になる、これは数十年先の話だけど恐らくそうなる。そうなったら殆ど交通事故がなくなるので、交通事故が重大事件のように放送されるだろうな。
自分たちが生きているうちに若返りが出来るようになる。たぶん、数年後には若返りの方法は発見され治療法が確立されるのに数年かかると思うけど、若返りは可能になると思います。それも注射一本で効果が現れると思います。これで世の中、大きく変わる特に日本は後期高齢者社会だったものが・・・、大きく変わると思います。
自分が考える未来を箇条書きに書いてみました…。こんなの当たらないよとか、失笑するかも知れませんが、多分これ。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5, AI, ZERO, コード, コミュニティー, これ, サービス, それ, デジタ, デジタル, プラットフォーム, プログラマー, 世, 中, 人, 人々, 今, 今年, 今日, 価値, 修正, 先, 到来, 力, 将来性, 必要, 提供, 数十, 日, 昔, 晴天, 最後, 未来, 梅雨入り, 梅雨明け, 機能, 気, 理解, 環境, 生成, 職, 自分, 自然, 言語, 誰, 題,
開発環境はクラウドに持つべきか?いなか?悩ましすぎる問題🤔。
2022.05.29
おはようございます。
今まで開発環境はオンプレでしていましたが、外で開発した時やパソコンを買い替えるとデータなどをそのたびに移行しないといけなくなるという手間が発生したり、今ではあまり起きないのですがデータが消えたりする場合もありますよね。そう思うともうクラウドに開発データを移行しようかなって思っています。
いろいろ調べた結果、開発データは手持ちのデータを使用してクラウドを使用する方法はあったのだけども全部クラウドで完結できる方法はイマイチ・・・、クラウドPCの中で開発するしか無さそうですね。実際、クラウドPCを使用したことがないのでなんとも言えないですが、それだと遅延などが発生しそう。
よってこの方法がベストかと思いました。
- 個人開発なのでローカルのデータをクラウドサーバーに転送後、削除。
- VScode拡張機能のsftpをインストールしてリモートでサーバーに接続。
- リモート側のデータを直接修正する。
- デプロイしたい場合はデプロイしたいサーバーへ転送。
因みにこんなサービスあるにはあります。githubを使用したりして・・・。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
PC, SFTP, VScode, いなか, いまいち, いろいろ, インストール, オン, クラウド, こと, サーバー, それ, たび, データ, パソコン, プレ, ベスト, リモート, ローカル, 中, 今, 使用, 修正, 個人, 全部, 削除, 問題, 場合, 外, 完結, 実際, 手持ち, 手間, 拡張, 接続, 方法, 時, 機能, 環境, 発生, 移行, 結果, 転送, 遅延, 開発,
ゲームみたいに限界突破は簡単には出来ないけど何か😌
2022.05.09
おはようございます。
今日のお題は「ゲームみたいに限界突破は簡単には出来ないけど何か」。技術が必要とされている環境で自分の技術がそれを満たしていないことってあると思います。それで挫折する人も多くいると思いますが、どうやって限界突破を超えて改な技術を身に着けることが出来るか。
簡単に言えば毎日の鍛錬しかない、近道もない。ただ、勉強することや技術のために試行錯誤しながら身につけるしか無く、それが今日明日で身につく保証もないのです。もともと能力のある人ならそれほど時間をかけずに改な能力を身につけることが出来るかも知れませんが、凡人だとそうもいかない場合もあります。
こんな事を書いたのは、自分もプログラムを勉強していて何度も壁にぶち当たった事がありました、結局、自分で勉強して身につけるしか無く誰かに助けてくれるわけでもないのです。
何故ならプログラムって数学みたいなもので自分で意味を理解しないと使いこなす事ができないようになっていたりします。なので、勉強や鍛錬しか限界突破することは出来ません。
そこの業界で仕事をしたいのならばやはり、頑張るしかない。でも、精神が蝕むまで頑張るのは辞めましょう。悔しい気持ちもあると思いますが、そこは諦めて新たなステージに目を向けたほうが賢明かと思います。今までやってきたことを全然活かせない職場に飛び込むのも良いかも知れません。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ゲーム, こと, それ, ため, プログラム, もの, わけ, 事, 人, 今日, 何, 何度, 何故, 保証, 凡人, 勉強, 場合, 壁, 必要, 意味, 技術, 挫折, 改, 数学, 明日, 時間, 毎日, 理解, 環境, 突破, 簡単, 能力, 自分, 試行錯誤, 誰か, 身, 近道, 鍛錬, 限界, 題,
デモ55ajax=jqueryを使わずに非同期通信するのが普通に。
2022.05.03
おはようございます。
祝日が始まりましたね、お休みの方も多いかと思います。
そんな中、連休からプログラミングの勉強を始めようと考えている方もいるかと思いましたので、フロントエンドエンジニアがバックエンドエンジニアとの連携で一番初めにぶち当たる壁である、非同期通信のコードを書きました。コードをコピペして階層など合わしてご自身の実行環境で実行してみてください。この頃ではフロントエンドエンジニアの方は非同期処理でコードを書いているので、非同期という言葉を聞くことも多くなったと思います。
非同期処理は処理の結果を待たずして次の処理を実行することです、非同期通信も同じです。バックエンド側に処理を問い合わせて処理の結果は待たずして行います。結果も順番に帰ってくる訳では無いのでフロント側で処理するときに注意も必要になります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="api">非同期通信</button>
<script>
document.getElementById("api").addEventListener("click", api);
function api() {
let data = [];
data.push({"name":"樹龍"});
console.log(param(data));
fetch("./api.php", {
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body:param(data)
}).then(
response => response.json()
).then(data => {
console.log('data', data);
}).catch(error => {
console.log('error', error);
});
}
function param(data){
let str = [];
for(key in data){
for(keyname in data[key]){
str.push(keyname +"="+ encodeURIComponent(data[key][keyname]));
}
}
return str.join("&");
}
</script>
</body>
</html>
<?php
$name = htmlspecialchars(strip_tags($_POST['name']));
$response['res'] = $name;
print json_encode($response);
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
55, ajax, DOCTYPE, gt, html, jquery, lang, lt, quot, エンジニア, エンド, お休み, コード, こと, コピペ, ご自身, デモ, とき, バック, プログラミング, フロント, 中, 処理, 勉強, 同期, 壁, 実行, 必要, 方, 普通, 次, 注意, 環境, 祝日, 結果, 言葉, 訳, 通信, 連休, 連携, 階層, 頃, 順番,
今頃になってdocker(ドッカー)を勉強していたりしている。
2022.04.30
おはよう御座います。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>
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4, 5, 8, docker, GW, Hub, php, url, イメージ, エンジニア, お待ち, カー, ゴールデンウィーク, しれっと, つもり, バーチャル, ボックス, 人, 今, 今日, 今頃, 仕事, 休み, 公開, 内容, 勉強, 半ば, 提供, 方, 明日, 最後, 来月, 構築, 環境, 皆さん, 自分, 記載, 追記,