あぷりけーしょんの内部的なもの

ProgramGit

自分がGitを使い始めたときのGithubでは無料で作れるリポジトリは公開されるPublicのみでした。
Gitの使用用途としてはお仕事用のソース管理なのでプライベートのリポジトリが無料で作れるBitbucketでリモートリポジトリを使ってきた経緯があります。

しばらく前からGithubでも無料でプライベートリポジトリを作れるようになり、サービスとしてBitbucketよりはGithubのほうが便利です。
併用していましたが、管理を一元化するため、Bitbucketで作ったリモートリポジトリをGithubへ移行する手順メモです。

コマンドライン版

コマンドラインで行う手法は数多く公開されています。

[ Gitリポジトリの中身を、ブランチとタグも含めて別リポジトリにコピーする ] (Qiita)

が簡潔にまとめられていてわかりやすいです。

Fork版

普段GitクライアントのForkを利用しているため、コマンドでgitコマンドを使うと認証を求められてツライ…のでFork内で完結させます。

1.Githubで空のリポジトリを作る。

元がプライベートなので Private で作ることを忘れずに、README.meは作らないように。
表示されるリモートURLをコピーしておきます。 ( https://github.com/xxx/yyy.git )

2.originを編集する

前提条件でローカルリポジトリは最新状態になっていることがあります。

左のメニューから Remotes > origin を右クリックして、「Edit origin」を選びます。

このときはまだ origin のアイコンがBitbucketのままですね。
Edit origin を選ぶと変更画面がでます。

Repository Url の欄に1でコピーしたGithubのリモートURLを貼り付けて、「Edit」をクリック。

すると、origin のアイコンがGithubのものに変更になります。

あとは Push をしてGithubへローカルリポジトリの内容を反映させます。

1.でのGithubのページを再読み込みして、内容が反映されていればOKです。

ProgramPython,Youtube

最近仕事でPythonを扱うことがあって、今までPythonは名前はきいてたけど、中身には全く触れてきてなかったので勉強中。

いろいろ見ていくうちに、Youtube で動画を公開している「Python Vtuber サプー」さんの動画が一つ一つ細かくまとまっていてわかりやすかった。

Apple / Mac / iOS,ProgramPython,zsh

まだサンプルプログラムをぽちぽちいじっている程度の初心者の初の字くらいですが、Python をちょこっと使ってます。

Python の環境は Homebrew で pyenv をインストールし pyenv を使って新しいバージョンの Python をインストールしていました。

[ 【2020.8最新】Pythonのインストール法 – Qiita]

が、ふと思って Pythonのバージョンを確認してみるといつの間にか、システム初期バージョンの 2.7.16 に戻ってました。

原因は何かなーと調べてたら、これまた Qiita でまとめらてた記事を発見。

[ pyenvを使ってpythonのバージョンが変更できない時の原因 – Qiita ]

原因としては Python のコマンドパスが変更になっていないことでした。

$ eval "$(pyenv init -)"

でも、.zshrc には記載してるんだけどなー。

$ cat .zshrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

シェルを再起動すると元に戻ってしまう。

$ eval "$(pyenv init -)"
$ python --version      
Python 3.8.5
$ exec $SHELL -l        
$ python --version
Python 2.7.16

またあれこれ調べてたら、これまた Qiita で Python 環境を作成している記事が参考になりました。

[ MacOS CatalinaにPythonとPython向けライブラリをインストールする – Qiita ]

pyenv自体はこれで動作しますが、ターミナルにpyenvの設定を追加しないとpyenv経由でインストールしたPythonが認識されないので、下記のコマンドでターミナルに設定を追加、追加した設定をターミナルに認識させます。

$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc
$ source .zshrc

もちろんvimで直接プロファイル等に書き込んでも問題ありません。

if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

んー、pyenv の何をもとに条件分岐をしてるのかさっぱりわからないが、とりあえず上記分岐文 .zshrc に追記することでPythonは pyenv で global 指定したバージョンを使うようになりました。

ProgramExcel,Google スプレッドシート

Excelやスプレッドシートで特定の値をキーにしてデータを抽出する方法として vlookup 関数が有名ですが、vlookup関数の一番の弱点は
「検索キーのリストが一番左側にないとダメ」
ってところです。

vlookup / hlookup 関数の後継関数として xlookup 関数が発表されていますが、現状使える環境はごく一部のテストユーザー向けです。

Microsoft、新しいExcel関数「XLOOKUP」を発表 ~「VLOOKUP」や「HLOOKUP」の後継 – 窓の杜

既存関数の index 関数 と match 関数 でvlookup 関数の弱点を克服した使い方ができますので、覚えておいて損はないと思います。

index / match 関数によるデータ抽出

結論から先に 使い方は

=index("[抽出したいデータの範囲]", match("[検索キー]", "[キーを検索する範囲]", 0))

です。

それぞれの関数の詳細な説明は省きますが、match関数で、検索キーがある行番号を取得して、index関数で取得した行番号に対応するデータを返すといった動きになります。

vloock関数のように、検索キーの場所を選ばないし、取得する列の順番を数える必要もありません。

抽出したいデータ範囲とキーを検索する範囲をそれぞれ名前を付けて、それ上部の式に当てはめればサクっとデータ抽出ができると思います。

Program,WordpressPHP,WP-カスタマイズ

PHP7.2にして、Wordpressを動かして見ると、

count(): Parameter must be an array or an object that implements Countable in …(ファイルパス)/wp-includes/post-template.php on line 284

なワーニングメッセージが。

調べてみるとPHP7.2 になって count関数 が変わった模様。
PHP 公式マニュアル

バージョン 説明
7.2.0 count() will now yield a warning on invalid countable types passed to the array_or_countable parameter.

引数が配列かカウントできるオブジェクトじゃないとワーニングを出しますよー。
ってことになったらしい。

で、件の post-template.php では

if ( $page > count( $pages ) ) // if the requested page doesn't exist
	$page = count( $pages ); // give them the highest numbered page that DOES exist

と $pages がどんなオブジェクトがわからないまま、count関数の引数に使われているのでワーニングが出た模様。

$pages が空(NULL)の場合にワーニングが出るので、count関数を使う前に$pagesが空かどうかのチェックを入れればOK。
空の場合は0を入れてあげます。

if ( ! empty( $pages )) {
    if ( $page > count( $pages ) ) // if the requested page doesn't exist
    	$page = count( $pages ); // give them the highest numbered page that DOES exist
} else {
    $page = 0;
}

コンピュータプログラムの世界では 空(NULL) = 0 かどうかか環境依存だったりするので、ややこしいですね。



ひとまず該当箇所を修正して、ファイルを上書きすればワーニングは出なくなります。