NOTE: Architecture is in active evolution: events through Kafka, bytes via a Media Gateway into MinIO, analytics in ClickHouse, and a thin Read API for the GUI. Ingest writes WARCs; summaries are sidecar objects keyed by the exact text hash. This post tracks the big ideas; fine-grained topics (topics/schemes, scoring features, RBAC, DLQ) will land as they stabilize. インゲストはWARCsを書いています。 BillsTechDeckについて 私の夢は、テクノロジーニュースを拾い上げ、関連付けるためのプログラムを構築することです。次世代の拡張現実に興味がありますか? BillsTechDeckはあなたがそれに関する情報を見つけるのを助けることができます! 世界は、関連するソースから得られるガジェットやテクノロジー発表の種類に広くオープンで、テクノロジーのトレンドを評価し、強力なグーグルであなたを回避する可能性のある全体的なイメージを得ることができます。 これは、AppleのVision Proに関する情報を調べながら、あるいは新しいSwitch 2のニュースを待っていたときに、私が遭遇した問題です。 いくつかの考慮事項:メッセージに戻るすべての矢印は異なる列に流れています。また、各サブシステムはDockerコンテナにあり、K8とCI/CDパイプラインでオーケストレートされることを考慮してください(それはあまりにも忙しいため、グラフに含めていませんでした)。 基本的には、ニュース、トレンド、ソース、分析、概要を一箇所にまとめて、テクノロジーニュース、ガジェット、トレンドのタイムスピアを理解できる一貫したデータを構築したい。 一貫性のあるものに努めます: 今、私はただの趣味家だから、私は何も知らないと主張しません. 私は本当の喜びである楽しみを持っています. Let's take a high overview dive into this system. I've redone this たくさんの sooooo Let's break down the steps (leaving out) をダウンロード 関連ステップ): カフカ The Harvester は、FeedbackService からの情報に基づく IngressOrca からの入力を得ています。それは、WARC を組み合わせる方法として MinIO を使用し、豊富なメディアを分散的に処理することもできます。メディアは、 sha256 および sha1 キーで動作する MinIO クラスター (メディアクラスター) に保存されます(WARC の場合には、システムの一致性のために sha256 ハッシュ キーもあります)。 The Sanitizer gets jobs queued up from the Harvester and draws media from the media gateway to sanitize. If its dirty we still keep it to perform forensics in a controlled environment. 汚れた場合、私たちはまだコントロールされた環境で法医学を行うためにそれを保持します。 OCRはカフカの仕事に基づいて豊かなメディアで実行される spaCy (NER) はすべてを実行します. spaCy は spaCy 衛生検査器にカプセルされた仕事を提出し、それが正しい場合は、自動 phi4 の概要が正当であるかどうかを決定するためのスコアサービスに送信され、正しくない場合は、単に相関エンジンに送信されます。 Phi4は、スコアリングサービスまたはユーザーが開始したデータの特定の部分で実行されます。 The Correlation Engine gets run on everything (コレラレーション・エンジンはすべてで動く) 各サブシステムには、LogHandlerおよびLogSilo/ElasticSearchで処理されるログ列に強力な監査と提出が含まれます。 メディアへのアクセスを必要とするサブシステム/ディーラーは、MediaGatewayを通じてリラックスした呼び出しを通じてミニオクラスターと相互作用します。 GUIHandler は ControlEvents を提出することができます( phi4 の概要を要求し、物事を調整する) The talks to the to pull from the to train a model that will give better information for the to better choose when, where and how we can pull better information to cut down on on bunk data フィードバックサービス 歴史貿易 歴史 入り口 (Orchestrator) wasted resources すべてのデータはミニオクラスター(MediaCluster)に格納され、休憩通話を通じてアクセスできます。 GUIHandlerへの呼び出しは、静かな呼び出しによって行われます。 すべてのサブシステムは、Kubernetesによってコンテナ化され、オーケストラ化されています。 ハーベスト 入り口 フィードバックサービス 衛生士 ハーベスト OCR スパイス(NER) 狂気ハンター ピ4 関連エンジン ロゴハンダー ロゴシロ/ElasticSearch メディアガイド メディアクラスター メディアガイド ガイダン ガイダン コントロール フィードバックサービス 歴史貿易 歴史 入り口 MediaCluster ガイダン I'm sure I left out some detail, but that's the gist. ハーベスト : データ収集 データ収集 Pixel Fold 3についてのニュースをどのように収集しますか? 私たちはそれをオンラインから引き出す必要があります! さまざまなソースは、さまざまなデータ収集方法を必要とします。 すべてのサイトには特定の構造(複雑さ)もありますが、幸いなことにデータ収集の背後にある驚くべき生態系があります。 ボット検出、DDoSフィルタリング、Captchas、不正な情報 Python is an この目的のために使用する言語があり、私のような趣味家がSteam Deck 2のテクノロジー仕様やその他のチャットについて重要な情報を得るのを助けるために熱心に働く活気のあるコミュニティを持っています(どれほど信じられないか)。 incredible Recon What is the site structure? What is the site's flow? What tricks are companies like Akamai pulling to impede my ability to get my precious tech snippets? What values change and where? When does my cookie become invalid depending on an abnormal flow? Does the javascript try to fool me? Is it dynamic, obfuscated or check for tampering? Are my user agents okay and when do I rotate them? How do I handle headers? How do I handle TLS Fingerprinting? This list is getting long so I'll just add "heuristics" This is a very involved process and requires a good amount of attention. So targets to get my tech news have to be curated in general and scoped. Using technology like そして サイトやそのヒューリスティクスに関する貴重な情報を収集することは重要です。 落下 プロキシ CAPTCHAs *: image recognition tasks* Tradition CAPTCHAs *: Machine learning looking at user behavior to determine bot behavior* ReCAPTCHA *: pesky things that run in the background by grumpy site admins looking to stop me* Invisible CAPTCHAs 伝統的なキャプチャ ReCAPTCHA 見えないキャプチャ より小さなリストですが、これらは間違いなく大きな障害であり、決して完全なリストではありません。これらの問題のすべての解決策は複雑な解決策を必要とします。 続けることができますが、評判の高い住宅プロキシ、モバイルプロキシ、料金制限、デバイス指紋の認識と軽減、そして最後に蜂蜜ポットなどのものを追加すると信じています。 したがって、さまざまなアプローチレベルが必要です: Graduate Response Crawling 戦略 「ペレット銃でテストし、Fubar'd なら Ordinance にエスカレートする」 「ペレット銃でテストし、Fubar'd なら Ordinance にエスカレートする」 : Level 1 Pellet Gun aiohttp scrapy Use for static pages, public APIs, or weakly protected endpoints. Low noise, low cost. : Level 2 Scoped Rifle Playwright + stealth plugins Use for JS-rendered sites, light bot defenses, simple captchas. Mimics real users, simulates browser behavior. Level 3: Ordinance Crawl4AI / Nodriver , heavyCAPTCHA solving , Mobile proxies Use when you hit: invisible captchas, anti-bot JavaScript puzzles, DOM obfuscation, or flow control defenses. Heavy but necessary for hard targets. ペレット銃 狙撃銃 命令 なぜこれが重要なのか 効率性: curl が機能するときに Playwright サイクルを燃やさないでください。 Stealth:不必要にアラームを上げるのを避ける。 長寿:禁断なしで何ヶ月も走り、何週間も走らない。 しかし、今、我々は複雑さを導入し、それは良いです。最初に我々は非常に単純なルールを持っています。 より強力になれば、私たちはより良い場所へのより良い通話を行うことができます。 私たちを導くパターン。 歴史 歴史データ HistoricalSilo このシステムの一部は、間違いなく、 そして、私を私の甘い、甘いサムスンニュースから守るウェブサイトの間の猫とマウスゲームのために絶え間なく更新する必要があるでしょう。 最も重要な I've come up with a plan to be able to ingest, ingest, ingest and be able to verify before I really have to worry about pulling real time data. Current plan is to pull data from archive.org (at a throttled rate and politely of course). Going this way I rewrote the アシンクであり、ブロックされない。 インターネットアーカイブ Python Wrapper もし私が多くのタイムリーなデータを引っ張り始めたばかりだったら、私の相関関係は何の意味もありませんでした。歴史的データは私により多くの確信を与えており、20/20の後ろ姿で情報を確認することができます。 このアプローチにより、私は多くの変更を必要とするクローラーを構築することなく、システムの残りの部分に注入して焦点を当てることができます。 データは信用されない: あなたのシステムを毒にしようとする人々の芸術 あなたのシステムを毒にしようとする人々の芸術 What's the problem with taking data from the internet? Well, anyone who has been on the internet for any length of time knows about the dirty trolls. Actors who are out to hose you and your noble goal of getting the new smart phone information. Because the fact that people want to pwn you, you have to assume the worst. Let's highlight some concerns (not an exhaustive list, just a taste) Malice in action Javascript Payloads (XSS, Embedded goodness, etc) Worry about data exfiltration Browser Exploits Redirection and Phishing PDF Macros and Embedded Object Can do spooky things like "remote code execution" Info disclosures Initiate connections to scary C2's Handling various filetypes Office Document macros EXE/DLL (less of a concern since they'd be filtered Malicous archive files that contain executables and path traversals Image/Media file: hiding stegonagraphy or utilizing dirty dirty codecs Data Integrity Tampered data Spoofed sources People looking to poison my system with generally bad data So how do we deal with this? Some things I left off this list (like servers trying to DDoS my harvester by serving up tons of unnecessary data to hurt my feelings). 我々はまず、我々が検証していないすべてのデータを隔離し、含むことを望みます 別のネットワークシステムに居住するか、または . While 起こる場合、それは空気のギャップ(私は誰にも負いません)と一緒に来る警告と重ねなければなりません。 空気漏れ VLAN hopping One level is running ファイル上のルール 良い点であり、素晴らしい出発点です マクロ分析のためのツールがあります an analysis tools. We can verify files are what they are (making sure the dirty trolls aren't hiding exe's). We have . We check hashes against threat feeds. YARA PDF 静的コード分析 We also have 反対の極端なところで、それは インターネット・アーカイブの段階を過ぎてしまい、 caveats. It provides dynamic analysis, behavioral reporting, threat detection... で、 Some dirty files can detect sandbox environments. Others can escape them. It is resource intensive and has a complex setup. It is too resource intensive and complex for a while. Cuckoo 実施されない significant But it can be thwarted! it can be thwarted! Lastly, we have to worry about data poisoning. I don't have a clear path on how to handle this. There is a breadth of research papers I am going to go through to better understand the problem and approaches. No one said I write this not a definitive writing of what I am doing. More so highlighting the amount of ways bad hombres can 私とシステム safety is easy staggering compromise I have yet to see a lock that can't be picked. できるだけ複雑にすることができる。 With that in mind, I am designing this part with . Performance, memory safety and I just like it a lot. This will be a job. Media will be fetched and posted to the to interact with the (MinIO cluster) リラックス 東京 メディアガイド メディアクラスター メディアガイド MediaCluster In conclusion: In conclusion: In conclusion: 時間の大半は、 are for 甘い、甘いリンゴを木の上に置くほど、 the better. bad actors looking 低く吊るされた果物 minimize my attack surface If the data is skanky we quarantine it so we can analyze it. We document it and store the analytics revolving around it in the . HistoricalSilo HistoricalSilo Phi4-medium: 私のような忙しい人にとっては、 私のような忙しい人にとっては、 リソースは賢く、コンテンツは賢い. しかし、彼らはまた、私たちに潜在的に長い情報の要約を提供する能力を持っています。 (needed something more robust). LLM's Phi4-medium Why would I choose this? Goldilocks size and performance Medium is bigger than mini. Medium has 14 billion parameters. Competitive enough with larger models but more efficient 私の使用ケースに最適化 Suitable for local deployments Cost effective (since I'm a lowly cabbage farmer) Flexibility in deployments I need something local and powerful and it fits the bill. Having it being its own docker image makes it easy. Another positive is my ability to fine tune it (for my greedy need for information on the new iPhone). Caveats! Hallucination Tis the cost of doing business. For this I may have to implement and RAG system. My own guys are working against me! *sigh* English In the end this is not an overall large deal since I'm not multilingual. Though it adds complexity should I want to expand data sources to places I can't understand I'm pigeonholing myself into consuming English. 私の仲間が私に反対して働いている! 英語 So what does a 私みたいなの? headstrong cabbage farmer Sanity checks. Things like volume yields : Checks if the summary's length is reasonable. Meaning Did Phi-4 produce a 150-word summary as requested, or did it return a single sentence or a 10-page novel? . Cardinality or categorical value checks : Checks if the entities (people, places, etc.) in the summary are a valid subset of the entities in the original article. Primary defense against hallucination. Meaning Does the summary mention 'Germany' when the source text only ever mentioned 'France'? . Completeness and fill rate checks Checks for the omission of critical information. Meaning: The original article mentioned three key companies, but the summary only includes one. Is the summary missing vital information? Uniqueness checks Checks for repetitive or redundant content within the summary. Meaning: Did the model get stuck in a loop and repeat the same sentence three times? . Range checks Checks if numerical data in the summary is factually correct based on the source. Meaning: The source text says profits were '$5 million,' but the summary says '$5 billion.' Is this a catastrophic numerical error? Presence checks The most basic check: did the service return anything at all? Meaning: Did the Phi-4 service time out or return an empty string instead of a summary? Data type validation checks. Checks if the summary adheres to the requested structure. Meaning: I asked for a JSON object with a 'title' and 'key_points' array. Is the output valid JSON with those exact keys? Consistency checks The deepest check for factual grounding and logical contradiction. Meaning: The source text says 'the project was cancelled,' but the summary implies it's ongoing. Does the summary contradict the facts of the original article? Things like volume yields Cardinality or categorical value checks 完全性・充填率チェック ユニークなチェック 範囲チェック 出席チェック データ型認証チェック Consistency checks This list can quickly become like Benjamin Buford Blue naming uses for shrimp so I'll top it off there. これは、スコアサービスに基づいて自動的に実行されるか、または手動で要求されます。 . moi Grabbing Entities with spaCy: THE グラブ 関連事項 グラブ 関連事項 We are at the section. spaCy Which model do I choose? offers a variety of pretrained models all with their own uses. They are trained on so out of the box . I will likely need to fine tune a custom 追加 . At the start I will need to annotate data to train my model (there are open source tools to somewhat automate this process). This will also encompass training it to . spaCy general web content テクノロジージャーゴンを認識しない モデルなし custom components エンティティタイプの認識 I will need to be ♪ (※) そして ). I To go in and do そして (i.e. "Apple" the company and "apple" the fruit). With that comes the possibility of building a custom entity linking component or external tool integration (hopefully not). fluent in rule-based matching matcher EntityRuler will need Entity リンク disambiguation Since I'm only worried about English at the moment, I am blessed to be ignorant of language detection. Past that I will need to consider performant things like and . When not in use turn it off! batch processing component disabling 可能な考慮により、 走りながら I'll have to consider 基盤モデルと モデルに基づいて、また、かなりのRAMの使用を考慮しなければなりません。 平行プロセス ピ4 CPU GPU There's 私が必然的に取り組むドメイン外のテキストを計画しなければならないし、どう対処するかを知ることが重要です。 前処理、後処理、および外部の論理とモデルの統合 Lastly, and almost most importantly: Sanity checks. プログラム認証 Verifying correct data types 重要な領域の周囲の行動に注意を払う Defining expected data types Establishing acceptable ranges with things like dates and word counts Define allowed values Define completeness thresholds クロスフィールド一貫性規則の考慮 上記の衛生検査の多くはここに適用されますが、より細かい意味で、エンティティと取り組んでいます。リストは続きます。 このセクションの完璧さが気になります。 Data correlation: 物事の意味を作る 物事の意味を作る in this system is important. I need a language that can provide me some memory guarantees as well as stop me from making newbie mistakes. I drifted towards at first. I thought it through and arrived back at 私は単に経験者ではありません。 プログラマーで、おそらく私のシステムを揺るがすものを実装するだろう。 データ関連 incredibly C++ Rust C++ 基本的に、 Entities from and connects the dots. It will utilize 2位 . I needed some real granularity and functionality for statistics in correlation. An earlier draft incorporated RocksDB, which wasn't robust enough with recent developments. リラックス スペース クリックハウス 書く/読む/ストア pertinent 物事 So stats will be important (yay!). アン way of coding is key and I'll need to be very deliberate with what I do, why I do it and how I implement things. I'm going to be using I/O プロセスがたくさんあるので、 . アイドル 東京 クリックハウス We basically take all entities and on them an compare it . run rich analysis 歴史データ 私は以下のことを考えます。 Is this relationship statistically significant? この関連性は単なる「チャンス」以上のものなのでしょうか。 この意味は、グラフ関係を作る価値がありますか? この具体的な関係を強調するための事実的裏付けはありますか。 So I'd need to do things like establish a コネクションのための. It would also be a good idea to establish , a measure that scores how much more likely two entities are to appear together than by random chance. 高いスコアとネガティブなスコアが私に相関関係について偉大なことを教えてくれる場所。 p-value ポイント相互情報 騒音をフィルタリングするには、統計を使用することが不可欠です。 そして 何千回も繰り返されるだろうが、この関係は そして particularly insightful. Statistics help us prove that a rarer connection, like a specific tech company and a government agency, is far more significant even if it only appears a few times. Also, thinking of the : its because it's a . 「Apple」 'iPhone' obvious not WHITEHOUSE not significant white building Past getting into some concepts I feel out of the scope of this overview, I'll leave it at that. Data: the backbone the backbone So what do I do with all this data about hot new tech items? ホールドしました。 複数のデータベースを持つことになります。 (PostgreSQL、ClickHouse、Neo4j、MinIO) すべてのデータ操作が送信されます。 One Will Handle(ワン・ハンドル) operations, one アーティファクトデータを保存するために使用されるもの 2 きっと ( そして それはたくさんですが、それぞれのDBには独自の強みがあり、私はシンプルな方法を信じています。 重大な欠点があるだろう。 データハンドラー ネオ4J ポストグレース (基本的にはメタデータレジストリ) クリックハウス HistoricalSilo コレクション 「SQL Server for Everything」 HistoricalSilo CorrelationSilo データ構造、 tables and primary keying will be tantamount in (complex (その他) The それは多くの考慮、涙と挫折の源になるでしょう. 良いデザインはスパイドで報われるでしょう. 私は私は私が必要なものについてのより良いアイデアを持っていると感じているので、私は後でこれに近づいています。 良い クリックハウス 保管手続き アーティスト アーティスト is another beast. I feel as long as my It in it should be 痛みのない(有名な最後の言葉)。私の気持ちは、私は基本的にできるだけバカにしようとしたいということです。 If I started adding layers of complexity and correlation logic the data becomes more coupled and detracts from the value of my correlation engine ネオ4J correlator isn't phoning 比較 「なぜ?」 THE きっとA DBは、以下のようなものから多くの細かいデータを持っています。 歴史 ClickHouse 歴史 良いデータを手に入れた場所 どの検索クエリが最高のデータを生み出したか What harvesting methods worked the best for which data source Where/when and potentially why we got dirty data この汚れたデータについての分析 多分、もっとたくさんあるだろうし、その時点にたどり着いたら見つかるだろう。 THE クラスターは他のものよりも実装するほど痛みが少なくなるでしょう. 私はまだすべてがベルトとサスペンサーであることを確認する必要があります。 ミニオ The databases will be an intense experience. There will be a ton more. Bit by bit though. GUI:WebApp Time! THE きっとA . Initially I was going to make this a desktop app. I realized though that eventually I want more people to use it. 素晴らしい選択肢ではなかったでしょう。 GUI ウェブapp ピッチャー6 Using a I get to access such a wide variety of libraries. I have incredible access to information that may not be available if I used a GUI. When I initially settled on , my goals were a lot different. I honestly just didn't want to write a gui in Python. I have no good reason as to why I don't. It's perfectly capable. It was just a personal preference. ウェブapp ピッチャー6 Having that nagging feeling in my gut I searched for other gui option. I found a グリのプロジェクトは捨てられました。それに加え、グリの図書館で人々が作ったものの良い例を見つけることは、不可能であったとしても困難でした。私は確実に前進したかもしれないが、私はその後何かを使用したくないし、あるグリで私のビジョンが可能でないことに気づいた。 LOT So I went with a . それには多くの利点がありますが、今私は本当にセキュリティのトップにいる必要があります. しかし、私は私が私のプロジェクトを示す準備ができていると信じるまで、その複雑さについて心配する必要はありません。 webapp 基本的には、GUIは、 which talks to the で、 で、 そして、特定の仕事を実行できるようなイベントをコントロールする。 彼らは閉じ込められ、彼らがどのように仕事を置くかについて慎重に考えなければなりません。 . ハンドラー LogHandler アーティスト 歴史貿易 コントロール カフカ GuiHandler LogHandler アーティスト 歴史貿易 コントロール 私たちは、あらゆる種類の豊かなメディアにサービスを提供することができなければなりません。 単にWebアプリを作るのがより慎重に感じます。 最後の言葉: 最後の考慮 最後の考慮 全てをカバーしたわけではない。 もう一つ付け加えたいことは、私の選択です。 で。 このプロジェクトの現在は確かにオーバーキルです. それは私の最初の選択ではなかった. しかし、私は、私の最初の選択が持続不可能になったときに開発中にトラブルに巻き込まれました. 私が着陸した場所です。 This post is now closing in on 4.5k 単語 カフカ カフカ カフカ 追加のボーナスは、リハーサルで良く見えるということです。 開発者になりたいと常に考えています。 もし . I WILL NOT でも、きっとキレイに見えるでしょう。 私の前には、テクノロジーのトレンドへの愛情に人生を吹き込むために多くの仕事があります。 やれやれ これらのいずれかをやるには? 必要 No. I just think it's incredible fun. すべてのアーキテクチャとフローの選択は変更の対象です. このブログでは私はコードを提供しません(私はあなたの目を保存します)。 There are tradeoffs everywhere. カフカのスケールはいつ? リソースオーケストラを導入して、リグを燃やさないのですか? How granular do I get with defining "valuable" data? 役に立たないデータを削除するために、システム内で何をしますか? 夜遅くにダルトを燃やすセッションが必要ですか? 妥協したらどうする? データ中毒をどう対処するか? ヴェイクス ヴェイクス However daunting, I have a 時間とボスが失敗について私を乗り越えることはありません。 秘密兵器 これは何年もかかるだろう。 And that's okay. This project may be outwardly insane and ambitious to the reader. それを認めるのに十分に自覚している。 たとえ、私はシステム自体内の知識のすべての分野に信じられないほど興味があると言いたいが、それは 100メートルスプリントではない。 . 長いマラソン bit by bit bit by bit I want to leave on a lesson learned from . Spruce is a man who changed the UPS headquarters address to his own, an apartment in Chicago. This was allowed for months where Mr. Spruce was able to deposit ~$65k in cash to his account that was earmarked for UPS. スパイス氏 How does this fit? この物語から学んだ教訓は、 可能なことの論理的な上限を完全に無視するために、スプルーズ氏は、世界最大の物流会社の住所を自分のアパートに変えることができるかどうかについての質問で自分自身を心配しませんでした。 . 勇気 and it worked 勇気 and it worked While I feel like I can definitely shed Mr. Spruce's lack of impulse control and absence of foresight, I can internalize the audacity to try. Having a complete and utter disregard for what a consensus may deem "feasible" I am able to embark on a journey of learning untethered by a tradition steeped in reason that unequivocally says "you can't". 試さないよりは大失敗する方がいいかもしれないが、そのためには、完全にクソをしないというスプルーズ氏のアプローチを体現しなければならない。 If you stumbled across this blog, I hope you may have learned something. Much love, ビル「ウィザード」アンダーソン