V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnuser002  ›  全部回复第 1 页 / 共 4 页
回复总数  61
1  2  3  4  
markdown 顺应的是 web 时代一行行写东西的这种感觉,重内容,轻格式。
151 天前
回复了 Yux0 创建的主题 程序员 2025 年了,应该如何选择 web 开发路线?
网页开发是有一个从简单到复杂的过程的。

最开始的网页就像书页一样,一个开版的大小上显示一些文章段落和图片,然后使用 CSS 做一些排版和样式。

我们把网页按照目录组织好,放在一个 Web 服务器里,别人按照目录下载网页显示在他的浏览器里,根据超链接跳转到新的页面,就像翻页读书一样。

这个阶段写网页,就跟写报纸,编杂志一样,主要是内容和排版。此时还没有后端。

但这种设计有个问题,如果你要频繁更新网页的内容,就需要经常重写网页。这很麻烦。于是出现一个新的设计,将内容存到数据库里,然后编写一个程序,能够从数据库存取数据,自动生成网页。

这样在 Web 服务器那边,只用存一组类似目录的网址,真正的网页,在用户请求网址时,根据当时的内容,由程序自动生成。这种程序就是后端。著名的 PHP 就是专门写 Web 后端的语言。 而别的语言,像 JAVA ,C#,使用专门的库,也可以写这样的后端程序。

这种采用后端自动生成页面技术的网站,就是所谓的动态网站了。他能做的事情,就不仅仅是写一本书了,可以做论坛,可以做音视频网站,可以做网盘等等。

再后来。是因为 Chrome 等现代浏览器的出现,使得浏览器的功力大增, 又有了一种新想法。就是前后端分离。 后端自动生成页面技术里,后端里面很大一部分工作,是前端展示内容的处理逻辑,就是你拿到数据后,怎么渲染页面。

而这个工作,现在可以专门写一组 Javascript 脚本实现。这组脚本在浏览器运行,自动从后端拿数据,渲染成网页,提供交互。这样一来后端就可以把这档子事甩出去了。

虽然乍一看,这样只是把工作量换了个地方。

但是随着移动互联网发展,手机 APP 也要数据。而手机 APP 是自己的语言写 UI ,不需要后端自动生成页面。
所以后端就逐渐变得专注于提供数据,而 Web 这边,需要前端使用 Javascript ,在浏览器里实现接近于手机 APP ,桌面程序的界面布局和交互体验。

这样的需求,催生出了 Angular ,React ,Vue 等 前端工程框架。它们设计了一套前端写应用 GUI 的范式,用这个范式,可以写出 Web GUI 。再配合 Javascript 越来越强的能力,能写出不仅包括 UI ,还能包括数据处理逻辑的 Web Application 。

目前前端就是处在这个阶段。

后端本身什么语言都可以写,甚至本来只存在于浏览器里的 Js ,因为有 node.js 这个开发环境,也可以写后端。 所以有一些网站开发的分支,又回到了后端生成网页技术。不过这时的后端本身也是用的 Javascript 。能带来一些好处。
楼主的担忧我能理解。比如一个发送端,一个接收端。

我当然希望每次接收端收到,都是一个完整的消息,不就能直接处理了么?

但如果这个消息,真的很大呢? 或许他一次发送不完,那我收到的就不全。我要等,这可就麻烦了呀。同样的,下一次把之前的尾巴,跟下个报文的头給一起发送了,我还得拆,更麻烦了。

嗯。Tcp 它就有这种操作,这不是它的问题,而是它的设计,就是基于 Stream ,像流水一样一直给你灌数据。 底层打散但是保证消息还是前后有序进来的。对于这种流,需要按流的处理方法,收取后进入缓冲区,然后在缓冲区里,根据协议里面的约定,比如固定包头,特殊符号来解析出内容。

而这个就是 HTTP 干的事情。 所以你的需求,用 HTTP 就可以实现。你可以认为 HTTP 接口每次拿到的,就是完整的数据。

WebSocket 也可以。
169 天前
回复了 ninjaJ 创建的主题 NAS 玩 NAS 的人到底是被它的什么吸引了?
对我来说,首先是 NAS 的本身涵义,网络附属存储。

家里最初只有一台主力电脑,游戏,照片,电影等数据都在这里。这时对网络存储,没有需求。

但是渐渐的,家人们随身的手机,床头的平板,客厅的电视。这些设备,他们的存储容量偏低,自身的数据比如照片等等,需要经常导出;另一方面,类似看电影电视剧,又需要从外部拉取文件。

这个时候还靠那台已经不怎么开的主力电脑,干这个事情就不太合适了。

需要专门有个网络存储,供局域网里的设备共用。
我也试过一些方法,比如说,在家庭 Wifi 下挂载一个移动硬盘。权宜之计,能用,但可以更好。
所以当有了折腾的余裕后,就买了硬盘盒,加上小主机,自己 diy 了一个 NAS 。
实现了本地网盘啊,本地媒体库啊,电影分享,照片备份等等功能。

拥有了 NAS 后,从另一个角度,就等于有一台家庭服务器。那自然可以整点服务器的东西玩玩。挂一些服务,搞一点应用,这时 NAS 就是个容器。
177 天前
回复了 llej 创建的主题 程序员 为什响应式设计需要移动端优先
我所知道的响应式设计,是一种布局思路,用这个思路,对不同宽度的屏幕,都能给出一个相对合理的排版。

这里的不同宽度,不仅仅是 PC ,也有 Ipad ,折叠屏,甚至手机横过来。

这个思路的要点,是优先考虑屏幕窄的情况,满足最窄屏幕的布局后,对于更宽的屏幕,可以扩大间距,拉伸组件,增加分栏,总之把它填满。

这里面竖屏手机是最窄的,所以响应式设计,也以“移动端优先”。

这跟业务上 PC 端摆烂,专注 APP 那种“移动端优先”,不是一个意思。

但实际效果,普遍没有想象中的好。首先因为手机的屏幕,相对于 PC ,实在是太窄了。手机 APP 很多是用层级菜单,底部导航栏等适配手机的组件,这些东西放到平板那个宽度,就不好沿用了,想好看的话,还是得重新设计布局。

其次,响应式设计,你得用它的栅格系统,这样的话,你的组件的宽度,组件大小,都是被限制的,不容易跟设计稿对齐。

所以我看现在像 douyin 这种愿意做 web 端的,也都是分两块。移动端弄个 m.域名,直接给你干到 app 下载页,web 端重新设计,从平板的宽度开始,向上用响应式。
Python 本身就是强类型语言,只是它提供许多默认的转换,让你可以直接转数据类型。这点写脚本很方便,不然 JS 也不会有那么多 [魔法]

现在 Python 也有代码类型标注,写的时候带上这种也是可以的。
189 天前
回复了 fengyouming 创建的主题 程序员 想要开发一个物联网 app,求大佬指点。
第一个问题:

现场设备是 A , 物联网平台是 B , 手机应用是 C

A 要主动把数据,按 B 定好的格式,传给 B 。 然后 C 按 B 定好的接口,从 B 查数据。

C 要控制 A ,就按 B 定好的接口,給 B 发命令,B 收到命令后,转发給 A 。A 收到后执行。

B 对 C 开放的是 HTTP 接口,或者 Websocket 接口,不涉及到 Native ,所以 C 该怎么开发怎么开发。

Flutter 还行,RN 略有过时,写过 React 可以路径依赖,没写过推荐 Flutter 。



第二个问题

A 跟 B 怎么连,两种情况,

如果 A 本身是一个能主动往外推数据的设备,那么它默认有一个对应的 A*平台的格式,你可以自己搞个 B ,兼容 A*的格式,然后修改设备的发送地址。或者你就用 A*的平台,自己写个中间件去拿。

如果 A 本身不是所谓的物联网设备,那么它一般不会是一个能主动往外推数据的设备,需要放一个网关 D, 转成能往外推数据的设备,D 一般有个对接的平台 D*,你可以用它的平台,也可以兼容 D*的格式,弄个自己的。

像阿里,aws 那种,希望你是一个设备生产商,让你的设备,直接接入它们平台,让它们来代管。对你来说,中间的数据存储,流转,就不用你自己操心了。
说说我的体会,
1. 写刷法题,完成小作业,这种场景 C++和 Java ,没有太多区别。
2. 有 IDE 的加持下,用 C++写 windows 桌面程序,和用 Java 写 Android 移动端程序,体验也差不多。同样的模式,都是在预设的框架里按套路写。
3. C++写网络编程,就比较麻烦了,Java 写则很简单,或者说,不简单的地方,已经有高手为你写好了。
4. C++写完了并不算完。头文件管理,交叉编译,调试等等都费劲。尤其一个叫 cmake 的东西,当年把我狠狠干住了,发现没有 Visual Studio ,咋干啥都不顺。Java 这块就轻松多了。

后面用 JS ,Python ,又体会到一种语言在“领域内的垄断”。 比如 JS 在前端,Python 在科研,JAVA 在网络,那 C++呢,则在所谓的高性能领域,什么游戏引擎,网游服务器,音视频处理,高性能硬件开发等等,这个领域本来就费脑子,开发效率天然就低。
我想到上学时候的一个梗:
什么时候可以抄作业?

1. 遇到你会的题目,可以抄作业,节省时间
2. 遇到你不会的题目,可以抄作业,学习思路。

所以遇到会与不会的,都可以抄。

但抄作业不是目的,掌握知识,应试技巧,锻炼题感,拿到高分,这才是目的。

而如果只应付每天的检查,盲目的抄写,几个章节后你很可能就不知道你在抄什么了。

文章反映的也是类似的问题。


我们现在用 AI 编程风生水起,有一个前提被有意无意的忽略了,就是大家多多少少在没有 AI 的时候,学习过编程,有些底子,你去抄 AI 的东西,有底。

倘若过于依赖 AI ,就好像只抄答案不看过程,那久而久之,也就看不懂过程了。不就文盲了么。
@Curtion 有些做硬件的厂商,它想上云会用类似阿里这一套,终端适配阿里,然后不用自己云平台后端,按他給的范式走配一配就行了。
多少有点先入为主的感觉,我是从启蒙阶段用的 vs ,
后来用过 idea 一段时间,那会也感觉 idea 是什么垃圾 啊,用不习惯。到最后也没把这玩意弄趁手。

但是 vscode 就很舒服,回头感觉 vscode 还是更接近 idea 一些的。就是 idea 也是有亮点的,当时感觉不出来。

vs 到底吊在哪,我觉得作为 Windows 端开发软件,它的大而全。比如开发 c++,除了写代码外,编译链接那坨头疼的东西它給你代管了。调试什么的他也做得
318 天前
回复了 zhouhuab 创建的主题 程序员 反向代理后的端口数量限制
你是前端想通过 Websocket 连到 MQTT 服务器上收消息么?通过反向代理转一下?

要是指 MQTT 服务器怎么做单机并发的话,你可以参考 EMQX 是怎么做的。
游戏引擎确实不需要,但是你想做 MUD 这种还是尽可能找点工具辅助吧,算是没有界面的网络游戏,挺复杂的。
你想在互联网上,开辟一个属于自己的空间,存一些东西,搞一些网站,仅自己可见。

那你需要的是一个云服务器( VPS ),这是一台功能完全的,仅属于你的,有固定公网 IP 的电脑。你在上面再部署你要的东西,比如网盘、数据库、网站、服务接口之类的。
仅自己可见的话,对于你暴露的每个应用,你自己维护密码、密钥等安保措施。让别人不能用。

CDN 完全不是干这个的。CDN 叫做内容分发网络,作用是加快文件传播的速度,跟你的需求完全相反。比如你有音乐或者视频等大文件要传播,直接放在自己服务器上,給人下载的话,流量压力很大。这时把需要传播的内容放到 CDN ,CDN 会将内容分发到 CDN 缓存节点上。其它人请求内容时,就能从就近的 CDN 缓存节点上直接取。

至于有了 VPS 后,具体放什么应用,这个看你需求。就你表述的,我理解一个是网盘应用。另一个是个人博客,你去找各自的解决方案,套上去就可以了。
2024-07-30 13:55:07 +08:00
回复了 Aurorataro 创建的主题 NAS 树莓派组 NAS 用什么硬盘盒/柜?
我用的绿联的硬盘盒,插上硬盘后像个烤面包机。是单独供电的,USB 线练到树莓派上挂载。
2024-07-25 16:32:17 +08:00
回复了 ShinyAtom 创建的主题 宽带症候群 关于对称型 NAT 和全锥型 NAT
NAT 类型是描述你家内外网打通的程度。主要其实是看你家设备到公网有几层路由。路由套的越多,你这个 NAT 就越难生效,毕竟穿一层墙跟穿三层墙难度肯定不一样么。

现在一般来说是三堵墙。
第一堵是运营商給你的 IP ,因为公网 IP 资源紧张,现在分配基本都是运营商内网的 IP ,在运营商那里就已经做一层 NAT 了。你得申请运营商給你分公网 IP 才好穿这堵墙。

第二堵是在光猫那里。光猫如果开路由模式,你家自己路由器也是路由模式。你要把光猫那里改成桥接,让路由器直接拨号,可以绕开这堵墙。

第三堵是你家自己买的路由器,也算是一堵墙。绕这个墙,可以通过端口映射,或者 DMZ ,upnp 这种,把内网的设备地址暴露出来,这堵墙就过了。
2024-07-18 16:16:23 +08:00
回复了 tho 创建的主题 NAS 我在同城同网络的机房租台服务器,和 nas 是不是效果一样?
你这个属于租服务器,在公网上搭存储服务,
也算网络附加存储,但是一般叫个人网络云盘。

一般说的 NAS ,放在家里的一台搭载硬盘的电脑,通过内部网络让其它设备共享存储空间。跟网络云盘比,你自己可以配大硬盘,内网不限速,价格有优势。
当然也有不方便,比如你要出差在外,就得想其它办法连,有时还得用云服务器在公网中转。

实际上制约的也确实就是钱,要是公网带宽和存储容量都很廉价,就搞个纯云上的空间自己用,当然也好。
楼主你自己算一算就你的需求值不值这个价吧
2024-06-24 11:36:49 +08:00
回复了 Kohana 创建的主题 Vue.js 想使用 vue3 做一个网站,不清楚 vue3 做了什么工作.
前端三件套本来是设计用来画网页的。类似传单的感觉。


现在拿来做互动界面,类似游戏里的按钮、列表啊这些。 许多地方没有约定俗称的范式,要自己去编写,这就麻烦了。

Vue React 这些框架,就是提供了一整套思路,和配套的工具,让你按他的思路去组织代码,底层的一些细节它们包解决。
最后由框架将其编译回三件套。
1  2  3  4  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 21:12 · PVG 05:12 · LAX 14:12 · JFK 17:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.