我在 Flutter SEO 上真的很挣扎。 根据这篇文章,Flutter 中的 SEO 不好 https://docs.flutter.dev/platform-integration/web/faq#search-engine-optimization-seo 我在想如果
安装 Google Cloud Platform for Eclipse 时出错:缺少 javax.annotation 依赖项
我在尝试安装适用于 Eclipse 的 Google Cloud Platform 插件时遇到问题。安装过程失败并显示以下错误消息: 无法完成安装,因为...
我第一次在react应用程序中使用googlemaps,遵循此处的google文档:https://developers.google.com/codelabs/maps-platform/maps-platform-101-react-js#0 。 这是一个基本的应用程序,
错误:您不拥有此网站,Google Search Console API
我不断收到错误:“错误:您不拥有此网站,或者检查的 URL 不属于此属性。”当尝试使用 Google Search Console API 检查网址时,尽管我是
如何删除所有 Google Cloud Platform (GCP) 资源中的资源级权限
如何删除所有 Google Cloud Platform (GCP) 资源中的资源级权限? 例如,计算虚拟机实例可共享给另一个 GCP 用户,而无需分配 IAM 角色。有没有...
我正在尝试查找 HTML 的高级搜索查询以自动搜索结果。 例如,普通的 google.com 查询是 https://google.com/search,而图像搜索查询是 https://i...
我正在关注这里的文档,它说: 应用程序向 Google Cloud Platform API 服务进行身份验证的最简单方法是使用应用程序默认凭据 (ADC)。服务使用...
如何在云端托管Python项目(特别是Google Cloud Platform)
我有一个关于在云服务器上托管个人项目的非常简单的(我认为)问题。目前,我每天早上都手动运行我的脚本。我想通过
为什么我无法使用 use:action Svelte 添加/删除主体类
我有这个功能 const bodyClass = (节点) => { if (open && !node.classList.contains("is-search-show")) { node.classList.add("is-search-show&quo...
我想更改 osclass 上的 url 并将 , 替换为 - 现在网址就像:127.0.0.1/en/search/region,9354963/category,books-magazines 我想将网址转换为 127.0.0.1/en/search/region-93...
我在我的博客中使用简单的搜索: 后rb has_rich_text :内容 def self.search(搜索) where('标题ILIKE?或内容ILIKE ?', "%#{search}%", "%#{search}%") 结尾 post_controller.r...
<= x<= pi, 0<=y, z<=2pi. I have written a matlab code to global search the maximum point, with step length 0.01. I also restored the function ...
在 Jenkins 管道中使用“docker buildx build”时出现“未知标志:--platform”
我使用的是RedHat-7系统。我希望通过 Jenkins Pipeline 来实施 DevOps。 但是当我使用 docker buildx 构建功能时,Jenkins 说“未知标志:--platform”。 我运行我的詹金斯......
通过更少的 Java API 调用来映射 Google 云端硬盘内容的有效方法
大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我做这样的事情: 哈希映射 大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我正在做这样的事情: HashMap<String, Strin> foldersPathToID = new HashMap<>(); //searching all folders first saving their IDs searchAllFoldersRecursive(folderName.trim(), driveId, foldersPathToID); //then listing files in all folders HashMap<String, List<File>> pathFile = new HashMap<>(); for (Entry<String, String> pathFolder : foldersPathToID.entrySet()) { List<File> result = search(Type.FILE, pathFolder.getValue()); if (result.size() > 0) { String targetPathFolder = pathFolder.getKey().trim(); pathFile.putIfAbsent(targetPathFolder, new ArrayList<>()); for (File file : result) { pathFile.get(targetPathFolder).add(file); } } } 递归方法在哪里: private static void searchAllFoldersRecursive(String nameFold, String id, HashMap<String, String> map) throws IOException, RefreshTokenException { map.putIfAbsent(nameFold, id); List<File> result; result = search(Type.FOLDER, id); // dig deeper if (result.size() > 0) { for (File folder : result) { searchAllFoldersRecursive(nameFold + java.io.File.separator + normalizeName(folder.getName()), folder.getId(), map); } } } 搜索功能是: private static List<com.google.api.services.drive.model.File> search(Type type, String folderId) throws IOException, RefreshTokenException { String nextPageToken = "go"; List<File> driveFolders = new ArrayList<>(); com.google.api.services.drive.Drive.Files.List request = service.files() .list() .setQ("'" + folderId + "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false") .setPageSize(100).setFields("nextPageToken, files(id, name)"); while (nextPageToken != null && nextPageToken.length() > 0) { try { FileList result = request.execute(); driveFolders.addAll(result.getFiles()); nextPageToken = result.getNextPageToken(); request.setPageToken(nextPageToken); return driveFolders; } catch (TokenResponseException tokenError) { if (tokenError.getDetails().getError().equalsIgnoreCase("invalid_grant")) { log.err("Token no more valid removing it Please retry"); java.io.File cred = new java.io.File("./tokens/StoredCredential"); if (cred.exists()) { cred.delete(); } throw new RefreshTokenException("Creds invalid will retry re allow for the token"); } log.err("Error while geting response with token for folder id : " + folderId, tokenError); nextPageToken = null; } catch (Exception e) { log.err("Error while reading folder id : " + folderId, e); nextPageToken = null; } } return new ArrayList<>(); } 我确信有一种方法可以通过很少的 api 调用(甚至可能是一个调用?)对每个文件(使用文件夹树路径)进行正确的映射,因为在我的版本中,我花了很多时间进行调用 service.files().list().setQ("'" + folderId+ "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false").setPageSize(100).setFields("nextPageToken, files(id, name)"); 每个子文件夹至少一次......并且递归搜索所有内容需要很长时间。最后,映射比下载本身花费的时间更多...... 我搜索了文档,也在此处搜索,但没有找到任何内容来列出具有一个库的所有驱动器调用任何想法? 我想使用专用的 java API 来获取共享 GoogleDrive 中的所有文件及其相对路径,但调用次数尽可能少。 提前感谢您的时间和答复 我建议您使用高效的数据结构和逻辑来构建文件夹树并将文件映射到其路径,如下所示 private static void mapDriveContent(String driveId) throws IOException { // HashMap to store folder ID to path mapping HashMap<String, String> idToPath = new HashMap<>(); // HashMap to store files based on their paths HashMap<String, List<File>> pathToFile = new HashMap<>(); // Fetch all files and folders in the drive List<File> allFiles = fetchAllFiles(driveId); // Build folder path mapping and organize files for (File file : allFiles) { String parentId = (file.getParents() != null && !file.getParents().isEmpty()) ? file.getParents().get(0) : null; String path = buildPath(file, parentId, idToPath); if (file.getMimeType().equals("application/vnd.google-apps.folder")) { idToPath.put(file.getId(), path); } else { pathToFile.computeIfAbsent(path, k -> new ArrayList<>()).add(file); } } // Now, pathToFile contains the mapping of paths to files // Your logic to handle these files goes here } private static List<File> fetchAllFiles(String driveId) throws IOException { // Implement fetching all files and folders here // Make sure to handle pagination if necessary // ... } private static String buildPath(File file, String parentId, HashMap<String, String> idToPath) { // Build the file path based on its parent ID and the idToPath mapping // ... }
BadRequestKeyError:400 错误请求:浏览器(或代理)发送了该服务器无法理解的请求。关键错误:“搜索”标题
App.html 标题 应用程序.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="." method="post"> Search: <input type="text" name="search"> <input type="submit" value="Show"> </form> </body> </html> main.py from flask import Flask, render_template, request app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/CmpPr') def cmpP(): return render_template('CmpPr.html') @app.route('/CmpSpes') def cmpS(): return render_template('CmpSpes.html') @app.route('/App', methods=['POST', 'GET']) def App(): search = request.form['search'] return render_template('output.html', n=search) @app.route('/Gro') def Gro(): return render_template('Gro.html') if __name__ == '__main__': app.run(debug=True) 我创建了多个 html 页面 我想打印消息,从 TextBox 请求(上面的代码)并打印到另一个 html 页面 我尝试使用 request.form.get('search') 但它返回 null 如果我使用 request.form.get('search', FALSE 或 TRUE) 它会返回 FALSE 或 TRUE 我还使用了 if else 循环来指定 GET 和 POST 方法,但仍然显示相同的错误 任何人都可以帮我解决这个问题吗 谢谢你 首先,您的表单操作应该指向处理表单数据的视图(即/App): <form action="/App" method="post"> 其次,您应该只在请求方法为POST时获取表单数据,因为您已经在模板中设置了method="post"。另外,当请求方法为 GET 时,您需要渲染包含表单的 App.html: @app.route('/App', methods=['POST', 'GET']) def App(): if request.method == 'POST': # get form data when method is POST search = request.form['search'] return render_template('output.html', n=search) return render_template('App.html') # when the method is GET, it will render App.html 附注您收到的错误已清楚地解释为表单数据中没有名为 search 的键。 你可以试试这个,对我有用 @app.route('/predict_home_price', methods=['POST']) def predict_home_price(): try: data = request.get_json() # Expecting JSON data # Check if required data is provided if not data: return jsonify({'error': 'No JSON data received'}), 400
调用 OpenAI 完成端点时如何从 AI-Search 文档获取正确的上下文
我找到了有关使用 AI-Search 和 OpenAI 与自己的数据聊天的文档。 它适用于我的数据,但是除了内容和分数之外我没有得到任何其他上下文: {&
我有一个与D365相关的电源页面实现,我实现了一些重复检测规则: https://learn.microsoft.com/en-us/power-platform/admin/set-up-duplicate-detection-rules-...
为什么我不能使用数据类的字段作为jetpack compose中lazyColumn的item的key?
一个非常非常简单的例子(implementation(platform("androidx.compose:compose-bom:2023.08.00"))): com.study.myapplication 包 导入 android.os.Bundle 导入 androidx.activity。
我们如何使用 Visual Studio Code 使用 https://github.com/ballerina-platform/ballerina-spec/blob/master/configurable/spec.md# located-toml-files 中指定的多个 .toml 文件? (假设...
使用父文件夹中的项目和“.”时,VS Code 错误地显示打字稿错误“找不到名称”在文件夹名称中
我的公司有一个名为 cloud-platform 的单一存储库,我们的 React 应用程序位于一个名为 web-app 的文件夹中。 我收到错误无法找到名称“jest”。 ts(2304) 来自 cloud-platform/web-app/ 内的文件夹。
我最近继承了一个代码库并发现了这个宝石: {% if PAGE_EXTRAS.hide_from_sitemap %} 我最近继承了一个代码库并发现了这个宝石: {% if PAGE_EXTRAS.hide_from_sitemap %} <META NAME="ROBOTS" CONTENT="NOINDEX, FOLLOW"> <META NAME="ROBOTS" CONTENT="INDEX, NOFOLLOW"> <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"> {% endif %} 我不知道它想做什么。您是否有理由在这样的网站中放置多个明显冲突的机器人标签?或者它真的像我无知的眼睛看起来那么疯狂吗? 这对我来说似乎是一个错误。我能找到的唯一信息是在 Google 的机器人元标记规范: 如果我们的爬虫遇到竞争指令,我们将使用我们找到的最严格的指令。 所以(至少对于谷歌来说)代码: <meta name="robots" content="noindex, follow"> <meta name="robots" content="index, nofollow"> <meta name="robots" content="noindex, nofollow"> 的作用与: 完全相同 <meta name="robots" content="noindex, nofollow"> 可以想象,这段代码可能是某种偷偷摸摸的黑客行为,旨在通过利用不同的爬虫解决冲突的方式的差异,将不同的规则应用于不同的爬虫。如果是这样,恕我直言,这是一个糟糕的主意。当已经有合法的机制可以做同样的事情时,就不需要进行混乱而脆弱的黑客攻击: <meta name="googlebot" content="noindex, follow"> <meta name="bingbot" content="index, nofollow"> 根据这篇文章,最严格的将获胜: https://developers.google.com/search/blog/2007/03/using-robots-meta-tag
我正在尝试通过主实体更新相关实体。例如,我有产品和优惠。我向 /products 发了一个帖子 { "name": "样品产品", “优惠”:...
在Google表格中,这是很容易找到的技巧 我喜欢Google
使用 jquery javascript 搜索 jstree 节点
我正在使用 jstree 插件来构建我的树。我的网页中有一个搜索框,我需要用户能够在其中搜索 jstree 节点。 我正在使用 jstree 插件来构建我的树。我的网页中有一个搜索框,我需要用户能够在其中搜索 jstree 节点。 <fieldset id="search"> <input type="text" name="search_field" id="search_field" value="" /> <button id="search_tree">Search</button> </fieldset> 单击搜索时,jstree 节点应展开,如果找到,节点应突出显示。如果未找到,则应向用户显示错误,如“未找到”。我的代码用于展开下面的所有节点。有没有简单的方法来搜索jstree中的所有节点? <script type="text/javascript"> $(document).ready(function(){ $("#search_tree").click(function () { var value=document.getElementById("search_field").value; $("#tree").jstree("search",value); }); $("#tree").jstree({ "xml_data" : { "ajax" : { "url" : "jstree.xml" }, "xsl" : "nest" }, "themes" : { "theme" : "classic", "dots" : true, "icons" : true }, "search" : { "case_insensitive" : true, "ajax" : { "url" : "jstree.xml" } }, "plugins" : ["themes", "xml_data", "ui","types", "search"] }); }); </script> 我收到此错误: Instances[...] 为 null 或不是对象。这是一个 jstree 错误。有什么想法吗? 我已将这段代码添加到我的函数中: "search" : { "case_insensitive" : true, "ajax" : { "url" : "jstree.xml" } }, "plugins" : ["themes", "xml_data", "ui","types", "search"] 和 创建了此功能并与我的单击按钮相关联: function myFunction() { $(document).ready(function(){ var value=document.getElementById("search_field").value; $("#search_tree").click(function () { $("#tree").jstree("search",value) }); }); } 2023年,API逐年变化。使用版本v3.3.x, 这是我的工作代码: 创建jstree实例,配置如下: 当您搜索关键字时,请使用:
到目前为止我有这个: 来自 --platform=linux/amd64 amd64/ubuntu:noble 环境术语 Linux ENV DEBIAN_FRONTEND 非交互式 SHELL [“/bin/bash”,“-c”] 环境外壳 /bin/bash 运行 apt upd...
如何在 Google Apps 脚本中使用 Google People API 来获取和添加联系人?
问题: 我正在尝试使用 Google Apps 脚本和 Google People API 来处理 Google 通讯录。这是我需要帮助的内容: 使用 Google People API 从 Google 通讯录中获取联系人。
npm 模块 qr-image 允许使用 NodeJS 生成 QRCode,如下所示: 从“qr-image”导入 qr; 从 'fs' 导入 fs; qr.image('https://google.com/search?q=hello%20world!', {type:'...
在 Hyperledger Firefly Fabric 中部署链码时出错
当您运行以下命令来发起智能合约时: ff 部署结构开发测试 asset_transfer.zip firefly asset_transfer 1.0 我收到以下错误: 错误:docker run --platform linux/...
我正在尝试 MS Bing v7 API。 如果我输入一个curl请求: 卷曲-H“Ocp-Apim-Subscription-Key:” https://api.bing.microsoft.com/v7.0/search?q=vintage+cars&count=25&
如果类型是从变量进行数据绑定,则通过 <object> 标签在 Angular 中显示 pdf 无法在 Chrome 中工作
我正在尝试通过 标签在 Chrome 中显示 pdf。 如果我手动编写类型,它会起作用: 不工作 但是... 我正在尝试通过 <object> 标签在 Chrome 中显示 pdf。 如果我手动写 type: 就可以了 <object [data]="getUrl(true)" type="application/pdf"> Not working </object> 但如果我从变量读取类型则不会: <object [data]="getUrl(true)" [type]="file.mimeType"> Not working </object> 为什么?这是一些非常奇怪的错误,还是我做错了什么可怕的事情。 这里是plunkr。 它可以在 Firefox 中运行(所有 4 个对象都会显示),但不能在 Chrome 中运行 (Version 74.0.3729.169 (Official Build) (64-bit)): 我遇到了同样的问题,但我不明白原因。 就我而言,我决定在基于 Blink 引擎的浏览器中使用“embed”元素而不是“object”元素。 <ng-template #blinkPlatformViewer> <embed [src]="getUrl(true)" [type]="file.mimeType"/> </ng-template> <object *ngIf="!isBlinkPlatform; else blinkPlatformViewer" [data]="getUrl(true)" [type]="file.mimeType"> Not working </object> import { Platform } from '@angular/cdk/platform'; import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; export class FileContentComponent { constructor(private readonly sanitizer: DomSanitizer, private readonly platform: Platform) { } get isBlinkPlatform(): boolean { return this.platform.BLINK; } }
I通过遵循Autodesk Platform Services的“ Hubs浏览器”教程创建了一个Web应用程序。上周它成功运行了,但是现在,在输入我的Autodesk帐户密码后,I G ...
如何使用 Google Drive API 识别和删除大型 Google Takeout ZIP 文件?
如何使用 Google Drive API 识别和删除大型 Google Takeout ZIP 文件? 身体: 我遇到一个问题,Google Takeout 不断在我的 Google 云端硬盘中创建大型 ZIP 文件,c...
如何使用 API Platform 和 Gedmo Translatable 查询可翻译属性
我正在使用 Symfony 6 + API 平台 + Gedmo Translatable。 更新/发布项目工作正常并正确存储翻译。 另外,以正确的语言获得集合是......
如何在 Google Cloud Console 中添加 Google Keep API 范围?
我尝试使用 OAuth 2.0 连接到 Google Keep API,但无法在 Google Cloud Console 中添加所需的范围。我已在“库”部分启用了 Google Keep API,但是当...
嗨,我尝试将 strett 反转到 openstreetmap 中的 gps 坐标,我尝试用这个字符串来做到这一点 卷曲“https://nominatim.openstreetmap.org/search?q=Via+Bruno+Buozzi+18,+Fucecchio+Firenze&fo...
R 网络抓取新手 - 如何使用 rvest 包抓取 IMDB 电影数据?
我是 R 中网页抓取的新手,对 HTML 代码不太熟悉。我正在尝试从 https://www.imdb.com/search/title/?sort=user_ rating,desc&groups=
我尝试使用 WPS 从 JIRA REST API 获取数据。我使用 HTTP PROC 调用 JIRA Rest api。 过程http 方法=“获取” url =“http://服务器名称:8080/rest/api/2/search?%str(&)fields=pro...
我有一个 SonarQ 项目(key=MyProjectKey),根目录下有一些文件夹(FolderA、FolderB...);我想获取每个文件夹的问题数。 和 .../api/issues/search?branch=main&...
我有以下(简化)表格: 之前 我有以下(简化)表格: <form version="1.1"> <init> <set token="MyToken">Before</set> </init> <search id="baseSearch"> <query> <!-- some slow search --> </query> </search> <search base="baseSearch" id="post_process_1"> <query> <!-- some code --> </query> <finalized> <set token="MyToken">Complete</set> </finalized> </search> <row> <!-- Panel that shows the results from baseSearch --> <panel> <html>Token is: $MyToken$</html> </panel> </row> </form> 当我的表单加载时,我期望 MyToken 被初始化为“之前”,并且它将显示在 HTML 块中。我还期待 baseSearch 启动,之后 post_process_1 将运行。此时 MyToken 将更新为“完成”并且 HTML 块将被更新。 实际发生的是,当加载表单时,HTML 块立即显示“完成”。我不明白为什么 - 后处理查询(或者就此而言它所依赖的基本查询)尚未完成。 如果我将 finalized 块移动到基本查询中,那么它就会按预期工作; HTML 块在加载时显示“之前”,然后在 baseSearch 完成后更改为“完成”。 我需要 finalized 块在 post_process_1 查询之后运行,因为我想使用查询结果作为 MyToken 的值 从简单 XML 参考可以看出,您正在寻找 <done> 对已完成的搜索做出反应,其定义为: Execute actions based on finished search events. Includes job properties and first result row. 我在“正确的”文档中找不到 <finalize>,尽管在旧的 Web Framework 中你可以看到它的定义为: Finalizes the search job. (链接可能不稳定 - 至少对我来说是这样。如果它不显示内容,请尝试切换版本。) 由于我目前没有个人 Splunk 版本,因此我无法提供工作示例,但它应该很容易重现。
无法加载DLL“找不到模块HRESULT:0x8007007E”
我有 C# WPF 应用程序,其中使用了 C++ DLL 库。当我构建项目时,它会成功构建,并且所有 DLL 和 exe 都存储在 bin/(Platform) eg(bin/Debug) 文件夹中。 现在如果我...
应用程序无法识别手势,例如在 Angular 11 中使用 Hammer.JS 进行平移
我无法在使用 Hammer.JS 的 Angular 应用程序中识别任何手势,例如滑动、平移。它的设置是这样的: 包.json: “@角度/核心”:“11.0.5”, “@Angular/platform-br...
我将使用“使用 Google Cloud Console”方法在我的 Android 应用程序中实现 Google Play Integrity。我想知道在我从 Google C 启用“Google Play Integrity API”后...
我正在使用 YouTube API v3 来搜索 YouTube。 https://developers.google.com/youtube/v3/docs/search 如您所见,响应 JSON 不包含视频时长。有没有办法获得视频硬膜...
考虑我有一个像这样的简单表格: 考虑我有一个像这样的简单表格: <form method="post" action="index.php"> <input id='textsearch' type="text" placeholder="Enter a character" name="search"> <button onclick="addfields()">Add</button> </form> 此处,当用户单击“添加”按钮时,会触发 onclick 事件并激活 addfields() 功能。在该函数中,我设法在此表单中添加一个输入字段,表单现在如下所示: <form method="post" action="index.php"> <input id='textsearch' type="text" placeholder="Enter a character" name="search"> <input id='textsearch_1' type="text" placeholder="Enter a character" name="search_1"> <button onclick="addfields()">Add</button> </form> 但是,出现了一个问题。如果我使用 php 来访问这些变量,我可以使用这样的东西: <?php $first_char=$_POST["search"]; $second_char=$_POST["search_1"]; ?> 但是它到哪里结束呢?我事先不知道用户创建了多少字段并在这些字段中输入了数据。那么有什么办法可以解决呢? 注意:我知道许多用户不赞成使用 onclick() 功能。我仍然坚持这个不好的使用习惯。对此表示歉意。谢谢。 你可以尝试这个概念 HTML 表单 <form method="post" action="index.php"> <input id='textsearch' type="text" name="search[]"> <input id='textsearch_1' type="text" name="search[]"> <button onclick="addfields()">Add</button> </form> PHP <?php $search_text_array=$_POST["search"]; print_r($search_text_array); ?> 你应该得到这个 PHP 结果 Array ( [0] => textsearch [1] => textsearch_1 ) 在此示例中,javascript 使用onclick() 不相关,但解释如何获取 PHP 部分
使用 Azure OpenAI 和 AI 搜索与 Python SDK 进行 RAG 的最佳方法
我很难理解使用 Azure OpenAI、AI Search 作为源和 Python SDK 来实现 RAG 的每种方法的优缺点。两者都很好用,但选项 B...
在 Docker 中的 Ubuntu 上安装最新版本 Node (v20) 的说明不起作用?
我只是按照说明在 Ubuntu 上的 docker 中安装了最新版本的 Node (v20),在我的 Dockerfile 中包含以下内容: 来自 --platform=linux/amd64 ubuntu:22.04 运行 apt-get update 运行 apt-get...
我的本地计算机上运行着四个容器(Elastic search (8.10.2)、Logstash、Kibana 和我的应用程序容器),并且应用程序配置为将日志转发到 Logstash。我是
我正在开发一个使用硒的小型网络抓取项目,其中我从服装网站上抓取了一些产品信息:(https://www.asos.com/us/search/?q=shirt),我'我已经能够得到 mos...
如何在 AWS Elastic Beanstalk 环境/应用程序中运行 artisan migrate?
我已经完成了所有这些事情来部署我的应用程序,但我无法在部署中运行 php artisan migrate。我已经尝试了从container_commands到.ebextensions/.platform/hooks的许多解决方案,但没有任何效果......