日記:2018年11月22日木曜日・霜月・赤口

最近ブログの更新が滞っている。いろいろ作業はしていて、メモもとっているけどまとめる気力がなくて更新出来ていない。特にSwingWorkerを概ね理解し、実装できたあたりや、Bluetoothのドライバ消失事件、あとqjackmanの記事の続きなど。

正直ずっと騒がしい世相が続いていると感じている。実は今月の12日に母方のじいちゃんがお逝きなさりまして、兵庫の実家さんにお通夜、葬式いったりしました。満88才だったので長寿を全うしなさいました。

最近外でコーディングをラップトップでしたいなと思い、(いつもはiMac27インチと24インチディスプレイ連結ですわ。。)金大の理工系図書館や、昨日はJaistの図書館にいってコーディングしてきた。Jaistはなんと24時間使える、超便利施設。研究成果も日本で最高峰レベルらしい。キャンパスは小さいけど研究機関らしい趣きで、新しい。

RSIまたの名を頸肩腕障害のほうは、やっぱ痛みを抱えながらの作業が多い。あと末端血流障害、手足の先端の重度の冷え性も秋深まってきて、暗い影の接近を感じている。

肝心のエロースのほうはというと、ワンピースでいうとインペルダウンの囚人のような地獄を感じている。なんじゃこの国家は。


Advertisements

Music from Youtube: Ami Suzuki “Love the island”

 

My new demo song reminded me this song.

The the words of this song spiked me.

Wanna listen 12 times.😤

 

※love the island 過ぎてゆく 小さい毎日が 気まぐれと ずっと遊んでいたら こんなに時がすぎていた

※※love the island 忘れない はじめて夜空の下で 抱き合っていたい やっとわかった あなたを思い出しすぎている

ゆっくりと静かに 気付かれず忘れたい

綺麗に焼けていく肌と 乾いてる心を 慰めてくれるのは 街並みのイルミネーション

また今度ってじらされて 涙も流したかもね 何だって教えてくれた あの夏を忘れられない

love the island 深呼吸 している 座り込んで 愛は結局出会っても 不安で何も楽になれない

本当はあなたの 目の前で思いきって 泣いてみたり笑ってみたり 怒ってみたりさせて欲しかった
穏やかな一日も あなたへの想いはつのる

海を3時間ちょっと 飛行機で飛び超えた

空港ではきかえた サンダルがちょっとてれてる

また出直しだから いくらでもどうにでもなる

旅立ちの季節かな? 少しだけ夢を見させて
※love the island 過ぎてゆく 小さい毎日が 気まぐれと ずっと遊んでいたら こんなに時がすぎていた

※※love the island 忘れない はじめて夜空の下で 抱き合っていたい やっとわかった あなたを思い出しすぎている

ゆっくりと静かに 気付かれず忘れたい mu…

 

 

 

Personal Memo: SwingWorker class study note (日本語)

SwingWorkerクラスの使い方

publish() – process()と結びついている

publish()はdoInBackground()の内部で使われるが、process()にデータチャンクを送信する。

SwingWorker<T,V>
T – 結果の型
V – 中間結果の型

processBuildメソッド中で、publish()メソッドが使えない。

publish()はdoInBackground()中で使うメソッド

引数を取る処理をdoInBackground()で行うときどうすればいい?

このサイトを参考にする
http://www.javacreed.com/swing-worker-example/

マルチスレッドで当たり前。
Swingは実質スレッドがいくつかある。

Jaydle開発メモ:JMenuBarの追加、アクションの追加、内部クラスの復習、JFileChooser実装のための知識の整理メモ

とりあえずLibreOffice Writer似とったメモを貼っておく🙃

==========================================================

JMenubarを追加する

frame.setJMenuBar(menubar);//frameはJFrameオブジェクト、munubarはJMenuBarオブジェクト

 簡単 うまくいった

参考サイト

https://www.javadrive.jp/tutorial/jmenu/

・アクションの追加

JMenuItemオブジェクトのメソッド addActionListenerからactionPerformedメソッドを実行する

 内部クラスを使って、メソッドを書く場所は確保した。

  ダウンロードボタンも少し修正した(JFrameActionListenerを実装せずに内部クラスで実装した)Screenshot from 2018-10-23 22-18-21

参考サイト

http://java2008.blog103.fc2.com/blog-entry-43.html

・内部クラスの復習

class ButtonListener implements ActionListener
{

public void actionPerformed(ActionEvent e)

{

strIn=textIn.getText();

if(strIn.length()>13)

dlAudio(strIn);

}

}

・メモ

File、プロセスビルダーの保存ディレクトリ、空白ではエラーが出る

JFileChooserの実装

  • showOpenDialog()showSaveDialog()メソッドと使うのが最も簡単

  • showDialog()も使える

  • 上記のメソッドはそれぞれユーザがどのようにダイアログを終わらせたかを表す整数のステータスコードを返す

  • もし返却された値がAPPROVE_OPTIONならば、ユーザはファイルを選んだ、それはgetSelectedFile()メソッドから得ることができる

オライリーJFCクイックリファレンス(原)より

ダイアログからやったほうがよさげ

P440

JFileChooserはダイアログからできているみたい。だからダイアログをやるといい。

Macみたいにクイックファイルリーダが欲しい。

それにしても、洋ドラの「シリコンバレー」で、リチャード・ヘンドリクスがスティーブ・ジョブズだの、スティーブ・ウォズニアックだの言っていた。Youtubeで検索してこの動画を見ていた。
”Creativity”というもんが伝わった。

jarコマンドによる実行可能Jarの作成

 

 

jar

オプション

c JARファイルの作成
f ファイル名の決定
v 内容のリストをverboseモードで
m   マニフェストファイルから値と名前を特定する
-C はfileオペランドで指定されたファイルを処理する際にディレクトリが一時的に変更される

 

参考
https://docs.oracle.com/javase/jp/8/docs/technotes/tools/unix/jar.html
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/jar/jar.html

 

この時のディレクトリ・ファイル構成

~/Desktop/git/masa-examplesがソースのルートディレクトリ
     applications - JaydlePrototype01.java がメインメソッドを含むクラス
     practice - IOMethods.java  がメインクラスで使った依存するクラス

 

まず~/Desktop/git/にJaydleBuildディレクトリを作成
~/Desktop/git/masa-examplesから以下のコマンドを実行

 

javac -d ../JaydleBuild/ applications/JaydlePrototype01.java 
javac -d ../JaydleBuild/ practice/IOMethods.java

 

これでJaydleBuildディレクトリにクラスファイルができた。

 

masa@em-p:~/Desktop/git/JaydleBuildTest$ tree
.
├── applications
│   └── JaydlePrototype01.class
└── practice
    └── IOMethods.class

2 directories, 2 files

のように、

パッケージのディレクトリが作成されている。

 

次に簡単なマニフェストファイルを同ディレクトリに作成

Manifest-Version: 1.0
Main-Class: applications.JaydlePrototype01

 

そして、さっき作ったクラスファイルとマニフェストファイルをjarコマンドでまとめる。

masa@em-p:~/Desktop/git/JaydleBuildTest$ jar cmf Manifest.txt JaydleJarTest.jar ../masa-examples/

失敗。間違ったJARができた。

 

masa@em-p:~/Desktop/git/JaydleBuildTest$ jar cmf Manifest.txt JaydleJarTest.jar .

これでちゃんと作れた。

Screenshot from 2018-10-21 22-56-14

参考
jar コマンドで実行可能な JAR ファイルを作成する | まくまく Java ノート
http://maku77.github.io/java/jar/executable-jar.html

 

YoutubeのMVの音声を抽出してMP3として保存できます。たぶんLinux環境だと動きます。
https://github.com/iamaturtle113/Jaydle

WindowsとMacでは試してないです。Macなら動くかも?Windowsはターミナルのコマンドがちょっと厳しいか。

注 Youtube-dlコマンドがターミナルから起動できることが条件です。

 

Learning About “ActionPerformed” Method And Around “Actions” In JAVA Swing

JFCinanutshellActionListenerインターフェースとactionPerformedメソッドの実行あたりの事柄を整理したいと考えていて、中古で買った洋書を引っ張り出して来て、訳してみました。これはjava.awt.eventに属するみたい。

javax.swing.Action interface

David Flanagan著
JAVA FOUNDATION CLASSES IN A NUTSHELL, A Desktop Quick Reference (O’reilly) 1999, First Edition より

Chapter 3 – Swing Programming Topics – Actions (P26)

JFCtext

GUIソフトはいろんな方法で一つのオペレーションをユーザーにinvoke(呼び出す)ことを許す。
例えば、ユーザーはメニューからでもツールバーからでもファイルをセーブできるだろうし。捜査の結果は極めて同じ。二つの違うインターフェースを介してユーザーに与えられているのだ。

Swingはそのようなオペレーションに関する情報をencapsulate(カプセル化)する単純でパワフルなインターフェースだ。ActionインターフェースはActionListenerインターフェースをextend(継承)するだからActionインターフェースはactionPerformed()メソッドを含む。要求されたアクションを実際に実行するために実装するメソッドはこれである。それぞれのActionオブジェクトはそのアクションに対して追加的な情報を提供する任意の名前/値ペアを持つ。その値は大体以下を含む:そのオペレーションを名付ける短い文字列、グラフィックにそのアクションを表す一つのイメージ、そしてアクションのためのtooltipツールチップ(ふきだし)で使うのに適したより長い文の文字列。加えて、それぞれのActionオブジェクトはひとつのenabledプロパティとenable利用する、disable利用しないということを認可するsetEnabled()メソッドを持つ。(もしあそこでどの文も選択されてないならば、例えば、”切り取り”アクションは通常disableである。)

あなたはひとつのアクションオブジェクトを直接JMenuやJToolBarに追加することができる。あなたがこれをするとき、そのコンポーネントは自動的にそのアクションを表すためのJMenuItemかJButtonを作る、それはそのアクションの捜査をユーザーに対して可能にしそのアクションのテキスト的な描写とグラフィカルなイメージを適切に表示する。

To be continued ..

 

日記:平成30年10月15日月曜日(神無月、先負w)

今日は、吾輩のiMacにMacOSを新規インストールしようと思う。
GPUの故障により、10ヶ月くらい?お蔵入りしていた我が七台目のコンピュータ iMac named “Em-P”(Model A1312 EMC2429)。

リフローと言われる修理方法で復活を遂げて、四ヶ月あまり。
修理自分で分解して行ったけど、それなりに大変だった。メモリ4GBが一枚使えなくなっているし。
こっちもリフローして見る予定。修理に目覚めてから、修理待ち製品が並んでいる。やつらのヤジが聞こえてきそうな気がするくらいだ。w Elektron MachineDrumも、メンテ中に配線切れて、片方からしか音でなくなっていて、基盤に配線工事が必要だし、iPadは電池交換で復活した。大変喜ばしいが、サポート切れていて、iBookが使えねぇし、PDFみる術確立できてねぇ。あとWiiのドライブが壊れて、イジェクトできないやつと、CDコンポのドライブの回転不良も心のどこかでスタックオーバーフロー現象でてる。

って愚痴のような駄文つらねて、すいまソン。

今日は、iMac内蔵ドライブにパーティション作ってあった、”Mac HD Renewal”にMacOSをインスツールするぞ。これで仕切り直し、ただLogicのインスコ、めっちゃ時間かかった記憶がある。。

iMacのドライブもGPUエラーから復活するとき、ごねにごねたんだよね。電源ケーブルさしたまま、メモリ抜いたら一回起動不可になった。しかも結構深くハマって、非常時モードのターミナルから、修復コマンドで1〜2時間格闘した。具体的に言うと、データの修復要請がでて、一度は復活したけど別の本命データは今も修復できない状態で。そっちは、ただ起動しただけでそうなった。あれは忘れもしないサッカーの国際自愛の日。Suchmosがなんか歌ってたな。有料ソフト5千円くらいの使えば治りそうなんだけど。ワンダーシェアとか。フリーのやつはなんか写真用とかが多くて、ファイル名とかフォルダの階層構造とかが復元できない模様。バックアップのファイルとか乱れ並んでいて有限なディスクスペースにどっかり座っちゃっている。ヌリカベや石臼の類。w

ゴシップガールを見ていてフリーズして、そこから再起不能になってしかも私のRSIを電磁波によって蝕み、公園の大地で素足になって消磁とかしてた。

 

Git push error:Gitでプッシュできなかった件

masa@lve-imac2:~/Desktop/git/masa-examples$ git push https://github.com/iamaturtle113/masa-examples.git master
Username for 'https://github.com': iamaturtle113
Password for 'https://iamaturtle113@github.com': 
To https://github.com/iamaturtle113/masa-examples.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/iamaturtle113/masa-examples.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ローカルで新しいディレクトリを作って、その中にファイル入れたら、プッシュエラーでた。

一度pullする。

git pull https://github.com/iamaturtle113/masa-examples.git master

ずらずらファイルできた。

masa@lve-imac2:~/Desktop/git/masa-examples$ git pull https://github.com/iamaturtle113/masa-examples.git master
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
From https://github.com/iamaturtle113/masa-examples
* branch master -> FETCH_HEAD
Adding practice/testImport.java
Adding practice/testImport.class
Adding practice/candelTestdir/IOMethods.java
Adding practice/candelTestdir/IOMethods.class
Adding practice/candelTestdir/.IOMethods.java.swp
Auto-merging practice/Thread1.java
CONFLICT (content): Merge conflict in practice/Thread1.java
Adding practice/Thread1.class
Adding practice/Thread1$ImpleRunnable2.class
Adding practice/Thread1$ImpleRunnable.class
Adding practice/RegexPractice01.java
Adding practice/RegexPractice01.class
Adding practice/IOMethods.class
Adding practice/.testImport.java.swp
CONFLICT (directory/file): There is a directory with name practice in HEAD. Adding practice as practice~b343e0c4b8b3b437105f2e8e535e69781941291c
Automatic merge failed; fix conflicts and then commit the result.
masa@lve-imac2:~/Desktop/git/masa-examples$ git push https://github.com/iamaturtle113/masa-examples.git master

 

でpushしたけど、また同じエラー。

To https://github.com/iamaturtle113/masa-examples.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/iamaturtle113/masa-examples.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

とりあえず、URLをオリジンに追加。

git remote add origin https://github.com/iamaturtle113/masa-examples.git

 

次にマージ

masa@lve-imac2:~/Desktop/git/masa-examples$ git fetch && git merge origin/master
From https://github.com/iamaturtle113/masa-examples
* [new branch] master -> origin/master
error: 'practice' appears as both a file and as a directory
error: practice: cannot drop to stage #0
error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

普通ならコレで解決するらしいが、今回はだめだ。

masa@lve-imac2:~/Desktop/git/masa-examples$ git merge origin/master
error: 'practice' appears as both a file and as a directory
error: practice: cannot drop to stage #0
error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

どうしよう。

masa@lve-imac2:~/Desktop/git/masa-examples$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")

Unmerged paths:
(use "git add <file>..." to mark resolution)

added by them: practice
both modified: practice/Thread1.java

Untracked files:
(use "git add <file>..." to include in what will be committed)

practice~b343e0c4b8b3b437105f2e8e535e69781941291c

no changes added to commit (use "git add" and/or "git commit -a")

素直に

git add .
git status で確認すると、エラー消えた。
git merge origin/master -> commitしてからマージしてくれと

masa@lve-imac2:~/Desktop/git/masa-examples$ git merge origin/master
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
masa@lve-imac2:~/Desktop/git/masa-examples$ git merge origin/master
Already up-to-date.

masa@lve-imac2:~/Desktop/git/masa-examples$ git push https://github.com/iamaturtle113/masa-examples.git masterUsername for 'https://github.com': iamaturtle113
Password for 'https://iamaturtle113@github.com': 
Counting objects: 21, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (20/20), done.
Writing objects: 100% (21/21), 7.34 KiB | 0 bytes/s, done.
Total 21 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To https://github.com/iamaturtle113/masa-examples.git
b343e0c..b442916 master -> master

解決です。。

 

参考
https://qiita.com/takanatsu/items/fc89de9bd11148da1438

GAE (Google App Engine)で遊ぶ

公式サイトからダウンロード。ワタクシの場合はJavaザマス。

https://cloud.google.com/appengine/downloads?hl=ja

ダウンロードしたあとは、解凍して、シェルにパスを通すみたい。binディレクトリ。
ファイルの置き場迷うが、 /usr/local/ 下とする

export PATH="$PATH:/usr/local/appengine-java-sdk-1.9.63/bin/"
その際の参考資料
Windowsユーザーに教えるLinuxの常識(3):各ディレクトリの役割を知ろう(サブディレクトリ編) (2/2)
http://www.atmarkit.co.jp/ait/articles/0109/07/news002_2.html

 

以下、クイックスタートに沿って、リアルタイムで進行中

 

git cloneでソースのダウンロード。
私の場合 ~/Code/googleAppEngine/ にダウソ。

mvn appengine:devserver

を実行。
なんか、

[INFO] INFO: Dev App Server is now running

となり、サーバーが起動中になってるみたい。
http://localhost:8080/

にブラウザからアクセスすると、

Event tracked.

と書いてある。

mvn appengine:devserver コマンドを実行するディレクトリ間違えた。

…/appengine/helloworldで上記のコマンド実行、localhost:8080/にアクセス ->

ブラウザに

Hello, world

と書いてある。

 

次は、プリント文の中身を書き換え、mvn clean packageを実行して、リビルド。
ワタクシのバアイハ、

This is Test web page of Masataka Nakamura a.k.a La Ville Eternell
Overriding Google App Engine Example 'Hello World App'.
This is Java SDK.
Other contents coming soon maybe..
By teh way I wanna go Siliycon Valley... huh,,,

にした。

 

そして、デプロイのためにCloud Platformプロジェクトと、App Engineアプリケーションを作った。

プロジェクト名は… λ 笑
masa’s first project にした。

リージョンはアメリカ西海岸にしてみた。

サインインに

4/cQCmazgJm8NWlnKt4JJbZvrMqjeHTr1VINh-lDFTIPp7rMZJ1qvQXRw

をアプリにコピペしてくれとある。

なんかよくわからないなと思ったら、google cloud platformに登録しなきゃいけないっぽい。

登録してSDKをインストール。linux版はココから

gcloud init とかでログインしてたら、
.botoファイルを作ったらしいな。これ。

 

・Ubuntuのエラー

よくコンソールみたら、

(java:18774): Gtk-WARNING **: Unable to locate theme engine in module_path: “adwaita”,

ってエラーも出てる

 

https://askubuntu.com/questions/774664/gtk-warning-unable-to-locate-theme-engine-in-module-path-adwaita-error-o

sudo apt install gnome-themes-standard

で解決かな。

 

SuccessCodeのペースト先がわからん

IAM

 

オンラインのチュートリアルに従うと、なんかデフォルトの…でデプロイできなかった。

yamlがないとgcloudコマンドでデプロイできないとなる。
yaml作るか?

gcloud init で 使うプロジェクトをオンラインチュートリアルでつくったものに変えた。

cloudshellでmavenのプラグイン足りてないってエラー。

appengine系のプラグイン足りてないみたい

mvn appengine:devserver これはローカルからアクセスできるようにするためのコマンド

 

mvn appengine:updateの結果
[INFO] Running -A masas-first-project -V masas-first-project1 –oauth2 update /home/masa/Code/googleAppEngine/java-docs-samples/appengine/helloworld/target/appengine-helloworld-1.0-SNAPSHOT
The following URL can be used to authenticate:
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&client_id=550516889912.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&scope=https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/cloud-platform
Attempting to open it in your browser now.

これはappcfgの話みたい。それへの許可を与えるための画面かな。

英語版の”Quickstart for Java 8 for App Engine Standard Environment“を試す。

gcloud auth application-default login

で、ブラウザからAuth Libraryをトラストするかというの話になる。トラストした。

You are now authenticated with the Google Cloud SDK!となる

 

gcloudコマンドの説明
https://cloud.google.com/sdk/gcloud/

 

 gcloud components install app-engine-java

コマンドを実行。なんかインストールした。

git clone https://github.com/GoogleCloudPlatform/getting-started-java.git

で別のソースをダウンロード

 

gcloud info
たたいたら、ダウンロードディレクトリにインストールされていることがわかった。移動したいな

Installation Root: [/home/masa/Downloads/google-cloud-sdk]

 

 

mvn appengine:deployのエラーコード

[INFO] GCLOUD: ERROR: (gcloud.app.deploy) The current Google Cloud project [testproject-218805] does not contain an App Engine application. Use `gcloud app create` to initialize an App Engine application within the project.

`gcloud app create`でプロジェクトのアップエンジンアプリを初期化してくださいと出てる。
そのとおりにして、またmvn appengine:deployすると。。

Screenshot from 2018-10-08 15-04-36

実は、stackoverflowにも質問していた

 

自由日記 平成30年10月6日(土曜日)自転車(ロードバイク)のメンテナンス:タイヤ交換のあとで

昨日、ロードバイク(といっても、後輪のクイックリリースや、ブレーキ周りのシフター((アルテガみたいの))もついていない、ファッションバイクともいわれるクラスのもの)の後輪のタイヤとチューブとリムテープの交換をした。

Rim

前輪はクイックリリースがついているが、後輪はついてないから、タイヤを取るのに手間取りました。
スパナでボルトを外して、スプロケット(日本語では鎖車という見たい。ベルトの代わりに鎖を用いて伝動する鎖伝動に用いる歯車。鎖歯車とある。)からチェーンを外して。。。
初めて後輪を外して、ハブのベアリングなどが固くなっていることに気づいた。

もう四年も乗っていて、その間パンクもなかったし、特に洗車と注油以外のメンテはしていなかった。
最初のトラブルはディレイラー周りだった。そこで、Youtubeでビデオみたり、Webで調べて、シフトがスムーズに行く調整を行った。そういえば、最初に「ZINN & THE ART OF ROAD BIKE MAINTENANCE 4th Edition」という本を買ってあった。英語で難しくて、あまり読めないけど。

それから、フィッテイングのために、計測も入れた、ハンドルの高さや、サドルの高さの調整もした。それで、かなりライドの心地よさがアップした。
それからすぐに、シフトケーブルカバーが捻れて曲がって、シフトできなくなった。
それでイオンバイクでケーブルカバー買って、長さを、もっていった壊れたケーブルに合わせて切ってもらって、取り付けた。

そして直った!!でも次の洗車で、今度はフロントディレイラーの調子がおかしくなった。上にシフトしたとき、すぐに落ちてきて、シフトできない。イオンバイクの人に見てもらったら、ただシフターのレバーのカバーのゆルミだった。そこで、ハンドルブラケットの歪みを教えてもらった。

「あれ、ゴム系のパーツ、もうとっくに死んでね?」となり、タイヤ交換に至った。

一度、タイヤのいれる方向間違えた。前輪は抜かりなかったのに。。。
あと、チェーンも戻すとき手間取ったし。ちゃんと通り道に通ってなくて、はめ直した。
二時間以上かかったなぁ。😒

でも乗り心地、乗り味、良くなった。グリップが帰ってきたし、なんかチューブの感じもレース用な感じがする。
スプロケットのプラスチックカバーも壊して取ったし。走り用になってきた。

次は、ブレーキシューの交換だなぁ。
😃😃😃

最近は、なんか落ち着かないし、満たされない思いがしている。
家にいても、焦る気持ちがつきまとっている。
😤

IMG_2817_small