GitbucketをUbuntuに入れる
自分用リポジトリが欲しかったので。
環境
$ cat /etc/os-release NAME="Ubuntu" VERSION="16.04.3 LTS (Xenial Xerus)" (省略)
手順
## javaインストール $ sudo apt install openjdk-8-jre-headless $ java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) ## 普通に手順進めていく $ sudo groupadd -g 555 gitbucket $ sudo useradd \ -g gitbucket --no-user-group \ --home-dir /opt/gitbucket --no-create-home \ --shell /usr/sbin/nologin \ --system --uid 555 gitbucket ## 勝手にディレクトリできないので作って、ファイルのダウンロードもしておく $ sudo mkdir -p /opt/gitbucket $ sudo curl -o /opt/gitbucket/gitbucket.war -L https://github.com/gitbucket/gitbucket/releases/download/4.19.2/gitbucket.war $ sudo chown -R gitbucket:gitbucket /opt/gitbucket ## ファイルを作る。内容は後述 $ sudo vim /etc/systemd/system/gitbucket.service ## 起動 $ sudo chown root:root /etc/systemd/system/gitbucket.service $ sudo chmod 644 /etc/systemd/system/gitbucket.service $ sudo systemctl daemon-reload $ sudo systemctl start gitbucket.service $ sudo systemctl enable gitbucket.service ## 起動確認 $ curl localhost:8100
gitbucket.service
はこれを少し編集して使った。公式repoの中はちゃんと探してない。そこにもあるんだろうか
[Unit] Description=Git hosting service [Service] User=gitbucket ExecStart=/usr/bin/java -jar /opt/gitbucket/gitbucket.war --port=8100 --host=127.0.0.1 --gitbucket.home=/opt/gitbucket [Install] WantedBy=multi-user.target
起動確認までできたら、次は外から見えるようにReverse Proxyの設定をする
Reverse Proxy
$ sudo vim /etc/nginx/sites-available/gitbucket $ sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/ $ sudo systemctl restart nginx
Reverse Proxyの設定、僕はほとんど同じにしました。 server_name
と proxy_pass
のポートを変えただけ。
ついでにDBをMySQL使うように設定しておく
$ mysql -uroot -p > create database gitbucket; > grant all privileges on `gitbucket`.* to gitbucket@localhost identified by 'testPassword'; > flush privileges; > quit $ sudo vim /opt/gitbucket/database.conf db { url = "jdbc:mysql://localhost/gitbucket?useUnicode=true&characterEncoding=utf8" user = "gitbucket" password = "testPassword" } $ sudo systemctl restart gitbucket.service
余談
ちなみに僕の環境はt2.nanoなので、よくメモリ足りなくなるため、スワップファイルも作ってます。途中でメモリ足りない系エラーでるならこれやると吉かもしれない
DTI使ってみたけど、やめてAWSにしてみようと思う
要件
なぜ
検索したらヒットしたけど、php-fpm等がインストールできないらしい。
僕の場合 yum install openssl-devel
したら発生。つまり openssl-devel
パッケージを入れることが出来ないので、phpのコンパイルが通らない
Error: systemd conflicts with initscripts-9.49.17-1.el7_0.1.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
頑張ってもいいけど、時間がもったいない気がするのでやめよかなと思っている
以下メモ
契約の流れ
- 登録は簡単、住所氏名クレジットカード番号を入れるとすぐに利用できた
- 支払いは、月の途中だと月末までの日数払いになるっぽい。僕の場合は2017/11/23に契約したので134円だった
解約の流れ
プランの解約と退会がそれぞれある。両方やっておいたほうがいい 退会は少し面倒。たらい回しにされるのでページを探すのにはちょっと苦労した。退会はメールフォームからの問い合わせになる。
- プランの解約
- 退会
- http://www-wp.dream.jp/search.php/?p=1118 ( http://dream.jp/support/process/cancellation.html から遷移可能)
- 各種お問合せの
ServersMan@VPSのサービス内容や手続きに関するお問い合わせ
から可能
解約できたらまた書く
CLIでのWordpressのドメイン移行方法
Wordpressのお引っ越しについて
Wordpressにおいて、下記のようにお引っ越しをすることがよくあります。
- サイトを引っ越しする際
- 例えば example.com -> example.net へサイトを移行
- ローカルで動かしていたサーバをリモートへデプロイする際
- 例えば localhost -> example.net へデータもそのまま移す
ただ、このように別ドメインへ移行する際、
- ファイルを全てそっくりそのままコピー
- 移行元のDBのデータをエクスポートして、移行先でインポート
という手順を踏んでも、移行先でそのまま動作しません。これは、ドメイン名がデータベースの中に入り込んでいるせいなのですが、この問題自体は検索すると詳しい手順がたくさんヒットします。
殆どの記事はよく出来ていて困らないと思うのですが、SSH使える人であればもう少し簡単に移行出来るのになと思ったので、メモしておきます。
なぜこの記事を書いたか
移行方法を検索するとよく出てくるのは、こちらのツールを使用する方法です。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
検索した時に出てくる方法だと、このツールをWebから見れるようにデプロイして移行する方法が多く取られているようにみえました。しかしこのツール、コマンドラインのインターフェースも用意されているので、僕的にはその方がメリットあるなと思ったので書き残しておこうかなと思った次第です。
メリットあると思った理由は以下の通り。
- 誰でもアクセスできる場所にさらされる期間がないため、セキュリティリスクが低い
- cliは文字のため、どのような引数を指定して移行したのかをまるごと記録として残せる
- ダウンロードしてすぐに実行出来るので、煩雑さがない
お引っ越し方法
- 先程のツール のContributionsセクションに書かれてある、 GitHubのURL からアクセス
- アクセスする前に、きちんと Download Search Replace DB セクションの内容は読んでおきましょう。
- 2017/10/16現在、emailアドレス入力→ダウンロードした時と、git-cloneした時のものの内容は同じようです。
- 移行先のサーバへSSHで接続し、
git clone https://github.com/interconnectit/Search-Replace-DB.git
する- git-cloneする場所はどこでもいいです。DocumentRoot以下は避けましょう
cd Search-Replace-DB
するmove.sh
等の名前でファイルを作成し、その中に下記のスクリプトを入力
php srdb.cli.php \ --host localhost \ --name <データベース名> \ --user <ユーザー名> \ --pass <パスワード> \ --search "<移行元ドメイン>" \ --replace "<移行先ドメイン>" \ --dry-run
引数の詳細は https://github.com/interconnectit/Search-Replace-DB#cli-script を確認してください。
. ./move.sh
を実行- ※
--dry-run
がついているので、実際にはまだ実行されません - ここでどれだけのクエリが実行されるかを確認できる
- ※
move.sh
を再度開き、--dry-run
を削除- 再度
. ./move.sh
を実行- 実際にクエリが実行されます
- 移行先ドメインへアクセスして動作しているかを確認
その他
Notice: A non well formed numeric value encountered in /path/to/Search-Replace-DB/srdb.cli.php on line 202 Call Stack: 0.0012 387272 1. {main}() /path/to/Search-Replace-DB/srdb.cli.php:0 0.0050 526432 2. icit_srdb_cli->__construct() /path/to/Search-Replace-DB/srdb.cli.php:227 0.0092 544968 3. icit_srdb_cli->replacer() /path/to/Search-Replace-DB/srdb.class.php:337 0.5026 642544 4. icit_srdb_cli->log() /path/to/Search-Replace-DB/srdb.class.php:995
VimFxではてなブックマーク
[2017-06-01 18:23 追記] 公式のブックマークレット、内部でhttp呼んでるからhttpsで使えない(Mixed Contentになる)!!だめじゃん!!ということでこの記事は早くも消費期限切れです
前に導入記事に加えてこれ書いたんですけど、その時はショートカットで新しくウィンドウを開いて、ブックマークさせる感じでした。で、よく考えたらブックマークレット実行してあげたほうが良いじゃんって思ってエントリ書いてます。
ちなみになんでFirefox拡張使わないのかというと、現状それ入れるとe10sが無効になるからです。
導入
下記をそれぞれconfig.js/frame.jsに入れます。
config.js
vimfx.addCommand({ name: 'open_hatena_bookmark_entry', description: 'Open Hatena Bookmark Entry', }, ({vim}) => { vimfx.send(vim, 'openHatena', {}, () => {}); }); let map = (shortcuts, command, custom=false) => { vimfx.set(`${custom ? 'custom.' : ''}mode.normal.${command}`, shortcuts) } map('cc', 'open_hatena_bookmark_entry', true);
frame.js
vimfx.listen('openHatena', (params, callback) => { var document = content.document; // Hatena ブックマークレットの中身 // https://www.hatena.ne.jp/tool/bookmarklet (function() { var d = (new Date); var s = document.createElement('script'); s.charset = 'UTF-8'; s.onload = callback; s.src = 'https://b.hatena.ne.jp/js/Hatena/Bookmark/let.js?' + d.getFullYear() + d.getMonth() + d.getDate(); (document.getElementsByTagName('head')[0] || document.body).appendChild(s); })(); });
React Nativeとionic2
この記事書きながら調査。ある程度調査した後気づいたけど、ReactNative、WebView上で動かない意味でアーキテクチャ全然違うので比較として微妙だ…。
- GitHub
- ReactNative
- ionic2
- スター数ではReactNativeが勝利
- アーキテクチャ
http://qiita.com/naoya@github/items/ecda4d3089902dcbea53
- ionic2: Angular2を使う。
- 普通にWebView上で動作するシステムとなっている
- ReactNative: Reactを使う
- が、ちょっとアーキテクチャが特殊で、WebView上で動くものではない
- JavaScriptエンジンを内部に持っていて、それのブリッジからOS標準のビューを生成してくれるもの。スタイルシートっぽいのが出てくるがスタイルシートではないし、HTMLっぽいのが出てくるがHTMLではない。
- JavaScriptでネイティブアプリ。フレコミとしてはTitaniumと似てる
- React Native ファーストインプレッション - Qiitaは必ず読むべし
- ionic2: Angular2を使う。
- Resposive Grid Systemの有無
- ionic2はGridコンポーネントを使う。Bootstrap等のgridと同じ。
- ReactNativeはflexboxチックな記述を使う
- ネイティブプラグイン
- ionic2はcordovaに依存するので、cordova pluginを書けば同じように使える
- ionicのせいではないが、cordova pluginは入れ直すとすぐキャッシュが残ったりするのか、動かなくなるので非常に奇妙。プラグイン制作したときに、このあたりで非常に苦労した。おかしくなったらStackoverflowに行くが、すぐに
cordova platform remove android
したあとcordova platform add android
しなおせが沢山出る。 - cordova plugin作るときはplugmanを使うが、
plugman platform add android
するとxmlがminifyされる。(GitHubの更新見てるとまだメンテはしているようだったけど…。)節子、それ人がいじるファイルや
- ionicのせいではないが、cordova pluginは入れ直すとすぐキャッシュが残ったりするのか、動かなくなるので非常に奇妙。プラグイン制作したときに、このあたりで非常に苦労した。おかしくなったらStackoverflowに行くが、すぐに
- ReactNative:
- Android:各種プラグインをライブラリプロジェクト(言い方が古いかも。GradleModule)として作成する
- この点で、cordovaのようなビルドの問題が起きにくそう
- iOS:未調査
- Android:各種プラグインをライブラリプロジェクト(言い方が古いかも。GradleModule)として作成する
- ionic2はcordovaに依存するので、cordova pluginを書けば同じように使える
- データベース
- ionic2: @ionic/storageがある
- ReactNative: Realmのモジュールがある
- 各種ネイティブモジュールの形式
- ionic2: cordova pluginを使うので、
cordova plugin add ...
でいろんなプラグインを入れる。 - ReactNative: npm modulesとして公開されているものを
npm install
して利用する。
- ionic2: cordova pluginを使うので、
認識あってるんかなー
Lilypond用テキストファイルを修正したらすぐにビルドするやつ書いた
https://gist.github.com/esperia/b11a9ee01725832194f45dee2546745b
使い方は中に書きました。
以前紹介したようなdockerimageを使って、ファイルの変更があったら自動的にビルドするように実装しました。
大げさなものではなく、gulp.watchを使ってファイルの変更検知をした後、コマンドを実行するだけのものです。
Lilypond入門した
きれいな楽譜が書きたいけど、FinaleNotepadが扱いにくすぎてやめたのでこっち使うことにした。 高校のころMML書いてたので、性にあってるかなーとか勝手に思ってる…
始め方1 LilyBin
一番簡単なのは、 LilyBinを使うことです。これはブラウザベースでLilypondを使えるサービスです。なので、開くだけですぐに楽譜がかけます。
ただ、楽譜公開する予定とかなければ、なるべくオフラインでしておきたいところです。
始め方2 Docker image
で、僕はMacをよく使うんですが、普通にやるとdependenciesのインストール数が多すぎて、インストールの時間とか容量とか大変なことになります。Homebrew入れている人は brew info homebrew/tex/lilypond
して頂くと気持ちが分かるかなと…
==> Dependencies Build: pkg-config ✔, libtool ✘, flex ✘ Required: gettext ✔, pango ✘, ghostscript ✘, mftrace ✘, fontforge ✘, fondu ✘, texinfo ✘, libffi ✘, libunistring ✘, bdw-gc ✘, gmp ✘, readline ✔ ==> Requirements Required: tex ✔, x11 ✔
なので、とりあえず始める方はDocker使うのがオススメです。Docker Hubに、Lilypondの環境が一式入ったDocker Imageがありますので、これを使いましょう。
https://hub.docker.com/r/markauskas/lilypond/
まずは、Dockerをインストールして、 docker pull markauskas/lilypond
しましょう。
その後、下記を test.ly
としてローカルに保存し、
\version "2.16.2" \relative c' { c d e f g a b c }
下記のプログラムで実行します。
docker run --rm -v $(pwd):/app -w /app markauskas/lilypond lilypond test.ly
するとPDFとmidiができると思います。この手順は先程のDockerHubへのリンク内でも考慮されています。
エディタについて
僕はまだ始めたところなので、エディタに関してはまだ未調査です。
調べてみたい場合は、ググるか、より簡単な編集手段より、各種エディタをチェックしてみて下さい。見た感じ完全なMac向けは少ない感じします。
僕は今のところvimを使っています。プラグインは、vim-lilypond-integrator を使っています。プラグイン管理はdein.vimを使用。
はじめよう
とりあえず下記は順に見ておいて損はないです。
- 何ができるのか?
- とりあえず書き方の雰囲気を知る
- 書き方一覧
さらに詳しく見る場合は、記譜法リファレンスが良いかもです。
おわり
まだ僕もlilypond入門したところなんですが、それはインストールでかなり時間使ってしまったからなのです。なので始める人が居たら、そのハードルが少しでも下がってくれることを願うばかりです。
Dockerの方法も、バージョンとか上げるときどうすんのよ、とか調査できていないので、本当はもうちょっと調べたいところです…。