投稿

ラベル(php)が付いた投稿を表示しています

キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

PHP でなぜかjsonエラー

イメージ
外部サーバ上では動作  サーバに設置されているコードをテストしていて、おかしなエラーが出ることに気づいた。 Message: Call to undefined function json_encode() って、何で?って感じ…。 今回、新たに立てたVPSでは、Ubuntu20.04 + Apache2 + PHPで問題なく動作している。 その前のサーバも、同様な構成で動作している。 いつも使っているLocalマシン上で動作しない。 気持ち悪いし、テストできないので、原因追及をする。 このマシンだけは、2年前ほどに新規に調達したマシンで、当初よりUbuntu18.04で運用。 昨年20.04にdist upgradeしたマシン。 Cleanに入れてはいないので、その影響かも…。 phpinfo()を実行すると、jsonの項目がない。 そりゃ、動かないよね。 そこで、端末から念の為、入れてみる。 $ sudo apt install php7.4-json パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています                状態情報を読み取っています... 完了 php7.4-json はすでに最新バージョン (7.4.27-1+ubuntu20.04.1+deb.sury.org+1) です。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 おや?入っているという。 $  sudo apt list | grep json php-json-schema/focal,focal,now 5.2.9-1 all [インストール済み、自動] php-json/focal,focal,now 2:8.0+91+ubuntu20.04.1+deb.sury.org+1 all [インストール済み] php-services-json/focal,focal,now 1.0.3-1build1 all [インストール済み] php5.6-json/focal 5.6.40-57+ubuntu20.04.1+deb.sury.org+1 amd64 php7.0-json/focal 7.0.33-...

PHPでsnmpを叩く

snmpを実際に使ってみる 前回、「 WindowsでSNMPを試す 」ということで、Linuxマシン上のsnmpwalkを使用して情報を取得できることは確認した。 今回は、PHPで無理やり情報を取得してみる。 本来はPHP上のsnmp用関数を利用するのが良いのだろうが、前回snmpwalkが動作するのを確認しているので、子プロセスで動かして情報を拾ってみる。 今後、Web上に出力するとかファイルん書き込むとか、Nativeの関数もあるといううことでPHPを選択してみた。 さっくりとテストコードを書いてみる。 ターゲットは、BuffaloのNAS、「TeraStation」にしてみる。 こいつは、設定でSNMPをONにすることで、ちゃんと返してくれるらしい。 <?php $cmd = "/usr/bin/snmpwalk"; $version = "-v2c"; $comunity = "TeraStation"; $ips = ["192.168.11.86"]; $oids = [     "1.3.6.1.4.1.5227.27.1.3.1.3.1"=>"GB",     "1.3.6.1.4.1.5227.27.1.3.1.4.1"=>"%" ]; foreach($ips as $ip){     foreach($oids as $oid=>$dummy){         $temp = exec("{$cmd} {$version} -c {$comunity} {$ip} {$oid}");         $values[$oid] = substr($temp,strrpos($temp," ")+1);     } } echo date("Y-m-d H:i:s "); foreach($values as $key=>$value){     echo ...

Termuxでどこでも開発

イメージ
Androidならでは… 前の前の機種(ASUS Zenfone2)の頃から、お世話になっているTermux。 出先での作業には欠かせない重要なツール。 https://termux.com/ これは何かというと、Android上でのTerminal Emulatorで、Linux開発環境と同等のコマンド・機能が使える。 しかもroot化の必要はないので、気軽に使える。 Google Playから普通に導入可能。 何ができるかというと とりあえず、現在の主な使い方は ssh(opensshをインストール)を入れて、出先から管理しているサーバに接続して作業するというのが主。 実際には sshaの方を使うと幸せ。 でもって、これらのツールはすべてaptで入れることができる。 おかげで、ノートPC無しでもサーバに接続して、何度も危機を乗り切った(笑) 現在作業中のもの あれこれ面白いので、インストールして試しているのだが…。 python3 + numpy GNU nano php7 clang + dev環境 ruby などを入れて、動かしている。 とりあえず、講義で使用するサンプルを作って、動作確認してみたり、気になったことを確認するのに片手でプログラミングして、さくっと動かせる。 試しに、PHPをビルトインサーバで動かして、phpinfo()を実行してみる $ php -S 192.168.0.100:8080 この状態で、他のPCから叩いてみると 普通のLinuxサーバで動かすのと何ら変わりない。 Andorid上のブラウザで実行するだけなら、 $ php -S localhost:8080 とすれば良い。 さすがに、1024ポートまではroot化していないので、利用不可。 もちろん、高機能ではないし、常にwebサーバとするには、電池の持ちも含めて、いろいろと問題があるけどね…。 そもそもwebサーバを動かしたという話も聞くけれど、スリープになったら落ちるとか…。 言語オタクには楽しい エディタは軽めのnanoで、書い...

UTF8の指定ではまった

MariaDB+PHPにて PHPでDB上のデータを大量に処理するプログラムを書いていて、おかしな現象に出くわした。 1万件+42万件+43万件のjoinで、必要なもののみ取り出して、updateをかけるという手作業ではやる気にならない処理なので、サクッと書いてぶん回すしかない…。 ローカルでmysqlモニタを使用してSQLを叩くと、問題なく結果が返ってくる。 でもって、サーバ上で実行すると、結果がEmpty…。 あれれ? 試しに、phpmyadmin上でSQLだけ叩いてみる。 ローカルと同じ結果になる。 何かがおかしい。  :  : $mysqli = new mysqli("localhost",$username,$password); if($mysqli->connect_error){   print('<p>データベースへの接続に失敗しました</p>'.$mysqli->connect_error);   exit(); } $mysqli->select_db($dbname); $mysqli->set_charset("utf-8"); $sql="SELECT bill.bill_id,bill_item.bill_item_id,bill_item_detail.bill_item_detail_id,              bill.billing_id,bill.bill_month,bill.bill_date,bill.deposit_receive_date   FROM `bill_item_detail`   join bill_item on bill_item_detail.bill_item_id=bill_item.bill_item_id   join bill on bill.bill_id=bill_item.bill_id   WHERE `bill_item_detail`.`name` LIKE '繰越残高' AND  :  :   order by bill.b...

phpMyAdminの設定

イメージ
コンソールもいいけれど… もちろん、ネットワーク越しに使うので、コンソールでmysqlコマンドや、mysqldumpなどは普通に使っていますが…。 ちょこっとデータを修正したり、複数のテーブルを見比べたりするのに、CUIでは不便なこともあるので、phpMyAdminを入れることが多い。 もちろん、今時はパッケージマネージャが装備されているので、インストールは簡単。 ubuntuなら apt-get install phpmyadmin でサクッと入るし、CentOSなら yum で同様にインストールは完了する。 ところが、このインストールだけでは、phpmyadminの設定情報を記録してくれない。 最近、使用頻度も上がっているのに、他の作業しているとタイムアウトを起こして、再度ログイン画面に戻ってしまう。これは面倒。 そこで、有効期間を1440秒から→14400秒に変えておいたりする。 『環境設定は、現在のセッションでのみ有効です。この設定を永続的に有効にするには、phpMyAdmin 環境保管領域が必要です。』とエラーが表示され、セッションが切れると元に戻ってしまう。  そこに書かれているリンクを踏んでも、あまり親切には書かれていないのだ…。 まずはtableを用意 一応、ドキュメント見ながら作業をする。 「create_tables.sql」を使えってことなので、探してみる。 # find / -name create_table.sql /usr/share/doc/phpMyAdmin-x.x.x.x/examples/create_tables.sql に有った。(ちなみにCentOSの場合の結果) なので、こいつを食わせればOK。XAMPとかならディレクトリさえ分かれば、phpMyAdminからインポートもできるだろうけど、リモートではそんな訳には行かない。 なので、mysqlコマンドから実行。 $ mysql -u root -p > source /usr/share/doc/phpMyAdmin-x.x.x.x/examples/create_tables.sql これでOKかというと、まだ不足で、/etc/php...