[筆記] Git 常用命令大全(按場景分類)

適用於日常開發中對 Git 的常見操作。透過分類整理,幫助你快速上手或查閱。 📦 基礎指令 指令 用途 git init 初始化一個 Git 儲存庫(建立 .git 資料夾)。 git clone <url> 將遠端儲存庫複製到本地。 git status 查看目前工作目錄狀態(檔案修改、暫存等)。 git add <file> 將檔案新增到暫存區。 git commit -m "message" 提交暫存區檔案到本地儲存庫,並新增提交訊息。 git log 查看提交歷史。 🌱 分支管理 指令 用途 git branch 查看本地分支列表。 git branch <branch-name> 建立一個新分支。 git checkout <branch-name> 切換到指定分支。 git switch <branch-name> 切換到指定分支(推薦使用的新指令)。 git merge <branch-name> 將指定分支合併到目前分支。 git branch -d <branch-name> 刪除已合併的分支。 git branch -D <branch-name> 強制刪除分支。 🌍 遠端儲存庫操作 指令 用途 ...

2025年6月2日 · 2 min · MoeJue

打贏復活賽,我活過來了

近況 距離上次的閒言碎語已經兩個多月沒說話了,是時候整理整理我的思緒了。上回是發表了一堆感慨,之後就沒聲了,所以是有一點倉促了,後續的活就跟不上了。 又是一年國慶,果然我的國慶堪比雙十一。之前旗下的三個域名(52ecy.cn,moeins.cn,moeins.com),雖然復活賽是打贏了,但是裝備沒有了。 所以只能新購域名了,同時又把部落格給恢復了,可能還是想自己折騰吧,掛靠在部落格園還是不大舒服的樣子。 之前一直在用的emlog,這會也來場大動作,直接給系統換到了WordPress,同時也換上了新主題。這款主題是由專收爆米花在21年前後的時候就發布了,那會我在loc看到的時候我就star了,一直在我GitHub裡躺了4年lolimeow,因為那會一直在用emlog,所以就不願意折騰。乘此契機,乾脆一戰到底,所以也是花了一點大功夫,包括數據的遷移,和主題的適配。 雖然作者一直以來都在積極推進主題的更新,也正因此我在使用中沒有遇到太大的麻煩,但也有缺少我之前系統的設定,所以我也一併把這個主題做了更新,並且pull到了原倉庫。上面放的GitHub的連結是我更新後的。 最麻煩的數據遷移部分,我在網上兜兜轉轉了半天,只找到exe版本的,先不說exe版本給人一種莫名的不放心的感覺,況且我現在用的還是Mac的系統,根本就不能直接運行。所謂自己動手豐衣足食,所以我只能花點時間給自己寫一個遷移腳本了。GitHub的地址我放在了文章的底部了,可以完美遷移emlog的數據到WordPress系統中。不愧是我! 圖片我還是一樣,一份存七牛雲備份,一份存新浪圖床,轉過來發現市場上沒有好用適合我的七牛雲插件,我又自己撸了一個 新域名 雖然我也很不想,但是又只能換域名了,之前的域名就給人做嫁衣了。萌音系列: MoeKot.cn。萌音系列的包括(萌音筆記、萌音發卡、萌音社群、萌音商城等)以後都會放在這個域名下。主站系列: MoeJue.cn。這是我的主站,包括部落格和一些不帶系列的項目都會放到這個域名下面。 解釋 Moe: 日文裡的「萌え」的讀音,羅馬音的寫法,中文裡一般翻譯成「萌」。 Kot: 日語「聲音」的意思,羅馬音寫法。 Jue: 阿珏醬的簡版音譯。 部落格 我又是一個特別念舊和重感情的人,所以連之前的部落格我都一同保留下來了。Xlog cnblogs emlog Blog 相關的網站的域名我也做了遷移,就不一一列出來了,當然也可能會漏掉一些連結沒替換全。 所有的數據都是原汁原味的,不漏掉每一個人的數據。甚至是部落格的註冊用戶的數據我也一同搬遷過來了,可以直接在新系統上登入,密碼是一樣的。 快來star一下吧! 食用方法也一併寫到了README.md裡了,如果遇到什麼問題也可以直接提交issue。 emlog遷移WordPress腳本 我的部落格即將同步至騰訊雲開發者社群,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=15kxzzid10tgx

2024年10月3日 · 1 min · MoeJue

什麼是Web3.0,與區塊鏈又有什麼關係?

又是一個莫名其妙的詞語的新起-。- 我大致歸納為以下幾個點 什麼是web3.0 Web 3.0(Web3)是下一代網際網路的發展方向,旨在創建一個更加去中心化、用戶控制和數據保護的網路環境。與之前的Web 1.0(靜態網頁)和Web 2.0(動態、互動式網頁和社交媒體)不同,Web 3.0的核心理念和技術包括以下幾個方面: 去中心化: 區塊鏈技術:Web 3.0的核心是區塊鏈技術,它提供了一個去中心化的帳本,記錄所有的交易和數據變化。這意味著數據不再由單一的中央伺服器控制,而是分佈在多個節點上。 分佈式應用(DApps):這些應用程式運行在區塊鏈網路上,沒有中心化的控制者。DApps的用戶可以直接進行交易和互動,而無需通過中介機構。 用戶控制和數據保護: 用戶主權身份:在Web 3.0中,用戶可以完全控制自己的數位身份和數據。通過加密技術,用戶可以決定誰可以訪問他們的数据以及如何使用這些數據。 數據所有權:用戶的數據儲存在去中心化的網路上,用戶擁有數據的所有權,而不是由大公司集中管理和控制。 智能合約: 自動執行協議:智能合約是在區塊鏈上運行的自動化協議,當滿足特定條件時自動執行。這種技術可以用於各種場景,如金融交易、供應鏈管理和法律合約。 互操作性: 跨平台和跨鏈技術:Web 3.0致力於實現不同區塊鏈和分佈式網路之間的互操作性,使得數據和資產可以在不同平台之間無縫轉移。 去信任化和透明度: 無信任機制:Web 3.0通過區塊鏈技術實現了無信任機制,即參與者無需互相信任或依賴第三方中介,就能進行安全的交易和互動。 透明性:所有交易和數據變更記錄在區塊鏈上,公開透明且不可篡改,提高了信任度和安全性。 Web 3.0的應用場景 去中心化金融(DeFi):通過智能合約和區塊鏈技術,提供無需中介的金融服務,如借貸、交易和投資。 數位身份:用戶可以創建和管理自己的數位身份,控制個人數據的訪問和使用。 供應鏈管理:通過區塊鏈技術,實現供應鏈的透明和可追溯性,防止偽造和欺詐。 內容創作和分發:藝術家、音樂家和作家可以直接與觀眾互動和交易,獲得更公平的收益分配。 那什麼又是區塊鏈呢? 區塊鏈技術是一種分佈式帳本技術(Distributed Ledger Technology, DLT),用於記錄交易和資訊的不可篡改、去中心化的資料庫。區塊鏈技術的核心思想是通過去中心化的方式實現數據的安全、透明和可信。 區塊鏈的基本原理 區塊(Block): 區塊是包含交易記錄的數據包。每個區塊包含多個交易和一個哈希值(用於唯一標識該區塊)。 區塊還包含上一個區塊的哈希值,從而將所有區塊連接成鏈,形成區塊鏈。 鏈(Chain): 區塊通過哈希值相互連接,形成一個鏈式結構。每個區塊包含前一個區塊的哈希值,這使得區塊鏈中的數據難以篡改。 如果試圖更改一個區塊中的數據,將導致該區塊及其後續所有區塊的哈希值發生變化,需要重新計算所有這些區塊的哈希值,這幾乎是不可能的。 去中心化(Decentralization): 區塊鏈網路中的所有節點(電腦)都保存一個完整的區塊鏈副本,這些副本通過共識機制保持一致。 沒有中央機構控制或管理區塊鏈,數據由所有節點共同維護。 共識機制(Consensus Mechanism): 區塊鏈網路使用共識機制來確保所有節點對區塊鏈的狀態達成一致。常見的共識機制包括工作量證明(Proof of Work, PoW)和權益證明(Proof of Stake, PoS)。 工作量證明(PoW):礦工通過解決複雜的數學問題來驗證交易,並將其添加到區塊鏈中。解決問題需要大量計算能力,確保了區塊鏈的安全性。 權益證明(PoS):驗證者根據其持有的加密貨幣數量和其他因素來驗證交易,並獲得相應的獎勵。 加密技術(Cryptography): -區塊鏈使用加密技術確保數據的安全性和隱私性。每個交易都使用公鑰和私鑰進行簽名和驗證,確保只有合法的所有者才能發起交易。 區塊鏈的優點 安全性: 數據分佈在多個節點上,沒有單點故障,攻擊者難以篡改數據。 每個區塊包含上一個區塊的哈希值,篡改一個區塊需要更改整個鏈條,成本極高。 2.透明性: 區塊鏈上的所有交易記錄都是公開可見的,任何人都可以查閱。 交易記錄不可篡改,提高了系統的透明度和信任度。 3.去中心化: 沒有中央控制機構,所有節點平等參與網路的維護和管理,防止了單點控制和權力集中。 4.不可篡改性: 一旦數據被寫入區塊鏈,就很難被篡改,確保了數據的完整性和真實性。 區塊鏈的應用場景 加密貨幣: ...

2024年6月17日 · 1 min · MoeJue

基於Web3.0的區塊鏈圖片上傳

在開始之前,我們先簡單了解一下基本的概念,我大致歸納為以下幾個點 什麼是Web3.0,和區塊鏈又有什麼關係?(上回的文章不就派上用場了) 需求:開發一個基於Python的Web 3.0圖片上傳系統。這個系統將允許用戶上傳圖片,並將圖片儲存在去中心化的網路上,同時記錄交易資訊在區塊鏈上。 本來只是寫著玩的,想過要寫成用戶認證、檔案操作集成全套管理的,讓他「終將成為圖片上傳服務的最終解決方案」。實際下來卻發現不是很實際,就作罷了,奈何我一直以來對圖片這麼執著。 步驟概述 環境設定:使用Python開發,安裝必要的Python函式庫。 IPFS整合:將圖片上傳到IPFS,取得圖片的CID(內容識別碼)。 區塊鏈整合:將IPFS CID記錄在區塊鏈上。 Web介面:使用Flask建立一個Web介面,允許用戶上傳圖片。 詳細步驟 1. 環境設定 安裝所需的Python函式庫: pip install flask web3 ipfshttpclient 2. IPFS整合 IPFS(星際檔案系統)是一種點對點的檔案儲存協定。我們可以使用ipfshttpclient函式庫來與IPFS網路互動。 首先,請確保你已經安裝並運行了IPFS節點。如果還沒有安裝IPFS,可以在IPFS官網找到安裝指南。 以下是上傳圖片到IPFS的程式碼範例: import ipfshttpclient def upload_to_ipfs(file_path): client = ipfshttpclient.connect('/ip4/127.0.0.1/tcp/5001') res = client.add(file_path) return res['Hash'] 3. 區塊鏈整合 使用web3.py函式庫將IPFS CID記錄到區塊鏈上。我們將以太坊(Ethereum)作為範例區塊鏈。 以下是一個簡單的智能合約範例,用於儲存IPFS CID: pragma solidity ^0.8.0; contract IPFSStorage { mapping(address => string[]) public userCIDs; function storeCID(string memory cid) public { userCIDs[msg.sender].push(cid); } function getCIDs() public view returns (string[] memory) { return userCIDs[msg.sender]; } } 編譯並部署該合約後,使用以下Python程式碼與智能合約互動: ...

2024年6月17日 · 2 min · MoeJue

Android 檢視 APK 安裝包的 AndroidManifest.xml 檔案

起因 上週在做安卓系統的廠商推送功能,某些機型無法離線廠推,所以準備解包apk看一下打包參數是否出問題。 序言 在Android開發中,可能需要從我們自己的應用程式跳轉到別的應用程式的介面,但是在不知道別的應用程式的包名以及類名(class name)的情況下,是很難做到這一點的。有個最簡單的方法就是下載應用程式的apk檔案,然後修改副檔名為zip或者rar,之後解壓縮檔案。在解壓縮出來的檔案中,就會有一個AndroidManifest.xml的檔案,但是打開之後,可能是亂碼,這就尷尬了,那怎麼辦呢? AXMLPrinter2.jar是一款常用的apk反編譯工具,主要用於反編譯apk檔案,包括包名、版本號和圖示等資訊,可以用AXMLPrinter2對androidmanifest.xml反編譯進行明文查看。 使用方法 1、 下載工具AXMLPrinter2.jar工具 地址:https://code.google.com/archive/p/android4me/downloads 2、 將要查看的AndroidManfist.xml檔案複製至與工具相同資料夾下 3、 在當前資料夾打開DOS視窗 4、 執行如下命令 java -jar AXMLPrinter2.jar AndroidManifest.xml >> AndroidManifest.txt 執行完該命令後會在該資料夾生成AndroidManifest.txt檔案,該檔案便是解碼後的檔案。 當然,可能有些執行後就會報錯:「‘java’ 不是內部或外部命令,也不是可執行的程式或批次處理檔案。」 這是因為沒有安裝Java環境或未配置環境變數導致的。 安裝JDK 首先先來回顧下安裝JDK的過程 下載JDK並安裝 JDK1.6、1.7、1.8任君選擇下載,想用哪個直接下載哪個吧 官方網站下載JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安裝很簡單,無腦下一步操作就行了,這裡不再贅述 配置JDK環境變數 (1)右擊電腦中的「我的電腦」,Win10為「這台電腦」,選擇「屬性」,選擇「進階系統設定」,在新介面中選擇「環境變數」,我們只編輯「系統變數」就可以了 (2) 點擊「新建」添加變數名為「JAVA_HOME」,變數值為「C:\Program Files\Java\jdk1.8.0_60」,這個值就是你安裝的JDK路徑,你安裝到了哪裡,就用那個地址就行 再新建一個變數名為「CLASSPATH」,變數值為「.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar」的變數,並確定保存,注意值內的「.;」不要漏掉,每一個符號都不能少 最關鍵的一步來了,找找有沒有叫「path」的變數,大小寫都行,沒有則新建,有則直接點擊「編輯」 如果已經有path這個變數了,那麼裡面一定保存了一些內容,我們不管它,為了更方便編輯,我們把其中的變數值先複製出來 然後將內容貼上到文字編輯器中,在內容的最前面添加內容「%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;」,結果如下 然後再把整個值複製後貼上到之前編輯的變數值中,確定保存。 回顧一下上面的步驟,其中總共添加了三個值: JAVA_HOME:C:\Program Files\Java\jdk1.8.0_60 CLASSPATH:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 下面是驗證安裝是否成功 Win+R打開「執行」,輸入cmd後打開命令列 輸入「java」,正常會顯示一大堆的操作提示 輸入「java -version」,正常會顯示你安裝的java版本號資訊 輸入「javac」,正常會顯示javac的一些用法 完結撒花!

2020年4月19日 · 1 min · MoeJue

支付寶當面付對接

當面付顧名思義,面對面付款,幫助商家在線下消費場景下實現快速收款;當面付產品支援條碼支付和掃碼支付兩種付款方式。 我們這裡對接的就是掃碼支付 掃碼支付,指用戶打開支付寶錢包中的「掃一掃」功能,掃描商家展示在某收銀場景下的二維碼並進行支付的模式。該模式適用於線下實體店支付、面對面支付等場景。業務流程如下圖所示: 由於當面付的簽約非常簡單,允許個體工商戶/個人商戶簽約。所以該方式也被大量用於線上的掃碼支付,由於該方式違反了支付寶的相關條款,有一定風險,咱作為技術交流,暫且先拋開這個問題。 作為技術對接,即使你沒有簽約當面付產品,也是可以進行開發的。 支付能力直接涉及到交易與資金,為了方便開放者調試支付能力,開放平台已經準備好沙箱環境,包括沙箱環境帳號和沙箱版支付寶錢包,這樣開發者就可以在沙箱環境調試了。點擊了解如何接入沙箱並接入沙箱環境。 所以我這邊開發使用的是沙箱環境,畢竟裡面好多錢,隨便用。 首先先下載相應的開發語言的sdk 下載:https://docs.open.alipay.com/194/105201/ 掃碼支付文檔:https://docs.open.alipay.com/194/106078/ 配置密鑰 為了保證交易雙方(商戶和支付寶)的身份和數據安全,開發者在調用接口前,需要配置雙方密鑰,對交易數據進行雙方校驗。 下載支付寶開放平台開發助手進行密鑰生成。 生成密鑰後,開發者需要在開放平台開發者中心進行密鑰配置,配置完成後可以獲取支付寶公鑰 設計接入 由於我這邊的設計不需要用到輪詢(後面會說),所以沒有加上 以下是我業務中的相關代碼 public function pay(){ if (request()->isPost()) { // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线, // 需保证商户系统端不能重复,建议通过数据库sequence生成, $uid = Session::get('sq.uid'); $outTradeNo = order\_num() . $uid; // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费” $subject = '聚合平台用户积分充值'; // (必填) 订单总金额,单位为元,不能超过1亿元 // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】 $totalAmount = input('post.pay\_money/f'); if($totalAmount < 1){ return \['status' => 1, 'msg' => '最低充值金額1元'\]; } if($totalAmount > 9999999){ return \['status' => 1, 'msg' => '充值最大金額不能超過9999999元'\]; } // (不推荐使用) 订单可打折金额,可以配合商家平台配置折扣活动,如果订单部分商品参与打折,可以将部分商品总价填写至此字段,默认全部商品可打折 // 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】 //String discountableAmount = "1.00"; // // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段 // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】 // $undiscountableAmount = "0.01"; // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号) // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID //$sellerId = ""; // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元" $body = "聚合平台用戶積分儲值" . $totalAmount . '元'; //商户操作员编号,添加此参数可以为商户操作员做销售统计 // $operatorId = ""; // (可选) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持 // $storeId = ""; // 支付宝的店铺编号 // $alipayStoreId= ""; // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),系统商开发使用,详情请咨询支付宝技术支持 // $providerId = ""; //系统商pid,作为系统商返佣数据提取的依据 // $extendParams = new ExtendParams(); // $extendParams->setSysServiceProviderId($providerId); // $extendParamsArr = $extendParams->getExtendParams(); // 支付超时,线下扫码交易定义为5分钟 $timeExpress = "5m"; // 商品明细列表,需填写购买商品详细信息, // $goodsDetailList = array(); // // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail // $goods1 = new GoodsDetail(); // $goods1->setGoodsId("apple-01"); // $goods1->setGoodsName("iphone"); // $goods1->setPrice(3000); // $goods1->setQuantity(1); // //得到商品1明细数组 // $goods1Arr = $goods1->getGoodsDetail(); // // 继续创建并添加第一条商品信息,用户购买的产品为“xx牙刷”,单价为5.05元,购买了两件 // $goods2 = new GoodsDetail(); // $goods2->setGoodsId("apple-02"); // $goods2->setGoodsName("ipad"); // $goods2->setPrice(1000); // $goods2->setQuantity(1); // //得到商品1明细数组 // $goods2Arr = $goods2->getGoodsDetail(); // $goodsDetailList = array($goods1Arr,$goods2Arr); //第三方应用授权令牌,商户授权系统商开发模式下使用 $appAuthToken = "";//根据真实值填写 // 创建请求builder,设置请求参数 $qrPayRequestBuilder = new AlipayTradePrecreateContentBuilder(); $qrPayRequestBuilder->setOutTradeNo($outTradeNo); $qrPayRequestBuilder->setTotalAmount($totalAmount); $qrPayRequestBuilder->setTimeExpress($timeExpress); $qrPayRequestBuilder->setSubject($subject); $qrPayRequestBuilder->setBody($body); // $qrPayRequestBuilder->setUndiscountableAmount($undiscountableAmount); // $qrPayRequestBuilder->setExtendParams($extendParamsArr); // $qrPayRequestBuilder->setGoodsDetailList($goodsDetailList); // $qrPayRequestBuilder->setStoreId($storeId); // $qrPayRequestBuilder->setOperatorId($operatorId); // $qrPayRequestBuilder->setAlipayStoreId($alipayStoreId); $qrPayRequestBuilder->setAppAuthToken($appAuthToken); // 调用qrPay方法获取当面付应答 require ROOT\_PATH.'extend/f2fpay/config/config.php'; $qrPay = new AlipayTradeService($config); $qrPayResult = $qrPay->qrPay($qrPayRequestBuilder); // 根据状态值进行业务处理 switch ($qrPayResult->getTradeStatus()){ case "SUCCESS": $response = $qrPayResult->getResponse(); Db::name('order') ->insert(\[ 'uid' => $uid, 'pay\_id' => $outTradeNo, 'money' => $totalAmount, 'creat\_time' => time(), 'subject' => $subject \]); return \['status' => 0, 'msg' => '支付寶創建訂單二維碼成功!!!"','data' => \[ 'qr\_code' => $response->qr\_code, 'outTradeNo' => $outTradeNo \]\]; // $qrcode = $qrPay->create\_erweima($response->qr\_code); // echo $qrcode; // print\_r($response); break; case "FAILED": return \['status' => 1, 'msg' => '支付寶創建訂單二維碼失敗!!!"'\]; // if(!empty($qrPayResult->getResponse())){ // print\_r($qrPayResult->getResponse()); // } break; case "UNKNOWN": return \['status' => 1, 'msg' => '系統異常,狀態未知!!!"'\]; // echo "系統異常,狀態未知!!!"."<br>--------------------------<br>"; // if(!empty($qrPayResult->getResponse())){ // print\_r($qrPayResult->getResponse()); // } break; default: return \['status' => 1, 'msg' => '不支持的返回狀態,創建訂單二維碼返回異常!!!'\]; break; } return ; } } 以上就是當面付預下單代碼 關於這個SDK,我非常有必要吐槽一下,哪個傢伙寫的demo,還在PHP例子裡引入了個lotusphp框架,一大堆沒有用的東西,完全沒有考慮我們開發者能不能接受得了。 我也是花了一點時間,把SDK給精簡了一下,只拿出我需要的部分,放入了我自己的框架中,加上了namespace,自動載入。 掃碼支付有一個獨有的功能—-異步通知 這個也正是線上支付最為需要的功能 當收銀台調用預下單請求 API 生成二維碼展示給用戶後,用戶通過手機掃描二維碼進行支付,支付寶會將該筆訂單的變更信息,沿著商戶調用預下單請求時所傳入的異步通知地址 notify_url,通過 POST 請求的形式將支付結果作為參數通知到商戶系統。 記住這個異步通知地址需要在應用那設置一下。 ...

2020年4月4日 · 3 min · MoeJue

Discuz! 論壇個人空間自訂 CSS 樣式

幾天前閒來無事,然後就去找了一下Discuz論壇的漏洞,然後還真就找到了,順便就寫成了個軟體,再就順勢水了一篇。 下面這是事件起因 這個漏洞對網站並沒有太大的危害,僅只能自定義個人空間的CSS樣式,對網站數據並不構成威脅,還請放心。 軟體效果即可以自定義Discuz個人空間的裝扮的CSS樣式,豐富美化個人空間,讓其不再單調。 測試Discuz版本X3.4,其他版本請自行測試。 僅測試了全球主機交流論壇(站長求放過),同版本Discuz理論上通用 未開通個人空間的論壇不可用 自定義CSS不建議過多且建議壓縮成一行,以免導致失敗 協議頭正常情況下,理論上可以不用修改,放置文本框主要是為了方便擴展 如果操作的是loc論壇,默認會關注並添加阿珏醬為好友 [#手動滑稽 + 狗頭保命] 本軟體僅本地請求,不將任何數據上傳到伺服器。 軟體有加殼,防毒軟體可能誤報,還請放心使用 獲取Cookie 瀏覽器打開開發人員工具(F12),進入目標網站,在登入狀態下的任何頁面即可。開發人員工具切換到Network選項欄,重新整理頁面(F5),找到並點擊當前網域的請求數據的Headers欄,Request Headers處的Cookie。我知道大家肯定聽不懂我在說什麼,所以我特意做了圖。 第二種方法操作更簡單快捷,但是這種方法適用於你知道自己想要的Cookie是哪一個。如下圖所示。 第一種方法中的開發人員工具在早期的部落格文章中也有使用過,但沒有講到如何獲取Cookie。推薦還是第一種,Cookie反正不怕多,但少了就不行了。 免責聲明 本軟體僅供學習交流使用! 本軟體作者不承擔任何責任! 使用本軟體即視為同意本條款! 下載 下面這個下載樣式已經好幾年沒用過了,今天終於重出江湖了。 .down_link{background:url('https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg') no-repeat 100% 0% #fffdff; border: 1px solid #faf8fb; border-radius: 2px; color: #666; font-size: 14px; margin-bottom: 10px; padding: 5px 20px;}.downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downlink a{text-decoration:none;} .downlink a{text-decoration:none;font-size:15px;} .downlink a:link{color: #ffffff;} .downlink a:visited{color: #ffffff;} .downlink a:hover{color: #ffffff;} .downlink a:active{color: #ffffff;} .downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF !important; cursor: pointer; font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .yanshibtn{background: none repeat scroll 0 0 #d33431; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downbtn:hover,.yanshibtn:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .downbtn a:hover,.yanshibtn a:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} ...

2020年3月24日 · 2 min · MoeJue

如何優雅地提交一個表單

這是一個非常基礎的HTML表單提交問題,但卻是一個非常實用的技巧 我的業務場景是這樣的: 一個可動態建立input的表單,如下圖 這意味著input的name不能是一個固定的,否則肯定會被覆蓋掉的 第一種,傳統的普通提交方式,給每一個要提交的input一個唯一的name ...... 瀏覽器提交抓到的格式是這樣子的 伺服器獲取列印出來的是這樣的,對後端的資料處理就非常不友善 第二種,陣列的方式進行表單提交 ...... 瀏覽器和後端列印的結果分別為 細心觀察就會發現,提交的name值發生了變化,變成了一樣的?陣列? 提交到後端就會發現資料比之前整齊多了 但這裡要注意的是,提交的陣列鍵中不需要使用引號,否則引號也會成為鍵的一部分 當然了,實際中還可能遇到這樣的問題,要提交的組數(像上面的1、2、3)是不確定的,可以在前端隨意地添加,這個時候怎麼去用陣列提交這些內容呢? 下面就是我業務中的實際解決方案 這樣的話,二維陣列的鍵則不需要我們自己去維護了,由瀏覽器幫我們自動生成 後端接收到的資料則變成了這樣子,變得非常好處理了 此方法適用於,要提交一堆不確定個數的一組相關的資料對 完結撒花!~

2019年5月6日 · 1 min · MoeJue

微信JSAPI支付

前陣子一直在做微信相關的業務,雖說不是什麼新技術,但之前一直沒有機會接觸到,然後踩了些坑,抽空整理記錄下。 微信支付一共分為7種,分別是:付款碼支付、JSAPI支付、Native支付、APP支付、H5支付、小程序支付、人臉支付。 此次業務中使用到的是微信JSAPI支付:用戶透過微信掃碼、關注公眾號等方式進入商家H5頁面,並在微信內呼叫 JSSDK完成支付 文件:https://pay.weixin.qq.com/wiki/doc/api/index.html SDK:[https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1 ](https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1)JSAPI支付需要在微信中的瀏覽器打開才能喚起微信支付,效果如下圖 附上介面程式碼 程式碼中使用了模板引擎 html: {$competition\['username'\]} {$prices\[0\]}鑽 {$prices\[1\]}鑽 {$prices\[2\]}鑽 {$prices\[3\]}鑽 {$prices\[4\]}鑽 註:1鑽=1元,1鑽={$activity\['offset'\]}票 立即微信支付 JavaScript: // 投票 var offset = {$activity[‘offset’]}; $(’#tips’).html(‘正在給{$competition[‘code’]}號贈送{$prices[0]}鑽=’+({$prices[0]}*offset)+‘票’); $(’#vote’).click(function(){ $.post(’/index/index/detailed.html?cid={$cid}&aid={$aid}’,{ formhash :’{FORMHASH}’, submit:‘1’, type:1, openid:’{$_G[‘member’][‘openid’]}’ },function(res){ alert(res.msg); if (res.code == 0) { $(’.box-1 span’).text(res.data.all); $(’.box-2 span’).text(res.data.rank); $(’.box-3 span’).text(res.data.up + ‘票’); } }); }) /* jQuery物件級別外掛程式擴展 */ $.fn.extend({ /* 單選框 */ hlRadio:function () { var radioEl=$(this); radioEl.click(function () { var price = 0; price = $(‘input:radio:checked’).val(); $(’#price’).val(’’); $(’#tips’).html(‘正在給{$competition[‘code’]}號贈送’+price+‘鑽=’+(price*offset)+‘票’); radioEl.siblings(“div”).removeClass(“active”); $(this).siblings(“div”).addClass(“active”); }); }, }); $(“input[name=‘price’]”).hlRadio(); $(’#price’).bind(‘input propertychange’, function(){ var price = 0; price = $(’#price’).val(); $(’#tips’).html(‘正在給{$competition[‘code’]}號贈送’+price+‘鑽=’+(price*offset)+‘票’); }) ...

2019年3月30日 · 4 min · MoeJue

[筆記]Git常用命令大全

繼上一次之後,我抽空整理了一份比較完整的 Git 常用命令清單,並找到了一張非常棒、非常高清的導圖(1759*3162)。 查看、新增、提交、刪除、找回、重置修改檔案 git help <command> # 顯示 command 的說明 git show # 顯示某次提交的內容 git show $id git co -- <file> # 捨棄工作區修改 git co . # 捨棄工作區修改 git add <file> # 將工作檔案修改提交到本地暫存區 git add . # 將所有修改過的工作檔案提交暫存區 git rm <file> # 從版本庫中刪除檔案 git rm <file> --cached # 從版本庫中刪除檔案,但不刪除檔案 git reset <file> # 從暫存區恢復到工作檔案 git reset -- . # 從暫存區恢復到工作檔案 git reset --hard # 恢復最近一次提交過的狀態,即放棄上次提交後的所有本次修改 git ci <file> git ci . git ci -a # 將 git add, git rm 和 git ci 等操作都合併在一起執行 git ci -am "some comments" ...

2018年6月16日 · 3 min · MoeJue