今日已更新 133 条资讯 | 累计 37382 条内容
关于我们

标签:#Product

找到 2482 篇相关文章

AI 资讯

How to Compress a Photo Under a Specific KB Limit on Android

How to get a photo below a strict KB limit Many government portals, job forms, school applications, and support websites reject an otherwise valid photo because it is larger than a fixed limit such as 100 KB or 200 KB. Standard gallery apps usually offer cropping or a quality percentage, but they do not tell you whether the final file will meet a specific upload limit. That is the problem I built FormFit to solve on Android. Why exact-KB compression is tricky File size depends on more than width and height. Image detail, color variation, output format, and compression quality all affect the result. A quality setting that works for one photo may leave another photo far above the required size. FormFit works toward a maximum KB target and adjusts the generated copy for you. The practical goal is to create a file at or below the limit while keeping it as clear as possible. Compress a photo on Android Install FormFit from Google Play . Open the photo-compression tool and select the image you need to upload. Enter the maximum file size required by the website or form. Optionally resize the image dimensions or choose JPG, PNG, or WebP for the generated copy. Run the compression, review the result, and save or share the new file. The original photo is not replaced. FormFit creates a separate output copy, so you can compare the result before uploading it. Remove metadata from generated copies Photos can contain metadata such as device or capture information. When you only need to submit the visible image, FormFit can remove metadata from the generated copy. This does not change the original file. Turn several photos into one PDF Some forms ask for a single PDF instead of multiple image files. FormFit can combine up to 20 selected photos into one PDF directly on the phone. This is useful for receipts, scanned notes, application documents, and other small document sets. On-device processing The selected photos and PDFs are processed on the Android device. FormFit does not req

2026-08-24 原文 →
AI 资讯

I ran OpenClaw and Hermes Agent side by side for two weeks — here's what I learned

So I spent the last two weeks running two open-source AI agents in parallel: OpenClaw and Hermes Agent (from Nous Research). I went in expecting to pick a winner. I came out realizing it's not really a "pick one" situation at all. These two projects represent two very different design philosophies — one is built around connection and control , the other around learning and growth . Which one fits you depends on whether you want an obedient tool or a companion that evolves with you. Here's my full breakdown after using both for deployment, daily tasks, and the general "living with it" experience. Two philosophies, two products OpenClaw takes a gateway-first approach. It's a persistent controller that handles routing, permissions, multi-channel integration, and skill orchestration, with pluggable models. The core promise: connect everything, execute predictably. Hermes Agent is built around a learning loop. The agent creates and refines its own skills as you use it, and keeps deepening its model of you over time. The core promise: the more you use it, the better it knows you. A rough analogy: OpenClaw is like a senior assistant who strictly follows the instruction manual — plus a universal adapter. Hermes is more like a teammate who writes their own manual after every task and keeps improving it. The four things that actually differentiate them 1. Skills: ready-made ecosystem vs. self-compounding OpenClaw: human-written skills distributed via ClawHub. Huge ecosystem, works out of the box. Hermes: the agent generates and iterates on skills by itself. Less rich in the short term, but it compounds over time. 2. Memory: good enough vs. actually remembers OpenClaw's default memory is fine (files and Markdown supported). But Hermes' four-layer memory architecture is noticeably more persistent — the difference becomes very tangible after a couple of weeks of use. 3. Autonomy: decisive vs. controllable Hermes is extremely strong when the task is clear — it often nails things

2026-08-24 原文 →
AI 资讯

Fzf - o que é, como instalar e onde usar no dia a dia

1. O problema que o Fzf resolve Quem vive no terminal conhece a cena: Ctrl+R para buscar um comando no histórico, mas a busca é linear e só mostra um resultado por vez; cd para um diretório profundo, mas é preciso lembrar (ou digitar) o caminho inteiro; git checkout para uma branch, mas primeiro é necessário rodar git branch e copiar o nome exato. Em todos esses casos, o gargalo é o mesmo: escolher um item entre muitos, digitando cada vez mais texto até sobrar só um. O fzf (fuzzy finder) resolve isso de um jeito genérico: ele pega qualquer lista de linhas — histórico de comandos, arquivos, branches, processos, o que for — e transforma essa lista em um filtro interativo, digitado em tempo real, onde não é preciso acertar a grafia exata nem a ordem das letras. Basta digitar pedaços do que se lembra e o fzf ordena os resultados por relevância. 2. O que é o Fzf Fzf é um filtro de linha de comando escrito em Go, de código aberto, mantido por Junegunn Choi. Ele não sabe nada sobre arquivos, git ou processos — a única coisa que ele faz é ler linhas da entrada padrão ( stdin ) e devolver, na saída padrão ( stdout ), a linha (ou linhas) selecionada interativamente. Essa simplicidade é o que o torna tão versátil: qualquer comando que produza uma lista de texto pode ser "encanado" ( | ) para dentro do fzf. # a ideia básica: qualquer lista vira um menu interativo ls | fzf history | fzf git branch | fzf ps aux | fzf Na prática, o fzf raramente é usado sozinho dessa forma — o valor real aparece quando ele é integrado ao shell e a outras ferramentas, o que este artigo cobre a partir da próxima seção. 3. Instalando o Fzf O fzf está disponível nos principais gerenciadores de pacote: # Debian/Ubuntu sudo apt install fzf # Fedora sudo dnf install fzf # Arch Linux sudo pacman -S fzf # macOS (Homebrew) brew install fzf Também é possível instalar via git, o que traz um script auxiliar de configuração dos atalhos de shell (usados na próxima seção): git clone --depth 1 https://github.com/j

2026-08-24 原文 →
AI 资讯

Effective Engagement Management in Enterprise Architecture Projects

Communication and Stakeholder Management Successfully executing enterprise architecture projects requires more than just technical expertise. The key to success lies in effective engagement management, where communication and stakeholder management play a central role. In this post, we’ll explore strategies and tactics for successfully engaging stakeholders in complex IT projects and enterprise architecture initiatives. The Challenge: Complexity and Different Perspectives Enterprise architecture projects are often characterized by high complexity. They span various business units and teams, from IT to management and external service providers. These projects are not only technologically demanding but also require close collaboration between all involved parties. Each stakeholder brings their own perspectives, priorities, and objectives, which increases the risk of misunderstandings, delays, and misaligned outcomes. The Key to Success: Engagement Management Effective engagement management ensures that all stakeholders are involved from the start and that their needs and expectations are understood. This involves not only regular communication but also a structured and strategic approach. Below are some proven strategies to achieve successful engagement: 1. Early and Comprehensive Stakeholder Mapping Successful engagement begins with a clear understanding of the involved stakeholders. Stakeholder mapping helps identify all relevant actors, their interests, and their potential influence on the project. The following questions should be considered: Who are the internal and external stakeholders? What are their expectations for the project? How much influence do they have on decision-making? What are their communication needs? A comprehensive stakeholder mapping allows for the establishment of clear communication paths and consideration of specific needs from the start. 2. Transparent Communication One of the most common causes of project failure is insufficient or ineff

2026-08-24 原文 →
AI 资讯

What Changed in AI in the Last 90 Days (Quick Round-up)

The shifts that actually matter for builders - late May to mid-August 2026 The last three months did not produce a single "GPT-5 moment." There was no single release that reset the conversation the way earlier step-changes once did. Instead, the ground moved in several places at once: a wave of frontier and open-weight model launches in July, growing candor about how badly long-context windows actually hold up, and a genuinely uncomfortable security story out of xAI's new agent product. Here's the short, opinionated version of what actually changed for people who ship AI systems. 1. Models & Capability GPT-5.6 (OpenAI) shipped in three tiers - Sol, Terra, and Luna after a government review, with the fastest tier reportedly hitting 750 tokens/sec on Cerebras hardware and a new "Ultra" mode for maximum reasoning effort. Anthropic's lineup grew fast: Opus 5 landed at unchanged Opus pricing ($5/$25 per million tokens), reportedly within half a point of a rival's benchmark peak at half the per-task cost, alongside a new Sonnet 5 and a higher "Fable 5" tier. xAI iterated twice: July's Grok 4.5 (1.5T parameters, trained partly on coding-agent interaction data) was followed by Grok 4.6 on August 12 - a 500K-token-context model aimed at coding and long-running agents, priced at $2/$6 per million tokens standard and $4/$12 for long-context requests. Google's Gemini Flash line saw three releases in quick succession - 3.5, 3.6, and then 3.7 Flash - each undercutting the last on price. 3.6 Flash alone cut output pricing from $9.00 to $7.50 per million tokens. Open-weight competition intensified: Kimi K3 (Moonshot) became the largest open release yet at 2.8T parameters (104B active via MoE) with a 1M-token window, and it was joined by DeepSeek V4-Pro, the Qwen3.8 series, and GLM-5.3 - plus Inkling (Thinking Machines), a 975B open-weight MoE trained on 45 trillion multimodal tokens. One-line interpretation: The capability ceiling is still rising, but the more interesting number th

2026-08-24 原文 →
AI 资讯

The Context Packet: The Right Architectural Coding Agents

A coding agent with access to your entire repository does not necessarily understand your system better. It may understand less. Because a large repository may contains obsolete code, and decisions that were never written down. Giving an agent more files increases the amount of text it can inspect, but this does not guarantee it will identify the constraints that matter more. The better design is a context packet a small, versioned, machine-readable description of the system. The packet complements source code by recording the contracts and decisions that source code alone may not reveal. The Problem: Repository Access Is Not System Understanding A normal coding request might look simple: Add retry handling to the payment notification worker. An agent can find the worker, inspect its dependencies, and produce a patch quickly. But a safe implementation depends on questions that may not be answered in the worker's directory: Is the message delivered at least once? Does the payment provider support idempotency keys? Which exceptions are transient? Does the consumer rely on a specific delivery count? Can this change be deployed independently of the producer? The repository may contain clues, but clues are not contracts. When the agent receives only the ticket and nearby files, it fills the gaps with plausible assumptions. When it receives the entire repository, it has a different problem: the important rule may be surrounded by thousands of irrelevant or contradictory signals. The gap comes from context design. Retrieval Boundaries and Signal Density AI coding systems have a finite context budget. The deeper concern is signal density : the proportion of useful constraints among all the material an agent must interpret. Suppose an agent receives 100 files: 10 define the target feature 20 are related infrastructure 30 are historical implementations The agent can technically read all of them. It still has to decide which rules apply, which code is authoritative, and which

2026-08-24 原文 →
AI 资讯

How I Built Smart Scraper M2M: A Fast ~30ms Scraper API for AI Agents

Building AI Agents with frameworks like CrewAI or LangChain often hits a bottleneck: heavy, slow web scraping that bloats context windows and increases LLM token costs. To solve this, I built Smart Scraper M2M — a lightweight, high-performance web scraper API designed specifically for machine-to-machine (M2M) communication. 🌟 Key Features ⚡ Ultra-fast: Returns clean structured JSON in ~30ms . 🧠 Context-optimized: Strips out useless HTML/CSS junk so your LLMs process only relevant data. 🤖 Agent-friendly: Built to integrate seamlessly into CrewAI, LangChain, or custom Node.js agents. 🚀 Quick Start You can test the API or check the full source code directly on GitHub: 🔗 GitHub Repository: https://github.com/MRIGL/smart-scraper-m2m 💬 Feedback & Community I’m actively improving the API and would love to hear your thoughts, feature requests, or contributions! Feel free to star the repo or leave a comment below.

2026-08-24 原文 →
AI 资讯

Keeping Mac work alive without pretending awake means safe

A developer usually meets Mac power management through a simple need. A build, local server, download, or agent is still running, and idle sleep would interrupt it. The caffeinate command can be enough for that open lid case. Lid close is a different boundary. An idle sleep assertion does not mean the same thing as a closed display session, and a product should not blur the distinction. I built Afterlid around three explicit states. Sleepy follows normal sleep. Awake prevents idle system and display sleep while the lid is open. Always On is the lid closed mode, with the display off. The important engineering work begins after activation. What happens if the app crashes? What happens when the battery is falling or the machine is under thermal pressure? What state is restored after a helper failure? For Afterlid, Always On ends at 30 percent battery while unplugged, under serious or critical thermal pressure, when the app heartbeat disappears, or after eight hours. When a limit fires, the app drops its wake assertion and returns the Mac to normal sleep behaviour. The current implementation uses a small privileged helper and an undocumented macOS sleep setting for the lid closed path. That makes broad hardware testing and honest release notes essential. It is not something I want to hide behind a friendly menu bar character. A useful principle emerged from the work: activation is a feature, but recovery is the product. If you are building a system utility, test the path back to the operating system defaults with the same seriousness as the path into your special mode. Founder disclosure: I built Afterlid. The full product and current boundaries are here: AfterLid

2026-08-24 原文 →
AI 资讯

Knowing When to Use If/Else vs. Switch in JavaScript

If/else statements - We all know and love them. While they are incredibly powerful, there comes a point where a long chain of conditions only makes your code look messy. Choosing between if/else and switch depends on readability, but there's a hidden pro tip that makes switch much more powerful than many people think at first. Traditional Approach: If/Else Normally, we use if/else when our logic depends on complex ranges and multiple variables: // Hard to scan, bulky, and prone to typos let weatherAdvice = "" ; if ( temperature < 15 && isRaining ) { weatherAdvice = " Grab a heavy coat and an umbrella! 🌧️🧥 " ; } else if ( temperature < 15 && ! isRaining ) { weatherAdvice = " It's cold but dry. Just a jacket is fine! 🧥 " ; } else if ( temperature >= 15 && isRaining && isNightTime ) { weatherAdvice = " Warm, rainy night. Stay indoors if you can! 🌧️🌃 " ; } else if ( temperature >= 15 && isRaining && ! isNightTime ) { weatherAdvice = " Warm rain during the day. Don't forget your umbrella! 🌧️🌦️ " ; } else if ( temperature >= 30 && ! isRaining ) { weatherAdvice = " It's scorching hot! Stay hydrated! ☀️🥤 " ; } else { weatherAdvice = " Weather seems pleasant today! 😎 " ; } Pro Tip: Using switch(true) Many developers think you can only use switch when you're checking a single variable against fixed values. However, you can use a switch statement for complex ranges by passing the boolean value true into the switch condition. Here is a cleaner switch statement version of the above code block: // Much easier on the eyes let weatherAdvice = "" ; switch ( true ) { case ( temperature < 15 && isRaining ): weatherAdvice = " Grab a heavy coat and an umbrella! 🌧️🧥 " ; break ; case ( temperature < 15 && ! isRaining ): weatherAdvice = " It's cold but dry. Just a jacket is fine! 🧥 " ; break ; case ( temperature >= 15 && isRaining && isNightTime ): weatherAdvice = " Warm, rainy night. Stay indoors if you can! 🌧️🌃 " ; break ; case ( temperature >= 15 && isRaining && ! isNightTime ): weather

2026-08-23 原文 →
AI 资讯

RPA vs BPA vs Intelligent Automation: A Practical Map for Ops Leaders

Most automation purchases in ops organizations go wrong at the category level, before a single vendor demo happens. A team buys RPA because "automation" was the ask, then discovers six months in that the actual problem needed process orchestration across systems, not a bot clicking through a legacy UI. Or they buy an intelligent automation platform for a workflow that was always going to be simple, straightforward API orchestration, and pay for a cognitive layer they never needed. The three categories solve genuinely different problems, and the confusion between them is expensive in a specific, avoidable way. RPA: automating the UI, not the process Robotic process automation does one thing, and it's narrower than most pitches suggest: it mimics a human interacting with a screen — clicking buttons, reading fields, typing values — usually through UI selectors or an application's accessibility tree, not through an API. That's the entire point of it: RPA exists for systems that don't expose an API at all, or where getting API access would take longer than building a bot that just uses the interface the way a person would. That mechanism is also its defining weakness. A bot built against specific UI coordinates or element selectors breaks the moment the underlying application changes — a button moves, a field gets relabeled, a vendor ships a UI update — and the failure is usually silent until someone notices the process stopped completing. This is the single most common complaint about production RPA deployments, and it's not a implementation mistake, it's structural: robotic process automation is fundamentally built on mimicking a visual interface, and visual interfaces change for reasons that have nothing to do with the automation depending on them. RPA is the right tool specifically for swivel-chair tasks — moving data between systems that don't talk to each other, with no API available on at least one side, at a volume that makes manual entry genuinely costly. It's t

2026-08-23 原文 →