Wordpressでアップロードした添付ファイルのサーバ内のパスの取得

例) 管理画面からアップロードしたファイルサイズが知りたい

// 添付ファイルのメタデータ取得
// wp_get_attachment_metadataは失敗するとfalseを返すので丁寧にするならif文をかましたほうが良い
$upload_filemeta = wp_get_attachment_metadata($attachment_id);

//WordPressのupload_pathの取得
$upload_dir = wp_upload_dir();
$src = $upload_dir['basedir'] . '/' . $upload_filemeta['file'];

echo filesize($src);

参考URL

https://qiita.com/karumado/items/9cc7906d46b0993b8ddc の転記

Written with StackEdit.

先日の謎ポケモンの正体、その名はメルタン!


ポケットモンスター Let's Go! ピカチュウ と関係があるみたい。
はがねタイプ、電気エネルギーを生み出すらしい。
はがねとでんきタイプの技を覚えるのかも⁈
なんとよく見るとしっぽがある!




https://www.pokemon.co.jp/ex/pika_vee/maboroshi/


Varnish HTTP Purgeプラグインでパージ対象URLを調整する


WordPressのキャッシュサーバにVarnishを使用してる場合は、Varnish HTTP Purgeプラグインを使うことによってキャッシュを適宜消すことが出来て便利ですね。
Varnishはキャッシュ有効期間をすぎるか、purgeしない限りキャッシュは消えません。
Varnish HTTP Purgeプラグインを使うことで記事の更新時に記事ページと関連ページのキャッシュをパージできます。

purge対象URLのを調整したい場合は、フィルターが用意されてるので使えば良いたとえば下記のように


add_filter( 'vhp_purge_urls', 'purge_url_filter', 10, 2 );
function purge_url_filter($purgeurls, $postId) {
   $filterurls = array();
   //purge対象から外したいURLをfilter_urlsにarray_push
   array_push($filterurls,
       get_author_posts_url( get_post_field( 'post_author', $postId ) ),
       get_author_feed_link( get_post_field( 'post_author', $postId ) ),
       get_bloginfo_rss('rdf_url') ,+       get_bloginfo_rss('rss_url') ,
       get_bloginfo_rss('rss2_url'),
       get_bloginfo_rss('atom_url'),
       get_bloginfo_rss('comments_rss2_url'),
       get_post_comments_feed_link($postId)
   );
   //purge対象URLを追加するにはpurgeurlsにarray_push
   array_push( $purgeurls, home_url() . '/hogehoge' );
   $urls = array_diff($purgeurls,$filterurls);
   return $urls;
}

https://qiita.com/karumado/items/8146bfc736238b9d36ab からの転記
Written with StackEdit.

wp-cliが Undefined index: SERVER_NAME でエラー吐く場合の対応

エラー内容

PHP Notice:  Undefined index: SERVER_NAME in phar:///usr/local/bin/wp/php/wp-cli.php(23) : eval()'d code on line 79

原因

wp-config.php$_SERVER['SERVER_NAME']が無いのでプンプン怒ってる。
$_SERVER['SERVER_NAME']はApache経由でphpを動かしている時、参照可能なので
代わりにphp_uname("n");を使ってやると良い。(ネットワーク名を取得している)
※http.confにserver_nameをネットワーク名と別で指定してる場合は注意

example

if (!isset($_SERVER['SERVER_NAME'])) {
    $_SERVER['SERVER_NAME'] = php_uname("n");
}

参考URL

https://qiita.com/karumado/items/39b59bf8a73d77c8862d の転記
Written with StackEdit.

ポケモンGO見たことないポケモン





今日マクドナルドでミューツーをなんとかGETできた。

コミニティデイのチコリータのときに、
しばらくして
頭がボルトで胴体が銀色のメタモンみたいなポケモンが出てきた。

捕まえるとメタモンに変わったが一体なんなのだろうか??
https://jp.ign.com/pokemon-go/29262/news/pokmon-go

なぞに包まれている

Palo Alto globalprotect が Mac El Capitan で動かない場合の対処方法

概要

Palo Alto globalprotect のMacクライアントを El Capitanで動かす場合SIPがあるために動かない。
MACのリカバリーモードのターミナルで csrutil enable --without kext を実行し再起動すれは接続出来るようになる。

リカバリOSの起動

macを再起動し command (⌘) + R を押しっぱなしでApple ロゴが表示されれば、キーを押すのをやめる。
リカバリモードの起動を確認

csrutil コマンドを実行

ターミナルを起動する。(リカバリーモードの上部メニューにあります。)
下記コマンドを実行
csrutil enable --without kext
Macを再起動する。

確認

Kext Signing: disabled になっていれば、 globalprotect クライアントアプリは使える。
$ csrutil status
System Integrity Protection status: enabled (Custom Configuration).

Configuration:
 Apple Internal: disabled
 Kext Signing: disabled
 Filesystem Protections: enabled
 Debugging Restrictions: enabled
 DTrace Restrictions: enabled
 NVRAM Protections: enabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.

参考

Download and Install the GlobalProtect Agent for Mac
Mac OSX El Capitan でのSIP対策 - I* HACK! ウェブ関連のタレコミ
Enabling parts of System Integrity Protection w… | Apple Developer Forums
https://qiita.com/karumado/items/1aaf0baaa944aa685ef5 の転記
Written with StackEdit.

TwitterのTweetボタンのカウント非表示する

公式のスクリプトを使ってもcountが表示されて困ってた。

https://about.twitter.com/resources/buttons
<a href="[https://twitter.com/share](https://twitter.com/share)" class="twitter-share-button"{count} data-via="hogehoge">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

対応

aタグにdata-count="none"を追加
<a href="[https://twitter.com/share](https://twitter.com/share)" class="twitter-share-button"{count} data-via="hogehoge" data-count="none">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
https://qiita.com/karumado/items/74cc0602e35c8780fcf3 の転記
Written with StackEdit.

anyenvのpyenvでApacheWSGI

概要

anyenvを利用して wsgiしたかったが 設定方法がわからなかったのでパスこちらにメモ
anyenv を利用して pyenv を利用しているのでパスが長くなっていますが、 pyenv のみの使用してる場合は WSGIDaemonProcess から .anyenv/envs/ を消せばよいと思います。
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
  ServerName hoge.jp
  DocumentRoot /home/www/
  Alias /static/  /home/www/project/static/
  #Alias /media/  /home/www/project/media/
  WSGIScriptAlias / /home/www/project/wsgi.py
  WSGIDaemonProcess www python-path=/www/project:/home/userhoge/.anyenv/envs/pyenv/versions/v2.7.13/lib/python2.7/site-packages
  WSGIProcessGroup www

  <Directory /home/www/project/static>
    Options -Indexes
    Require all granted
    Order deny,allow
    Allow from all
  </Directory>

  <Directory /home/www/project>
    Order deny,allow
    Deny from all
    Allow from 127
    Allow from 127.0.0.1
    Allow from localhost
    <Files wsgi.py>
      Require all granted
      Order deny,allow
      Allow from all
    </Files>
  </Directory>

  ErrorLog /var/log/error.log
  CustomLog /var/log/access.log combined
</VirtualHost>

参考

https://qiita.com/karumado/items/1733169bfec927bfacb3 からの転記
Written with StackEdit.

django 管理画面でモデルの保存時に追加で処理したい

概要

ModelAdminsave_model 関数オーバーライドすればできます。
データの更新時に日付だけ更新したい場合は、 DateTimeFieldauto_now=True でモデル更新時に日付も更新することも可能です。
ただその場合は、objects.filter().update() では更新されない点を注意して下さい。

model

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    update_date = models.DateTimeField('date updated')
    system_update_date = models.DateTimeField('date system_updated', auto_now=True)

admin

class QuestionAdmin(admin.ModelAdmin):
    """
    Questionモデルの管理画面
    """

    def save_model(self, request, obj, form, change):
        """
        save_model関数のオーバライド
        """

        obj.update_date = datetime.now() # update_date を現在の日時で更新

        super(QuestionAdmin, self).save_model(request, obj, form, change)

admin.site.register(Question,QuestionAdmin)

https://qiita.com/karumado/items/f05b894e96cbd9663d13 からの転記です。

最近、ML Study Jams をやっている。

ML Study Jams : Machine Learning 初心者向けトレーニングプログラムを開始します https://developers-jp.googleblog.com/2019/02/ml-study-jams-machine-learning.html...