投稿

2018の投稿を表示しています

python venv Error returned non-zero exit status 1

python venv Error returned non-zero exit status 1$ python3 -m venv hoge_venv Error: Command '['/vagrant/hoge_venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. python3 -m venv --without-pip hoge_venv source hoge_venv/bin/activate #which python3#which pip curl https://bootstrap.pypa.io/get-pip.py | python3 deactivate source hoge_venv/bin/activate #which python3#which pip pip install requests pip freeze

Varnish6.1 install Enterprise Linux7

イメージ
how to install varnish6.1
# epel repositories install sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # varnish61 repositories install curl -s https://packagecloud.io/install/repositories/varnishcache/varnish61/script.rpm.sh | sudo bash sudo vim /etc/yum.repos.d/varnishcache_varnish61.repo edit /etc/yum.repos.d/varnishcache_varnish61.repo

varnish61/el/6/

varnish61/el/7/

[varnishcache_varnish61]name=varnishcache_varnish61 baseurl=https://packagecloud.io/varnishcache/varnish61/el/7/$basearchrepo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https://packagecloud.io/varnishcache/varnish61/gpgkey sslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [varnishcache_varnish61-source]name=varnishcache_varnish61-source baseurl=https://packagecloud.io/varnishcache/varnish61/el/7/SRPMS repo_gpgcheck=1gpgcheck=0enabled=1gpgkey=https://packagecloud.io/varnishcache/varnish61/gpgkey sslverify=1sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_e…

FIDO U2F セキュリティーを買ってみた。

イメージ
Google社員のフィッシングを0にした物理キー。余りの効果に、Google「もう自社でつくる」、元祖のYubicoは苦笑い
GoogleやFacebookへの不正アクセスを防御する約3000円の神デバイス
IAMの多要素認証でYubiKeyが利用できるようになりました

巷で話題の物理セキュリティキーを買ってみた。

 Googleアカウントの認証に登録してWindowsのchromeやchromebookで問題なく使えた。かったのはNFCに対応したePass FIDO®-NFC Security Key だが売りのNFCは私の持っているandroid端末だと認識してくれなかった。

おとなしくYubicoのYubikeyを買っておけばよかったのかも…。

AWSにも登録できるようだけど、AWSだと2段階認証が1個しか設定出来ないようでキーを無くしたら二度とログインできない気がして登録を躊躇して行っていない。

YahooもFIDOの認証を取ったみたいなのでそのうちキーを登録できるようになるのかもな。

ヤフー、新たなウェブ認証の規格「FIDO2」のFIDO Certified(認定)を国内企業で唯一取得 パスワードを使わない安全なログイン環境の実現に前進


PHP CodeSnifferでコーディング規約を守れているかチェックしてみる。

PHP_CodeSnifferを取ってくる。
git clone [https://github.com/squizlabs/PHP_CodeSniffer.git](https://github.com/squizlabs/PHP_CodeSniffer.git) phpcs WordPressのコーディング規約の追加
git clone -b master [https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git) wpcs cd phpcs ./scripts/phpcs --config-set installed_paths ../wpcs チェックできるコーディング規約の一覧を確認
$ phpcs -i The installed coding standards are Squiz, Zend, PSR1, PSR2, PHPCS, MySource, PEAR, WordPress-Extra, WordPress-Docs, WordPress, WordPress-VIP and WordPress-Core コーディン規約のチェック
ディテクトリ単位phpcs --standard=WordPress --report=summary htdocs/wp-content/themes/origin_theme ファイル単位phpcs --standard=WordPress htdocs/wp-content/themes/origin_theme/index.php デフォルトのコーディング規約の変更
phpcs --config-set default_standard WordPress 参考:URL
https://github.com/squizlabs/PHP_CodeSniffer/wikihttps://github.com/WordPress-Coding-Standards/WordPress-Coding-Standardshttps://qiita.com/karu…

Varnish4でガラケーIPアドレスのみアクセスを許可する

古き良き日本のガラケー携帯のIPからのアクセスだけを受けたい 今時こんな情報を必要とする人いないと思うけど…。
VCL acl docomo { include "docomo_iplist.vcl";} acl au { include "au_iplist.vcl";} acl softbank { include "softbank_iplist.vcl";}if(req.http.host ~"^hogehoge.com"){if(!client.ip ~ admin &&!client.ip ~ docomo &&!client.ip ~ softbank &&!client.ip ~ au ){return(synth(403,"Forbidden."));}}"210.153.84.0"/24; "210.136.161.0"/24; "210.153.86.0"/24; "124.146.174.0"/24; "124.146.175.0"/24; "202.229.176.0"/24; "202.229.177.0"/24; "202.229.178.0"/24; ガラゲーIP確認先Mobile Creation | ソフトバンク 作ろうiモードコンテンツ:iモードセンタの各種情報 | サービス・機能 | NTTドコモ KDDI au: 技術情報 > IPアドレス帯域 https://qiita.com/karumado/items/847c0ccd0d9c2d95daff の転記
Written with StackEdit.

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'];echofilesize($src);参考URLWordPressCodex日本語版 - 関数リファレンス/wp get attachment metadataWordPressCodex - Function Reference/wp upload dirhttps://qiita.com/karumado/items/9cc7906d46b0993b8ddc の転記Written with StackEdit.

WordPressサイトでNewRelicを導入してWordPressのメトリクスが表示出来てない場合の対応

Overviewではモニタリング出来てるけど、WordPressの Hooks や Plugin and themes がうまくモニタリング出来てない場合は、 php.ini 内の newrelic.framework を設定すれば表示される。;; Setting: newrelic.framework ; Type : string ; Scope : per-directory ;Default:empty(auto-detect framework); Info : Forces the framework to be one of the supported frameworks. This ; should only ever be used if the auto-detection fails, in ; which casewe(support.newrelic.com) would very much like ; to know about the detection failure. Must be one of the ; following values: cakephp, codeigniter, drupal, drupal8,; joomla, kohana, laravel, magento, mediawiki, symfony,; wordpress, yii, zend or no_framework.;; Note that "drupal" covers only Drupal 6and7.; newrelic.framework ="wordpress"サーバの構成にもよるが、mod_phpの場合Apacheを再起動することで設定が反映される。参考:https://docs.newrelic.com/docs/agents/php-agent/configuration/php-agent-configuration
(General configuration settingsのnewrelic.frameworkに書いてある。)https:/…

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

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

#メルタン は『ポケモン Let's Go! ピカチュウ・Let's Go! イーブイ』でも出会うことができるようです🌟
どうやったら出会うことができるのか......
詳細をお待ちください📡⚡️https://t.co/WA9R402V6q#ピカブイ#ポケモンGOpic.twitter.com/er2miSdVJr — 【公式】ポケモン情報局 (@poke_times) 2018年9月25日
『ポケモン GO』に突如現れた、謎のポケモン「??????」
その正体は、幻のポケモン「メルタン」だということが明らかになりました💡https://t.co/WA9R402V6q#ピカブイ#ポケモンGO#メルタンpic.twitter.com/BF8Yhog3oO — 【公式】ポケモン情報局 (@poke_times) 2018年9月25日

#メルタン の体は大部分が液体状の金属🔩
ほかの金属を侵食して、体内に取り込むことができます💥
かわいい表情に、見ているこっちも思わずにっこり😄🎶https://t.co/WA9R402V6q#ピカブイ#ポケモンGOpic.twitter.com/LYilQTtu0v — 【公式】ポケモン情報局 (@poke_times) 2018年9月25日 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);functionpurge_url_filter($purgeurls,$postId){$filterurls=array();//purge対象から外したいURLをfilter_urlsにarray_pusharray_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_pusharray_push($purgeurls,home_url().'/hogehoge');$urls=array_diff($purgeurls,$filterurls);return$urls;}https://qiita.com/karumado/items/8146…

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をネットワーク名と別で指定してる場合は注意
exampleif (!isset($_SERVER['SERVER_NAME'])) { $_SERVER['SERVER_NAME'] = php_uname("n"); } 参考URLPHP: $_SERVER - ManualPHP: php_uname - Manualhttps://qiita.com/karumado/items/39b59bf8a73d77c8862d の転記
Written with StackEdit.

WordPressで管理画面のライブラリの表示が遅いのでpost_mime_typeのインデックスを貼ったら早くなった

概要 何年も運用しているとWordPressにアップロードしてるファイルがかなりの数になってきていて管理画面のライブラリ画面の表示が遅くなってきます。
MySQLのスロークエリーを眺めていると SELECT DISTINCT post_mime_type FROM wp_posts WHERE post_type = 'attachment';が特に遅かったりします。
EXPLAIN で確認して見ると Extraが Using temporary インデックスが効いてない模様
インデックスを貼って
CREATEINDEX post_type_mime_type_idx ON wp_posts (post_type,post_mime_type);EXPLAIN で確認して見ると Extraが Using where; Using index インデックスが効いてます。
調べてみるとWordPressのチケット31071にそのまんまの内容がありました。
教訓 WordPressのアップデートを怠っていると日々WordPressコミニティの改善の恩恵を受けれないので積極的に更新しよう!
参考media / post_mime_type related queries are very slow on larger sites
漢(オトコ)のコンピュータ道: MySQLのEXPLAINを徹底解説!!
https://qiita.com/karumado/items/f5226b18cf8b5f49cf33 の転記
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/1aaf0ba…

Django でBasic認証をかける

イメージ
一般には公開したくないがクライアントにテストページを見せる時に
Basic認証を掛ける場合がある。
[http://djangosnippets.org/snippets/2468/ ](http://djangosnippets.org/snippets/2468/ “”)
from django.http import HttpResponse from django.conf import settings class BasicAuthMiddleware(object): def unauthed(self): response = HttpResponse("""<html><title>Auth required</title><body> <h1>Authorization Required</h1></body></html>""", mimetype="text/html") response['WWW-Authenticate'] = 'Basic realm="Development"' response.status_code = 401 return response def process_request(self,request): if not request.META.has_key('HTTP_AUTHORIZATION'): return self.unauthed() else: authentication = request.META['HTTP_AUTHORIZATION'] (authmeth, auth) = authentication.split(' &#…

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.crea…

SSL/TLSプロキシサーバ Hitch インストール

公式サイト
Varnishを使用していてSSL/TLS(https)を使いたいならシンプルな Hitch が心強い助けになる。
※Varnish4.1以降でないとPROXY Protocolに対応してないので注意
CentOSにhitchインストール 作業時点での最新バージョン
2016-01-26: Hitch 1.1.1 has been released. This is a maintenance release with various bug fixes.
Support for TLS1.0, TLS1.1 and TLS1.2 SNI, with and without wildcard certificates Support for HAproxy's PROXY protocol Safe for large installations: performant up to 15 000 listening sockets and 500 000 certificates. Support for seamless run-time configuration reloads of certificates and listen endpoints. ソース取得git clone [https://github.com/varnish/hitch](https://github.com/varnish/hitch) cd ./hitch ./bootstrap ./configure configureするときとかに足りなかったパッケージ$ sudo yum install python-docutils $ sudo yum install libev-devel $ sudo yum install openssl-devel $ sudo yum install flex-devel configure$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /…

Git-svnでSubversionからGitに移行方法

イメージ
はじめに Subversionのリポジトリからcommitログを引き継いだ形でGitへ移行した際の手順です。
また本番環境でのgitへの切替も含んでます。
注意点 一度、自分の手元のPCで作業用のディレクトリを作成して作業することをおすすめします。
間違ってもいきなり本番環境などでは作業しないように…。
SVNからGitへの移行作業 標準的なリポジトリ構造なら下記コマンドの実行でスムーズに行きます。 一連の作業はgit svn コマンドで作業していきます。
git svn clone -s --prefix=svn/ svn+ssh://svnserve@hogehoge.com/hoge 標準的な構成 trunk branches/hoge branches/hugahuga2 tags リポジトリが変則的な場合 Subversionのリポジトリ構成が変則的な場合、git svn clone(内部で行っている事)を手動で行うことで対応出来る。
git svn init で初期化.git/config を編集し、リポジトリ構成を明示しておくgit svn fetch で取得git svn init -s --prefix=svn/ svn+ssh://svnserve@hogehoge.com/hoge /* .git/configを編集 */ vim .git/config ------------------------------------------------------ [svn-remote "svn"] url = svn+ssh://svnserve@hogehoge.com/hoge fetch = trunk:refs/remotes/svn/trunk fetch = dev:refs/remotes/svn/dev  //追記部分 branches = branches/*:refs/remotes/svn/* tags = tags/*:refs/remotes/svn/tags/* ------------------------------------------------------ git svn fetch ブラン…

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/…

ディスクサイズを指定したvagrantのboxの作成(CentOS7)

イメージ
概要 hashicorp の packer を使って新規に Vagrant の box を作成その際にディスクサイズを多めに設定する。
packer のインストール mac の場合 homebrew を使ってインストールすれば良い、他の環境は公式のドキュメントを読んで欲しい
インストールbrew install packer バージョン確認packer -v 1.2.2 geerlingguy/centos7 の github リポジトリのクローン 新たにCentOS7のpackerを構築するのは手間なのでminimal-installの公開されてるboxのリポジトリを利用する。
git clone [https://github.com/geerlingguy/packer-centos-7.git](https://github.com/geerlingguy/packer-centos-7.git) vagrant 用 box イメージの作成 centos7.json の編集============================= "builders": [ { "type": "virtualbox-iso", "boot_command": [ "<tab> text ks=[http://{{](http://%7B%7B/) .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>" ], "boot_wait": "10s", "disk_size": 245760, # 編集 この場合240GBのサイズ "guest_os_type": "RedHat_64", "headless": true, "http_directory": "http", "iso_urls"…

DjangoでDateTime フィールド同士をフォーマットを指定して比較する

イメージ
概要 SQLでは、 DATE_FORMAT(entry_time, '%Y%m%d') と書くところを、Djangoのqueryseでも指定したい
where(DATE_FORMAT(entry_time,'%Y%m%d')= DATE_FORMAT(update_time,'%Y%m%d'))Django 1.11Python 3.6.2mysqlclient 1.3.12 コードqueryset.extra(where=["DATE_FORMAT(entry_time, '%%Y%%m%%d') != DATE_FORMAT(update_time, '%%Y%%m%%d')",]) 参考Calling DATE_FORMAT() in MySQL from Django fails
How to add DateTimeField in django without microsecond
Extra method containing %…素の SQL 文の実行
https://qiita.com/karumado/items/5f5ce13851c8c57c95c1 からの転記

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

イメージ
概要 ModelAdmin の save_model 関数オーバーライドすればできます。
データの更新時に日付だけ更新したい場合は、 DateTimeField の auto_now=True でモデル更新時に日付も更新することも可能です。
ただその場合は、objects.filter().update() では更新されない点を注意して下さい。
modelclass 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) adminclass 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 からの転記です。