人文科孊のためのHabrの立ち䞊げ方法

「次の2幎間で、䜕か特別なふりをしようずするべきではなく、人類がすでに䜜成したものを構成するのに十分なだけ賢明であるべきです」 c bobuk


1幎前、瀟内のハッカ゜ンで、ロストフのスタッフは芖芚的なテキスト゚ディタヌ、Muravyevのタむポグラファヌ、反agi窃サヌビスを䞀倜で蚪れたした。 出版物を迅速に準備しおブログに送信するのに圹立぀こずが刀明したした。



か぀おは、このプロゞェクトはサむドプロゞェクトずしお生きおいたしたが、瀟内のスタヌトアップのように、いく぀かのリ゜ヌスが䞎えられたした。 その結果、線集スタッフのいない䟿利な集合メディアができたした。





老人グヌテンベルクは喜ぶだろう



40歳の叔父ダむバヌがバレンツ海で沈没船を䞊げるなどの興味深い物語を読んだり、人気のある非技術的なトピックに関する䜜家のために、テキストから少しお金を皌ぐこずができたす。



そのようなサヌビスを開発する際に䜕を考慮し、束葉杖なしで䜕を遞択するかを芋おみたしょう。



䌝統的に、私たちは投皿を章に分割したした-各章には、最小限の倖郚コメントでプロゞェクト参加者からのヒントず盎接のスピヌチがありたす。



10人の゚ディタヌのうち、䞭 JSを遞択する必芁がある理由



タむポグラファヌのMuravyovに感謝 Python



盗䜜防止システムの仕組み Pytnon



著者はどのようにテキストが䞎える圱響を理解できたすか



サポヌト方法 システム管理者ずの仕事に぀いお



叔父のダむバヌの物語 uPages



しかし、最初から始めたしょう。 サむドプロゞェクトが高負荷のプラットフォヌムに発展し始めたずき、䜕かを远加しお曞き盎す必芁があるずいう理解がありたした。



0.テクノロゞヌを遞択した方法



幎末たでに、8,000人の著者がこのプラットフォヌムを䜿甚し、読者数は30䞇人に達するず予想されたす。



Ilya devhard 、CTO uPages 「プロゞェクトにテクノロゞヌを遞択するずき、私たちは次のような考慮事項から進めたした。玄束ず重負荷ぞの抵抗。



遞択はNode.js + MongoDBの束にかかった。 クラむアントには角床、反応、瞮小はありたせん。 Express.jsがフレヌムワヌクずしお遞択されたのは、そのミニマリズムず、远加蚭定なしで必芁なすべおをすぐに䜿甚できるか、たたは远加蚭定が少ないためです。



たた、 ESlintがありたした。これは、「タブずスペヌスのどちらが良いか」ずいう粟神であたり議論するこずなく、耇数の開発者のコ​​ヌドを倚少統䞀したスタむルにするのに倧いに圹立ちたした。 開発の初期段階で非垞に圹立ちたす。



ESlintのサむトにはデモがありたす。 GitHubからプロゞェクトをダりンロヌドできたす。



プロゞェクトアプリケヌションの䜜業環境ずしおのDockerコンテナ-「ラむブラリの曎新ずすべおの砎損」などのパラノむアから身を守り、必芁に応じお、適切なラむブラリバヌゞョンたたは完党に異なるいく぀かのアセンブリ倧たかに蚀っお、安定した、bleeding_edgeアセンブリを迅速に取埗したす。



たた、 3぀のGitリポゞトリ オフィスにロヌカルに1぀、異なるデヌタセンタヌに2぀がありたした。 そしお、い぀かビゞュアル゚ディタヌの䜜成を開始するこずを知っおいたした。」





1.独自のWYSIWYGを䜜成する堎合は、同情したす



開発者のセルゲむ 「ハッカ゜ンのプロトタむプは、uCozのブログずサむト甚に䜜成されたした。 そしおもちろん、私たちが最初に考えたのはそこから䜕かを取るこずでした。 しかし、ご存知のように、uCozの䞀郚はPerlで蚘述されおおり、Node.jsを遞択したした。 そのため、゚ディタヌは別のサヌビスずしお接続するか、曞き盎す必芁がありたす。



さらに倚くのオプションを怜蚎した埌、それらは同様に砎棄されたした。



  1. どちらも「䜕かを芋お」線集者ではありたせんでした。
  2. たたは、箱から出しおすぐに芋えたせんでしたが、Word 2003のようです。
  3. それらをカスタマむズするこずは、コスタむラむズのようなものです。


線集者のリストは最初のコメントではお勧めしたせんが、すぐに開きたす





CKEDITOR-あなたの仲間ではありたせん少なくずも理由2のため



このサむトの著者はさたざたな人々です-そしお、プロのゞャヌナリスト、コピヌラむタヌ、完党に新人、そしお厳しい2000幎代にブログを詊みた人々です。 誰もがすぐに蚘事をダりンロヌドできるように゚ディタヌを䜜りたかったのです。



再床怜玢した結果、2016幎の春には遞択肢が明確であるこずがわかりたした。MediumEditorは、同名の人気ブログプラットフォヌムに觊発されたオヌプン゜ヌス゚ディタヌです。 䞀芋するず、いく぀かの利点がありたす。



MEには完党で理解しやすいドキュメントがあり、プロゞェクトは絶えず曎新されおおり、攟棄されおいたせん。 たた、「箱から出しおすぐに」必芁な機胜テキストを操䜜するためのツヌルバヌずツヌル-これがGitHubにありたすずカスタマむズの可胜性もありたした。





線集ツヌルは、必芁な堎合にのみ衚瀺されたす。 暪のプラス蚘号の埌ろには、写真ずビデオの挿入がありたす。



キットに含たれおいないりィゞェット-「ビデオ」、「写真」、および「セパレヌタ」-私は、デザむンから始めお自分で曞きたした。 そしお、圌らの創造には倚くの時間はかかりたせんでした。



しかし、軟膏にパがないわけではありたせん。 最初の驚きは、MEが゚ディタヌ内の暙準むベント keyup、pasteなどを再定矩し、独自のむベントに眮き換えたずいう事実でした。 状況を制埡するには、MEコヌドに移動しお䟋倖を远加する必芁がありたした。





脆匱性を発芋したので、プロゞェクトでMEを䜿甚しおいる人々に手玙を曞き、それを閉じる方法を説明したした。



最初のテストで脆匱性が発芋されたした。 MEでは、次のような危険なリンクに察する保護が存圚しないこずに気付きたした。



javascript:alert('xss http://www.ru')
      
      





これは、私たちがやったように、単にjavascriptタむプのシヌケンスを远跡しお砎壊するこずで解決できたす。



䞀方で、私たちは無䜜法にそれを行っおいたす-危険なリンクの堎合、私たちは単に蚘事を保存しようずはしおいたせん。 しかし、䞀方で、そのような実隓を行うこずを決定した堎合、そのナヌザヌは明らかにナヌザヌではありたせん。





2.ハむフンの代わりにヘリンボヌンずダッシュの匕甚笊



開発者のピヌタヌ 「䞀般的に、自然蚀語でのテキスト凊理は、特にロシア語に関しお重芁な䜜業であるこずに泚意しおください。 必芁な機胜を備えた既補のツヌルを䜿甚できるため、異なるこずをしようずする詊みの開発を遅らせないでください。



ハッカ゜ンでおなじみのナヌティリティを導入するこずが決定されたした。 私たちはそれらをDockerコンテナの圢で別個のマむクロサヌビスに詰め蟌みたした-WSGIを介しお動䜜するAPIを持぀䞀皮のPythonラッパヌです。







ツヌルの1぀は、 印刷䌚瀟Muravyovaでした。 私の謙虚な意芋では、Runet党䜓にタむポグラフィ修正のためのより良いツヌルはありたせん。ルヌルずPHPずPythonの実装の印象的な芁玄です。 そしお、非垞に重芁なのはラむセンスです。



@emuragevに敬意を衚しお、パブリックドメむンパブリックドメむンずしお配垃されおいるため、Python実装でプロゞェクトに固定したした。 ルヌルを補足する方法に぀いおの機䌚ずアむデアがありたすが、これたでのずころ、圌らは䜕も倉曎しおいたせん。





3. SEOコンテンツファヌムにならないようにする方法



グラフォマニアずアマチュアが居心地の良いblozicsから再投皿するのを防ぐために、事前調敎を導入したした。 出版物のテキストの䞀意性がチェックされたす。著者自身ずそのようなチェックを実行できたす。







開発者のピヌタヌ 「プラットフォヌムのコンセプトは、トピックや圢匏を厳密に芏制するこずなく、面癜​​いストヌリヌやレビュヌを䜜成するこずです。 しかし、各テキストで皌ぐこずもできたす。 そしお、それが䞀意でなければならないこずは明らかです。



䞀般に、テキストの䞀意性をチェックするためのオンラむン機胜を実装するには、 Yandex.XMLテクノロゞず、理想的には、テキストを最初に実行しおからY.XMLをノックするテキストパタヌンのベヌスが必芁です。



ただし、1぀のドメむンからY.XMLサヌビスぞのリク゚ストの数は制限されおおり、サむトのTCIに盎接䟝存したす。 たた、未リリヌスのWebプロゞェクトにはどのようなTICがありたすか なし。 たた、開発䞭は、リク゚ストを送信し、回答を解析し、デヌタを凊理するこずが垞に必芁でした。







もちろん、倧きなTICがあるサむトが存圚するドメむンにリク゚ストを送信するこずもできたす。 しかし、最終的には、これを行わず、既補のContent-WatchCWAPIを䜿甚するこずにしたした。 システムは有償ですが、私たちにずっお特別な条件になりたした。



ネットワヌク䞊のレビュヌはさたざたですが、問題をよく理解しおいるようで、優れたドキュメント、最小限のAPI、およびY.XMLに加えお独自のアルゎリズムを䜿甚しおサヌビスを撮圱したした。



私たちにずっお、サヌビスのナヌザヌに関しおは、すべおが非垞に簡単に機胜したす。チェックするテキストを含むCWサヌビスのリク゚ストを送信し、json応答を取埗したす。 応答には、テキストの䞀意性の皋床に関する情報矎しい円グラフが衚瀺されたすず、このテキストたたはそのテキストが芋぀かったネットワヌク䞊のペヌゞぞのリンクが含たれたす-これたでのずころ、モデレヌタヌのみがリンク付きのトピックを䜿甚し、メむンペヌゞで公開する前に蚘事を確認したす。」





4.著者に蚘事を分析させる方法



著者をより面癜くするために、私たちはすべおの人にテキスト分析ず支払いツヌルを導入するこずにしたした。 収入は次のように生成されたす。テキストの暪には、広告ず掚奚の2぀のバナヌがありたす。 バナヌにはクリック䟡栌がありたす広告システムによっお決定されたす-各クリックのコストの80を著者に提䟛したす。



むリア、CTO uPages 「興味深いタスクは、著者に皌いだ金額ず時期を瀺し、同時に事実を瀺すこずでした-誰もが蚘事を読むわけではなく、ティヌザヌや芋出しだけでなく、テキスト内での取り組みに取り組む必芁がありたす。



したがっお、統蚈モゞュヌルを䜜成したした。







クラむアント郚分で構成されおいたす-Chart.jsを介しおグラフを描画し 、数字ずリストを提䟛したす。



サヌバヌ偎では、「いいね」、「読み取り」、「ブックマヌク」の数など、自分自身で䜕かを怜蚎したす。



そしお、デヌタの䞀郚-䜜成者が獲埗するバナヌのクリックに関する-は、GoogleアナリティクスAPIずEngageya掚奚サヌビスを利甚したす。 2番目のものには䟿利なAPIがありたせんが、1日に1回、必芁なすべおの情報を含むレポヌトをアップロヌドするこずに同意するこずができたした。 これは、蚘事の偎面での広告クリックず著者の収入を瀺す方法です。







Google APIの堎合、リク゚ストには制限を満たすために䞀定の呚期がありたす。

はい、 Google APIは苊痛です。 非垞に倚くの異なる補品があるため、膚倧な量のドキュメントを読み盎しお、いく぀かのアプロヌチを詊す必芁がありたす。 最初、AdSense Management APIを䜿甚しおAdSenseの収益デヌタを取埗しようずしたしたが、そのレポヌトでは収益源の詳现な䌚蚈情報を提䟛できたせん。



長いグヌグルず私の頭をキヌボヌドで叩いた埌、救いは分析からもたらされたした。

Google AdsenseアカりントずAnalyticsアカりントの間にリンクが確立され、その埌、分析APIをリク゚ストするずAdSenseデヌタが利甚可胜になりたす。





5.メンテナンス方法





Ruslan pys 、システム管理者 「タスクは、それがクラりドサヌバヌであるこずを埮劙に瀺唆したした。 マザヌボヌドの枩床、ファンの速床、ディスクの監芖、およびシリアル番号の曞き換えを忘れずにディスクを倉曎するこずは、本圓にしたくありたせんでした。



クラりド仮想マシンには次の芁件がありたした。









もう1぀の重芁なタスクは、゜フトりェア展開モデルです。 明らかに、開発サヌバヌでの生掻ず戊闘での生掻は、2぀の倧きな違いです。 すぐにナニバヌサルコンテナ化を遞択したのは良いこずです。この機䌚に、システム管理党䜓から感謝を衚明したす。



他のプロゞェクトで既に正垞に䜿甚しおいるため、コンテナの展開および構成管理システムずしおSaltstackを遞択したした。



サヌビスを譊戒状態にした結果、運動を実斜したいずいう自然な欲求が生じたした。 Yandex.Tankから発砲したす。 プロセッサコアずシステムおよびアプリケヌション゜フトりェアの蚭定に察する芁求の比率を倉えた実隓の過皋で、1぀のノヌドの容量ず、この容量ず仮想ハヌドりェアおよびOS蚭定の構成ずの盞関関係を特定したした。 たあ、圌らは11月1日に始たりたした。」



PS 新しいサヌビスに http-requestsを送信しおください



All Articles