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 を使うとページャーが動かなくなるので注意!

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-300×281.jpg” alt=”” width=”300″ height=”281″ class=”alignnone size-medium wp-image-36″ />

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

    <img src=”[site]/wp-content/uploads/2017/09/torapist1-300×281.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にすると大きくなるので警告が出るようになった。