今までの Androidアプリとは根本的に考え方が違うような感じがしているのでとっつきにくい。まずは写経から
CentOS7.7に Tracを導入したときのメモ
Trac関連
pipで全部入るので楽。ただ pipコマンドがデフォルトでは入っていなかったかも
sudo pip install Jinja2 sudo pip install Trac sudo pip install babel sudo pip install Genshi
あと apacheと連携させるために mod_wsgiをインストールする。
sudo yum install mod_wsgi
Trac環境用意
/var/www/trac
以下にTracのプロジェクトを置くことにする。
最初に実験用のプロジェクト SandboxProjectを作ってみる。
mkdir -p /var/www/trac cd /var/www/trac trac-admin SandboxProject initenv chown -R apache.apache /var/www/trac
run_trac.wsgi作成
/var/www/trac/run_trac.wsgi
を作成
import os os.environ['TRAC_ENV_PARENT_DIR'] = '/var/www/trac' os.environ['PYTHON_EGG_CACHE'] = '/var/www/trac/eggs' import trac.web.main application = trac.web.main.dispatch_request
chownで apacheにしてパーミッションを 755に変更する。
chown apache.apache run_trac.wsgi chmod 755 run_trac.wsgi
apache設定
/etc/httpd/conf.d/trac.conf
を作成
LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias /trac /var/www/trac/run_trac.wsgi <Directory /var/www/trac> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory>
とりあえずこれで apacheを再起動すれば最低限は動く。
sudo service httpd restart
Tracに認証を追加
adminアカウントを用意する。
cd /var/www/trac/SandboxProject htdigest -c .htdigest trac_user admin <adminの新規パスワード>
cd /var/www/trac/SandboxProject sudo -u apache trac-admin . permission add admin TRAC_ADMIN
/etc/httpd/conf.d/trac.conf
に以下を追加して httpdを再起動
<Location "/trac/SandboxProject/login"> AuthType Digest AuthUserFile /var/www/trac/SandboxProject/.htdigest AuthName "trac_user" require valid-user </Location>
Swift4で Web APIから JSONデータをもらいオブジェクト化する
Random User Generator | Home の APIを叩き、JSON形式で帰ってきたレスポンスを Swiftの構造体に収めるサンプル。 Playgroundで動作確認。
import Foundation struct RandomUserResult : Codable { var results : [User] var info : Info struct User : Codable { var gender : String var name : Name var location : Location var email : String var login : Login var dob : Dob var registered : Registered var phone : String var cell : String var id : Id var picture : Picture var nat : String struct Name : Codable { var title : String var first : String var last : String } struct Location : Codable { var street : Street var city: String var state: String var country : String var postcode: Int var coordinates : Coordinates var timezone : Timezone struct Street : Codable { var number : Int var name : String } struct Coordinates : Codable { var latitude: String var longitude: String } struct Timezone : Codable { var offset: String var description: String } } struct Login : Codable { var uuid : String var username : String var password : String var salt : String var md5 : String var sha1 : String var sha256 : String } struct Dob : Codable { var date : String var age : Int } struct Registered : Codable { var date : String var age : Int } struct Id : Codable { var name : String var value : String } struct Picture : Codable { var large : String var medium : String var thumbnail : String } } struct Info :Codable { var seed : String var results: Int var page : Int var version : String } } let apiurl = URL(string: "https://randomuser.me/api/")! var request = URLRequest(url: apiurl) request.addValue("json", forHTTPHeaderField: "dataType") URLSession.shared.dataTask(with: request) {data, response, err in if (err == nil) { print ("(゚∀゚) API通信成功") let jsonStr = String(data: data!, encoding: .utf8)! do { let result : RandomUserResult = try JSONDecoder().decode(RandomUserResult.self, from: jsonStr.data(using: .utf8)!) print (result) } catch { print (error.localizedDescription) } } else { print ("(´・ω・`) API通信失敗") } }.resume()
組み込みLinuxデバイスドライバの作り方
読みたい Qiita記事。9回目以降の内容が少し興味ある
- 組み込みLinuxデバイスドライバの作り方 (1) 1回目: ビルド環境準備と、簡単なカーネルモジュールの作成
- 組み込みLinuxデバイスドライバの作り方 (2) 2回目: システムコールハンドラとドライバの登録(静的な方法)
- 組み込みLinuxデバイスドライバの作り方 (3) 3回目: システムコールハンドラとドライバの登録(動的な方法)
- 組み込みLinuxデバイスドライバの作り方 (4) 4回目: read/writeの実装とメモリのお話
- 組み込みLinuxデバイスドライバの作り方 (5) 5回目: ラズパイ用のGPIOデバドラの実装
- 組み込みLinuxデバイスドライバの作り方 (6) 6回目: ioctlの実装
- 組み込みLinuxデバイスドライバの作り方 (7) 7回目: procfs用インタフェース
- 組み込みLinuxデバイスドライバの作り方 (8) 8回目: debugfs用インタフェース
- 組み込みLinuxデバイスドライバの作り方 (9) 9回目: 他のカーネルモジュールの関数を呼ぶ / GPIO制御関数を使う
- 組み込みLinuxデバイスドライバの作り方 (10) 10回目: I2Cを使ったデバイスドライバを作る
- 組み込みLinuxデバイスドライバの作り方 (11) 11回目: デバイスツリーにI2Cデバイスを追加する
- 組み込みLinuxデバイスドライバの作り方 (12)(完) 12回目: 作成したデバイスドライバを起動時にロードする