Swift4で Web APIから JSONデータをもらいオブジェクト化する

Random User Generator | HomeAPIを叩き、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()

VPSを乗っ取られる

備忘録。

さくらのVPSの rootが取られた。 調べると /root以下に pythonの実行環境が置かれなにかスクリプトが動いており、 cronで定期的に情報を取得していた。

 

取り急ぎそれらのファイルをすべて消し、 $HOMEのバックアップを取る。といっても IRCのログくらいだが

その後OSをクリーンインストールし、 sshのポートを変更、認証方法の厳格化を行う。

以下のサイトが参考になった。

dogmap.jp

組み込みLinuxデバイスドライバの作り方

読みたい Qiita記事。9回目以降の内容が少し興味ある

メモ: キー割り当て変更

Windows Updateしたらレジストリを初期化された。もとに戻すのに余計な時間を使わされたので今後のためにメモを残す。

CAPS LOCK (0x3A)      -> LEFT CTRL (0x1D)
LEFT CTRL (0x1D)      -> LEFT WINDOWS (0xE05B)
LEFT WINDOWS (0xE05B) -> LEFT ALT (0x38)

00 00 00 00  00 00 00 00
04 00 00 00  1D 00 3A 00
5B E0 1D 00  38 00 5B E0
00 00 00 00

Windows10で行ったが、HKEY_CURRENT_USER\Keyboard Layoutでは有効にならなかった。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutの Scancode Map を変更すること。

Android Architecture Components

便利そうなのは分かった。RxJavaのような非同期処理を書くにはどうすればよいかはまだよく見えていない。