AppleWatch のベルト問題

以前に AppleWatch のレビュー記事を書いたのだが、そこで「ベルトがなかなか決まらない」みたいなことを書いた。

暫定的に無難な黒革のベルトにしたのだが、冬期にゴツいアウターなんぞ着ると微妙に合わない。

結局、金属のベルトも新調した。

ヘビーデューティな感じの格好だとこちらの方がええかな。

ところで、金属ベルトだと長さの調節(コマの調節)に一手間かかるが、最近は YouTube あたりに実演動画が上がっている。

上の動画だとダイソーの専用グッズ使っているが、先端の尖った錐やアイスピックあたりでも代用可能です。

高級時計でこれをやるにはそれなりの覚悟が必要でしょうが、AppleWatch 用の金属ベルトは量販店で 3-4000 円くらいで購入できるので自分でやった方がいいでしょう。

なお、私はベルト付属の工具も試しましたが(やっすい作りなんだな、これが)、ピンを押し込むところが壊れてこの方法では失敗しました。
あれで成功できる人なんているんでしょうか(笑)。

 

air-h-128k-il

Mac で tomcat

あまり実用性は高いとはいえないと思うのだが、mac で軽くサーバーサイド Java をやりたい場合、tomcat 環境があると便利だ。
「もう Java の時代でもないでしょう」的な雰囲気がそこはかとなく漂っているせいなのかネット上にあまりこの手の情報は見つからなかった。

なので、軽くまとめ。

0. 準備

当たり前ですが Java 開発環境を作っておきましょう。
M1 Mac に M1(Arm) 対応の JDK をインストールする
あたりを参考に。

1.インストール・動作確認

ようやく M1 Mac でも homebrew がマトモに動くようになってきたので、今回は homebrew 経由で tomcat を入れます。

おなじみ

brew install tomcat

コマンドでインストール。

tomcat 自体はユーザー(管理者)登録しなくともとりあえずは走る。

brew services start tomcat

でサービスを開始したあと、ブラウザで http://localhost:8080 にアクセスするとwelcome 画面(アイキャッチ参照)が表示される。こうなればOK。

サービス終了は

brew services stop tomcat

とする。

2.ユーザー登録する

自前のプログラムをデプロイする場合に必要になってくるので、tomcat にユーザーを登録する。
tomcat を homebrew 経由で導入した場合、現在(2022/4)だとその実体諸々は
/opt/homebrew/Cellar/tomcat/
にある。
設定ファイル関係は
/opt/homebrew/Cellar/tomcat/(version)/libexec/conf
以下にある。
このうち tomcat-users.xml に以下の記述を追加。

<user username="username" password="password" roles="manager-gui" />

tomcat 起動後、上で設定したユーザー名とパスワードで管理画面に入れるようになります。

3.なにはともあれ Hello World!

環境が整ったら、とりあえず何か簡単なプログラムをデプロイしてみたい。

テキストエディタで .jsp だのをガシガシ作成していってもいいんでしょうが、ファイル構成(ディレクトリ構造とでもいうのでしょうか META-INF 以下にこれこれを置いてというアレ)がよくわかってないので、NetBeans にまかせましょう(手抜き)。

NetBeans 起動後、File >> New Project.. でプロジェクト作成。

Web Application を選択。あとは、ダイアログの指示に従う。

デフォルトで Hello World! してくれるコードが書かれているので、なんも考えずにビルド。

BUILD SUCCESS するとプロジェクトフォルダに target フォルダがつくられ、その中に
プロジェクト名-version.war
というファイルができている(はず)。

これを tomcat 管理画面からデプロイ。

手持ちのブラウザで URL: http://localhost:8080/プロジェクト名-version/ にアクセスすると以下のようにハロワールドしてくれる。

めでたしめでたし。

【追記】めでたしめでたし、とは書いたが、その後、servlet の簡単なコードを書いて tomcat 環境にデプロイするとなぜかエラーが出る。ところがこの .war ファイルを wildfly 環境に持ってくると全く正常に動作する。
原因よくわからず。

【追記2】tomcat の version 8 にすると正常動作しました。
サンプルコード&解説は『【Mac】ハロワールドっぽいページを複数作って遷移の確認【Servlet】』で。使用したコードは GtHub に公開しています。 

 

猪股弘明

 

Mac で学ぶ Arm アーキテクチャ 1-1

実行したら 10 を返す

int main(void){
    return 10;
}

という C プログラムを

・intel Mac 向け

・M1 Mac 向け

にそれぞれアセンブラで「寸止め」コンパイルして出力させてみた。

Intel(x86_64)アーキテクチャ向け
M1(arm64)アーキテクチャ向け

すぐに気がつくのは

・レジスタの名称が全然違う

・M1 向けの方が若干すっきりしている

あたりだろう。

 

ところで、これを某所でネタにしたら「どうやってアセンブラ出力させたんですか?」という質問があった。
じゃあ、これ、クエスチョンにしますか。

Q1.1 C プログラム(ここでは test.c とします)を Mac 上で clang を使って
・x86_64 アーキテクチャ向け
・arm64 アーキテクチャ向け
にそれぞれアセンブラ出力(testx86.s と testarm.s)させるコマンドをそれぞれ作ってください。

ついでにこれも。

Q1.2 どちらのアーキテクチャでも良いが test.c の実行ファイル(test)を作成してください。
このとき実行ファイルを実行させても端末には何も表示されません。
この時の main 関数の返り値 10 を(ソースに手を加えずに)端末上に表示させるにはどのようなコマンドを用いたら良いでしょう?

解答は近いうちにアップします

解答はこちら

 

air-h-128k-il