0. 環境 [Mac] 10.11.6 [Hugo] 0.19 1.インストール ここ数年、ブログウェアはjekyllを使ってましたが、下記の点が不便だったので、評判の良いHugoを試してみました。まずはサンプルを動かすところまで。 初期構築やバージョンアップが大変だったので、他のPCに環境を作る気になれない。(今ならDockerという手もありますが…) 記事の生成に時間がかかるようになってきた。 記事の更新後、2~3回リロードしないとブラウザに反映されない。 インストール・マニュアルに従って進めました。 僕の場合、Homebrewは既に入っていたのでStep2からやりました。 $ brew update $ brew install hugo 「インストール後にバージョンを調べてね」と書いてあるので念のためチェックです。 $ ls -l $( which hugo ) lrwxr-xr-x 1 mx admin 28 3 19 03:08 /usr/local/bin/hugo -> ../Cellar/hugo/0.19/bin/hugo $ hugo version Hugo Static Site Generator v0.19 darwin/amd64 BuildDate: 2017-02-27T19:21:29+09:00 2行とも0.19なので問題なさそうです。 2.サンプル作成 こちらのページに沿ってサンプルを作成しました。 適当なディレクトリで下記を実行します。(僕の場合 /app/hugo-test/ なので読み替えて下さい) ...

Read more

 更新日:2017年03月07日 0. 環境 フロントエンドの話なのでサーバー環境はあまり関係ないのですが、参考まで。 サーバー [Nginx] 1.10.2 [Kitura] 1.1.2 [Swift] 3.0.1 ローカル [Mac] 10.11.6 [Node.js] 7.6.0 [gulp] 3.9.1 1.準備 仕事でやっているWebサイトのスピードアップを個人でもやってみたくて、適当なページを1つ作ってみました。 シンプルカレンダー そしてパフォーマンス改善の教科書に選んだのはこちらです。 Speed Up Your Website 2.現状 Apacheで運用しているWebアプリが他にあるため、下記のようなちょっと珍しい構成になっています。 Nginx(リバースプロキシとして使用) + ServerSide-Swift(Kitura) 僕のネット環境(下り57Mbps/上り18Mbps)(※1)だとシンプルカレンダーのロードタイムが約2.5秒(※2)でそこまでストレスは感じませんが、DBを使ってないわりにこの数字なので改善の余地ありです。 (※1) 回線速度はSPEEDTESTで計測。 (※2) Chrome Developer Tools で計測。 3.ブラウザからのリクエスト削減 Chrome Developer ToolsのNetworkタブで見るとCSS、JavaScript(以下JS)のダウンロードに時間がかかっているので、教科書の[1. Reduce number of HTTP requests]-[Combine files]から取り掛かってみました。 HTMLから静的ファイル(CSS、JSなど)を複数ダウンロードする際、ブラウザが並列でリクエストできる数が決まっているため、なるべくそれを減らしましょうという内容です。 複数の静的ファイルをまとめるためのツール(※3)を検討しましたが、一番簡単に実現できそうだったgulpを使いました。 (※3) webpack、gulp、Grunt 4. ...

Read more

 更新日:2019年09月26日 0. 環境 [CentOS] 6.5 1. 手順 crontabの内容を適当な場所にコピー。(本文中ではユーザーのホームディレクトリ) usernameはcronを設定するユーザー名に読み替えて下さい。 $ cp -p /var/spool/cron/[username] ~ 上記ディレクトリの参照権限がない場合、これでもOK。 $ crontab -l > ~/[username] バックアップを取った後、内容を書き換えます。 $ cp -p ~/[username] ~/[username].bak $ vim ~/[username] crontabに取り込みます。 $ crontab ~/[username] 最後に取り込んだ内容とバックアップを比較しておきます。 差分として、修正箇所のみが表示されればOK。 $ crontab -l | diff ~/[username].bak - 2. 注意 下記でも編集は可能ですが、できれば避けた方がいいと思います。 キーボードで[E]の横には[R]があり、-r で誤ってcrontabの内容を削除する恐れがあるため。 $ crontab -e ...

Read more

0. 環境 [Mac] 10.11.6 [GNU bash] 3.2.57 1. 内容 test.shの先頭で第一引数をチェックして、無い場合は処理を中断します。 test.sh if [ "$1" = "" ] then echo "引数を指定して下さい。" # 処理を中断。 exit 1 fi echo "任意の処理" echo "引数は$1" exit 0 実行結果 $ sh test.sh 引数を指定して下さい。 $ sh test.sh hoge 任意の処理 引数はhoge ...

Read more

 更新日:2017年01月27日 0. 環境 [Swift] 3.0.2 1. 大文字・小文字処理 Swift3から大文字・小文字の処理は下記のようになります。 (明示的にするため入れていますが型宣言は省略可) 上記コードはIBM Swift Sandboxで動かせます。 下記リンク先の真ん中にある三角ボタンをクリックして下さい。 Swift3で大文字・小文字処理 (ChromeまたはFirefox推奨) 2. 参考ページ caseInsensitiveCompare localizedCaseInsensitiveCompare ...

Read more

 更新日:2017年02月09日 0. 環境 [Swift] 3.0.2 1. ループ Swift3からループ処理は下記のようになります。 上記コードはIBM Swift Sandboxで実際に動かすことができます。 下記リンク先の真ん中にある三角ボタンをクリックして下さい。 Swift3でのforループ (ChromeまたはFirefox推奨) ...

Read more

0. 環境 [CentOS] 6.8 (64bit版カーネル) [Apache] 2.2.15 1. 問題 ApacheのProxyPassディレクティブ(mod_proxy)を指定して、バックエンドから受け取ったコンテンツを表示しようとするとhtmlタグがそのまま表示されてしまいます。 Apache設定ファイルの抜粋 NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ErrorLog logs/test.local-error_log CustomLog logs/test.local-access_log combined </VirtualHost> 2. 対策 ChromeのDeveloper Toolsなどで見ると、下記のようにHTTPレスポンスヘッダーで平文が指定されています。 Content-Type text/plain; charset=UTF-8 デフォルトのMIMEタイプ指定を無効にすることで解消しました。 Apache設定ファイルの抜粋 NameVirtualHost *:80 # 省略 <VirtualHost *:80> ServerAdmin test@local ServerName test.local # ----- この行を追加 ----- DefaultType None # ----- この行を追加 ----- ProxyPreserveHost On ProxyPass / http://127. ...

Read more

0. 環境 [OS] Mac OS X 10.11.6 [IDE] Xcode 8.1 [Swift] 3.0 1. 問題 WCSession#sendMessage()を使ってAppleWatchからiPhoneアプリへメッセージを送っても、30秒ほどしないと通知されない。 AppleWatch側 @IBAction func tapButton() { let message = [ "fromChild": "AppleWatchからのメッセージ" ] WCSession.default().sendMessage( message , replyHandler: { reply in } , errorHandler: { error in } ) } iPhone側 func session(_ session: WCSession, didReceiveMessage message: [String: Any], replyHandler: @escaping ([String: Any]) -> Void) { if let watchMessage = message["fromChild"] as? String { print(watchMessage) } else{ print("error") } } 2. ...

Read more

0. 環境 [OS] Mac OS X 10.11.6 [IDE] Xcode 8.1 [Swift] 3.0 1. 問題 iPhone & AppleWatchアプリを作成中にSwiftを2.2から3へバージョンアップしたところ、iPhone側で下記のエラーが出るようになりました。 Type 'ViewController' does not conform to protocol 'WCSessionDelegate' 2. 解決 ViewControllerに下記メソッドを追加するとエラーが消えました。 public func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { } func sessionDidBecomeInactive(_ session: WCSession) { } func sessionDidDeactivate(_ session: WCSession) { session.activate() } 下記の仕様書にもこれらのメソッドは必須と書かれています。 [API Reference] WCSessionDelegate 3. 参考ページ Migrating app from Swift 2. ...

Read more

0. 環境 [OS] Mac OS X 10.11.4 [Eclipse] Mars.2 Release (4.5.2) 1. 問題 久々にEclipseをさわっていたら、タブをスペースに変換する設定に手間取ったのでメモ。 (Windowsの場合、メニュー名を読み替えて下さい) プログラミングで使うインデントに関して、僕はタブ派ですが、職場や最近の流れからしてもスペースを使わざるを得ないでしょう。 2. 解決 Eclipseに標準でついている機能が動かなかったので、AnyEditToolsというプラグインを入れました。 メニューの [ヘルプ]-[Install new software] をクリック。 [作業対象]に下記を入力。(anyぐらいまで打つと補完されます) anyedit - http://andrei.gmxhome.de/eclipse/ とりあえず最新バージョンのAnyEditToolsにチェック。 [次へ]をクリック。 途中ライセンスへの同意やセキュリティ警告が出ますが、最後までいくと再起動を求められるのでそのままOKをクリックします。 起動後、Eclipse上で任意のファイルにタブを入力し、保存したタイミングでスペースに置換されます。 変わらない場合や細かい設定をしたい場合は下記の設定画面から行って下さい。 メニューの [Eclipse]-[環境設定] をクリック。 [一般]-[エディタ]-[AnyEdit Tools] Eclipseでマークダウンを書く人は[Remove trailing whitespace]のチェックを外しておいたほうがいいかもしれません。 ファイルフィルタ(上記の[Add Filter])で拡張子mdを除外したり、プロジェクトごとに設定(*1)を変えることもできます。 (*1)プロジェクトごとの設定 プロジェクト・エクスプローラーの該当プロジェクトを右クリック。 [プロパティ]-[AnyEdit Tools] をクリック。 [Enable project specific settings]にチェックを入れる。 ...

Read more