ちょっと必要になったので、備忘録を兼ねて。
- gemリポジトリをローカルに持ってくる
gem build *.gemspec
gem install *-<version>.gem
ちょっと必要になったので、備忘録を兼ねて。
gem build *.gemspec
gem install *-<version>.gem
海外に居るため、一部国内のコンテンツが見れない。
さくらVPSに外部プロキシサーバを立てて、国内コンテンツを普通に見たい。
PC ---- ルータ ---- プロキシサーバ(さくらVPS) ---- Webサーバ
$ sudo yum install squid … ============================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================= インストールしています: squid x86_64 7:3.1.23-16.el6_8.4 updates 1.8 M 依存性関連でのインストールをします。: libtool-ltdl x86_64 2.2.6-15.5.el6 base 44 k トランザクションの要約 ============================================================================================================= インストール 2 パッケージ 総ダウンロード容量: 1.9 M インストール済み容量: 6.4 M これでいいですか? [y/N]y パッケージをダウンロードしています: (1/2): libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm | 44 kB 00:00 (2/2): squid-3.1.23-16.el6_8.4.x86_64.rpm | 1.8 MB 00:00 ------------------------------------------------------------------------------------------------------------- 合計 3.7 MB/s | 1.9 MB 00:00 …
2016/06/02現在、squid : Optimising Web Delivery によると最新は3.5.19とのことなので若干古い。
/etc/squid/squid.conf
を編集する。
ルータからのアクセスを許可する為、自宅のIPアドレスを調べ許可IPアドレスとして登録する。 確認には先達に従い、 確認くん を使う。
# 元々あるhttp_access deny allの上に追記すること。 acl indoor src xxx.xxx.xxx.xxx/32 http_access allow indoor http_access deny all
ポート番号はデフォルトから別の番号に変更する。
12345
は例なので適宜お好みで。
# Squid normally listens to port 3128 #http_port 3128 http_port 12345
プロキシサーバ経由であることを隠蔽する為、以下のオプションをファイル末尾に追記する。
# ローカルのIPアドレスを隠蔽 forwarded_for off # リクエストヘッダのプロキシ情報を隠蔽 header_access X-Forwarded-For deny all header_access Via deny all header_access Cache-Control deny all
設定が完了したら、後はいつものコマンド。
# squid起動 $ sudo /etc/init.d/squid start # 自動起動設定 $ sudo chkconfig squid on
squidのバージョンによっては start
コマンド実行時にWarningが出るので適宜修正を行う。3系であれば上記設定でほぼ問題ないハズ。
iptablesによるポート制限も変更を行う。
:FWINPUT - [0:0] -A INPUT -j FWINPUT -A FORWARD -j FWINPUT -A FWINPUT -i lo -j ACCEPT -A FWINPUT -p icmp --icmp-type any -j ACCEPT -A FWINPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A FWINPUT -p tcp -m tcp --dport 12345 -s xxx.xxx.xxx.xxx -j ACCEPT -A FWINPUT -j REJECT --reject-with icmp-host-prohibited
変更完了したらiptables再読み込み。
$ sudo iptables-restore < /etc/sysconfig/iptables
第三者の不正利用を防ぐ為にアカウントによるログイン制御を行うこともできる。認証方法は多数用意されているが、Basic認証と同じ仕組みがシンプルそう... と思ったが、nginxしか使ってないのでプロキシ専用のパスワードファイルを用意する。
# パスワード生成 $ sudo htpasswd -c /etc/squid/squid-passwd <user_name> New password: Re-type new password: Adding password for user <user-name>
htpasswd
コマンドが利用できない場合には、httpd-tools
をインストールすると良い。
$ sudo yum install httpd-tools
squid-passwdファイルを作成したら、squid.confに設定を追加する。
ただし記述順序に注意。http_access
は上から順に評価される。
先述のIPアドレス指定の後に設定を追加すると、自宅ではパスワードが不要、自宅外ではパスワード認証と使い分けることができる。
if IPアドレスが自宅: 接続 elif BASIC認証OK: 接続 else: 接続不可
$ sudo vi /etc/squid/squid.conf # 元々の自宅用設定 http_access allow indoor # ここに自宅外設定を追加。 auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid-passwd auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl outdoor proxy_auth REQUIRED http_access allow outdoor # 元々の deny all 設定 http_access deny all
システム環境設定 > ネットワーク > 詳細 > プロキシ にて、HTTPとHTTPSの設定を行うだけでよい。
設定が完了したら、ブラウザから改めて 確認くん にアクセスし、IPアドレスがさくらVPSのものに変わっていることを確認する。
もしくは sudo tail -f /var/log/squid/access.log
してlogを眺めてみる。
OS X環境で使っていたVim設定を使いまわそうとして、cpsm.vimの為にBoost関連のパッケージをインストールしたけど、滅多にCentOS環境では使わないからやっぱりremoveしたい。
今日纏めて入れちゃったパッケージの方々。|
とxargsを上手く使いこなして一発で消したい。
$ yum list installed | grep boost
boost-date-time.x86_64 1.41.0-28.el6 @base
boost-filesystem.x86_64 1.41.0-28.el6 @base
boost-graph.x86_64 1.41.0-28.el6 @base
boost-iostreams.x86_64 1.41.0-28.el6 @base
boost-program-options.x86_64 1.41.0-28.el6 @base
boost-python.x86_64 1.41.0-28.el6 @base
boost-regex.x86_64 1.41.0-28.el6 @base
boost-serialization.x86_64 1.41.0-28.el6 @base
boost-signals.x86_64 1.41.0-28.el6 @base
boost-system.x86_64 1.41.0-28.el6 @base
sed自体は以前利用経験があるし、Vimでも利用しているので特に困らずこんな感じに削除する
$ sudo yum list installed | grep boost | sed -e 's/\ .*//' boost-date-time.x86_64 boost-filesystem.x86_64 boost-graph.x86_64 boost-iostreams.x86_64 boost-program-options.x86_64 boost-python.x86_64 boost-regex.x86_64 boost-serialization.x86_64 boost-signals.x86_64 boost-system.x86_64 boost-test.x86_64 boost-thread.x86_64 boost-wave.x86_64
問題なさそう。
$ sudo yum list installed | grep boost | sed -e 's/\ .*//' | xargs -t sudo yum -y remove sudo yum -y remove boost-date-time.x86_64 boost-filesystem.x86_64 boost-graph.x86_64 boost-iostreams.x86_64 boost-program-options.x86_64 boost-python.x86_64 boost-regex.x86_64 boost-serialization.x86_64 boost-signals.x86_64 boost-system.x86_64 boost-test.x86_64 boost-thread.x86_64 boost-wave.x86_64 読み込んだプラグイン:fastestmirror, security 削除処理の設定をしています 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package boost-date-time.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-filesystem.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-graph.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-iostreams.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-program-options.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-python.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-regex.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-serialization.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-signals.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-system.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-test.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-thread.x86_64 0:1.41.0-28.el6 will be 削除 ---> Package boost-wave.x86_64 0:1.41.0-28.el6 will be 削除 --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================= パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================= 削除: boost-date-time x86_64 1.41.0-28.el6 @base 149 k boost-filesystem x86_64 1.41.0-28.el6 @base 172 k boost-graph x86_64 1.41.0-28.el6 @base 338 k boost-iostreams x86_64 1.41.0-28.el6 @base 114 k boost-program-options x86_64 1.41.0-28.el6 @base 615 k boost-python x86_64 1.41.0-28.el6 @base 649 k boost-regex x86_64 1.41.0-28.el6 @base 1.9 M boost-serialization x86_64 1.41.0-28.el6 @base 1.5 M boost-signals x86_64 1.41.0-28.el6 @base 154 k boost-system x86_64 1.41.0-28.el6 @base 24 k boost-test x86_64 1.41.0-28.el6 @base 1.6 M boost-thread x86_64 1.41.0-28.el6 @base 84 k boost-wave x86_64 1.41.0-28.el6 @base 1.2 M トランザクションの要約 ============================================================================================================= 削除 13 パッケージ インストール済み容量: 8.5 M パッケージをダウンロードしています: rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています 削除中 : boost-wave-1.41.0-28.el6.x86_64 1/13 削除中 : boost-filesystem-1.41.0-28.el6.x86_64 2/13 削除中 : boost-graph-1.41.0-28.el6.x86_64 3/13 削除中 : boost-regex-1.41.0-28.el6.x86_64 4/13 削除中 : boost-system-1.41.0-28.el6.x86_64 5/13 削除中 : boost-date-time-1.41.0-28.el6.x86_64 6/13 削除中 : boost-thread-1.41.0-28.el6.x86_64 7/13 削除中 : boost-program-options-1.41.0-28.el6.x86_64 8/13 削除中 : boost-serialization-1.41.0-28.el6.x86_64 9/13 削除中 : boost-signals-1.41.0-28.el6.x86_64 10/13 削除中 : boost-iostreams-1.41.0-28.el6.x86_64 11/13 削除中 : boost-test-1.41.0-28.el6.x86_64 12/13 削除中 : boost-python-1.41.0-28.el6.x86_64 13/13 Verifying : boost-python-1.41.0-28.el6.x86_64 1/13 Verifying : boost-date-time-1.41.0-28.el6.x86_64 2/13 Verifying : boost-test-1.41.0-28.el6.x86_64 3/13 Verifying : boost-iostreams-1.41.0-28.el6.x86_64 4/13 Verifying : boost-filesystem-1.41.0-28.el6.x86_64 5/13 Verifying : boost-regex-1.41.0-28.el6.x86_64 6/13 Verifying : boost-system-1.41.0-28.el6.x86_64 7/13 Verifying : boost-signals-1.41.0-28.el6.x86_64 8/13 Verifying : boost-serialization-1.41.0-28.el6.x86_64 9/13 Verifying : boost-wave-1.41.0-28.el6.x86_64 10/13 Verifying : boost-thread-1.41.0-28.el6.x86_64 11/13 Verifying : boost-graph-1.41.0-28.el6.x86_64 12/13 Verifying : boost-program-options-1.41.0-28.el6.x86_64 13/13 削除しました: boost-date-time.x86_64 0:1.41.0-28.el6 boost-filesystem.x86_64 0:1.41.0-28.el6 boost-graph.x86_64 0:1.41.0-28.el6 boost-iostreams.x86_64 0:1.41.0-28.el6 boost-program-options.x86_64 0:1.41.0-28.el6 boost-python.x86_64 0:1.41.0-28.el6 boost-regex.x86_64 0:1.41.0-28.el6 boost-serialization.x86_64 0:1.41.0-28.el6 boost-signals.x86_64 0:1.41.0-28.el6 boost-system.x86_64 0:1.41.0-28.el6 boost-test.x86_64 0:1.41.0-28.el6 boost-thread.x86_64 0:1.41.0-28.el6 boost-wave.x86_64 0:1.41.0-28.el6 完了しました!
xargs -t
でxargs実行時のコマンドを標準出力に出力できる。
xargs -n 1
でxargsに渡される引数の数を指定できる。cp
する時は-n 2
などを使うことになるだろう。
英語上達完全マップに従い、Amazonでどんどん話すための瞬間英作文トレーニングのKindle版を購入しようとしたら、CDなしバージョンと書いてあってウッ...ってなった。
どんどん話すための瞬間英作文トレーニング (CD BOOK)
音声付き前提の書籍なのにCD無しでどないしよーと思ってたけど、実はベレ出版が公式mp3(各216円)販売を行っているので気にせずKindle版を購入して問題ない。
ベレ出版音声ダウンロードストア / どんどん話すための瞬間英作文トレーニング 付属音声1
ベレ出版音声ダウンロードストア / どんどん話すための瞬間英作文トレーニング 付属音声2
この記事執筆時点で、Kindle版は1,080円で書籍が1,944円。
なので、CD2枚分のmp3データを買ってもKindle版の方が安い。CDから取り込む手間もない分こちらの方がありがたい。
Kindle版 | 書籍 | |
---|---|---|
書籍代 | 1,080円 | 1,944円 |
mp3 / CD代 | 216円 x 2 | - |
合計 | 1,512円 | 1,944円 |
同様に、同じく著名なみるみる英語力がアップする音読パッケージトレーニングも、iPhoneでもKindleでも閲覧可能なことからKindle版の方が便利です。
私は書籍で購入してましたが、自炊したPDFよりKindle版の方が便利な為、結局Kindle版も買い直しました。
みるみる英語力がアップする音読パッケージトレーニング(CD BOOK)
というわけで遠慮なくKindle版を買いましょう。
英語上達完全マップ―初級からTOEIC900点レベルまでの効果的勉強法
手持ちの自炊したPDFや、PDF購入した電子書籍をKindle Paperwhiteでも読みたいのでイイカンジ圧縮したい。
しかし、Previewのファイルサイズ圧縮は低解像度過ぎる。
ということで、従来はColorSync Utilityで新しいフィルターを追加するというやり方があったが、El Capitanだと新規に追加したフィルターがPreviewで選択できず、選択可能にするにはCLIでsudoしたりしないといけない。
で、GUI操作の為にTerminal使うのはちょっと違うなと思ったので、標準アプリケーションのみでGUI操作で完結する方法を模索。
Automatorを使う。
元々あるフィルタ'Reduce File Size'を複製し、Kindle用のフィルタを作成する。
今回は'for Kindle'という名前にした。
Web上の情報から、 Image Sampling > Max
の値を元の512pxより大きくするとより解像度が上がることが分かっていたので、今回はKindle Paperwhiteの横解像度と同じ1072pxに指定したフィルタを作成した。
Kindle用のフィルタをPreview上で利用可能にするにはuser以下のlibralyディレクトリのフィルタを/System/Library/Filters/に移動させる必要があるのでめんどい。カンタンにAutomatorアプリケーションを作成する。
まず、Automatorを立ち上げる。Spotlight便利。
新規にアプリケーションを選択する。
アクションを登録していく。今回登録するアクションは以下の4つ。
を行う。日本語でのアクション名はそれっぽいものを探してください。
右上の 'Run' ボタンからテスト実行できるので、それで実際にどのように動作するのか確認しながら作るとよい。
上手く動作したらイイカンジの名前を付けて保存。
アプリケーションとして保存したので、以後は作成したAutomatorアプリケーションを実行してPDF圧縮を行う。
イイカンジの名前を付けておくと、Spotlightから呼び出しやすい。
USBでKindleを繋いで同期しましょう。50MB越えてても大丈夫です。
Amazon.co.jp ヘルプ: USB経由でFireタブレットまたはKindle端末にパーソナル・ドキュメントを転送する
手持ちのPDF書籍の閲覧には多少工夫が入りますが、'本を読む' には軽さやバッテリー持ちの良さからiPadよりKindleの方が便利です。まだ買ってない人は買いましょう。
手頃な値段なので、ケースも保証も要らないです。壊れる頃には新世代のものが出てるので新しいのを買いましょう。 アダプタも他のUSBアダプタで代用できるので改めて買う必要はないです。
広告有無は1タップ減るので広告無し版を買いましょう。
この記事内容は公式の
ままなので、英語が読める人は公式のドキュメントに従いましょう。
元々のyum repoは古いので、Dockerのyum repoを追加する
# 一度yumの更新 $ sudo yum update # docker.repoの追加 $ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF # docker-engineのインストール $ sudo yum install docker-engine # dockerの起動 $ sudo service docker start # テスト起動 $ sudo docker run hello-world sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from hello-world d59cd4c39e50: Pull complete f1d956dc5945: Pull complete Digest: sha256:4f32210e234b4ad5cac92efacc0a3d602b02476c754f13d517e1ada048e5a8ba Status: Downloaded newer image for hello-world:latest Hello from Docker. This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
OK.
docker
グループを作るDockerデーモンはTCPポート代替として機能するUnixソケットに紐付いており、そのUnixソケットはデフォルトでrootがオーナーになっている為、Dockerはrootかsudoでしか動作しない。
ということで、docker
グループを作ってそこにユーザを追加する。
この docker
グループはDockerに於いてrootユーザ同等の権限を持つ。
Docker Daemon Attack Surface と呼ばれるセキュリティ上の影響を考慮する必要がある。
Docker security | Docker Documentation
# dockerグループの作成 $ sudo groupadd docker # dockerグループにuserを追加する $ sudo usermod -aG docker your_username
一度ログアウトし、先述のyour_usernameでログインする。
念の為、sudoなしで起動できることを確認する。
$ docker run hello-world
いつもの
$ sudo chkconfig docker on
# インストールしているyumパッケージの確認 $ yum list installed | grep docker docker-engine.x86_64 1.7.1-1.el6 @dockerrepo # 該当パッケージを削除 $ sudo yum remove docker-engine.x86_64 # イメージとコンテナとボリュームの削除 $ rm -rf /var/lib/docker
CentOSのrootからやたらとnpmが古いぞとメールが来るのだけれども、そもそもnvm上のNode.js / npmしか利用していないのでグローバルのNode.js / npmはアンインストールすることにした。
しかし、Node.js / npmのアンインストール方法が公式にないぞ...ということでその記録。
# cd <ソースコードのディレクトリ> # make uninstall
上記で安全にアンインストール可能らしいのだが、生憎未確認。
ソースコードが手元に無かった為、こちらのやり方で実施した。
まずnodeのパスを確認し、それに基づいてbin, lib, manを削除するだけである。
念の為verboseオプションを付与している。
# where node /usr/bin/node # rm -rfv /usr/{bin/node,lib/node,share/man/*/node.*}
アンインストールコマンドが用意されているのでそちらを利用する。
# npm uninstall npm -g
- abbrev@1.0.7 node_modules/npm/node_modules/abbrev
- ansi-regex@2.0.0 node_modules/npm/node_modules/ansi-regex
- ansicolors@0.3.2 node_modules/npm/node_modules/ansicolors
- ansistyles@0.1.3 node_modules/npm/node_modules/ansistyles
- aproba@1.0.1 node_modules/npm/node_modules/aproba
- archy@1.0.0 node_modules/npm/node_modules/archy
- chownr@1.0.1 node_modules/npm/node_modules/chownr
- clone@1.0.2 node_modules/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone
...
- npm@3.9.2 node_modules/npm
ホームディレクトリに .npm/
が残っていたのでこれも削除
# rm -rf .npm
これでアンインストール完了。
サーバサイドJavaScript Node.js入門 (アスキー書籍)