githubのpushで、remote:Permission to xxxx denied to xxxxが発生するときの対応方法

対応方法

github.comに複数のユーザーを持っていて、Windows環境でユーザーをを切り替えたときに発生したら、[コントロール パネル]->[ユーザーアカウント]->[資格情報マネージャー]のWindows 資格情報の一覧から、github.comを探して一度全部削除してみるとよいです。

 

私の症状

github.comに複数のアカウントを持っていて、新しいアカウントでpush仕様としたときに以下が発生しました。globalに設定した、user.nameやuser.emailが悪さをしているのかと思い削除したりしました。またgitのglobalの設定は以下になっているので、–unsetコマンドで、credential.helperの設定を削除しましたがうまくいきませんでした。

credential.helperを削除したらパスワード入力画面がでてくるのかと思ったのですがそれも表示されなかったので、厄介な問題でした。

参考資料

http://stackoverflow.com/questions/15381198/remove-credentials-from-git

http://qiita.com/uasi/items/a340bb487ec07caac799

Twitterで特定ユーザーの画像と動画を抽出するコード

動画と画像を取得して、それを<img>と<video>タグで囲って、HTMLを出力するソースコードです。直接ダウンロードするコードでもよいですが、ひとまず動いたのでこれで十分。これをJava8で書き直そう。。。

 

マインクラフトのMCPI関係を調べる

Minecraft Raspberry Pi Edition

Raspberry Piには、無料のマインクラフトのRespberry Pi Editionがプリインストールされていてすぐに遊ぶことができます。また、Pythonから操作もできます。

https://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/worksheet/

http://www.stuffaboutcode.com/p/minecraft-api-reference.html

Raspberry Juice Mod

https://github.com/zhuowei/RaspberryJuice

PC版のマインクラフトで、Respberry Pi版と同じようにするには、サーバー(Bukkit)を立てる必要がありました。

Raspberry Jam Mod

サーバー構築などをせず、通常のマインクラフトで、WindowsやMacからPythonで操作できるようにしたのが、Raspberry Jam Modです。これは通常のModと同じでJarファイルを配置して、あとはPythonスクリプトでクライアントライブラリーが用意されているので、これを使ってコーディングするだけです。

mcpi

Pythonはスクリプト言語なので、Raspberry Jam Modについているクライアントライブラリーを見ると、mcpiディレクトリーにモジュール一式があり、ソースコードを含めていろいろなことが分かります。

ここのテキストファイルなどを見るとmcpi_protocolの存在が分かります。何かPythonに依存している実装ではなく、FTPやHTTPのように簡単なプロトコルが用意されていて、それでソケット通信を行っています。

使いたいプログラミング言語でこのライブラリーを実装すれば、マインクラフトと通信できます。

Raspberry Piの場合は、Java用ライブラリーもバンドルされているようです。

http://www.stuffaboutcode.com/2013/01/raspberry-pi-minecraft-api-basics.html

Github

Githubを見ると関係がありそうなレポジトリーがいくつか見つかったので、ここに情報を残しておきます。

https://github.com/brooksc/mcpipy

https://github.com/salimfadhley/dojo-minecraft/tree/master/mcpi/api/java

https://github.com/kbsriram/mcpiapi – マインクラフト1.7.10向けのRaspberry Jam Modと同様のライブラリーです。

https://github.com/bleroy/minecraft.client – Raspberry Jm ModのC#クライアントライブラリー

 

 

 

マインクラフトのDラッチの回路図を書く

マインクラフトは、リピーターをロックさせる仕組みで簡単にDフリップフロップ回路が作成できますが、今回はより理解を深めるため、マインクラフトの回路図から、実世界のDラッチの回路図を書いて確認します。

マインクラフトの回路の信号方向 でも書きましたが、以下のようなマインクラフトの回路図は、レッドストーントーチにより信号の方向性が生まれるので注意する必要があります。

上部がDラッチ

https://www26.atwiki.jp/minecraft/pages/26.html 引用

 

 

真理値表

C D Q ~Q
 0  0  0
 0  1  1
 1  0  保持
 1  1  保持

www.falstad.comで書いたDラッチの回路図

http://tinyurl.com/j46pcvm

Logisimで書いたDラッチの回路図

まとめ

真理値表通りに動くのでたぶんこの回路図であっていると思います。マインクラフトの回路図から、実世界で使われる回路図にしてみました。ポイントとしては、レッドストーントーチが指向性を持つので、その先のワイヤーが交差する箇所で、単純に分配しているのか、OR回路になって1つのワイヤーになるのかをしっかり確認することです。

 

 


マインクラフトの回路の信号方向

マインクラフトではレッドストーントーチとブロックを組み合わせてNOT回路が作成できます。またこのような回路の場合、信号の流れが特定方向に固定されます。

https://www26.atwiki.jp/minecraft/pages/1037.html

Aから~Q側へ信号が流れそうですが、黄色いブロックについているレッドストーントーチがあるため、Aから~Q側には流れません。回路図で書くと以下になります。

真理値表

A B Q ~Q
 0  0  1  0
 0  1  0  1
 1  0  1  0
 1  1  1  1

 

Dフリップフロップ回路を作成するときに、このような構造が出てきます。

 


マインクラフトでDラッチ

Dフリップフロップ回路はデータを保存できるので、複数並べるとレジスターになります。最新のマインクラフトではレッドストーン回路のリピーターで信号を止めることができるため、これで先ずはDラッチ回路を作ってみます。

 

2bitのレジスター

参考資料

https://www26.atwiki.jp/minecraft/pages/26.html#id_c8183ecb

 

Dラッチ回路

画像のようにリピーターを交差するような感じで配置します。

リピーターをこのように並べると、以下Gif画像のように信号が伝わらないように遮断棒がでてきます。

右上のリピーターに、棒が表示される

左側のリピーターのように棒が横たわると、リピーター上を信号が伝わらなくなります。

遮断棒が下りているので、スイッチを押しても信号が伝わらない。

もう一度、リピーターを見てみましょう。リピーターは、レッドストーントーチで出来ています。遮断機が下りて、左のスイッチからの信号が伝わらなくなります。ですが、リピーターのレッドストーントーチは、以前の状態を保持しているので、出力も以前の状態になります。現在のスイッチの変更は関係なくなります。これは遮断機が下りた時の状態を保持している事になります。

つまり、これを並べるとメモリーやレジスターになります。

リピーター上のレッドストーントーチが遮断機が下りても、前の状態を保持

黄色いブロックにレッドストーントーチを横につけてNOT回路を作っていますが、これは、クロックを表す側のリピーターがONになったときに、(=Highになったとき)に、状態を保持するためです。これをハイレベルエッジと言います。

マインクラフトではまだわかりませんが、現実世界のハードウェアでは、このレベルエッジを適宜切り替えて使っているそうです。

 

まとめ

マインクラフトでDラッチ回路を作成しました。次回はDフリップフロップ回路を作って、クロック入力の立ち上がり時のみ入力状態が反映され、それ以外では保持されるようにしてみます。

 

Falstad’s Curcit Simulatorでデジタル回路の書き方(注意点)

この記事では、Falstad’s Curcuit Simulator Appletでデジタル回路を書く方法と注意点を簡単に説明します。アナログ回路が豊富にありますが、デジタル回路の順序回路の勉強のために使うため、そこだけに特化して説明します。またワイヤーの配線時に注意が必要なのでそこも詳しく説明します。

私の現状

Logisimでデジタル回路を学び、最近はマインクラフトで回路を実装してみようといろいろ調べています。Logismは教育用の無料のシミュレータで、レジスターやRAM、ROM、FlipFlop回路などはあらかじめICのような部品として用意されています。これをAND、ORなどの論理回路を使って書きたいですが、Logisimでは、順序回路のようなフィードバックがある回路は信号をシミュレートしていないので正常に動作しません。

マインクラフトでCPUを作ろうとすると、保存する仕組みをマインクラフトで実装する必要があります。ですが、マインクラフトのレッドストーン回路はいろいろ癖があるので、まずはFalstad’s Curcuit Simulator Appletで回路図を書くことにしました。

Falstad’s Curcuit Simulator Appletの基本操作

falstad’s Curcuit Simulatorは、信号のシミュレートもしているので、コンデンサーや抵抗を使うような回路は、電気の流れも確認できます。

視覚的に分かりやすい!

操作は、初心者向きではありません。何らかのシミュレーターなどを使った人向けで、右クリックのコンテキストメニューから各部品を選択するか、キーボードのショートカットで部品を選択します。

削除

Ctrl+Aで全選択して、DELETEキー

または、メニュー[Circuits]->[Blank Circuit]

選択モード

スペースキーで選択モードになります。またはShiftキーで範囲選択でも選択モードになります。スペースキーを押して現在選択モードであるかは、右クリックのコンテキストメニューから確認できます。またアイコンが十字マーク出ない場合は、選択モードです。

ワイヤーが斜めになっていたり、移動したり、引き延ばしたりするときは、選択モードで行うので、スペースキーを使う事をお勧めします。

シフトキーを押しながら範囲選択しているところ

デジタル回路の選択方法

メニューの[Draw]または右クリックで、コンテキストメニューが表示されるので、ここからワイヤーやデジタル回路を選択します。

右クリックして、[Logic Gates, Input and Output]を開いたところ
デジタル回路(論理回路)を書く場合は、コンテキストメニューの[Add Wire]、[Logic Gates, Input And Output]、[Digital Chips]になります。上から5場面目に[Outputs and Labels]があるので、ここからLEDやラベルなども選択できます。

Logisimと同様に順序回路などもICとして用意されている

部品の配置方法

部品の配置方法が独特でコンテキストメニューで選択して、クリックしながら、つまりドラッグで配置します。一般的なソフトウェアは、アイテムを選択してマウスを移動すると、そのアイコンが透過で表示されたりして分かりやすくクリックで配置するものも多いので、これが分かっていないと部品を配置できずに戸惑います。

配線の調整

ワイヤーを選択して、点から点を繋げると接続できます。また選択モードにしてワイヤーを選択すれば移動や長さの調整ができます。

配線の注意!!!

配線は点と点を繋げると接続します。点と線では接続されません。

この回路シミュレータは、点から線に接続すると、赤い点が表示されて接続しません。点から線にワイヤーを引くと、交差する部分が点になるので接続しているように見えますが接続していません。

非常に直感的ではなく、かつエラーが分かりづらいです。ワイヤーを移動したり長さを調節して、必ず点と点で接続してください。

以下画像は、接続していない例です。新しいワイヤーの点を、線に向かって繋げているので、赤点がひょうじされて接続されていません。

交差して赤い点が表示されるが接続されていない!!!

次の画像は、新しいワイヤーの点を、別のワイヤーの点にむかって繋げているので、白点が表示されて接続されています。

ワイヤーは点と点で接続!!!

SRラッチの例

以下画面の上部のSRラッチは、ワイヤーの点と線で繋げようとしているため、赤点が表示されて接続されていません。一方、下のSRラッチは、ワイヤーの長さを調節して、点と点で繋げているため、白点で表示されて接続されています。

ワイヤーを選択して、回路図のワイヤーなどの上でマウスボタンを押し続けると以下のように部品とワイヤーの接続点が確認できます。また赤点が出た場合は、右下のメッセージで、[2 bad connections]のように表示されていますが、これも非常に分かりづらいです。

 

まとめ

Falstad’s Curcit Simulatorで論理回路を作るときの操作方法を説明しました。非常に独特な操作方法ですが、わかってしまえば手軽に試せます。Logisimは使いやすいですが、順序回路をうまく扱えないので、このFalstad’s Curcit Simulatorを併用するとよさそうです。

 

マインクラフトのレッドストーン回路でマルチプレクサー

今回は、マインクラフトで組み合わせ回路のマルチプレクサーを作りました。2bitの信号を切り替えるだけですが、マインクラフトでは単純に回路図をレッドストーン回路で実現すると、1つ1つのブロックが多いため最適化する必要があるのが分かりました。

logisimで作ったマルチプレクサーの回路図
マインクラフトでマルチプレクサーを実装

画面キャプチャーのように、2ビットの切り替えだけでも何も考えずにブロックを配置するとこの大きさです。マインクラフトは、レッドストーンは15個分の信号しか伝わらないため、大きくすればするほどリピーターで調整する必要があります。

16ビットのマルチプレクサーを作るとなると、ブロックの並べ方をしっかり学ばないといけないようです。

 

マインクラフトのレッドストーンでXOR回路

マインクラフトのレッドーストーンで排他的論理和のXOR回路を作成しました。

 

http://minecraft.gamepedia.com/File:StandardLogicGates.png

 

今回作成した排他的論理和XOR回路

マインクラフトでは、レッドストーンとブロックを繋げてさらにレッドストーントーチを置くことでNOT回路になります。そして高低差をうまく使うことで小さなサイズで、XOR回路を作る事が可能です。

一度Logisimで、回路図を書いてみました。レッドストーン回路はどこが接続されているのかわかりづらいですが、以下のような回路図にしてしまうと分かりやすいです。また、XOR回路の出力にNOT回路を付けるとXNOR回路になります。

 


マインクラフトのBlockクラスのgetItemDroppedのテスト方法

マインクラフト1.11.2のModding(モド開発)のチュートリアルをやっていて問題なく実装はできたけどテストする方法が分からない場面に出くわしました。

テストが難しいケース

ワールド作成時にクリエイティブモードにすると、ブロックなどはドロップせずに消滅してしまいます。そのためこのモードでは、ブロックのドロップなどのテストができません。その場合サバイバルモードにすればよいのですが、ブロック強度がダイアモンドと同等にした場合、ダイアモンドのツルハシ(Pickaxe)がないため、ゲームで入手しなければなりません。また、サバイバルモードの場合、自作ブロックがないため見つける方法がありません。

解決方法

このような場合は、サバイバルモードで、チートコマンドを使ってツルハシとブロックを入手するのが良いです。

ダイアモンドのツルハシの入手方法

チート可能にしておいて、/を入力するとチャット欄が表示されるので、以下を入力します。diamond_ぐらいまで入力してタブキーを押すと補完候補が出てきます。

http://gamehackerblast.com/post-16636/

 

自作ブロック生成方法

まずは、F3キーでデバッグ情報を表示して、XYZまたはBlockで座標を確認します。次に、/setblockコマンドでブロック出現先を指定し、以下のようにminecraft:で既存のブロックを指定するか、modidを入力してタブキーで補完するかでブロックが指定できます。

以下は、tutというmodidで、tut_blockという自作ブロックのコマンド例です。

これで、作成したブロックを出現させることができます。あとは、getItemDroppedのコード内にブレイクポイントを立てて実行すあれば補足できます。

自作ブロックを/setblockコマンドで出現させたところ

以下は、ダイアのつるはしで殴って、ブロックをアイテムに変えたところです。この時に、Block#getItemDroppedが呼び出され、ブロックがソースコードで指定したアイテムに変わります。

 

ソースコード

ソースコード自体は、難しいことはしていません。