普通视图

发现新文章,点击刷新页面。
昨天 — 2026年6月10日首页

雅典表发布2026新品系列,180周年之际加码机械创新与艺术合作|最前线

2026年6月10日 21:35

2026年6月,上海敬华艺术空间被布置成一间“奇想实验室”。瑞士高级制表品牌Ulysse Nardin雅典表在此举办“奇想无界,创造无境”2026新品品鉴会,将全新[Super] Freak奇想超级腕表、与中国当代艺术家刘人岛合作的鎏金系列《名扬四海》联名腕表,以及多枚代表性时计一并陈列。

对这家1846年诞生于瑞士勒洛克的独立制表商而言,这是一个被精心挑选的时间点——品牌创立180周年,恰逢其标志性的FREAK奇想系列问世25周年。

在全球奢侈品消费整体承压、中国高端钟表市场进入结构性调整的当下,一个拥有180年历史的瑞士品牌,为何把重要的周年节点放在上海,又为何选择与一位以国画见长的中国艺术家联名?答案藏在产品结构与叙事策略的双线之中。

从商业结构看,这场品鉴会呈现的是一组“金字塔”式的产品组合。塔尖是作为周年献礼的[Super] Freak奇想超级腕表。据品牌介绍,新作历时四年研制,是世界上首款融合双陀飞轮与卡罗素结构的自动上链腕表,搭载自制UN-252机芯,由511个零件构成,融合8项专利技术,限量发行50枚,被雅典表称为“品牌制表史上最复杂的‘纯时间’腕表”。

据品牌披露,这枚腕表逾七成零部件经手工装饰打磨,约97.46%的机芯零件处于运动状态,并由同一位制表大师耗时60小时完成组装。塔身则是更具文化指向的《名扬四海》联名系列——《知音》《妙音》《玄曲》《悠雅》四款,均采用40毫米5N玫瑰金表壳与自制UN-320机芯,配备硅质游丝与擒纵机构,每款限量25枚,全系列共100枚。

图片来源:品牌

高复杂度的“光环产品”负责确立技术与价格的天花板,文化联名负责打开本土市场的情感入口,这是高端制表品牌常见的组合打法。而联名的另一半——艺术家刘人岛,提供了这套叙事的东方落点。

刘人岛的履历横跨多个标签:把国画送上太空、在故宫办展、横跨“六艺”。但海洋对他而言原本是陌生题材。“我的老家在湖南新宁,属于‘八山半水’的内陆地区,”他回忆,真正看到海,是上大学后第一次外出写生时——一位女同学落水,他下水相救,连呛了几口海水。“当时海给我的感觉就是特别壮阔,无边无际,以及苍茫。”正是这种印象,催生了他后来《观沧海》等海洋题材的创作。

与雅典表的相遇带着偶然。据刘人岛讲述,2024年他在苏州举办个人画展,雅典表中国区负责人前来参观,对其山水与海洋作品产生兴趣,双方由此展开对话。更早的渊源则来自一段口述历史——他的朋友、瞿秋白的侄子曾向他提起,瞿秋白早年将收藏的雅典表典当,用以支持革命。

让双方“一拍即合”的,是一种关于“运动”的共识。“时间是一种流动,海洋也是在运动,雅典表的机芯也是一种运动中的状态,”刘人岛告诉36氪。雅典表以航海天文台钟起家,海洋是其品牌历史的精神源流;而在他的笔下,海则是东方语境里流动、包容、生生不息的意象。

被问及在这次合作中最希望被如何定义——“海洋画家”“太空艺术家”抑或其他,刘人岛给出的答案是“全能的画家”。

“艺术是相通的,”他说,画山水时碰到人就得画人,花鸟、山河、海洋、气候都要能驾驭,“画山水有大的气势,画海洋也要一种气势”。在他看来,全能意味着对整幅画的宏观把控,否则“画什么也只是一个局部”。这种“通”的自我定位,某种程度上与雅典表跨越机械结构、材料与时间显示方式的“破界”叙事形成了呼应。

联名系列的命名同样被刻意经营。英文“Make Waves”意为“造浪”,中文译作“名扬四海”。刘人岛称命名先于创作:“很多事情讲究的其实是一种‘缘’,它既是缘分,也是‘圆满’。”在他看来,地球上的各大洋本就圆融一体,四幅画作要表现的正是这种“圆”,其中既有海洋,也包含对四季轮回与人生的思考。四款表名亦取东西兼容之意:知音既指中国语境里的知己,也暗合钟表运转的声音;玄曲取“科学的最高境界是玄学”之意;悠雅之“雅”呼应“雅典”。

一个绕不开的技术与美学难题,是中国画的“留白”如何落到以精确为天职的表盘上。“海洋最难画的不是海的整体,而是浪,”刘人岛解释,浪花在阳光透射下晶莹剔透,若直接以白色涂抹,画面会“显得很板,没有灵动性”。他将海浪的生命力比作人的不同年龄阶段——幼年活蹦乱跳、中年奔放、晚年平静,“海最经典的状态,应该像我们人生一样,只有在生命力最奔放的时候,才是最美的时候”。据品牌介绍,雅典表的微绘大师将其原创水墨凝练于表盘,在毫米之间保留海浪的层次、光影与气韵。

图片来源:品牌

那么,这套用料不菲、产量极小的联名系列,瞄准的是谁?刘人岛的回答没有停留在“藏家”或“新中产”的标签上。“谁碰到它,能够把它当成自己的知己,那就是它的受众,”他说。在他的描述里,这四块表是表的理性机械与中国绘画感性之间的碰撞,最终指向“那些愿意去思考‘时间的形状究竟是什么’的人”——当指针扫过腕间浪涛,“感受到时间不是冰冷的刻度,而是奔涌不息的浪、是停在方寸的蓝”。

对雅典表而言,这种“东方知音”的叙事,是其更大版图中的一块。据品牌资料,自1846年起,Nardin家族历经五代,打造出广受多国海军信赖的航海时计,迄今累计获得超过4300项技术与设计大奖;2001年问世的FREAK奇想腕表以“无表冠、无指针、无表盘”重新定义机械腕表,其FREAK [ONE]曾摘得2023年日内瓦钟表大赏(GPHG)“最佳标志性腕表”奖项;品牌还与芝柏表联合创立独立制表体系,并在日内瓦、硅谷、迪拜与上海设有旗舰店。

从财经视角审视,这套组合折射出独立高端制表近年的一种共同选择:以极致复杂度与超低产量制造稀缺性,再借文化联名降低进入新兴市场的叙事门槛。100枚联名腕表与50枚超级腕表的发行量,决定了它们更接近“叙事载体”而非走量产品;其商业回报,既来自单品的高溢价,也来自周年节点上品牌资产的再确认。雅典表在品鉴会上未披露相关定价与销售目标,实际市场反响仍有待观察。

180年的航海传承与25年的“破界”叙事,如今在上海与一位中国艺术家的水墨相遇。这场相遇能否转化为持久的市场认同,仍需时间检验;但至少在方寸表盘之上,雅典表完成了一次东西方语汇的拼合。正如刘人岛所言,他要画的从来不只是海洋本身,“更关乎内观、流动与生命的节律”。

How to Deploy a Node.js Application on Ubuntu 26.04

Running node app.js on a developer laptop is one thing; getting the same code to stay up on a production server, restart after a crash, survive a reboot, and answer requests on standard HTTPS ports is another. A working Node.js deployment on Ubuntu 26.04 has three moving parts: the runtime, a process manager that keeps the app alive, and a reverse proxy that handles TLS and routes traffic to the application.

This guide explains how to deploy a Node.js application on Ubuntu 26.04 using PM2 as the process manager and Nginx as the reverse proxy, with a Let’s Encrypt certificate in front.

Prerequisites

Before starting you need:

  • Ubuntu 26.04 with a user that has sudo privileges
  • A domain name with an A record pointing at the server’s public IP
  • Ports 80 and 443 open in the firewall

We will use example.com and an app that listens on port 3000. Substitute your real values.

Step 1: Install Node.js

Ubuntu 26.04 includes Node.js in its repositories, but NodeSource makes it easier to install a specific upstream LTS release. The commands below install Node.js 24.x, the current LTS line at publication time.

Install the required packages and import the NodeSource signing key:

Terminal
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
 sudo gpg --dearmor --yes -o /etc/apt/keyrings/nodesource.gpg

Add the Node.js 24.x repository:

Terminal
NODE_MAJOR=24
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | \
 sudo tee /etc/apt/sources.list.d/nodesource.list

Update the package index and install Node.js:

Terminal
sudo apt update
sudo apt install -y nodejs

Confirm both binaries are in place:

Terminal
node --version
npm --version
output
v24.16.0
11.16.0

The exact patch versions will change as Node.js and npm updates are released. For other installation methods, see our guide on installing Node.js and npm on Ubuntu 26.04 .

Step 2: Prepare a Deploy User and Directory

Production apps should run as a non-root account that owns only its own files. Create a dedicated user:

Terminal
sudo adduser --system --group --home /var/www/app --shell /bin/bash app

The --system flag creates an account with password login disabled, which is appropriate for a service account. Administrators can still run deployment commands as this user through sudo.

Set up the deployment directory:

Terminal
sudo mkdir -p /var/www/app
sudo chown -R app:app /var/www/app

Step 3: Get the Application onto the Server

Most deployments pull the code from Git. Clone the repository as the app user:

Terminal
sudo apt install -y git
sudo -H -u app git clone https://github.com/example/myapp.git /var/www/app

Install dependencies inside that directory:

Terminal
sudo -H -u app bash -c 'cd /var/www/app && npm ci --omit=dev'

npm ci is the right command for deploys: it reads package-lock.json and refuses to fall back when the lock file is out of sync. --omit=dev skips development-only dependencies, which keeps the production install smaller.

If the application has a build step that depends on development packages, install all dependencies first, build the project, and then remove development-only packages:

Terminal
sudo -H -u app bash -c \
 'cd /var/www/app && npm ci && npm run build && npm prune --omit=dev'

For private repositories, configure an SSH deploy key or a short-lived access token for the app account. Do not store repository credentials in the application directory.

For a quick test without a real repository, write a minimal Express app instead:

Terminal
sudo -H -u app bash -c 'cd /var/www/app && npm init -y && npm install express'
sudo -H -u app nano /var/www/app/server.js
/var/www/app/server.jsjs
const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
 res.send("Hello from Node.js on Ubuntu 26.04");
});

app.listen(port, "127.0.0.1", () => {
 console.log(`App listening on http://127.0.0.1:${port}`);
});

Notice that the listen call binds to 127.0.0.1, not 0.0.0.0. The reverse proxy will reach the app over loopback, and binding to localhost keeps the application off the public network entirely.

Step 4: Install PM2 and Run the App

PM2 is a Node.js process manager that handles restarts, logs, and clustering. Install it globally:

Terminal
sudo npm install -g pm2

Configure any required environment variables before starting the process. Keep API keys, database passwords, and other secrets outside the Git repository, and add local .env files to .gitignore.

Start the application under PM2 as the app user:

Terminal
sudo -H -u app pm2 start /var/www/app/server.js --name myapp --time
output
[PM2] Starting /var/www/app/server.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┤
│ 0 │ myapp │ default │ 1.0.0 │ fork │ 12345 │ 0s │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┘

Verify the app responds on loopback:

Terminal
curl http://127.0.0.1:3000
output
Hello from Node.js on Ubuntu 26.04

To make PM2 start the app at boot, generate the systemd unit and freeze the process list:

Terminal
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u app --hp /var/www/app
sudo -H -u app pm2 save

The first command writes and enables pm2-app.service; the second saves the current process list so PM2 knows what to start. Confirm the unit is enabled:

Terminal
sudo systemctl status pm2-app

Step 5: Install and Configure Nginx

Install Nginx:

Terminal
sudo apt install nginx

Create a server block that proxies requests to the Node.js app:

Terminal
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.comnginx
server {
 listen 80;
 listen [::]:80;

 server_name example.com www.example.com;

 location / {
 proxy_pass http://127.0.0.1:3000;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
}

The headers preserve the original host, client IP, and protocol for the application. If the app uses WebSockets, add the upgrade settings from the Nginx reverse proxy guide .

Enable the site and test the configuration:

Terminal
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Open the firewall:

Terminal
sudo ufw allow 'Nginx Full'

Visit http://example.com and confirm the page renders. Requests now travel from the browser to Nginx on port 80, then to Node.js on loopback port 3000.

Step 6: Add HTTPS with Certbot

Install Certbot and the Nginx plugin:

Terminal
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot rewrites the server block to terminate TLS, adds an HTTP-to-HTTPS redirect, and registers a renewal timer. Verify:

Terminal
curl -I https://example.com
sudo certbot renew --dry-run

The first command should return a successful HTTP status over HTTPS. The renewal dry run confirms that Certbot can renew the certificate before it expires.

Step 7: Manage the App with PM2

Once the deployment is live, the day-to-day operations all go through PM2:

Terminal
sudo -H -u app pm2 ls
sudo -H -u app pm2 logs myapp
sudo -H -u app pm2 restart myapp
sudo -H -u app pm2 stop myapp

PM2 writes application output under /var/www/app/.pm2/logs. Install the log rotation module so those files do not grow without limit:

Terminal
sudo -H -u app pm2 install pm2-logrotate
sudo -H -u app pm2 set pm2-logrotate:max_size 10M
sudo -H -u app pm2 set pm2-logrotate:retain 7

To deploy a new version, pull only fast-forward changes, install dependencies, and restart the process:

Terminal
sudo -H -u app bash -c \
 'cd /var/www/app && git pull --ff-only && npm ci --omit=dev'
sudo -H -u app pm2 restart myapp --update-env
sudo -H -u app pm2 save

This guide starts the app in fork mode, so pm2 restart briefly interrupts requests. Zero-downtime pm2 reload requires cluster mode with at least two instances:

Terminal
sudo -H -u app pm2 delete myapp
sudo -H -u app pm2 start /var/www/app/server.js --name myapp -i 2 --time
sudo -H -u app pm2 save
sudo -H -u app pm2 reload myapp

Cluster mode works well for stateless HTTP applications. Apps that keep sessions, scheduled jobs, or WebSocket state in memory need an external store or additional coordination before running multiple instances.

Troubleshooting

502 Bad Gateway from Nginx
The Node.js app is not running, not listening on the expected port, or bound to the wrong address. Check sudo -H -u app pm2 ls and confirm the process is online, then run sudo ss -ltnp | grep 3000 to confirm it is listening on loopback.

PM2 does not start at boot
The systemd unit was not enabled, or pm2 save was skipped. Check sudo systemctl status pm2-app, re-run the startup command, and then run sudo -H -u app pm2 save.

Certbot cannot validate the domain
Confirm that the domain’s A and AAAA records point to this server, port 80 is reachable, and sudo ufw status shows Nginx Full allowed. If an incorrect AAAA record points elsewhere, Let’s Encrypt validation can fail even when the A record is correct.

FAQ

Why use Nginx in front of Node.js?
Nginx handles the public ports and TLS certificate while the Node.js process stays on an unprivileged local port. It also gives you one place for request limits, static files, access logs, and routing several applications by domain.

Can I run multiple Node.js apps on the same server?
Yes. Give each app its own port, its own PM2 entry, and its own Nginx server block. The reverse proxy routes by hostname so each app gets the requests for its domain only.

Should I use PM2 or systemd directly?
Both work. PM2 adds Node.js-specific process controls, clustering, and reloads, while systemd is simpler when you only need to supervise one process. In this setup, systemd starts PM2 at boot and PM2 manages the application.

Conclusion

A production Node.js deployment on Ubuntu 26.04 uses PM2 to keep the application running and Nginx to handle public HTTP and HTTPS traffic. Keep the app bound to loopback, rotate its logs, and test the update procedure before the server carries production traffic.

For related setup, see our guides on installing Node.js on Ubuntu 26.04 and configuring Nginx as a reverse proxy .

杰瑞股份:外部经营环境未出现重大变化,北美燃气轮机发电机组已多次涨价

2026年6月10日 20:52
36氪获悉,杰瑞股份公告,目前,公司整体生产经营状况正常,外部经营环境未出现重大变化,包括燃气轮机在内的各产品线运行稳定。在电力业务领域,公司坚定看好燃气轮机发电行业未来发展趋势,并将持续深耕该领域的相关业务。公司燃气轮机发电机组销售价格今年以来已多次上涨,受益于行业供不应求态势。在产能方面,北美地区已具备本地化装配生产能力,并通过扩建原有厂房及租赁厂房进一步提升产能;阿联酋迪拜生产及办公基地建设正在推进,国内工厂亦具备生产能力,海内外产能可相互调节。

*ST生物:撤销退市风险警示,股票简称变更为“南华生物”

2026年6月10日 20:48
36氪获悉,*ST生物公告,公司撤销退市风险警示的申请已获得深圳证券交易所审核同意。根据有关规定,公司股票将于2026年6月11日开市起停牌1天,并于2026年6月12日开市起撤销退市风险警示并复牌,证券简称由“*ST生物”变更为“南华生物”,证券代码不变,股票交易日涨跌幅限制由“5%”变更为“10%”。

新易盛:筹划发行H股并在香港联交所上市

2026年6月10日 20:41
36氪获悉,新易盛公告,公司第五届董事会第十四次会议审议通过发行H股股票并在香港联交所主板上市的议案。此举旨在提高资本实力和综合竞争力,提升国际影响力。该事项尚需提交股东会审议,并需经证监会备案及香港联交所、香港证监会核准,存在不确定性。

SpaceX的IPO吸引中东财富基金的数十亿美元认购

2026年6月10日 20:35
SpaceX的首次公开募股(IPO)吸引了中东财富基金的数十亿美元认购。沙特阿拉伯的公共投资基金和科威特投资局 知情人士透露,各方已分别下单购买价值10亿至50亿美元的股票。他们还表示,规模达5800亿美元的卡塔尔投资局也可能做出重大投资承诺。(财联社)

赛微电子:国家集成电路基金拟以6.24亿元转让赛莱克斯北京19%股权

2026年6月10日 20:34
36氪获悉,赛微电子公告,公司全资子公司赛莱克斯国际拟以挂牌底价6.24亿元通过北京产权交易所摘牌,收购国家集成电路基金持有的控股子公司赛莱克斯北京19%股权。交易完成后,公司将合计间接持有赛莱克斯北京100%股权。本次交易构成关联交易,尚需提交股东会审议。

ST景峰:撤销其他风险警示,股票简称变更为“景峰医药”

2026年6月10日 20:17
36氪获悉,ST景峰公告,公司关于申请撤销股票其他风险警示的申请已获得深圳证券交易所审核同意。根据《上市规则》的相关规定,公司股票交易将于2026年6月11日(星期四)停牌一天,并于2026年6月12日(星期五)开市起复牌。股票简称由“ST景峰”变更为“景峰医药”,证券代码不变,仍为“000908”,公司股票交易价格的日涨跌幅限制由5%变更为10%。

阳光股份:截至目前,阳光金汇整体资产及经营规模较小

2026年6月10日 19:58
36氪获悉,阳光股份公告,公司股票连续三个交易日(6月8日至6月10日)收盘价涨幅偏离值累计达28.46%,属于异常波动。公司主营业务未发生重大变化:公司主营业务仍为商业运营和物业租赁业务,未发生重大变化。截至目前,阳光金汇整体资产及经营规模较小,阳光数字科技注册资本未实缴,未有实际运营,未有人员储备。上述两家公司对上市公司整体资产、营收及利润无重大影响,不会导致公司主营业务发生变化。

长盈通:器件保偏光纤相关业务营收占比不足1%

2026年6月10日 19:45
36氪获悉,长盈通公告,截至目前,公司器件保偏光纤相关业务营收占比不足1%,器件保偏光纤在手订单较少,业务体量相对有限。公司用于通信领域的光纤在手或意向订单较少,目前暂未新增通信领域重大客户。本公司关注到,有个别媒体报道下属子公司生一升业绩目标,系相关机构结合2026年度业绩承诺作出的市场预测,非公司确认数据,不代表公司经营承诺。生一升公司业绩承诺的实现情况会受到政策环境、市场需求以及自身经营状况等多种因素的影响,生一升公司存在业绩承诺无法实现的风险。

柳钢股份:拟购买广西钢铁13%股权,交易价格36.64亿元

2026年6月10日 19:34
36氪获悉,柳钢股份公告,公司拟通过发行股份及支付现金的方式向柳钢集团购买其持有的广西钢铁13%股权,并向不超过35名特定投资者发行股份募集配套资金 。交易价格36.64亿元。该事项已获公司董事会审议通过,尚需履行内部决策程序及监管机构批准,存在不确定性。

有研粉材:增材制造粉体产能扩张项目仍处于建设阶段,近期未明显新增重要订单

2026年6月10日 19:15
36氪获悉,有研粉材公告,公司增材制造粉体产能扩张项目仍处于建设阶段,近期未明显新增重要订单。市场近期高度关注存储芯片、PCB、光模块相关概念,但由于公司产品属于上游原材料,下游应用具有不确定性,目前公司业绩未受明显影响。
❌
❌