Re: [討論] 請大家聊聊 JavaScript的缺陷
在開始之前,先說個笑話
※ 引述《keev (a)》之銘言:
: 我會試著反駁 互相交流
然而下面這串推文直接被無視
: 推 vi000246: 還要學打包工具 好麻煩 11/03 00:22
: 推 s06yji3: 要打包真的好麻煩,參數也太多太細。 11/03 00:31
: 推 fiiox3: 打包真的.....從來不覺得自己懂過XD 11/03 00:34
好的,沒事幹新年開始就考古,我就廢.jpg
先來看個實際存在的專案結構在 npm install 後
zettlr/node_modules/archiver-utils/node_modules/readable-stream/node_modules/
inherits/LICENSE
三層啊!大大們!光是一個 lib 就埋了三層啊!
有哪個 C/C++/Java/python 編譯完的專案 lib 埋這麼多層的?
我認識的頂多就 /usr/lib/project_name/something.so
或 /usr/lib/python3.??/site_packages/project_name/something.pyc
先不說在 Windows 那種幾乎所有軟體都吃自己不分享的系統
OSX 跟 Linux/BSD 上面大多都是 shared lib 的情境下,這樣搞是要?
喔對了,獨眼龍都知道有個 yarn --flat 可以用,但是,在座有成功用這個參數安裝後
專案動得起來的嗎?
然後,或許有人還記得,早期的 npm 甚至會因為使用者下載源碼的時間落差
導致取用的函式庫版本更迭,導致明明 package.json 沒問題,專案卻無法編譯的慘況
所以才又出了個 .lock 規格,然後官方還建議這個一定要放進去版控
恩恩,然後就 https://i.imgur.com/jQaZa1A.png
想當然爾,菜雞小弟就丟去論壇發問,結果回應居然是:
: 請 npx install 某包 -g
: (隨回應附上 npm 官方文件來源)
大大!是 -g 啊!在系統固有的套件管理員之外用 global 啊!
是不是沒在 package.json 裡看過
scripts: {
"postinstall": "",
}
啊?
這隨便寫加上無腦建議人家 sudo npm -g
有沒有突然覺得公司裡 IT 呼吸的空氣真甜美?
我橫豎睡不著,仔細看了半夜的 npm 官方文件,才從字縫裡看出字來 NPM_CONFIG_PREFIX
聖光啊!!!
都已經 2020 了,相依管理這種千禧年初就早在業界已經談到爛、解法多到爛的情況下
js 生態系居然還端出這種垃圾專案管理程式,然後所有人都撇過頭去,只敢討論 NaN 到
底在做什麼、到底有沒有符合標準這種技術細節
喔對了,說到直接建議使用者安裝新軟體
https://github.com/ganeshrvel/npm-electron-root-path/blob/master/lib/index.js
https://github.com/domenic/sorted-object/blob/master/lib/sorted-object.js
從沒看過這麼頹廢、衰敗、小學生等級的套件
後者還天殺的有 382,233 Weekly Downloads!!!
https://www.npmjs.com/package/sorted-object
這種資料結構 101 型還可以寫成套件,還可以拿來引用?
業界是多少人懶得寫 function 還是不會寫而只會 call function? 太瘋狂了!!
這還不包括整個社群瘋狂重造車輪,接著寫完就拋棄!!!
請問現在要寫個 electron app,我該用 electron-builder、electron-forge、還是
electron-packager?
一個寫完,然後發現太大太雜不好維護,就他X的另起爐灶,然後整個社群就hype惹
我以為我在觀察國高中的童軍康輔社團而不是專業人士社群呢顆顆
npmjs.com 上面多少最後更新在兩年以上,但是每週下載數依舊很高的套件
喔還有很天才的,按照官方文件寫 package.json
結果 npm install 拚命跳出某lib在某版本前有問題,建議更新到某版以上的warning
還有永遠會跳出來的fsevent warning,就說我不是Mac了!!!(怒
還沒開始寫程式,光是搞定框架就挫折連連,是要怎麼舉出 JavaScript 的缺陷呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.76.65 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1609942455.A.51A.html
推
01/06 22:26,
3年前
, 1F
01/06 22:26, 1F
推
01/06 22:30,
3年前
, 2F
01/06 22:30, 2F
→
01/06 22:31,
3年前
, 3F
01/06 22:31, 3F
推
01/06 22:34,
3年前
, 4F
01/06 22:34, 4F
→
01/06 22:39,
3年前
, 5F
01/06 22:39, 5F
推
01/06 22:45,
3年前
, 6F
01/06 22:45, 6F
推
01/06 22:46,
3年前
, 7F
01/06 22:46, 7F
→
01/06 22:47,
3年前
, 8F
01/06 22:47, 8F
推
01/06 22:48,
3年前
, 9F
01/06 22:48, 9F
→
01/06 22:48,
3年前
, 10F
01/06 22:48, 10F
→
01/06 22:49,
3年前
, 11F
01/06 22:49, 11F
→
01/06 22:49,
3年前
, 12F
01/06 22:49, 12F
重構比維護更有效益?
小工程師敢跟 lead 說老子覺得重構比繼續每天攪義大利麵還有效益?
lead 敢去跟主管說我覺得敝 team 繼續每天攪義大利麵很無意義,建議重構?
技術主管敢去跟其他部門開會說我覺得公司的軟體重構比維護更有效益?
看誰先被釘牆上然後卷舖蓋QQ
阿這時候就別羨慕人家其他師字輩可以學一套混30年
是你各位自己說出重構比維護更有效益的呀 大大每隔一下就重構 底下就吃屎重學新東西
幫QQ
推
01/06 23:10,
3年前
, 13F
01/06 23:10, 13F
推
01/06 23:12,
3年前
, 14F
01/06 23:12, 14F
推
01/06 23:15,
3年前
, 15F
01/06 23:15, 15F
→
01/06 23:15,
3年前
, 16F
01/06 23:15, 16F
→
01/06 23:16,
3年前
, 17F
01/06 23:16, 17F
→
01/06 23:16,
3年前
, 18F
01/06 23:16, 18F
pip 下去,他就是平鋪一層 lib/
要找哪個環節的哪個函式庫在雷很方便
java 看是哪個框架,至少 gradle 下去也是所有的東西在一個地方排排站
沒看過埋了一層又一層嫌人家找的不夠開心的
→
01/06 23:18,
3年前
, 19F
01/06 23:18, 19F
推
01/06 23:33,
3年前
, 20F
01/06 23:33, 20F
→
01/06 23:33,
3年前
, 21F
01/06 23:33, 21F
就是古早時代,同兩個被依賴的函式庫,只因為安裝順序不同
就沒事幹產生新lock檔搞人
阿然後社群解法是
$ npx npm-merge-driver install -g
→
01/06 23:35,
3年前
, 22F
01/06 23:35, 22F
cd ../../../ 這種一行文,寫成套件被笑剛好而已
資料結構你說爬樹還搜尋甚至動到演算法的,寫成套件嘉惠後人就算了
swap A B?!
→
01/06 23:35,
3年前
, 23F
01/06 23:35, 23F
這是我的錯,沒講清楚
我是指說 package.json 裡我已經努力使用最新版了
結果某個函式庫它的 N層後 的相依有 CVE,然後我要負責?
→
01/06 23:38,
3年前
, 24F
01/06 23:38, 24F
→
01/06 23:38,
3年前
, 25F
01/06 23:38, 25F
推
01/07 00:03,
3年前
, 26F
01/07 00:03, 26F
→
01/07 00:03,
3年前
, 27F
01/07 00:03, 27F
你各位寫 JS 到現在都不用 nodejs / npm / npm 衍生物來安裝東西?
還是說覺得語言的 flaw 跟它本身奠基在哪個 framework 沒有關係?
推
01/07 00:08,
3年前
, 28F
01/07 00:08, 28F
→
01/07 00:08,
3年前
, 29F
01/07 00:08, 29F
推
01/07 00:29,
3年前
, 30F
01/07 00:29, 30F
→
01/07 00:40,
3年前
, 31F
01/07 00:40, 31F
問題是,就像上面的資料結構
人家 PEP, C conf, C++ std 每年都在努力讓語言更好上手,加進一堆常備函式
結果大 JS 生態圈的回應是:「反正社群有」,「不會npm i嗎?」,「我就彈性大啊」
燈愣!?是當作所有開發者的網路流量都不用錢?還是覺得討論 spec 不酷,太古板?
推
01/07 00:50,
3年前
, 32F
01/07 00:50, 32F
還有 36 則推文
還有 12 段內文
→
01/07 11:32,
3年前
, 69F
01/07 11:32, 69F
→
01/07 11:34,
3年前
, 70F
01/07 11:34, 70F
→
01/07 11:45,
3年前
, 71F
01/07 11:45, 71F
那個三層結構是去年7月間去戳程式時的實際情況
以你的例子不就是因為依賴的上游有人偷懶只用舊版
導致依賴性一直往下長嗎?
阿這個舊版剛好依賴一個舊版的上游...,boom! cve warning!!
推
01/07 15:12,
3年前
, 72F
01/07 15:12, 72F
→
01/07 15:12,
3年前
, 73F
01/07 15:12, 73F
看來只能用妖術了呢…拍拍
已經compiled出來還不能改原碼重編的函式庫,有時候就…很難搞呀
推
01/07 15:25,
3年前
, 74F
01/07 15:25, 74F
※ 編輯: brli7848 (42.77.106.21 臺灣), 01/07/2021 17:02:51
→
01/07 18:14,
3年前
, 75F
01/07 18:14, 75F
→
01/07 19:56,
3年前
, 76F
01/07 19:56, 76F
→
01/07 19:57,
3年前
, 77F
01/07 19:57, 77F
→
01/07 19:58,
3年前
, 78F
01/07 19:58, 78F
→
01/07 19:58,
3年前
, 79F
01/07 19:58, 79F
→
01/07 19:58,
3年前
, 80F
01/07 19:58, 80F
→
01/07 20:02,
3年前
, 81F
01/07 20:02, 81F
推
01/07 22:36,
3年前
, 82F
01/07 22:36, 82F
→
01/08 10:13,
3年前
, 83F
01/08 10:13, 83F
→
01/08 10:13,
3年前
, 84F
01/08 10:13, 84F
推
01/08 11:55,
3年前
, 85F
01/08 11:55, 85F
推
01/08 13:36,
3年前
, 86F
01/08 13:36, 86F
推
01/08 13:54,
3年前
, 87F
01/08 13:54, 87F
→
01/08 13:54,
3年前
, 88F
01/08 13:54, 88F
是不知道你是用了什麼軟體,版本會在 apt 找不到啦…
通常 Ubuntu 會提供至少同一套 lib 的兩個版本,像是 openssl2/1.1
你要的上面找不到,有兩個可能
1. 你要的太新,選的發行版太舊:要麼就自己用系統 toolchain 編新版甚至架 repo
要麼更新系統的版號←可能會被炸(無論是公司或是系統)就是惹
2. 你要的太舊,選的發行版沒收:那就乖乖重寫阿…連 py2轉3都要考慮半天的 u 家都
不收的東西,可能連上游都不想理了,遇到bug/安全漏洞向誰哭?
喔,另外一種情況,你的 apt 是指 Debian,那就…docker 囉
推
01/08 14:03,
3年前
, 89F
01/08 14:03, 89F
→
01/08 14:03,
3年前
, 90F
01/08 14:03, 90F
好問題,那要怎麼更新 lock,然後避免在協作下更新 lock 導致 git 大塞車大抱怨?
或許現在近期好很多了啦,但是如我上面截圖,這種自己換位子的
要怎麼讓同組其他同事不炸conflict?
推
01/08 23:17,
3年前
, 91F
01/08 23:17, 91F
※ 編輯: brli7848 (42.77.23.173 臺灣), 01/09/2021 13:17:02
→
01/09 18:30,
3年前
, 92F
01/09 18:30, 92F
→
01/09 18:30,
3年前
, 93F
01/09 18:30, 93F
→
01/09 19:54,
3年前
, 94F
01/09 19:54, 94F
→
01/09 19:56,
3年前
, 95F
01/09 19:56, 95F
→
01/09 19:57,
3年前
, 96F
01/09 19:57, 96F
→
01/09 21:29,
3年前
, 97F
01/09 21:29, 97F
→
01/09 21:29,
3年前
, 98F
01/09 21:29, 98F
恩,剛好驗證我上面回的
上面一腦衝重構,底下就得吃屎學新東西
好好的 npm i 不維護,結果只能跑去生一個新的 ci 指令
然後社群裡就充斥著樓上的解法「阿你可以這樣繞一圈就過啦」
問題是…整個網路上累積幾年的 npm i 教學,然後…現在是每個新人都要踩一遍雷?QQ
推
01/09 22:28,
3年前
, 99F
01/09 22:28, 99F
推
01/10 11:58,
3年前
, 100F
01/10 11:58, 100F
※ 編輯: brli7848 (42.77.23.173 臺灣), 01/10/2021 15:03:32
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 18 之 19 篇):