記録として残しておきたいブログ

主にプログラミングについて書きます

Mochaでデコンパイルできるファイル

Mochaというデコンパイラを使ってみようとしたのですが、なかなかうまくいきませんでした。

今回の調査結果が本当なのかはわかりませんがメモとして書いておきます。

調査結果

コンパイル時のJavaのバージョンが1.3以下でないとできないと考えられる

Mochaの準備

こちらのサイト(Mocha, the Java Decompiler)でmocha-b1.zipをダウンロードし、パスを通します。

デコンパイル

> java mocha.Decompiler Sample.class

Sample.class をデコンパイルして、Sample.mocha というファイルができてくれると思ったのですが、ダメでした。

どうやら、classファイルを生成するときのJavaコンパイルのバージョンが関係しているようです。

コンパイル時のバージョンが関係していそう

Java1.2 - デコンパイル可能
Java1.3 - デコンパイル可能
Java1.4 - デコンパイル不可
Java1.5 - デコンパイル不可

Java1.3以下でないとできなさそう...


Mochaとか20年前の物だし!!違うの使うことにします!!!!

vim 検索後のハイライトを消す

検索して単語の位置が分かったあと、ハイライトされていて見づらい

そんな時にはハイライトを消したくなる

:noh

これでハイライトは消すことができる


終わり



参考サイト
【vim】検索によるシンタックスハイライトを解除する - 旅するえんじにあ - Engineers to Travel -

Java デコンパイルする(JAD)

classファイルからjavaファイルを生成する(デコンパイルする)

jadっていうデコンパイラを使う

こちらのサイトで実行環境を整える

実際に使ってみる

Jad(Javaの逆コンパイラ)で僕にもソースが見えるの巻 - tanamonの日記

classes配下にある全ての.classファイルを逆コンパイルして、パッケージ階層を維持したままsrc配下に.ファイル拡張子を.javaにして出力する。

> jad -s java -d src -r classes\**\*.class

Java native2ascii -reverse Unicode表記になっている文字を日本語に戻す

以下のようなSample.javaというファイルがあり、Unicodeを日本語にしたい時に使用する

> native2ascii -reverse -encoding UTF-8 Sample.java SampleReverse.java
// Sample.java
public class Sample {
    public static void main(String[] args) {
        System.out.println("\u3053\u3093\u306b\u3061\u306f\uff01");
    }
}
// SampleReverse.java
public class Sample {
    public static void main(String[] args) {
        System.out.println("こんにちは!");
    }
}

カレントディレクトリ以下の全てのファイルに対してnative2ascii -reverse を実行するバッチ

n2aReverse.bat

@echo off
for /r %%f in (*.java) do (
native2ascii -reverse %%f %%f
echo %%f
)


参考サイト
native2asciiの逆変換 - プログラマとプロマネのあいだ
.bat(バッチファイル)のforコマンド解説。 - Qiita

Raspbianにnginxをインストールする(最新版のインストールの仕方がわからない)

環境

Raspberry pi3
OS: Raspbian jessie lite

nginx(エンジンエックス)をインストー

Raspbianだと以下のコマンドでnginxをインストールできるが古いバージョン(バージョン1.6.2)のnginxがインストールされる。(2017/5/20時点での最新バージョンは1.12.0)

nginxをインストー

$ sudo apt-get install nginx
...
$ nginx -v 
nginx version: nginx/1.6.2

nginxのバージョン1.6.2(古いバージョン)がインストールされた

もしかしたら脆弱性とかありそうだし、最新バージョンのnginxをインストールしたい!!!!

結論から申しますと、

最新版をインストールしたかったんですが、できませんでした!!!!

1.6.2でやっていくしかないかな...


以下の2つの方法で試しましたができませんでした

続きを読む

Git Your branch is up-to-date with 'origin/master'.って何

master以外のブランチ(developブランチとか)からmasterブランチにチェックアウトしたときに「Your branch is up-to-date with 'origin/master'.」って表示された

いろいろやってみたけど、最終的にたどり着いた答えが「あなたのorigin/masterは最新ですよ!」ってことなのかな?

「前回リポートリポジトリと同期したときより進んでたから更新しといたよ」って感じ

Gitが教えてくれてるだけだから気にしなくていい表示らしい

以下、いろいろやってみたこと

~~~~~~~~~~~~~~~~~

一応、masterブランチにはチェックアウトできてるんだけど気になる...

$ git branch
* develop
  master
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git branch
  develop
* master

masterよりもdevelopのほうが先に進んでるから「Your branch is up-to-date with 'origin/master'.」って表示が出るのかも?(とか仮説を立ててみたりした)

masterブランチにdevelopブランチの変更をプルリクエストしてみる

リモートのmasterブランチに変更を反映するにはプルリクエストをするらしい?(新たな発見)

GitHub上からプルリクエストを送ることでマージできるようになる!!(とか思ったりした)
「developブランチの変更をmasterブランチに反映してください」っていうリクエストを送る


プルリクエストの仕方は以下のサイトを参考にいたしました
qiita.com

リモートリポジトリに反映した変更をリモートリポジトリにも反映させる(pull)

プルリクエストでの変更をmasterにマージした後に、

pullコマンドを使ってローカルリポジトリにも変更を反映する。

$ git pull origin master
...

でも、やっぱり「Your branch is up-to-date with 'origin/master'.」は消えなかった!!


~~~~~~~~~~~~~~~~~


今回、いろいろやってみて、

リモートリポジトリのmasterブランチに変更を反映させるにはプルリクエストを送る
リモートリポジトリに反映させた変更をローカルリポジトリに反映させるにはプルを使う

ということが学べたので良かったです。