V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  henix  ›  全部回复第 4 页 / 共 5 页
回复总数  85
1  2  3  4  5  
314 天前
回复了 lifi 创建的主题 Python 学 Python 也有半个月了
理论的学习和技能的学习:学习理论只需要看懂就行,但学习技能则只能通过实践。例如学骑自行车和学游泳、学做菜这一类,只学习理论是没用的。

个人认为学编程的最好方式就是用编程解决日常生活中的问题,编程可以让我们的生活变得更美好。
318 天前
回复了 W4J1e 创建的主题 程序员 开源项目开发者的歧视依然存在吗?
从 op 的问题和回复看,我认为 op 可能有一点崇拜开源贡献者,但最后发现开源贡献者不过是普通人,有点幻灭。
我的看法是,很多领域存在 20%-80% 现象。不排除有一些非常厉害或者说无私、道德高尚的开源贡献者,但大部分人都是普通人。
他们开源的理由可能是:不想搞商业化运营,嫌麻烦或没资质;不想对用户做出太多承诺;项目更多是自己的练习、实现自己的需求,反正对自己没什么坏处,所以就开源了;项目是为了展示自己的水平。
而且大部分开源项目都无人问津,能被大众知道的明星项目是极少数。
至于 op 为什么被踢,不了解具体情况,不知道,只能说这类社群里啥人都有。
可能 op 对接触开源贡献者很感兴趣,我觉得可以:1. 更多使用 github 交流,这里你能接触真正的代码贡献者 2. 关注一些开源贡献者的 blog ,在 blog 上直接跟本人交流
我理解应该有一个部署脚本(安装程序)吧,用户运行这个脚本来安装到 vercel 上,那么密码必须不固定,要么由用户自己设置,要么生成一个随机密码,返回给用户即可。
同理,如果要进一步提升安全等级,可以考虑两步验证( 2FA / TOTP ),用户运行安装脚本安装成功后,返回一个二维码,用户可以用各类验证器扫码,登录时要求输入两步验证码。
要防止被人暴力穷举密码,可以在登录页面加入文字验证码,或添加一定时间内 ip 的尝试次数限制。
322 天前
回复了 anUglyDog 创建的主题 程序员 程序员第二门语言
可以看看 七周七语言 https://book.douban.com/subject/10555435/
js 的四舍五入应该是:Math.round(99.1*1.05*100)/100 // => 104.06
这个应该要应用自己维护的吧。记录每个 fd 上一次操作的时间戳,你的第一种方法,epoll_wait 会在中途返回,返回时检查当前时间戳跟记录的 fd 上一次操作时间戳之差,如果超时了就执行某个动作,比如关闭连接。

这里采用的数据结构是堆( heap )或者时间轮( timing wheel )

可参考 [Linux 多线程服务端编程]( https://book.douban.com/subject/20471211/) 的“7.10 用 timing wheel 踢掉空闲连接”一章
346 天前
回复了 zywscq 创建的主题 Python 浅析 Python 中的 9 种常见反模式
如果是很重要的反模式,可以找找有没有 linter 能检查出来
357 天前
回复了 millet230413 创建的主题 GitHub 关于 github 文件下载的问题
2024-01-06 11:25:37 +08:00
回复了 icoming 创建的主题 JavaScript 为什么 Promise 会有这种表现?
@NessajCN 传给 allSettled 时 promises 不是已经 map 过了吗
2024-01-04 19:51:31 +08:00
回复了 feirisu 创建的主题 程序员 Windows 下开发小应用 GUI,真的很难选方案
传统 GUI 库除了 QT 还有很多啊,GTK+、wxWidgets 之类的,还有 https://www.fltk.org/
如果不限语言的话,还有 https://www.tecgraf.puc-rio.br/iup/ 和 Tcl/Tk
2024-01-02 16:57:50 +08:00
回复了 seedhk 创建的主题 C++ C++Windows 程序开发该从哪里开始
先学一些 C / C++ 基础,如果你要逆向的程序用了 C++ 的话那也得会,而且逆向可能需要会一点汇编。

你需要学一些 Windows 系统级 API 的使用,也就是 Win32 API 。

不妨以开发一个简单的 Windows 窗口应用为目标,但是一些操作系统的基本概念也是需要了解的,比如进程线程、文件 IO 、网络 IO 等等。

推荐书籍:

* Windows 程序设计 https://book.douban.com/subject/5273955/ 注意不是讲 Win8 的那个新版,是这个旧版,了解 Win32 API 和窗口
* Windows 系统编程 https://book.douban.com/subject/5323432/ 了解其他 Win32 API
* Windows 环境下 32 位汇编语言程序设计 https://book.douban.com/subject/24846626/ 了解窗口相关 API 和消息循环,学完之后你可以创建自己的窗口应用程序了
* 程序员的自我修养 链接、装载与库 https://book.douban.com/subject/3652388/ 进阶内容,了解 DLL 动态运行库的原理

由于以上书籍较老,里面的代码可能有些不能用了,自己写代码的时候可以参考最新的 MSDN ,例如: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-createwindowa 看一下后面的样例
2023-12-21 09:39:26 +08:00
回复了 cxytz01 创建的主题 程序员 老码农请教 js/ts 入门。
js 本身比较简单,如果你已经会其他语言,推荐这本蝴蝶书: https://book.douban.com/subject/3590768/
2023-12-20 09:37:38 +08:00
回复了 kingpo 创建的主题 Android 手机存储爆满,天天提示,有什么优化方案?
我也安卓,64 GB ,2017 年买的,用到现在也没啥问题,还可以继续苟……不过我不玩手游

常规方案:对一些占用空间比较大的应用,清除缓存 + 清除存储空间(相当于退出登录,需要重新登录)

但是以上方案也可能有没有清理到的部分

需要技术力的方案:adb shell 进去,使用 du -hcs 看看哪个目录占空间最多,然后一层一层往下找,看看有什么卸载残留之类的,你不用的应用但是占了很多空间

这里可以盲猜微信占用了很大的空间,优化微信:

1. 微信设置 -> 通用 -> 存储空间,清理一下缓存,聊天记录中可以删除 3 个月之前的不重要的聊天记录
2. 如果“其他数据”占空间很大,可以用电脑微信的“迁移与备份”,先把聊天记录备份到电脑上,再把手机上的微信卸载重装,再把聊天记录恢复回去

需要中等技术力的方案:电脑上下载一个安卓模拟器( mumu 、夜神、BlueStack 之类的),然后把不需要随时随地使用的应用安装到模拟器中,并从手机上卸载

我觉得我们应该对手机上安装的应用划分优先级:哪些应用需要我们出门之后随时随地使用的?可能是地图、支付、聊天之类。而很多应用只是需要的时候才拿出来用一下,那只需要在电脑上能访问就行了。理想情况应该是网页访问,但是架不住现在什么东西都要求你装一个 app ,只能模拟器伺候。
2023-12-14 19:38:47 +08:00
回复了 ilee1989 创建的主题 JavaScript 求助:前端 JS 加密,防止被爬虫爬
反爬需要前后端配合,确实如同楼上说的。可以考虑:1. 限制 ip 每秒请求数 2. 要求用户必须注册,限制用户请求数 3. 加验证码或直接用极验之类的方案 4. 加工作量证明( proof of work ),要求每次请求必须完成一些复杂计算
2023-12-09 10:13:10 +08:00
回复了 yaott2020 创建的主题 Linux 你倾向于哪个 Linux 桌面发行版?
Archlinux + awesome
https://syncthing.net/ 的电脑端就是这么做的,直接调用了用户的浏览器
可能最好的办法是用 Python 调用 Keil 的命令行工具,实现你要的操作。因为 subprocess.Popen 主要是针对命令行程序。但我对 Keil 不了解,不知道能否纯用命令行实现。

如果你要自动化地打开一个 GUI 程序再关闭,可以在 Win32 的层面使用 Win32 API 来自动化。

大致的原理是:

1. 使用 FindWindow 或其他方法得到窗口句柄
2. 向该窗口发送 WM_CLOSE 消息

参考:

https://learn.microsoft.com/zh-cn/windows/win32/learnwin32/closing-the-window
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-findwindowa
https://stackoverflow.com/questions/5402158/using-sendmessage-to-send-wm-close-to-another-process

但是以上是 C++ 层面的 API ,如果用 Python 又该怎么做呢?可以使用 pywinauto 。代码大概如下:

```py
import time
from pywinauto.application import Application

app = Application().start("???.exe")
time.sleep(10)
app.kill(soft=True)
```

另一种方法是找到顶层窗口之后 close:

```py
import time
from pywinauto.application import Application
from pywinauto.controls.hwndwrapper import HwndWrapper

app = Application().start("???.exe")
time.sleep(10)
root: HwndWrapper = app.top_window()
root.set_focus()
root.close()
```
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1716 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 07:41 · PVG 15:41 · LAX 23:41 · JFK 02:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.