【iOS】カメラプレビュー

カメラプレビュー

void ofApp::setupCameraPreview()
{
    AVCaptureSession *session = [AVCaptureSession new];
    [session setSessionPreset:AVCaptureSessionPreset1280x720];
    
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    
    if ([session canAddInput:deviceInput]){
        [session addInput:deviceInput];
    }
    
    previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    [previewLayer setBackgroundColor:[[UIColor blackColor] CGColor]];
    [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspect];
    
    [[previewLayer connection]setVideoOrientation:AVCaptureVideoOrientationLandscapeRight];
    
    cameraView = [[UIView alloc]initWithFrame: CGRectMake(0,0,ofGetWidth(),ofGetHeight())];
    cameraView.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:1.f];
    
    CALayer *rootLayer = [cameraView layer];
    [rootLayer setMasksToBounds:YES];
    [previewLayer setFrame:[rootLayer bounds]];
    [rootLayer addSublayer:previewLayer];
    [session startRunning];
   
    [viewController.view addSubview: cameraView];
}

 

【Ubuntu】SSH パスワード認証禁止する

sshで鍵認証アクセス設定後、さらにセキュリティを高めるためにパスワード認証による

アクセスを禁止しておく。

 

/etc/ssh/sshd_config
#PasswordAuthentication yes

を下記に変更
PasswordAuthentication no

 

また、下記の設定も確認する。

RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no

 

sshdを再起動して反映

sudo service ssh restart

【Ubuntu】WordPress export/import xml

wordpressでimportできるファイルサイズが2Mと少ない。

下記設定で容量を増やすことができる。

 

/etc/php5/fpm/php.ini

memory_limit = 128MB
post_max_size = 64M
upload_max_filesize = 32MB

※memory_limit > post_max_size > upload_max_filesizeとすること

 

/etc/nginx/conf.d/default.conf

server { 

    client_max_body_size 32M;

 

【Ubuntu】MySQL+nginx+Php+WordPress

まずユーザー作成

sudo adduser mknod

 

WordPressのインストール/公開フォルダに設定

wget https://ja.wordpress.org/latest-ja.tar.gz

tar zxvf latest-ja.tar.gz

mv /var/www/任意のフォルダ  ./wordpress

cd /var/www/任意のフォルダ

mv wordpress public_html

 

他パッケージ取得とインストール

sudo apt-get install mysql-server
sudo apt-get install nginx
sudo apt-get install php5 php5-cgi php5-cli php5-mysql php5-gd php-apc php5-fpm php-pear

 

sudo vim /etc/php5/fpm/pool.d/www.conf を編集

user = mknod
group = mknod
listen = 127.0.0.1:9000

 

再起動

sudo /etc/init.d/php5-fpm restart

 

nginxの公開フォルダ等を作成

sudo mkdir /var/www/
sudo mkdir /var/www/任意のフォルダ
sudo mkdir /var/www/任意のフォルダ/log
sudo mkdir /var/www/任意のフォルダ/public_html

sudo chown -R mknod:mknod /var/www

 

nginxの設定

sudo vi /etc/nginx/conf.d/default.conf

server {
listen 192.168.1.100:80 default_server;
server_name  xxxxx.co.jp;
access_log /var/www/任意のフォルダ/log/access.log;
error_log /var/www/任意のフォルダ/log/error.log;
root /var/www/任意のフォルダ/public_html;
index index.php;

if (!-e $request_filename) {
rewrite ^ /index.php last;
}

location ~ \.php$ {
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/msbi/public_html$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
}

再起動

sudo service nginx restart 

 

サービスの自動起動設定/解除

sudo update-rc.d nginx defaults
sudo update-rc.d -f nginx remove

 

mysql データベースを作成

mysql -u root -p
> CREATE DATABASE wp;
> GRANT ALL PRIVILEGES ON wp.* TO ユーザー名@localhost IDENTIFIED BY “パスワード”;

 

サイトへアクセス。

【Ubuntu】ファイアウォール

インストール

sudo apt-get install ufw

IP V6を無効にする

/etc/default/ufw
IPV6=yes   <- ここをnoにする

 

ファイアウォールを有効/無効にする

sudo ufw enable
sudo ufw disable

すべてのポートを禁止

sudo ufw default DENY

ポート22を禁止

sudo ufw deny 22

ポート80を許可

sudo ufw allow 80/tcp

ポート8888を許可

sudo ufw allow 8888

 

 

IP制限方法

sudo ufw allow from 192.168.100.100
sudo ufw allow from 192.168.100.0/24
sudo ufw allow from 192.168.100.100 to any port ssh
sudo ufw allow from 192.168.100.100 to any port 22/tcp

 

 

【Ubuntu】sshの設定(鍵認証ログイン)

sshの設定(鍵認証ログイン)

 

ローカルマシンでキー生成

$ mkdir ~/.ssh
$ ssh-keygen -t rsa -v
> Enter file in which to save the key (/Users/mknod/.ssh/id_rsa):
> Enter passphrase (empty for no passphrase):

 

~/.sshに

id_rsa
id_rsa.pubができる。

 

サーバーに転送(SCP)

scp ~/.ssh/id_rsa.pub ユーザ名@ipアドレス:~/.ssh/authorized_keys

 

ポート指定が必要な時は、-Pで指定する。

scp -P xxxx ~/.ssh/id_rsa.pub ユーザ名@ipアドレス:~/.ssh/authorized_keys

 

※複数のPCから鍵認証ログインしたい場合は、ログインしたいPCで作成した公開鍵のファイルの中身をauthorized_keysファイルに追記していく。
鍵認証でログイン

ssh -i ~/.ssh/id_rsa ユーザ名@ipアドレス

 

 

【Arduino】雨量計計測(割り込みでカウント)

雨量計を利用するとき、雨が降っている時だけカウントして、あとはスリープしていたい。
雨量計はシーソーが傾き、真ん中になった時にスイッチがONされる。
その地点を越えればまたOFFされるという仕様。

スイッチをpull-upしておき外部割り込みのPIN2に繋ぎその立ち上がり時の
割り込みをハンドルする。
また、スイッチであるためチャタリング除去のプログラムが必要。
省電力のためスリープを優先し今回の実装とします。

#define BOUNCE 200
int pin = 13;
int start_time;

volatile int state = LOW;
WatchdogClass WD = WatchdogClass();

void setup() {
  
  Serial.begin(9600);

  Serial.println("START");
  
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, RISING);

  WD.systemResetEnable(false);
  WD.enable(WatchdogClass::TimeOut4s);
}

void loop() {
 digitalWrite(pin, state);

 delay(100);
 WatchdogClass::timerReset();

 //power save mode. arduino can wakeup from timer2 intr. 
 SleepClass::powerSave();
}

int cnt = 0;

void blink() {

  // start count
  if(start_time == 0){
    start_time = millis();
  }else{
    if( (millis() - start_time) > BOUNCE ){

      start_time = 0;
      Serial.println(cnt);
      cnt++;
      state = !state;
    }
  }
}

 

【Python】Http POST/GET

Http/POST

import urllib
import urllib2

query = {"mail":"a@mknod.jp", "password":"123"}
query = urllib.urlencode(query)
resp = urllib2.urlopen("http://localhost:3000/api/login/", query)
resp.msg, resp.code

resp.geturl()
resp.info()

resp.read()
resp.realdline()

 

Http/GET

req = urllib2.Request("http://localhost:3000/api/project")
req.add_header("Content-Type", "application/x-www-form-urlencoded")
req.add_header("Authorization", "Token f93768d4-13fd-4246-bd31-863e140bb1f3")
resp = urllib2.urlopen(req)
resp.msg, resp.code

 

JSON-LD (JSON for Linking Data)

important !

 

http://json-ld.org/

Linked Data empowers people that publish and use information on the Web. It is a way to create a network of standards-based, machine-readable data across Web sites. It allows an application to start at one piece of Linked Data, and follow embedded links to other pieces of Linked Data that are hosted on different sites across the Web.

 

JSON-LD is a lightweight Linked Data format. It is easy for humans to read and write. It is based on the already successful JSON format and provides a way to help JSON data interoperate at Web-scale. JSON-LD is an ideal data format for programming environments, REST Web services, and unstructured databases such as CouchDB and MongoDB.

{
"@context": "http://json-ld.org/contexts/person.jsonld",
"@id": "http://dbpedia.org/resource/John_Lennon",
"name": "John Lennon",
"born": "1940-10-09",
"spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
}

 

URI

URI インターネット上のリソースを一意に特定するための文字列。URLとURNに分類できる。
URL
スキーム名(HTTP、FTPなど)、ホスト名、パス名などを適切な順序で組み合わせることでインターネット上にあるリソースを一意に特定
URN
スキーム名、名前空間識別子、名前空間固有文字列を組み合わせてインターネット上のリソースを一意に特定
 ISBN番号のようなもの