からかい上手の高木さん からかいシュミレーション

f:id:surume_Reflection:20180331123556p:plain

※押すと以下にネタバレが表示されます。

女性の社会進出で貧困格差社会を実現する方法

www.youtube.com

愛とは何か

唐突だが、愛とは何か?そんな質問を投げかけてみる
世間的に婚活や嫁探しでは、一般的に家事や料理が出来るかなど
収入や学歴なんかを重要視する。

では家事育児をする高収入高学歴は、誰にも勝る愛を持っているか?
そう、どう考えても違うのがわかる

女性は上昇婚指向

「女性は下方婚をしない」
こう言うと女性は、私の周りには下方婚してるが結構人居るだとか
家事育児をする男性が少ないから仕方ないと言う

だが考えて欲しい
そんな社会では、婚活や草食化による童貞の増加は話題に上がらない
まして童貞である彼等から家事育児をするか、どう判断するのだろうか?
今の社会では、結婚してる時点でその大半が同類婚だと言いたい


日本では他国に比べ、極端に底辺男性が子供を持てない事実がある
決して男性が収入を気にしすぎてる訳では無い
実際、女性を養いたい童貞の新社会人が増えている

貧困格差社会にする方法

編集中...

キーワード: 上昇婚による男社会の維持, お一人様, エゴマ
福祉と経済の優先順, 生涯未婚率, 童貞, 少子化, 経済悪化

f:id:surume_Reflection:20180303123800p:plain f:id:surume_Reflection:20180303123810p:plain

参考

wotopi.jp


gendai.ismedia.jp

男女平等主義が反社会的な理由 メモ

f:id:surume_Reflection:20171219214317j:plain

少子化や格差や差別の全貌

中流層女性が男社会(高収入,子持ち)を維持
長時間労働化、独身男女から搾取する子持ちや福祉
・底辺男性の増加により少子化から経済悪化
これが全て下方婚しない女性が中層化したのが原因という自論

突然男女の給与が同じになると、低収入男性と高収入女性が余るようになる。
おっちょうどいいじゃないか!と思うだろうが女性は下方婚をしない
実は収入の問題では無い、女性は頼りになる男を欲していて
男と違いおっぱいが大きいとか家庭的だからとして養わない

wotopi.jp

女性による男社会の維持

男社会はでは子供が生みにくく男女とも薄給だと言われ
女性はセクハラやパワハラの対象だと言われるが
社会の上位男は基本的に子持ち,モテ男,既婚者,高収入のどれかである

女性はそういった男性を支持し子供を持ちたがるし
金は力や権力の象徴で子供も産めない低収入と関わらない
上位男性はセクハラをしないのは誤りだ電通のセクハラ同様普通にする

こうして男性間に格差が出来て来る
それによって少子化が加速し教育格差や無敵の人による犯罪が増加する
ルワンダ出生率は6だしシンガポールでは経済的に豊かなのに少子化傾向

実は男社会は女性だけで壊すしか無い
先ほど言った通り男社会を占めるのは上位男性である子持ち既婚者であり
女性に恵まれない男性も男社会壊すのに協力するはずが無い

女性専用車

女性専用車両に対する批判に関しては完全に女も悪い
広告料割高で完全に痴漢と冤罪を防げないと言う無意味さ
満員の際に男性がそちらには乗れないと言う実害もある

ただの女性優遇であり男性の協力で成り立っている
男女とも男女別車両化を進める事はあっても
女性専用車を無くしたり男性専用車を批判するのは悪意がある

男性が女性専用に乗車した際、降車させるのは駅員でも女性でも違法
女性が不快だからと普通車両から降車させられないのと同様
男性専用が無い男性差別で訴えられるのを防ぐ為の任意協力です。

iOSでのVPN接続をちょっと調べてみる

http://www.infraexpert.com/study/dot1xz01.html

EAP方式のEAP-TLSなどでは相互に証明書が提出され信頼チェーンを確立する
※EAPの信頼のある証明書が必要

VPN関連の用語解説

  • IEEE802.1X(EAP-TLS) :有線LANや無線LANにおけるユーザ認証の規格
    • サプリカント :IEEE802.1Xにおけるクライアント(PCには標準搭載)
      • 無線ではEAPOLパケットで送信
    • 認証装置 :サプリカントと認証サーバの仲介役となるネットワーク機器
      • 結果に応じてアクセス制御をする
      • EEE802.1X対応のLANスイッチまたは無線LANアクセスポイント
      • 無線/有線でRadiusパケットを送信
    • 認証サーバ :ユーザ認証を行うサーバ
  • Radiusによる認証 :
    • 構成

資料系

iOSでFirebaseのGoogle認証登録を実装

f:id:surume_Reflection:20170520175010p:plain

記事

※注意※
17/05/20にFirebase4.0.0がリリースされていますが
過去バージョン指定をしないと動作しません



記事を書いている人間は、現段階でiOSアプリ開発の経験は2週間ほどで
基本Firebaseのガイド通りに実装しているだけなので 参考にはならないです
環境や注意点は書いてますが、メモレベルの記述なのであしからず..

環境:

開発環境-バージョン

xcode 8.3.2
cocoapod 1.2.1
Apple Swift 3.1
動作確認 (iOS 10.3)

SDK-バージョン

Firebase 3.17.0
GoogleSignIn 4.0.2

下準備:

xcodeのインストール (省略)
Firebaseにアカウント登録 (省略)
プロジェクトの作成
  1. iOSSingleViewApplicationを選択
    f:id:surume_Reflection:20170520160404p:plain

  2. アプリ名を入力後NEXTを押すと自動で生成されます。
    f:id:surume_Reflection:20170520160821p:plain

  3. Firebase側のAuthenticationのログイン方法から有効化
    f:id:surume_Reflection:20170520205539p:plain


1. ライブラリと初期設定:

cocoapodのインストー

$ gem install cocoapods
$ pod init # 管理ファイルを生成
$ vi Podfile # SDKの追記

※Podfileへの追記内容 f:id:surume_Reflection:20170520161028p:plain

  pod 'Firebase', '3.17.0'
  pod 'Firebase/Core'
  pod 'Firebase/Auth'
  pod 'GoogleSignIn', '4.0.2'

Firebaseにアプリを追加

  1. FirebaseのダッシュボードHOMEから概要のiOSを選択
  2. iOSバンドルIDに上記のBandleIdentfierの欄の内容をコピーペースト
    f:id:surume_Reflection:20170520162334p:plain ※BandleIdentfierはツリーの青いアプリ名ファイル選択してGeneralタブにあります。
  3. 設定ファイルのダウンロード設置
    f:id:surume_Reflection:20170520163419p:plain

アプリにREVERSED_CLIENT_IDを設定

  • 先ほど入れたGoogleService-info.plistREVERSED_CLIENT_IDをコピー f:id:surume_Reflection:20170520171658p:plain


  • プロジェクトのinfoURL Typeを追加し、URL Schemesにペースト f:id:surume_Reflection:20170520173140p:plain

2. 実装

インポートの記述

  1. AppDelegate.swiftViewController.swiftに下記を記述
import Firebase
import GoogleSignIn
  1. AppDelegate.swiftに初期化処理を記述 アプリ起動時のapplication:didFinishLaunchingWithOptions:内に記述します。
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch.
        FIRApp.configure()
        return true
    }

注意:
importでエラーが出ている場合はFramework Search Pathsがマッチしていない場合があります。
「CocoaPodsを使用しているプロジェクトでは、「.xcodeproj」のファイルから開くとビルドできません。」

コードの追記

AppDelegate.swift

import UIKit
import Firebase
import GoogleSignIn

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate, GIDSignInUIDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch.
        FIRApp.configure()
        
        GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID
        GIDSignIn.sharedInstance().delegate = self
        
        return true
    }
    @available(iOS 9.0, *)
    func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
        -> Bool {
            return GIDSignIn.sharedInstance().handle(url,
                                                        sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
                                                        annotation: [:])
    }
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        return GIDSignIn.sharedInstance().handle(url,
                                                    sourceApplication: sourceApplication,
                                                    annotation: annotation)
    }
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
        if error != nil {
            return
        }
        
        guard let authentication = user.authentication else { return }
        let credential = FIRGoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                          accessToken: authentication.accessToken)
        FIRAuth.auth()?.signIn(with: credential) { (user, error) in
            if error != nil {
                return
            }
        }
    }
    func sign(_ signIn: GIDSignIn!, didDisconnectWith user:GIDGoogleUser!, withError error: Error!) {
        print("ログイン認証成功");
    }

    func applicationWillResignActive(_ application: UIApplication) {}
    func applicationDidEnterBackground(_ application: UIApplication) {}
    func applicationWillEnterForeground(_ application: UIApplication) {}
    func applicationDidBecomeActive(_ application: UIApplication) {}
    func applicationWillTerminate(_ application: UIApplication) {}
}

ViewController.swift

import UIKit
import Firebase
import GoogleSignIn

class ViewController: UIViewController, GIDSignInDelegate, GIDSignInUIDelegate {

    override func viewDidLoad() {
        super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib.
        
        GIDSignIn.sharedInstance().uiDelegate = self
        GIDSignIn.sharedInstance().signIn()
    }
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {}
    func sign(_ signIn: GIDSignIn!, didDisconnectWith user:GIDGoogleUser!, withError error: Error!) {}

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

NodeJSのWebSocketで入力内容の送受信

コマンド

$ npm init
$ npm i websocket
$ node server.js #サーバー動かす

コード

server.js
var http = require('http');
var WSServer = require('websocket').server;
var url = require('url');
var clientHtml = require('fs').readFileSync('test.html');

var plainHttpServer = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/html'});
    res.end(clientHtml);
}).listen(8888);

var webSocketServer = new WSServer({httpServer: plainHttpServer});
var accept = ['localhost', '127.0.0.1'];

webSocketServer.on('request', function (req) {
    req.origin = req.origin || '*';
    if (accept.indexOf(url.parse(req.origin).hostname) === -1) {
        req.reject();
        console.log(req.origin + ' access not allowed.');
        return;
    }

    var connection = req.accept(null, req.origin);
    console.log((new Date()) + ' Connection accepted.');

    connection.on('message', function(message) {
            //if(msg.utf8Data === 'Hello'){}
            console.log('Received Message: ' + message.utf8Data);
            connection.sendUTF("<Echo>"+message.utf8Data);
            //websocket.send('sended from WebSocket Server');
    });

    connection.on('close', function (code,desc) {
        console.log('connection released! :' + code + ' - ' + desc);
    });
});
test.html
<html>
<head>
   <title>タイトル</title>
   <meta charset="utf-8">
</head>
<body>

<script>
var ws = new WebSocket("ws://localhost:8888");
ws.onmessage = function(e) {
   console.log("OnMessage:"+e.data);
};
ws.onclose = function (e) {
   console.log(e.code+"/"+e.type);
};

//1秒ごとに入力内容を送る
function sendData(){
   ws.send( document.getElementById('message').value );
}
setInterval(sendData, 1000);
</script>

<input id="message" type="text" value="フロント送信データ" />
<button onClick="sendData()">送信</button>

</body>
</html>

pureなnodejsでhtml表示とmysql接続

サーバー接続

一緒に見たいのでメモレベル削除予定 ※test.htmlを同階層に設置

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;

var server = http.createServer();
server.on('request', doRequest);

// ファイルモジュールを読み込む
var fs = require('fs');

// リクエストの処理
function doRequest(req, res) {
    
    // ファイルを読み込んだら、コールバック関数を実行する。
    fs.readFile('./test.html', 'utf-8' , doReard );
    
    // コンテンツを表示する。
    function doReard(err, data) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        res.end();
    }
    
}

MySQL接続と操作

他のサイトを参考にswitchで切り替えれるようにしただけ…
node init.js create_database #node_mysql_testデータベース作成
node init.js create_table #userテーブル作成
node init.js create_date ユーザー名 #ユーザー追加

const mysql = require('mysql');
const db_name = 'node_mysql_test';
const table_name = 'user';

var client = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : ''
});

// 各種DB操作
console.log(process.argv);
switch(process.argv[2]){
    case "create_database":
        client.query('CREATE DATABASE '+ db_name, function(err) {
          if (err && err.number != mysql.ERROR_DB_CREATE_EXISTS) {
            throw err;
          }
        });
    break;
    case "create_table":
        client.query('USE '+ db_name);
        client.query(
            'CREATE TABLE '+ table_name+
            '(id INT(10) AUTO_INCREMENT,'+
            'name VARCHAR(100),'+
            'PRIMARY KEY (id))'
        ,function(err){
            console.log(err);
        });
    break;
    case "create_data":
        client.query('USE '+ db_name);
        client.query(
            'INSERT INTO '+ table_name+
            ' SET name = ?',
            process.argv[3], function(err, info) { console.log(err); });
    break;
    default:
        console.log("該当引数なし:"+process.argv[2]);
}


client.end();