2018年9月17日月曜日

Terrariaサーバー構築メモ

Serverman で メモリ1GB, HDD50GB でUbuntu 14.04 LTS (64bit) のOSをレンタル
※数ヶ月経ってからうろ覚えでメモを起こしたので細かい動作確認はしていない

# mono をインストール
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:directhex/monoxide
sudo apt-get update
sudo apt-get install mono-complete
mono --version
# Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1)
# Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
#         TLS:           __thread
#         SIGSEGV:       altstack
#         Notifications: epoll
#         Architecture:  amd64
#         Disabled:      none
#         Misc:          softdebug
#         LLVM:          supported, not enabled.
#         GC:            sgen




# terraria というユーザーを作成
adduser terraria

# screen をインストール
apt-get install screen

# screen を起動
screen

# 以下Screen上

# terrariaユーザーに切り替え
su terraria

# tshockディレクトリを作成
cd ~
cd tshock

cd ~/tshock

# tshockをダウンロードして展開
wget https://github.com/Pryaxis/TShock/releases/download/v4.3.25/tshock_4.3.25.zip
unzip tshock_4.3.25.zip

# Terrariaサーバーを起動
mono TerrariaServer.exe

# サーバー起動して、Terrariaのワールド内で以下のコマンドを実行
# / を入力するとコマンド入力画面が表示される

/group addperm guest 権限

[権限の種類]
tshock.world.paint
tshock.npc.hurttown
tshock.tp.rod
tshock.world.movenpc
tshock.npc.startinvasion
tshock.npc.summonboss
tshock.world.toggleparty
tshock.npc.startdd2

2014年12月8日月曜日

【ツールまとめ】Windowsがはかどる 7つのツール

Windowsを便利に使うための7つのツールを紹介します。
あまり知られていないかもというものを選びました。(主観

Clover

エクスプローラーがタブ化されます。
Macでいう TotalFinder みたいなやつです。

Everthing

爆速のファイル検索ツールです。
検索文字を入れる度に絞り込んでくれるぐらい爆速です。
Windows7 のファイル検索も以前と比べて速くなりましたが、まだこれが便利ですね。

自分は Ctrl + 無変換キー のショートカットで新規検索ウィンドウを立ち上がるように設定してます。
Mac でいう Alfred みたいな・・

CLCL

昔からあるクリップボード記録ツールです。

おすすめ設定として、保存する種類はテキストのみ。
保存件数は標準が 30件であるため、100件ほどに増やすと困らないかと思います。

Alt + C のショートカットキーで使うと捗ります。

WinShot

画像キャプチャが簡単にとれるソフトです。
ウィンドウごとや、特定のテキストボックスのみなど、
範囲を勝手に認識してくれて便利です。

実はWindows7から標準でキャプチャソフトが入っています。
こちらも使い勝手はそんなに悪くないので試してみてもいいですね。
 プログラム > アクセサリ > Snipping Tool 

Unlocker

あんろっかー先生です。
ファイルを削除しようとした時にどっかのプロセスがつかんでいて、
ロックがかかっていると、ロック解除するで?って声をかけてくれます。
ファイルが削除できない時に重宝します。

7-Zip

高圧縮な7-zipが扱える圧縮解凍ツールです。
ただ、7-zip だけでなく、zip や rar などひと通り扱え、
右クリックからフォルダを作って解凍や、解凍先を選んだり、
暗号化やパスワード設定などもできるので、これひとつでOKです。

nFinder2

こちらだけ娯楽ですね。
ニコニコ動画を見るツールです。小さいウィンドウで見れるので便利です。
ひと通り機能も揃っており、UIも洗練されていて、かなりよくできているソフトです。


これではかどります!

2014年11月26日水曜日

【Unity】Animator Controller の移動幅設定

【Unity の Animator メモ】

Animator Controller でCharacterのAnimationの遷移が作れる。
Unity の Animation は表示のみの Animation ではなく、実際のオブジェクトの移動も含む。
そのため、おそらく3Dモデルでのアニメーション作成時に実際の移動幅の設定も兼ねる。

では、プログラム側で移動幅をいじれないのか、というと
Animator Controller の Stateの中に speed の値があり、これをいじることで、
2倍や 0.5倍などにできる。ジャンプ力2倍などはこれで実装。

ただ、現状、Animatorのオブジェクトがコードがいじりづらく
下記のように Current のAnimationしか取得できない。



Animator anim = GetComponent<Animator>();

AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0);

if( Animator.StringToHash("Base Layer.Idle") == stateInfo.nameHash) {

  anim.speed = 6;

}




そのため、変更したいAnimationになった場合に設定してあげるような
Speed予約クラスを作ると良さげ。


2014年3月1日土曜日

Unityで外部エディターを使う

UnityでVisual Studio 2012 を使うために試したこと

  1. C:\Program Files (x86)\Unity\Editor のようにUnityのディレクトリを開く
  2. unity-editor.bat のような名前をつけて新規batファイルを作成
  3. 中は     「Start "" %1」とだけ記述
  4. Unityを起動する
  5. Edit -> Preferences... -> External Tools を開く
  6. External Script Editor で Browse を選択し、 unity-editor.bat のファイルを選択する
  7. External Script Editor Args に "$(File)" などの記述があるかもしれないが、削除して空にする
  8. Preferences を閉じる
  9. Assets -> Sync MonoDevelop Project. を選択
  10. 外部エディタが開きました

他のエディタだと少し違うかもしれませんが、
たぶん関連付けされたApplicationが開くと思うので、いけると思います。

落ちないし、すごくいい感じです♪

2013年9月15日日曜日

【ウィルス】Adware.Singalng 駆除


Avastでの名前 : JS:AddLyrics-D [Adw]
Nortonでの名前 : Adware.Singalng
McAfeeでの名前 : TROJ_SPNR.19G113

ウィルスの詳細
https://www.virustotal.com/en/file/ce05b8795b478ba0958b0fa42c7ddbaab0b2e9d85a73d360d61f322fb5142591/analysis/


【駆除方法】

Chromeの拡張機能内で発見されるような表示が出るものの拡張機能を削除しても
直らない。

そこで見たところ、アプリケーションの削除に
Happy Lyrics なるアプリケーションを発見。

それを削除すると直った!

2013年2月20日水曜日

【Android】SDK Managerで更新時に「A folder failed to be moved.」

SDK Manager で Update を行った場合に下記のメッセージが出る時がある。

 A folder failed to be moved. On Windows this typically means that a program is using that folder (for example Windows Explorer or your anti-virus software.) Please momentarily deactivate your anti-virus software or close any running programs that may be accessing the directory '(Android SDKのインストールフォルダ)'. When ready, press YES to try again. 


エミュレータ起動中だったら起きるっぽい。 終了してからアップデートを再実行。

2013年2月15日金曜日

【Windows】Cygwin Terminal(mintty) + zsh で快適Git

今まで putty + cygwin でWindowsでのgit生活をしていたけども、Cygwinのみで結構快適になれることがわかったのでメモ。
  1. Cygwinをインストールする
    • Cygwin
    • git,zsh など必要なパッケージを同時にインストールします。 スクリプトで一気にインストールすることもできて便利!
    • c:\cygwin\setup.exe -q -d -D -L -s http://ftp.jaist.ac.jp/pub/cygwin/ -l "%USERPROFILE%\.cygwin" -R c:\cygwin -P gcc,git,git-completion,git-svn,make,vim,wget,ruby,screen,zsh
      
  2. インストールされると、Cygwin Terminal(mintty) が使用できるようになります。
  3. /home/{ユーザー名}/.minttyrc を修正
    • 色が見えにくいので以下の色設定を追記
    • Black=0,0,0
      Red=255,100,0
      Green=183,234,17
      Yellow=234,206,28
      Blue=107,155,219
      Magenta=237,157,185
      Cyan=0,191,191
      White=255,255,255
      BoldBlack=64,64,64
      BoldRed=255,100,0
      BoldGreen=183,234,17
      BoldYellow=234,206,28
      BoldBlue=107,155,219
      BoldMagenta=237,157,185
      BoldCyan=64,255,255
      BoldWhite=255,255,25
      
  4. vimで矢印キーを押すと変な文字が入ってしまう状態を解消するため、.vimrc に追記
  5. " IME 無効化
    "set imsearch=-1
    if ($OSTYPE!='cygwin') && ($OSTYPE!='msys')
        if has("win32")
            inoremap  :set iminsert=0  " ESCでIMEを確実にOFF
        endif
    endif
    
  6. BackSpaceで文字を消せるように修正
  7. minttyのウィンドウを右クリックし、Option > Keys を選択し、「Backspace sends ^H」にチェックを入れる
  8. ログインシェルを zsh に変更する
  9. /etc/passwd を開き、 /bin/bash となっているところを /bin/zsh に変更する
  10. これで快適Git生活!
参考

2012年2月3日金曜日

【Google Music】Windows・フォルダでのアップロードでなぜか曲がアップデートできない場合の対処

GoogleMusic便利ですね。

ちなみに日本国内からは登録ができないようになっていますので、
なんらかの方法 で登録してください。

登録さえ済ませれば後は普通に使えます。


さて、Windowsの例ですが Google Music Manager でフォルダアップロードした場合に曲がアップロードされない場合があります。

原因は2通り。


1.既にアップロードされたことがある

その場合は、音楽ファイルを更新するか、アップロードした履歴を消すかしないといけません。

履歴を消す場合は、

C:\Documents and Settings\ \Local Settings\Application Data\Google\MusicManager\ServerDatabase.db

のファイルを消してください。次回アップロード時に自動で再生成されます。

2.ファイルの属性の問題

・NTFSで圧縮されている
・読み取り専用
・システムファイル
・隠しファイル

などになっている場合は解除してください。

・読み取り専用
・システムファイル
・隠しファイル
については、

attrib -h -s -r "M:Music\*.*" /S /D
をコマンドプロンプトで実行し、一括解除できます。
M:Music は音楽ファイルがフォルダパスにしてください。


[ 参考にさせて頂きました ]
ここ

2012年1月19日木曜日

【Android】Proguard で『error conversion to Dalvik format failed with error 1』

Android で Proguard を使い、リリース用APK作成時に出たエラー。
error conversion to Dalvik format failed with error 1

これの対処のため、検索していると

・EclipseのClean
・project.propertiesのSDK設定が合ってない
・SDKが2重に読み込まれている
・SDKの読込順序が間違っている
・Proguardのbatの命令を %1 %2 %3 のように変える
・Proguardを更新する(現在 4.7時点)

のように対処方法が書いてあったんですが、
全部試しても無理でした。

そしてもっと調べていたら英語のページに

http://stackoverflow.com/questions/6605971/android-sdk-tools-revision-12-has-problem-with-proguard-error-conversion-to

The only solution i've found to this problem is to change, in proguard.cfg

-optimizationpasses 5

to

-optimizationpasses 2

と書いてありました。
proguard.cfg を直してみるとそれでリリース用APKが作成できました。

調べると、 optimizationpasses は最適化回数らしく、
たぶんですが、proguard をどれぐらいの強さでかけるか、ということだと思います。

5 から 2 に落としたことでうまくAPKはできたのですが、
難読化は弱くなっているのでは、、と思います。

またわかればブログに書きたいと思います。

2011年12月17日土曜日

【Android】ウィジェットを確実に更新させる

Androidのウィジェットの内容を更新する場合、以下のように
updateAppWidgetとすると思います。

    private void updateAppWidget(Context context, RemoteViews remoteViews) {
        ComponentName thisWidget = new ComponentName(context, ClockAppWidgetProvider.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.updateAppWidget(thisWidget, remoteViews);
    }

ただ、複数配置した時など、各ウィジェットへ確実に更新が行われないようです。
特に時計ウィジェットだと顕著です。

その場合、

int[] appWidgetIds = manager.getAppWidgetIds(thisWidget);
for (int i : appWidgetIds) {
    manager.updateAppWidget(i, remoteViews);
}

のように各ウィジェットIDに対して更新するようにすると、確実に更新されるようです。

ただし、重いです。。何が原因で重いのかはまだわからないですが、、、

2011年12月16日金曜日

【Android】ダイアログで画面外を触った場合に閉じる

ダイアログは2種類ある。

通常の Dialog を継承しているもの。
Activityにtheme (@android:style/Theme.Dialog など) を設定してDialog風にしているもの。

指定の方法がそれぞれ違う。



1. 通常の Dialog を継承しているもの。
final AlertDialog dialog = alertinformation.create();
dialog.setCanceledOnTouchOutside(true);

Dialog に対して、setCanceledOnTouchOutside を設定してやるといい。

2. Activityにtheme (@android:style/Theme.Dialog など) を設定してDialog風にしているもの。
    // ウィンドウ外を触った場合、閉じる
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        Rect dialogBounds = new Rect();
        getWindow().getDecorView().getHitRect(dialogBounds);

        if (!dialogBounds.contains((int) ev.getX(), (int) ev.getY())) {
            this.finish();
        }
        return super.dispatchTouchEvent(ev);
    }

イベントで画面外をタッチしている場合に画面を終了する。

2011年12月15日木曜日

【Android】Proguard使用時の注意点

Proguard使用時の注意

元々Android用ではないため、Javaのソースのみを難読化し、
XMLは無視する様子。

そのため、難読化しないクラスを除外設定しないといけない。

proguard.cfg に設定があるので編集する。

1. クラス名の難読化除外。

おすすめ
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.view.View
-keep public class * extends android.support.v4.app.Fragment

この場合、クラス名は何でもよくてandroid.view.View、またはその子を継承しているもの
-keep public class * extends android.view.View

2. メソッド名の難読化除外

xml に android:onClick がある場合、xmlは難読化しないのでjavaのメソッド名も除外に指定する。

-keepclassmembers class * {
public void On*Click(android.view.View);
public void on*Click(android.view.View);
}

そのため、onClickメソッドはやっぱり on*Click という命名規則にした方が良い。

2011年11月4日金曜日

【Android】ProgressBarをコードで作成時にバー状態にする

ProgressBarをコードで作ると style が変更できないように見えます。
どうやら以下の方法で変えれるみたいです。
styleと名のつくものは全てそうかも。ていうかこれはテーマってことかな?

ProgressBar progress = new ProgressBar(this,null,android.R.attr.progressBarStyleHorizontal);

コンストラクタの第3引数で設定したらいいみたい。
android.R.attr.progressBar~ に他のスタイルもあります。

他に xml でProgressBarを定義して Inflate する方法でもいいですね。

2011年8月16日火曜日

【Chrome】Google Chrome拡張の保存先

Windows XPだと

C:\Documents and Settings\[ユーザー名]\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions

というところにある。

まあ、他のOSでも、 background.html とかで検索するときっとどっかに大量のファイルがヒットします。
そこに拡張のソースが見れる形であるので、参考になります。

2011年7月28日木曜日

第3回SHARPハッカソンに行ってきました

7月23日、24日の土日にて 第3回SHARPハッカソンに行ってきました。

私としては初めてのハッカソンだったため、ドキドキしながら行ってきました。
場所は広島の八本松。
名古屋から広島まで新幹線に乗っていき、そこから鈍行に乗り、八本松までという長い道のりでした。


参加者はテレビで見たならぬ、ネットで見たことある!という豪華メンバー多数。
今まで会ってみたいなって思ってた人にも会えました。
こんなすごい人達と一緒に参加できることが大変ありがたかったです!

ハッカソンでは
SHARPさんから2011年夏モデルの最新端末をお借りし、
チームで2日間の期間を使い、アイデア出しからアプリを完成するところまでするというものでした。

自分たちのチームは、   TEAM びすこ。
メンバーは、
デザイナー
 @korowan
 @rie05
開発者
 @itog
 @dd0125 (自分)
という構成でした。

デザイナーさんがいるということは新鮮でした!

アイデアとしては色々候補はあったのですが
せっかくSHARPのイベントなので、SHARP API と使おうということで、

歩数計APIでコインを貯め、開閉通知APIで動かすスロットということで決定。
@rie05 さんの ウキウキノコ というキャラクターを使わせてもらいました。

1日目、1日目の夜、2日目と開発を頑張った結果がこれ。


うちのチームは39分から!



最後に一番面白かったチームはということで投票をするのですが、
な、な、なんと準優勝を頂けました。
頑張ったことは確かですが、皆さんすごかったのでいいのかなーって思いながらでした。
すごく嬉しかったです。





帰りは広島焼きを食べて帰りました。

よし、最後に広島らしいことした!



・今回感じたこと

デザイナーと開発者が混ざると科学反応が起きるということ。

開発者はデザイナーさんが作った綺麗な画像を動かせることに感動。
デザイナーさんは自分が作ったものが動くことに感動。
双方いい影響を与えてる!

またハッカソン参加したいなーって思いました。^^

SHARPのみなさん、ブリリアントサービスのみなさん!
そして参加者のみなさん、メンバーのみなさん、ありがとうございました!


イベントについて更に詳しくはこちらのブリリアントサービスさんのブログで
http://d.hatena.ne.jp/bs-android/20110727

2011年7月21日木曜日

【Android】他パッケージのActivityを呼び出すには

例えば電池使用量の画面を出すには、結論から言うと、
Intent intent = new Intent(Intent.ACTION_MAIN);
        ComponentName compo = new ComponentName("com.android.settings","com.android.settings.fuelgauge.PowerUsageSummary");
        intent.setComponent(compo);
        startActivity(intent);

・ComponentName に パッケージ名とクラス名を設定しています。

他の画面はどうやって出すの?って気になった場合は

なにか画面を起動したときに出る、
LogCatの
07-21 02:47:06.246: INFO/ActivityManager(116): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.contacts/.DialtactsActivity bnds=[5,244][115,362] } from pid 1016
を参照し、 cmp=com.android.contacts/.DialtactsActivity となってるのが、
パッケージ名とクラス名。ちなみにこれは電話アプリ。

この場合は、
ComponentName("com.android.contacts","com.android.contacts.DialtactsActivity");
となる。

これで電話アプリが起動する。

2011年7月19日火曜日

【Android】文字列から id(int型) を取得する

現在のActivityのパッケージリソースから取得する場合は、

R.string.XXXXX というリソースでは、

int resid = getResources().getIdentifier("XXXXX","string",this.getPackageName());

と取得。

R.drawable.YYYY では、

int resid = getResources().getIdentifier("YYYY","drawable",this.getPackageName());

で取れる!

2011年6月29日水曜日

【Android】viewのidからid名を取得する

Context.getResources().getResourceEntryName(view.getId())

コードハイライト使う必要ないねw

2011年6月23日木曜日

【ブログ】ファイルのアップロード

ブログでファイル(ソースコードや実行ファイル)をアップロードしたい時、
どうしようかなと困っていたけども解決策を発見。

DropBoxのPublic機能を使えばいいんだと思った!

全体公開のフォルダを作成し、その中にファイルを置き、
全体公開フォルダの操作から 「共有リンクを入手」

取得した共有リンクをブラウザからアクセスし、
ファイルのリンク先をブログに使用!

ブログを見ているユーザーがリンクをクリックすると
1クッション画面を挟んでくれるし、便利ー。

うちの共有だとこんな感じ


DropBoxだとエクスプローラからファイルいじれたりもするしね^^