UbuntuでCitrix Receiverを使ってVPN越しにRDPする時のtips

firefoxにCA証明書を登録してるのに,証明書がtrustedじゃないよって怒られる時のtips

前提

  • VPNを受けてRDPを受け付けるサーバ側は用意されているものとする.
    勤務先とか勤務先とか勤務先とか
  • 必要な証明書はcrtとかcerとかのファイルがあるものとする

手順

  1. firefoxをインストール.ubuntuのdesktopを入れてたら最初から入ってるかも
  2. Citrix Receiverをインストール.
  3. 証明書をインストール
    • 個人証明書
    • サーバ証明書
  4. 指定されたURLにアクセスして認証を通す
  5. ここで,Citrix Receiverに怒られる場合,firefoxのcertをCitrixが読めるようリンクを貼る
    sudo ln -s /usr/share/ca-certificates/mozilla/* /opt/Citrix/ICAClient/keystore/cacerts
  6. それでもダメな場合,firefoxに取り込めてない可能性があるので直接コピっちゃう
    sudo cp /path/to/cert.crt /opt/Citrix/ICAClient/keystore/cacerts

    1. 証明書がちゃんと入っていたら,ブラウザのセッションは維持したまま,icaを落とし直してreceiverを起こし直せば動く

updatedbのエラー回避

crontabで定期実行しているupdatedbが吐く/run/user/*/gvfsへのパーミッションエラーを避けたい

updatedbはlocateでファイル検索する時のDB更新コマンド.用途から考えて/run/user配下は検索する必要がないので,crontabで呼び出す時に検索パスから外すオプションをつければ良い.

updatedb --prunepaths=/run/user

これはubuntuの場合.ディストリによっては=でつながないらしいので注意.複数パスを外す場合は

updatedb  --prunepaths='/run/user/110 /run/user/1000'

みたいにする.

threading.Threadの使い方

よく忘れるので.
docoptは入れて使ってくらはい.他のはanaconda3-4.4.0で入ったと思う.

この記事は次の記事を参考にしている.
実行中のスレッドに対し外から操作をする - Qiita
ただし,私はスクリプトの外から操作をしたかったので,イベントハンドラから呼んでみた.
あと終了処理を入れたかったので無駄に関数を作って呼び出し順などを確認できるようにしてみた.
withは使ってないからenterとexitはいらんかった.

__file__ を test.pid で一括置換した名残が何か残ってるけど気にせんとってください.(abspathとかdirnameとかbasenameとかんとこ)

# スレッドを3つ開始
# 1つはインスタンスで生成
# 2つはサブクラスで生成
# サブクラスの1つは自動的に3秒後に停止
$ python start.py
# SIGUSR1を送信してサブクラスのもう一つを停止
$ kill -USR1 $(cat test.pid)
# 停止スクリプトから停止
$ python stop.py

fontconfigのエラー

ubuntuで突然,GUIプログラムを起動すると

Fontconfig warning: "/etc/fonts/conf.d/30-metric-aliases.conf", line 84: Having multiple  in  isn't supported and may not work as expected

みたいなエラーと

Unable to update the static FcBlanks: 0x0601

みたいなエラーが大量に出るようになって困った.

前者は該当ファイルを一つ一つ開いて,<alias>ディレクティブ内で複数の<family>をまとめて1つの<family>にエイリアスしているところを,別<alias>に展開することで解消.

具体的にはこんな感じ
Fixing Warning Messages About Font Configuration

後者はエラーの出てるコードだけ消せばいいのかもしんないけど,メンドクセーので/etc/fonts/fonts.confの<brank>ディレクティブを全消しで解消.

findでまとめてパーミッション変更

追記

ここ(ファイルやディレクトリのパーミッションを一括で置換したい - Qiita)のコメント欄の内容が神すぎたので自分でも忘れないよう転記.
この「X」しらんかった.

chmod -R a=rX,u+w path/to/dir

sambaでファイルサーバを運用している時に,別ユーザでのアクセスが問題になることがまれによくある
なのでディレクトリは755に,ファイルは644にしたい

基本

# まとめてchmodに渡す.数が多いとコマンドの上限文字数を越える
$ find . -type d -exec chmod 755 {} +
# 1つずつchmodに渡す.数が多いとえらい時間がかかる
$ find . -type d -exec chmod 755 {} \;

xargsとの組合せ

# まとめてchmodに渡す.数が多いとコマンドの上限文字数を越える
$ find . -type d -print0 | xargs -0 chmod 755
# 20ずつまとめてchmodに渡す.上3つと比べるとマシ
$ find . -type d -print0 | xargs -0 -n 20 chmod 755

オブジェクトストレージでownCloud

バケットを作成する

.s3cfg がある場合,そこに記載のAPIユーザでバケットを作成してしまう.
ownCloudのユーザを分けたい場合,まずAPIユーザの作成から行なう.

APIユーザを作成したら,APIユーザのAccess KeyとSecret Keyが発行されているはずなので,コピーする.
.s3cfgの他に設定ファイルを作成して-cオプションで読み込ませても良いし,s3cmdのコマンドラインオプションに与えても良い.

で,APIユーザのアクセスキーをもってmb (バケット作成)すればバケットの準備完了.

ownCloudに外部ストレージを使用させる

ownCloudのアプリ追加から External Storage Supportを有効化する.
続いて管理画面の外部ストレージからS3を選択し,オブジェクトストレージの設定を入れる.

バケットに作成したバケット名を入れる.
ホストには,s3cfgで言うところのhost_baseを入れる.
アクセスキーとシークレットキーも指定する.
ポートは不要(?)

以上をうまく設定できれば,外部ストレージの一覧の画面で名前の左の赤い四角が緑の丸になるはず.
その状態で接続成功しているのでownCloudのホームに戻ると,ルートに設定したオブジェクトストレージ名のディレクトリが作成されているはず.
あとはファイルを移して気長に待つ.

vim+previm+MathJaxでmarkdownに数式を書く

必要なもの

  • vim
  • vim-markdown
  • previm
  • open-browser

前提

NeoBundleは設定済とする

設定

NeoBundle 'plasticboy/vim-markdown'
NeoBundle 'kannokanno/previm'
NeoBundle 'tyru/open-browser.vim'

NeoBundleLazy 'kannokanno/previm', {
\    'depends':   'open-browser.vim',
\    'filetypes': 'markdown',}

MathJax対応

~/.vim/bundle/previm/にprevimがある場合.

MathJaxの読み込みをテンプレートに追記.

@@ -5,6 +5,13 @@
         Preview
         
         
+        
+        
     
     
         

previmの処理後にMathJaxを呼び出すらしい.
ついでに$でインライン数式モードを使えるようにする.
これにより,$$で数式ブロックを,$でインライン数式を書けるようになる.

@@ -84,6 +84,10 @@
       Array.prototype.forEach.call(_doc.querySelectorAll('pre code'), hljs.highlightBlock);
       autoScroll('body', beforePageYOffset);
       style_header();
+
+      // for MathJax
+      MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\(","\\)"]] } });
+      MathJax.Hub.Typeset(document.getElementById("preview"));
     }
   }

使い方

markdown を書いて,:PrevimOpen でプレビューする.
好きにコマンドを割り当てても良いと思う.

xmonad on ubuntu 16.04 でバックライトを調整

経緯

VAIO Pro 13 に入れていた 14.04 を 16.04 に変えたら,xbacklight が動かなくなったので自分でコマンドを作ってみた.

使い方

下のコードをbglightという名前でPATHの通ったところに置いたとすると

sudo chmod 666 /sys/class/backlight/{バックライト名}|/brightness  # 一般ユーザに書き込み権限を与える
$ bglight  # 現在の照度を表示する
30
$ bglight +  # 最大値まで10ずつ照度を増加させる
$ bglight -  # 0まで10ずつ照度を減少させる

コード

これは,バックライト名がintel_backlightの場合.

Integromat で Gmail の特定フォルダのメールを slack に投稿

Integromatというのは,IFTTTとかzapierみたいなwebサービスの連携サービス.
かなり細やかに設定できるというか,もはやプログラミングするような感じで構成しないと動かない.

Gmailをslackに投稿する時のハマりポイント

  1. 日本語の文字化け
  2. 長いとslackに拒否られる

対策

文字列変換してちょんぎる.

手動インストールしたnginxを維持しながらowncloudをupgrade

前提

apache2は2.4で設定が変わった折に捨てた.
nginxはwebdavを使うためやhttp2を使うためなどの理由でdebianのパッケージでは不足であったため公式サイトの安定リリースを手動コンパイルしインストールしている.
owncloudは公式のドキュメント(Install package owncloud, owncloud-files)にあるリポジトリを使用する.

手順

owncloudをリポジトリからapt-getで入れる場合,httpdセクションのパッケージが入っていないと依存関係が問題になる.
owncloud-filesで依存関係を無視して入れるか,ダミーパッケージを作成して依存関係を解決させるかが必要となる.
今回は後者を選択した.

リポジトリ修正
owncloudはメジャーアップデートをスキップすることはできない.
例えば8.1が入っている場合,8.1->8.2->9.0->9.1とアップデートしなければならない.
なので8.2を入れる.
なんかリポジトリのアドレスが変わってたっぽいのでついでに対応する.

@@ -1 +1 @@
-deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Debian_8.0/ /
+deb http://download.owncloud.org/download/repositories/8.2/Debian_8.0/ /
更新準備(ダミーパッケージインストール)
まず,
equivsでダミーパッケージを作って入れる.

  1. equivsを入れて
    $ sudo apt-get update && sudo apt-get install equivs
    
  2. 適当なディレクトリでダミーパッケージ作り.
    $ mkdir nginx-dummy && cd nginx-dummy
    $ equivs-control nginx-dummy
    
  3. 設定ファイルの編集
    ただし,php5-cgiは8.2のみ依存関係のため入れている.8.2のアンインストール後,つまり9.0インストール後はphp5-cgiを抜いてインストールし直して良い.(9.0~は依存関係は「php5-cgi | php5-fpm」となっているので)

    @@ -6,14 +6,14 @@
     # Homepage: 
     Standards-Version: 3.9.2
    
    -Package: 
    +Package: nginx-dummy
     # Version: 
     # Maintainer: Your Name 
     # Pre-Depends: 
     # Depends: 
     # Recommends: 
     # Suggests: 
    -# Provides: 
    +Provides: httpd,php5-cgi
     # Replaces: 
     # Architecture: all
     # Copyright: 
    @@ -22,7 +22,7 @@
     # Extra-Files: 
     # Files: 
     #  
    -Description: 
    - long description and info
    +Description: dummy package for nginx
    + dummy package for nginx installed manually.
      .
    - second paragraph
    + nginx-dummy provides httpd and php5-cgi
    
  4. ダミーパッケージを作ってインストール
    $ equivs-build nginx-dummy; sudo dpkg -i nginx-dummy_1.0_all.deb
    
パッケージ更新
で,やっとownCloudを更新する.

$ sudo apt-get update && sudo apt-get install owncloud=8.2
ファイル更新
展開済のowncloudを更新する.

$ cd /var/www/owncloud
$ sudo -u www-data ./occ upgrade
メンテナンスモード終了
動作確認は設定ファイルでmaintenanceをfalseにしないとできない.

@@ -21,3 +21,3 @@
   'updatechecker' => false,
-  'maintenance' => true,
+  'maintenance' => false,
   'theme' => '',
繰り返す
8.2->9.0
9.0->9.1

10.0も出てるけど,9.1はまだサポートされてるし,今回はパス.
と思ったら,9.0もまだサポートされてた.アップデートしすぎた.でもダウングレードはサポートされてないので,9.1で行く.
Maintenance and Release Schedule · owncloud/core Wiki