音声で蚘事を読むポッドキャストでの同期を䌎う1幎間のブラりザヌ拡匵機胜の構築方法

サヌドパヌティのAPIを䜿甚しお、読みたいテキストから音声を取埗しようず䜕床も詊みたした。目が疲れたずきに読み䞊げを耳に切り替えたり、コミュニティで聞いたりできたす。 これだけではないこずを知っおいたす。ITから遠く離れおいる人でも、どこかでテキストをダりンロヌドしおmp3をダりンロヌドできたす。 そしお、ポッドキャスト/オヌディオブックの人気が高たり、音声むンタヌフェヌスも増えおいたす。 明らかに、オヌディ゚ンスがいたす。数十䞇人のナヌザヌが、このトピックに関するChrome垂堎で最高の拡匵機胜を持っおいたす。 しかし、圌らは通垞、Amazonからの声 Googleの新しい声よりも優れた最高の声を持たず、他に䜕もない堎合、たずえば、拡匵機胜で聎く機胜だけでなく、ポッドキャストに远加したす。 圌は瀟内のプロゞェクトのアむデアを提案したした-承認されたした-開発が始たりたした。

画像





ブラりザの拡匵機胜は、倚くの人に愛されおいるナニヌクな珟象です。゜フトりェア配垃の他の方法には、クラむアント郚分を「暡倣する」ための同様のメカニズムがありたせん。 たずえば、Evernoteデスクトップクラむアント-フォントを倧きくするこずはできたせん。ダヌクテヌマを䜜成するこずはできたせん-䞀郚バむナリファむルず䞀郚CSSをハッキングする堎合のみ-クラむアントの゚ディタヌはWebテクノロゞヌを䜿甚したす。 最近の私のGoogle怜玢は次のようになりたす。

拡匵機胜プレビビュヌ付きのGoogle Serp

いく぀かの拡匵機胜がありたす-ダヌクテヌマ、画像付きの2぀のプレビュヌメむンプレビュヌずペヌゞ、JSなしでマりスをホバリングしおプレビュヌをiframeに読み蟌む-これにより読み蟌みが速くなり、スクリプトなしで動䜜するサむトを確認し、残りのすべおを理解するのが面癜いアニメヌションは玔粋なスタむルで䜜成されたす。 たた、これらの拡匵機胜はストアから怜出およびむンストヌルされたした-スクリヌンショットず䜕らかのセキュリティチェックがありたす-぀たり、各サむト/サヌビスはアドオンが暗黙的に存圚する環境に存圚したす。 人気のあるサヌビスがどこか䞍快な堎合、コミュニティは、耇数のサヌビスからのデヌタが1぀のペヌゞに衚瀺されるずきに、meshapたで倉曎を行いたす。 DOMサヌビスの所有者たたはCSSクラス名を倉曎するず、 誰かのワヌクフロヌを壊す可胜性がありたす 。



userscryptずuserstyleのおかげで、サむトの倖芳ず機胜を倉曎するこずができたす-私たちの倚くは、日垞䜿甚サヌビス甚に独自のカスタムシャヌプナヌを持っおいる方が楜しい堎合がありたす。 たずえば、Macでは、䜜者が気を぀けなければFinderを暗くするこずはできず、テヌマ蚭定のためのサヌドパヌティのハッキングが機胜しなくなるこずを確認したした。 ブラりザのすべおがオヌプン゜ヌス-さたざたな蚀語をバむナリにコンパむルできるWebAssemblyを埅぀たで。



数幎前、Firefoxの最初の拡匵機胜を実行したした。Yandexを介した翻蚳者はいたせんでした。 DOMペヌゞを詰たらせないように、システムのポップアップりィンドりに翻蚳を衚瀺したした。

firefox yandex翻蚳

うたくいきたした。 ピヌク時、8kナヌザヌを少し超えお、グラフィックスの枛少-拡匵機胜が機胜しなくなったFirefox 57以降

YandexTranslateのfirefox統蚈

長い間探しおいたせんでしたが、今日は叀いブラりザで100人ず思っおいたした。 その経隓の肯定的な評䟡ず良いレビュヌが動機付けを远加したした。

ギタブ・メニュヌ

この拡匵は、非営利の個人的なペットプロゞェクトでした-瀟内のむンキュベヌタヌの最初の経隓ず拡匵は商業的に成功するはずです。 補品の䞭心にあるのは、利甚可胜な最高の音声からテキストぞの生成サヌビスであるAmazon Pollyです。 Googleは最近、合成をリリヌスしたした。WaveNetは広告の人のように聞こえたしたが、実際には品質が悪く、 4倍も高䟡でした。



バック゚ンドの最初のバヌゞョン、たたはロヌカルマシンの最初のプロトタむプは、ビルトむンサヌバヌ䞊のPythonで䜜成されたした必芁な堎合は、フレヌムワヌクに進む前にビルトむンを知るこずは興味深いです。 䞻な「問題」は、テキストをチャンクに分割するこずでした-1,500文字の制限すべおのテキスト読み䞊げAPIにはほが同じ制限がありたす。 最初のプロトタむプは数週間で完成したした。





ほずんどすべおの準備が敎っおいるように芋えたした-たあ、UI、サむト、他のもの、そしお倚くのナヌザヌがいるでしょう。



メむンのタヌゲットプラットフォヌムは、明らかに人気のあるGoogle Chromeになりたした。 圌は自分のWebExtensionsがどのように機胜するかを研究し始めたした。 最終的には、このフォヌマットがサポヌトされおいるFirefox 57に登堎したばかりであるこずがわかりたした。぀たり、ChromeずFirefox、さらにはOperaのEdgeでもコヌドを1぀曞くこずができたす。 うわヌ、私の叀い拡匵機胜はFirefoxでしか機胜したせんでしたが、珟圚はバヌゞョン57たでです。最近、Google Chromeの拡匵機胜を開発したこずがあるなら、今日のFirefoxで動䜜する可胜性が高いです。 そしお、拡匵機胜の䜜者がこれに煩わされなかったずしおも-アドオンアヌカむブをChromeストアからダりンロヌドしおFirefoxにむンストヌルできたす-私は、Firefoxの60バヌゞョンから、WebExtensionsの実装が安定し、倚くの子䟛たちの問題を取り陀いたず蚀えるでしょう。



最初は、いわゆるポップアップUIでサりンドを再生したした-これは拡匵ボタンをクリックしおむンタヌフェむスが衚瀺されたずきに衚瀺されたすが、このりィンドりが閉じるずすぐに衚瀺されたす-この通垞ペヌゞはメモリからアンロヌドされ、サりンドの再生が停止したす。 OK、ペヌゞスペヌスから再生したす-これは分離された䞖界ず呌ばれ、DOMのみが拡匵機胜を䜿甚しおいたすが、オリゞンは拡匵機胜のたたです蚭定時にペヌゞぞのアクセス暩を芁求しない堎合。 音もクロヌズド゚クステンションで再生されたしたが、ここで実際にコンテンツセキュリティポリシヌを知った-私はメディアで再生したせんでした-それはメディア芁玠がどこから来たのかを明確に瀺しおいるこずが刀明したした。 あなたがプレむできる3番目の堎所-背景/むベントペヌゞが残っおいたす。 各拡匵機胜には3぀の「ペヌゞ」があり、メッセヌゞず通信したす。 むベントペヌゞずは、拡匵機胜が必芁な堎合にのみメモリ内に存圚するこずを意味したす。たずえば、むベントに応答クリックし、数秒間存続し、アンロヌドしたすService Workerず同様。 Firefoxはこれたでのずころ、バックグラりンドペヌゞのみをサポヌトしおいたす-拡匵機胜は垞にバックグラりンドにありたす。 むンストヌルされおいるすべおの拡匵機胜を確認したした。むベントに機胜的に反応するだけですが、最も有名なものはEvernote Clipperです。 私はそれを拒吊するこずはできたせんが、むンストヌル埌、ブラりザは明らかに遅くなりたす。 開いおいるすべおのペヌゞに倚くのコヌドを埋め蟌みたす。 おそらく、ボタンをクリックしたずきの応答が速くなりたすが、グロヌバルブレヌキングはそれを正圓化しないず思いたす。 私はそれに぀いお曞いた。



圌らは、あなたのプラむベヌトなGoogleドキュメントにさえコヌドをペヌゞに挿入したす-拡匵機胜を備えた各マヌケットプレむスには、自動および手動のセキュリティコヌドチェックがありたす。 私が理解しおいるように、Chromeでは、チェックは自動的に行われたす-人々は譊告だけを芋お、Firefoxは垞に芋たす-そしお時々私はブログでこのポゞションの新しいボランティアを探しおいる広告を芋たす。 Opera-ビルドを再珟する方法の説明ずずもに、開発者向けのコヌドを添付する必芁がありたす。 Operaの䞀般的な問題-レビュヌは非垞に遅く、䟋えば、私たちの拡匵機胜は数ヶ月間埅ち行列にありたした-そしおただ店を去っおいたせん。 それにもかかわらず、ある日、Operaの誰かがアドオンのセキュリティをチェックし始めたした-収集されたアヌカむブのハッシュが私が提䟛したアヌカむブのハッシュず異なるため、赀信号を出したした。



Chromeストアでは、数か月間の拡匵機胜を削陀し、考えられる理由に぀いお暙準的なメヌルを送信したした-補品の説明がありたせんでした。 私たちは圌らに手玙を送るたびに、さらには電話をしたした。

画像



Edgeは、い぀ものように-䜕かが動䜜したせんでしたが、 devtoolsは開かず 、Windowsプレリリヌスビルドを詊みたした-同じこずはStackOverflowに尋ねたした -答えはありたせん。



サりンドを再生しおも拡匵機胜のアンロヌドが劚げられないずいう問題に盎面したした-それはバグを匕き起こし、面癜い回避策を曞きたした



function _doNotSleep() { if (audioCurrent) { setTimeout(_ => { // only some http request, neither console.log() nor creating obj fetch(chrome.runtime.getURL('manifest.json')); _doNotSleep(); }, 2000); } }
      
      







䞊行しお、サヌバヌ偎で䜜業が行われたした。 開発者でもあるメンタヌはこのプロゞェクトではコヌドを䜜成したせんでしたが、埓来のサヌバヌの代わりにデヌタベヌスAmazonのNotOnlySQLおよびLambdaにDynamoDBを䜿甚するように説埗したした。 今日、私はラムダを楜しんでいたす-これらは仮想マシンRed HatベヌスのAmazon Linuxであり、むベント、私の堎合はAmazon API Gatewayを通過するHTTPリク゚ストで実行されたす。 今日を思い出すのは面癜いですが、最初はラムダがEC2ではないこずを理解しおいなかったずきに、Pythonサヌバヌを䜿甚しおHTTPを凊理しようずしたしたが、ゲヌトりェむAPIを介しおラムダがむンタヌネットに接続されおいるこずがわかりたした-぀たり、各リク゚ストに察しお個別のサヌビスがコンテナヌを呌び出すこずがわかりたした。 HTTPに加えお、ラムダは他のむベントたずえば、デヌタベヌスの曎新やS3ぞのファむルの远加で起動できたす。 負荷が数癟倍に増加する堎合-数癟のラムダが同時に起動される堎合-スケヌラビリティは、このテクノロゞヌのセヌルスポむントの1぀です。 ラムダの寿呜は最倧5分です。 コンテナは垞に1぀のリク゚ストのみを凊理し、コンテナは次のリク゚ストに自動的に再利甚される堎合ずされない堎合がありたす。 これはすべお開発スタむルに少し倉化をもたらしたす。 ステヌトレス-ハヌドドラむブ半ギガバむトは䞀時ファむル専甚ですラップトップのハヌドドラむブもステヌトレスである必芁があり、デヌタの損倱による被害が最小限に抑えられるように長い間生きおきたした-クラりド内のすべおの状態、gitの蚭定。 びっくりしたしたが、今ではこのような小さな補品に既に十数個のラムダが䜿甚されおいたす。 これらのマむクロサヌビスを分離するず、コヌドが簡単になりたす。このリスト画面はマむクロサヌビス党䜓であり、このコヌド画面は2番目の独立したマむクロサヌビスです。 カップリングを倱うこずが良い理由を理解しおいたす。

AWSラムダ分析



ラムダは人気を博しおおり、Google CloudずMicrosoft AzureおよびOpenstackには独自の類䌌物がありたす。 ファヌムりェアは自動的に曎新されたす-セキュリティの曎新ずPythonの曎新は独自に行われたす。 他のプロゞェクトでは、サヌバヌの瀟内でたずLambdasを怜蚎したす。 個人的なマむクロプロゞェクトの問題に぀いおは、ラムダは数セントの費甚がかかるため優れおいたす。たずえば、月に䞀床自動的に䜕かを開始する必芁がある堎合、ラムダは良い解決策になりたす。 高負荷の堎合、EC2のコストは䞋がりたすが、スケヌリングやその他のメンテナンスに問題がない堎合です。



DynamoDBは機胜したすが、それに぀いお蚀うこずは䜕もありたせんデヌタベヌス党䜓はわずか数メガバむトです。 圌らは自動的にスケヌリングするこずを玄束したす。 ベヌスは人気があるため、たずえば茞出甚の倚くの既補ツヌルがありたす。 さらに、たずえば、Postgresを開く前に-API Gatewayを介しおDynamoDB APIに盎接接続できたす-侭間Lambdaなしで、むンデックスおよびテヌブル列のレベルでアクセスポリシヌを蚭定できたす。 ナヌザヌメヌルテヌブルキヌは怜蚌枈みのトヌクンから取埗されたす-ゲヌトりェむAPI自䜓が以䞋をチェックしたす

AWS apigatewayオヌ゜ラむザヌコグニト



Lambdaを䜿甚せずにHTTP゚ンドポむントを䜜成する堎合、Apache Velocity構文を䜿甚しお、APIを含むAmazonサヌビスぞの入力リク゚ストを蚘述し、出力構造を倉曎できたす。たずえば、デヌタベヌスを曎新したす。



 #set( $unixtime = $context.requestTimeEpoch / 1000 ) { "TableName": "history", "UpdateExpression": "SET isNew = :isNew, updated = :updated", "ExpressionAttributeValues": { ":isNew": {"BOOL": $input.body}, ":updated": {"N": "$unixtime"} }, "Key": { "email": {"S": "$context.authorizer.claims.email"}, "utc": {"N": "$input.params('id')"} } }
      
      





ゲヌトりェむを゚クスポヌトするずき、このコヌドが1行で保存され、゚ンドポむントに関する他の情報ず混同し、゚クスポヌトごずに行の䞊べ替えが倉曎される可胜性がありたす-Gitaで混乱が圢成されるため、そのようなコヌドの倉曎を远跡するのはより困難です





拡匵りィンドりが開くたびに、リク゚ストが「サヌバヌ」に送信されたす-履歎ずステヌタスリスニングされおいるかどうかを同期するため-ゲヌトりェむAPIをDynamoDB HTTP APIに盎接。



拡匵機胜をむンストヌルする際にアクセス蚱可は必芁ありたせん-珟圚のDOMを操䜜しおサヌバヌに送信するだけであればアクセス蚱可がなくおも、公開時にどのセキュリティスキャンが探しおいるかを掚枬できたす、これらは必芁ありたせん。 認蚌のために芪サむトず通信するためのアクセス蚱可を入力する必芁があるず思いたした-しかし、うたくいきたした-Amazon Cognitoからid_tokenが芋぀からない堎合、りィンドりを開くず、API Gatewayにリク゚ストが行われるずいうアむデアを思い付きたした-> state_on_tokensテヌブルがチェックされるLambda 、もしあれば、トヌクンが返され、テヌブル内のこのレコヌドが削陀されたす。



HTMLからのテキストはサヌバヌLambda䞊でのみ取り出されたすが、これにより、ブラりザヌおよび文字からテキスト/ HTMLを受信するずきに単䞀のマむクロサヌビスを䜿甚できたす。 人気が出お負荷が増えるず、クラむアントラむブラリがありたすでテキストを取り出すこずが可胜になり、より高速に動䜜する可胜性がありたす。



テキストずHTMLは保存せず、受信したサりンドのみをS3に保存したす。 各ナヌザヌには独自のフォルダヌがありたす。 蚘事を远加するずき、同じハッシュを持぀サブフォルダヌがあるかどうかを確認し、ある堎合はサりンドを再利甚したす。 2぀の同䞀の蚘事を远加するこずは可胜ですが、おそらく将来、ハッシュが䞀臎する堎合に譊告するでしょう。



テキストを远加したり読んだりする拡匵機胜に぀いおは、個人のポッドキャストフィヌドず同期するのが論理的であるこずに同意したした-もちろん、私も自分でサヌビスを行うので、そのような機胜が必芁です。 今日の最高のmp3に加えお、より効果的なaacを䜿甚できるこずが刀明したした。Androidは4番目のバヌゞョンからそれを再生したす。 1か月の間、圌はoggチャンクを単䞀のファむルにステッチするさたざたな方法で忙しく、ffmpeg、libav、その他を詊しお、Amazonずプロゞェクトバグトラッカヌに察応したした-音は欠陥で刀明したした。 私は奜きなように、最小限の゜リュヌションで停止したした-個人的なものはありたせん-1぀のバむナリプログラムはoggをwavにデコヌドし oggdec 、パむプの2番目はaacを゚ンコヌドしたす fdkaac  -Pythonはシェルコマンドを実行したす

 f'''cd /tmp; curl {urls} | /var/task/oggdec - -o - | /var/task/fdkaac -m5 - -o {episode_filename} --title="{title_escaped}" --artist='Intelligent Speaker' --album-artist='Intelligent Speaker' --album='Intelligent Speaker' --genre='Podcast' --date='{date}' --comment='Voiced text from {url_article or "email"}' '''
      
      





--commentsには、元のペヌゞぞのリンクがありたすテキストがメヌルで送信されなかった堎合 -iOSでは、組み蟌みのポッドキャストプレヌダヌがリンクの背埌にあるものを簡単に衚瀺できるこずがわかりたした 。



ナヌザヌが蚘事が远加されたずいう回答を受け取ったずき-実際、ナヌザヌがマりスを再生ボタンに移動しおいる間に、HTMLからテキストを取埗し、このテキストのハッシュリンクずしお機胜したすを返したした-サりンドは合成されたたたです。 私が蚘事を聎き始めたずき、おそらく音声はテキスト党䜓に察応しおいなかったので、巻き戻し䞭に埅たなければならない堎合がありたす。 サりンドの最埌のチャンクをレンダリングした埌、このチェヌンで別のLambdaが起動されたす。これにより、ポッドキャスト甚のm4aが生成され、フィヌドxmlファむルが倉曎されたす。



ラムダには、ペむロヌドを別のラムダに転送する際の制限がありたす -わずか128キロバむトです。 䟋倖ハンドラが曞きたした-別の䞭継バケットを䜿甚しお、ファむルのハッシュをサりンド合成ラムダに送信したす;バケットは、1日でファむルを削陀するポリシヌで構成されたす最小倀。



音を゚ンコヌドするためにAmazon Elastic Transcoderを怜蚎したしたが、そこの音は静的ビットレヌトでしか埗られないこずに驚きたした-そしお、より良い圧瞮のために動的が欲しかったです。 圌はサポヌトする手玙を曞きたした-そのような基本的なオプションがない、どうしお別の堎所にある、たたは私が䜕かを理解しおいなかったのでしょうか 圌らは、゚ンコヌディングは本圓に静的であるず答えたした

画像



倧量のテキストがある堎合5分間の安䟡なラムダでは䞍十分な堎合がありたす、したがっお、最倧CPUを蚭定したす-䞀床に6時間を゚ンコヌドするのに十分です。



各ナヌザヌはEvernoteのようなむンバりンド電子メヌルを持っおいたす-電話で面癜い蚘事が衚瀺されたす-メヌルプログラムを調べおリンクたたはテキストを任意のプログラムから私のアドレスに送信し、ポッドキャストでプログラムに切り替えたす-新しい゚ピ゜ヌドはすでにここにありたす-プレむを開始し、ひねり続けたす雪の䞭でペダル。 これは、RSSからの新しい投皿ごずにメヌルを送信するサヌドパヌティのサヌビスを䜿甚できるこずを意味したす。これは、ポッドキャストずしおブログを賌読できるこずを意味したす。 この拡匵機胜はただ携垯電話では機胜したせん。ただし、AndroidのFirefoxおよびYandexBrowserは拡匵機胜をサポヌトしおいたすが、ボタンが機胜しないUIのみが衚瀺されたす。 たたは、iOS向けのプログレッシブWebアプリがネむティブプログラムのように凊理されるのを埅ちたす。 着信メヌルはすでにそのような機胜を提䟛しおいたすが、送信されたメヌルにはただリンクがありたす。



クラむアントで怜玢を実装するずきに、Chromeの譊告に遭遇したした。 違反長時間実行されるJavaScriptタスクにはxxミリ秒かかりたした 。 たあ、そこでは䜕かがゆっくりず働いたが、批刀的ではなく、倧䞈倫、私は掘っお、矎しいChromeプロファむラヌを研究するこずにした。

Google Chromeプロフアむラヌ

倚くの操䜜、再描画、それが遅くなりたす。



必芁なノヌドのクラスをフィルタリングおよび倉曎するず、これが発生するこずがわかりたした。

 search.addEventListener('keyup', function() { for (const node of nodes) if (node.innerText.toLowerCase().includes(this.value.toLowerCase())) node.classList.remove('hidden'); else node.classList.add('hidden'); });
      
      





さお、あなたは䜕ができたすか、しかし、倧げさなアプロヌチを詊みるために私に指瀺がありたした

 search.addEventListener('keyup', function() { const nodesToHide = []; const nodesToShow = []; for (const node of nodes) if (node.innerText.toLowerCase().includes(this.value.toLowerCase())) nodesToShow.push(node); else nodesToHide.push(node); nodesToHide.forEach(node => node.classList.add('hidden')); nodesToShow.forEach(node => node.classList.remove('hidden')); });
      
      





より倚くの操䜜、より倚くのコヌドがあり、䜜業がはるかに高速になりたした。

画像

ここでは、実際にブラりザヌが実行する操䜜がはるかに少ないこずがわかりたす。



補品を開発する際の最善の決定の1぀は、削陀埌にフィヌドバックフォヌムを衚瀺するこずです。 通垞のGoogleフォヌムを䜿甚

Googleフォヌムスプレシッドシヌト



サむト/着陞を泚文したした-圌らのポヌトフォリオはきれいでした。 しかし、他の人が私たちのサむトをやったこずが刀明したした

むンテリゞントスピヌカヌの最初のサむト



䌌たような補品が1぀ありたした。私ずマヌケティング担圓者は、サむドぞのメむンリンクが機胜しない状態で圌のWebサむトを笑いたした。 それで、私たちはこの蚭蚈で数ヶ月間生きたした。 次に、メンタヌは別のチヌムに別のサむトを泚文するこずにしたした。



むンテリゞントスピヌカヌサむト新

これが珟圚の倖芳です。 完璧ではありたせんが、改善する必芁がありたすが、アゞャむルアプロヌチが奜きです。最初に䜕らかの方法でそれを行い、次に改善を行い、それから少し改善したす。 䜕が改善できるのかわからないからです。 この蚘事を曞く理由の1぀は、フィヌドバックを埗るためです。



Larryからのフィヌドバックは本物です。圌は補品たたはAmazonの声がずおも気に入ったので、圌の新しい本にロゎを付けたした。 人々が校正蚘事を曞いたり、耳で読んで異なる角床から感じるずきやディスレクシアにむンテリゞェントスピヌカヌを䜿甚しおいるこずに驚きたした。 たずえば、アメリカのコヌチから、今すぐ歌詞を聞くのは玠晎らしいずいう感謝の手玙が届いた。



ホスティングのために、サむトはもずもずGitHubによっお遞択されたした-私はすでにドメむンを远加する機胜を䜿甚しお静的サむトで䜜業した経隓がありたした。 しかし、刀明したように、SSL蚌明曞を䜿甚しおドメむンをGithubに保持するこずは䞍可胜です。 今日は既に可胜ですが 今月から、2017幎にGitLabに移行したした。 私の人生で最初のciを曞いお、サむトが1぀のフォルダヌから別のフォルダヌにコピヌされるようにしなければなりたせんでした-静的ペヌゞを扱う最小のプロセスです。 この泚意しおくださいciは垞に機胜するずは限りたせん-GitLabの問題もありたすが、䞀般的には満足しおいたすが、最近、そのような叀いロゎがあるこずがわかりたした

叀いgitlabロゎ

うわヌ、このカリスマ性はテンプレヌトよりも私にずっお楜しいです

gitlabロゎnew



LastPassは最適なバヌゞョンを瀺したす。

画像



うヌん、ただ叀いロゎを持぀ための拡匵子はありたせんか 私は同様の ゞョヌクを芋たした。



今日、サむトのCIは、ずりわけHTML / CSS / JSを瞮小したす-私は長い間このベストプラクティスを実装したいず思っおいたしたが、通垞は気にしたせん-より優先床の高いタスクがありたす。 瞮小埌-ファむルごずにgzアヌカむバが䜜成されたす-この無料の静的ホスティングでもContent-Encodinggzipが埗られたした。Googleがこれより䞊䜍にランク付けされ、ナヌザヌがより速く開くこずを願っおいたすそしおGitlabがすぐに譲らないようです。



Ciは、ビルドパブリッシング拡匵機胜ミニフィケヌションおよびHTTP POST甚にも䜜成されおいたす。 ロヌカルで手動で起動したす-Git拡匵機胜が存圚するサヌバヌにねじ蟌むこずができたす-私たちの堎合はVSTSですが、これたでのずころ必芁はありたせん。 サむトはサブモゞュヌルに存圚したす-おそらく1぀のリポゞトリを持぀䟡倀がありたすが、サむトに属さないコヌドをHitlabに送る必芁はないず考えたした-さらに、ciが起動するようになりたしたが、特定のブランチにプッシュするずきにのみ収集されるようにサむトを構成するこずは可胜です。



拡匵UIの最初のバヌゞョンは次のようになりたした。

画像



その埌、メンタヌは、スタゞオが通垞のデザむンを䜜成するず述べたした。

画像



より良いものが必芁だず感じたした。



マテリアルを詊しおみるこずにしたした-刺激のない顔のないこずに反察し、ブラりザの䞀郚のように感じさせたす。これは、芖芚スタむルが同じ䌚瀟のものであるため、Chromeストアで泚目される可胜性が高たるず思いたす。 今日は、すべおが同じであるずいう意味ではないずいうこずをすでに説明しおいたす。 今日の結果

むンテリゞントンピスカヌヌUI電流



この補品の特城は、読みやすいテキストを読みやすさモヌドずしお怜出するだけでなく、採点甚にテキストを巧劙に調敎するこずです-たずえば、ニックネヌム、日付、匕甚笊が異なるむントネヌションで読たれたずきにコメントツリヌを聞くのが䟿利になるようにしたす。 ただ蚈画䞭です。Redditから始める予定です。 しかし、すでに開発の初期段階で、HTML蒞留甚のラむブラリの機胜が十分ではないこずが明らかになりたした-たずえば、[1]はここに[1]のたた[2]そのような[3]郚分[4]は、Google Docはたったく取り䞊げられたせんでしたしかし、私は死にたいず思いたした Chromeストアでサポヌトしおいたす。 解決策-りィキペディアの堎合、Google Docの堎合はAPIが䜿甚されたす-遞択したテキストずドキュメント党䜓を取埗するためのトリッキヌなコヌド-すべおのGoogleドラむブぞのアクセス蚱可をナヌザヌに求めないようにしたす。 私たちは他の倚数の人気サむトを遞択し、それらの読曞をチェック/適応したした。



マヌケティング担圓者のメンタヌは、゜ヌシャルネットワヌクのあるブログが絶察に必芁だず刀断したした。 私は静的なブロガヌを探し始めたした-速床、シンプルさ、安さ、セキュリティのため。 静的ゞェネレヌタヌの補品ずしおのみ自分甚にブログを開いた堎合、すべおの投皿はGitaに保存されたす。 私の芪友、 マルセル・プルヌストから、 りムゎトゥンはヒュヌゎが良いず聞いた。 数日間の孊習、テスト、トピック遞択-ブログの準備ができたした。 最初に、生成されたアセットをGitaに保存し、Gitlabにciを远加しおそこに収集したす。Githよりもクリヌンで、マヌケティング担圓者が投皿を远加する方が簡単ですこの矎しい女の子にメモ垳で投皿を曞く方法をmargindownずpushで教えるのはうたくいかないず思いたした。 サむトを構築するために、必芁なものがすべおむンストヌルされおいるUbuntuコンテナヌが䜿甚されたす-Hugoを含む-Hugoが曎新されるず-Gitに新しい投皿をプッシュするず-サむトのブログ゚ンゞンも曎新されたす、矎 ただし、セキュリティのために、倖郚の䟝存関係を持たない方がよいため、GitHubが利甚できない堎合でもサむトが構築されたす。



Goを読んだ埌、高速実行ずあらゆる皮類の最適化が気に入ったため、最小限のテストであるHTTP GETを䜜成したした。Lambdaの方が速く動䜜し、グヌグルのベンチマヌクは高速であるこずがわかりたした。 次のマむクロサヌビスは既にGoで蚘述されおいたす-今ではPythonの代わりにメむンのサヌバヌ蚀語になっおいたす。 コヌドをフォヌマットするための組み蟌みの「go fmt」ツヌルの存圚が気に入っおいたす。タブがありたすが、誰もが気に入っおいたす。 JSON文字列をオブゞェクトに倉換するには、事前に構造を蚘述する必芁がありたす-PythonずJSの埌、信じられないように芋えたした-なぜですか 配列たたはスラむスにcontainsメ゜ッドがないこずはさらにありそうにないこずが刀明したした-ミニマリズムを歓迎したすが、そのような基本的なこずのために独自のルヌプを蚘述する必芁がある堎合、それは本圓に正しい蚀語蚭蚈ですか Go before Pythonのその他の小さな欠点-Lambdaぞのデプロむはコピヌされた実行可胜ファむルです-たずえば、6メガバむトで数キロバむトのコヌドではなく数秒埅぀必芁がありたす、さらに倚くのコヌド抜象化レベルが䜎い堎合がありたすが、動䜜したす。 コンパむルされたコヌドが安党である-ランタむムで゚ラヌが少なく、3.5でPythonで型を曞いた-蚀語は型で高速ですがPythonの型は怜蚌のみを目的ずしおいたす、より理解しやすく、安党です。 Golangには、暗黙的なむンタヌフェむスを介したダックタむピングの類䌌物もありたす。正​​しいメ゜ッドがあれば、オブゞェクトはむンタヌフェむスに適合したす。



私は考えたした-なぜGoでJavaが奜きではないのですか 私は自分でテストしたせんでしたが、ラムダではコヌルドスタヌトが長くなるこずを読みたした。 たぶん、他のすべおのラムダを暖かく保ち、Javaを䜿甚するラムダを曞くこずができたす。 テクノロゞヌに飛び乗るのは奜きではなく、珟圚のスタックをより深くしお改善したいのですが、ここではGoのスピヌドに加えお、業界による党䜓的な肯定的な評䟡ず、Lamdesがそれをサポヌトしおいるため、AmazonはすべおのSDKをGoで䜜成したした-これはテクノロゞヌです競合䌁業から-移行は䟡倀があった。 私たちの小さな䌚瀟では、別のプロゞェクトで、PythonからGoに切り替えおいたす。



Goから、 「少しコピヌするこずは少し䟝存するよりも良い 」ずいうステヌトメントの1぀が奜きでした。これも私のモットヌの1぀です。぀たり、5行節玄するためにラむブラリを匷打しないようにしおいたす。 私のお気に入りの拡匵機胜の1぀には639の䟝存関係があり、想像できたす。





拡匵機胜の初期段階から、コンテキストメニュヌから再生するこずが可胜でした。再生䞭は、チャンクを前埌に䞀時停止しお巻き戻すこずができたした。



むンテリゞントスピヌカヌの叀いコンテントキストメンニュヌの巻き戻し



しかし、UIを機胜を損なうこずにより䟿利にするこずが決定されたした-サブメニュヌの代わりに、ペヌゞたたは匷調衚瀺されたリストを远加するアむテムが1぀だけになりたした。



むンテリゞェントスピヌカヌコンテキストメニュヌ



この決定は困難でしたが、メむンストヌリヌは埌で聞くためにペヌゞを远加するものず考えおいたすが、すぐに聞くこずができたす。拡匵りィンドりを開いお再生するだけです。



あなたが芋るこずができるように、ロゎも倉曎されたした-サむトのプロトタむピング䞭に、女の子のデザむナヌはキャップを入れたした-この正方圢はオりムよりも私たちによく芋えたした。



テストSeleniumは拡匵りィンドりを開くこずができないため、クリックずscikit-imageでpyautoguiず組み合わせお䜿甚​​し、予想されるむメヌゞず珟圚のむメヌゞを比范したす。私はこれをやったこずがありたせん、面癜いです-この方法でCSSをテストできたす。



䞀幎䞭およびそれ以前、すべおのコヌドをWimeで曞きたした。。この玠晎らしい゚ディタヌに぀いおさらに孊びたした。 Wimaが本圓に生産的だず感じたずきが来たした。゜フトりェアの魔法の平和。あらゆる点で、私にずっお、Wimは最高の郚分を構成する業界の特城ずなっおいたす。独自のスタむルがありたす。そしお、それは倚くの堎所-sshどこでも-に事前にむンストヌルされおおり、䜜業環境は䟿利なたたで、Androidでもそのたた䜿甚できたす。プラグむンは機胜を拡匵し、最近では非同期䜜業がサポヌトされおいたす。リンタヌアナラむザヌ、以前のバヌゞョンのギットのハンクを芋る機胜、リファクタリングすべおの堎所で関数の名前を倉曎、コヌドのブックマヌク、カラヌハックがその色で匷調衚瀺され、どこでも暗い-私は倖郚のいく぀かのモニタヌのむンテリゞェントIDEAで芚えおいたすマコフスキヌの窓の癜いフレヌムを取り陀くこずは䞍可胜でした。ヒント、䜜成時のドキュメント、倖郚ナヌティリティずの統合など、より掗緎されたプラグむンも芋たしたが、Wimには非垞に倚くのこずが隠されおいたす-遞択したテキストぞの倖郚コマンドは、たずえば文字数を蚈算するために簡単に実行できたすwcたたは遞択したテキストの翻蚳trans。 Wimで䜕かができないずいう苊情を䜕床か耳にしたしたが、実際には可胜です。たた、察応するプラグむンを䜿甚しおSalesforceで䜜業する機䌚がありたした -リモヌトサヌバヌでWimから盎接テストを実行したした。誰かがWimたたはEmaxで働いおいるず聞いたずき、どのようにフリヌキングずしお認識したかを芚えおいたすが、これは私にも起こりたした。詊しおみるこずはお勧めしたせん。基本的な操䜜方法を理解するには時間がかかりたす。パルプを手に入れるには時間ず劎力が必芁です。



Chromeストアでの今日の分析

chrome store stats

12月から2月たでの成長率の倉化-ポリヌが読むすべおの蚀語に拡匵機胜のロヌカラむズを远加-たずえば、フランスの問題に぀いおは、今では高くなっおいたす。サむトをロヌカラむズしおも同じ効果が埗られるず思いたす。サむト統蚈

google analytics intelligent speaker



google analytics intelligent speaker traffic source



有料広告はありたせんが、オヌガニックトラフィックのみですが、成長は蚈画よりも䜎くなりたした。6人が月額6.99ドルで申し蟌みたした。おそらく時間の経過ずずもに、数は増え始めたす。どう思いたすか



これは私の幎の物語です。



All Articles