V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mdluo  ›  全部回复第 4 页 / 共 14 页
回复总数  262
1  2  3  4  5  6  7  8  9  10 ... 14  
2018-06-14 14:01:34 +08:00
回复了 masteryi 创建的主题 问与答 Java 导出简历 pdf 怎么实现?
要让访问者直接在网页上打印,为了排版不至于太糟糕,需要写一些 CSS media query 的东西,参考: https://www.smashingmagazine.com/2011/11/how-to-set-up-a-print-style-sheet/

如果是动态把网页生成一个 pdf,可以用 Puppeteer,参考: https://pptr.dev/#?product=Puppeteer&version=v1.5.0&show=api-pagepdfoptions
2018-06-12 13:31:14 +08:00
回复了 luozhiyun 创建的主题 程序员 毕业两年了,想考个研
读研不是“提升自己”,换个地方给老板打工而已。读研,尤其是考研,尤其是考国内的研,尤其是考国内的全日制研,在不确定导师人品的情况下,基本上就是一个巨坑。外校考研更加没人权,导师怎么样不知道,前面还有保研的、本校的都把好的导师选完了,外校考研的就等着接受命运的安排吧。

你以为去读研就不用做外包了?祖传外包项目怕不怕,上面好几届早就毕业了的人已经联系不上的师兄传下来的那种。导师有你们这些廉价甚至免费劳动力不知道利用起来?指望着导师让你安安心心学习去提升自己甚至时不时给你一些指导?
2018-06-11 12:26:52 +08:00
回复了 zhandi 创建的主题 程序员 打算做一个 SPA 在线渲染服务,类似 prerender.io
@zhandi #6 渲染静态网页技术上一点难度都没有,但是难在怎么把这个东西包装成 SaaS 平台并且运营起来并且拉到客户来用并且愿意付钱,这和仅仅开发几个功能就完全是两个概念了
2018-06-11 12:00:41 +08:00
回复了 zhandi 创建的主题 程序员 打算做一个 SPA 在线渲染服务,类似 prerender.io
Puppeteer as a service:
https://pptraas.com
2018-06-08 20:37:34 +08:00
回复了 JeffYu 创建的主题 问与答 请问各位大佬的 hexo 都部署在哪里的
DNS/HTTPS/CDN:Cloudflare
源码:GitHub private repo
静态页面:GitHub pages
2018-03-20 13:54:34 +08:00
回复了 bayker 创建的主题 前端开发 前后端分离, JWT 还是 Oauth2?
很明显这种没有第三方参与的场景是不适合用 OAuth 的,参考我上面 #6 的回复的链接

JWT 的过期和刷新也很好做,参考业界主流做法,AWS、Azure 和 Auth0 都是用 JWT 为载体,ID Token + Access Token + Refresh Token 的模式:

https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-token-and-claims

https://auth0.com/docs/tokens
2018-03-20 10:57:39 +08:00
回复了 bayker 创建的主题 前端开发 前后端分离, JWT 还是 Oauth2?
你可能并不需要 OAuth2: https://git.io/vxGxy
2018-03-13 12:20:53 +08:00
回复了 mdluo 创建的主题 JavaScript request 库升级造成大量低版本 node.js 平台报错
@janxin #7
@Mcatt #8
@raphaelsoul #9

请不要站在上帝视角让用户去锁版本,因为用户没法预料哪个包会出问题。而且锁版本是 package-lock.json 或者 yarn.lock 的事情,自己手动去 package.json 里锁版本只能当成紧急措施,因为既锁不住深层依赖,也不方便后序升级更新。第三方依赖包小版本升级造成严重问题的情况相比修复潜在问题的情况还是少很多的。

request 这次的主要问题因为这个 PR ( https://github.com/request/request/pull/2880 )明明没有通过 CI 但还是被作者给无脑 merge 了。应该吸取的经验教训是单元测试一定要写,CI 一定要用而且结果也很重要。不管是开源项目还是商业项目,尤其是有很多人参与的项目。另外如果写的一个库的用户很多,也要注意在 node.js v6 版本的兼容性,因为很多云平台还是在这个版本。
2018-03-12 18:53:04 +08:00
回复了 mdluo 创建的主题 JavaScript request 库升级造成大量低版本 node.js 平台报错
作者及时发布了更新 v2.85.0 把 hawk 升级的 PR 给 revert 了,惨案暂告段落

总结经验教训: https://git.io/vxv2g
2018-03-12 03:07:30 +08:00
回复了 HuahuaChen 创建的主题 程序员 小程序算不算 web 开发
严格说不算。小程序没有提供大部分的 Web API,包括 DOM、多媒体、以及符合 HTML5 标准的设备访问 API 等。所以直接表现就是大部分的 Web 框架都不能直接用在小程序上
2018-03-12 02:50:36 +08:00
回复了 nikoo 创建的主题 问与答 普通谈话音频,码率 64kbps 与 128kbps 有区别吗?
44.1 KHz 的采样率对应的最高声音频率是 22 KHz,人声的主要频率在 4 KHz 以下。音频的有损压缩无非就是把人耳不敏感的信号丢掉,主要就是丢高频。所以即使是简单粗暴的丢掉一半,把 22K 直接砍到 11K,对人声的影响也是可以忽略不计的。具体是怎么用的看看频谱图就知道了。

纯人声用 64kbps 没什么问题,更低都有可能。但是音乐用这么低的比特率,那基本上就是为了省流量已经完全不顾音质了。
2018-03-08 01:37:28 +08:00
回复了 bobuick 创建的主题 程序员 跳槽 coder 们,现在外面行情很好?
@onion83 CloudFlare 搞了几个 52X 的私有状态码要不要也背下来 :doge
炫酷的公司文化和技术栈!
2018-03-07 23:12:15 +08:00
回复了 bobuick 创建的主题 程序员 跳槽 coder 们,现在外面行情很好?
@daniellu #24 HTTP 协议的问题和业务完全无关??? 缓存控制、状态码、RESTful 或者路由设计、编码和内容解析、内容压缩、WebSocket、状态管理、认证和授权、HTTPS、HTTP2、跨域和 CORS、CSP、负载均衡 等哪个不是涉及具体业务而又跟 HTTP 协议密切相关的
2018-03-06 12:05:02 +08:00
回复了 tomi 创建的主题 酷工作 (新加坡) AXA Insurance Singapore PET. LTD. 招全栈工程师
2018-03-06 02:02:05 +08:00
回复了 wangzhiwei3919 创建的主题 求职 近四年全栈主前端,希望寻求一份远程全职或者长期兼职
精通 Javascript ???
倒想看看精通到什么程度🤔
@mdluo #4 Typo: YDNJS 系列 -> YDKJS 系列

@mikan #5 面试题在 GitHub、掘金或者就在 V 站搜索就能搜到很多了,另外有一个不错的动手实践系列: https://nodeschool.io/
2018-03-04 12:29:28 +08:00
回复了 rootliang 创建的主题 问与答 想问大家一种数据库储存的方式
如果数据库提供了复合键作为主键的功能,自己把两个城市的 ID 存成复合主键就好了。

如果没有复合主键的功能,那么考虑两个城市为一个 Pair,用个 Unsigned Int 32 作为主键,高 16 位是第一个城市的 ID,低 16 位是第二个城市的 ID,总共可以覆盖 2^16 = 65536 个城市了,其他字段存“平均时效”和其他信息。

主键可以利用数据库的索引,直接按两个城市查询的时候速度最快,也能在单表内对“平均时效”这种信息做排序和查询等操作。
三条线同时进行:

做项目:主要是踩一些坑,以及多用 devtool 调试工具,很多第三方库的函数可以跟进去看一下怎么实现的。在 JS 代码调试的时候关注一下右边的 Call Stack 和 Scope ;在看 HTML 调试的时候多看看各个元素有哪些属性、有哪些 Event Listener ;看 CSS 的时候看看各个属性是如何继承、覆盖和计算的,属性的不同的值会对页面造成什么影响,等等。这其中发现有问题就去查文档和规范。

看好书:比如高程、YDNJS 系列、CSS 权威指南、CSS 揭秘等。但是不要仅仅看过就完事,而是带着自己的思路去重新过一遍所有的知识点,想一想如果自己要写这么一本书应该怎么写。

看面试题 + 查文档和规范:针对面试题的问题,或者看书遇到的问题,去查 MDN 以及 HTML/CSS/DOM/ECMAScript 等规范原文,甚至有些情况还要看浏览器和 JS 引擎的 C++ 源代码,搞懂这些问题背后的原理。
“因为 original 已经被 resolve,所以它的状态被 new Promise 继承” 这句话并不正确,很简单的验证:

https://ws2.sinaimg.cn/large/82d0750dgy1fp0kc7iwsej20kw0l20w2.jpg

所以可以看到在 Promise 的构造函数的参数即 executor 函数,在执行的时候去 resolve 另外一个 Promise,即使这个 Promise 的状态是 "resolved",也不会在构造函数返回的时候就立即把 promise 对象的状态置为 "resolved",确实是 "pending"。

但是如果 resolve(original) 和 original.then((value) => resolve(value)) 是等同的话,结果应该是 4 3 2 1 才对)。因为这个 resolve(value) 虽然不是在第一个 event loop 里同步执行的,但是是最早加入 microtask queue 的。说明 V8 在针对 executor 的 resolve 函数的调用时机的处理并不是同步的,其他有些 Promise 的实现(比如 bluebird )是同步的,结果也确实是 4 3 2 1。

V8 的处理好像可以等同于下图,看了下这样的话不管是结果还是执行过程中的 Promise 状态都是一致的

https://ws2.sinaimg.cn/large/82d0750dgy1fp0kvyo4vdj218c0ja41s.jpg

总的来说就是,executor 的 resolve 很有可能在 V8 的 Promise 实现里被特殊处理了,resolve(original) 的执行过程都不是在同步代码里,而是加入了 microtask queue。在 microtask queue 里执行的时候又因为是去 resolve 另一个 Promise,相当于 resolve 这个 Promise 的 then 结果,所以又被加入了 microtask queue 的最后面。而最终轮到 resolve(value) 执行的时候,前面已经被一个 Promise.resolve().then() 的回调、以及这个回调带来的另外一个回调给 “插队” 了,所以 resolve(value) 的执行被排在了最后。

没具体去看 V8 的代码,仅仅从表现上分析的。不过这一点确实是规范里也没有提到的东西,跟实现有关。
1  2  3  4  5  6  7  8  9  10 ... 14  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1250 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 17:48 · PVG 01:48 · LAX 10:48 · JFK 13:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.