【Android】Fragment Lolipop以降

Activity

    FragmentManager fragmentManager = getFragmentManager();

    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    LoginFragment login_fragment = new LoginFragment();

   

    fragmentTransaction.setCustomAnimations(

        R.animator.fadein,

        R.animator.fadeout

        );

   

    fragmentTransaction.replace(android.R.id.content, login_fragment);

    fragmentTransaction.commit();

 

animaotr/fadein.xml

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"

    android:interpolator="@android:interpolator/linear"

    android:valueFrom="0"

    android:valueTo="1"

    android:propertyName="alpha"

    android:duration="200" />

【RPi】UART speed up

init_uart_baud initial UART baud rate. Default 115200

init_uart_clock initial UART clock. Default 3000000 (3 MHz)

・/boot/cmdline.txtを編集(削除)

#dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

・/etc/inittab ここをcomment out

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

 

・ /boot/config.txtに追記

# Higher UART Speed
init_uart_baud=921600
init_uart_clock=14745600

【RPi】Wifi設定

$ vi /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

 

WPA-PSK2 AES

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=”ssid-name”
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=”password”
}

【RPi】SD Backup/書き込み

・マウントポイントの確認

sudo diskutil list

 

・SDカードへの書き込み

sudo diskutil unmount /dev/disk2s1

sudo dd bs=1m if=2015-02-16-raspbian-wheezy.img of=/dev/rdisk2

 

・SDカードのバックアップ

sudo diskutil unmount /dev/disk2s1

sudo dd bs=1m if=/dev/rdisk2 of=sd.img

【RPi】ルートファイルシステムを拡張する(+2GB)

raspi-configでI2C等を有効にしていくと、空き容量が足りなくなってくるので容量を拡張する。

$ sudo fdisk /dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009bf4f

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 6399999 3138560 83 Linux

 

まず削除。
Command (m for help): d
Partition number (1-4): 2

 

それから作成
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2048-15564799, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-15564799, default 15564799): 10240000

 

確認
Command (m for help): p

 

保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

 

再起動して反映する。
$ sudo reboot

 

起動したら、
sudo resize2fs /dev/mmcblk0p2

 

確認すると空き容量が増えている。

$ df -h

Filesystem      Size  Used Avail Use% Mounted on

rootfs          4.7G  3.0G  1.5G  68% /

udev             10M     0   10M   0% /dev

tmpfs            12M  216K   12M   2% /run

/dev/mmcblk0p2  4.7G  3.0G  1.5G  68% /

tmpfs           5.0M     0  5.0M   0% /run/lock

tmpfs            24M     0   24M   0% /run/shm

/dev/mmcblk0p1   56M   27M   30M  48% /boot

【RPi】SDカードの空きエリアを/mntにマウントする

【pc】

sudo diskutil list

sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=2015-02-16-raspbian-wheezy.img of=/dev/rdisk2

 

【rpi】

※raspi-configで、expand root file systemはしない。すると、ルートファイルシステムがサイズ拡張されてSDの全エリア使ってしまうので。

$sudo fdisk /dev/mmcblk0

Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (1-4, default 3): 3
First sector (2048-15564799, default 2048): 6400000
Last sector, +sectors or +size{K,M,G} (6400000-15564799, default 15564799):
Using default value 15564799

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

$ sudo reboot

 

sudo mkfs.ext4 /dev/mmcblk0p3

/etc/fstab 変更

/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 0
/dev/mmcblk0p3 /mnt ext4 defaults,noatime 0 0

5列目のパラメーター:0 -> fschkしない。

Server Memo

WAF  

Web Application Firewall

 

WEBアクセラレーション

webサーバーの代わりにクライアントのリクエストを受け付け、複数のサーバーに分散させるリバースプロキシ、さらにサーバーからのレスポンスをキャッシュする

 

フォワードプロキシ

反応の遅いwebサイトに代わり応答するもの(普通のプロキシ)

 

リバースプロキシ

クライアントのリクエストを中継し、他のwebサーバーへリクエストを振り分ける。(ロードバランサ)

 

WSGI

Python標準のwebserver

 

Gunicorn

軽量のWSGI

 

nginx

フロントエンドwebサーバー。webサーバーの代わりにクライアントのリクエストを受け付け、複数のサーバーに分散させるリバースプロキシ、さらにサーバーからのレスポンスをキャッシュする高速webアクセラレーター。

webサーバー以外の使い方として、WAF、SSL、リバースプロキシとして使える。

web–(https) — nginx — (http) — gunicorn(複数) — django — database

 

※参考

https://django-best-practice-ja.readthedocs.org/ja/latest/deployment/servers.html#nginx

【RPi】fsprotect

fsprotect

sudo apt-get update
sudo apt-get upgrade

sudo apt-get -y install libncurses5-dev libxml2-dev subversion libssl-dev libspandsp-dev libsqlite3-dev sqlite3 libgtk2.0-dev libslang2-dev libnewt-dev libghc-zlib-dev libkrb5-dev git libreadline6-dev bc

 

・linux kernelソースをインストール

cd /usr/src
sudo git clone –depth 1 https://github.com/raspberrypi/linux.git

sudo ln -s linux linux-3.18.y
cd linux

 

・aufsをインストール
sudo git clone git://git.code.sf.net/p/aufs/aufs3-standalone aufs-aufs3-standalone
cd aufs-aufs3-standalone
sudo git checkout origin/aufs3.18
sudo cp -rp fs /usr/src/linux
sudo cp -rp Documentation/ /usr/src/linux
sudo cp -rp include/uapi/linux/aufs_type.h /usr/src/linux/include/uapi/linux/

sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-kbuild.patch
sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-base.patch
sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-mmap.patch zcat /proc/config.gz > ~/.config
sudo cp ~/.config .

 

・menuconfigで設定

sudo make menuconfig

Load

.config

スクリーンショット 2015-04-13 午後8.20.33

File systems
Miscellaneous filesystems
<*> Aufs (Advanced multi layered unification filesystem) support

スクリーンショット 2015-04-13 午後8.18.47

Makefile編集

VERSION = 3
PATCHLEVEL = 18
SUBLEVEL = 11
EXTRAVERSION = -aufs

sudo make clean
sudo make
ビルドに8時間くらいかかる。

 

・ビルド完了後

バックアップをとっておく。
sudo mv /lib/modules/3.18.7+ /lib/modules/3.18.7+.bak
sudo mv /lib/modules/3.18.7-v7+ /lib/modules/3.18.7-v7+.bak

 

・カーネル差し替え
cd /usr/src/linux
sudo make modules_install
Makefileで指定した
※3.18.11-aufs+ができます。

sudo mv /boot/kernel.img /boot/kernel.img.bak
sudo cp arch/arm/boot/Image /boot/kernel.img

 

・再起動
sudo reboot

 

・確認
$ uname -a
Linux 3.18.11-aufs+ #1 PREEMPT Sat Apr 11 19:07:53 UTC 2015 armv6l GNU/Linux

 

・fsprotectをinstall 

sudo apt-get install fsprotect

sudo update-initramfs -c -k $(uname -r)

 

・/boot/cmdline.txtにパラメーター(fsprotect)追記すると有効

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fsprotect
※削除すれば無効になるが/boot二プロテクトがかかっている場合は書き換えできないのでPCでマウントして書き換える

 

・/boot/config.txtに追記

# aufs
initramfs initrd.img-3.18.11-aufs+

 

・/bootもプロテクトをかける
/etc/default/fsprotect
PROTECT=”/boot=32M”

AWS + python3 + django1.7

install

AWSで micro instanceを生成する。
Security GroupにDjangoを動かすポート(ここでは8000番)を開放しておく。(SSHのあるグループに追加)

AWSに接続しする。
$ chmod 400 xxxx.pem
$ ssh -i xxxx.pem ubuntu@xxx.xxx.xxx.xxx

python3に設定
~/.bash_aliases作成。
alias python=python3

source  ~/.bash_aliases
実行

※python3 コンパイルする場合は、下記実行

wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
./configure --prefix=/opt/python3.4
make
sudo make install

mysql install
sudo apt-get install mysql-server

起動・終了方法
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop

django

pip3 install Django==1.7

※1.8はドライバ(mysql-connector-python)がまだ対応してない模様。

sudo apt-get install python-setuptools
sudo apt-get install python-mysqldb
sudo pip3 install mysql-connector-python –allow-external mysql-connector-python

プロジェクトの作成
$ django-admin startproject pm

setting.pyを編集
DATABASES = {
'default': {
'NAME': 'user_data',
'ENGINE': 'mysql.connector.django',
'USER': 'mysql_user',
'PASSWORD': 'priv4te',
'OPTIONS': {
'autocommit': True,
},
}
}

django起動
python manage.py runserver 0.0.0.0:8000

ブラウザからグローバルIP:8000にアクセス。