動かざることバグの如し

近づきたいよ 君の理想に

Ubuntuの/bin/shはbashではなくdashとかやつ

めっちゃハマった。。

どういうこと

# ll /bin/sh
lrwxrwxrwx 1 root root 4 Feb 18  2016 /bin/sh -> dash*

は?????????

dash is

ashとかいうBourne互換シェルDebian版 だからd+ashでdash

厄介なのがBourne互換シェルを唄っているくせにbash等の構文の幾つかをサポートしていない点である。

たとえば

echo $RANDOM

というシェルスクリプトを適当に用意して/bin/bashで実行すると動く

/bin/bash main.sh 
6778

が、/bin/shにするととたんに動かなくなる。

/bin/sh main.sh 

これはshではなくdashが動いてしまっているせい。事実、CentOSのshなら動く

/bin/sh main.sh 
802

違い一覧よこせ

CentOSでcan't create Thread: Resource temporarily unavailable対策

参考リンク

環境

  • CentOS6

ある日いきなりSSH接続ができなくなった

ログ見ると「ThreadError: can't create Thread: Resource temporarily unavailable」。どうもスレッド数が制限数の上限に達してしまったらしい

現在のスレッド数

ps aux -L|wc
    602    9807  123207

上の例だと602

スレッド数の上限確認

# ulimit -u
1024

少ねえ

変更

/etc/security/limits.d/90-nproc.confを書き換える

デフォルト

# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     1024
root       soft    nproc     unlimited

修正後

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

* soft nproc 38512
* hard nproc 38512

メインデスクトップPCのOSをUbuntuに変更した

今までWindows使ってきたけどアップデート面倒だしってことでなんとなく変えた

変更先

まだBeta版だが実質候補版?の立ち位置 いまのところバグっぽいバグには遭遇していない

すごかったのが特にローカライズされてないバージョン入れたのに日本語化されてるしMozcも最初からインストールされていた点 最近のUbuntuすごいね(こなみ

インストールしたもの

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom
  • Gparted

買ったばかりのNexus5XにカスタムROMを焼くまで

中古でNexus5Xが16,000円と結構安く買えたので早速弄ってみた。

用意するもの

  • 起動できるNexus5X
  • adbが叩けるWindowsPC
  • 文鎮化しても泣かない心

流れ

  • ブートローダーアンロック
  • Data領域の暗号化解除
  • 純正のimg焼いて8.1にアップデート
  • TWRPのインストール
  • 好みのカスタムROMを焼く

以下記録

ブートローダーアンロック

設定より「ビルド番号」を連打してデベロッパーモードになる。で開発者向けオプションより「OEMロック解除」をON

ちなみに解除して再起動した時点で全データがぶっ飛ぶので注意

Data領域の暗号化解除

もしかしたらこの作業はいらないかも?

ボリュームキーのマイナスを押しながら電源を入れるとブートローダー画面に入れる。

その状態で端末をPCにつないで以下実行

fastboot format userdata

これでdata領域は抹殺される

純正のimg焼いて8.1にアップデート

元々入手したAndroidがなぜか6のままで古かったのでいったん新しいのにアップデート

ココから「8.1.0 (OPM3.171019.016, Mar 2018)」をダウンロード(より最新のがあればそれをダウンロード)

解凍してflash-all.batを実行

再起動すると8.1にアップデートされているはず

TWRPのインストール

先にPC側にADBをインストールしておいて、 adb devices で認識できるようにしておく

ココから最新のTWRPをダウンロードしてimgを焼く 端末を再度ブートローダー画面にした状態でPCにつないで

fastboot flash recovery ~~.img

でインストールできる

カスタムROMのインストール

ここまでくればゴールしたも同然

XDAのスレ一覧から好みのカスタムROMをダウンロードしてTWRP経由で焼く 終わり

Google Text To Speech APIをcurlで実行してみる

Mac or Linux環境で動く

必要なもの

コード

#!/bin/bash

text="$TEXT"

curl -H "Content-Type: application/json" --data "{
  'input':{
    'text':\"$text\"
  },
  'voice':{
    'languageCode':'ja-JP',
    'name':'ja-JP-Standard-A',
    'ssmlGender':'FEMALE'
  },
  'audioConfig':{
    'audioEncoding':'mp3'
  }
}" "https://texttospeech.googleapis.com/v1beta1/text:synthesize?key=$GOOGLE_API_KEY" |
  jq .audioContent -r | base64 --decode |
  mpg123 -

実行

GOOGLE_API_KEY=さっきのキー TEXT=こんにちは ./tts.sh