技術 のすべての投稿

WordPressで400万ページ投稿するには

会社情報のサイト https://awb.jp/
当初はまじめに記事をガンガンアップでしていた。
数万ページくらいでカップラーメンができるくらい遅いページ表示。
ページ投稿もどんどん重くなり、投稿にもカップラーメンできそうでした。
あきらめて、全部消して、ページ投稿の見直し。

■ページ投稿
いろいろなCSVアップツールでやってみたが、タイムアウト等でほぼ無理。
直接投稿のプログラムをたたきます。
データも最小限にします。

wp_insert_postで投稿ページ登録。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_insert_post

-プログラム例:実際はもう少し複雑—————————————————-

        $post_id = wp_insert_post(array(
            'post_type' => 'post',
            'post_title' => $item[0],
            'post_content' => $item[2],
            'post_status' => 'publish',
            'post_category'  => $item[3],
            'tags_input' =>  $item[4],
            'comment_status' => 'closed',
            'ping_status' => 'closed',
            ));

——————————————————
他のデータとリンクしたい部分をカスタムフィールドに入れておきます。
add post meta
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_post_meta
——————————————————

add_post_meta($post_id, 'hogehoge_number', $item[7])

——————————————————
ひたすら、1ページごとにサーバに投げます。

ページは最小限のデータにして、カスタムフィールド(上記の例だとhogehoge_number)にキーをいれておき、
wpの標準のテーブルと付加価値的データのテーブルを作り、カスタムフィールドで連携して、ページを生成します。

■不具合がでる。
プラグインによってはエラーになります。
サイトマップを作るプラグイン等は特に注意です。

WP「GDPR Cookie Consent」 で「設定を更新できません。」の対応方法

WordPressのコンテンツでの「GDPR(General Data Protection Regulation:一般データ保護規則)」用プラグイン
CookieYes | GDPR Cookie Consent & Compliance Notice (CCPA Ready)

このプラグインは設定が簡単ですが、「「設定を更新できません。」と出て、更新されないことがある。
WAF(Web Application Firewall)でブロックされている可能性があるので、
WAFのログを確認してください。
「*****/edit.php?post_type=cookielawinfo&page=cookie-law-info」というエラーログが出ていたら、
設定の時だけ、WAFをオフにしてください。設定が終わったら、オンにしてください。

Flutter2インストールメモ(MAC)第1回

Flutter(フラッター)は、Googleによって開発されたフリーかつオープンソースのUIのSDK。
クロスプラットフォームアプリケーションを開発することができる。

今回はMACでのインストール。

1.Flutterダウンロード
https://docs.flutter.dev/get-started/install/macos

MAC OSにFlutterの開発環境を入れる。
ダウンロードボタン「flutter_macos_2.10.0-stable.zip」からダウンロード

2.格納場所に格納
$ mkdir ~/development
$ cd ~/development
「~/Downloads/にダウンロードされているものが、展開されているので、」
$ mv ~/Downloads/flutter ./flutter
$ export PATH=”$PATH:`pwd`/flutter/bin”

3.環境確認
$ flutter doctor
これで何が足りないかをチェックしてくれる。

[×]が出ているものが足りないものなので、入れていく。

4.足りない環境を追加

4.1.1 Android Studioを入れる

[✗] Android toolchain – develop for Android devices
✗ Unable to locate Android SDK.

の表示がある場合の作業

https://developer.android.com/studio/index.html
Android Studio をダウンロード。

Intel チップか、APPLE チップかを選んでインストール。

4.1.2 Android SDK Command-line Toolsを入れる。

Android Studioを起動して、上のメニューの「Preferences 」を選ぶ

Appearance & Behavior > Android SDK
Android SDK Command-line Tools (latest) を入れる。

4.1.3 android-licenses 処理

$ cflutter doctor –android-licenses

ライセンスを承認のメッセージがくるので、yを入力。

4.2 Xcode

[✗] Xcode – develop for iOS and macOS
✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
Download at: https://developer.apple.com/xcode/download/

の表示がある場合の作業

4.2.1 Xcodeをインストール

https://developer.apple.com/xcode/download/では最新がベータ版になっていることがあるので、
App StoreでXcodeの最新版を入れる。インストールには数時間かかるので注意しましょう。

4.3 CocoaPods インストール

$ sudo gem install cocoapods  

4.4 再度確認

$ flutter doctor で[×]がないことを確認。

5 Android Studio 設定

Pluginsを選ぶ、Flutterを選択し、インストール

 

次回に続き・・・

 

 

 

 

地図のオープンデータ「OpenStreetMap」

地図を使ったサービスを考える場合はGoogle Mapを使用しますが、
「$200 usage every month for no charge. That’s 28,500 maploads per month for no charge. 」
(https://mapsplatform.google.com/pricing/?hl=ja)
とあり、有名サイトになった場合には、有料になります。

そこで地図のオープンデータの使用を考えてみよう・・・・
OpenStreetMap(OSM)は、誰でも自由に地図を使えるよう、みんなでオープンデータの地理情報を作るプロジェクトです。
https://openstreetmap.jp
「OpenStreetMapとその協力者をクレジットすれば、データを自由にコピー、配布、送信、利用することができます。変更したり翻案したりしたデータは同じライセンスに従う場合のみ、提供することができます。」

Googleマップのようにマーカーを付けることが可能。
https://www.openstreetmap.org/?mlat=緯度&mlon=経度

弊社の位置だと、こちら。
https://www.openstreetmap.org/?mlat=35.70010&mlon=139.77402

ZOOMしたい場合は、URLに#map=ズームの数/緯度/経度を追加。
https://www.openstreetmap.org/?mlat=35.70010&mlon=139.77402#map=17/35.70010/139.77402

埋め込みも可能。

大きな地図を表示

公開されているGPSトラッキングが見えるので、精度の悪いGPS端末があるとズレることはあるが参考値としてはよいと思う。

弊社秋葉原駅付近のトラッキングデータ。

“Base map and data from OpenStreetMap and OpenStreetMap Foundation”

DX白書2021|ディスラプターの脅威

IPAの発表した「DX白書2021」

2021年10月11日公開 独立行政法人情報処理推進機構 社会基盤センターより
https://www.ipa.go.jp/ikc/publish/dx_hakusho.html

DXの定義が曖昧ですが、IPAとしては
IPAとしては、「IoTから得られたデータを活用し、次に企業として進む方向を検討することができる仕組みを作って、その仕組みで常に変化し続ける(変革する)ことがDXです。」
(引用:「DXってIoTとどこが違うの?」https://www.ipa.go.jp/ikc/reports/mfg-dx-faq0104.html)
とのこと。

DX白書2021の内容で衝撃的なのは、IT、AIなどの日米を各項目で比較しているのですが、
凄いのはアメリカは30%以上が開発技術で「コンテナ/コンテナ運用自動化」を活用している。
日本は9%です。
AI導入はアメリカ44%、日本20%。
日本はDXが遅れていることをレポートでは強調している。

比較表で気になったのはこちらです。
「外部環境変化への機会としての認識」

(引用:DX白書2021)

日米誤差の範囲なのですが、1項目だけ10%以上の影響意識の差があります。
「ディスラプターの出現」の項目です。影響があると考えいるのはアメリカ68%、日本54%。
ディスラプター(disruptor)とは
創造的破壊者で、ここでいう意味は最新デジタル技術を使い旧サービスや市場を破壊的変えるサービスや企業になります。
「Airbnb」「Uber」「Netflix」などがあります。

日本では、卸売仕組みや規制や地域サービス格差がまだある為、意識が薄いと思いますが、
アメリカでは意識される項目になったことがわかります。
「Netflix」でいうと、日本のレンタルビデオは壊滅的影響がありました。

CSS & JavaScript Toolbox で不具合?

CSS & JavaScript Toolbox とはWordpressで使うプラグインです。HTMLやCSSやJAVAスクリプトなどを組み込む時に
非常に便利な機能があるプラグインです。

CSS & JavaScript Toolbox

JAVAスクリプトで<script>と書いて「SAVE」ボタンを押しても、反応になし。
バグ?echo “<script>”と書いても「SAVE」ボタンを押しても、反応になし。
いろいろ調べてみて、バージョンをダウングレートしても同じ反応。
CSS & JavaScript Toolbox が原因ではないのでは・・・・

そうです、サーバ側の「WAF」(Web Application Firewall)が原因です。
Webアプリケーションからの攻撃からサイトを守るセキュリティ対策です。

WAFのログを見ると
****/wp-admin/admin-ajax.php?action=cjtoolbox_api&controller=blocks-ajax&CJTAjaxAction=save_blocks
xss-tag-1 

「xss-tag-1」でアクセスを排除したログが出ているのがわかります。
WAFを無効にすると、「SAVE」ができるようになります。

.htaccess でこのルールを許可できますが、セキュリティ上問題が発生する可能性があるので
慎重に設置してください。
SiteGuard_User_ExcludeSig xss-tag-1

ロール

ロール
(役、役割、役目、役柄、任務)
ロールは一般的には、「管理者」「承認者」「登録者」「ユーザー」などがあります。
WEBのブログですと、「サイト管理者」「編集者」「投稿者(ライター)」「デザイナ」「コメント管理者」
などになります。
IoTでのファクトリ関連ですと、「運営管理者」「生産計画者」「素材管理者」「ライン管理者」「生産管理者」「生産者」などとなります。

役割、権限を設定することにより、機能制限や表示制限を行います。
役割と作業内容を出し、機能や表示の有り無しを表にするのが、システムの要件定義では必要になります。
役割が重複する使用者が発生する場合があるので、しっかり検討してください。

MantisBT 2.24.1 でインストールで文字化け

バグ管理システムMantisBT 2.24.1で順調インストールでしたと思ったら、「検索」や「マイビュー」で文字化け。
一瞬「Warning: 2702 in *****/core/session_api.php on line 227」のエラーがでて、すぐに文字化けしたり、
そのまま文字化けの画面だったり。
文字化け

対応方法、MantisBTをインストールしたディレクトリに
.htaccess ファイルを配置してください。
下記の内容を追記:

#PHP
php_value output_handler none

これで直ると思います。

https://mantisbt.org/

Electric Imp でI2C

Electric Imp でI2Cを動かす方法

下記は参考に書いたサンプルソースで実際に動く保証をするものではありません
——————————————————————
[Device]
——————————————————————

//6軸加速度センサMPU-6050の値を想定しています。
i2c <- hardware.i2cQP;

//最初に、I2Cを使うことを宣言します。
//i2cQPは、使用するI2Cのポート番号です。
//imp004m impExplorer Kitで使用できるI2Cは i2cQPの
//みなので問題ありませんが、
//モジュールや基板によってはポート番号が変わる場合
//がありますのでご注意が必要で

i2c.configure(CLOCK_SPEED_400_KHZ);
//I2Cのクロックを設定します。I2Cのクロックはセンサーの
//仕様に合わせて設定しますが、基本は400KHzで動作します。

local address = (0x68<<1);
//I2Cでアクセスするセンサーのアドレスを指定します。
//今回使用するセンサーはMPU-6050です。MPU-6050のアドレス
//は b1101000 であり、
//16進数で記述すると0x68になります。 ここではI2Cのアドレス
//を8ビットで表記するので、1ビット分左にずらして指定します。
//readとwriteを使ってデータのやりとりを行います。

i2c.write(address,"\x6B\x00");
//MPU-6050のデーターシートより、0x6Bに0x00を書き込むことで
//Resetが解除され使用開始することができます。
//I2Cでのデータのやりとりは文字列で行います。16進数のデータ
//を\x00と表記して記述します。癖がありますが、慣れると書き
//易いです。
//続いて、readですが、

local result = i2c.read(address,"\x3b", 14);
//と記述します。"/x3b"は、読み出したいレジスタのアドレスで、
//その次の14で読み出すデータサイズを指定します。
//これにより、3軸の加速度データとジャイロデータを読み出す
//ことができます。
//その後、センサーより受け取ったデータを Agent Codeに転送します。
agent.send("reading.sent", result);

——————————————————————
[Agent]
——————————————————————

device.on("reading.sent",stream);
//で受け取り、指定したstream関数を読み出します。

function stream(data) {
server.log(data);
}

//これにより、センサーを受け取ったデータを確認することができます。

文・ソース:北神

株式会社アバンドでは、IoTに関するネットワーク開発、ハードウエア開発を行っております。

まずは、お気軽にお問い合わせください。