亚洲色成人网站www永久,亚洲欧美人成视频一区在线,亚洲国产成人高清在线观看,亚洲精品久久久久久动漫,亚洲国产精品久久电影欧美

數(shù)據(jù)專欄

智能大數(shù)據(jù)搬運(yùn)工,你想要的我們都有

科技資訊

科技學(xué)院

科技百科

科技書籍

網(wǎng)站大全

軟件大全

請(qǐng)教一個(gè) react router 問題 ,我想獲取當(dāng)前路徑匹配的 path ( user/:id )而不是 pathname(user/111),用的 umi,我記得 react 之前好像是區(qū)分 path 和 url,我又找不到資料了的先謝謝了
前沿探索
2020-08-20 21:09:55
分享一個(gè) RN 快速開發(fā)庫(kù): react-native-easy-app 。一款為 React Native App 開發(fā)提供基礎(chǔ)服務(wù)的純 JS 庫(kù)( 支持 IOS & Android ),可以為開發(fā)者開發(fā)項(xiàng)目提供強(qiáng)有力的支持,可以大幅度提高編碼的效率,特別是在項(xiàng)目搭建初期,至少可以為開發(fā)者減少 30%的工作量。
由于前面的文章已經(jīng)做過介紹,在這里就不詳細(xì)介紹了,通過本開源庫(kù),你可以有以下“高級(jí)的操作”: 可以像訪問內(nèi)存對(duì)象一樣訪問 AsyncStorage
相關(guān)文章:
一分鐘實(shí)現(xiàn),一個(gè) RN 持久數(shù)據(jù)管理器 ;
react-native-easy-app 詳解與使用之(一) AsyncStorage 只需要幾十行代碼就能實(shí)現(xiàn),一個(gè)完整的 app 與服務(wù)器的 Http 請(qǐng)求交互
相關(guān)文章:
二十分鐘封裝,一個(gè) App 前后臺(tái) Http 交互的實(shí)現(xiàn) ; react-native-easy-app 詳解與使用之(二) fetch 一行配置 + 基礎(chǔ)組件的使用就即可以實(shí)現(xiàn),UI 自動(dòng)屏幕適配
相關(guān)文章:
詳解與使用之(三) View,Text,Image,Flatlist ; react-native-easy-app 詳解與使用之(四)屏幕適配
另附有多個(gè)不同版本的 Demo 供大家參考用法:
Sample
Sample_Mobx
Sample_Redux
以下為 Sample_Redux 示例程序的 UI 部分截圖:
開源庫(kù)中也有詳細(xì)的 README 說明文檔,如下圖:歡迎大家使用,感謝 Star ! 是不是想進(jìn)一步了解一下啦?那趕緊點(diǎn)擊鏈接 react-native-easy-app 進(jìn)去看看吧?
前沿探索
2020-08-20 21:09:48
舉個(gè)例子
https://styled-components.com/docs/basics#adapting-based-on-props
在很多的地方看到過這種效果,但是不曉得如何實(shí)現(xiàn)
前沿探索
2020-08-20 21:09:38
在 render 里面實(shí)現(xiàn)了一部分渲染的工作,但沒有把對(duì)應(yīng) Component 的內(nèi)容全部寫入 render,因?yàn)樵?initial load 時(shí),某些 dom 節(jié)點(diǎn)還沒被創(chuàng)建, 直到 render() 之后跑到 componentDidMount() 時(shí),這些 dom 節(jié)點(diǎn)才出現(xiàn), 所以在這里手動(dòng) render 另一部分的內(nèi)容。 請(qǐng)教一下這樣做是不是一開始的方向就錯(cuò)了?
前沿探索
2020-08-20 21:09:17
Java web 開發(fā)想了解下前端。最近在跟 fullstackopen.com 的課程?,F(xiàn)在沒法在 windows 上安裝 react-app 。
試過的指令有:
1 、set HTTP_PROXY=http://127.0.0.1:58591, npx create-react-app my-app ;
2 、npm 設(shè)置代理,npm init react-app my-app ;
3 、在 linux 下載再傳 windows,但是運(yùn)行 npm start 報(bào)錯(cuò)。
想請(qǐng)教下大家是如何解決這個(gè)問題的。
前沿探索
2020-08-20 21:09:05
最近我花了點(diǎn)時(shí)間,把之前使用舊版的 slate 框架積累的一些經(jīng)驗(yàn)整理了下,開源一個(gè)基于 slate 框架的 react 技術(shù)棧的高擴(kuò)展性的富文本編輯器。
它的高擴(kuò)展性主要在于: 支持自定義工具欄; 支持自定義節(jié)點(diǎn)渲染 ;
簡(jiǎn)要 demo 如下 import * as React from "react"; import ReactDom from "react-dom"; import EasyEditor from "@camol/easy-editor"; class Editor extends React.Component { html = ""; handleChange = (v: any) => { console.log("change=>>>", v); if (this.editorRef.current) { // value to html console.log(this.editorRef.current.convertor.serialize(v.change.value)); } }; render() { return 123

"} onChange={this.handleChange} />; } } ReactDom.render(, document.getElementById("root"));
value 支持 slate 的 Value 實(shí)例,也支持 html 。所以,你可以調(diào)用 value.toJSON() 取得 json 格式的數(shù)據(jù) 或者轉(zhuǎn)成 html 存入數(shù)據(jù)庫(kù),回顯時(shí)可以直接使用。
支持自定義工具欄
目前,編輯器已經(jīng)內(nèi)置了一些工具,如文字加粗、斜體、下劃線、文字居中等功能。支持圖片和視頻的插入,資源地址可以通過 beforeUpload 自定義上傳邏輯。從剪貼板內(nèi)復(fù)制粘貼圖片(包括 word 內(nèi)復(fù)制)等上傳文件部分都會(huì)嘗試調(diào)用該函數(shù)以獲取上傳后的資源地址。不使用自定義上傳時(shí),圖片地址默認(rèn)使用 base64 格式。
懸浮工具欄,考慮到選中不同節(jié)點(diǎn)時(shí)的渲染不同,還沒考慮好如何設(shè)計(jì),暫時(shí)注釋掉了這部分功能,后面會(huì)完善。
// 自定義 插入視頻的操作按鈕 class AudioControl extends React.Component { inputRef = React.createRef(); handleClick = () => { if (inputRef.current) { inputRef.current.click(); } }; handleChange = (e: React.ChangeEvent) => { const file = e.target.files[0]; e.target.value = ""; if (file) { if (this.props.beforeUpload) { let url = await this.props.beforeUpload(file); if (url) { let change = this.props.change.focus().insertInline({ object: "inline", type: "audio", isVoid: true, data: { src: url, }, }); this.props.update(change); } } } }; render() { return ( ); } } 123

"} onChange={this.handleChange} controls={[ ["bold", "u", "image"], [ { type: "audio", component: (change, update, beforeUpload) => { return ( ); }, }, ], ]} />
支持自定義節(jié)點(diǎn)渲染
使用自定義節(jié)點(diǎn)渲染,可以實(shí)現(xiàn)一些高級(jí)功能,如圖片拖拽調(diào)整大小,圖片懸浮、左環(huán)繞、右環(huán)繞等功能,或者表格的拖拽調(diào)整等,又或者是類似石墨文檔等添加文件附件,展示在文檔中的功能。前面部分功能已經(jīng)在編輯器內(nèi)實(shí)現(xiàn)了。
這里我簡(jiǎn)要展示下如何自定義渲染 audio 標(biāo)簽: import * as React from "react"; import { DefaultTreeElement } from "parse5"; const plugin = { type: "node", // node, mark object: "inline", // block, inline nodeType: "super-audio", // 自定義節(jié)點(diǎn)類型 // 自動(dòng)解析 html 中 audio 標(biāo)簽,生成 super-audio 節(jié)點(diǎn) importer(el: DefaultTreeElement, next: Function): any { if (el.tagName.toLowerCase() === "audio") { return { object: "inline", // block 、inline, type: "super-audio", isVoid: true, data: { src: el?.attrs?.find((n) => n.name === "src")?.value, }, nodes: next(el.childNodes), }; } }, // 調(diào)用 editor.convertor.serialize(value) 會(huì)調(diào)用該方法將 super-audio 節(jié)點(diǎn) 轉(zhuǎn)成 對(duì)應(yīng)的 html 存入數(shù)據(jù)庫(kù) exporter(node: any, children: any): any { let { className, src } = node.data.toJS(); return ; }, // 自定義渲染方式 render( editor: any, props: { attributes: any; children: any; node: any; isSelected: any } ): any { // @ts-ignore const { attributes, children, node, isSelected } = props; const src = node.data.get("src"); return ( ); }, }; export default plugin;
目前編輯器中的視頻播放插件就是使用該特性實(shí)現(xiàn)的,集成了 plyr-react ,支持 mp4 、webm (其他格式后面會(huì)支持)。
求支持
雖然可能還有些問題,但我后面會(huì)長(zhǎng)期維護(hù)的,希望對(duì)需要的同學(xué)們有幫助 :)。
最后貼一下該項(xiàng)目的 github 地址,求支持,求 star !
https://github.com/kanweiwei/easy-editor
前沿探索
2020-08-20 21:08:42
開源不易,感謝你的支持, ? star me if you like concent ^_^
序言
之前發(fā)表了一篇文章 redux 、mobx 、concent 特性大比拼, 看后生如何對(duì)局前輩 ,吸引了不少感興趣的小伙伴入群開始了解和使用 concent ,并獲得了很多正向的反饋,實(shí)實(shí)在在的幫助他們提高了開發(fā)體驗(yàn),群里人數(shù)雖然還很少,但大家熱情高漲,技術(shù)討論氛圍濃厚,對(duì)很多新鮮技術(shù)都有保持一定的敏感度,如上個(gè)月開始逐漸被提及得越來越多的出自 facebook 的最新狀態(tài)管理方案 recoil ,雖然還處于實(shí)驗(yàn)狀態(tài),但是相必大家已經(jīng)私底下開始欲欲躍試了,畢竟出生名門,有 fb 背書,一定會(huì)大放異彩。
不過當(dāng)我體驗(yàn)完 recoil 后,我對(duì)其中標(biāo)榜的 精確更新 保持了懷疑態(tài)度,有一些誤導(dǎo)的嫌疑,這一點(diǎn)下文會(huì)單獨(dú)分析,是否屬于誤導(dǎo)讀者在讀完本文后自然可以得出結(jié)論,總之本文主要是分析 Concent 與 Recoil 的代碼風(fēng)格差異性,并探討它們對(duì)我們將來的開發(fā)模式有何新的影響,以及思維上需要做什么樣的轉(zhuǎn)變。
數(shù)據(jù)流方案之 3 大流派
目前主流的數(shù)據(jù)流方案按形態(tài)都可以劃分以下這三類 redux 流派
redux 、和基于 redux 衍生的其他作品,以及類似 redux 思路的作品,代表作有 dva 、rematch 等等。 mobx 流派
借助 definePerperty 和 Proxy 完成數(shù)據(jù)劫持,從而達(dá)到響應(yīng)式編程目的的代表,類 mobx 的作品也有不少,如 dob 等。 Context 流派
這里的 Context 指的是 react 自帶的 Context api,基于 Context api 打造的數(shù)據(jù)流方案通常主打輕量、易用、概覽少,代表作品有 unstated 、constate 等,大多數(shù)作品的核心代碼可能不超過 500 行。
到此我們看看 Recoil 應(yīng)該屬于哪一類?很顯然按其特征屬于 Context 流派,那么我們上面說的主打輕量對(duì) Recoil 并不適用了,打開其源碼庫(kù)發(fā)現(xiàn)代碼并不是幾百行完事的,所以基于 Context api 做得好用且強(qiáng)大就未必輕量,由此看出 facebook 對(duì) Recoil 是有野心并給予厚望的。
我們同時(shí)也看看 Concent 屬于哪一類呢? Concent 在 v2 版本之后,重構(gòu)數(shù)據(jù)追蹤機(jī)制,啟用了 defineProperty 和 Proxy 特性,得以讓 react 應(yīng)用既保留了不可變的追求,又享受到了運(yùn)行時(shí)依賴收集和 ui 精確更新的性能提升福利,既然啟用了 defineProperty 和 Proxy,那么看起來 Concent 應(yīng)該屬于 mobx 流派?
事實(shí)上 Concent 屬于一種全新的流派,不依賴 react 的 Context api,不破壞 react 組件本身的形態(tài),保持追求不可變的哲學(xué),僅在 react 自身的渲染調(diào)度機(jī)制之上建立一層邏輯層狀態(tài)分發(fā)調(diào)度機(jī)制,defineProperty 和 Proxy 只是用于輔助收集實(shí)例和衍生數(shù)據(jù)對(duì)模塊數(shù)據(jù)的依賴,而修改數(shù)據(jù)入口還是 setState(或基于 setState 封裝的 dispatch, invoke, sync),讓 Concent 可以 0 入侵的接入 react 應(yīng)用,真正的即插即用和無感知接入。
即插即用 的核心原理是, Concent 自建了一個(gè)平行于 react 運(yùn)行時(shí)的全局上下文,精心維護(hù)這模塊與實(shí)例之間的歸屬關(guān)系,同時(shí)接管了組件實(shí)例的更新入口 setState,保留原始的 setState 為 reactSetState,所有當(dāng)用戶調(diào)用 setState 時(shí),concent 除了調(diào)用 reactSetState 更新當(dāng)前實(shí)例 ui,同時(shí)智能判斷提交的狀態(tài)是否也還有別的實(shí)例關(guān)心其變化,然后一并拿出來依次執(zhí)行這些實(shí)例的 reactSetState,進(jìn)而達(dá)到了狀態(tài)全部同步的目的。
Recoil 初體驗(yàn)
我們以常用的 counter 來舉例,熟悉一下 Recoil 暴露的四個(gè)高頻使用的 api atom,定義狀態(tài) selector, 定義派生數(shù)據(jù) useRecoilState,消費(fèi)狀態(tài) useRecoilValue,消費(fèi)派生數(shù)據(jù)
定義狀態(tài)
外部使用 atom 接口,定義一個(gè) key 為 num ,初始值為 0 的狀態(tài) const numState = atom({ key: "num", default: 0 });
定義派生數(shù)據(jù)
外部使用 selector 接口,定義一個(gè) key 為 numx10 ,初始值是依賴 numState 再次計(jì)算而得到 const numx10Val = selector({ key: "numx10", get: ({ get }) => { const num = get(numState); return num * 10; } });
定義異步的派生數(shù)據(jù)
selector 的 get 支持定義異步函數(shù) 需要注意的點(diǎn)是,如果有依賴,必需先書寫好依賴在開始執(zhí)行異步邏輯 const delay = () => new Promise(r => setTimeout(r, 1000)); const asyncNumx10Val = selector({ key: "asyncNumx10", get: async ({ get }) => { // !!!這句話不能放在 delay 之下, selector 需要同步的確定依賴 const num = get(numState); await delay(); return num * 10; } });
消費(fèi)狀態(tài)
組件里使用 useRecoilState 接口,傳入想要獲去的狀態(tài)(由 atom 創(chuàng)建而得) const NumView = () => { const [num, setNum] = useRecoilState(numState); const add = ()=>setNum(num+1); return (
{num}
); }
消費(fèi)派生數(shù)據(jù)
組件里使用 useRecoilValue 接口,傳入想要獲去的派生數(shù)據(jù)(由 selector 創(chuàng)建而得),同步派生數(shù)據(jù)和異步派生數(shù)據(jù),皆可通過此接口獲得 const NumValView = () => { const numx10 = useRecoilValue(numx10Val); const asyncNumx10 = useRecoilValue(asyncNumx10Val); return (
numx10 :{numx10}
); };
渲染它們查看結(jié)果
暴露定義好的這兩個(gè)組件, 查看在線示例 export default ()=>{ return ( <> ); };
頂層節(jié)點(diǎn)包裹 React.Suspense 和 RecoilRoot ,前者用于配合異步計(jì)算函數(shù)需要,后者用于注入 Recoil 上下文 const rootElement = document.getElementById("root"); ReactDOM.render( Loading...
}> , rootElement );
Concent 初體驗(yàn)
如果讀過 concent 文檔(還在持續(xù)建設(shè)中...),可能部分人會(huì)認(rèn)為 api 太多,難于記住,其實(shí)大部分都是可選的語法糖,我們以 counter 為例,只需要使用到以下兩個(gè) api 即可 run,定義模塊狀態(tài)(必需)、模塊計(jì)算(可選)、模塊觀察(可選) 運(yùn)行 run 接口后,會(huì)生成一份 concent 全局上下文 setState,修改狀態(tài)
定義狀態(tài)&修改狀態(tài)
以下示例我們先脫離 ui,直接完成定義狀態(tài)&修改狀態(tài)的目的 import { run, setState, getState } from "concent"; run({ counter: {// 聲明一個(gè) counter 模塊 state: { num: 1 }, // 定義狀態(tài) } }); console.log(getState('counter').num);// log: 1 setState('counter', {num:10});// 修改 counter 模塊的 num 值為 10 console.log(getState('counter').num);// log: 10
我們可以看到,此處和 redux 很類似,需要定義一個(gè)單一的狀態(tài)樹,同時(shí)第一層 key 就引導(dǎo)用戶將數(shù)據(jù)模塊化管理起來.
引入 reducer
上述示例中我們直接掉一個(gè)呢 setState 修改數(shù)據(jù),但是真實(shí)的情況是數(shù)據(jù)落地前有很多同步的或者異步的業(yè)務(wù)邏輯操作,所以我們對(duì)模塊填在 reducer 定義,用來聲明修改數(shù)據(jù)的方法集合。 import { run, dispatch, getState } from "concent"; const delay = () => new Promise(r => setTimeout(r, 1000)); const state = () => ({ num: 1 });// 狀態(tài)聲明 const reducer = {// reducer 聲明 inc(payload, moduleState) { return { num: moduleState.num + 1 }; }, async asyncInc(payload, moduleState) { await delay(); return { num: moduleState.num + 1 }; } }; run({ counter: { state, reducer } });
然后我們用 dispatch 來觸發(fā)修改狀態(tài)的方法 因 dispatch 會(huì)返回一個(gè) Promise,所以我們需要用一個(gè) async 包裹起來執(zhí)行代碼 import { dispatch } from "concent"; (async ()=>{ console.log(getState("counter").num);// log 1 await dispatch("counter/inc");// 同步修改 console.log(getState("counter").num);// log 2 await dispatch("counter/asyncInc");// 異步修改 console.log(getState("counter").num);// log 3 })()
注意 dispatch 調(diào)用時(shí)基于字符串匹配方式,之所以保留這樣的調(diào)用方式是為了照顧需要?jiǎng)討B(tài)調(diào)用的場(chǎng)景,其實(shí)更推薦的寫法是 import { dispatch } from "concent"; (async ()=>{ console.log(getState("counter").num);// log 1 await dispatch(reducer.inc);// 同步修改 console.log(getState("counter").num);// log 2 await dispatch(reducer.asyncInc);// 異步修改 console.log(getState("counter").num);// log 3 })()
接入 react
上述示例主要演示了如何定義狀態(tài)和修改狀態(tài),那么接下來我們需要用到以下兩個(gè) api 來幫助 react 組件生成實(shí)例上下文(等同于與 vue 3 setup 里提到的渲染上下文),以及獲得消費(fèi) concent 模塊數(shù)據(jù)的能力 register, 注冊(cè)類組件為 concent 組件 useConcent, 注冊(cè)函數(shù)組件為 concent 組件 import { register, useConcent } from "concent"; @register("counter") class ClsComp extends React.Component { changeNum = () => this.setState({ num: 10 }) render() { return (

class comp: {this.state.num}

); } } function FnComp() { const { state, setState } = useConcent("counter"); const changeNum = () => setState({ num: 20 }); return (

fn comp: {state.num}

); }
注意到兩種寫法區(qū)別很小,除了組件的定義方式不一樣,其實(shí)渲染邏輯和數(shù)據(jù)來源都一模一樣。
渲染它們查看結(jié)果
在線示例 const rootElement = document.getElementById("root"); ReactDOM.render(
, rootElement );
對(duì)比 Recoil ,我們發(fā)現(xiàn)沒有頂層并沒有 Provider 或者 Root 類似的組件包裹,react 組件就已接入 concent,做到真正的即插即用和無感知接入,同時(shí) api 保留為與 react 一致的寫法。
組件調(diào)用 reducer
concent 為每一個(gè)組件實(shí)例都生成了實(shí)例上下文,方便用戶直接通過 ctx.mr 調(diào)用 reducer 方法 mr 為 moduleReducer 的簡(jiǎn)寫,直接書寫為 ctx.moduleReducer 也是合法的 // --------- 對(duì)于類組件 ----------- changeNum = () => this.setState({ num: 10 }) // ===> 修改為 changeNum = () => this.ctx.mr.inc(10);// or this.ctx.mr.asynCtx() // --------- 對(duì)于函數(shù)組件 ----------- const { state, mr } = useConcent("counter");// useConcent 返回的就是 ctx const changeNum = () => mr.inc(20);// or ctx.mr.asynCtx()
異步計(jì)算函數(shù)
run 接口里支持?jǐn)U展 computed 屬性,即讓用戶定義一堆衍生數(shù)據(jù)的計(jì)算函數(shù)集合,它們可以是同步的也可以是異步的,同時(shí)支持一個(gè)函數(shù)用另一個(gè)函數(shù)的輸出作為輸入來做二次計(jì)算,計(jì)算的輸入依賴是自動(dòng)收集到的。 const computed = {// 定義計(jì)算函數(shù)集合 numx10({ num }) { return num * 10; }, // n:newState, o:oldState, f:fnCtx // 結(jié)構(gòu)出 num,表示當(dāng)前計(jì)算依賴是 num,僅當(dāng) num 發(fā)生變化時(shí)觸發(fā)此函數(shù)重計(jì)算 async numx10_2({ num }, o, f) { // 必需調(diào)用 setInitialVal 給 numx10_2 一個(gè)初始值, // 該函數(shù)僅在初次 computed 觸發(fā)時(shí)執(zhí)行一次 f.setInitialVal(num * 55); await delay(); return num * 100; }, async numx10_3({ num }, o, f) { f.setInitialVal(num * 1); await delay(); // 使用 numx10_2 再次計(jì)算 const ret = num * f.cuVal.numx10_2; if (ret % 40000 === 0) throw new Error("-->mock error"); return ret; } } // 配置到 counter 模塊 run({ counter: { state, reducer, computed } });
上述計(jì)算函數(shù)里,我們刻意讓 numx10_3 在某個(gè)時(shí)候報(bào)錯(cuò),對(duì)于此錯(cuò)誤,我們可以在 run 接口的第二位 options 配置里定義 errorHandler 來捕捉。 run({/**storeConfig*/}, { errorHandler: (err)=>{ alert(err.message); } })
當(dāng)然更好的做法,利用 concent-plugin-async-computed-status 插件來完成對(duì)所有模塊計(jì)算函數(shù)執(zhí)行狀態(tài)的統(tǒng)一管理。 import cuStatusPlugin from "concent-plugin-async-computed-status"; run( {/**storeConfig*/}, { errorHandler: err => { console.error('errorHandler ', err); // alert(err.message); }, plugins: [cuStatusPlugin], // 配置異步計(jì)算函數(shù)執(zhí)行狀態(tài)管理插件 } );
該插件會(huì)自動(dòng)向 concent 配置一個(gè) cuStatus 模塊,方便組件連接到它,消費(fèi)相關(guān)計(jì)算函數(shù)的執(zhí)行狀態(tài)數(shù)據(jù) function Test() { const { moduleComputed, connectedState, setState, state, ccUniqueKey } = useConcent({ module: "counter",// 屬于 counter 模塊,狀態(tài)直接從 state 獲得 connect: ["cuStatus"],// 連接到 cuStatus 模塊,狀態(tài)從 connectedState.{$moduleName}獲得 }); const changeNum = () => setState({ num: state.num + 1 }); // 獲得 counter 模塊的計(jì)算函數(shù)執(zhí)行狀態(tài) const counterCuStatus = connectedState.cuStatus.counter; // 當(dāng)然,可以更細(xì)粒度的獲得指定結(jié)算函數(shù)的執(zhí)行狀態(tài) // const {['counter/numx10_2']:num1Status, ['counter/numx10_3']: num2Status} = connectedState.cuStatus; return (
{state.num}
{counterCuStatus.done ? moduleComputed.numx10 : 'computing'} {/** 此處拿到錯(cuò)誤可以用于渲染,當(dāng)然也拋出去 */} {/** 讓 ErrorBoundary 之類的組件捕捉并渲染降級(jí)頁面 */} {counterCuStatus.err ? counterCuStatus.err.message : ''}
{moduleComputed.numx10_2}
{moduleComputed.numx10_3}
); }
![] https://raw.githubusercontent.com/fantasticsoul/assets/master/article-img/recoil-vs-concent/r4.gif )
查看在線示例
精確更新
開篇我說對(duì) Recoli 提到的 精確更新 保持了懷疑態(tài)度,有一些誤導(dǎo)的嫌疑,此處我們將揭開疑團(tuán)
大家知道 hook 使用規(guī)則是不能寫在條件控制語句里的,這意味著下面語句是不允許的 const NumView = () => { const [show, setShow] = useState(true); if(show){// error const [num, setNum] = useRecoilState(numState); } }
所以用戶如果 ui 渲染里如果某個(gè)狀態(tài)用不到此數(shù)據(jù)時(shí),某處改變了 num 值依然會(huì)觸發(fā) NumView 重渲染,但是 concent 的實(shí)例上下文里取出來的 state 和 moduleComputed 是一個(gè) Proxy 對(duì)象,是在實(shí)時(shí)的收集每一輪渲染所需要的依賴,這才是真正意義上的按需渲染和精確更新。 const NumView = () => { const [show, setShow] = useState(true); const {state} = useConcent('counter'); // show 為 true 時(shí),當(dāng)前實(shí)例的渲染對(duì) state.num 的渲染有依賴 return {show ?

{state.num}

: 'nothing'} }
點(diǎn)我查看代碼示例
當(dāng)然如果用戶對(duì) num 值有 ui 渲染完畢后,有發(fā)生改變時(shí)需要做其他事的需求,類似 useEffect 的效果,concent 也支持用戶將其抽到 setup 里,定義 effect 來完成此場(chǎng)景訴求,相比 useEffect ,setup 里的 ctx.effect 只需定義一次,同時(shí)只需傳遞 key 名稱,concent 會(huì)自動(dòng)對(duì)比前一刻和當(dāng)前刻的值來決定是否要觸發(fā)副作用函數(shù)。 conset setup = (ctx)=>{ ctx.effect(()=>{ console.log('do something when num changed'); return ()=>console.log('clear up'); }, ['num']) } function Test1(){ useConcent({module:'cunter', setup}); return

for setup

}
更多關(guān)于 effect 與 useEffect 請(qǐng)查看此文
結(jié)語
Recoil 推崇狀態(tài)和派生數(shù)據(jù)更細(xì)粒度控制,寫法上 demo 看起來簡(jiǎn)單,實(shí)際上代碼規(guī)模大之后依然很繁瑣。
Concent 遵循 redux 單一狀態(tài)樹的本質(zhì),推崇模塊化管理數(shù)據(jù)以及派生數(shù)據(jù),同時(shí)依靠 Proxy 能力完成了 運(yùn)行時(shí)依賴收集 和 追求不可變 的完美整合。
所以你將獲得: 運(yùn)行時(shí)的依賴收集 ,同時(shí)也遵循 react 不可變的原則 一切皆函數(shù)(state, reducer, computed, watch, event...),能獲得更友好的 ts 支持 支持中間件和插件機(jī)制,很容易兼容 redux 生態(tài) 同時(shí)支持集中與分形模塊配置,同步與異步模塊加載,對(duì)大型工程的彈性重構(gòu)過程更加友好
最后解答一下關(guān)于 concent 是否支持 current mode 的疑惑,先上結(jié)論,100%支持。
我們首先要理解 current mode 原理是因?yàn)?fiber 架構(gòu)模擬出了和整個(gè)渲染堆棧(即 fiber node 上存儲(chǔ)的信息),得以有機(jī)會(huì)讓 react 自己以組件為單位調(diào)度組件的渲染過程,可以懸停并再次進(jìn)入渲染,安排優(yōu)先級(jí)高的先渲染,重度渲染的組件會(huì)切片為多個(gè)時(shí)間段反復(fù)渲染,而 concent 的上下文本身是獨(dú)立于 react 存在的(接入 concent 不需要再頂層包裹任何 Provider ), 只負(fù)責(zé)處理業(yè)務(wù)生成新的數(shù)據(jù),然后按需派發(fā)給對(duì)應(yīng)的實(shí)例,之后就是 react 自己的調(diào)度流程,修改狀態(tài)的函數(shù)并不會(huì)因?yàn)榻M件反復(fù) 重入 而多次執(zhí)行(這點(diǎn)需要我們遵循不該在渲染過程中書寫包含有副作用的代碼原則),react 僅僅是調(diào)度組件的渲染時(shí)機(jī)。
? star me if you like concent ^_^
Edit on CodeSandbox
Edit on StackBlitz
如果有關(guān)于 concent 的疑問,可以掃碼加群咨詢,會(huì)盡力答疑解惑,幫助你了解更多,里面的不少小伙伴都變成老司機(jī)了,用過之后都表示非常 happy,客官上船試試便知??。

前沿探索
2020-08-20 21:08:31
如題,新網(wǎng)站想使用 Fluent UI,奈何微軟夾帶私貨,只給 TS 案例,JS 版本完全沒有。
遂拷貝一份文檔的示例代碼進(jìn)去,打算調(diào)試,由于官網(wǎng)包已改名,把 fabric-ui 改成 @ fluentui /react 。
(我非常想吐槽,Fluent UI 的官網(wǎng)文檔跟一坨米田共一樣,示例代碼不但沒有更新過,包管理、文檔庫(kù)還特別亂。寫個(gè)導(dǎo)航欄要 import 各種奇奇怪怪的庫(kù)。文檔還只有 TS 版本,要知道其它的 React 組件庫(kù)都是提供了 JS 和 TS 兩種版本樣例可供選擇的,為了推廣自家的 TS 真的是不擇手段。)
新建 TSX,粘貼代碼,一個(gè)字都沒動(dòng),僅僅只是換了包名。
然后,parcel,渲染,沒有報(bào)錯(cuò)。但是調(diào)試網(wǎng)頁什么都沒有。
我 X 你 X !微軟!
附:TSX 代碼前面和后面部分。
為什么沒有中間部分?因?yàn)橹虚g我全部照搬的微軟官網(wǎng)的 Example ,一個(gè)字都沒有改過。
前沿探索
2020-08-20 21:07:49
父組件 state 更新觸發(fā)渲染導(dǎo)致子組件中 iframe 也跟著刷新,莫名通過“原本子組件部署在父組件 render 中得 return 處,現(xiàn)將該處替換為 this.props.children,然后子組件對(duì)應(yīng)部署在父組件得部署區(qū)得雙標(biāo)簽內(nèi)”來規(guī)避了
前半句 [父組件 state 更新觸發(fā)渲染導(dǎo)致子組件中 iframe 也跟著刷新] 不知各位是否有遇見,
后半句是筆者誤打誤撞試錯(cuò)出來得“解決?”辦法,至少規(guī)避了父組件重新渲染時(shí)子組件 iframe 一直在刷新.
這會(huì)兒想探究一下其中得原因,不知從何入手。
當(dāng)然如果筆者對(duì)現(xiàn)象分析錯(cuò)誤——“實(shí)際上壓根沒有上述這回事,導(dǎo)致該效果得實(shí)際原因是別的什么”
還請(qǐng) v 佬們告知。
業(yè)務(wù)邏輯以及項(xiàng)目結(jié)構(gòu)得話大概描述一下
}/> //LayoutContainer 里是一堆布局,挑個(gè)合適得地方塞上{this.props.children}
然后 ChildRoute 里就是二級(jí)路由以及 iframe 的配置 />}/>
流程就是,點(diǎn)擊布局頁面切換了登陸用戶得身份會(huì)更新 state 導(dǎo)致 LayoutContainer 重新渲染,若不采用 this.props.children 得法子將導(dǎo)致其“子組件”得 iframe 也跟著刷新了
前沿探索
2020-08-20 21:07:38
嗯,目前已知有一些三方的庫(kù),react-native-fast-image
我看了下,沒有看到我想象中的那個(gè)特性,就是 進(jìn)入某個(gè)頁面后, 顯示列表頁中的圖片(這時(shí)候進(jìn)行下載),但是下載有并發(fā)數(shù)量的控制,然后如果,離開了這個(gè)頁面,正在進(jìn)行中的下載,會(huì)自動(dòng)降級(jí)(或者取消)
還是說,這個(gè)是個(gè)偽需求,不需要控制并發(fā)數(shù)量之類的(事實(shí)上,我好像也沒有搜索到其他文章有介紹這類的方案)
前沿探索
2020-08-20 21:07:30
因?yàn)?react-photo-view 插件無法提供水印功能,又沒法子暴露 img 元素, 所以筆者用了 https://blog.csdn.net/qq_35306736/article/details/106522144 的法子,通過 url 獲得 base64 用 img 接受繪制在 canvas 添加水印 toBlob 轉(zhuǎn)成 blob 再 URL.createObjectURL 轉(zhuǎn)成 DOMString,如此就純前端將 url 變成一個(gè)帶有水印的新 src 可用值。
然后出現(xiàn)了下述問題: 上述水印操作提到了 constructor 時(shí)期,
constructor 、componentWillMount 、componentDidMount 都可以打印出這個(gè) JSONarray,形如 console.log(this.state.photoImages)的值為 [{intro: "以上證照均由商家提供,信息以證照所示為準(zhǔn)", src: "blob:http://192.168.56.1:3000/7eb8a3a8-9c80-4b09-a620-653b04762620"}]
問題發(fā)生了,
this.state.photoImages.length 的值一直是 0,雖然 this.state.photoImages 是有值的。
如果在頁面設(shè)置一個(gè)交互按鈕,開關(guān)一個(gè)新 state 來判斷渲染 this.state.photoImages 給 react-photo-view 插件是生效的。瀏覽器的 react developer tools 插件也可以從該頁面組件的 state 中查得 photoImages 有值(不然上面的交互按鈕也不會(huì)成功了)
前沿探索
2020-08-20 21:07:20
最近弄一個(gè)后臺(tái)系統(tǒng)頁面,后端發(fā)一個(gè)大型的權(quán)限樹過來。其實(shí)就是比對(duì) url 判斷權(quán)限就可以了,如果有多級(jí) switch 組件就要截?cái)嗷蛘咂唇?url 來比對(duì)。這個(gè) url 其實(shí)是和組件的嵌套關(guān)系耦合的,改起來真麻煩。 在路由攔截層面,react-router 都是在一個(gè)一個(gè)“關(guān)卡”手動(dòng)搞權(quán)限判斷,這個(gè)精度和操作空間是細(xì)了,但是管理起來好麻煩。 是 vue-router 給寵的?
前沿探索
2020-08-20 21:07:11
Markdown 主要就是用來寫文檔,而寫了文檔就得讓人看……但寫文檔的你有考慮過看文檔人的打開姿勢(shì)嗎?
今天就跟大家侃一下,「看文檔」這件看似簡(jiǎn)單的事,VLOOK? 是怎么考慮和做到有多么極致的~
──────────
相信很多 Markdown 粉都知道 Typora 這款優(yōu)秀的編輯器,而 VLOOK? 就是讓這款優(yōu)秀的編輯器和 Markdown 變得更親和、體驗(yàn)更好的增強(qiáng)插件。
VLOOK? 作為一款 Typora 的增強(qiáng)插件,在文檔導(dǎo)航方面,竟然提供了 4 種導(dǎo)航工具 / 方式,考慮了多種差異化的文檔閱讀和導(dǎo)航的場(chǎng)景:
1 、 大綱導(dǎo)航 :適用于全局快速定位到文檔內(nèi)的目標(biāo)章節(jié)
2 、 逐章導(dǎo)航 :適用于多章節(jié)間頻繁切換,瀏覽相近章節(jié)的內(nèi)容
3 、 逐段導(dǎo)航 :適用于局部?jī)?nèi)容的逐段瀏覽,適合于內(nèi)容審核、講解時(shí),讓演講人與觀眾共同聚焦到同一段上
4 、 插圖導(dǎo)航 :適用于全局快速瀏覽文檔內(nèi)的所有插圖,并跳轉(zhuǎn)至插圖所在的位置
──────────
以下將簡(jiǎn)單展開介紹一下:
一、大綱導(dǎo)航
最為熟悉和常用的文檔導(dǎo)航方式,支持多級(jí)章節(jié)折疊。 (適合于全局快速定位到文檔內(nèi)的目標(biāo)章節(jié))
二、逐章導(dǎo)航
在長(zhǎng)文檔中特別好用,隨時(shí)瞇一眼就知道當(dāng)前章節(jié)、前 / 后章節(jié)是什么了。 (適合于在多章節(jié)間頻繁切換,瀏覽相近章節(jié)的內(nèi)容)
支持快捷鍵操作:← / →,或 < / >
三、逐段導(dǎo)航
這個(gè)很 GEEK,可以通過鍵盤逐段進(jìn)行瀏覽,習(xí)慣用 VI / VIM 的人應(yīng)該會(huì)歡呼! (適合于內(nèi)容審核、講解時(shí),讓演講人與觀眾共同聚焦到同一段上)
支持快捷鍵操作:J / K / H / L
四、插圖導(dǎo)航
讓你快速在快速瀏覽文檔的所有插圖,并能直接跳到文檔中對(duì)應(yīng)的位置。
目前 VLOOK? 最新發(fā)布版本是 V9.19
下一個(gè)版本計(jì)劃在表格排版方面有大招(表格行分組折疊、增強(qiáng)的列格式等),敬請(qǐng)期待一下~
VLOOK 主頁
[上一篇] 再也不用擔(dān)心我的表格了,支持 Markdown 表格單元格合并的神器:Typora + VLOOK
[下一篇] (敬請(qǐng)期待?。?
──────────
「 VLOOK ── 讓你的 Markdown 有了新看法 」
我會(huì)在后面陸續(xù)抽空為大家分享 VLOOK 的一些好玩的特性,要小期待一下喔~
前沿探索
2020-08-20 21:04:31
標(biāo)題可能不好理解,我來詳細(xì)闡述一下。
前言:需求比技術(shù)重要
很多程序員出身想做產(chǎn)品的人都很容易進(jìn)入一個(gè)思維誤區(qū),即是從自身想法出發(fā),覺得某個(gè)技術(shù)很酷,因而覺得做了就能成。
但事實(shí)上并不是這樣。
你想要去做產(chǎn)品或者創(chuàng)業(yè),市場(chǎng)需求比你自身的想法重要,也比你認(rèn)為的炫酷技術(shù)重要。舉例子,你找到一個(gè)很好看很不錯(cuò)的蘋果,你覺得你稍微包裝一下可以拿出去賣。結(jié)果發(fā)現(xiàn)別人需要的是一個(gè)西瓜,因?yàn)槲鞴辖饪省H绻阋婚_始知道別人需要的是西瓜解渴,那你再去找西瓜。會(huì)讓你更容易「成功」。因而,做銷售遠(yuǎn)比程序員去做產(chǎn)品或生意或創(chuàng)業(yè)要更容易成功。因?yàn)樗麄冸x需求更近。即使是喬布斯,也多次承認(rèn)說用戶的需求才是最重要的。
要做什么:學(xué)習(xí),研究,輸出
學(xué)習(xí)和研究商業(yè)模式
任何產(chǎn)品的需求都是應(yīng)當(dāng)可以被驗(yàn)證的。比如簡(jiǎn)單的,找到一百個(gè)用戶,如果他們有一定比例愿意為你的商品付費(fèi)。那么可以說你的商品是有市場(chǎng)的。也就是說需求是有研究途徑的,而商業(yè)模式付費(fèi)模式的設(shè)計(jì)也是應(yīng)當(dāng)有體系的。但據(jù)我了解大部分的程序員都不懂這一塊,這也會(huì)成為我們?nèi)プ霎a(chǎn)品 /生意 /創(chuàng)業(yè)的障礙。我想我們可以先從學(xué)習(xí)國(guó)內(nèi)外獨(dú)立開發(fā)者的例子入手,深入剖析他們是怎么: 發(fā)現(xiàn)需求 驗(yàn)證需求的合理性 把需求轉(zhuǎn)化為產(chǎn)品 設(shè)計(jì)產(chǎn)品的盈利模式 理解產(chǎn)品的前景與潛力 等等
這種學(xué)習(xí)與研究會(huì)一方面給我們帶來借鑒意義,一方面鍛煉我們?cè)谏虡I(yè)模式方面思考的能力。而這種能力對(duì)于國(guó)內(nèi)程序員大部分是欠缺的。隨著國(guó)內(nèi)用戶付費(fèi)能力與付費(fèi)習(xí)慣的轉(zhuǎn)變,我相信掌握這種能力是很重要的。而割裂現(xiàn)實(shí)的是現(xiàn)如今很多獨(dú)立開發(fā)者其實(shí)還是在靠做外包這種比較低效的商業(yè)模式維生的。
輸出
因?yàn)槲宜伎寄懿荒軐ふ壹衔覀兂绦騿T群體中,有想要獨(dú)立開發(fā)做產(chǎn)品的童鞋,一起學(xué)習(xí)和研究一些國(guó)內(nèi)外獨(dú)立開發(fā)者的成功例子,一起研討輸出內(nèi)容(文章 /視頻等)。而后期,我們輸出的內(nèi)容也可以打包成為付費(fèi)產(chǎn)品,然后我們?cè)俟餐降膩矸峙溥@份收益。
怎么做
一個(gè)團(tuán)隊(duì)當(dāng)然需要有規(guī)則。進(jìn)入和退出的規(guī)則,上升和下降的規(guī)則,并且規(guī)則能夠讓大多數(shù)人認(rèn)可。 比如說,不同人按周輪流的輸出內(nèi)容,然后計(jì)算貢獻(xiàn)度,貢獻(xiàn)度太低的童鞋不能被留在團(tuán)隊(duì)里。貢獻(xiàn)度高的童鞋會(huì)擁有更多的權(quán)利等等。這個(gè)規(guī)則我們可以一起探討起草制訂出來。
以上。想到更多補(bǔ)充。歡迎大家斧正。
有興趣的可以加我微信,再深入探討:chenhg33,備注:v2 程序員商業(yè)
前沿探索
2020-08-20 21:04:13
剛剛看了 /t/684876 的發(fā)文,有這個(gè)感觸。
雖然不算完全的獨(dú)立(幫導(dǎo)師做事有工資拿),也有在嘗試獨(dú)立開發(fā)的項(xiàng)目,常常犯困犯懶,沒有工頭催,其實(shí)就是拖延癥...
找其他朋友也不聊上產(chǎn)品的事,可能只有獨(dú)立開發(fā)者有這個(gè)心態(tài)吧。建了個(gè)獨(dú)立開發(fā)者相互扶持的微信群,犯困時(shí),相互鼓勵(lì)吧。
微信群二維碼: i.loli.net/2020/06/26/4xnqjaWfNMKrkYh.png
前沿探索
2020-08-20 21:04:03
自由的意思
魯迅有個(gè)小說叫《傷逝》。說有對(duì)進(jìn)步青年男女,男的叫涓生,女的叫子君。兩個(gè)人反抗包辦婚姻,自由戀愛,離家出走,但很快就面臨了生活的重壓,最后日子過不下去,子君死了,涓生回到了原來住的地方。[1]
不再出賣自己的勞動(dòng)力,是大多數(shù)人的愿望,但極少有人會(huì)付諸行動(dòng)。
自由不等于輕松自在,其真正的含義是負(fù)全部的責(zé)任。軟件從開發(fā)到營(yíng)銷,全流程都要懂,而且必須要主動(dòng)跟上時(shí)代的潮流,不能坐吃山空。
更刺激的是,如果失敗,不僅沒錢賺,還可能賠進(jìn)去。
前幾天讀書會(huì)交流群,來了個(gè)自由職業(yè)者,大家都很羨慕和尊重他。
因?yàn)?自由職業(yè)者是群“手眼通天”的人。
向物理學(xué)家學(xué)習(xí)
在信息爆炸的年代,要想抓住那些重要的信息,很不容易。
物理學(xué)家們有個(gè)很好的互助模式,他們不會(huì)妄圖吸收所有最新消息,而是在內(nèi)部進(jìn)行分工。每個(gè)人都會(huì)介紹自己關(guān)注到的最新消息,分享自己的工作心得,這種互助方法大大的提高了效率。[1]
自由并不意味著單槍匹馬,完全無組織,不合作只會(huì)死得更快。
對(duì)等交換
不會(huì)有人站在大街上散發(fā)人民幣;也不會(huì)有人愿意在群聊里,將自己拿手的技巧和重要消息,白白泄露給別人。
單方面的付出是不可持續(xù)的,而有規(guī)則的交換是可以的,所有人的付出能夠得到回報(bào)。
人不用很多,但一定有基本的規(guī)則,能夠形成比較高質(zhì)量的交換。
比如,可以這樣 價(jià)值規(guī)則:你的分享或者探索方向,必須有至少 25% 的成員表示支持;分享發(fā)布后,至少有 10% 的人表示贊賞。 積分規(guī)則:贊賞折算積分,如果未能如期分享,或分享價(jià)值未能滿足要求,按照規(guī)則扣分,當(dāng)積分歸零時(shí)退出。 邀請(qǐng)制度:最開始的時(shí)候人工審核成員,到后期采用邀請(qǐng)制,邀請(qǐng)者和被邀請(qǐng)者在記分中有關(guān)聯(lián)。
兩個(gè)好處都要占
如果自由開發(fā)者能組成較為緊密協(xié)作的隊(duì)伍,就能夠保持自由獨(dú)立的前提之下,獲得一些只有在企業(yè)開發(fā)組里才能擁有的優(yōu)勢(shì)。
除了上面說的能夠互相學(xué)習(xí)經(jīng)驗(yàn)和技術(shù)之外,還能夠加深了解,很多個(gè)人開發(fā)者都希望能夠與別人進(jìn)行分工,不要自己什么東西都做,這個(gè)想法最大的困難就是雙方不了解,不知道能做出什么東西,信任也不足,如果在此之前大家通過經(jīng)驗(yàn)的分享和互相學(xué)習(xí),已經(jīng)有了一定程度的了解,那么這種合作將會(huì)變得容易很多。
想得遠(yuǎn)一點(diǎn),如果某個(gè)產(chǎn)品真的很成功,要進(jìn)一步的商業(yè)化,那么就相當(dāng)于有了創(chuàng)業(yè)團(tuán)隊(duì),可以直接啟動(dòng)。
此前如果說是自由開發(fā)的話,那么就完全獨(dú)立了,有了這種組織之后,你可以調(diào)整獨(dú)立與合作的比例,達(dá)到更適合自己的平衡點(diǎn)。
已經(jīng)有幾個(gè)人有參與意向,如果你有興趣可以發(fā)郵件聯(lián)系我,咱聊聊,也許能成。
電子郵件: [email?protected]
[1]:魯迅的小說,和物理學(xué)家的故事,來自萬維鋼的文章,他曾經(jīng)在美國(guó)從事物理研究。
一種典型需求
前沿探索
2020-08-20 21:03:39
有這么一個(gè)函數(shù) f(x, y),其中 x, y 都是非負(fù)整數(shù),f(x,y) 的值為非負(fù)實(shí)數(shù)。
已知 f 滿足如下條件: f(x, 0) = 0 對(duì)任何 x 成立 f(0, y) = y 對(duì)任何 y 成立 f(x, y) = f(y-1, y) 對(duì)任何 x >= y > 0 成立 f(x, y) = [xf(x+1, y-1) + yf(x-1, y+1)] / (x+y) 對(duì)任何 y > x > 0 成立
請(qǐng)寫出一個(gè)程序,可以計(jì)算 f(10000, 10000) 的值。
給出可行解的朋友可以留二維碼地址,有紅包打賞。
前沿探索
2020-08-20 21:03:27
剛看有個(gè)老弟發(fā)的:https://www.v2ex.com/t/696762#reply6 感覺有點(diǎn)饒,恰好我之前寫過一遍關(guān)于時(shí)間的想法,發(fā)來吹牛。 ---------------------------------- [時(shí)間的本質(zhì)] 時(shí)間、歷法,是先賢觀察天象總結(jié)而來。 地球自己轉(zhuǎn)一圈,被稱為 1 天。 地球繞太陽轉(zhuǎn)一圈,被稱為 1 年。 古人將 1 天分割為 12 時(shí)辰,發(fā)明了日晷、圭表、漏刻… 通過觀察這些設(shè)備的變化來了解時(shí)間。 現(xiàn)代將 1 天分割為 24 小時(shí),通過手機(jī)上的數(shù)字變化了解時(shí)間。 細(xì)細(xì)想一下,地球轉(zhuǎn)圈圈、手機(jī)上的數(shù)字、日晷…這些時(shí)間參照物,都是通過物質(zhì)變化來體現(xiàn)時(shí)間。 這時(shí)候會(huì)有人說,即便地球不轉(zhuǎn),不使用手表記時(shí),可時(shí)間還是會(huì)繼續(xù)走。 假定,在一個(gè)絕對(duì)靜止的空間,物質(zhì)不發(fā)生任何改變,那么人該如何記錄時(shí)間? 閉眼默數(shù) 1,2,3… 錯(cuò)。 意識(shí)活動(dòng)是基于物質(zhì)變化的,大腦的每一個(gè)念想,都會(huì)消耗能量,用微弱的電子傳遞信息。 沒有物質(zhì)變化,就沒有時(shí)間,物質(zhì)變化先于時(shí)間。 時(shí)間是記錄物質(zhì)變化虛擬概念! [時(shí)間的錯(cuò)覺] 一群人在一起,要社交、要干活、要交易… 為此必須建立一套精神共識(shí),這種精神共識(shí)就是社會(huì)時(shí)間。 周五放假,晚上 8 點(diǎn)約朋友看電影,這就是共識(shí)。 如果去美國(guó)呢? 調(diào)時(shí)區(qū),換成美國(guó)時(shí)間,這樣才能和當(dāng)?shù)嘏笥鸭s會(huì)。 在農(nóng)村,30 歲還沒嫁出去,就是老女人了,被人指指點(diǎn)點(diǎn)。 女人在父母的催促下,只能倉(cāng)促結(jié)婚。 在上海,30 歲的少女遍地都是,沒嫁人很正常,女人看到別人都這樣,自己也不著急結(jié)婚,于是大齡晚婚晚育… 少年剛上初中,每天 7 點(diǎn)就被鬧鐘吵醒,如果起不來,老媽就會(huì)掀被子。 某一天鬧鐘壞了,少年遲到了,被罰站。 從出生起,每個(gè)人都會(huì)在社會(huì)時(shí)間的支配下生活,如果不服從社會(huì)時(shí)間,就會(huì)被罰站,挨鞭子。 社會(huì)時(shí)間導(dǎo)致人產(chǎn)生了一種錯(cuò)覺,認(rèn)為時(shí)間是客觀的,絕對(duì)的,必然的存在,整個(gè)宇宙都在同一套時(shí)間。 正常人活到 30 年,身體機(jī)能就會(huì)下降,活 80 年很多器官就會(huì)罷工。 那么,人的壽命是 80 年? 80 年只是人體腐朽這種物質(zhì)變化的度量單位。 事實(shí)上,在絕對(duì)靜止,物質(zhì)不變的情況下,沒有時(shí)間。 物質(zhì)變化的速度不同,就會(huì)產(chǎn)生不同的時(shí)間。 諸天萬界,浩大宇宙,必然存在無數(shù)種時(shí)間。 [關(guān)于愛因斯坦的理論] 鐘慢效應(yīng)、尺縮效應(yīng)…的推理過程,高中數(shù)學(xué)水平就能看懂,網(wǎng)上能搜到很多資料。 這些理論最終得出的結(jié)論是: 速度越快,時(shí)間越慢。 質(zhì)量越大,時(shí)間越慢。 當(dāng)初就在這里迷糊了,公式都能看懂,但為什么速度快了,時(shí)間就變慢?一個(gè)在宇宙飛船待了 1 年的人,為什么回到地球后,親戚都變老了? 實(shí)驗(yàn)證實(shí),高速運(yùn)行的原子鐘,和靜止?fàn)顟B(tài)的原子鐘相比,高速運(yùn)行的原子鐘時(shí)間真的變慢了。 由于引力不同,地面的時(shí)間比衛(wèi)星慢 38 微妙,這項(xiàng)技術(shù)被用在目前的衛(wèi)星導(dǎo)航上,用來保證時(shí)間同步。 不是表不準(zhǔn),是時(shí)間真的變慢了… 有一天,哥哥突然想明白了,有物質(zhì)運(yùn)動(dòng),才有時(shí)間。 光速會(huì)導(dǎo)致物質(zhì)運(yùn)動(dòng)變慢,飛行員眨眼睛,打噴嚏,思考下午吃什么,身體細(xì)胞分裂的過程… 這一切都成了慢動(dòng)作,但對(duì)于飛船內(nèi)的飛行員來說,一切和往常一樣。 物體高速運(yùn)動(dòng),會(huì)導(dǎo)致量子其它方向的運(yùn)動(dòng)速度變慢,當(dāng)一個(gè)物體的內(nèi)部運(yùn)動(dòng)減慢,就時(shí)間變慢了,因?yàn)闀r(shí)間就是衡量物質(zhì)運(yùn)動(dòng)的參數(shù)。 “質(zhì)量越大的物體,周圍的時(shí)間越慢”,在黑洞旁邊待一會(huì),回來后地球也許已經(jīng)是幾十年后了。 因?yàn)楦哔|(zhì)量物體的引力更大,引力越大物質(zhì)運(yùn)動(dòng)越慢,時(shí)間相對(duì)就會(huì)越長(zhǎng)。 怎樣回到過去? 還原到過去的物質(zhì)形態(tài)即可! 10 年前,哥哥正在讀中學(xué),當(dāng)時(shí)周圍都有那些人?天氣如何?學(xué)校都有哪些老師?食堂的飯賣多錢?…這些都以物質(zhì)特定的形式存在。還原物質(zhì)為 10 年前的狀態(tài),就能回到過去。 [從來都無法穿越時(shí)光,唯一的方法是重塑過去] 我們?nèi)缃窨吹降男枪?是億萬年前發(fā)出的,這便是過去的痕跡,即便是一個(gè)普通手電筒發(fā)出的光,也會(huì)永遠(yuǎn)傳下去,被大氣阻攔,被塵埃覆蓋,直至微弱不可見,但終究有跡可循。 如能洞察毫末,掌握所有物質(zhì)變化的規(guī)律,便能回溯過去。
前沿探索
2020-08-20 21:03:21
眾所周知芯片的發(fā)展基本被焊死了。那換個(gè)思路,在芯片渠道解決之前,依靠 5g 低延時(shí),整個(gè)把手機(jī)系統(tǒng)搬到云上,手機(jī)全力堆外設(shè)并與云系統(tǒng)緊密結(jié)合,銷售時(shí)捆綁云服務(wù)甚至流量服務(wù),是不是可以做到甚至超過旗艦的性能和體驗(yàn)?
前沿探索
2020-08-20 21:03:13
如題。
客戶投錢買酒,平臺(tái)幫買、代存儲(chǔ)、代銷售。
屯個(gè)三五年,然后逐年拿出一部分往外賣。
平臺(tái)收點(diǎn)手續(xù)費(fèi)、分點(diǎn)升值利潤(rùn)。
如果有這樣的平臺(tái),你愿意真金白銀的把錢給平臺(tái)去操作嗎?
比起自己買賣存儲(chǔ)的話,平臺(tái)優(yōu)勢(shì)比較明顯。一個(gè)是量大可以壓價(jià)提升利潤(rùn)、二個(gè)是可以做到更專業(yè),也不至于幾天一瓶、下周一瓶自己全部喝掉了。
但是也有風(fēng)險(xiǎn),擔(dān)心平臺(tái)跑路、扯皮啥的。
大家有啥想法和建議?
前沿探索
2020-08-20 21:03:03
Reddit 是國(guó)外非?;鸬纳缃恍侣勂脚_(tái),市值過億,在國(guó)內(nèi)模仿,是否能火?patreon 在國(guó)外非常出名,粉絲可以給藝術(shù)家、自由職業(yè)者 打賞,幫其完成夢(mèng)想, 在國(guó)內(nèi)模仿 是否能火? 單身 不婚 老齡化 是大趨勢(shì),寵物可以滿足情感需求,目前養(yǎng)寵物的人越來越多, 那么做個(gè)寵物社交平臺(tái),人氣一定很旺,靠寵物周邊產(chǎn)品盈利,這個(gè)項(xiàng)目怎么樣? 短視頻這么火,那么垂直領(lǐng)域的短視頻平臺(tái),如游戲、健身、廚藝,是否是一個(gè)好項(xiàng)目? 以上都是我在 V 站看到的... [以上失敗率極高,十有八九會(huì)虧。] Reddit 能火,是因?yàn)楫?dāng)年所有新聞網(wǎng)都禁止評(píng)論 而且都是官媒說了算,Reddit 是第一個(gè) 用戶可以自由評(píng)論,根據(jù)用戶熱度決定顯示什么內(nèi)容,其成功占盡天時(shí)地利,無法模仿。 國(guó)內(nèi)有微博、今日頭條.... 太多的相似競(jìng)品。 前幾天在 V2 看到有老弟做了類似的平臺(tái),個(gè)人不太看好。 patreon 能火的的原因是,國(guó)外自由職業(yè)的比例非常大,且民眾普遍有付費(fèi)意識(shí)。 國(guó)內(nèi)目前模仿者有好幾個(gè),發(fā)展的都很一般,主要是外部條件不成熟(自由從業(yè)者人數(shù)少 普通人打賞意愿低) 寵物社交平臺(tái),這種項(xiàng)目更別提了,做 UGC 社區(qū),推廣能力 用戶量 優(yōu)質(zhì)內(nèi)容 ... 難度極高。 [業(yè)務(wù)鏈越長(zhǎng),難度越大,越容易死。] 類似以上項(xiàng)目,我做過不少,全部都失敗了
前沿探索
2020-08-20 21:02:51
比如搜集個(gè)幾百萬聊天記錄,從而統(tǒng)計(jì)分析出網(wǎng)絡(luò)聊天中人們最常用的詞匯,表達(dá)方式書寫習(xí)慣什么的?
前沿探索
2020-08-20 21:02:39
使用 VR  錄制的技術(shù)方案,將即將拆遷的房子、小區(qū)、村莊等錄制下來,可自行存儲(chǔ)或者發(fā)到互聯(lián)網(wǎng)上分享,給人留下回憶,記錄中國(guó)城鎮(zhèn)變遷。
前沿探索
2020-08-20 21:02:25
現(xiàn)在大部分輕薄本的進(jìn)風(fēng)口都在 D 面,這就導(dǎo)致如果放在床或者沙發(fā)這類柔軟表面,就會(huì)堵死進(jìn)風(fēng)口,導(dǎo)致溫度上升。傳統(tǒng)的各種筆記本支架又太復(fù)雜太重,直到我突發(fā)奇想買了一張大尺寸的不銹鋼鼠標(biāo)墊。
把筆記本放在鼠標(biāo)墊上,這樣放在任何地方都不會(huì)堵死進(jìn)風(fēng)口了,放在大腿上還能起到一定的隔熱作用。
大家可以試試
前沿探索
2020-08-20 21:02:03
###逃離大眼怪
本項(xiàng)目旨讓大家知道如何逃離大眼怪。
如果你喜歡可以點(diǎn)擊 github 右上角的☆Star 以示喜歡和支持
https://github.com/Emergency-Buoy/Escape-From-EvilEye
前沿探索
2020-08-20 21:01:46
最近想買某三線小城市的房子,需要繳公積金發(fā)現(xiàn)問題還挺多,主要的 3 個(gè): 1 、手續(xù)費(fèi)死貴,有 89 一個(gè)月,有上來要先手續(xù) 300 會(huì)員費(fèi)的 2 、只有部分城市有,甚至繳納之后電話告知不行的 3 、交公積金的話,是為了買房貸款,app 上無法了解公積金貸款政策 所以想自己搞一個(gè)這種服務(wù)。 不知大家有沒有需求,啥想法?
前沿探索
2020-08-20 21:01:36
之前玩過 《 Shadows Remain 》 這款 AR 懸疑游戲,找一個(gè)桌子或者平臺(tái),用 iPhone 玩的很開心。AR 的交互和這個(gè)游戲創(chuàng)意結(jié)合的很精妙,你可以變換手機(jī)角度觀察游戲中的道具和場(chǎng)景來破解游戲中的謎題,游戲總體沉浸感和真實(shí)感比 VR 的體驗(yàn)好的太多了。
今晚去散步想起可不可以基于這款 AR 懸疑游戲手機(jī)的玩法,來創(chuàng)建一個(gè) AR 的托管平臺(tái),用戶可以上傳和下載幾種通用的 AR 格式的文件來體驗(yàn)各種 AR 的 3D 視頻和可交互的場(chǎng)景。
實(shí)現(xiàn)難度上:手機(jī)算力,《 Shadows Remain 》在 iPhone XR 上已經(jīng)表現(xiàn)的足夠真實(shí)了,四五個(gè)場(chǎng)景才需要 300M 空間
通用性來說:現(xiàn)在有通用的 AR 格式的文件嗎?
前沿探索
2020-08-20 21:01:16
目前想到的寵物創(chuàng)業(yè)方向有: 寵物社交平臺(tái) 寵物領(lǐng)養(yǎng)中介 寵物美容 /醫(yī)療 /攝影平臺(tái) 寵物健康管理平臺(tái)
大家覺得如何?
前沿探索
2020-08-20 21:01:12
先在嗶哩上看了幾節(jié)課,然后進(jìn)行實(shí)際操練與電腦下棋,還是挺好玩的。王車移位,小卒子到底線就能升級(jí),感覺很魔幻。 Chess LV.100 很棒的國(guó)際象棋游戲軟件。
前沿探索
2020-08-20 20:58:39
印象中去年以及更早前,V2 的廣告欄可不老少(不影響瀏覽體驗(yàn),沒有抱怨之意),今年疫情這波弄得,看不到廣告,還莫名覺得少了點(diǎn)啥??
前沿探索
2020-08-20 20:58:01
軍工跌了 3 天了,還想再跌一天加倉(cāng),這忽然就漲了
沒做好準(zhǔn)備啊,這一漲加倉(cāng)擺明當(dāng)韭菜
前沿探索
2020-08-20 20:57:55
我用百度搜索“周杰倫評(píng)價(jià)自己的告白氣球”,我覺得周杰倫應(yīng)該不會(huì)說出以下新聞里的話來:
“而周杰倫還說出了關(guān)于《告白氣球》疑惑吧,他表示自己也不明白為什么告白氣球會(huì)這么紅,紅的莫名其妙。而這兩首歌基本都是屬于旋律朗朗上口的口水歌,待遇卻天差地別。不少網(wǎng)友表示《告白氣球》為什么紅,都是靠這直播和網(wǎng)紅帶起來的,如果沒有網(wǎng)紅,它火不了!”
“周杰倫稱會(huì)繼續(xù)保持,希望可以超越《告白氣球》。最后還順便吐槽了一下,覺得《告白氣球》真的是紅得莫名其妙,他自己都不知道怎么紅起來的?!?
第三頁和第四頁是災(zāi)難現(xiàn)場(chǎng),只有兩個(gè)不是,其他都是“如何評(píng)價(jià)周杰倫的《告白氣球》? - 知乎”的子回答,但是這跟周杰倫自己的評(píng)價(jià)毫無關(guān)系啊。
第四頁終于在某視頻中找到周杰倫接受采訪時(shí)對(duì)告白氣球的評(píng)價(jià):(評(píng)論不愛我就拉倒這首新歌)我覺得繼續(xù)保持下去,希望可以超越告白氣球。告白氣球真的是,我覺得,莫名其妙紅的一首,(記者問:自己也覺得莫名嗎),自己也覺得莫名,但是我覺得這就是朗朗上口,很簡(jiǎn)單的旋律,所以其實(shí)有時(shí)候歌曲沒有分好與不好,就只有在看什么時(shí)間唱什么歌曲。
這才是一個(gè) 20 年出道的音樂人應(yīng)該說出的話啊,不會(huì)唱歌還不會(huì)接受采訪嗎???上面那些新聞稿都只是想搞個(gè)大新聞,加些有的沒有的上去。我就是堅(jiān)信周杰倫接受采訪不會(huì)說出這么“小學(xué)生”的話來,才一直翻頁找結(jié)果。
然而搜索“告白氣球 紅的莫名其妙”,就能看到很多關(guān)于這個(gè)采訪的有字幕的視頻了。百度做的 AI 沒明白“周杰倫評(píng)價(jià)自己……”是什么意思嗎?不知道谷歌搜索的結(jié)果怎樣,必應(yīng)就更加躺平了。
總結(jié):在娛樂圈一堆洗稿文里搜索還是那么難
前沿探索
2020-08-20 20:57:36
在 Google 上偷窺了我大學(xué)時(shí)期兩位好友的過往;他們都已成為了博士,在各自的領(lǐng)域做著優(yōu)秀的工作?;叵肫鸫髮W(xué)時(shí)候,我們半夜里在熱烈地討論數(shù)學(xué)和物理問題的場(chǎng)景;那時(shí)的我所憧憬著的前途也許就是他們現(xiàn)在所走的路吧。我曾經(jīng)努力學(xué)業(yè),曾經(jīng)以為自己并不會(huì)虛度年華,可惜現(xiàn)在回過頭去看那段時(shí)光,終究是被蹉跎了。也許我努力的方向錯(cuò)了?也許我再堅(jiān)持一下就能度過曾經(jīng)的難關(guān)?
前沿探索
2020-08-20 20:57:23
比如網(wǎng)上看一些感人的電影,或者看到一些悲傷的文章小說啥的,看著看著就淚流滿面了,心里也會(huì)難受好久。有時(shí)跟朋友或者親戚同學(xué)一起看的時(shí)候,別人都沒事,就我眼淚汪汪的。 昨晚沒事在 b 站看看 譚談交通,一開始還挺歡樂的,后來刷到一位拉車大爺?shù)?又給我看哭了。。。
前沿探索
2020-08-20 20:57:13
入睡前的時(shí)間,是最難熬的時(shí)間。思緒像無限次回放,重播。 如我每次回家,爸爸早早躺在沙發(fā)上等我等睡著,我進(jìn)門坐他身旁,他一下子醒過來,說,幾點(diǎn)鐘到的? 這個(gè)畫面我?guī)缀趺髅刻於紩?huì)在我腦海里出現(xiàn)。 爸爸走了 76 天了,我時(shí)常在睡夢(mèng)中,一個(gè)翻身就想起他,然后就睡不著。
前沿探索
2020-08-20 20:57:04
當(dāng)年高考好歹也是 985,就是目光短淺學(xué)了計(jì)算機(jī),現(xiàn)在眼看 30 歲了,估計(jì)沒幾年工作好干了,即使有工作也是無休止的 996,然后還要 251.當(dāng)初選專業(yè)的時(shí)候,如果選擇了醫(yī)學(xué)或者法律,現(xiàn)在怕是會(huì)好很多吧,身邊的醫(yī)生律師會(huì)計(jì)師們生活都是歲月靜好,哪像我們碼畜水深火熱生不如死。誒,真是選擇大于努力
前沿探索
2020-08-20 20:56:56
當(dāng)自動(dòng)化 /AI 發(fā)展到能夠替代大部分人的工作的時(shí)候,資本家可能就沒有進(jìn)一步投資的動(dòng)力了,因?yàn)榇蟛糠秩耸I(yè)了,消費(fèi)就不足了,那時(shí)的消費(fèi)主體可能主要依賴少數(shù)資本家和研發(fā)人員,可能會(huì)導(dǎo)致進(jìn)一步的投資無法收回成本。
前沿探索
2020-08-20 20:56:41
我感受到了他們的開心,畢竟大學(xué) 4 年我們一直很恩愛。畢業(yè)后雖然異國(guó)還堅(jiān)持了 1 年呢。去年兩人還互相抱怨了次,今年突然就結(jié)婚了。 可能這就是人生吧。
前沿探索
2020-08-20 20:56:13
你所使用的編程語言會(huì)將你的思維模式固化并逐漸遠(yuǎn)離其他語言,而且往往發(fā)生在潛移默化中。
前沿探索
2020-08-20 20:55:59
115116117118119120121122123124125