<dfn id="hx5t3"><strike id="hx5t3"><em id="hx5t3"></em></strike></dfn>

    <thead id="hx5t3"></thead><nobr id="hx5t3"><font id="hx5t3"><rp id="hx5t3"></rp></font></nobr>

    <listing id="hx5t3"></listing>

    <var id="hx5t3"></var>
    <big id="hx5t3"></big>

      
      

      <output id="hx5t3"><ruby id="hx5t3"></ruby></output>
      <menuitem id="hx5t3"><dfn id="hx5t3"></dfn></menuitem>

      <big id="hx5t3"></big>

        蘇生不惑

        蘇生不惑 查看完整檔案

        北京編輯  |  填寫畢業院校新浪  |  PHP工程師 編輯 github.com/sushengbuhuo 編輯
        編輯

        同名公眾號:蘇生不惑

        個人動態

        蘇生不惑 發布了文章 · 2020-10-01

        如何讓你的搜索更高效

        蘇生不惑第178 篇原創文章,將本公眾號設為星標,第一時間看最新文章。

        這周四就是國慶節長假了,大家的心情可能都是這樣的。
        image.png

        關于搜索之前分享過 那些你可能不知道的搜索奇技淫巧 ,2020 最全百度網盤搜索,找電影資源不再愁 ,2020 最全電子書搜索網站,找電子書不再愁 ,今天分享的是如何讓你的搜索更高效。

        先吐槽下,國內的互聯網越來越不互聯了,比如手機端看全文必須下載APP,有些產品(比如閑魚)甚至沒有網頁端,robot.txt禁止搜索引擎抓取,把一個個APP的內容封閉起來,于是我們手機上安裝的APP越來越多。
        image.png
        image.png

        能用網頁版我是不會安裝APP的,電腦鍵盤打字多爽,大屏幕多爽,這里還是要點贊下b站和知乎,搜索引擎可以很方便的找到內容,不下載APP也完全可以使用他們的產品。

        去廣告

        在百度搜索拼多多,第一個結果是個廣告,居然不是拼多多官網,畢竟人家是給了錢的。
        image.png

        相比之下谷歌搜索就好多了,第一個就是官網,所以我一直推薦大家使用谷歌搜索和谷歌瀏覽器 ,谷歌還有很多產品 那些在國內還能使用的谷歌產品
        image.png

        不過大多數人還是用百度居多,這里推薦一個 Chrome 擴展 廣告終結者 ,它可以清除網頁上的浮動廣告,購物廣告,惡意彈窗,跟蹤代碼,讓你瀏覽網頁更快更清爽, 而且支持絕大多數瀏覽器。
        image.png
        Chrome擴展地址https://chrome.google.com/web... ,安裝Chrome擴展方法見之前文章上不了谷歌如何安裝 Chrome 擴展?

        安裝擴展后再次百度搜索沒有垃圾廣告了,第一個就是官網,搜索效率明顯提高了。
        image.png

        除了去除網頁廣告,它還有個實用功能就是去除視頻廣告,比如騰訊,優酷,愛奇藝這樣的影視網站, 45秒的開頭廣告 。
        image.png

        安裝好這個擴展后再次打開愛奇藝可以看到廣告一晃而過就開始播放視頻,看我錄制了的GIF。
        iqiyi_ad.gif

        搜索引擎快捷跳轉

        這是個油猴腳本https://greasyfork.org/zh-CN/... ,可以
        方便的在各個搜索引擎之間跳轉,增加可視化設置菜單,能更友好的自定義設置,修復百度搜索樣式丟失的問題。

        關于油猴腳本之前介紹過很多次了,公眾號后臺回復 油猴 獲取,安裝詳情見文章實用油猴腳本推薦,讓你的谷歌瀏覽器更強大

        搜索框下方列出了網頁,翻譯,知識,圖片,視頻,音樂,社交,購物等搜索網站快捷方式,可以直接進入這些網站搜索對應關鍵詞。
        image.png
        對百度搜索同樣有效。
        image.png

        網址還可以自定義。
        image.png

        搜索黑名單

        有時候不想在搜索結果看到某些網站,可以安裝搜索過濾擴展 uBlacklist https://chrome.google.com/web... ,方便你搜索的時候不看某些垃圾網站的搜索結果。

        image.png
        對于某些專門采集數據的垃圾網站,推薦安裝擴展終結內容農場 https://chrome.google.com/web... ,在搜索結果會有標識
        image.png
        打開后會有提示。
        image.png

        右鍵搜

        一個優秀的右鍵菜單 Chrome 擴展程序(公眾號后臺回復 谷歌 獲?。?https://github.com/xuender/cm... ,右鍵菜單增加了跳轉擴展程序,書簽管理,插件,創建短網址,生成二維碼等功能。
        image.png
        菜單可以自定義。
        image.png

        搜索技巧

        《》來搜索書籍或者電影,比如 《明朝那些事兒》,如果搜電子書在書名關鍵詞后加上文件格式,如 pdf/epub/mobi/azw3/txt等 比如 明朝那些事兒 filetype:pdf 或者 明朝那些事兒 inurl:pdf,搜出的結果都是PDF文件。
        image.png

        site 站點搜索,比如在b站搜索 周杰倫 site:bilibili.com 周杰倫,百度搜索工具里可以直接輸入站點搜索,類似的語法還有查詢天氣 weather: 北京,查詢股票stocks: 微博,查詢地圖map: 北京,查詢電影movie: 奪冠,查詢新聞源source: 國慶放假安排 。
        image.png

        數字間隔搜索,比如2000年到2010年的奧斯卡 奧斯卡 2000...2010
        image.png
        模糊搜索,比如想找一首歌,只記得歌詞里的幾個字,搜索 *愛你很久很輕易的找到周杰倫的《晴天》。
        image.png

        搜索允許目錄瀏覽的網站,比如 index of 電影可以搜到很多人的私人網盤。
        image.png
        這個告誡我們千萬別把自己的私人網盤放公網,萬一放了某些不可描述的東西。
        image.png

        更多谷歌瀏覽器的實用技巧見之前文章 那些你可能不知道的谷歌瀏覽器實用技巧

        免費知識星球,每天更新

        公眾號 蘇生不惑

        掃描二維碼關注或搜索微信susheng_buhuo

        查看原文

        贊 1 收藏 0 評論 0

        蘇生不惑 發布了文章 · 2020-09-25

        Python 生成你的朋友圈九宮格圖片

        關于微信之前寫過以下文章,有興趣可以點擊查看:

        如何導出你的微信語音

        c 盤空間又滿了?微信清理神器幫你釋放空間

        微信撤回的消息也能看到!

        如何備份可能被刪的公眾號文章和網頁

        如何在電腦上登陸多個微信

        如何發一條空白的朋友圈

        那些你可能不知道的微信奇技淫巧

        一鍵生成你的微信社交數據報告

        你可能在朋友圈看過九宮格圖片(把一張圖片按照比例分成九份),就像這樣的:
        image.png
        還有微博九宮格圖 https://weibo.com/2717930601/...
        image.png

        這種九宮格圖片怎么發的呢?下面用Python搞定它,Python是門很簡單實用的語言,即使不做開發工作也可以學習下,比如之前的下載抖音 一鍵批量下載抖音無水印視頻 ,下載公眾號文章一鍵下載公眾號所有文章,導出文件支持PDF,HTML,Markdown,Excel,chm等格式 都是用的Python,之后我會寫一篇如何使用Python來抓取數據,代碼非常簡單,只要你認識英文字母就會用。

        PIL處理圖片

        先用pip安裝切割圖片的庫 PIL pip install Pillow , 然后編輯代碼:

        from PIL import Image,ImageSequence,ImageFilter
        pic = input("請輸入圖片文件名:")
        im = Image.open(pic)
        width = im.size[0]//3
        height = im.size[1]//3
        x = 0
        y = 0
        filename = 1#保存的文件名
        for i in range(3):
            for j in range(3):
                crop = im.crop((x, y, x+width, y+height))
                crop.save(str(filename) + '.jpg')
                x += width
                filename += 1
            x = 0
            y += height

        直接命令行執行 python pic.py ,輸入圖片文件名即可在本地生成9張小圖。
        image.png

        還可以將代碼打包為exe可執行文件,這樣不用安裝Python就可以運行了。

        pyinstaller 打包exe

        打包用的工具是pyinstaller,先pip install pyinstaller安裝它,然后pyinstaller -F pic.py ,不過我運行的時候出錯了。
        image.png

        
            for real_module_name, six_module_name in real_to_six_module_name.items():
        AttributeError: 'str' object has no attribute 'items'

        谷歌了下需要升級庫。

        λ pip install -U setuptools
        Collecting setuptools
          Downloading https://files.pythonhosted.org/packages/6d/ed/52e05469314a266f68d9f251a8c1ab7a21a03327b1724056e3eea654bfd1/setuptools-50.0.3-py3-none-any.whl (784kB)
        Installing collected packages: setuptools
          Found existing installation: setuptools 41.2.0
            Uninstalling setuptools-41.2.0:
              Successfully uninstalled setuptools-41.2.0
        Successfully installed setuptools-50.0.3
        
        pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
        # 更新pip版本
        python -m pip install -U pip
        λ pip uninstall enum34
        Uninstalling enum34-1.1.6:
          Would remove:
            d:\python\lib\site-packages\enum34-1.1.6.dist-info\*
            d:\python\lib\site-packages\enum\*
        Proceed (y/n)? y
          Successfully uninstalled enum34-1.1.6
        """    
        
        

        再次執行pyinstaller -F pic.py 終于成功了,不過生成的exe文件有點大(20多MB,公眾號后臺回復 朋友圈 獲取exe文件),雙擊exe文件輸入文件名就可以運行了。 https://www.lanzoux.com/iWtJN...

        60106 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
        60112 INFO: Bootloader d:\python\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run.exe
        60114 INFO: checking EXE
        60115 INFO: Building EXE because EXE-00.toc is non existent
        60115 INFO: Building EXE from EXE-00.toc
        60115 INFO: Appending archive to EXE d:\download\dist\pic.exe
        60279 INFO: Building EXE from EXE-00.toc completed successfully.

        image.png

        PIL除了切割圖片還可以對照片去色。

        img = Image.open("jay.jpg")
        img2 = img.convert("L")
        img2.save("jay2.jpg")

        去色效果圖:
        mm2.jpg

        對照片旋轉90度。

        img3 = img.rotate(90)
        img3.save("jay_rotate.jpg")

        旋轉效果圖:
        img_rotate.jpg

        對照片翻轉。

        img4 = img.transpose(Image.FLIP_LEFT_RIGHT)
        img4.save("jay_transpose.jpg")

        翻轉效果圖,周杰倫七里香幾個字翻過來了:
        img_transpose.jpg

        除了使用Python 也有在線工具和微信小程序可以生成九宮格圖片 https://www.dute.org/image-clip ,上傳圖片下載即可。
        image.png

        免費知識星球,每天更新

        公眾號 蘇生不惑

        掃描二維碼關注或搜索微信susheng_buhuo

        查看原文

        贊 3 收藏 2 評論 1

        蘇生不惑 發布了文章 · 2020-09-25

        Python 一鍵批量下載抖音無水印視頻

        關于下載視頻之前寫過 如何輕松下載騰訊/微博/優酷/愛奇藝/b站等全網視頻? , 那些你可能不知道的視頻下載奇技淫巧

        抖音視頻也可以直接通過idm來下載,先在抖音復制視頻鏈接。

        image.png
        用谷歌瀏覽器打開視頻鏈接后點擊視頻右上角的idm(公眾號后臺回復 idm獲取軟件 )就能下載了 。
        image.png

        不過這樣下載的視頻帶有抖音的標志,如果想去除這個水印,下面分享個簡單的方法。
        image.png

        打開瀏覽器控制臺使用手機模式訪問會跳轉到 https://www.iesdouyin.com/sha...
        image.png

        可以看到請求接口 https://www.iesdouyin.com/web... ,返回值play_addr里就有播放地址url_list https://aweme.snssdk.com/awem...
        這個地址是有水印的,將地址里的playwm改為play就是無水印播放地址了。

        下載后播放對比下,左側的抖音水印沒了。
        image.png
        無水印視頻還少了3秒 ,因為視頻結尾的一小段 來抖音,發現更多創作者 也沒了。
        image.png

        當然這樣下載無水印視頻有點麻煩,一般小白還不會,Python 可以幫你一鍵下載。

         
        
        url = input("請輸入你要去水印的抖音短視頻鏈接:")
         
        response = requests.get('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='+str(vid))
        result = response.json()
        #print(result)
        item = result.get("item_list")[0]
        author = item.get("author").get("nickname")
        mp4 = item.get("video").get("play_addr").get("url_list")[0]
        
        with open(desc+".mp4", 'wb') as f, open(desc+".mp3", 'wb') as f2:
            f.write(video.content)
            f.close()
            f2.write(audio.content)
            f2.close()
            print("===>音頻和視頻下載完成")
        

        直接執行腳本 python douyin.py ,很快下載好了。
        image.png

        視頻對應的mp3音頻也下載了。
        image.png

        除了Python已經有很多不錯的軟件可以很方便的下載無水印抖音視頻了,下面分享幾個好用的。

        這個軟件(公眾號后臺回復 抖音 獲取軟件) 支持抖音,皮皮蝦,快手,火山,微視等平臺視頻的批量下載,還支持采集視頻。
        image.png

        image.png
        輸入抖音視頻鏈接地址 https://v.douyin.com/JkaChFt/ ,點擊解析可以看到視頻標題和下載鏈接。
        image.png
        還可以輸入抖音作者主頁地址 https://v.douyin.com/JkaaoTH/ ,解析可以獲取作者視頻列表。
        image.png
        然后右鍵下載,很快下載完了。
        image.png
        播放看看,左上方的抖音水印沒了。
        image.png

        另外一個軟件 抖音信息解讀 ,可以搜索列出作者600多個視頻(包含作者頭像,視頻標題,視頻地址,點贊數,評論數,分享數,音樂地址,無水印鏈接等),在右側可以選擇視頻下載。
        image.png
        image.png

        免費知識星球,每天更新

        公眾號 蘇生不惑

        掃描二維碼關注或搜索微信susheng_buhuo

        查看原文

        贊 10 收藏 9 評論 2

        蘇生不惑 發布了文章 · 2020-09-25

        王菲k歌又上微博熱搜,Python分析下微博網友評論

        最近王菲狀態話題上了微博熱搜 https://weibo.com/1266269835/...https://weibo.com/6598655984/...
        image.png

        image.png
        還和馬云合唱了 如果云知道https://weibo.com/1956700750/...
        image.png

        5年不更新的微博下評論開始求開演唱會 https://weibo.com/1629810574/...

        image.png

        微博評論.png

        于是用Python抓取了下這條微博下的評論(前幾十頁評論),微博有4個域名: 網頁版weibo.com ,手機端 m.weibo.com,移動端weibo.cn ,h5端 m.weibo.cn ,這里用網頁版為例,打開控制臺可以抓取到評論接口
        https://weibo.com/aj/v6/comme...

        image.png

        同樣的移動端 https://weibo.cn/search/?tf=5... 搜王菲可以找到這條微博https://weibo.cn/comment/C8Fq... ,評論也在一塊。
        image.png

        還有h5端 https://m.weibo.cn/detail/382... 抓取到接口https://m.weibo.cn/comments/h...

        有了接口地址,數據就很好抓取了,這里寫入文件。

        image.png
        然后用wordcloud對微博評論生成詞云圖,主要關鍵詞是好聽,菲姐,演唱會,真的很期待王菲再開演唱會。
        image.png
        也可以通過網站 http://cloud.niucodata.com/ 生成,上傳文字即可。
        image.png

        另外我用Chrome擴展備份了王菲1500多條微博,詳情見之前文章用Chrome擴展一鍵備份微博
        image.png
        如果需要備份文件在公眾號后臺回復 微博 獲取
        image.png

        天后已經很久不出專輯了,自從去年發了一首單曲《我和我的祖國》快過去一年了,不過即使20年前的歌今天依然在傳唱 王菲51歲:愛她,不只是因為她的歌,比如《紅豆》
        https://music.163.com/#/song?...,可惜目前在網易云音樂需要VIP才能聽,如果不想花錢看看之前文章一鍵解鎖網易云音樂變灰歌曲
        image.png
        這里抓取前200頁的評論生成詞云圖,我也很喜歡這首歌。 評論接口地址http://music.163.com/api/v1/r...
        image.png

        公眾號 蘇生不惑

        掃描二維碼關注或搜索微信susheng_buhuo

        查看原文

        贊 2 收藏 2 評論 0

        蘇生不惑 發布了文章 · 2020-08-26

        2020七夕又來了,教你給女朋友做個動態二維碼

        蘇生不惑第166 篇原創文章,將本公眾號設為星標,第一時間看最新文章。

        又到了一年一度的七夕了,之前寫過聽說 520 你還沒對象,來這里看看 ,是不還在想送什么禮物,今天分享一個有意思的動態二維碼,可以用來哄女朋友開心。

        二維碼

        二維碼也稱為二維條碼,是指在一維條碼的基礎上擴展出另一維具有可讀性的條碼,使用黑白矩形圖案表示二進制數據,被設備掃描后可獲取其中所包含的信息。

        以上來自維基百科解釋 https://zh.wikipedia.org/zh-c... ,自從有了微信,二維碼已經隨處可見了。

        使用 Chrome 擴展可以輕易的生成二維碼 https://chrome.google.com/web...
        image.png

        今天介紹的是基于 Python 的二維碼工具 myqr 。

        myqr

        myqr 可生成普通二維碼、帶圖片的藝術二維碼(黑白與彩色)、動態二維碼(黑白與彩色) https://github.com/sylnsfar/q... ,直接使用 pip install myqr 安裝它。

        這里以一個表白網頁 myqr http://sushengbuhuo.gitee.io/... 生成二維碼。

         λ myqr http://sushengbuhuo.gitee.io/love/
        line 16: mode: byte
        Succeed!
        Check out your 5-H QR-code: d:\download\qrcode.png

        生成二維碼效果:
        qrcode.png

        接著用GIF生成一個動態二維碼。
        心.gif

        λ myqr http://sushengbuhuo.gitee.io/love/ -p lovelove.gif
        It may take a while, please wait for minutes...
        line 16: mode: byte
        Succeed!
        Check out your 5-H QR-code: d:\download\lovelove_qrcode.gif

        生成二維碼效果:
        lovelove_qrcode.gif
        myqr http://sushengbuhuo.gitee.io/love/ -p lovelove.gif -c 彩色效果
        lovelove_qrcode.gif
        再清晰點。
        lovelove_qrcode.gif
        用微信掃碼后顯示效果,可以自己長按識別二維碼:
        npy.gif
        可惜動圖在微信里沒法識別。
        image.png

        還有個模板 https://a.scene.ehqxiu.cn/s/X...
        xinxin.gif
        微信掃描后效果:
        image.png

        如果你沒有Python環境,這里提供了一個exe程序(公眾號內回復 女朋友 獲?。?,使用方法很簡單,在exe文件同級目錄創建一個文件info.txt ,在里面輸入對應的參數,之后雙擊myqr.exe運行即可。

        info.txt 文件格式如下:

        words=http://sushengbuhuo.gitee.io/love/
        v=11
        p=lovelove.gif
        l=Q
        c
        con=1.5
        bri=1.3

        你只需要改p后面參數 lovelove.gif(GIF文件名,就是上面那個給你小心心的GIF圖,你也可以自己找一個)。

        第一次使用會自動下載一些庫文件,因為程序依賴 imageio
        image.png
        如果下載很久不動,你可以從這里自己下載到本地
        https://github.com/imageio/im...,然后把這個文件放到 freeimage 目錄
        C:UsersxxxAppDataLocalimageiofreeimage (xxx為自己電腦用戶名), 如果沒有freeimage文件夾需要手動創建 。

        imageio 目錄還有ffmpeg目錄,里面有個文件 ffmpeg-win32-v3.2.4.exe ,也可以從這里下載 https://github.com/imageio/im... ,運行myqr.exe后在本地生成動態GIF圖 lovelove_qrcode.gif。
        image.png

        zhuyin_qrcode.gif

        這里給我的公眾號二維碼也生成個GIF圖,公眾號的二維碼可以通過微信號生成 https://open.weixin.qq.com/qr... ,解碼后的地址為 http://weixin.qq.com/r/WDvM1M... ,生成效果:

        lovelove_qrcode.gif

        下面分享段Python代碼,輸出?心形love

        代碼輸出愛

        命令行執行
        print('\n'.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(30, -30, -1)]))
        image.png

        
                        veLoveLov           veLoveLov
                    eLoveLoveLoveLove   eLoveLoveLoveLove
                  veLoveLoveLoveLoveLoveLoveLoveLoveLoveLov
                 veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL
                veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov
                eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove
                LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL
                oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLo
                veLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLov
                eLoveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove
                 oveLoveLoveLoveLoveLoveLoveLoveLoveLoveLove
                  eLoveLoveLoveLoveLoveLoveLoveLoveLoveLove
                  LoveLoveLoveLoveLoveLoveLoveLoveLoveLoveL
                    eLoveLoveLoveLoveLoveLoveLoveLoveLove
                     oveLoveLoveLoveLoveLoveLoveLoveLove
                      eLoveLoveLoveLoveLoveLoveLoveLove
                        veLoveLoveLoveLoveLoveLoveLov
                          oveLoveLoveLoveLoveLoveLo
                            LoveLoveLoveLoveLoveL
                               LoveLoveLoveLov
                                  LoveLoveL
                                     Lov
                                      v

        還可以自定義

        import time
        words = input('Please input the words you want to say!:')
        for item in words.split():
            print('\n'.join([''.join([(item[(x-y) % len(item)] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 <= 0 else ' ') for x in range(-30, 30)]) for y in range(12, -12, -1)]))
            time.sleep(1.5)

        [plt.show() for _, __, ___, plt in [(plt.plot(x, y1, color='r'), plt.plot(x, y2, color='r'), np, plt) for x, y1, y2, np, plt in [(x, 0.618*np.abs(x) - 0.8* np.sqrt(64-x**2), 0.618*np.abs(x) + 0.8* np.sqrt(64-x**2), np, plt) for x, np, plt in [(np.linspace(-8, 8, 1024), np, plt) for np, plt in [(__import__('numpy'), __import__('pylab'))]]]]]
        image.png

        沒有安裝Python,在瀏覽器控制臺也是可以的。

        console.log([...Array(30).keys()].map(u=>u-15).reverse().map(y=>[...Array(60).keys()].map(u=>u-30).map(x=>((x*0.04)**2+(y*0.1)**2-1)**3-(x*0.04)**2*(y*0.1)**3<=0?'babyiloveu'.split('').slice([(x-y)%10])[0]:' ').join('')).join('\n'))
        image.png

        公眾號 蘇生不惑

        掃描二維碼關注或搜索微信susheng_buhuo

        查看原文

        贊 2 收藏 2 評論 0

        蘇生不惑 發布了文章 · 2020-07-28

        那些有意思的谷歌/百度搜索彩蛋

        我平常使用最多的網站就是谷歌了,所謂萬事不決找谷歌,關于谷歌之前也寫過

        那些你可能不知道的搜索奇技淫巧

        那些在國內還能使用的谷歌產品

        除了常用的搜索,谷歌和百度其實還有很多關鍵詞彩蛋, 下面整理部分有意思的關鍵詞搜索彩蛋,摸魚的時候可以玩玩。

        維基百科上還整理了一份 Google玩笑和復活節彩蛋列表https://zh.wikipedia.org/wiki...
        image.png

        動畫效果

        搜索 z or r twice 頁面會360°旋轉搜索結果

        image.png

        對應百度搜索 翻轉效果
        image.png

        其他類似的詞還有 askew(傾斜效果)
        image.png

        百度也有很多這樣的關鍵詞,比如 搖一搖, 翻轉, 黑洞 ,表白,這個之前寫過聽說你想 520 表白

        image.png
        設置一個密碼(比如20196699),然后讓對方搜索 解蜜20196699
        image.png

        朗讀英文

        搜索pronounce love ,搜索結果提供美式和英式兩種發音,還可以調整語速。

        image.png

        宇宙的終極答案

        搜索 Answer to life, the universe and everything結果是42

        image.png
        為什么是42呢?有人說這幾個字符正好42個,不過這其實是英國作家道格拉斯·亞當斯所寫的系列科幻小說《銀河系漫游指南》里的一個數。https://zh.wikipedia.org/wiki...

        滅霸

        搜索 滅霸 頁面右側有一個嵌有寶石的手套
        image.png

        點擊這個手套,就會有一個打響指的小動畫 ,然后頁面會消失部分搜索結果。

        image.png

        計算器

        比如搜索 pi
        image.png
        image.png

        搜索 1.2+(sqrt(1-(sqrt(x^2+y^2))^2 + 1 – x^2-y^2) * (sin (10000 * (x*3+y/5+7 ))+1/4)會得到一個復活節蛋的圖案。
        image.png

        吃豆人涂鴉游戲

        搜索 pacman 玩吃豆人涂鴉游戲
        image.png
        當然你也可以直接進入 https://www.google.com/doodle...
        image.png

        紙牌接龍

        相信你肯定玩過Windows下的紙牌接龍游戲,現在你可以在谷歌搜索 solitaire直接在線玩。
        image.png
        image.png

        Google in 1998

        搜索 Google in 1998 進入1998年的谷歌頁面 https://elgoog.im/google1998/
        再在這里搜索谷歌,完成套娃操作。
        image.png

        超級馬里奧兄弟

        搜索 Super Mario Bros 右側會出現超級馬里奧游戲里的道具問號箱,點擊會有金幣掉下來的聲音。
        image.png

        貪吃蛇

        搜索 play snake 開始玩貪吃蛇吧。
        image.png
        image.png

        指尖陀螺

        搜索 spinner 會出現指尖陀螺游戲。
        image.png

        老友記

        搜索《老友記》的角色莫妮卡·蓋勒,右側會有個冒泡的小水桶。
        image.png

        Chrome 小恐龍游戲

        當 Chrome 瀏覽器沒有連上網絡,就會出現這個小恐龍,按空格就可以開始游戲了。

        image.png

        當然不用斷網輸入chrome://dino/也可以玩,有人還將它移植出來一個網站 https://ishare20.net/game/chr...
        如果想作弊玩讓它一直跑可以打開控制臺執行以下代碼

        var dino=Runner.prototype
        dino.gameOver=()=>{}
        Runner.instance_.setSpeed(233)

        image.png

        還有哪些你知道有意思的彩蛋,歡迎留言。

        查看原文

        贊 3 收藏 2 評論 0

        蘇生不惑 發布了文章 · 2020-07-28

        那些你用得上的鏡像網站

        國外的某些網站經常打不開或很慢,于是就有了做代理的鏡像網站,推薦幾個常用的鏡像網站,你可能用得上。

        谷歌

        Google鏡像就是一個代理訪問谷歌的網站,比如 http://ac.scmor.com/ http://scholar.hedasudi.com/ ,自從用谷歌以后搜索效率快多了,建議你看看我之前的總結那些你可能不知道的搜索奇技淫巧,不過鏡像只能使用不能登錄谷歌賬號。
        image.png
        image.png

        谷歌學術

        https://gfsoso.99lb.net/ https://cc.gufenxueshu.com/scholar/ https://www.gycc.com/?q=5g 搜索5g的結果
        image.png
        對比谷歌學術的結果https://scholar.google.com.hk...
        image.png

        維基百科

        維基百科的中文版萬維百科,不過數據沒有官方全 https://www.wanweibaike.com/https://zh.wikipedia-mirror.o...:%E9%A6%96%E9%A1%B5
        image.png
        維基百科還提供數據下載 https://dumps.wikimedia.org/z...
        image.png

        GitHub

        GitHub有時候clone很慢,如果你有代理ip可以 alias gg='http_proxy=127.0.0.1:1087 https_proxy=127.0.0.1:1087',然后 gg git clone xxx

        GitHub鏡像網站有 https://github.com.cnpmjs.org/https://git.azurewebsites.net/
        image.png

        谷歌商店

        https://pictureknow.com/#/ext...https://www.gugeapps.net/
        http://www.cnplugins.com/tophttps://www.crx4chrome.com/
        https://www.chromefor.com/ 關于Chrome擴展之前寫過那些實用的 Chrome 擴展神器,安裝Chrome擴展可以使用鏡像商店下載crx文件然后手動安裝,不過有些擴展可能沒有及時同步。
        image.png
        image.png

        油管

        最近李子柒很火,看看她在油管的視頻吧,不過這個網站不支持中文搜索。
        image.png
        image.png
        image.png

        SCI-Hub

        做科研的人用得著 http://tool.yovisun.com/scihub/
        image.png
        另外推薦一個Sci-Hub一鍵全文下載的Chrome擴展 ,地址 https://chrome.google.com/web...

        npm

        http://npm.taobao.org/ 這是一個完整 npmjs.org 鏡像,你可以用此代替官方版本(只讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務同步。
        npm config set registry "https://registry.npm.taobao.org"

        image.png

        golang

        golang.org 打不開,你可以用https://golang.google.cn/dl/...://gomirrors.org/ 。

        命令行代理有 https://goproxy.io/https://goproxy.cn/ 命令行執行export GOPROXY=https://goproxy.io
        image.png

        composer

        php.net 中文鏡像 http://php.p2hp.com/
        阿里云 Composer 全量鏡像 https://developer.aliyun.com/...
        image.png

        可以通過prestissimo composer global require hirak/prestissimo 來管理composer鏡像。

        pypi

        清華大學開源軟件鏡像站 https://mirror.tuna.tsinghua....
        使用 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package安裝Python包
        image.png

        查看原文

        贊 22 收藏 14 評論 4

        蘇生不惑 發布了文章 · 2020-07-28

        跟隨時光機回到過去看看 2005 年的百度/騰訊/淘寶/谷歌

        周杰倫有2首歌《時光機》和《回到過去》,人是不可能回到過去了,但人總愛懷舊,想看看過去的網站怎么辦呢?其實過去的網站在互聯網上都有記錄,今天就跟隨杰倫一起回到過去的互聯網。哦,不,是時光機,這個時光機就是網站 https://archive.org/web/,以下是維基百科https://zh.wikipedia.org/wiki... 上的介紹:

        網站時光機由互聯網檔案館的創始人Brewster Kahle和Bruce Gilliat于2001年推出,以解決網站在維護或關閉時無法查看內容的問題,此外還能查看網頁的歷史存檔版本,創始人Kahle和Gilliat希望以此能為整個互聯網提供“普遍獲取所有知識”的途徑。

        image.png
        還有另外一個時光機網站http://archive.md/ http://archive.is/ http://web.archive.bibalex.or...
        image.png

        時光機把這些互聯網網站的歷史快照通通都存下來了, 按照時間存檔.,許多年后回過來看, 就像在看老照片一樣, 很有意思,下面就來看看過去那些網站的模樣。

        騰訊

        輸入qq.com 可以看到從1998年到2019年的qq歷史首頁.
        image.png
        我們看下2005年的1月8號的騰訊首頁(可以自己選擇某個快照的時間),地址 https://web.archive.org/web/2...://www.qq.com/
        image.png
        2005年彩鈴還很流行,現在的00后應該都不知道彩鈴是個什么玩意吧。
        image.png

        谷歌

        2005年的谷歌,地址 https://web.archive.org/web/2...://www.google.com/
        image.png
        對比下2019年的谷歌
        image.png

        百度

        2005 年的百度,地址 https://web.archive.org/web/2...://www.baidu.com/
        image.png
        對比下2019年的百度,輸入框簡潔了。
        image.png

        淘寶

        2005年的淘寶,馬云在2004年就很牛了,地址 https://web.archive.org/web/2...://www.taobao.com/new.php
        image.png

        對比下2019年的淘寶,眼花繚亂的。
        image.png

        微博

        微博09年才出來,那會域名還是http://t.sina.com.cn/ ,這里看看2011年的微博,地址 https://web.archive.org/web/2...://t.sina.com.cn/

        image.png

        b站

        2011年的b站域名還是https://www.bilibili.tv/,地址https://web.archive.org/web/2...://www.bilibili.tv/
        image.png
        2019年的b站
        image.png

        優酷

        2008年的優酷,那年正好是北京奧運會,地址https://web.archive.org/web/2...://www.youku.com./
        image.png

        豆瓣

        2008年的豆瓣,可以看到星爺最后一部主演的電影《長江七號》 ,地址https://web.archive.org/web/2...://douban.com/
        image.png

        知乎

        2013年的知乎,地址https://web.archive.org/web/2...://www.zhihu.com/login?next=%2Fexplore
        image.png

        image.png

        2019年的知乎
        image.png

        搜索引擎快照

        除了上面的時光機,搜索引擎都有快照功能, 記錄了當時被收錄時的樣子,如果某個頁面打不開了,可以在搜索引擎里找找,有人還做了個快照集合網站 https://2tool.top/
        image.png

        備份

        上面這些是大網站,http://archive.org 會定期去收錄,如果是小站或者某個網頁可以自己收錄下,比如我的這篇文章如何發一條空白的朋友圈,
        https://web.archive.org/save 這里輸入你要備份的地址。

        image.png

        生成的鏈接 https://web.archive.org/web/2...://mp.weixin.qq.com/s/Xz1m-mqtCcBF_4hmGCpkUQ,可以永久保存我的文章了。
        image.png

        查看原文

        贊 0 收藏 0 評論 0

        蘇生不惑 贊了文章 · 2019-12-01

        SFKP ? 計算機百科丨IPv4 地址,到底沒沒沒?

        clipboard.png

        這兩天有一種穿越了的感覺。

        猶記得上大學的時候,教計算機原理的老師就告訴我們“IPv4 地址一共有 42.9 億個,隨著互聯網的發展現在已經耗盡了?!?/p>

        這兩天怎么又出現了「IPv4 正式用盡」的新聞?還是由負責英國、歐洲、中東和部分中亞地區互聯網資源分配的歐洲網絡協調中心(RIPE NCC)宣布的。

        圖片描述

        通知的意思是最后的 IPv4 地址空間儲備池在 11 月 25 日 UTC + 1 15:35 完全耗盡,所有 43 億個 IPv4 地址已分配完畢。這意味著沒有更多的 IPv4 地址可以分配給 ISP 和其他大型網絡基礎設施提供商。事實上,該過程自 80 年代以來就已預見到,頂級地址實際上已經在 2012 年耗盡。

        從理論上講,IPv4 地址耗盡應該意味著不能將任何新的 IPv4 設備添加到 Internet,不過為什么我們現在還有 IP 地址可以用?IPv4 到底沒沒沒?沒了我們怎么辦?耽不耽誤我在網上沖浪?

        這期的 「SFKP ? 計算機百科」,我們就來「SFKP ? IP 地址」。

        啥是 IP?

        clipboard.png

        名詞解析:IP(互聯網協議)

        互聯網協議(英語:Internet Protocol,縮寫:IP)是用于分組交換數據網絡的一種協議。IP 是在 TCP/IP 協議族中網絡層的主要協議,任務僅僅是根據源主機和目的主機的地址來傳送數據。

        1958 年,美國高級研究計劃局(Advanced Research Projects Agency,簡稱ARPA)成立,這是一個專門研發軍用高科技的行政機構,直接向美國國防部高層負責。

        1969 年,ARPA 創建了一個只有 4 臺計算機的網絡 —— 阿帕網 ARPANET,是世界上第一個運營的數據包交換網絡,也是我們今天互聯網的前身。

        1983 年,ARPANET 中和軍事有關的部分被剝離并單獨成立了 MILNET,最終成為了美國國防數據網絡(DDN)的一部分;而非軍用部分則逐漸演化發展成為今天的互聯網(Internet)。

        其實互聯網的歷史遠不是這三個時間節點能講得完的,但這確實是互聯網誕生過程的一個脈絡。

        在互聯網發明出來之后,就涉及到了機器的聯網問題。網絡上有那么多的計算機,如何找到想要訪問的那一臺呢?科學家們給出了解決方案,給每個計算機分配一個類似于身份證號碼的地址就可以了,這就是「IP 地址」的由來。

        為什么給機器分配一個 IP 地址,它就能和其它 IP 地址網絡通信了,這很神奇,是計算機學界多年發展出來的研究成果,但概念上就這么簡單...

        說完了 IP 地址的背景和由來,再來嘮一些枯燥無味的技術向的嗑。

        IP 地址一般由 32 位二進制數組成,為便于使用,常以 XXX.XXX.XXX.XXX 形式表現,每組 XXX 代表小于或等于 255 的 10 進制數,該表示方法稱為點分十進制。例如我們最常見的IP 地址:192.168.1.1。

        地址一般被劃分為 A、B、C、D、E 五大類,其中 E 類屬于特殊保留地址。

        clipboard.png

        因為 IP 地址的唯一性,IPv4 技術可使用的 IP 地址最多可有 4,294,967,296 個(即 2 的 32 次方)??雌饋砗芏?,但由于早期編碼和分配上的問題,使很多區域的編碼實際上被空出或不能使用。

        加上互聯網的普及,大部分家庭都至少有一部電腦,連同公司的電腦,以及連接網絡的各種設備都消耗大量 IPv4 地址資源。

        就像開頭新聞中提到的,IPv4 的頂級地址 2012 年就被分配完了,到 11 月 25 日 42 億個地址也被正式耗盡。既然地址早就用完了,那運營商整天打電話找我們開卡辦寬帶是在忽悠人呢么?

        圖片描述

        并不是。

        這兒就要提到另一項技術了,叫 NAT ( 地址轉換) 。雖然公網 IP 發不出來了,但這個公網 IP 底下可以發私有的 IP 地址。

        具體的操作就相當于把一塊錢掰成八瓣,這樣至少每個人手里就都有錢了...實際情況也是這樣,我們已經拼著用了好多年了...

        不過老這么湊合著也不是事兒啊,還是要想辦法解決的。

        所以,就有了 IPv6。

        IPv4 和 IPv6

        圖片描述

        有人問了,說完 IPv4 為什么直接就到了 IPv6?IPv5 你咋不說了?

        因為 IPv5 是一個測試性標準,在實驗中就夭折了,所以和 v1、v2、v3 一樣,我們略去不表。直到 IPv6 ,才有了實質性的巨大提升和更為豐富的應用場景。

        IPv4 升級到 IPv6,很多人常見的誤解是,4 個數字的 IP 升級到了 6 個數字的 IP。但這個理解是錯的。

        IPv6 里的 6 說的是「互聯網協議第六版」,不是 6 個數字。其實 IPv6 的一個地址,是 128 個比特,相當于 16 個 0-255 的數字組合。

        圖片描述

        和 IPv4 相比,IPv6 有三個最大的不同:

        1.地址空間更大。就像上面說的,IPv4 中規定 IP 地址長度為 32,而 IPv6 中 IP 地址的長度為 128。這可不是簡單的倍數關系。網上有個夸張的說法,IPv6 的地址空間,能讓全世界的每一粒沙子都會有相對應的一個 IP 地址。

        2.路由表更小。上面的圖就是 IPv4 和 IPv6 的路由表對比。肉眼可見的是右邊比左邊要簡潔很多,實際效果就是大幅減小了路由器中路由表的長度,提高了路由器轉發數據包的速度效率和準確性。

        3.安全性更高。在使用 IPv6 網絡中,用戶可以對網絡層的數據進行加密并對 IP 報文進行校驗,這極大地增強了網絡安全。并且 IPv6 能夠提供更好的 Qos 支持,能夠在保證網絡高效運行的同時,確保重要業務量不受延遲或丟棄。

        既然這么好,趕緊把 IPv4 換成 IPv6 就完事兒了啊,為啥不換呢?

        其實 IPv6 早在數年前就已經推行開來了。但這不是發個通知就能實現的事情。涉及到很多技術、市場和政策層面的影響。

        目前的推進辦法是,把已經支持 IPv4 的機器,更新升級到可以支持 IPv6,慢慢增加 IPv6 地址的數量。

        比如我們自己的電腦就是這樣的。拿 windows 舉例,網絡選項里的 TCP/IP,除了 IPv4 外,現在還多支持了 IPv6.

        還有就是技術這塊兒,IPv4 這個協議,從根兒上就是有很大局限性的。

        在根服務器方面,全世界 IPv4 的根服務器只有13臺,1 個主根服務器在美國,其余還有 12 個輔根服務器,9 個在美國,2 個在歐洲,還有 1 個在日本。

        而 IPv6 的根服務器架構,是在 IPv4 原有的 13 臺基礎上,新增加了 25 臺。因為這件事是中國主導的,所以在中國就部署了 4 臺服務器,一臺主根三臺輔根。這也打破了中國過去沒有根服務器的困境(雖然可能并沒有什么差別)。

        現在建成的 IPv6 根服務器體系,實際上是一個「測試驗證」,從工程規模以及應用頻率上,還不能和 IPv4 相比。

        雖然 IPv4 的根服務器只有 13 臺,但是下面的各級 DNS 服務器非常多。并且 IPv4 的體系已經很成熟了,發展出了很多優化應用的辦法,而 IPv6 不管是從數量還是技術上,目前都還需要不斷的進化才行。

        圖片描述

        另一個可能延遲了 IPv6 發展的原因,就是有人在“從中作?!?。

        雖然我們普通群眾拿不到 IP 地址,但很多運營商、網絡提供商手里其實還是有一些存貨的。物以稀為貴,鬧饑荒的時候,麩糠也會變成好東西。

        不過就現在來看,如果能盡快普及 IPv6 的應用,不管對個人還是整個社會來說,還是有很大好處的。所以 2019 年 4 月份,工信部就發布了關于開展 2019 年 IPv6 網絡就緒專項行動的通知,并設定了相關的目標。

        2019 年末主要目標為獲得 IPv6 地址的 LTE 終端比例達到 90%,獲得 IPv6 地址的固定寬帶終端比例達到 40%;LTE 網絡 IPv6 活躍連接數達到 8 億;完成全部 13 個互聯網骨干直聯點 IPv6 改造。

        截至 2019 年 5 月底,我國已分配 IPv6 地址用戶數達 12.07 億,其中 LTE 網絡分配 IPv6 地址用戶數為 10.45 億,固定寬帶接入網絡分配 IPv6 地址的用戶數為 1.62 億。IPv6地址儲備量已躍居全球第一位。

        但技術是一把雙刃劍。

        使用 IPv6 的好處很明顯:每個設備都可以有個獨立且唯一的 IP 地址。但另一個角度來說,就是我們每個人的信息都非常準確的定位在互聯網上。那么隱私保護方面就更難搞了。

        一些和 IP 相關的計算機小技巧

        1. 如何查詢自己的 IP 地址

        最簡單的方法就是打開搜索引擎 —— 搜索「ip地址查詢」,就能查到自己此刻的 IP 地址。

        覺得這個辦法 low,不符合自己 Geek 的身份,那也可以用電腦直接查詢 IP 地址。搜索電腦應用——命令提示符,或者直接在左下角搜索欄輸入—— CMD,打開命令提示符。隨后輸入 —— ipconfig,按住 Enter 鍵,就能查詢本機的 IP 地址了。

        2. 如何修改自己的 IP 地址

        首先,先去查一下自己的 IP 是多少。然后斷開網絡,手機打開飛行模式。過幾秒之后再關閉飛行模式,去查詢自己的 IP 地址,你就會發現和之前的地址不一樣了~

        PS:這種方法利用的是IP的動靜態區分。使用動態IP是為了解決IP地址不夠用的問題。隨著網絡普及,網民使用電腦的臺數激增,IP地址就不夠用了,動態IP技術應運而生。同一時刻不會所有人都在上網,將未聯網的IP拿去給需要的人用,同理網民上網時會被分配無人使用的IP。

        3. 如何隱藏自己的 IP 地址

        隱藏 IP 這種說法其實很不實際,網絡運營商總會知道你 IP。因為不管發送什么數據,我們的網絡數據包里都是包含我們的 IP 的,但通過一些網絡代理,可以實現“張冠李戴”,從而隱藏自己地址的。

        具體的技術細節不做分享,有的時候用一些網絡代理確實可以保護我們的重要信息,但一定不要用技術來做壞事。

        就像黑客攻擊時,即便是抓肉雞做代理、找網絡代理,哪怕很多人用多層跳板在國內外的服務器上反復橫跳,在網警的眼里想查到原始 IP 還是很容易的。只要犯了法,只要他想。

        最后奉勸各位一句:

        不要去嘗試挑戰警察叔叔掌握的技術和法律的邊界,不要扭曲所謂的「Geek 精神」從而誤入迷途。

        掃碼加好友,聊聊那些不能說的 IP 技巧

        clipboard.png

        查看原文

        贊 18 收藏 5 評論 1

        蘇生不惑 贊了文章 · 2019-11-24

        面向對象的設計過程

        前言

        我一直認為分享的目的不是炫技。

        • 一是,自我學習的總結。
        • 二是,降低他人的學習成本。
        • 三是,別人對自己學習結果的審核。

        同時,本次分享有下面四個要素:

        觀點本次分享的觀點是一個軟件工程中的思維方法,不限于編程語言
        探討我可能理解錯的,或者大家沒理解的,歡迎大家積極評論,盡可能多互動,目的增加理解
        理解真的希望大家能理解
        運用最重要的,如果你覺著有幫助,一定要去在實際業務中實戰

        背景

        工作中,幾乎大家經常抱怨別人寫的代碼:

        • 沒法改
        • 耦合高
        • 無法擴展
        今天就來探討如何克服上面的問題~

        場景

        首先問個問題:

        平常工作中來了一個業務需求,我們是如何開始寫代碼的?

        我推測大多數人可能:

        • 1、梳理業務
        • 2、設計數據庫、接口、緩存
        • 3、評審
        • 4、于是就開始了 怎么怎么樣...如果怎么怎么樣...怎么怎么樣...愉快的碼代碼的過程
        此處有人覺著有啥問題么?
        備注:說出來問題的,本次分享就可以略過了~

        一個簡單的業務場景

        比如產品提了個需求:
        描述“我一個同事”一天的生活,簡單來看看他一天干些啥:
        
        1.0 餓了吃飯
        1.1 到點吃飯
        
        2.0 渴了喝水
        2.1 到點喝水
        
        3.0 困了睡覺
        3.1 到點睡覺
        3.2 有可能一個人睡覺,也有可能... 是吧?復雜

        剛開始,一個業務邏輯從頭寫到尾
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c864c8ab271?w=670&h=698&f=png&s=81774

        一個業務邏輯(拆成多個函數)從頭寫到尾:
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8655660dca?w=862&h=1382&f=png&s=145481

        一個業務邏輯(引入類)從頭寫到尾:
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c865ab15489?w=858&h=842&f=png&s=100933

        一個業務邏輯(拆成多個類方法)從頭寫到尾,也許、可能、貌似、猜測大多數人停留到了這個階段。
        問題:某一天多了社交的能力,咋辦?
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8650866cd5?w=1054&h=1562&f=png&s=232631

        一個業務邏輯(拆成多類)從頭寫到尾:
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c865ff77738?w=914&h=1922&f=png&s=256693

        一個業務邏輯(拆成類、抽象類、接口)從頭寫到尾:
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8656622ead?w=1302&h=2606&f=png&s=427919

        思考??:上面的代碼就沒啥問題了嗎?

        上面就是面向對象設計的代碼結果。

        所以,如何設計出完全面向對象的代碼?

        代碼建模

        什么是代碼建模?

        把業務抽象成事物(類class、抽象類abstact class)和行為(接口interface)的過程。

        實栗??分析

        又來看一個實際的業務場景:

        最近“我一個同事”開始創業了,剛創立了一家電商公司,B2C,自營書籍《3分鐘學會交際》。最近開始寫提交訂單的代碼。
        
        ??注意場景 1.剛創業 2.簡單的單體應用 3.此處不探討架構

        一般來說,我們根據業務需求一頓分析,開始定義接口API、設計數據庫、緩存、技術評審等就開始碼代碼了。

        接口參數:
        uid
        address_id
        coupon_id
        .etc
        
        業務邏輯:
        參數校驗->
        地址校驗->
        其他校驗->
        寫訂單表->
        寫訂單商品信息表->
        寫日志->
        扣減商品庫存->
        清理購物車->
        扣減各種促銷優惠活動的庫存->
        使用優惠券->
        其他營銷邏輯等等->
        發送消息->
        等等...

        就開始寫代碼了怎么怎么樣...如果怎么怎么樣...怎么怎么樣...一蹴而就、思路清晰、邏輯清楚、很快搞定完代碼,很優秀是不是,值得鼓勵。

        但是,上面的結果就是大概所有人都見過的連續上千行的代碼等等。上面的流程沒啥問題啊,那正確的做法是什么了?就是接著要說的代碼建模。

        我們根據上面的場景,開始建模。

        業務分析少不了

        同樣,首先,我們看看提交訂單這個業務場景要做的事情:

        換個角度看業務其實很簡單:根據用戶相關信息生成一個訂單。
        1. 梳理得到業務邏輯
        參數校驗->
        地址校驗->
        其他校驗->
        寫訂單表->
        寫訂單商品信息表->
        寫日志->
        扣減商品庫存->
        清理購物車->
        扣減各種促銷優惠活動的庫存->
        使用優惠券->
        其他營銷邏輯等等->
        發送消息->
        等等...
        1. 梳理業務邏輯依賴信息
        用戶信息
        商品信息
        地址信息
        優惠券信息
        等等...

        再次回歸概念

        什么是代碼建模?把業務抽象成事物(類class、抽象類abstact class)和行為(接口interface)的過程。

        獲取事物

        比如我們把訂單生成的過程可以想象成機器人,一個生成訂單的訂單生成機器人,或者訂單生成機器啥的,這樣我們就得到了代碼建模過程中的一個事物。

        從而我們就可以把這個事物轉化成一個類(或結構體),或者抽象類。

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c86cacb4152?w=1208&h=407&f=jpeg&s=63758

        獲取行為

        這些操作就是上面機器人要做的事情。

        事物有了:訂單生成機器人
        行為呢?毫無疑問就是上面各種業務邏輯。把具體的行為抽象成一個訂單創建行為接口:

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c86f90e2839?w=934&h=170&f=jpeg&s=32819

        得到UML

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8700e8b8c0?w=1577&h=886&f=png&s=82942>

        設計代碼

        1. 定義一個類

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c87038a0fc1?w=1186&h=1670&f=png&s=279028

        1. 定義一個訂單創建行為的接口

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8700f7443e?w=1166&h=518&f=png&s=82926

        1. 定義具體的不同訂單創建行為類
        參數校驗->
        地址校驗->
        其他校驗->
        寫訂單表->
        寫訂單商品信息表->
        寫日志->
        扣減商品庫存->
        清理購物車->
        扣減各種促銷優惠活動的庫存->
        使用優惠券->
        其他營銷邏輯等等->
        發送消息->
        等等...

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c870943c870?w=1302&h=2138&f=png&s=394128

        1. 創建訂單

        這里的代碼該怎么寫,這樣?
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c871f2fd3fd?w=1034&h=1130&f=png&s=200044

        還可以繼續優化嗎?
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8730ebc469?w=1454&h=1022&f=png&s=188592

        使用閉包。
        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8730f93eca?w=1454&h=1058&f=png&s=191695

        PHP版完整代碼

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8754ee6abb?w=1346&h=5702&f=png&s=1056295

        Go版完整代碼

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c8750dfe08c?w=2048&h=4874&f=png&s=1117461

        上面的代碼有什么好處?

        假如“我一個同事”又要新開發一個新的應用,新的應用創建訂單的時候又有新的邏輯,比如沒有優惠邏輯、新增了增加用戶積分的邏輯等等,復用上面的代碼,是不是就很簡單了。

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c874d66fc62?w=1082&h=734&f=png&s=123089

        所以現在,什么是面向對象?

        概念

        面向對象的設計原則

        • 對接口編程而不是對實現編程
        • 優先使用對象組合而不是繼承
        • 抽象用于不同的事物,而接口用于事物的行為

        針對上面的概念,我們再回頭開我們上面的代碼

        對接口編程而不是對實現編程
        結果:RobotOrderCreate依賴了BehaviorOrderCreateInterface抽象接口
        優先使用對象組合而不是繼承
        結果:完全沒有使用繼承,多個行為不同場景組合使用
        抽象用于不同的事物,而接口用于事物的行為
        結果:
        1. 抽象了一個創建訂單的機器人 RobotOrderCreate
        2. 機器人又有不同的創建行為
        3. 機器人的創建行為最終依賴于BehaviorOrderCreateInterface接口

        是不是完美契合,所以這就是“面向對象的設計過程”。

        結論

        代碼建模過程就是“面向對象的設計過程”的具體實現方式.

        預習

        設計模式

        最后,設計模式又是什么?

        同樣,我們下結合上面的場景和概念預習下設計模式。

        設計模式的設計原則
        開閉原則(Open Close Principle):對擴展開放,對修改封閉

        看看上面的最終的代碼是不是完美契合。

        https://user-gold-cdn.xitu.io/2019/11/7/16e45c87616dc861?w=1504&h=914&f=png&s=188519

        依賴倒轉原則:對接口編程,依賴于抽象而不依賴于具體
        結果:創建訂單的邏輯從依賴具體的業務轉變為依賴于抽象接口BehaviorOrderCreateInterface
        接口隔離原則:使用多個接口,而不是對一個接口編程,去依賴降低耦合
        結果:上面的場景,我們只簡單定義了訂單創建的接BehaviorOrderCreateInterface。由于訂單創建過程可能出現異?;貪L,我們就需要再定義一個訂單創建回滾的接口
        BehaviorOrderCreateRollBackInterface.
        迪米特法則,又稱最少知道原則:減少內部依賴,盡可能的獨立
        結果:還是上面那段代碼,我們把RobotOrderCreate機器人依賴的行為通過外部注入的方式使用。
        合成復用原則:多個獨立的實體合成聚合,而不是使用繼承
        結果:RobotOrderCreate依賴了多個實際的訂單創建行為類。
        里氏代換:超類(父類)出現的地方,派生類(子類)都可以出現
        結果:不好意思,我們完全沒用繼承。(備注:繼承容易造成父類膨脹。)

        下回預告

        上面預習了設計模式的概念,下次我們進行《設計模式業務實戰》。

        查看原文

        贊 33 收藏 21 評論 3

        認證與成就

        • 獲得 2654 次點贊
        • 獲得 230 枚徽章 獲得 21 枚金徽章, 獲得 79 枚銀徽章, 獲得 130 枚銅徽章

        擅長技能
        編輯

        開源項目 & 著作
        編輯

        (??? )
        暫時沒有

        注冊于 2013-06-17
        個人主頁被 30.1k 人瀏覽

        一本到在线是免费观看_亚洲2020天天堂在线观看_国产欧美亚洲精品第一页_最好看的2018中文字幕