趣味のプログラミングで遭遇した技術的トラブルや疑問を調査して解決するお話

WordPressでテーマ適用時に初期コンテンツを自動的に登録する方法
wordpress

WordPressでテーマ適用時に初期コンテンツを自動的に登録する方法

目的 カスタムテーマを適用すると同時に、必要な固定ページなどを一括で登録する 背景 企業向けサイトを作成するときに、いつでもコンテンツをリセットできるような環境を作りたいから 他の環境に移行するなどしたときでも簡単にセットアップできるようにしたいから 解決策 1. 初期コンテンツの作成 下記のようにテーマディレクトリの下にinitializeディレクトリ配下に初期コンテンツを配置する mytheme/initialize/index.page.html mytheme/initialize/contact.page.html mytheme/initialize/form.wpcf7_contact_form.html ... ここではタイトルとページ情報(固定なのかcontact-formなのか)

  • zienchan
    zienchan
jcodecでお手軽にbitmapをmp4にする
java

jcodecでお手軽にbitmapをmp4にする

目的 BufferdImageに展開されたBitmapをコンテナに追加してmp4動画を作成する 背景 連番PNGや画面キャプチャしたBitmapを動画に変換したい 環境 言語: Kotolin エンコード形式:H264 フレームレート:30FPS 解像度:VGA 解決策 SequenceEncoderを使えば簡単でした メモリ上のBitmapから生成する場合でもBufferedImageのラスタのByteArrayに突っ込んでやるなりしてBufferedImageを作ればそのままいけるはず val tDestinationFile = File("destination.mp4") val tEncoder = SequenceEncoder.create30Fps(tDestinationFile) //とりあえず30枚(1秒)

  • zienchan
    zienchan
OpenCVのMatとbyte[]の相互変換
opencv

OpenCVのMatとbyte[]の相互変換

Android向けOpenCVでMatからbyte配列にする方法とbyte配列からMatにする方法です byte配列からMatへの変換 //仮にVGAで8bitグレースケールとする final Mat tDistMat = new Mat(640, 480, CvType.CV_8UC1); tDistMat.put(0, 0, tSourceBytes); Matからbyte配列への変換 byte[] tImageBytes = new byte[(int) (tSourceMatImage.total() * tSourceMatImage.channels())]; tSourceMatImage.get(

  • zienchan
    zienchan
Fusion360の延長コマンドとは
fusion360

Fusion360の延長コマンドとは

Fusion360の延長コマンドについてまとめます 環境 Windows向け v2.0.4343 目的 延長コマンドは名前から察するに、付け足すコマンドなのは推測できますが挙動がよくわからなかったので調べました 結果 ある線が線の向きに対して交差する場所まで延長するコマンドなのがわかりました 下記の画像はそれぞれ、延長コマンドによって赤線部分が追加されることを意味します こんな感じで、異なる線と交差する箇所までが延長の対象となるようです また、線分には向き(?)があるようで、延長可能な向きとそうでない向きがありました 課題 ここまでで、ある線が線の向きに対して交差する場所まで延長できることがわかりました でも下記が何故延長できるのか説明できません/^o^\ 公式のヘルプも見たのですが、 線分を延長しても別の線分に直接接続されないことがありますが... とあります これがどんな時なのかわかりませんでした...orz

  • zienchan
    zienchan
Googleのマテリアルアイコンセットを使う
android

Googleのマテリアルアイコンセットを使う

アプリケーションを開発しているとなにかと困るアイコンですが、Googleが提供しているオープンソースなマテリアルデザインのアイコンを使うと捗るよというお話 目的 ソフトウェア開発で使うかっちょいいアイコンリソースが欲しい 解決策 GoogleのMaterial design iconsを使う どんなのがあるのか? GoogleのMaterial design iconsを参照するとリストが表示される ライセンスは? Apache License Version 2.0なので使いやすい 色を変更したいんだが白と黒しかないの? git clone https://github.com/google/material-design-icons して、SVGとかベクトル形式のものを動的に変更するなり変換してやればOK それ以外だとAndroid 5.

  • zienchan
    zienchan
GhostでAmazonアソシエイト広告の機能を追加する
ghost

GhostでAmazonアソシエイト広告の機能を追加する

デフォルトではaタグ(リンク)で貼り付ければ可能ですが、タグ毎に関連する書籍等を表示したい場合、テーマを拡張する必要があります 環境 Ghost v1.25.2 CasperTheme Version 2.3.3 目的 投稿記事に設定されたタグに該当するAmazonの商品を列挙して表示する ただしGhostのプラグインとしては実装せず、単純なjsonpとすることで他プラットフォームへ容易に移植できるように実装する 背景 お勧めの書籍等をタグ毎にまとめたい コンテンツと広告をできるだけ別として管理したい 将来的にGhostから移行しても楽にしておきたいからGhostに依存するコードは書きたくない 解決策 Ghostに依存しないように実装するため、今回は単純なjsonpのモデルとjqueryによるレンダリングで実装する やることは、投稿を表示する際に投稿タグに紐付いたamazon商品を表示するだけ 1. テーマのダウンロード

  • zienchan
    zienchan
PhotoShopやIllustratorなどを使うと高確率でWHEA_UNCORRECTABLE_ERROR (0x00000124) になる問題
adobe

PhotoShopやIllustratorなどを使うと高確率でWHEA_UNCORRECTABLE_ERROR (0x00000124) になる問題

ネットサーフィンなら問題ないが、VMやAdobe系のソフトウェアを使うとブルースクリーンになる原因を調べました 環境 ------------------ System Information ------------------ Time of this report: 8/1/2018, 17:24:56 Machine name: ****-**** Machine Id: {} Operating System: Windows 10 Pro 64-bit (10.0,

  • zienchan
    zienchan
WrodPressでサイト制作するその前に考慮したいこと
wordpress

WrodPressでサイト制作するその前に考慮したいこと

"WordPressで企業向けのサイトを作ることになった" なんてこと、よくあると思います ...ありませんか?(白目) さて、世の中には沢山のWordPressテーマを使ったサイト制作の話がありふれていますが、技術的なアプローチ?に関する説明を見かけなかったので今回はWordPressで企業向け、または個人向けサイトを制作して公開、運用することになった場合の俺的ベストプラクティスをまとめました 本当は独自テーマを適用したら初期コンテンツが自動投入されるとか、テーマが依存するプラグインをどうやって通知するとかまで書きたかったんですが、長いのでこれらは次回にまとめます 突っ込みとかあったらコメントでお願いします そもそもWordPressでの実装が正しいのか? さて突然ですが、めでたく(?)WordPressでのサイト制作を依頼されたあなた 早速、WordPressでどう構築するかを考え始めま....せん まず初めは要件を見直すことをお勧めします お客さんは何もわかっておらず Webサイト作成 = WordPress なんて場合が結構あります(マジで)

  • zienchan
    zienchan
Fusion360のオフセット機能について
fusion360

Fusion360のオフセット機能について

オフセットコマンドは名前から察するに、大体予測はつきますが挙動としては移動して複製です もう一度言います 普段からAdobe Illustratorを使ってると少し違和感があるかもしれませんが、オフセットだけど移動ではありません 移動&複製です 下を見てもらうとわかりますが、オフセットは選択オブジェクトからの相対的な座標に対象を複製するみたいですね また"チェーン選択"とは、接続された線を一括で選択する機能のようです 例えば下記の図のように"チェーン選択"を外して任意の線を選択から外す(クリック)すると下記のようにオフセット対象から除外されます オフセット値に負の値でオフセットしたい、つまり相対的にマイナスの値を入力して反対に適用したいことがあると思いますが、位置に負の値を入力できないのでその時はパネルから"反転"

  • zienchan
    zienchan
Androidアプリでjava.lang.ClassNotFoundExceptionエラーになる
android

Androidアプリでjava.lang.ClassNotFoundExceptionエラーになる

今までは普通に動作していたあるアプリがAndroid 8系からデバッグで起動しなくなったので調査しました 環境 Android: 実機のAndroid 8系 Android Studio: 3系 proguard:有 言語:Java, C++(NDK) 現象 アプリを実機に転送して起動するタイミングでクラッシュする Logcatは下記の通り java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider:

  • zienchan
    zienchan
Fusion360のショートカットキー
fusion360

Fusion360のショートカットキー

Fusion360のショートカットキーをよく忘れるのでメモ ここにあるのは2018/07/26現在のものです 最新の情報については公式ヘルプを参照してください 2018/07/30 追記 タイムリーでしたが、2018年07月27日(金)にリリースされたv2.0.4343からCKS(カスタムキーショートカット)に対応したみたいです 但し、まだ割り当てたられたキーボードショートカット全体の一覧と変更機能は提供されていないようなので、ちまちま変えていくしかありません 使い方は、対象の操作の右側の展開ボタンを開いて、"キーボードショートカットを変更"から変更します なお、下記はシステム予約されており、割り当ては不可です 元に戻す:

  • zienchan
    zienchan
Fusion 360でスケッチの寸法を設定する方法

Fusion 360でスケッチの寸法を設定する方法

実際、一度覚えてしまえば簡単なのですが、それまではちょっと探してしまったのでまとめます 環境 Fusion360(Windwos版) v2.0.4285 目的 一度確定したスケッチの任意の寸法について変更したり、寸法の位置を変更する 背景 ものすごく必要な機能だから 解決策 スケッチの任意の2点について新たに寸法(サイズ)を適用する方法 スケッチ寸法ツール(ショートカットキー:D)を使う 画像の説明には スケッチジオメトリの寸法を作成します。寸法を使用して、スケッチオブジェクトのサイズまたは位置をコントロールします。 寸法を記入するスケッチ曲線を選択し、寸法を配置する領域を選択します。 とあるがちょっとわかりづらい 要は新規の場合、

  • zienchan
    zienchan
Fusion360のトリム コマンドとは
fusion360

Fusion360のトリム コマンドとは

トリムコマンドはトリム(除去)から察するに、何かを除去するコマンドなのは推測できますが挙動がよくわからなかったので調べました めっちょ簡単に説明すると、トリムは指定の曲線を、交差する箇所まで除去するコマンドです 言葉だとわかりづらいので、画像で見るとわかりやすいです 下記の画像はそれぞれ、トリムコマンドによって赤線部分が除去されることを意味します 内側の線を選択したとき 上の線を選択したとき 右の線を選択したとき 右下の線を選択したとき こんな感じで、異なる線と交差する箇所までが除去の対象となるようです

  • zienchan
    zienchan
格安ロジックアナライザをLinux版のPulseViewで使ってみた話
electronics

格安ロジックアナライザをLinux版のPulseViewで使ってみた話

前回に引き続き、怪しい格安ロジックアナライザを試していきます こいつが1150円で購入できる怪しいロジックアナライザです HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品] ※画像クリックで商品ページが開きます とりあえずこいつはSaleae Logicデバイスのクローンだということまでは前回までで判明しました 安定しているかはさておき、色んな意味でお勧めできません とりあえず普通に使う(使えるようにする)ために今回はオープンソースなsigrokを使ってテストしていきます 環境 Linux Mint 17.3 Rosa

  • zienchan
    zienchan
Amazonの格安ロジックアナライザを購入してみたお話
electronics

Amazonの格安ロジックアナライザを購入してみたお話

ちょっと前に偶然、amazonで1150円(送料込)程度で販売しているロジックアナライザを見つけたので購入して試したお話です 購入したロジックアナライザ 今回購入したロジアナはこいつ HiLetgo 24MHz 8チャンネル USBロジックアナライザ 8CHロジックアナライザ UART IIC SPI デバッグ MCU FPGA ARMに対応 [並行輸入品] ※画像クリックで商品ページが開きます 24MHz、8チャンネルのUSBロジックアナライザで、UART/IIC/SPI、MCU/FPGA/ARMに対応しているとのこと ...なんかうーん...まぁいかにも中国の雰囲気な製品って感じですね

  • zienchan
    zienchan
WebViewで表示されるHTMLをネイティブっぽく振る舞う方法
html

WebViewで表示されるHTMLをネイティブっぽく振る舞う方法

AndroidやiOSアプリケーション内でWebViewまたはUIWebViewを使用してHTMLをレンダリングしたいことがあります しかしハイブリッドアプリ(HTMLとネイティブの混合アプリ)の場合は何も考えずにやるのはUI/UX的によろしくないことになってしまうかもしれません 目的 何も考えずにWebViewにHTMLを表示してしまうと表示が崩れたり、画面内でコピーや選択、拡大縮小が可能だったり、リンクタップ時の画面遷移の仕方がネイティブ画面(Java/Swift/objective-c実装)の実装と異なるなどアプリケーションの操作に一貫性がなくなってしまうことが考えられます 今回はこれらを何とかする方法をまとめます 対応プラットフォーム iOS、Androidとしますが、PCでも大丈夫です ※後述するコールバック用のプロトコル実装がPCの場合はないので、アプリからの表示かどうかの識別は必要です iOSは8以降、Androidは2.3系以降を対象とします 課題 たかだかHTMLをアプリで表示するだけでも考えなければいけないことは沢山あったりします HTMLがフルスクリーン(横幅いっぱい)表示されない問題 拡大縮小できてしまう問題

  • zienchan
    zienchan
Ghostでコードをシンタックスハイライトする - Prism.js
ghost

Ghostでコードをシンタックスハイライトする - Prism.js

Ghostのデフォルトのスタイルでも十分に洗練されており綺麗ですが、個人的にはシンタックスハイライトくらいは欲しいので、別途拡張していきます 環境 Ghost v 1.24.9 目的 GhostのデフォルトテーマであるCasperから派生した独自テーマにprism.jsを追加する 背景 もっと高機能なシンタックスハイライトが欲しい! 解決策 1. GhostのCasperテーマを複製して独自テーマ(casper-custom)を作成する もし既に独自テーマを作成している人はこの作業をスキップできます デフォルトのCasperテーマを使用している人は画面側からの操作では上書きができないのでこの作業が必要です casperテーマから派生してcasper-customテーマを作成する方法はこちらの記事を参考にしてください 2. 適したPrism.jsを生成してダウンロード prismjs.comからテーマや必要なプラグインを選択して最小限のprism.jsとprism.cssを生成します ここで全部チェックすると1MB近くなるのでマイナーな言語などは除外したほうが良いです

  • zienchan
    zienchan
Fusion 360の押し出しツール等の操作プロパティ(ブーリアン演算)の種類
fusion360

Fusion 360の押し出しツール等の操作プロパティ(ブーリアン演算)の種類

Fusion360の中で最も良く使うツールの1つに"押し出し"ツールがあります これはスケッチからボディやコンポーネントを作成するツールの一種ですが、これらの編集ツールは他のボディと重なった際の挙動についてどのように処理するかを指定することが出来ます 環境 Fusion360(Windwos版) v2.0.4285 操作の変更 ツールのダイアログボックスにある[操作]から重なり合うボディに対しての挙動を変更できます これは一般的にブーリアン演算と呼ばれます 結合 新たに編集する形状と他のボディが交差した際に結合して1つのボディとして扱います 切り取り 新たに編集する形状と他のボディが交差した際に編集対象の形状を、交差するボディから切り取ります 交差 新たに編集する形状と他のボディが交差した際に、交差する領域だけを残します 新規ボディ 新たに編集する形状を全く新しいボディとして形成します 交差領域に対して何の編集も行いません イメージとしては新規レイヤーに描画するようなものです

  • zienchan
    zienchan
さくらVPSでDockerを楽してインストールする方法(CentOSまたはUbuntu)
vps

さくらVPSでDockerを楽してインストールする方法(CentOSまたはUbuntu)

実はこれ最近知ったんですが、いつの間にかサーバーをセットアップするときにスクリプトが選択できるようになってました スタートアップスクリプトとは スタートアップスクリプトについてを参照すると、スタートアップスクリプトとは、どうやらサーバーセットアップ後の初回起動時に発火するスクリプトで、パブリックスクリプト(さくら側が提供するスクリプト)とカスタムスクリプト(自分で作るスクリプト)の二種類があるみたいですね なるほど。同じサーバーを何台も展開する場合には確かに便利な機能です ただ、これらのスクリプト使うにはサーバー作成時にスクリプトを選択しないとダメっぽい うーん。ってことは、サーバーを構築した後では使えないってことか... これからサーバーをセットアップする人は楽できる とりあえず、まだサーバーを作成していない人でDcokerとDockerComposeをインストールしたい人は、さくらVPSコントロールパネルから[スクリプト]を選択して、"CentOS_DockerCompose"や"

  • zienchan
    zienchan
Fusion 360で重なっているオブジェクトを選択する方法
fusion360

Fusion 360で重なっているオブジェクトを選択する方法

環境 Fusion360 v2.0.4285 目的 重なり合ったオブジェクトから対象のオブジェクトを選択したい 背景 スケッチ寸法ツールを使うときに重なり合ってるオブジェクトがあり、そのままでは背後のオブジェクトが選択できないのでなんとかしたい 結果 まさかの左クリック長押し こんな感じに[深さ]タブに対象オブジェクトが並んでると思います マウスオーバーすると、対象のオブジェクトがハイライトしてくれるので名前が重複してても何とか識別できますね [親]タブがまだちょっと使ったことがないので用途がわかりません なんだろう。名前からすると親オブジェクトの一覧...っぽいんですが子ではなく親ってのがいまいちよくわかりません

  • zienchan
    zienchan
さくらVPSでSSL対応(Let's Encrypt)した複数ドメイン(WordPress)をDockerで運用する方法
vps

さくらVPSでSSL対応(Let's Encrypt)した複数ドメイン(WordPress)をDockerで運用する方法

結構、この構成のニーズがあるんじゃないかと思うのでまとめました 目的 1つのさくらVPSで複数のWordPressサイトまたはWebサービスを無料でSSL対応して運用する 背景 可能な限り低コストで複数サイトをHTTPS対応して運用したい 解決策 詳しい説明は省きますが、複数のサイトを同一ホスト上で稼動する場合にはリバースプロキシを使います それぞれのサイト(サービス)はdockerで立ち上げます アクセスのイメージとしては、下記のような感じです e.g. 1つのVPS上にnginx(webサイト)、ghost(ブログサイト)、CMS(wordpress)サービスを展開した場合 WWW <-----> PROXY <-----&

  • zienchan
    zienchan
PDFBoxでjava.lang.OutOfMemoryErrorと性能問題に悩まされたお話
java

PDFBoxでjava.lang.OutOfMemoryErrorと性能問題に悩まされたお話

PFDファイルを扱う場合にはPDFBoxを使うとめっちゃ高機能で便利です でもコイツ、よく理解せずにえいやって使うと簡単にメモリ周りでハマります ...ハマりませんか? 私は見事にハマりましたorz 前提環境 PDFBox v2.0.8 Java 1.8 やろうとしたこと 簡単に説明すると、 あるテンプレート用のPDFファイルがあり、このテンプレートPDFの1ページ目をメモリに展開する テンプレートの内容に追記モードでメモリ上で書き換える 出力先のPDFストリームへ書き換えたページを追加する つまり、よくある帳票システムをPDFでやろうとしたんです 100ページくらいの描画なら普通に動く "やろうとしたこと"を素直に実装した下記のコードは実際、環境やテンプレートPDFのファイルサイズに依存するものの、恐らく100~200枚くらいなら期待通りに動作します 下記はx:

  • zienchan
    zienchan
Ghostに問い合わせフォーム(Google Form)を追加する
ghost

Ghostに問い合わせフォーム(Google Form)を追加する

Ghostはメール送信関連の機能を有していますが、少なくとも現在は標準的な問い合わせフォームの機能を提供していません ここでは、Ghostで構築したサイトにGoogleFormを使って問い合わせフォームを追加する方法についてまとめます 目的 Ghostで構築されたサイトにWordPressのContactFormのような問い合わせページを追加したい 背景 何らかの連絡手段は用意しておきたいが、メールアドレスは公開したくないためメールフォームを設置したい 選択肢 外部のメールフォームサービスは数多く存在し、かつGhostが静的ページを生成できる(HTMLタグに対応している)ことから多くのサービスがそのまま使用可能と思われる 解決策 ここでは最も無難な外部サービスであるGoogleFormを採用することした 理由は割と柔軟で無料で広告もなく日本語に対応しており設置も管理も楽だからだ 入力項目(質問)を作成する GoogleFormで新しいフォームを作成し、まずはタイトルを入力する 仮にメールアドレス、名前、問い合わせの種類、内容を求める場合、項目を下記のように追加していく メールアドレス ※このとき、メールアドレスを収集するか否か問われるので有効にしておく

  • zienchan
    zienchan