フォント 英語 L I 1 区別 均等幅

SceneBuilder 10で日本語が文字化けするのを直す Windows10

日本語の言語パックが原因なので単純に削除して英語にするというもの
ユーザ\AppData\Local\SceneBuilder\app\dist.jar
の拡張子を.zipに変更
zipのまま開く
com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties を削除
自動的に保存されるのでしばらく待つ
これでEclipseから呼び出しても文字化けしない

setcookie php secure httponlyのサンプルコード


 //ここまでに通信bodyに出力がなにもないことが条件
session_start();
 
 $time=time()+3600*240;
      setcookie('_user[0]' ,"44",$time,"/","","","");
      setcookie('_user[1]' ,"Jackey",$time ,"/","",true );
      setcookie('_user[2]' ,"guest",$time ,"/","",true,true);

 header("Content-type: text/html; charset=UTF-8");

print_r($_COOKIE);
?>
引数の 5 はdomain 省略するとサブドメインは含めいない
6 セキュア属性 SSLのみでやり取りする
7 httponly属性 下のスクリプトでは表示されない

 <script>
   
   console.log(document.cookie);
 </script>

wordpressのログインアタック (ブルートフォース攻撃) の阻止

普通の対策では認証をさせないだけなのでアクセスは減らず,サーバーのパフォーマンス低下は避けられない。
以下はwp-login.phpへのアクセス自体を阻止する対策。

WordPressの自動更新にも対応

.htaccess に追加

# END WordPress の下に

 redirect 301 /wp-login.php /new-login.php  

nginxなら default.conf に

 rewrite ^/wp-login.php /new-login.php permanent; 

wp-login.php を new-login.php に別名コピー

ファイルを開いてwp-login.php → new-login.phpに全置換

new-login.phpの<?php 以下に追加

session_start();
  if(!isset($_SESSION['任意文字'])){ 
     echo '<h1>404 Not Found<hr></h1>';
   exit;
}

if($_SESSION['任意文字']!="てきとうなひらがな"){
    echo '<h1>404 Not Found<hr></h1>';
    exit;
}

[logon.php] ← セッションを作るためのダミーのログインファイル

 <?php
  session_start(); //セッション開始

  $_SESSION["任意文字"]="てきとうなひらがな";
 ?>

  <a href="new-login.php"> 秘密のログインへ </a>

普通に/wp-admin/ や /wp-login.php でログインしようとすると 404 Not Found になる。
ダミーで作った /login.php からならログインできる。

Xcode9.4 行コピー ショートカットの追加

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
をどこかにコピペして編集
最終行の
</dict>
</plist>
の上に以下を追加


   <dict> 
		<key>Duplicate Current Line</key> 
		<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> 
	</dict> 

Xcode再起動
Preferences → キーバインド → 一番下の 「Duplicate Current Line」
にあてたいショートカット設定

have_posts()でカテゴリ分岐


//カテゴリーID 2の記事
 if( have_posts() ) {
		 while(have_posts() ) {
		 the_post();
			 $cat = get_the_category(); //現在の記事のカテゴリー情報を取得
			 	if( $cat[0]->term_id===1) //現在の記事のカテゴリーIDを取得
			 get_template_part( 'content');
		 }
 } 
//カテゴリーID 2の記事
  if( have_posts() ) {
		 while(have_posts() ) {
		 the_post();
			 	 $cat = get_the_category(); 
			 	if( $cat[0]->term_id===2) 
			 get_template_part( 'content');
		 }
 } 

query_posts、get_posts を使うとページャーが動かなくなるので注意!

波ダッシュ(チルダ)問題

	
var_dump( '~'=== '〜');
bool(false)

var_dump( '〜'=== '〜');
bool(true)

'/[~|〜|/]/' 正規表現で置換はできる模様

Contact Form 7 で送信後に異なる URL にリダイレクトさせるには.

コンタクトフォーム サンキューページ

これらのフックは2017年廃止予定となっているので使えなくなりました。on sent ok:, on submit:

また、こちらの本家サイトの記事でうまくいかない場合の対処方法

手順はこう

  1. 送信フォームの専用テンプレートが必要。例 page-contact.php
  2. 固定ページへショートコードの投稿 → スラッグは"contact"
  3. page-contact.phpの先頭にコレを追加
    
    	<?php
    		if(!empty($_POST['必須項目']) && !empty($_POST['必須項目']) ...全部の必須 ){
    			header('Location: http://example.com/thanks/');
    			exit;
    		}
    	?>
    
  4. 固定ページへ サンクスページ投稿 →スラッグは "thanks"

二次元の連想配列を値で検索して一次元のキーを取得


pref_areas= array(
	"hokkaido" => array(1,"北海道"),	"aomori" => array(2,"青森県"),.....
  • array_column
  • array_search
  • array_slice
  • key

    青森県 で aomori を取得したい場合 、上の関数から順に使って

    	
     var_dump(key(array_slice($pref_areas, array_search( '青森県',array_column($pref_areas,1)), 1, true)));
    

    二次元の方のキーを取得したい場合

    		
     var_dump(array_search( "青森県" ,array_column($pref_areas, 1 ))+1 );
    

    javascript EC6でもできるようになった

    
    
    var obj2={'北海道':'hokkaido','青森':'aomori'};
      var searchKen = 'aomori';
      
    var result = Object.keys(obj2).reduce(function(r, k) {
                 return obj2[k] == searchKen ? k : r 
            }, null);
    console.log(result);
    

    reduce → 配列をループして1つの値を取得。

    rにはそれまでの結果
    kには今のキーが代入される

  • Graph returned an error: Can't Load URL: The domain of this URL isn't included in the app's domains.

    Facebook のOAUTH認証がまた変わるらしい

    3月には、以下の[有効なOAuthリダイレクトURI]フィールドに記載されていないURIからの呼び出しを無効化するセキュリティアップデートがアプリ設定に適用されます。
    このアップデートはプラットフォームで見つかった悪意あるアクティビティに対応するためのものです。リダイレクトURIに新しい制限モードを追加することで、アプリやウェブサイトを保護できます。
    詳しくはこちら


    「リダイレクトURIに制限モード」をはいにする

    警告は消える

    ログインすると Graph returned an error: Can't Load URL: The domain of this URL isn't included in the app's domains.・・・・・

    OAuthリダイレクトURIをgetAccessToken関数呼び出しの引数として追加して解決

       //アクセストークンを取得する
            $accessToken = $helper->getAccessToken("https://www.examplex.com/callback");

    botによるDOS攻撃、特定ファイルへの連続アクセスをipブロックにて遮断

    access.log により moodle/calendar/set.php への不正規アクセスを確認 ユーザーエージェントは "MJ12bot"

    ipsetを利用することで、IPアドレスの集合を簡単に管理することができる。
    iptables を実行しなくて済むので早速入れた。

    # yum install ipset 

    セットの作成

    接続拒否IPの集合"BLACKLIST"を作成

    # ipset create BLACKLIST hash:net

    プログラムフロー

    moodle/calendar/set.php 先頭へ追記

    
        $uaip = $_SERVER['REMOTE_ADDR'];//ipを取得
    	$ua = $_SERVER['HTTP_USER_AGENT'];// ユーザエージェントを取得
    	if(	strpos($ua, 'MJ12bot') !== false ){
    		http_response_code( 301 ) ;
    		header( "Location: ../../abcdef/iptables.php?uaip=$uaip" ) ;
    		exit;
    	}
    

    ../../abcdef/iptables.php 新規作成 (場所はどこでもいい)

    
    <?php 
    	$file='/var/www/deny_ip';
    	$getparam=htmlspecialchars($_GET['uaip']);
    
    	file_put_contents($file,$getparam,FILE_APPEND | LOCK_EX);
    ?>
    
    

    /var/www/deny_ip には MJ12botがアクセスしてきたipアドレスが書き込まれていく

    /root/iptables.sh シェルスクリプト作成

    
    	#!/bin/bash
    
    # 拒否IPリストに記載されたIPからのアクセスを拒否する
    if [ -s /var/www/deny_ip ]; then
        for ip in `cat /var/www/deny_ip`
        do
            ipset add BLACKLIST $ip
        done
    fi
    : > /var/www/deny_ip
    
    

    cron で5分おきに実行 vi /etc/crontab

    
    	 */5  *  *  *  * root sh /root/iptables.sh
    

    cron log確認 tail -f /var/log/cron

    ipset list BLACKLIST

    
    	Name: BLACKLIST
    	Type: hash:net
    	Header: family inet hashsize 1024 maxelem 65536 
    	Size in memory: 17008
    	References: 1
    	Members:
    	158.69.254.103    ←これが拒否IP
    

    特定IPをブロック 追加 削除 CentOS7

    遮断したいIP 例 149.56.223.241を設定します

    
     # iptables -I INPUT -s 149.56.223.241 -j DROP
     # /etc/init.d/iptables save
     # /etc/init.d/iptables restart
    
    
    Firewall  IPTABLE 操作
     iptables -L -v -n    一覧が見れる
     iptables -L -v -n --line-numbers   行番号もでる
    num   pkts bytes target     prot opt in     out     source               destination         
    1        4   240 DROP       all  --  *      *       149.56.223.241       0.0.0.0/0           
    2        0     0 DROP       all  --  *      *       185.163.1.11         0.0.0.0/0           
    3       31  1865 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 
    

    iptables -D INPUT 1 1のルールが消えるが、その後に繰り上がって、2が1になるので注意!

    次回このコマンドをアタック検出→ 自動実行にしてみる

    Vagrant入れて、ホストからpingが通る、インターネット接続までmac

    インストールはここの記事に従う

    Vagrantfile 有効なとこだけ

    	Vagrant.configure("2") do |config| 
    	config.vm.box = "rafacas/centos71-plain"
    	
    	  config.vm.provider "virtualbox" do |vm|
    		vm.memory = 1024
    	  end
    	  
    	  config.vm.define :app do |server|
    		server.vm.hostname = "app"
    		config.vm.network :public_network, :bridge => "en1: Wi-Fi (AirPort)"
    	  end
    	end
    

    起動時にエラー

    	翻訳	
    	VagrantはVirtualBox共有フォルダをマウントできませんでした。 これは通常です
    	ファイルシステム "vboxsf"が利用できないためです。 このファイルシステムは
    	VirtualBox Guest Additionsとカーネルモジュールを介して利用可能になりました。
    	これらのゲストの追加情報が適切にインストールされていることを確認してください。
    	ゲスト。 これはバージュのバグではなく、通常は不具合が原因です
    	不気味な箱。 コンテキストの場合、試行されたコマンドは次のとおりです。
    	
    	mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
    	
    	コマンドから出力されたエラーは次のとおりです。
    	
    	/sbin/mount.vboxsf:マウントに失敗しました:そのようなデバイスはありません
    
    	

    mac $ vagrant plugin install vagrant-vbguest で解決できた。

    $ curl yahoo.co.jp → ソースが開く

    $ ping 192.168.111.103
    PING 192.168.111.103 (192.168.111.103): 56 data bytes
    64 bytes from 192.168.111.103: icmp_seq=0 ttl=64 time=0.531 ms

    Vargrant ホストからpingが通る。インターネットに繋がる までのまとめ

    画像リンクに書き出されるURLを [ショートコード] 化する方法 WordPress

    <img src="http://sanzo.domain.jp/ze/wp-content/uploads/2017/09/torapist1-300x281.jpg" alt="" width="300" height="281" class="alignnone size-medium wp-image-36" />

    ↑サイトURL を ショートコード化↓

    <img src="[site]/wp-content/uploads/2017/09/torapist1-300x281.jpg" alt="" width="300" height="281" class="alignnone size-medium wp-image-36" />

    メリットはたくさんあるといっても思いついたのは3つだけ

    1. ローカルからアップするときに文字置換がいらない (リンクについては)
    2. ドメイン名が変わっても自動的に対応
    3. パスが短くなる

    やりかた
     

     add_shortcode('site', 'site_url');

    このコードを functions.php に書くだけ。  site_url() WP関数が最初からある

    mysql create table 索引のインデックスが長すぎます

    Specified key was too long; max key length is 767 bytes

    
    	mail varchar(255) NOT NULL,
    	 kibobi date NOT NULL,
      	KEY kibobi (kibobi(191)),
       UNIQUE KEY mail (mail(191))
    

    とか長さを指定すればOK

    日本語エンコードがutf8の場合はバイト数が少ないのでエラーは出ないが
    utf8mb4にすると大きくなるので警告が出るようになった。

    ダイジェスト認証の設定 Windows + Apache

    .htaccessを使った例

    .htaccess 新規作成→ 認証をかけたい場所に置く

    
    		AuthUserFile D:/xampp/password
    		AuthName "Digest Auth"
    		AuthType Digest
    		require valid-user
    
    	

    httpd.conf の編集 以下の行を探す

    #LoadModule auth_digest_module modules/mod_auth_digest.so

    「#」を外して Apache再起動

    パスワードファイル作成

    コマンドプロンプトかPowerShell起動 xamppインストールフォルダへ移動し、
    パスワード発行コマンドを打つ

    	> CD c:\xampp\apache\bin
    	> htdigest -c "D:xampp\password" "Digest Auth" izumo
    
    

    ブラウザで認証をかけたい場所の URLを入力 localhost/認証フォルダ
    ※インデックスには表示されないので手打ち

    Mac OS X El CapitanにMySQL をインストール

    1.MySQLをダウンロードする
    https://dev.mysql.com/downloads/mysql/

    公式サイトのMySQL Community Server 5.7.14のリストから一番上にある「Mac OS X 10.XX (x86, 64-bit), DMG Archive」を選択する。

    2.MySQLをインストールする
    デフォルトパスワードが表示されるので控える。
    システム環境設定にMySQLのアイコンが追加される。
    ちなみにインストール先は /usr/local/mysql-5.7.18-macos10.12-x86_64/
    エイリアスがmysqlで自動作成される


    スタートとstopはここから

    3. ログインはターミナルから パスは通っていないので
    cd /インストール先
    ./mysql -u root -p
    Enter password: インストール中に表示されたヤツ

    mysql> show databases
    You must reset your password using ALTER USER statement before executing this statement.
    初期パスワード扱いなのでだめらしい

    mysql> USER 'root'@'localhost' IDENTIFIED BY 'あんたのぱすわーど';
    OK!

    EclipseでのSSH鍵認証

    Eclipseで公開鍵/秘密鍵の認証を使用するには、実際には非常に簡単です。

    リモート・システム・エクスプローラ・プラグインがインストールされていることを確認してください。 Eclipseのこの機能は、SFTPを介して別のサーバーに接続してファイルを編集できるようにするものです。

    インストールが完了したら、システム上に作成した秘密鍵をEclipseに認識させる必要があります。

    「ウィンドウ」 - >「環境設定」に進み、SSH2を検索します。 次のようなボックスが表示されます。

    "Add Private Key"ボタンをクリックし、追加したいシステム上の秘密鍵を探します。 ボタンをクリックし続けると、さらに秘密鍵を追加し続けることができます。

    重要な点:パテでキーを作成した場合は、 OPENSSH 形式でエクスポートする必要があることを理解しておいてください。 EclipseはOpenSSHにあるプライベートキーのみを受け入れます。デフォルトのパテッティ.ppkフォーマットではありません! puttygenプログラムでは、Conversions - > Export OpenSSHです。

    Eclipseに戻る - 終了したら、OKを押してから、 "Remote Systems"ビューに移動します。 右クリックし、新しい接続を言う。 SSHのみを選択:

     

    次の画面で、サーバー情報を入力します。 作成したら、 "Sftp Files"オプションを右クリックし、 "Properties"をクリックします。 Subsystemでは、デフォルト以外のポートが必要な場合は、ポートを入力できます。

    あなたはおそらく、特定のディレクトリに接続するときに開始したいと思うでしょう。 これを実行するには、Sftpファイルを右クリックし、新規を選択してからフィルタを選択します。

    [フォルダ]ボックスに場所を入力します:

    この点で、接続を試みる前にECLIPSEを再起動する必要があります!

    新しいフィルタの場所を開くと、接続する必要があり、提供する必要のある資格情報を入力するように求められます。

     カラのままOK

     

    Nginx:HttpGzipModuleを使用する

    Googleアナリティクスによる分析ではページパフォーマンスはpoorな状態と出る。

      →  


    NGINXでGzip圧縮を有効にする

    HttpGzipModuleを設定すると,nginxがファイルを圧縮しブラウザが圧縮されたコンテンツを解凍して描画します。
    オリジナルのサイズの20〜30%を占め、サーバートラフィックを節約することができるようになる。

    HttpGzipModuleの設定

    /etc/nginx/nginx.confを開きます。
    server{ 内に追加します。

    #gzip圧縮でサイトのパフォーマンス判定をGoodに
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_http_version 1.1;
    gzip_min_length 1024;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    
    

    gzip圧縮でサイトのパフォーマンス判定がGoodに

    MOODLE使い方

    何か編集するのであれば管理者でログインして「編集モードの開始」を押す。

    1.階層イメージ

    カテゴリ→ サブカテゴリ →コース →

    2.何はともあれコースを作る

    1) 管理者権限
    (あるいはコース作成を許可されているユーザ権限) でログインしてください。
    2)「サイト管理」の「コース」をクリックしてください。


    >3.コースに教師として登録する

    Home→コース選択→設定(ユーザ)→登録ユーザ→[ユーザを登録する]を押す

    4.プロファイルの編集

    Moodle には、ユーザ間でメッセージのやり取りをしたり、ブログを記述したりする SNS機能があります。

    5.コースに学生を登録する



    a,201301,jioro,tanaka,j-ytanaka@exaple.jp

    ▼サイト管理 → ユーザ → アカウント →ユーザをアップロードする

    6.課題のインポート

    新しいコースを作成したら、過去のコースから課題をインポートできる。
    カテゴリ▶コース▶コース名選択▶管理▶インポート▶ ここでチェックは全部に付けたままにして次へ▶


    7.小テスト ドラッグ&ドロップテキスト の作り方

    [[1]] [[2]](配送日, 部署ID, 部署名, 配送先 ,部品ID, 数量)
    [[3]]( 2016-8-30 500 研究開発部 川崎事業所 2346 50 )
    2重の大かっこがドロップエリアの空欄になる

    解答の選択肢は下に書く

    穴埋め問題

      データベースへ接続して
      {1:SHORTANSWER:誤答#誤答へのフィードバック~=SQL#正答へのフィードバック~%50%クエリ#対応するフィードバック}
      文を実行することでデータベースを操作する。

      {1:SHORTANSWER:誤答#誤答へのフィードバック~=プリペアドステートメント#正答へのフィードバック~%50%プリペアド#対応するフィードバック}ではSQL文とパラメータ(ユーザーの入力値)を別々にDBへ渡すのでSQLインジェクションが防げる

      SQL文のパラメータ部分のところには値を入れずに:名前や?の文字を入れて開けておきます。この部分のことを{1:SHORTANSWER:誤答#誤答へのフィードバック~=プレースホルダ#正答へのフィードバック~%50%ぷれーすほるだ#対応するフィードバック}といい、後追いで値だけ変数にして{1:SHORTANSWER:誤答#誤答へのフィードバック~=バインド#正答へのフィードバック~%50%#対応するフィードバック}(結びつけ)してやります。