【每日英文阅读】- Apple to Source all US iPhones from India, Pivots Away from China.


Apple to Source all US iPhones from India, Pivots Away from China.

翻译:苹果将所有美国市场的iPhone转由印度生产,逐渐远离中国。

source 名词的意思是:来源,根源,原因,源头,v.(从…)获得;

比如:Television and the internet are the most useful sources of information nowadays. 电视和网络是当今最有用的信息来源。

本句子中,source是动词的属性。

Apple says that it plans to begin sourcing all US iPhones from India, pivoting away from previously sourcing them from China. According to a Financial Times report, the tech giant aims to make the shift as soon as next year.


苹果表示,计划从明年起开始将美国市场的所有iPhone转由印度生产,转变以往主要依赖中国的供应模式。根据《金融时报》的报道,这家科技巨头正致力于尽快完成这一转变。

pivot .

n. 中樞,樞紐,要點,中心點。

Forming the pivot of the exhibition is a large group of watercolours.

整個展覽的重點是一大組水彩畫。

v. if something pivots , it balances or turns on a central point. 在樞軸上轉動

He pivoted his whole body through ninety degrees .他整個身體轉動90度。

短語:pivot away from ,轉向、脫離原有的方向

WordPress wp-cli 安装

wp-cli 是wordpress的命令行接口,你可以通过该命令实现更新组件、配置多网站安装和更多功能,而不需要一个web浏览器,比较适合开发者或者喜欢命令行的用户使用。

Mac 平台

brew install wp-cli

Linux 平台

通過下載phar 文件是官方比較推薦的安裝方式。在安裝wp-cli之前,請確認一下本地的安裝環境:

  1. Unix-like enviroment (OS X, Linux ,FreeBSD, Crygwin );
  2. PHP5.6 or later
  3. WordPress 3.7 or later .

滿足了以上的安裝環境,下載phar文檔:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

本地會有一個wp-cli.phar文檔,檢查文檔信息:

php wp-cli.phar --info

輸出結果:

为了保证整个wp-cli在全局中使用或者别名为wp命令,先要赋予wp-cli.pharx的权限:

chmod +x wp-cli.phar

通过mv命令执行重命名:

sudo mv wp-cli.phar /usr/local/bin/wp

執行wp --info命令,會得到當前wp安裝環境的更詳細的信息:

OS:	Linux 4.18.0-25-generic #26-Ubuntu SMP Mon Jun 24 09:32:08 UTC 2019 x86_64
Shell:	/bin/bash
PHP binary:	/usr/bin/php7.2
PHP version:	7.2.24-0ubuntu0.18.04.17
php.ini used:	/etc/php/7.2/cli/php.ini
MySQL binary:	/usr/bin/mysql
MySQL version:	mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper
SQL modes:
WP-CLI root dir:	phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:	phar://wp-cli.phar/vendor
WP_CLI phar path:	/home/chengyue.wang
WP-CLI packages dir:
WP-CLI cache dir:	/home/wong/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version:	2.11.0

OK,wp的安装就完成了。

Related link

  1. https://developer.wordpress.org
  2. https://developer.wordpress.org/plugins/
  3. https://github.com/WordPress/WordPress

如果你需要wordpress的主题或者插件开发,请联系我。

手动升级 OpenWrt 的PassWall軟件

背景

最近使用的舊版軟件PassWall(以下簡稱:PW)一直在出現自動關掉的問題,看軟件版本有點太低了,於是就考慮嘗試升級相關的軟件,使用Openwrt的內部升級系統,發現提示升級不了,只能手動更新,為了方便使用開發環境需要的美國網絡,在不更換Openwrt系統的情況下,升級該軟件。

介紹

PW的軟件在github上有專門的倉庫進行維護,所以只需要自己的Openwrt版本下載響應的軟件版本即可。

PW 最新版本的支持的內容比較豐富,如果不是PW軟件出現異常,最好不要動,只需要更新部分組件即可。

操作步驟:

注意⚠️:在進行升級的時候,做好配置的備份或者快照備份,防止出現異常導致無法回滾正常狀態。


  1. 登陸Openwrt查看軟路由的CPU架構,在OpenWrt的TTYD終端或者電腦客戶端SSH登陸到路由器通過執行:
uname -m

返回的結果如下:

x86_64

其中關鍵字x86_64 就是該軟路由的CPU架構。

2. 在Github的PW倉庫中的releases界面查找符合CPU架構的軟件版本:

PW的軟件發佈頁面: https://github.com/xiaorouji/openwrt-passwall/releases

找到x86_64的關鍵字的軟件包,如下圖:

使用wget或者直接瀏覽器中下載zip壓縮包。

wget https://github.com/xiaorouji/openwrt-passwall/releases/download/25.4.20-1/passwall_packages_ipk_x86_64.zip

解壓該安裝包:

 unzip passwall_packages_ipk_x86_64.zip

輸出結果:

Archive:  passwall_packages_ipk_x86_64.zip
  inflating: chinadns-ng_2025.03.27-r1_x86_64.ipk
 extracting: dns2socks_2.1-r2_x86_64.ipk
  inflating: geoview_0.1.6-r1_x86_64.ipk
  inflating: hysteria_2.6.1-r1_x86_64.ipk
 extracting: ipt2socks_1.1.4-r3_x86_64.ipk
 extracting: microsocks_1.0.5-r1_x86_64.ipk
  inflating: naiveproxy_135.0.7049.38-r1_x86_64.ipk
  inflating: shadowsocks-rust-sslocal_1.23.0-r1_x86_64.ipk
  inflating: shadowsocks-rust-ssserver_1.23.0-r1_x86_64.ipk
  inflating: shadowsocksr-libev-ssr-local_2.5.6-r11_x86_64.ipk
  inflating: shadowsocksr-libev-ssr-redir_2.5.6-r11_x86_64.ipk
  inflating: shadowsocksr-libev-ssr-server_2.5.6-r11_x86_64.ipk
 extracting: simple-obfs_0.0.5-r1_x86_64.ipk
  inflating: sing-box_1.11.8-r1_x86_64.ipk
 extracting: tcping_0.3-r1_x86_64.ipk
  inflating: trojan-plus_10.0.3-r2_x86_64.ipk
  inflating: tuic-client_1.0.0-r1_x86_64.ipk
  inflating: v2ray-geoip_202504050136.1_all.ipk
  inflating: v2ray-geosite_20250407044718.1_all.ipk
  inflating: v2ray-plugin_5.25.0-r1_x86_64.ipk
  inflating: xray-core_25.3.31-r1_x86_64.ipk
  inflating: xray-plugin_1.8.24-r1_x86_64.ipk

會出現很多的*.ipk文件,安裝這些文件,執行:

opkg install *.ipk

PW的组件升級就完成了。如果其中遇到什麼問題,可以在評論區留言的喔。

如果想要升级PW的本身軟件而非組件,則下載PW的的ipk.

在上圖的releases界面中,選擇PW的ipk下載,(選擇適合你的Openwrt版本),我的OpenWrt版本是24.10,通過 cat /etc/openwrt_release 命令查看Openwrt的版本:

cat /etc/openwrt_release

輸出的結果:

DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='24.10.0'
DISTRIB_TARGET='x86/64'
DISTRIB_ARCH='x86_64'
DISTRIB_TAINTS='no-all'
DISTRIB_REVISION='R25.2.5'
DISTRIB_DESCRIPTION='bleachwrt plus 20250213 @ '

其中,DISTRIB_RELEASE 常量就是當前Openwrt的版本。

所以我選擇了帶有“luci-24.10“關鍵字的進行下載:

wget https://github.com/xiaorouji/openwrt-passwall/releases/download/25.4.20-1/luci-24.10_luci-app-passwall_25.4.20-r1_all.ipk

然後執行:

opkg install luci-24.10_luci-app-passwall_25.4.20-r1_all.ipk

PW的主程序就更新完成啦。

总结:

本文通过手动下载 PW 相关组件包,通过命令的方式升级,实现无需重装 OpenWrt 升级插件版本,举一反三,如果要升级其他组件,只要知道相关依赖的组件包也同样可以使用手动下载安装上传达到升级的目的。

推荐系统二三事

推荐系统, 在目前信息大爆炸的年代,早就成了一个耳熟能详的词语,对于目前用短视频APP的用户,应该不会感到陌生,在抖音,快手,YouTube,FaceBook,Amazon ,Tmall 等等各种社交或者购物网站,都已经看到这样的现象:用户浏览了几个视频或者商品,系统会自动推荐很多相关或者类似的视频或者商品。 本文皆在概述当前主流的推荐系统算法,帮助数据科学家根据企业的限制条件和需求,选择最合适的算法。

下面就總結一下目前市面存在的推薦算法

Collaborative filtering(協同過濾)-CF

協同過濾是推薦系統中比較常見(most commonly) 的推薦系統算法之一。 即使是初學的數據專家也可以利用它構建一個個性化的電影推薦系統,最常見的比如:一個簡歷項目。

當我們想要給一個用戶推薦某些內容的時候,最常見的做法是:找用戶的興趣相似的用戶,分析他們的行為,然後推薦給用戶類似的內容。 或者我們也可以查看與該用戶購買過的商品,然後推薦類似的商品。

基本邏輯就是:

  1. 你喜歡的,也許和你相似的人也喜歡
  2. 如果你喜歡電影A,你也可能喜歡電影B,因為很多人喜歡電影A的時候,也喜歡電影B

These are two basic approaches in Collaborative Filtering :user-based collaborative filtering and item-based collaborative filtering ,respectively.

在这两种情况下,推荐引擎的工作过程通常包括两个步骤:

  1. 找出数据库中与目标用户或物品相似的其他用户或物品;
  2. 根据这些更相似(most similar)的用户或物品的“总权重”,评估其对某个产品的评分,并据此预测目标用户可能会给出的评分。

那麼在算法中,我們如何理解“更相似(Most similar)”這個意思?

我们拥有每个用户的一个偏好向量,矩阵R中的一行,用户的对某个产品的评分向量,矩阵R中的列。

如下表格:

Matrix ‘s user and Product or item.

首先,我们只保留在两个向量中都已知评分的元素。

例如,如果我们想比较 BillJane 的相似度,我们可以指出:Bill 还没有看过《泰坦尼克号》,而 Jane 目前还没看过《蝙蝠侠》,所以我们只能通过他们**共同看过的《星球大战》**来衡量相似度。

话说回来,谁居然没看过《星球大战》呢,对吧?🙂

市面上用来评估相似度的技术-Cosine.


我们通过计算用户或物品向量之间的相似度或相关性,并在最后一步根据相似度的权重,采用加权算术平均值来填补评分矩阵中缺失的单元格(空值)。

推荐系统中的矩阵分解(The Matrix decomposition of recommendation)

接下来的一个有趣方法是基于矩阵分解的推荐算法。这是一种非常优雅的推荐方法,因为通常在处理矩阵分解时,我们并不会特别关注结果矩阵中的列和行到底代表什么

但在这个推荐引擎中,我们可以清楚地看到:

  • u:表示第 i 个用户的兴趣向量
  • v:表示第 j 部电影的属性(参数)向量

因此,我们可以用向量内积(点积)来近似表示用户 i 对电影 j 的评分 x

我们通过已知的评分数据来构建这些用户向量 u和电影向量v,并使用它们来预测未知评分

例如,经过矩阵分解后,我们得到了 Ted 的向量为 (1.4, 0.9),电影 A 的向量为 (1.4, 0.8)。

那么我们就可以通过计算这两个向量的点积(dot product),来还原出 Ted 对电影 A 的预测评分。

User’s u and item’s v

Clustering-聚类

Clustering 聚类,是一种无监督学习技术,是内容推荐的算法之一,用于将用户和物品分组,从而提高推荐的准确性和效率。

前面介绍的推荐算法相对较为简单,更适合用于小型系统。到目前为止,我们一直将推荐问题视为监督式机器学习任务来处理。现在,是时候引入无监督学习方法来解决这个问题了。

设想我们正在构建一个大型推荐系统,这时候仅靠协同过滤(Collaborative Filtering)或矩阵分解(Matrix Decomposition)已经无法高效处理全部数据。

此时,最自然的想法就是引入 聚类(Clustering)方法。

At the start of a business,there is a lack of previous user’s grades,and clustering would be the best approach.

单独使用聚类算法其实效果是有限的。

因为实际上,它所做的只是:识别用户群体,然后对同一群体中的所有用户推荐相同的商品或内容。

换句话说,每个群体内的用户得到的是一套“统一”的推荐,个性化程度较低。

当我们拥有足够多的数据时,更好的做法是将聚类作为协同过滤算法的预处理步骤

用于缩小潜在邻居的搜索空间,从而提高协同过滤的效率和精度。

此外,聚类的引入还可以在更复杂的推荐系统中提升整体性能

在这种方法中,每个聚类(用户群)都会被分配一组“典型偏好”

这些偏好是基于该群体内用户的整体行为提炼而来的。

之后,该群体中的所有用户都会收到基于该群体偏好生成的推荐内容

深度学习推荐系统-Deep learning approach for recommendations

在过去的十年里,神经网络取得了巨大的发展飞跃。如今,它被广泛应用到各类场景中,并逐步取代传统的机器学习方法。接下来,我会为你讲解YouTube 如何运用深度学习方法来实现推荐系统的。

毫无疑问,为这样的平台设计推荐机制是一项极具有挑战性的任务。因为这个推荐系统挑战在于:

  1. 平台规模大(Big Scale)
  2. 内容库频繁的更新(Dynamic Corpus)
  3. 存在许多不可观测的外部因素(Unobservable external factors)

The YouTube Recommendation system algorithms consists of two neural networks .

  1. candidate generation
  2. for Ranking .
YouTube ‘s Deep Learning System Recommendations

用户的历史行为:点击、观看、搜索、点赞

以用户历史行为作为输入,候选词生成网络会显著缩小候选词视频的数量,以庞大的内容库中筛选出一组与用户相关的视频内容高。所生成的候选项是对该用户最相关的内容,而我们正在预测该用户对这些内容的评分或偏好。该网络的目标,通过协同过滤的方式实现初步的个性化推荐。


在此阶段,我们已经筛选出一小部分与用户相似的候选视频。接下来的目标是更细致地分析这些候选项,以便做出最优决策。这个任务由排序网络(ranking network)完成,它会根据一个目标函数为每个视频打分。该函数结合了描述视频的数据和用户行为信息。得分最高的视频将按照分数排序,呈现给用户。

Ranking network.

From Youtube Recommendation-deep Neural networks.


通过采用两阶段的方法,我们可以在极为庞大的视频库中进行推荐,同时确保最终选出的少量视频对用户而言是高度个性化且具有吸引力的。该设计还使我们能够将来自其他来源生成的候选视频融合在一起。


推荐任务被建模为一个极端多分类(extreme multiclass classification)问题,即在给定用户(U)和上下文(C)的条件下,从视频库(V)中数百万个视频类别(i)中准确预测用户在某一时刻 t 所观看的特定视频 w_t。


在构建个性化推荐系统之前需要注意的重要事项:

  1. 如果你拥有一个大型数据库,并希望从中进行在线推荐,最有效的方式是将该问题划分为两个子问题:a.选择Top-N候选;b.排名评分。
  2. 那么,如何评估模型的推荐质量呢?除了使用标准的质量评估指标外,推荐系统还常用一些特定的评估指标,如:Recall@k(召回率)Precision@k(准确率)Average Recall@k(平均召回率)Average Precision@k(平均准确率)。强烈建议查阅推荐系统中关于这些评估指标的详细说明。
  3. 如果你采用分类算法来解决推荐问题,需要考虑负样本的生成问题。例如,如果用户购买了某个被推荐的商品,这可以作为一个正样本,但不应简单地将其未购买的其他推荐项视为负样本。
  4. 关注算法的线上评分(online-score)与线下评分(offline-score)。仅依赖历史数据训练模型,可能会导致“原始”或过时的推荐结果,因为此类算法无法捕捉到用户的新趋势与偏好。

Related Link

  1. Deep Neural Networks for YouTube Recommendations.
  2. 9 Must-Have Datasets for Investigating Recommender Systems
  3. Recommender Systems: New Comprehensive Textbook by Charu Aggarwal
  4. Netflix Prize Analyzed: Movie Ratings and Recommender Systems

More On This Mac

How To Install PHP 7.4 and Set Up on Ubuntu 20.04

Introduction

PHP is a popular server scripting language known for creating dynamic and interactive web pages. Getting up and running with your language of choice is the first step in learning to program.

This tutorial will guide you through installing PHP 7.4 on Ubuntu and setting up a local programming environment via the command line. You will also install a dependency manager, Composer, and test your installation by running a script.

You will want to avoid relying on the default version of PHP because that default version could change depending on where you are running your code. You may also wish to install a different version to match an application you are using or to upgrade to a newer version, such as PHP 8.


Setting up PHP7.4

Run the following command to update apt-get itself, which ensures that you have access to the latest versions of anything you want to install:

sudo apt update 

Next , install the software-properties-common ,which adds management for additional software sources:

sudo apt -y install software-properties-common

Next, install the repository ppa:ondrej/php, which will give you all your versions of PHP:
about the ppa:ondrej/php , you can visit the link https://launchpad.net/~ondrej/+archive/ubuntu/php/

sudo add-apt-repository ppa:ondrej/php

Finally, you update apt-get again so your package manager can see the newly listed packages:

sudo apt update 

Then ,You can install the php7.4 and its extensions.

sudo apt install php7.4-cli
sudo apt install php7.4-fpm

extensions:

php7.4 extensions.
php7.4 ‘s extensions

Then ,check the php’s version.

php7.4  -v

output :

ubuntu@channel:~$ php -v
PHP 7.4.3-4ubuntu2.29 (cli) (built: Mar 25 2025 18:57:03) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3-4ubuntu2.29, Copyright (c), by Zend Technologies

You can also install more than one package at one time.Here are a few suggestions of the most common modules you will most likely want to install .example :

sudo apt install php7.4-zip

or

sudo apt install php7.4-mbstring

if you want to install swoole ,try to install php7.4-dev ,get the pecl tool:

sudo pecl install swoole 

or describe a swoole version .

sudo pecl install https://pecl.php.net/get/swoole-4.8.12.tgz

Then you can list all php modules you have installed with command line :

sudo php7.4 -m 

You will receive something similar to following:

php7.4 -m ‘s output

Manage package using composer.

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and will manage installing and updating these packages.

Although similar, Composer is not a package manager in the same sense as yum or apt. It deals with “packages” or libraries, but it manages them on a per-project basis, installing them in a directory (e.g. vendor) inside your project. By default, it does not install anything globally. Thus, it is a dependency manager. It does, however, support a global project for convenience via the global command.

This idea is not new, and Composer is strongly inspired by Node’s npm and Ruby’s bundler.

Suppose:

  • You have a project that depends on several libraries.
  • Some of those libraries depend on other libraries.

Composer:

  • Enables you to declare the libraries you depend on.
  • Finds out which versions of which packages can and need to be installed and installs them by downloading them into your project.
  • Enables you to update all your dependencies in one command.
  • Enables you to see the Basic Usage chapter for more details on declaring dependencies.

There are, in short, two ways to install Composer: locally as part of your project or globally as a system-wide executable. Either way, you will start with the local install.

To quickly install Composer in the current directory, run this script in your terminal:

php7.4 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php7.4 -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }"
php7.4 composer-setup.php
php7.4 -r "unlink('composer-setup.php');"

Most likely, you want to put the composer.phar into a directory on your PATH, so you can simply call composer from any directory (Global install), using for example:

sudo mv composer.phar /usr/local/bin/composer

Now to run Composer , use composer instead of php composer.phar . To check for your Composer Version :

 composer -V

or

composer --version

Test PHP7.4 environment.

To test that your system is configured correctly for PHP, you can create and run a basic PHP script. Call this script p.php:

This will open a new blank file.

Press the i key , then put the following text , which is valid PHP code,inside the file :

Once you’ve added the text, save and close the file. You can do this by pressing the ESC key and pressing the : key. Then input the wq .

Now you can test to make sure that PHP processes your script correctly. Type php to tell PHP to process the file, followed by the name of the file:

If the PHP is processed properly , you will see only the characters with the quotes:

PHP has successfully processed the script, meaning that your PHP environment is successfully installed and you’re ready to continue your programming journey.

Python error:

Graphic showing the text 'SyntaxError in Python' with a Python logo on a gradient blue and orange background.

Illustration of a SyntaxError in Python programming.

ImportError: No module named setuptools

This error occurs when Python can’t find the setuptools module, which is a package commonly used for installing and managing Python packages. Here’s how you can fix it:

  1. Install setuptools using pip: Run this command in your terminal or command prompt:pip install setuptools
  2. If pip isn’t working:
    • Make sure you have pip installed. You can check by running:pip --version
    • If pip isn’t installed, you can install it by downloading get-pip.py from https://bootstrap.pypa.io/get-pip.py and running:python get-pip.py
  3. Check your Python environment:
    • Ensure you’re using the correct Python version where pip is installed. Try:python -m ensurepip --upgrade python -m pip install --upgrade pip setuptools
    • If you’re using a virtual environment, activate it first before running the commands.
  4. Common issues:
    • If you get a “permission denied” error, try with sudo (Linux/Mac) or run the command prompt as administrator (Windows):sudo pip install setuptools
    • If you’re using Python 3, you might need:pip3 install setuptools

马来西亚的数据中心如何成为推动中国人工智能雄心的引擎-每日英文精读

Just off a narrow highway in rural Malaysia, a vast cluster of buildings flanked by rows of solar panels towers above the surrounding palm plantations.

就在马来西亚乡村一条狭窄公路旁,成群的大型建筑群在两排太阳能板的映衬下,耸立在周围的棕榈种植园之上。

1. “Just off a narrow highway”

  • “Just off” 是指在某个地方旁边不远的地方,这里表示建筑群位于狭窄公路旁不远的区域。
  • “Narrow highway” 指的是狭窄的公路,通常这类公路较小,交通不那么繁忙。
off: If something is situated off a place such as a coast, room, or road, it is near to it or next to it, but not exactly in it.离(某地)不远;在…附近;挨着 
example:The boat was anchored off the northern coast of the peninsula.
这艘船停泊在离半岛北部海岸不远的地方。

2. “A vast cluster of buildings”

  • “Vast cluster” 指的是一大片建筑群,强调了建筑群的规模和密集度。
  • “Buildings flanked by rows of solar panels” 表示建筑群的两侧有一排排太阳能板,即太阳能板排列在建筑的两旁,通常目的是为了提供能源符合绿色环保标准

3. “Towers above the surrounding palm plantations”

  • “Towers above” 表示建筑群比周围的环境高出很多,暗示其规模雄伟、建筑物的高度突出。
  • “Palm plantations” 指的是棕榈种植园,棕榈油是马来西亚的主要产业之一,因此这些种植园在马来西亚的农村地区非常普遍。

By the end of 2025, global demand for computing power will have soared to 10 times the level seen in 2023, with more than 40 per cent coming from Asia-Pacific, research firm IDC predicts.

1. “By the end of 2025”

  • “By the end of” 表示在某个时间点之前,这里指的是2025年年底之前,暗示这是一个未来的预期时间节点。

2. “Global demand for computing power”

  • “Global demand” 指的是全球范围内的需求,而“computing power”则是计算能力,通常指的是计算机或数据中心能够处理数据的能力。
  • 随着大数据人工智能云计算等领域的快速发展,对计算能力的需求不断增加。
  • Computing power 计算机算力、目前多是GPU的算力。

3. “Will have soared to 10 times the level seen in 2023”

  • “Soared” 表示需求将急剧增加,表示这不是简单的增长,而是爆发性增长
  • “10 times the level seen in 2023” 表示到2025年,计算能力的需求将是2023年水平的10倍,这一增长预示着技术发展和数字化转型的强劲势头。

4. “With more than 40 per cent coming from Asia-Pacific”

  • “More than 40 per cent” 表示超过40%的需求将来自亚太地区,这一地区作为全球数字经济和技术创新的重心之一,正迅速成为计算能力需求的主要来源。

5. “Research firm IDC predicts”

  • IDC(国际数据公司)是一家知名的市场研究公司,专注于技术、IT和数字市场的分析。这里说明这些预测来自该公司的研究报告。 International Data Corporation – 国际数据公司,是美国一间从事市场研究、分析和咨询的公司,专注于信息技术、电信和消费科技。 IDC是国际数据集团的全资子公司,其总部设于马萨诸塞州Framingham,并在全球110个国家拥有超过1100名分析师。

“Chinese companies are the primary clients of data centres in Malaysia and other Southeast Asian areas,” said Joe Gao, a board member of IBuffett Investment Management, an investment firm specialising in Chinese AI businesses targeting the Southeast Asian market.

1. “Chinese companies are the primary clients of data centres in Malaysia and other Southeast Asian areas”

  • “Chinese companies” 指的是来自中国的企业,这些企业在海外扩展业务时,特别是在东南亚,需要依赖当地的数据中心来提供计算、存储和云服务。
  • “Primary clients” 意味着这些公司是数据中心的主要客户,也就是说,它们是需求的主力来源。
  • “In Malaysia and other Southeast Asian areas” 表示马来西亚以及其他东南亚地区,这强调了东南亚地区作为中国公司数字基础设施需求的关键市场。

2. “Joe Gao, a board member of IBuffett Investment Management”

  • Joe GaoIBuffett投资管理公司董事会成员,这家投资公司专注于中国AI企业,特别是那些面向东南亚市场的企业。
  • IBuffett Investment Management 表明其与投资界和AI产业相关,尤其是在人工智能领域的中国公司及其国际扩展。

3. “An investment firm specialising in Chinese AI businesses targeting the Southeast Asian market”

  • “Specialising in” 表示这家投资公司专注于某一领域,这里指的是中国的人工智能企业
  • “Targeting the Southeast Asian market” 说明这些中国AI企业的目标市场是东南亚,这表明中国的技术公司正在扩展到这个增长迅速的区域。
  • “Investment firm” 强调了这家公司是一家投资公司,致力于为其投资组合中的企业提供资金支持,尤其是在科技和AI领域

《白雪公主》遭遇恶意评分轰炸,IMDb上1星差评数量激增-每日英文

Snow White From IMDB### 英文原文:
Despite that, and issues surrounding Zegler and costar Gal Gadot’s views on the Israel-Gaza war, the film arrived this weekend whistling a tune that was happier than many anticipated. Although the film underperformed for a Disney movie, it still managed to pull in $43 million, making it the second-highest opening of the year so far. Like many blockbusters, the biggest problem with Snow White is that its budget was ridiculously high, meaning that only a huge box office result would see it called anything other than a failure.

中文翻译:

尽管如此,以及围绕泽格勒和同台演员盖尔·加朵对以色列-加沙战争观点的争议,这部电影在本周末上映时,吹响了一首比许多人预期更欢快的曲调。虽然这部电影作为迪士尼影片表现不佳,但它仍然设法赚了4300万美元,使其成为今年迄今为止第二高的开画成绩。像许多大片一样,《白雪公主》最大的问题是其预算高得离谱,这意味着只有巨大的票房成绩才能让它不被视为失败。


翻译分析(为新手详细讲解):

1. 句子结构拆解与翻译策略

英文句子通常较长,包含多个从句和短语。为了翻译成流畅的中文,我们需要拆解句子,调整语序以符合中文的表达习惯,同时保留原文的意思。

  • 第一句:
  • 原文:Despite that, and issues surrounding Zegler and costar Gal Gadot’s views on the Israel-Gaza war, the film arrived this weekend whistling a tune that was happier than many anticipated.
  • 拆解:
  1. Despite that(尽管如此):表示转折,直接放在句首。
  2. and issues surrounding Zegler and costar Gal Gadot’s views on the Israel-Gaza war(以及围绕泽格勒和同台演员盖尔·加朵对以色列-加沙战争观点的争议):这是一个并列的补充信息,用“以及”连接。
  3. the film arrived this weekend whistling a tune that was happier than many anticipated(这部电影在本周末上映时,吹响了一首比许多人预期更欢快的曲调):主句部分,包含一个比喻“whistling a tune”(吹着曲调),表示影片带来的氛围。
  • 翻译要点:
  • 中文不喜欢过长的主语或插入语,所以把“围绕……的争议”作为并列部分放在前面。
  • “whistling a tune”是个形象化表达,直译“吹着曲调”保留了比喻,同时让中文读者能理解其“轻松愉快”的含义。
  • “than many anticipated”翻译为“比许多人预期”,简洁明了。
  • 第二句:
  • 原文:Although the film underperformed for a Disney movie, it still managed to pull in $43 million, making it the second-highest opening of the year so far.
  • 拆解:
  1. Although the film underperformed for a Disney movie(虽然这部电影作为迪士尼影片表现不佳):让步状语从句。
  2. it still managed to pull in $43 million(但它仍然设法赚了4300万美元):主句,表示转折后的结果。
  3. *managed to ** 达成,设法
  4. making it the second-highest opening of the year so far(使其成为今年迄今为止开局票房第二高的电影):结果状语,用分词形式补充说明。
  • 翻译要点:
  • “underperformed for a Disney movie”翻译时要体现“迪士尼电影”的高期待值,所以用“作为迪士尼影片表现不佳”。
  • “pull in $43 million”是个口语化表达,意为“赚了4300万美元”,翻译时保留了具体金额。
  • “second-highest opening”翻译为“开局第二高的成绩”,符合电影行业的术语。
  • 第三句:
  • 原文:Like many blockbusters, the biggest problem with Snow White is that its budget was ridiculously high, meaning that only a huge box office result would see it called anything other than a failure.
  • 拆解:
  1. Like many blockbusters(像许多大片一样):比较状语,放在句首。
  2. the biggest problem with Snow White is that its budget was ridiculously high(《白雪公主》最大的问题是其预算高得离谱):主句+表语从句。
  3. meaning that only a huge box office result would see it called anything other than a failure(这意味着只有巨大的票房成绩才能让它不被视为失败):分词短语进一步解释。
  • 翻译要点:
  • “blockbusters”翻译为“大片”,这是电影行业的常用词。
  • “ridiculously high”用“高得离谱”表达,既保留了夸张语气,又符合中文习惯。
  • “would see it called anything other than a failure”翻译时调整为“才能让它不被视为失败”,更符合中文的逻辑顺序。

2. 词汇选择与语气

  • 专业性:翻译时使用了电影行业的术语,如“开局成绩”(opening)和“大片”(blockbuster),让译文更贴近专业语境。
  • 语气保留:原文有轻松(“whistling a tune”)和批评(“ridiculously high”)的语气,翻译中通过“吹响欢快的曲调”和“高得离谱”保留了这些情感色彩。

3. 中英文语序差异

  • 英文倾向于把主句放在前面,附加信息靠后(如“making it…”);中文则更倾向于把背景或条件提前,结果放后。因此翻译时调整了部分语序,如“虽然……但……”的结构更自然。

4. 文化适应

  • “Snow White”直接翻译为《白雪公主》,因为这是广为人知的迪士尼经典故事,无需过多解释。
  • “$43 million”保留具体数字并转换为“4300万美元”,让中文读者直观理解金额。

MacOS环境下VScode常用快捷键

 

全局
Command + Shift + P / F1 显示命令面板
Command + P 快速打开
Command + Shift + N 打开新窗口
Command + W 关闭窗口

基本
Command + X 剪切(未选中文本的情况下,剪切光标所在行)
Command + C 复制(未选中文本的情况下,复制光标所在行)
Option + Up 向上移动行
Option + Down 向下移动行
Option + Shift + Up 向上复制行
Option + Shift + Down 向下复制行
Command + Shift + K 删除行
Command + Enter 下一行插入
Command + Shift + Enter 上一行插入
Command + Shift + 跳转到匹配的括号
Command + [ 减少缩进
Command + ] 增加缩进
Home 跳转至行首
End 跳转到行尾
Command + Up 跳转至文件开头
Command + Down 跳转至文件结尾
Ctrl + PgUp 按行向上滚动
Ctrl + PgDown 按行向下滚动
Command + PgUp 按屏向上滚动
Command + PgDown 按屏向下滚动
Command + Shift + [ 折叠代码块
Command + Shift + ] 展开代码块
Command + K Command + [ 折叠全部子代码块
Command + K Command + ] 展开全部子代码块
Command + K Command + 0 折叠全部代码块
Command + K Command + J 展开全部代码块
Command + K Command + C 添加行注释
Command + K Command + U 移除行注释
Command + / 添加、移除行注释
Option + Shift + A 添加、移除块注释
Option + Z 自动换行、取消自动换行

多光标与选择
Option + 点击 插入多个光标
Command + Option + Up 向上插入光标
Command + Option + Down 向下插入光标
Command + U 撤销上一个光标操作
Option + Shift + I 在所选行的行尾插入光标
Command + I 选中当前行
Command + Shift + L 选中所有与当前选中内容相同部分
Command + F2 选中所有与当前选中单词相同的单词
Command + Ctrl + Shift + Left 折叠选中
Command + Ctrl + Shift + Right 展开选中
Alt + Shift + 拖动鼠标 选中代码块
Command + Shift + Option + Up 列选择 向上
Command + Shift + Option + Down 列选择 向下
Command + Shift + Option + Left 列选择 向左
Command + Shift + Option + Right 列选择 向右
Command + Shift + Option + PgUp 列选择 向上翻页
Command + Shift + Option + PgDown 列选择 向下翻页

查找替换
Command + F 查找
Command + Option + F 替换
Command + G 查找下一个
Command + Shift + G 查找上一个
Option + Enter 选中所有匹配项
Command + D 向下选中相同内容
Command + K Command + D 移除前一个向下选中相同内容

进阶
Ctrl + Space 打开建议
Command + Shift + Space 参数提示
Tab Emmet插件缩写补全
Option + Shift + F 格式化
Command + K Command + F 格式化选中内容
F12 跳转到声明位置
Option + F12 查看具体声明内容
Command + K F12 分屏查看具体声明内容
Command + . 快速修复
Shift + F12 显示引用
F2 重命名符号
Command + Shift + . 替换为上一个值
Command + Shift + , 替换为下一个值
Command + K Command + X 删除行尾多余空格
Command + K M 更改文件语言

导航
Command + T 显示所有符号
Ctrl + G 跳转至某行
Command + P 跳转到某个文件
Command + Shift + O 跳转到某个符号
Command + Shift + M 打开问题面板
F8 下一个错误或警告位置
Shift + F8 上一个错误或警告位置
Ctrl + Shift + Tab 编辑器历史记录
Ctrl + – 后退
Ctrl + Shift + – 前进
Ctrl + Shift + M Tab 切换焦点

编辑器管理
Command + W 关闭编辑器
Command + K F 关闭文件夹
Command + 编辑器分屏
Command + 1 切换到第一分组
Command + 2 切换到第二分组
Command + 3 切换到第三分组
Command + K Command + Left 切换到上一分组
Command + K Command + Right 切换到下一分组
Command + K Command + Shift + Left 左移编辑器
Command + K Command + Shift + Right 右移编辑器
Command + K Left 激活左侧编辑组
Command + K Right 激活右侧编辑组

文件管理
Command + N 新建文件
Command + O 打开文件
Command + S 保存文件
Command + Shift + S 另存为
Command + Option + S 全部保存
Command + W 关闭
Command + K Command + W 全部关闭
Command + Shift + T 重新打开被关闭的编辑器
Command + K Enter 保持打开
Ctrl + Tab 打开下一个
Ctrl + Shift + Tab 打开上一个
Command + K P 复制当前文件路径
Command + K R 在资源管理器中查看当前文件
Command + K O 新窗口打开当前文件

显示
Command + Ctrl + F 全屏、退出全屏
Command + Option + 1 切换编辑器分屏方式(横、竖)
Command + + 放大
Command + – 缩小
Command + B 显示、隐藏侧边栏
Command + Shift + E 显示资源管理器 或 切换焦点
Command + Shift + F 显示搜索框
Ctrl + Shift + G 显示Git面板
Command + Shift + D 显示调试面板
Command + Shift + X 显示插件面板
Command + Shift + H 全局搜索替换
Command + Shift + J 显示、隐藏高级搜索
Command + Shift + C 打开新终端
Command + Shift + U 显示输出面板
Command + Shift + V Markdown预览窗口
Command + K V 分屏显示 Markdown预览窗口

调试
F9 设置 或 取消断点
F5 开始 或 继续
F11 进入
Shift + F11 跳出
F10 跳过
Command + K Command + I 显示悬停信息

集成终端
Ctrl + 显示终端 Ctrl + Shift + 新建终端
Command + Up 向上滚动
Command + Down 向下滚动
PgUp 向上翻页
PgDown 向下翻页
Command + Home 滚动到顶部
Command + End 滚动到底部

Golang- function goroutine information .

Go by Example :Goroutines.

A gorountine is a lightweight thread of execution .

package main
import (
"fmt"
"sync"
"time"
)
func f(from string) {
for i :=0; i <4; i++ {
fmt.Println(from, ",from:", i)
}
}
func main() {
f("direct")
gof("goroutines")
gofunc(msgstring) {
fmt.Println(time.Now().Format("2006-01-02 15:04:05"), msg)
}("going--going--going")
time.Sleep(time.Second)
fmt.Println("done...")
//waitGroup.
var wg sync.WaitGroup
wg.Add(1)
gofunc() {
defer wg.Done()
fmt.Println("I'm a GoRoutines.....")
}()
wg.Wait()
fmt.Println("main func end....")
return
}

Suppose we have a function call f(s). Here’s how we’d call that in the usual way ,running it synchronously.

To invoke this function in a goroutine, use go f(s). This new goroutine will execute concurrently with the calling one.

You can also start a goroutine for an anonymous function call .

Our two function calls are running asynchronously in separate goroutines now . Wait for them to finish (for a more robust approach , use a WaitGroup).

When we run this program , we see the output of the blocking call first , then the output of the two goroutines. The goroutings’ output may be interleaved , because goroutines are being run concurrently by the Go runtime.