粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

Git Desktopでpushが出来ない(大きいファイルをpushしてしまった時)

いつもgitを間違えてギットと読んで後輩に指摘されるマンです。

gitあんまり馴染みがなかったのでDesktopアプリを主に使うマンなんですが突然Git Desktopでpush(sync)出来ない事態に襲われました。
メモしながらやったので結果だけ知りたい方は(危険です)解決編をご覧あれ。

最初の原因:重いファイルをcommit,pushした。

shellで

git push

と打つと,「 this exceeds GitHub's file size limit of 100.00 MB 」と出ます。
Gitでは100MB以上のファイルpushできないようです。

gitignoreの変更と反映

gitで不要なファイルを無視する設定を保存するために.gitignoreというファイルがあります。
これに先程の.matファイルを登録したのですがそれでもダメでした。

git rm --cached .
git add .gitignore
git commit -m "add file to .gitignore"
git push origin master

一行目で全てキャッシュを消して,その後にgitignoreを変更,変更をcommitしてpushするという流れのようです。

これでも上手く行きませんでした!

大きいファイルをpushしてしまったときの対処法

先程の変更でもダメです。
何故なら大きいファイルを追加・変更したという情報がgitに残っているのでこいつはいつまでも追加対象から外れてくれないのです。

公式でもこの問題について言及してくれています。
Removing files from a repository's history - User Documentation
結論これではダメでした。


また,以下のブログが非常に参考になりました。
www.walbrix.com
過去の履歴全てから削除するとのこと。
以下のブログでも同様のことを言っています。
Gitリポジトリから容量の大きいファイルを履歴から抹消する | eureka tech blog

$ git filter-branch --force --index-filter  'git rm --cached --ignore-unmatch でかいファイル' --prune-empty --tag-name-filter cat -- --all
$ git commit --amend -CHEAD

これででかいファイルの情報を過去に渡って潰すわけです。

しかし,その後のコミットであえなく爆死。
そして出て来るWarning。

WARNING: Ref 'refs/heads/master' is unchanged
WARNING: Ref 'refs/remotes/origin/master' is unchanged

いろいろ調べましたがこの方向性は結局あきらめました。

git rebaseで過去を改変?

rebaseで過去の関連コミットを全てまとめてしまえばいけるのではと思い立って行動。

git rebase -i HEAD~k

で直近からk番目のcommitをまとめることが出来ます。

これで過去のクソコミットをまとめてしまおうという算段。

すると…以下のエラーが

You must edit all merge conflicts and then
mark them as resolved using git add

調べると手動でconflictをなんとかしろとのこと。憤死。

原因

この前の段階でWeb側で.gitignoreを変更したのが大きな原因らしいです。
無知で動くの本当に良くないですね。

解決編

本当は該当ファイルを撤去して,logを全て飛ばすので十分なんでしょうが,今回はいろいろと込み入ったため,
commitを強制的にふっ飛ばして解決するという手法をとりました。

git rebase -i 十分な分のcommitを遡る

そして,文頭に出てくる幾つかのcommitを削除消します。
これがスムーズに行けば一連の問題はおそらく解決です。

そして強制的にpushするために

git push -f

をします。これも禁じ手の1つで複数人で管理士ているファイルでやっては絶対にいけません。

なお,rebaseでなんか言われたときには

git rebase --skip

でぶっ飛ばしちゃいましょう。


なお,これは本当に最終手段に近いと思ってください。
考えるんだ…まだ手はあるはずだ…

あとバックアップは忘れずに。

総評・感想

とりあえず,
shellときちんと向き合うこと。
Web上のgitを安易に編集しないこと,
事前にきちんとgitignoreを管理すること,
そしてgit外でもデータをバックアップしておくことが肝要です。

まじで!!!

WindowsコマンドラインからPDFをCrop

この手の記事は何度か書きましたが,
コマンドラインからCropするメモを残します。
(大体同じことを3回調べたらもう記事化するつもりでいます。)

大前提:PDFの余白について

matlabやPPTでpdfを作ったり,

texに付属するps2pdf.batを使って

ps2eps.bat hoge.eps hoge.pdf

でepsをpdfにしたりできます。

同様にepstopdf.plを動かすのも良いでしょう。(こちらはバージョンが1.5になる都合で時々困るんですが)

こいつらはとんでもない余白を持っているので,いつだかの記事で余白を切り取る手法を紹介しました。

ossyaritoori.hatenablog.com

bcpdfcrop

有名なpdfcropにpdfcfop.plがあります。
これはperlを入れていることが前提ですが,まとめて処理できてとても良いです。

Perl入れたくない!という方には以下のbcpdfcropやtcpdfcropのbatファイルが用意されています。
GitHub - aminophen/bcpdfcrop: Windows batch file for pdfcrop

githubからbatファイルをpathの通った所において,
とすることでcropしたPDFを作成可能です。

bcpdfcrop.bat hoge.pdf

batファイルの変更

但し,デフォルトではファイル名のうしろに-cropとつくので名前を指定するか
bcpdfcrop.batやbcpdfcrop_multi.batを開いて「-crop」を全て「_c」とかに変更します。(ハイフンをファイル名に使いたくない)

まとめて実行

まとめて実行するには,cropしたいフォルダに移動して

bcpdfcrop.bat *.pdf

とすれば全てのpdfをcropしてくれます。
できれば名前を変えずそのまま更新するには…どうすれば?

名前を変えずに全てのPDFをCropするbatを作成

bcpdfcrop.batに基づいてPDFをそのままの名前で再cropするbatを作成しました。
名前は「bcpdfcrop_all.bat」とします。

@echo off

for "usebackq delims==" %%i IN (`dir/*.pdf`) 
do bcpdfcrop.bat %%i %%i

あれ~なんかおかしい…
あとで考えよう…

ショートアニメレビュー

ショートアニメ:一回の放送時間が通常のアニメ(24分)に比べて短いもの。

総じて名作や迷作が多く生まれるがすぐ忘れてしまうため、
なんか見たらメモっておくようにしよう。
ネットで他の人の感想見て喜んじゃうタイプの人間なので。

TO BE HERO

TO BE HERO | TVアニメ『トゥ・ビー・ヒーロー (TO BE HERO)』アニメ公式サイトがオープン!!10月5日(水)18時30分よりTOKYO MXにて放送予定!

日中合同で作られた10分程度のショートアニメ。
作風はギャグ調。全体的に早口かつ下ネタが強く、
アザゼルさん程度の耐性は必要だと思われる。




だが、どうか、最後まで見て欲しい。
やや退屈と思わせる序盤から終盤きちんと纏めきったストーリー構成は評価に値する。
(単純に筆者が好きなパターンなだけなのだが)




作画や一部声優の演技など未熟な点は多いが、
筆者は心温まったので満足。




あと銀魂の杉田さんや海馬社長の津田さんをはじめ地味に声優陣が豪華。
下ネタは銀魂にも負けずにお下劣だけど、、、(しかし一部伏線だったりもする)




EDは中国語なので正直解説が必要だろう。サーキュレーションとかの脳がとろける系。
公式で可愛い女の子がダンスをしている。うん、かわいい。

m.youtube.com


ネット上であまりに感想がなくて寂しかったので誰か見たらコメントしてくれ。

お手軽関数フィッティングチャレンジ

過去記事でフィッティングチャレンジしたんですけど,
今一度復習してみようという内容です。

過去記事との変更点

ossyaritoori.hatenablog.com
ossyaritoori.hatenablog.com

  • Levenberg-Marquardt法を用いた二変数関数,6変数のフィッティング。
  • jacob関数を用いてヤコビ行列計算を簡略化。
  • 関数の値を計算し,ノイズを載せることで観測データをシミュレートした。
  • ezsurfを用いた図示(fsurf)の方が良いらしい。

プログラム

解説(略)


結果

付与したガウスノイズの標準偏差が1のとき。
f:id:ossyaritoori:20170408005014p:plain

付与したガウスノイズの標準偏差が5のとき。
f:id:ossyaritoori:20170408005108p:plain

初期条件が良かったのもあるが高々~5%くらいの誤差なら十分フィッテイング出来そう。

画像処理のテスト用のデータベース

趣味で画像処理を行う人から研究で行う人に至るまで
テストあるいは評価を行う為の画像・動画群のデータベースが必要であることが多々あるかと思います。

幾つかのデータベースをメモしておきます。(使用する際は引用を忘れずに)

ImageProcessingPlace : 各データベースへのリンクまとめ

Image Databases
f:id:ossyaritoori:20170406153556p:plain:w450


様々なデータベースへのリンクがリストアップされているとても頼もしいサイトです。
でもこの中から自分の欲しいデータを探すのはまた一苦労な為,この中からどれを選ぶかも含めて今度メモしようと思います。

とりま,気がついたら更新していく所存であります。

Lena等の有名な画像群のデータベース

"Standard" test images (a set of images found frequently in the literature: Lena, peppers, cameraman, lake, etc., all in uncompressed tif format and of the same 512 x 512 size).
となっている所から以下のような有名な画像群がダウンロード出来ます。
f:id:ossyaritoori:20170406153804p:plain:w400

更新待ち

USEGS : 航空写真,衛星写真のデータベース

Aerial Photography | Earth Resources Observation and Science (EROS) Center
f:id:ossyaritoori:20170406154435p:plain:w500

航空写真用のデータベースが主に公開されています。他にも幾つかデータがありますが,精査はまだしていません。

ある地域の画像セットをダウンロードする他,地図上の任意の点から画像を切り取って保存することも可能です。

医療用画像セット

個人的に用は無いですが医療用画像のセットも発見しました。
Image Databases

なんとなく怖いので中はみてない。

学内WifiにiOS9から接続できない問題

Abstract

所属する研究棟のルータが死んでいるだけのようです。

序論

UpdateしたiOSから学内wifiに接続出来ない現象が起きています。
具体的に言うとUTokyoWifiやeduroamですね。


どうやら私だけではないようで
eduroamのサイトで関係ありそうな記述が。
eduroamの認証が失敗する事例について - eduroam JP

「FreeRADIUS 3.0.5-3.0.7はTLS機能に不具合があり、 3.0.8以降へのアップデート(または一時的回避策としてTLS 1.2の無効化) が必要です。」



は?
f:id:ossyaritoori:20170403233149p:plain:w450


どうやら以下の記述にあるように認証に用いる際の証明書の形式が変更になったとかで正しく認証してくれないようです。
support.apple.com
WPA2EnterprizeにおいてiOSが違う形式を使っていたことを初めて知りました。


以下のサイトにアクセスしてEAP形式に対応できるようにしろとのこと。
https://cat.eduroam.org/
(Eduroamのサポートページ)


検証

取り敢えず、別キャンパスでの双方の接続ができることを確認。
これは完全にルータ側の問題であると思われます。

結論

早くなおして

Anacondaがプログラムの実行を阻害した話?

連投すみません.

SSDに換装したPCでもう一度OpenCVを入れなおしてプログラムを走らせたところ
よくわからないエラーに悩まされました.
参考にした記事はこれ.
ossyaritoori.hatenablog.com

それでエラー文で探したところ,環境変数からanacondaのpathを消せとのこと.
/home/User/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./aseprite) · Issue #1281 · aseprite/aseprite · GitHub
消したらうまく行きました.
anacondaでいろいろ導入しようと思った場合どうするんだろう?


ますますわからなくなったのでした.
自力で入れたpythonに対してあとからanacondaを導入するのはありかナシか.
誰かおしえてください.