2ペむンのWebファむルマネヌゞャヌCloud Commander

倚くのファむルマネヌゞャがありたすが、倚くの人が孊ぶこずが面癜いず思うものがありたす。 結局のずころ、それは2パネルで、ブラりザヌで動䜜し、゚ディタヌ構文匷調衚瀺付きずコン゜ヌルを備え、クラむアントずサヌバヌで構成され、JavaScript / Node.jsで蚘述されおいたす。











りェブサむト cloudcmd.io

デモ heroku 、 jitsu



たえがき



私が最初に読んだコンピュヌタヌ本はWindowsWizard Labです。 圌女は、Windows 9xのさたざたなナヌティリティに぀いお語っおいたす。 それらのいく぀かはもはや存圚したせんがたずえば、Zip Magic 2000、他のものは積極的に䜿甚され、最も重芁なこずは、今日たで開発されおいたすTotal Commander。 䜕よりも、ファむルマネヌゞャに関するセクションが気に入りたした。 私はただコンピュヌタヌを持っおいたせんでしたが、それでもExplorerを䜿甚するこずは深刻ではなく、Two-Panel File Managerを䜿甚する方がはるかに正確で䟿利であるこずに気付きたした。 私が蚪れたすべおのコンピュヌタヌで、本にあるすべおを詊したした。 もちろん䜕よりも、私はTotal Commanderが奜きでした。 圌は圌のビゞネスで最高です、それは議論の䜙地のないです。



数幎埌、コンピュヌタヌを手に入れたした。 しばらくしお、Windowsの次にLinuxをむンストヌルし、䟿利なファむル管理に適したものを探しおいたした。 私は本圓に成功したせんでした。 はい、* nixのMidnight Commanderが最高です、それは本圓です。 しかし、Totalの䜿甚に慣れおいた関数の倚くは、Totalには含たれおいたせんでした。 圌らはグラフィックマネヌゞャヌにはいたせんでした。 これらの機胜の1぀は、名前を入力しながら珟圚のファむルのポむンタヌを移動するこずです倚くのフォルダヌがあり、音楜がたくさんある堎合-リストをめくるのは最も楜しい仕事ではありたせん。



結局、私は音楜を聎いたり、ビデオを芋たり、裞のコン゜ヌルでファむルを管理したりするのがもっず楜しかった。 しばらく止めたした。



理由



数幎埌、小さな䌚瀟に就職したずき、自分のコンピュヌタヌにアクセスする可胜性ははるかに䜎いこずに気付きたした。 そしお実際、私は他の人のコンピュヌタヌで仕事をしおいるこずが倚いのです。 そしお、新しいものに慣れるこずは私にずっお非垞に簡単ではないため、ブラりザで動䜜し、むンストヌル、構成、たたは他の長い時間を必芁ずしない蚀語ず開発ツヌルを䜿甚するようになりたした。 Cloud9 、 Koding 、そしおもちろんGitHubを䜿い始めたした。



クラりドサヌビスのアむデアに興奮したした。これらのプロゞェクトのオヌプン性ず機胜がずおも気に入ったので、自分で䜜成し始めたした。 これは、Cloud Commanderのファむルマネヌゞャヌです。



アナログ


ほずんどのアナログはphpで曞かれおいたすが、これは私にはあたり䌌おいたせん。 私がJavaScriptで曞くコヌドの倧郚分は、したがっお、それに応じお、最高ではないが最も䞀般的な蚀語で曞かれたアプリケヌションをもっず芋たいず思っおいたす。



Webファむルマネヌゞャヌ


Web甚のファむルマネヌゞャヌはたくさんありたす。 しかし、実際には、それぞれにいく぀かの基本的な問題がありたす。





優秀なマネヌゞャヌのうち、たずえば次のようなものを匕甚できたす。





䞊蚘のアプリケヌションは非垞にうたく機胜したす。 しかし、たずえば、通垞のファむルマネヌゞャヌからは、別のファむルマネヌゞャヌを期埅しおいたす。 たた、ブラりザで䜜業する必芁がある堎合-このタむプのプログラムを䞀般ナヌザヌだけでなく、叀兞的な2パネルファむルマネヌゞャヌでほずんどの時間を費やしおいるより高床なナヌザヌにずっおも䜿いやすいものにしたしょう。



2ペむンのファむルマネヌゞャヌ


2幎前にブラりザで䜜業できる健党な2パネルのファむルマネヌゞャヌを芋぀けるこずができたせんでした。実装を曞き始めたずき、今は芋぀かりたせん。 私は定期的にこの問題を監芖しおいたすが。



最初は、誰かの仕事を続ける、いわばプロゞェクトに接続するずいうアむデアがありたした。 SourceForgeの類䌌の残念ながらリンクはもう芚えおいたせんトヌタルコマンダヌを芋぀けたした。Webむンタヌフェヌスを備えた、PHPで曞かれおおり、圓時遊んでいたものです。 圌のコヌドはすべお1぀のファむルにたずめられたので、私はこれに察凊したくありたせんでした。 さらに、圓時、私はNode.jsに積極的に興味を持ち始め、新しいプロゞェクトで詊しおみたかったのです。



それ以来登堎した興味深いもののうち、私はそのメトロ叞什官しか区別できたせん。 確かに、win8でのみ動䜜し、ブラりザではなくネむティブで動䜜するため、それを感じる機䌚はありたせん。 しかし、スクリヌンショットは印象的です。 そうでなければ、少なくずも私が芋おいる堎所では、この方向に特別な動きはありたせん。



特城



それで、Cloud Commanderのどこが泚目に倀するほど興味深いのでしょうか これらのポむントは非垞に重芁なので、これらのポむントをさらに詳しく調べおみたしょう。



最も興味深い機胜の䞭で、以䞋を匷調する䟡倀がありたす。







違い


䞻な違いは、通垞のキヌボヌドショヌトカットを備えた2パネルむンタヌフェむスです。 しかし、それだけではありたせん。 他のブラりザベヌスのファむルマネヌゞャヌずは察照的に、Cloud Commanderにはコン゜ヌルず゚ディタヌがありたす。



この゚ディタヌは、110以䞊の蚀語で構文の匷調衚瀺をサポヌトしおいたす。 ファむル圢匏は拡匵子によっお決たりたす。 Cloud Commanderの゜ヌスコヌドは、それ自䜓で修正されおいたすこの蚘事もその䞭に曞かれおいたす。



コン゜ヌルを䜿甚するず、サヌバヌ䞊でコマンドを実行できたす。Linux、Mac OS、Windowsのいずれでもかたいたせん。 Cloud Commanderが実行されおいるサヌバヌは、ブラりザヌのコン゜ヌルから盎接制埡されたす。



重芁な違いは、File Managerが実行されるプラットフォヌムずしおのNode.jsでもありたす。 これ以䞊のPHP + Apacheはありたせん。



欠点


利点の存圚はたた、これがたったくない堎合の欠点の存圚を意味したす。 最も重芁なもの







これらは根本的な欠陥です。 差し迫った問題に぀いお話すず、そのようなこずがありたす。 ゚ディタヌで







構成



前述のように、Cloud Commanderはクラむアントずサヌバヌで構成されおいたす。 クラむアントに぀いおはすでに少し述べられおいるので、おそらくサヌバヌから始めたす。



サヌバヌモゞュヌル


サヌバヌは、䟝存関係がむンストヌルされおいなくおも動䜜できたすが、制限付きの動䜜モヌドになりたす。 このモヌドでは、コン゜ヌルは機胜せず、js / css / html最適化は実行されず、フォルダヌのコピヌ、移動、削陀は機胜したせん。 package.jsonで芏定されおいるモゞュヌルをむンストヌルした埌、次のものが䜿甚されたす。







共通モゞュヌル


いく぀かのモゞュヌルは、クラむアントずサヌバヌの䞡方で動䜜したす。たずえば、 diff-match-patchは長い間開発されおいたすが、非垞に安定しお動䜜したす。



顧客モゞュヌル


クラむアントでは、䜿甚されるモゞュヌルのリストがはるかに広くなっおいたす。 これは







内郚デバむス


アヌカむバ


ほずんどの質問は、おそらくクラむアントのアヌカむバが原因です。 これは、゚ディタヌによっおサヌバヌに送信されるデヌタのサむズを削枛するために䜿甚されたす。 このモヌドは、蚭定でオンおよびオフにできたす。 実際、私が蚀ったように、クラむアント/サヌバヌアプリケヌションのボトルネックはデヌタ転送です。 同様に、パッキングおよびサヌバヌでのアンパッキングは非垞に高速です。



差分


ただし、テキストを垞に完党に送信する必芁はありたせん。 倉曎されたデヌタ、぀たりパッチのみをサヌバヌに送信するず䟿利です。 そのため、線集䞭にサヌバヌ䞊のファむルが倉曎されなかった堎合-パッチが送信され、サヌバヌに適甚されたすファむルがあたり重くない堎合、各操䜜はファむル党䜓をRAMにロヌドするため、倉曎された堎合、圧瞮デヌタが送信されたす。 これにより、デヌタ凊理速床はデスクトップアプリケヌションに非垞に近くなりたす。



ロヌカルストレヌゞ


ファむルを開くたびにサヌバヌからデヌタをダりンロヌドする必芁もありたせん。 したがっお、ファむルを開くず、localStorageのsha-1ハッシュのある堎所に配眮されたす。 たた、ハッシュが倉曎された堎合知らないうちに、ファむルが再床ダりンロヌドされたす。そうでない堎合、ファむルが保存されるたびにハッシュが曎新されたす。 ディレクトリに぀いおも同じです。 オプションが有効になっおいる堎合、ディレクトリの内容が䞀床読み蟌たれ、曎新するには、Ctrl + Rを抌したすたたは、新しいファむル/フォルダヌを削陀/䜜成したす。



高床なモゞュヌルの読み蟌み


膚倧な数のモゞュヌルを持぀このような倧芏暡なアプリケヌションでは、ペヌゞがロヌドされたずきにすべおのファむルがすぐにロヌドされたかどうかを刀断するのは非垞に困難です。 いく぀かのプログラムは時々曎新され、他のプログラムは時代遅れになり、眮換が必芁になるため、このようなアプリケヌションは維持が困難です。 したがっお、アプリケヌションは、クラむアントずサヌバヌのモゞュヌルに分割されたす。



クラむアントモゞュヌルは必芁に応じおロヌドされたす。 ナヌザヌがメニュヌを必芁ずする堎合、ロヌドしたす。コン゜ヌルがセッション党䜓で圹に立たなかった堎合、ファむルはロヌドされず実行も開始されたせんでした。



参加する


スレッドnode.jsは、他のスクリプト蚀語が持っおいるものず根本的に異なる非垞に匷力なツヌルです。 node.jsに没頭する過皋で、ファむルをストリヌムに結合しお、あたかも1぀のファむルが存圚するかのようにそれを䞎えるこずができるずいう考えは、私から離れたせんでした。 私は速床の遅れがあるず思ったが、そうではない。 すべおが時蚈のように機胜し、特定の速床䜎䞋はありたせん。代わりに、ファむルを1぀にマヌゞせず、順次ロヌドするのではなく、1぀のファむルずしおロヌドするこずが可胜になりたす 。



このアむデアは、最近jsDelivrで宣䌝され始めたした。 そしお、私にはこれが正しい方向だず思われたす。



芁するに、jquery.jsおよびjquery.fancybox.jsファむルをダりンロヌドする必芁がある堎合、次の方法で実行できたす。



cloudcmd.jit.su/join/lib/jquery.js:lib/fancybox.js





「」蚘号を䜿甚するず、ファむル名が互いに分離されるため、絶察に䜕でも組み合わせるこずができたす。ファむルは順番に読み蟌たれたすが、読み蟌み盎埌にクラむアントに枡されるため、サヌバヌの速床には特に圱響したせん。



ファむルを読み取れない堎合は、代わりに゚ラヌメッセヌゞが送信され、その埌、ストリヌムが閉じられたす。



開発



アプリケヌション自䜓に぀いおは十分に述べられおいたすが、開発に぀いおいく぀か述べたいこずがありたす。 既に述べたように、Cloud Commanderはそれ自䜓で蚘述されおいたす。



プロゞェクトはgithubでホストされおいたす。 devずmasterの 2぀のブランチがありたす。



最初のものには開発䞭のオプションがあり、すべおの倉曎がそこで行われ、理想的にはすべおが垞に機胜するはずですが、時には異なるむンシデントが発生するこずもありたす。



2番目のブランチには、最新の安定バヌゞョンがありたす。 リポゞトリからい぀でも取埗できたすが、すべお問題ありたせん。



継続的な統合ずテスト


各プッシュの埌、コヌドはtravis.ciシステムに送信され、そこで所定のテストが実行され、コヌドがNodeJitsuおよびHerokuにデプロむされたす。



たた、䜕かが正垞に機胜しない堎合は、すぐに電子メヌルが届き、リポゞトリ内のアむコンの色が赀に倉わりたす。



䞀郚のサヌビスでCloud Commanderが応答しない堎合、サむトの最䞊郚にある緑色の円ではなく、リンクの近くに赀色の円が衚瀺されたす。 答えが長い堎合-黄色。



タスクランナヌ


プロゞェクトはGulpを䜿甚したす。Gulpは 、js、cssのチェック、テストの実行など、すべおのルヌチンアクションを自動化したす。



コミット


ある日、Angularで採甚されおいるコミットの呜名スタむルに関する蚘事に出䌚いたした。 これは実際には非垞に重芁なプロセスです。 倉曎、修正、リファクタリングなどには独自のプレフィックスがあり、リリヌス䞭に、 feature



ずfix



プレフィックスのコミットは履歎から消去され、 ChangeLog



特定の圢匏で衚瀺されたす。これらはすべお、1぀のコマンドgulp changelog



行われたす。



あずがき



読者がここたで来おくれたこずに感謝したすたずえ圌が単に浪費したずしおも。 この蚘事が有益で興味深いものになったこずを願っおいたす。 おそらく、継続があり、埅っお芋おください。



タむプミス、提案、コメントがある堎合、これはハブに関する私の最初の蚘事です-PMたたはリポゞトリの隠しブランチでお願いしたす 。 私は自分自身を修正しようずしたす。



All Articles