mobileprovision を Scala(Java) でロードする
iOS アプリケーションの ipa ファイルの mobileprovision を署名のないイメージにするためのコードです
package com.pigumer.ipa.test import java.io.FileInputStream import java.nio.charset.StandardCharsets import java.util.zip.ZipInputStream import org.bouncycastle.cms.CMSSignedData object LoadIpaApplication extends App { val fileName = "test.ipa" val fis = new FileInputStream(fileName) val zip = new ZipInputStream(fis) Stream.continually(Option(zip.getNextEntry)).takeWhile(_.isDefined).foreach { opt ⇒ opt.filter(entry ⇒ entry.getName.endsWith(".mobileprovision")).foreach { entry ⇒ val bytes = Stream.continually(zip.read()).takeWhile(_ != -1).map(_.toByte).toArray val xml = new CMSSignedData(bytes).getSignedContent.getContent.asInstanceOf[Array[Byte]] println(new String(xml, StandardCharsets.UTF_8)) } } }
Bouncy Castle のライブラリを使うことで簡単に署名のないイメージで取得することができます。 同じ方法で署名付きの Profile 等も読むことができます。
Network設定(1)
CLI でネットワーク設定を操作
- Rasberry Pi
bridge を作ってみる
$ sudo -s # ip link add name br0 type bridge # ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 82:db:31:03:84:ed txqueuelen 1000 (イーサネット) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2 bytes 762 (762.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
bridge と network interface をくっつける
# brctl addif br0 eth0 # ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 169.254.98.203 netmask 255.255.0.0 broadcast 169.254.255.255 ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (イーサネット) RX packets 22 bytes 1840 (1.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 21 bytes 4170 (4.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
dhcpcd で br0 にアドレスを振り直す
# dhcpcd -k # dhcpcd -n -H br0 # ip addr show 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.161/24 brd 192.168.1.255 scope global br0 valid_lft forever preferred_lft forever
Google Home mini
# apt-get update # apt-get install -y nodejs npm libavahi-compat-libdnssd-dev # npm cache clean # npm install npm n -g # n stable
$ npm init $ npm install google-home-notifier
const googlehome = require('google-home-notifier'); const language = 'ja'; googlehome.device('Google-Home', language); googlehome.notify('てすと', function(res) { console.log(res); });
Scala を使う例
Docker の restart policy
docker run 時に --restart で restart policy を設定できます(デフォルトは no)。
Flag | Description |
---|---|
no | 再起動しない |
on-failure | エラーで停止したときは再起動 |
unless-stopped | 明示的に停止していなければ再起動 |
always | 常に再起動 |
cec-client
Install
$ sudo apt-get install cec-utils -y
TVのon/offの確認
$ echo 'pow 0' | cec-client -s -d 1
TVをon
$ echo 'on 0' | cec-client -s -d 1
TVをoff
$ echo 'standby 0' | cec-client -s -d 1
Docker on Raspberry Pi
$ sudo apt-get update $ sudo apt-get upgrade -y $ sudo apt-get install docker.io -y
USBドングル
USBモデムとしても、アクセスポイントとしても使えるUSBドングルってないかなと思って、PIX-MT100 を買いました。 SIM は、mineo の DプランのmicroSIMカードを使っています。
設定は簡単で、microSIMをセットして、PCのUSBにつないで、http://192.168.0.1 にアクセスして、私の場合は、mineo なので、mineo の Dプラン のサイトをみて、APN等の設定を行いました。
(バルク品)PIX-MT100 Conte(TM) LTE対応USBドングル[初期不良対応][数量限定]
- ジャンル: モバイルWi-Fi
- ショップ: ピクセラ オンライン 楽天市場店
- 価格: 10,000円