STB-ダむブ

すべおの良い䞀日。

倚くの人が家庭甚テレビに぀いお聞いたこずがあるず思いたすし、高品質のテレビを楜しんだり、映画を賌入したり、倩気を調べたり、テレビを離れずにもっず倚くのこずができるように、家庭でテレビデコヌダヌセットトップボックスを賌入するずいう提案もありたす。

次に、゜フトりェア開発者の偎からこのプレフィックスを玹介したす。
興味があれば、猫にようこそ。

画像


プレフィックスずは䜕ですか


プレフィックス STB、セットトップボックス、ボックス は、GNU / Linuxファミリヌの最倧切り捚お軞がむンストヌルされおいるシングルボヌドコンピュヌタヌです。

Uname -aコマンド
# uname -a Linux (none) 3.1.5-1.7 #66 SMP Wed Oct 22 14:40:19 EEST 2014 mips GNU/Linux 


ボックスは通垞匱いです。
匷力な代衚者そしおそれに応じお高䟡なには次のものがありたす。



各ボックスには次のものがありたすリストには重芁な芁玠のみが含たれおいたす。



ボクシングのタスクず他のいく぀かの芁因に応じお、ボクシングには以䞋が含たれたす。



ここに芋えるかもしれたせん䟋えば、ネットワヌクからの写真

画像

画像

ここでJavaScriptずは䜕ですか


加入者が自宅でセットトップボックスを起動するず、セットトップボックスからコン゜ヌルを䜿甚しお䜿甚できる矎しい䟿利なポヌタルが衚瀺されたす。

このポヌタルは 、JavaScriptで蚘述され た単䞀ペヌゞアプリケヌション  SPA-単䞀ペヌゞアプリケヌション に過ぎず 、コン゜ヌルで実行されおいるブラりザヌのタブで開きたす。

栄逊のためにボクシングをオンにするず、䞀般的な堎合、次のこずが起こりたすすべおの過剰を説明するわけではありたせん。

  1. コン゜ヌルの軞が開始したした
  2. プレフィックスはブラりザを起動し、その䞭のHTMLファむルを開きたす


独自の特性がありたす。



ルヌルから远加
すべおのコン゜ヌルでポヌタルペヌゞたたはポヌタルアドレスを倉曎できるわけではありたせん。 たずえば、最初のペヌゞのAminoでは、このメヌカヌの特別なキヌが必芁です。 これにはいく぀かのアクセスレベルがありたす。


コン゜ヌルでポヌタルを開発するためのスキルはほずんど必芁ないこずがわかりたしたか プレフィックスを構成し、アプリケヌションをデプロむする方法を孊ぶだけで十分ですか - これは完党に真実ではありたせん 。

プレフィックスはパフォヌマンスが非垞に䜎いプラットフォヌムであるため、Webずボクシングの開発はたったく異なるレベルの耇雑さです。 そのため、ほずんどすべおのコヌディング゚ラヌが感じられたす。アプリケヌションは正しくレンダリングされず、「ラダヌ」でレンダリングされ、スロヌダりンし、動䜜を拒吊し、ブラりザを「クラッシュ」させ、アヌティファクトを発行し、メモリを消去したす。 これに぀いおは少し埌で説明したす。

なぜプレフィックスが必芁なのですか




したがっお、セットトップボックスのポヌタルの倧郚分は、1぀の倧きな問題を解決するこずを目的ずしおいたす-䞀方では、サヌビスを販売する機䌚を䜜成し映画の販売、有料チャンネルの芖聎など、他方では、最も䟿利なアプリケヌションを他のサヌビスカヌド、メヌル、゜ヌシャルネットワヌク、ニュヌス、SMS、むンタヌネットサヌフィンなど、1぀の「ボックス」でテレビを芋たり、他の倚くの問題を解決したりできたす。

これが通垞のブラりザである堎合、これをすべお実装できたすか テレビ 映画 SMS - プレフィックスは、ブラりザが内郚にある単なるボックスではないため、できたす 。 各ボックスには独自のJavaScript APIがありたす。

JavaScript APIプレフィックス


䞀般に、プレフィックスAPIはグルヌプに分けるこずができたす。



これは、ほずんどの問題を解決するには十分です。

ナヌザヌはどのようにポヌタルず察話したすか


各コン゜ヌルにはコントロヌルパネルが付属しおいたす。 通垞、テレビに関連する基本的なタスクを解決するためのボタンが含たれおいたす。



ポヌタルはどのようにコン゜ヌルず察話したすか

アプリケヌションを開発するずきは、ボタンのクリックをキャッチしお凊理する必芁がありたす。 ここでは、すべおが非垞に簡単です-リモコンのボタンを抌すこずは、キヌボヌドのキヌを抌す通垞のように扱われたす。 1぀の違い-各ベンダヌのキヌコヌドは異なりたす。

ボヌナストラック -䞀郚のボックスでは、むベント「キヌアップ」ず「キヌダりン」が同時に発生したす。 したがっお、リモヌトコントロヌルキヌを抌す凊理を行う堎合そのような堎合がありたす、crutches_and_bicycles.jpgの画像を芚えおおいおください

䜕がありたすか


この簡単な玹介の簡単な芁玄を芁玄するには



このように、セットトップボックスはパフォヌマンスの䜎いプラットフォヌムであり、䜕らかの方法でテレビに接続しお問題を解決できたす。 このプラットフォヌムに必芁なすべおのツヌルがありたす。

それはいいですね -いいね しかし、実際には、すべおがそれほど良い音ではないので、今床は蚘事のより興味深い第2郚に移りたす。

泚釈


繰り返したすが、プレフィックスはLinuxを搭茉したコンピュヌタヌであり、ブラりザヌは远加のAPIにねじ蟌たれたす。これにより、コン゜ヌル䞊のポヌタルが盎面するほずんどのタスクが実珟可胜になりたす。

私たちにずっお、この声明の2番目の郚分だけが重芁です- ボックスメヌカヌはブラりザを完成させたす

さたざたなブラりザヌがボックスにむンストヌルされおいたすが、OperaたたはWebKitブラりザヌが最もよく芋られたす。 その結果、酔っ払ったブラりザはさたざたなバグを抱え始めたす最も予期しない堎所でのメモリリヌク、郚分的に非アクティブなガベヌゞコレクタ、最も䞀般的なメ゜ッド呌び出しの結果ずしおのブラりザのクラッシュ、バグのレンダリングなど。

以䞋に曞かれおいるノヌトは、詰められたコヌンず芋぀かったレヌキに基づいた䞻芳的な結論です。 それらが圹に立぀こずを本圓に願っおいたす。

行こう..

DOM操䜜


DOM 操䜜は最も難しい操䜜です。 コン゜ヌルでは、これは非垞に顕著です文字通りの意味で。

DOMを䜿甚した操䜜の数が最小化されおいない堎合、次の可胜性がありたす。



これから生じる䞻な問題は、 UXが著しく損なわれるこずです。 ナヌザヌずしお、ボタンを抌しお、レむダヌを再描画したり、1〜3秒で埅機したりするこずなく、すぐに開くペヌゞを芋たいず思いたす。 い぀もこれを芋るず、ポヌタルずのやり取りで䞍快な気持ちになりたす。 たず第䞀に、ナヌザヌずしお、私はアプリケヌションずやり取りする喜びを䜓隓したいのですが、無駄にお金を䜿わなかったず思いたす。

もう少し掘り䞋げたす-最小化する必芁があるものは䜕ですか

以䞋を最小化たたは排陀する必芁がありたす。



たずめたす。 DOMを䜿甚するためのレシピ



CSS


氎が倚すぎず、 スタむルシヌトを最適化し、クラスずやり取りするためのレシピ 



その結果、CSSフレヌムワヌクブヌトストラップなどの䜿甚は望たしくありたせん。

匷力なパフォヌマンスブヌストを提䟛する優れた゜リュヌションがありたす。クラスを攟棄し、むンラむンスタむルスタむルタグでレむアりトを生成しおみおください。 おそらく、Gulp / Grunt甚のプラグむンもありたす。

CSSプロパティのサポヌトに぀いお少し説明したす。 ほずんどのボックスにはWebKitがあり、CSS3の倚くがサポヌトされおいたす。 1぀のボックスではなく、䞀床に耇数のアプリケヌションを開発する堎合、さたざたな新しい「バン」の䜿甚はお勧めしたせん。 1぀のプラットフォヌムで問題なく動䜜し、2番目のプラットフォヌムではバグが発生しない可胜性がありたす。

詳现を远加したす。 倚くの堎合サポヌトされおいるものCSS3から。実際のケヌスに基づいお、メモリからのリストは非垞に䞍完党です



虫


誀っおプログラムされたロゞックの結果ずしお発生する可胜性のある通垞のバグに加えお、ボクシングは非垞に頻繁に非自明な堎所に朜む可胜性がありたす。

バグは䜕ですか

ほずんどの堎合、ペヌゞレンダリングに関連するバグがありたす。divの背景は描画されたせんでした。芁玠が再描画されたずきに叀い背景がアンロヌドされたせんでした。

バグぱンゞンではあたり䞀般的ではありたせんネむティブメ゜ッドの呌び出しはブラりザをドロップしたす。ブラりザが特別な条件䞋でドロップするず、オブゞェクトのキヌの繰り返しが未゜ヌトの圢匏で発生したす バグではなく、バグではないfrom gibson_devそしお、゜ヌトされた圢匏でのみ゜ヌトされた配列があり、for..in構造はこれを保蚌したせん”、およびその他のさらにたれなケヌス。

バグの別のグルヌプはベンダヌバグです。ストリヌムは曲がっお動䜜し、ファむルシステムは正しく読み取られたせん。APIを䜿甚するず、答えが誀っお生成されたす。

䞊蚘のモラルは、 サポヌトするすべおのプラットフォヌムで゜リュヌションを垞に培底的にテストするこずです。 ゜リュヌションが1぀のプラットフォヌムで機胜する堎合、他のすべおのプラットフォヌムで機胜するずいう保蚌はありたせん。

メモリリヌク


コン゜ヌルのメモリリヌクはどこからずもなく発生する可胜性がありたす。 これを回避するための普遍的なレシピはないため、䟋はありたせん。

ルヌルは単玔です - メモリリヌクに察しお定期的にアプリケヌションを実行したす。 リヌクがある堎合は、どこを探しお「リヌク」を閉じたす。

その他


アプリケヌションは通垞どのようにデプロむされたすか開発䞭


いく぀かの方法があり、それらはすべお簡単です。 展開党䜓では、ファむルをマシンからボックスのフォルダヌにコピヌするか、さらに簡単にコン゜ヌルを構成しお、ファむルシステムからではなくネットワヌクたずえば、ロヌカルサヌバヌから゜ヌスを取埗したす。

各方法に぀いお説明ずしお曞きたしたが、蚘事を煩雑にしないために、すべおがネタバレに包たれおいたす。

非衚瀺のテキスト
方法1-USBフラッシュドラむブ経由

  1. 申請曞を収集したす
  2. ゜ヌスをUSBフラッシュドラむブにコピヌしたす
  3. フラッシュドラむブをボックスに挿入したす
  4. telnetたたはsshボックスによっお異なりたすを介しおコン゜ヌルにアクセスしたす
  5. プレフィックスがHTMLファむルを実行しようずするディレクトリ内の゜ヌスを眮き換えたす通垞、これはindex.htmlファむルです


方法2-マシンから゜ヌスをダりンロヌドする

  1. サヌバヌを展開したずえば、゚クスプレス、アプリケヌションが移動するディレクトリから静的倉数を配垃したす
  2. アプリケヌションをたずめる
  3. アプリケヌションをアヌカむブする
  4. telnetたたはsshボックスによっお異なりたすを介しおコン゜ヌルにアクセスしたす
  5. マシンから゜ヌスコヌドを出力したすwget、curl
  6. プレフィックスがHTMLファむルを実行しようずするディレクトリ内の゜ヌスを眮き換えたす通垞、これはindex.htmlファむルです


最善の方法は方法3です。

方法3-デプロむなし
このメ゜ッドは、コン゜ヌルにHTMLファむルの取埗元を指瀺できる堎合に機胜したすほずんどすべおのボックスで可胜です。

  1. サヌバヌを展開したずえば、゚クスプレス、アプリケヌションが移動するディレクトリから静的倉数を配垃したす
  2. telnetたたはsshボックスによっお異なりたすを介しおコン゜ヌルにアクセスしたす
  3. ボックス構成の線集-ロヌカルサヌバヌ䞊のHTMLファむルアドレスを指定したす


再起動埌、コン゜ヌルブラりザヌはサヌバヌにファむルを芁求し、すべおの゜ヌススクリプト、スタむル、画像など自䜓を抜出したす。



スマヌトカヌド


ボックス内にスマヌトカヌドがある堎合がありたす。 私はこの分野の専門家ではないので、りィキペディアでそれに぀いお読みたした 。

ボクシングでは、2぀の圢匏で衚瀺できたす。



私はそれに぀いお他に䜕も曞きたせん-私は専門家ではありたせん、そしおそれが「タッチ感」レベルでのみどのように機胜するか理解しおいたす。偶然あなたに嘘を぀きたくありたせん。

終わり


ボクシングプレフィックスは興味深いプラットフォヌムであり、これず連携するこずで、最も生産的なアプリケヌションの䜜成方法に関する経隓を積むこずができたす。さらに、このプラットフォヌムで䜜業する際の興味深いタスクやバグが倧量に提䟛されたす。

筋金入りの蚀葉の意味でプログラミング、単䞀ペヌゞのアプリケヌションが奜きで、あなたに圹立぀貎重な䜓隓を探しおいるなら、コン゜ヌルアプリケヌションを曞いおみおください。

PS

, - . , , .

, , - .

, — , .

Source: https://habr.com/ru/post/J259113/


All Articles