英語と筋トレとプロテイン
利用規約とプライバシーポリシーをtextlintでチェックするようにしました
欲張っていろんな rule を指定したので初っ端のインストールコマンドが
npm install -D textlint textlint-plugin-html textlint-rule-common-misspellings textlint-rule-general-novel-style-ja textlint-rule-incremental-headers textlint-rule-max-appearence-count-of-words textlint-rule-max-length-of-title textlint-rule-no-double-negative-ja textlint-rule-no-doubled-conjunction textlint-rule-no-doubled-conjunctive-particle-ga textlint-rule-no-doubled-joshi textlint-rule-no-dropping-the-ra textlint-rule-no-hankaku-kana textlint-rule-no-mix-dearu-desumasu textlint-rule-no-nfd textlint-rule-no-todo textlint-rule-sjsj textlint-rule-spellcheck-tech-word textlint-rule-spellchecker
とえらい長いコマンドになったのですが無事導入できました。
nodejs を travis でやるのが初めてで最初インストールできない rule があったのですが、公式のドキュメントにあるように .travis.yml を調整して事なきを得ました、やりましたね。
Building a Node.js project - Travis CI
.travis.yml
sudo: false language: node_js node_js: "stable" script: - npm run textlint env: - CXX=g++-4.8 addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.8
利用規約とプライバシーポリシーを日本語と英語で書きました
経緯
「利用規約が日本語じゃないので☆1です」というお叱りのレビューを頂きました。
— Aska (@su_aska) 2016年5月18日
この機会に図なども多用しわかりやすい日本語の利用規約作成し、将来は順次対応言語も拡大を検討致します。
プロダクトを成長させるのはユーザー、あらゆる声に感謝🙏
出来たのはこちらです。
サードパーティ製のログ解析やクラッシュレポートを付けるのは気が引けるなぁと思い付けていなかったのですが、今回プライバシーポリシーにもその旨を明記する事と致しました。
利用規約が定型的なものになりがちなのに対してプライバシーポリシーはサービスについて細かく書く余地が多く、良い機会でした。🙏
これからも時間を見つけてヘルプを書いたりしようと思います。
NSRegularExpressionやNSDataDetectorで指定するrangeにはString.utf16.countを使う
テキストからリンクを抜き出す場合などよくこういったコードを見ますが、テキストにサロゲートペアが含まれているとマッチの対象がサロゲートペアの分短く解釈され、末尾が切れたりします。
let text = "🍣 is sushi http://example.com/hello" let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue) let matches = detector.matchesInString(text, options: [], range: NSRange.init(location: 0, length: text.characters.count)) for match in matches { let link = (text as NSString).substringWithRange(match.range) print(link) // -> http://example.com/hell }
String.utf16.count を使うと期待した結果を得ることが出来ます。
let text = "🍣 is sushi http://example.com/abc" let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue) let matches = detector.matchesInString(text, options: [], range: NSRange.init(location: 0, length: text.utf16.count)) for match in matches { let link = (text as NSString).substringWithRange(match.range) print(link) // -> http://example.com/hello }
しかしこれは本当に気づきにくくSwiftライブラリでも characters.count を利用している例が多いです。
スゲーッ爽やかな気分だぜ。新しいUbuntuを入れたばかりの正月元旦の朝のよーによォ~ッ
まず、sshのパスワード認証を止めます。
インターネットには22番ポートが空いているサーバーを見つけてクラッキングするクローラーが大量に居ます。
ssh
詳しい解説 doc.7kai.org - SSHの設定
# いつもの mkdir .ssh chmod 0700 .ssh echo "自分の公開鍵" >> .ssh/authorized_keys chmod 0644 .ssh/authorized_keys
接続確認
exit
ssh username@hostname
パスワードなしでログイン出来るのを確認できたらパスワード認証を無効化します
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo vi /etc/ssh/sshd_config diff -u /etc/ssh/sshd_config.bak /etc/ssh/sshd_config --- /etc/ssh/sshd_config.bak 2016-04-07 15:32:28.901004710 +0900 +++ /etc/ssh/sshd_config 2016-04-06 19:02:05.076211610 +0900 @@ -25,7 +25,7 @@ # Authentication: LoginGraceTime 120 -PermitRootLogin without-password +PermitRootLogin no StrictModes yes RSAAuthentication yes @@ -49,7 +49,7 @@ ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords -#PasswordAuthentication yes +PasswordAuthentication no
反映させて終わり
sudo service ssh restart
鍵なしで接続時にパスワードを聞かれず接続が来られるか確認しておきましょう。
mv ~/.ssh/id_rsa ~/.ssh/id_rsa.bak ssh username@hostname > Permission denied (publickey). mv ~/.ssh/id_rsa.bak ~/.ssh/id_rsa
まずこれで一安心ですが、その後立てるミドルウェアやアプリが丸裸にならないようにファイヤーウォールを設定します。
ufw
便利な時代になりました。
sudo ufw default deny sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable sudo ufw status
cron-apt
パッケージの自動更新を設定します。
標準設定ではダウンロードのみでインストールはされません、通知メールを自分でやる派なのでその設定だけ入れます。
通知メールの配送のために postfix が必要ですが、25番ポートを閉じているならSPAM中継に悪用される事はありません。
postfix をインストールする際に構成を聞かれますが Internet Site で入れて後から master.cf から smtp をコメントアウトします。
sudo apt-get install cron-apt postfix
sudo vi /etc/cron-apt/config
sudo /usr/sbin/cron-apt
/etc/cron-apt/config
APTCOMMAND=/usr/bin/apt-get MAILTO="s.aska.org@gmail.com" MAILON="changes" DEBUG="changes" OPTIONS="-o quiet=1"
MySQL 5.7
AppサーバーにしろDBサーバーにしろclientかserverか大抵どちらか入れます。
最新の MySQL を入れるには mysql-apt-config を公式サイトから導入するのが簡単です。
cd /usr/local/src sudo wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb sudo apt-get update sudo apt-get install mysql-server # or sudo apt-get install mysql-client
server を入れる場合 root のパスワードを聞かれますが私は blank のまま Enter します。
それでも `sudo mysql` とやれば root でログインできるので、database と user を作り以後これを利用します。
sudo mysql > CREATE DATABASE justaway DEFAULT CHARSET utf8mb4; > CREATE USER justaway@192.168.0.20; > GRANT ALL PRIVILEGES ON justaway.* TO justaway@127.0.0.1; > FLUSH PRIVILEGES; > quit