Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RepoSync
Search
cateiru
July 09, 2021
Education
0
31
RepoSync
https://github.com/yuto51942/netpro-project
cateiru
July 09, 2021
Tweet
Share
More Decks by cateiru
See All by cateiru
社内の開発便利ツールを作った話 / サブカル業界Developers 勉強会Vol.6
cateiru
0
470
QUICについて調べた
cateiru
0
92
Other Decks in Education
See All in Education
ISMS審査準備ブック_サンプル【LRM 情報セキュリティお役立ち資料】
lrm
0
510
Beispiel einer Fortbildung für "Soziales Lernen"
gsgoethe
0
140
HP用_松尾研紹介資料.pdf
matsuolab
0
280
Requirements Analysis and Prototyping - Lecture 3 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
850
BrightonSEO, San Diego, CA 2024
mchowning
0
100
1216
cbtlibrary
0
240
SQL初級中級_トレーニング【株式会社ニジボックス】
nbkouhou
0
23k
Semantic Web and Web 3.0 - Lecture 9 - Web Technologies (1019888BNR)
signer
PRO
2
2.6k
2024年度秋学期 統計学 第2回 統計資料の収集と読み方(授業前配付用) (2024. 10. 2)
akiraasano
PRO
0
100
オープンソース防災教育ARアプリの開発と地域防災での活用
nro2daisuke
0
200
H5P-työkalut
matleenalaakso
4
36k
勉強したらどうなるの?
mineo_matsuya
10
6.8k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
Thoughts on Productivity
jonyablonski
67
4.4k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Done Done
chrislema
181
16k
Practical Orchestrator
shlominoach
186
10k
The Cost Of JavaScript in 2023
addyosmani
45
7k
Rails Girls Zürich Keynote
gr2m
94
13k
Mobile First: as difficult as doing things right
swwweet
222
9k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Making Projects Easy
brettharned
116
5.9k
Transcript
Repo Sync
どういうもの? • 複数クライアントとファイルをリアルタイム同期するやつ • Gitの仕組みを利用することで変更を戻すことができる • ソケット通信を使用することでプライベートネットワーク間で通信 • 使いやすいCLI •
Python & Rust製 ↓ HackMDやGoogle DocのCLI、ソケット通信ver.
使用言語 • 更新確認、履歴管理 ◦ Rust • 通信、cli ◦ Python
動作説明1 依存関係のインストールとビルド • ./build.shでRustのビルド(cargoが必要) • pipenv installでPythonの依存関係インストール(pipenvが必要)
動作説明2 サーバーの起動 • pipenv shellでPythonの仮想環境へ • repo-server --port=8080 -a localhost
でも可
動作説明3 クライアントの起動 • repo-syncで、ファイルパス、ポート、サーバーのアドレスを入力
動作説明4 変更履歴の表示 • repo-git showで履歴表示 • --pager false とすることでpager無しになる
動作説明5 Revert • repo-git applyで履歴のハッシュ値と適用するファイルパスを指定
動作例(うまく動かなかったとき用)
アピールポイント • コア部分(ファイル更新確認、履歴保存)をRustで書く →パフォーマンス向上 • Gitの仕組みを参考に更新履歴を保存する →間違えて保存したときなどに任意の場所に戻せる
シーケンス図 サーバー側
シーケンス図 クライアント側
開発形態、使用ツール • GitHub ◦ CI/CD: GitHub actions ◦ GitHub flow
• Rust ◦ cargo ◦ PyO3 • Python ◦ tox ◦ pipenv ◦ flake8 ◦ mypy ◦ pylint
将来展望 • 同時に保存すると、コンフリクトが起きる→キューに格納 • PythonとRustを使用しておりPythonを使う意味がほぼないためすべてRustで再実 装 • 履歴表示時にPagerを使用しているが、画面にすべて表示されない出力の場合に qを押したときにエラーが起きる問題の修正 •
pypiにデプロイしたい
yuto51942/netpro-project https://github.com/yuto51942/netpro-project