Kensuke Kousaka's Blog

Notes for Developing Software, Service.

RxJavaでのExponential Backoffの実装

Exponential Backoffとは、リトライの間隔を1秒 -> 2秒 -> 4秒 -> 8秒 -> 16秒という風に増加させていくアルゴリズムである。これを用いることでクライアント及びリクエスト先サーバにおける度重なるリトライによる処理負荷を軽減できる。 RxJavaにおける実…

Autosizing TextViewの挙動を調べてみた

概要 Autosizing TextViewはAndroid 8.0(API 26, Oreo)より導入された機能で、これを用いることでTextViewのレイアウトサイズに応じて自動的にテキストサイズを調整してくれる。例えば、レイアウトサイズに収まりきらないような長いテキストを表示する必要…

ドラッグ操作による状態変化を無効にしたBottomSheetBehaviorの実装

Hide、Collapse、Expandという三つの状態を持たせることができ、シートを画面下からにゅっと出したり、逆にするっと縮めたり隠したりといったMaterial DesignでのBottom sheetsなレイアウトを簡単に実装できるのがBottomSheetBehavior。もちろんドラッグ操作…

Logcatで特定ログを除外する方法

Androidアプリの開発で動作ログを確認する際はLogcatを使うと思うが、verboseやwarningといったログレベルを各ログコードにおいて適切に設定できておらず、ログを追いかける際に冗長なログが大量に流れて辟易とした経験があるかもしれない。それぞれのログコ…

Android Serviceについてのメモ

AndroidのService周りについて、調べたことをメモする。 Android Serviceはいくつかの種類があり、呼び出し方によってその形態が変わる。 startService bindService startServiceを用いた場合、呼び出し元のActivity等が死んでも開始したServiceは影響を受け…

requestAudioFocusが失敗するケースとは

Androidでムービー・オーディオ周りを扱うことがあり,フォアグラウンドで再生時にバックグラウンドで再生されている音楽等を自動的に停止させたくてrequestAudioFocus周りを調べていた. だが,APIドキュメント等を調べても,このリクエストに失敗するのが…

既存のAndroidプロジェクトへのC/C++コードの導入(Android NDK - CMake)

本記事では,既存のAndroidプロジェクト(プログラム)にC/C++で書かれた処理コードを組み込み,JavaコードからあるデータをC/C++コードに渡して処理させ,処理結果をJavaコードで受け取ってViewに表示する方法についてまとめる.また,本記事ではndk-build…

論文自動添削&自動コンパイルチェック環境の構築(with Wercker&RedPen)

自分の所属しているゼミでは,論文の執筆にLaTeXを用いている.論文データは万が一の場合に備えた複数箇所へのバックアップやバージョン管理が非常に重要であり,僕自身はGitHubのプライベートリポジトリを利用して管理している.このLaTeXファイルのPDFへの…

DjangoアプリにLDAP認証を組み込む

Django+Jinja2を用いて開発しているWebアプリにLDAP認証を組み込むのに四苦八苦したのでメモ. なお,この記事を書くにあたり作成したサンプルアプリをGitHubで公開しているので,そちらも参考にしてほしい. ldap3のインストール PythonでLDAPを使うために…

Python3 CGIを使ったWebページのデバッグ環境構築 on Mac

MacローカルにWebサーバを用意し,Python3ベースのCGIが組み込まれたWebページを正しく表示させる方法をメモ.

Postfix+DovecotでSSLに対応し,SpamAssassinを組み込み,SPF+DKIM+DMARCを設定したメールサーバの構築

メール転送エージェントにPostfix,POP3/IMAPサーバにDovecotを用い,SSLによる通信経路の暗号化をし,スパムフィルタのSpamAssassinを組み込み,SPFやDKIM,DMARCを設定したメールサーバの構築手順について書く.

XenServerでのNFS経由でのISOマウント

ConoHaのVPSに保存したISOイメージをNFS経由でマウントして,XenServer上のVMを起動・OSインストールということがしたかったが,なかなか詰まったのでメモしておく. Install and Configure NFS Server まずはNFSをインストールし,設定を行う.NFSのインス…

SSH認証にGoogle Authenticatorを追加した

パスワード無しの公開鍵にて認証を行うSSH Server(ArchLinux)において,Google Authenticatorを認証に加える事が出来ると知り,設定を行った. まずは,以下のコマンドを実行してGoogle AuthenticatorのPAMライブラリを導入する. $ yaourt -S libpam-goog…

Arch LinuxにGitBucketをインストールしたログ

プライベートなGitホスティングサーバを持っておきたかったので,構築が簡単だというGitBucketを試してみた. Installation of Tomcat 以下のコマンドでtomcat8をインストールする. $ yaourt -S tomcat8 インストールできたら,/etc/tomcat8/tomcat-users.x…

SeleniumとPhantomJS,noseを用いたWeb UIテスト

WebのUIテストツールであるSeleniumとヘッドレスな(ブラウザ画面が無い)ブラウザであるPhantomJS,これらとPythonのユニットテストライブラリであるnoseを用いることで,WebアプリのUIテストを簡単に行える.

睡眠に関するメモ

姿勢 基本的には仰向きで寝るのがいいみたい.手足を広げて寝ると熱が逃げやすくなっていい. 横向き寝もありだが,この場合肘枕や不自然な腕・脚の曲げ方をしたまま寝てしまうと血流が悪くなり良くない.横向き寝の場合は体の右側を下にしたほうがいいかも…

自分のWebサイトにGitHubの草(GitHub Contributions Calendar)を表示する方法

自分のホームページにちょっとしたスペースが空いていて,GitHubの草のやつを入れたら面白いかなーと思い調べていたところ,ちょうどいいライブラリを見つけたが導入に手間取ったのでメモ.

jQueryとPython CGI間でのAjaxによるJSONデータの通信

久しぶりにjQueryのAjaxを用いてPython CGIとJSONフォーマットでのデータのやり取りを実装しようとしたが,思いの外詰まってしまったのでメモ.

uWSGIを用いた本番環境向けFlaskアプリケーションの構築

PythonベースのWebアプリケーションフレームワークであるFlaskだが,今までは作成したPythonスクリプトを直接実行し,クライアントからのリクエストを直接このスクリプトが受け取っていた.ただこのようなFlaskに実装されている組み込みサーバ機能を用いた運…

OpenVPN環境の構築

iPhoneのモバイル回線からでもVPNとプロキシ経由でWebブラウジングできるように,ArchLinux上にOpenVPN Serverを構築した. OpenVPN Serverの構築 まずは以下のコマンドを実行し,OpenVPN Server構築に必要なパッケージをインストールする. $ yaourt -S ope…

noseを用いたPython Flaskプログラムのユニットテスト

PythonベースのWebアプリケーションフレームワークであるFlaskを用いて開発しているWebアプリについて,その動作テストをしてみたいと思った.調べていると,Pythonのユニットテストライブラリであるnoseを用いることでかなり簡単にテストコードを実装できそ…

NginxでCGIを動かす

Pythonで書いたCGIをnginxで動かしたいと思ったが,設定に思いの外手間取ったのでメモ.ちなみに,OSはArch Linixを想定している. fcgiwrapの導入 nginxで普通のCGIを動かすために,fcgiwrapを以下のコマンドでインストールする. $ yaourt -S fcgiwrap イ…

WerckerとHerokuを使って自動デプロイを試してみた

GitHubやBitbucketにコードをプッシュすれば自動的にアプリのテスト・ビルド・デプロイを行うことができるCI(Continuous Integration,継続的インテグレーション)サービスであるWerckerと,Herokuを使い,アプリ開発の負担の一つであるデプロイ作業の自動…

Pelicanを触ってみた - 導入

Pythonで作られた静的サイトジェネレータ,Pelicanを触ってみているので,そのログを残していこうと思う.まずは導入から… Pelicanのインストール Python2系か3系がインストールされていてpythonコマンドでインタプリタが起動するような状態で,かつpipが導…

Flaskで認証

前回作成したシステムに,認証機能を追加する. app.pyの編集 まずは,app.pyを以下のように変更する. # -*- coding: utf-8 -*- from flask import Flask, render_template from flask import request, jsonify import json from flask import session, red…

FlaskとjQueryのAjaxでPOST

jQueryのAjaxを用いて送信されてきたPOSTリクエストをFlaskで受け取り,データを加工した上でjQueryに返信してWebページに反映させるようなページを作成する.

Flask触ってみた - 導入

Pythonの軽量Web Application FrameworkであるFlaskを触る機会があったので,ここに残しておく.

ownCloudの構築ログ

ArchLinuxにおいてownCloudを構築したので,そのログを書き殘そうと思う. LAMP まずはArchLinuxにLAMP環境を構築する. 以下のコマンドを実行してまとめてインストールする. $ yaourt -S apache php php-apache mariadb インストールが完了したら,Apache…

Zabbix + Slackによる障害通知システムの構築ログ

自宅サーバの稼動状態を監視するために,Zabbix + Slackによる監視環境を構築する.Zabbixを用いた監視サーバにはConoHaのVPSを利用する.サーバの動作OSはいずれもArchLinuxである. ConoHa : Zabbixサーバ Zabbixを使うために,まずはLAMP環境を構築する必…

Powerline環境の構築

ターミナルがものすごく綺麗にかっこ良くなるPowerlineと呼ばれるソフトウェアを,ArchLinuxにインストールする. なお,同じような手順でMacにも構築可能. 事前準備 Python2 or 3のインストール 普通にインストールするだけ.以下はPython2の場合. $ yaou…