[過去ログ]
Git 18 (1002レス)
Git 18 http://mevius.5ch.net/test/read.cgi/tech/1650651945/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
731: デフォルトの名無しさん (ワッチョイ 8b8f-5UCg) [sage] 2022/11/01(火) 01:23:19.93 ID:ju8ytuSJ0 なんでgitの話でフレームワークの話が出て来んのかな http://mevius.5ch.net/test/read.cgi/tech/1650651945/731
732: デフォルトの名無しさん (ワッチョイ 7997-uk66) [] 2022/11/01(火) 01:46:22.68 ID:Mxyz6tUC0 無限の自由度の代わりに組み合わせ爆発が生じてエッジケースでバグが出まくり、というのは嫌だという設計思想なんじゃないかな 確かにWeb系でDIするのは当たり前だけど、RDBMSやビジネスロジック以外はトラブってもいいWeb系と違ってgitでトラブル続発したら困るし。 ファイルシステムみたいなものでは。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/732
733: デフォルトの名無しさん (ワッチョイ 7997-uk66) [] 2022/11/01(火) 01:52:53.48 ID:Mxyz6tUC0 あと大体git自体が膨大なLinuxカーネルのVCSとしてかなり高速に、確実に動作する必要があったという大前提があるだろう。 そこを無視して汎用的にはこっちの方がいいってのは違うんじゃないかな。 汎用的な用途としてのVCSが欲しいならばpost-gitを作るしかないと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/733
734: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/11/01(火) 02:08:49.56 ID:QdibabTL0 そもそも汎用性がある方が良いというのから幻想 道具は利用目的にあっているかどうかが全て十徳ナイフありがたがるやつは素人 http://mevius.5ch.net/test/read.cgi/tech/1650651945/734
735: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 03:17:45.94 ID:Jzc3CN/20 >>729 それも根本的に間違ってる。 ハッシュはハッシュでレイヤーを切るから、正しく構成されてるソフトウェアなら、 ハッシュを変更するのはハッシュ生成関数内だけで済むんだよ。 具体的には、全体は get_hash() を呼んでハッシュを受け取るようにしておいて、 その get_hash() 内でSHA-1かSHA-256かmd5かを変更するだけにするんだよ。 というかこんなの当たり前すぎてお前らが理解出来てないのにびびる。 オブジェクト指向では基本中の基本とされてることだぞ。 お前らプログラマじゃねえだろマジで。プログラマなら、ちょっと勉強し直さないとヤバいぜ。 ただこれは、本質的に「返ってくるオブジェクトのサイズは予想出来ない」事になり、 C的な「返ってくるオブジェクトのサイズは呼ぶ前に完全に予期出来ている(だいたい固定)」の世界にはフィットしない。 C++とかはデストラクタで、その他言語はGCで対応するのが常策だが、 これに関してはバイナリにハードコードで問題ないから#defineでいい。 ただC++だと#defineは悪とされてるから、絶対にデストラクタでやるんだ!いやスマポだ!みたいな奴も居て、 それを勧めてくるからLinusはブチ切れてるわけだが。 だけどハッシュサイズなんて動的に変化すること無いのだから、#defineで全く問題ない。 そしてそれに手こずってる時点で、#defineでの切換すら出来ない、 全体がそれぞれで勝手にSHA-1を生成してたコードになってるって事だよ。 それはマジで糞だよ。(まあ、でも直せば済む話ではあるんだけどさ) http://mevius.5ch.net/test/read.cgi/tech/1650651945/735
736: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 03:19:13.38 ID:Jzc3CN/20 >>732,733 これをDIと呼ぶのか?はさておき、DIでバグが増えるなんて事はないよ。 そして、get_hash()でのオーバーヘッドは関数呼び出し一回でしかなく、 それで致命的に遅くなるなんて事もないよ。 というか、GitのマージってI/Oバウンドだと思ってるが違うのか? http://mevius.5ch.net/test/read.cgi/tech/1650651945/736
737: デフォルトの名無しさん (ワッチョイ d9e4-Ojdt) [sage] 2022/11/01(火) 03:55:08.59 ID:kz7RaJ2H0 >>735 ただ単純にハッシュアルゴリズムをSHA-1からSHA-256に変更するわけじゃないぞ 既存のSHA-1リポジトリも全部(リベース状態にすることなしに)SHA-256で運用できるようにしたりするんだよ gitの開発はリポジトリのフォーマットの継続性をとても重視してる http://mevius.5ch.net/test/read.cgi/tech/1650651945/737
738: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 08:06:29.98 ID:Jzc3CN/20 >>737 同じだよ。 正しく構成されてる場合は何種類混在しても全く問題ないし、簡単に変更可能だ。 つかマジでそれオブジェクト指向(OOP)の基本中の基本だから。 ただ、混在なら、Cで一般的に使われてるSIZEOFの#defineでは対応出来ないが、 Linusのコードなら、Cでは一般的に禁止されてる小文字マクロで 普通にそこら辺の関数もマクロだらけの可能性があり、(linuxカーネルコードがそう) この場合は、#define内のマクロ定義を一箇所変更するだけで対応可能ではある。 が、まあ、マクロ云々の話は本来はNGとされてて他言語では厳禁だから、いわゆる正しい方策を示すと、 全体の関数はハッシュの中身が何か知らない状態で記述するんだよ。 get_hash()でハッシュのポインタを貰いました、中身は知りませんので具体的な操作はできません、 なので一々投げ返して操作して貰いますがよろしいですね?とする。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/738
739: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 08:06:50.06 ID:Jzc3CN/20 と書くと意味不明だが、この場合は要は貰ったポインタを一々投げ返して操作してもらう。 具体的には、 Hash* hp = get_hash(myObject); // myObjectからHashを生成して貰う、Hashの実体は何か知らない Stream* sp = traverse(hp); // hashをtraverseに投げてstraem的な何かを示している末端のポインタを貰う、traverseはtraverse出来る何か、ファイルかDBかssh先のストレージか知らんが、とにかくtraverse出来る何かをtraverseして、末端のポインタを返す GitObject* go = cat_file(sp); // cat_fileに末端のポインタを渡して、GitObjectを貰う とする。これをOOP文法(Cにはないが)で一般的にはメソッドにして、 Hash* hp = get_hash(myObject); // 管理するのはhashのポインタのみ、中身は知らない GitObject* go = hp.traverse().cat_file(); // hashを手がかりに翻訳させ、GitObjectを得る とするんだよ。結果、全体のコードは実際のHashの中身がSHA-1かSHA-256かなんて知る必要もないし、 とにかくtraverseに投げてさらにcat_fileに投げれば、欲しかったGitObjectのポインタが得られる、という構造にする。 こうすれば、本体のコードはハッシュの種類(SHA-1かSHA-2576か)とは依存しなくなる(=どちらでも全く同じバイナリで動かせるようになる) そして travserseする実体がDBであったり、末端ファイルの中身がJSONであったりしても、 本体のコードはそれに依存しないから、何でも自由に選べるようになる。 本体のコードは、自身が使う GitObject の中身は知っているが、 それ以外はhashを手がかりに、treeはtraverseに翻訳させ、末端の何かはcat_fileに翻訳させ、その具体的な実体は何か知らない状態で記述するんだよ。 これは拡張性ではなく保守性を上げる為の方策だが、マジで、あおり抜きで、OOPでは基本中の基本だ。 だからフレームワークとかはこうとしか書けないように構成されてるから、一回使ってみれば上手く矯正されると思うぞ。 とにかく、このレベルが理解出来ないのはヤバイってもんじゃない。 多分OOPの授業では1日目とかのレベル。 もっとも、1日目で意味を理解出来る奴は居ないが。 だからOOPって何?みたいな質問が掲示板上でもやたらでてくるわけでさ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/739
740: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 08:51:54.94 ID:Jzc3CN/20 補足。 分からなければ「OOP 抽象化」でググって色々読んでみてくれ。 死ぬほどでてくるはず。マジで基本中の基本だから。 ハッシュを交換することに手こずるようなら、その『コード』は間違いなく糞だ。(Git自体が糞と言っているわけではない) ただ、修正すればいいだけ、要は漏れなく上記のようにしてしまえばいいだけではあるが。 正しく構成すれば、Hash変更なんて簡単に出来るし、 そもそもそうなってないコードなんてOOPでは存在を許されてない。 (そうとは書けないように構成されてる。 それを強制的にやらせるシステムの一つがprivateだが、これはこれで間違った使われ方も多いが) http://mevius.5ch.net/test/read.cgi/tech/1650651945/740
741: デフォルトの名無しさん (ワッチョイ d9e4-Xmag) [sage] 2022/11/01(火) 09:16:06.92 ID:kz7RaJ2H0 長々とご苦労さんだがお前SHA-256対応の意味が理解できてないよ http://mevius.5ch.net/test/read.cgi/tech/1650651945/741
742: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 09:26:52.60 ID:Jzc3CN/20 >>741 俺は以下記事の理解書いてる。 俺が書いた事の意味が分からないのは君の問題。 https://www.infoq.com/jp/news/2020/11/git-2-29-sha-256/#:~:text=%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%81Git%E3%81%AF%E3%80%81%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%90%8D%E3%81%A8%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AE%E4%B8%A1%E6%96%B9%E3%81%ABSHA-256%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B0%E3%81%97%E3%81%84%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E5%BD%A2%E5%BC%8F%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%9F%E3%80%82,%E3%81%93%E3%81%AE%E6%96%B0%E3%81%97%E3%81%84%E5%BD%A2%E5%BC%8F%E3%81%AF%E3%80%81%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%81%9FSHA-256%E5%90%8D%E3%81%A8SHA-1%E5%90%8D%E3%81%AE%E9%96%93%E3%81%AE%E5%8F%8C%E6%96%B9%E5%90%91%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%82%82%E3%83%97%E3%83%AD%E3%83%93%E3%82%B8%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E3%80%82 ただ、初めてOOPを示されていきなり意義を理解出来る奴はほぼ居ないのも事実。 でも、君は確実に老害扱いされてると思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/742
743: デフォルトの名無しさん (ワッチョイ f15f-iYvO) [sage] 2022/11/01(火) 09:32:09.77 ID:WFTKMpG40 なんだか知らんけど5chでうだうだ言ってて何になるの http://mevius.5ch.net/test/read.cgi/tech/1650651945/743
744: デフォルトの名無しさん (ワッチョイ d9e4-Xmag) [sage] 2022/11/01(火) 09:36:58.90 ID:kz7RaJ2H0 >>742 君はその記事の意味することを理解できてないね コミットオブジェクトの構造とか役目を理解出来てないと難しいかもしれない http://mevius.5ch.net/test/read.cgi/tech/1650651945/744
745: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/01(火) 09:57:34.79 ID:Jzc3CN/20 >>744 そう思いたいんだろうけど、残念ながらそうじゃない。 少なくとも君はソフトウェア階層やOOPの基本事項について全く理解出来てない。 だから今、老害と言われ続けるか、再び学び直して熟練者と言われるかの分水嶺にいるだけ。 俺は君に何も強制することは出来ないが。 確かに俺はGit初心者なので、記事の理解は間違ってるかもしれない。 でも、ハッシュの中身や長さが変わったり混在したところで、 正しく構成されてるソフトウェアなら数行の変更で対応可能なのは事実だよ。 そして君と同様の人達によってGitが作られているのであれば、 そりゃそうなってなくて苦労するんだろうさ。 まあいいけどね。もう水掛け論だから終わりにしようぜ。これ以上やってもお互い得る物もないし。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/745
746: デフォルトの名無しさん (ワッチョイ 8b8f-5UCg) [sage] 2022/11/01(火) 10:12:34.67 ID:ju8ytuSJ0 > GITは、すべてのファイルオブジェクトとコミットの識別と整合性チェックをSHA-1に強く依存しています こう書いてあるのになんで無視するんだろう http://mevius.5ch.net/test/read.cgi/tech/1650651945/746
747: デフォルトの名無しさん (ワッチョイ d9e4-Xmag) [sage] 2022/11/01(火) 10:29:09.24 ID:kz7RaJ2H0 >>745 数行で対応w それが出来ないgithubは無能集団なんですねw 糞MSに買われちゃうぐらいだから仕方ないか http://mevius.5ch.net/test/read.cgi/tech/1650651945/747
748: デフォルトの名無しさん (オッペケ Src5-8VyY) [sage] 2022/11/01(火) 12:34:56.06 ID:lDKItQe4r Git初心者に語らせると頓珍漢な文章が生まれるという好例 http://mevius.5ch.net/test/read.cgi/tech/1650651945/748
749: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/11/01(火) 12:39:40.93 ID:QdibabTL0 >>745 お前日本語読めなさそうだな ましてやリンク先にある英語とかかけらも理解できてないだろ 混在とかじゃないぞ。二つを同時につけて「安全」に相互変換するということだぞ 安全にすることが目的でSHA-256を使えば解決みたいな話じゃない お前みたいなのが目的と手段を取り違えるタイプの典型 OOPとかアホなプログラマでも理解できる単純なことなわけないだろ そんなんで済むならとっくに終わってる まずは常識で考えろ できないなら黙って勉強しろ http://mevius.5ch.net/test/read.cgi/tech/1650651945/749
750: デフォルトの名無しさん (ワッチョイ 699f-1Eu/) [sage] 2022/11/01(火) 18:29:25.93 ID:/+vO/8+o0 長文すげー http://mevius.5ch.net/test/read.cgi/tech/1650651945/750
751: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/02(水) 05:40:42.57 ID:n+gr/3CY0 >>749 どうであれ同じだよ。 複数付けようが、何をどう組み合わせようが、 抽象化の向こうの実体については知らないし、取り扱うコードも存在してないから、 同じバイナリで動作するんだよ。それが抽象化と隠蔽で、これはOOPの基本中の基本。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/751
752: デフォルトの名無しさん (ワッチョイ 497b-vCJ4) [sage] 2022/11/02(水) 05:41:43.29 ID:n+gr/3CY0 んー、お前ら完全に化石だわ。若い奴からは確実に馬鹿にされてるよ。 というか、現在において有名OSSにこんな化石居住区が存在してたことにびっくりだわ。 >>747 数行ってのは誇張ではなく、実際にそんなもんなんだよ。 例えばMMDは3DVision対応に20-30行と言ってるが、 > そのため、樋口氏がMMDの3D Vision対応に要したのは、20~30行程度の簡単なコーディングのみだった。 > https://pc.watch.impress.co.jp/docs/topic/feature/415525.html この樋口氏はVer5->7でDirectX対応してて、その時もインタビュー受けてて(ググッても出てこないが) 確か「よくよく確認して、実際に変更する必要があるのは2-3行だったのでほっとしました」 とか言ってたはず。 これは特殊ケースではなく、こうなるように設計するんだよ。 これに対してGitはマニュアル見てもそういう思想が全く見あたらず、「頑張ればいいよね」で終わってる。 だから糞なソースも「頑張って」修正して何とかするんだ、のノリだ。 ソフトウェア工学はそんなのは20年前にクリアしてて、今は、 A. どうすれば変更に対して強くなるか(仕様変更があってもソースコードを変更せずに済むか) B. どうすればそもそもソースコードを記述する必要すらなく出来るのか(全ての状況に対し同じバイナリで対応する) C. どうすれば出来るだけ早い段階でバグを検出出来るか とか移ってて、大体馬鹿がCに対して悪ノリしてるからLinusがこき下ろす事態になるのだが、 ABはちゃんとやらないと話にならないよ。 だからまあ、次のGitは「勉強をがんばらなくてすむGit」で、 実装で一番簡単な方法は、Gitをバックエンドに使ってシェルスクリプトでラップすることだよ。これらは既に言ったが。 でも君らは「頑張らなくちゃいけない」「頑張るべきものだ」と思っちゃってるみたいだから、 今のGitプロジェクトからはこれは出てこないだろう。 となると、上記のようにして簡単に実装したNext-Gitに成果をかっさらわれ続ける事態になると思うよ。 ちょうどGNU/Linuxの形に似てるが。 あれはLinusが悪いわけではないし、ストールマンも別になんとも思ってないようだけど。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/752
753: デフォルトの名無しさん (ワッチョイ c114-Tk+f) [sage] 2022/11/02(水) 06:01:09.34 ID:z+vraLDY0 > これは特殊ケースではなく、こうなるように設計するんだよ。 > これに対してGitはマニュアル見てもそういう思想が全く見あたらず、「頑張ればいいよね」で終わってる。 それあなたの感想ですよね? gitはソースコード1行程度で変更終わりですよ http://mevius.5ch.net/test/read.cgi/tech/1650651945/753
754: デフォルトの名無しさん (ワッチョイ c114-Tk+f) [sage] 2022/11/02(水) 06:03:01.35 ID:z+vraLDY0 > 実装で一番簡単な方法は、Gitをバックエンドに使ってシェルスクリプトでラップすることだよ。これらは既に言ったが。 シェルスクリプトは移植性低いって分かってる? シェルスクリプトでラップしようものなら Linuxでは動くがFreeBSDでは動かないってことが しょっちゅう発生する シェルスクリプトで頑張るものじゃない http://mevius.5ch.net/test/read.cgi/tech/1650651945/754
755: デフォルトの名無しさん (ワッチョイ d9e4-Xmag) [sage] 2022/11/02(水) 07:01:05.57 ID:S2ENS6Jw0 git の一部機能は git コマンドを使ったスクリプトで実装されていたんだけど、多くのユーザーの要望に応える形でそれらのC言語化進めてる http://mevius.5ch.net/test/read.cgi/tech/1650651945/755
756: デフォルトの名無しさん (JP 0H8d-8VyY) [sage] 2022/11/02(水) 09:34:00.28 ID:33j+wJW8H シェルでラップw USPから悪い影響でも受けたか? http://mevius.5ch.net/test/read.cgi/tech/1650651945/756
757: デフォルトの名無しさん (ワッチョイ 8bbb-VzUj) [sage] 2022/11/02(水) 10:35:32.50 ID:sFE/M4aa0 OOPなんて初心者プログラマ訓練ギブスってことを理解できなくてアホ理論展開しているやつがいてw http://mevius.5ch.net/test/read.cgi/tech/1650651945/757
758: デフォルトの名無しさん (ワッチョイ fb66-Q7eZ) [sage] 2022/11/02(水) 14:42:23.54 ID:LlnSL/r70 OOPなんか、そん辺のサンデープログラマでもかなり深い所までメリットデメリット含め浸透してるがな。 関数指向やクロージャがある言語も同様で もはや当たり前のようにハイブリッドになってて一部の原理主義者以外いい塩梅で使ってるから話題にはならん。 http://mevius.5ch.net/test/read.cgi/tech/1650651945/758
759: デフォルトの名無しさん (オッペケ Src5-5UCg) [sage] 2022/11/02(水) 15:33:51.58 ID:4T0OIw/dr OOPそれほど語るなら、お前の大好きなシェルスクリプトはみんなOOP意識して作られてるのかって感じだな http://mevius.5ch.net/test/read.cgi/tech/1650651945/759
760: デフォルトの名無しさん (ブーイモ MMdd-ntN1) [sage] 2022/11/02(水) 18:08:31.10 ID:mw55lzgRM リーナスを中心としたOSSコミュニティの起源にタネンバウムとのモノリシックカーネル・マイクロカーネル論争があることを知らないのかな? 結果として無駄な抽象階層を積み重ねることの無意味さをLinuxカーネルの成功が証明してしまった もちろんLinuxカーネルもファイルシステムとか必要なとこは抽象化されてるけどね http://mevius.5ch.net/test/read.cgi/tech/1650651945/760
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 242 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s