All posts by 龙生
微信小程序官方示例 官方weui-wxss下载于安装 详解
1.小程序示例源码:https://github.com/wechat-miniprogram/miniprogram-demo 2.微信 weui下载地址:https://github.com/weui/weui-wxss/ weui用微信开发者工具打开步骤。 新先小程序,目录选择dist。appid可以选择测试 对WEUI css详解 from:https://www.cnblogs.com/yxw699/p/10739542.html
View Detailsmysql表名忽略大小写问题记录
为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母。
在任何系统中可以使用lower_case_tables_name=1。使用该选项的不利之处是当使用SHOW TABLES或SHOW DATABASES时,看不出名字原来是用大写还是小写。
请注意在Unix中如果以前lower_case_tables_name = 0将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。
Java嵌入式数据库H2学习总结(一)——H2数据库入门
一、H2数据库介绍
常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的客户端和服务器端。
H2的优势:
1、h2采用纯Java编写,因此不受平台的限制。
2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。
3、h2提供了一个十分方便的web控制台用于操作和管理数据库内容。
SpringBoot集成H2数据库
在写DAO层的单元测试时,我们往往会遇到一个问题,测试用例所依赖的数据库数据被修改或删除了,或者在一个新的环境下所依赖的数据库不存在,导致单元测试无法通过。在这种情况下,使用H2内存数据库来模拟数据库环境是一个很好的解决方案。
View Detailsnode.js反编译小程序.wxapk文件(自用)
一、node.js运行环境
1 |
安装node.js地址:nodejs.org/en/ |
二、下载反编译脚本
1 2 |
https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>pan<span class="token punctuation">.</span>baidu<span class="token punctuation">.</span>com<span class="token operator">/</span>s<span class="token operator">/</span><span class="token number">1</span>XE6fM4vSMbrYzyIgHV1J1w <a href="https://longsheng.org/wp-content/uploads/2022/04/wxappUnpacker-master.zip" rel="">wxappUnpacker-master</a> |
三、安装模拟器
1 2 |
下载夜神模拟器或其他android模拟器(推荐),下载微信,登录微信,打开你要编译的小程序,退回界面,点击文件管理器, |
image.png
1 2 |
文件在 <span class="token operator">/</span><span class="token keyword">data</span><span class="token operator">/</span><span class="token keyword">data</span><span class="token operator">/</span>com<span class="token punctuation">.</span>tencent<span class="token punctuation">.</span>mm<span class="token operator">/</span>MicroMsg<span class="token operator">/</span>一串<span class="token number">32</span>位的<span class="token number">16</span>进制字符串文件夹<span class="token operator">/</span>appbrand<span class="token operator">/</span>pkg<span class="token operator">/</span> 下<span class="token punctuation">,</span>根据时间找到源文件包压缩后,选中你要的小程序<span class="token punctuation">.</span>wxapkg文件, |
image.png
1 2 |
退回根目录,进入 /mnt/shared/Other/ ,把.wxapkg文件粘贴在这 |
image.png
1 2 |
然后打开电脑分享文件夹,然后把.wxapkg文件复制到你想放的地方 |
image.png image.png
1 2 3 4 5 6 7 8 9 |
然后win+R,输入cmd,回车,打开命令窗口,cd到编译脚本的目录,依次输入以下命令 npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify 安装好依赖之后,就是最后一步了,反编译 .wxapkg 文件 在当前目录下输入命令:node .\wuWxapkg.js F:\zyt_file\_-472979937_90.wxapkg(_-472979937_90.wxapkg是你需要反编译的源文件) |
1 2 3 4 |
如果出现 Cannot find module 'xxx' 表示模块未安装 运行命令 npm install 'xxx' , 安装依赖 如果遇到 __vd_version_info__ is not defined这种报错 解决方法如下: |
修改反编译脚本wuWxss.js代码,将原代码
1 2 3 4 5 6 7 8 9 |
function runVM(name,code){ let wxAppCode={},handle={cssFile:name}; let vm=new VM({sandbox:Object.assign(new GwxCfg(),{__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)})}); vm.run(code); for(let name in wxAppCode)if(name.endsWith(".wxss")){ handle.cssFile=path.resolve(frameName,"..",name); wxAppCode[name](); } } |
修改为
1 2 3 4 5 6 7 8 9 10 11 |
function runVM(name,code){ let wxAppCode={},handle={cssFile:name}; let gg = new GwxCfg(); let tsandbox ={$gwx:GwxCfg.prototype["$gwx"],__mainPageFrameReady__:GwxCfg.prototype["$gwx"],__wxAppCode__:wxAppCode,setCssToHead:cssRebuild.bind(handle)}; let vm = new VM({sandbox:tsandbox}); vm.run(code); for(let name in wxAppCode)if(name.endsWith(".wxss")){ handle.cssFile=path.resolve(frameName,"..",name); wxAppCode[name](); } } |
或者修改这个,将原代码
1 2 3 |
function runOnce(){ for(let name in runList)runVM(name,runList[name]); } |
修改为
1 2 3 4 5 6 7 8 9 10 11 12 |
function runOnce() { for (let name in runList) { // console.log(name, runList[name]); var start = `var window = window || {}; var __pageFrameStartTime__ = Date.now(); var __webviewId__; var __wxAppCode__={}; var __mainPageFrameReady__ = function(){}; var __WXML_GLOBAL__={entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0}; var __vd_version_info__=__vd_version_info__||{}; $gwx=function(path,global){ if(typeof global === 'undefined') global={};if(typeof __WXML_GLOBAL__ === 'undefined') {__WXML_GLOBAL__={}; }__WXML_GLOBAL__.modules = __WXML_GLOBAL__.modules || {}; }`; runVM(name, start + " \r\n" + runList[name]); } } |
参考地址
1 2 3 4 |
反编译流程参考地址: [https://baijiahao.baidu.com/s?id=1626150833428399320&wfr=spider&for=pc](https://baijiahao.baidu.com/s?id=1626150833428399320&wfr=spider&for=pc) __vd_version_info__ is not defined错误解决方法参考地址: [https://blog.csdn.net/weixin_43764814/article/details/91135302](https://blog.csdn.net/weixin_43764814/article/details/91135302) |
作者:好可怕好可怕 链接:https://www.jianshu.com/p/a47e36f70e35 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View Details微信小程序 TypeError: _typeof3 is not a function
修改一下 @babel/runtime/helpers/typeof.js 文件 全部替换 即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function _typeof2(o) { "@babel/helpers - typeof"; return (_typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) { return typeof o; } : function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; })(o); } function _typeof(o) { return "function" == typeof Symbol && "symbol" === _typeof2(Symbol.iterator) ? module.exports = _typeof = function(o) { return _typeof2(o); } : module.exports = _typeof = function(o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : _typeof2(o); }, _typeof(o); } module.exports = _typeof; |
研究了一天 ,完美解决 from:http://www.qianduanheidong.com/blog/article/210756/dfcd495214cdb1cfd83d/
View Details一键反编译微信小程序获取源码,并转换为uniapp或taro跨端项目
近期热门文章(感谢掘友的鼓励与支持🌹🌹🌹): 做了一夜动画,就为让大家更好的理解Vue3的Composition Api 762赞 🔥耗子尾汁,云开发的羊毛人人可薅! | 🏆 技术专题第七期征文 32赞 特别声明 ★ ★ ★ ★ ★ 禁止使用此方法盗取他人的开发成果 ★ ★ ★ ★ ★ 致歉 向教程中案例“好多计算器”的作者道歉,请大家帮好多计算器的作者多点几次banner广告。 视频教程 提取微信小程序代码包 www.bilibili.com/video/BV1yz… 微信小程序项目转为uniapp项目 www.bilibili.com/video/BV1yz… 微信小程序项目转为taro项目 www.bilibili.com/video/BV1yz… 反编译成果截图 跳一跳 仅反编译小游戏源码 好多计算器 反编译后可获得源码,可转为uniapp,taro等跨端项目 注意事项 不是所有小程序都可以获得源码 理论上所有的小程序都可以被反编译,但反编译和获得源码是两个不同的概念。使用uniapp或taro开发的小程序,反编译后代码不具备可读性。 不是所有小程序都可以转多端 仅支持微信原生开发的小程序反编译后转多端。禁止套娃! 90%的小游戏获取不到源码 因为游戏开发的特殊性,大部分的游戏都会使用游戏框架比如egret,laya,cocos2d等,发行时本就会对代码进行保护和混淆。但可通过反编译提取出代码包内的图像,音频资源。 下载地址 下载:v1.0.0版 from:https://juejin.cn/post/6891957219386982408 https://ukm028kzyr.feishu.cn/docs/doccnW1w3vwpcnjTeTYKcdErjtK#
View Details完美解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso
这是官方提供的解决问题的教程:Creating a personal access token – GitHub Docs 第一步:点击Settings 点击Settings 第二步:点击Developer settings 点击Developer settings 第三步:点击Personal access tokens Personal access tokens 第四步:点击Generate new token Generate new token 第五步:给token起一个描述名字(随便起) token name 第六步:设置token多久后过期 expire 第七步:设置token拥有的权限 权限 第八步:点击Generate token,生成一个token 生成token 第九步:复制token(关掉当前页面,就再也看不到当前token,请确保自己已复制) 复制token 第十步:设置token
1 2 3 4 5 |
// <your_token>:包括<>在内的全部字符替换成你的token // <USERNAME>:包括<>在内的全部字符替换成你的username // <REPO>:包括<>在内的全部字符替换成你要访问的仓库名称 git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git git push origin main |
作者:沈正方 链接:https://www.jianshu.com/p/6e86c80c457c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View DetailsC#读取带命名空间的xml
首先带有命名空间的xml读取可以使用Xml.Linq,也可以使用xpath,本文将采用xpath的方式解析。 原文参考了:https://www.cnblogs.com/duanjt/p/5440540.html 同时参考了:https://www.cnblogs.com/shixudong/p/4056400.html 首先带有命名空间的xml如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:queryResponse xmlns:ns="http://release.service.das.jeaw.com"> <ns:return xsi:type="ax2291:QueryReturnEntity" xmlns:ax2293="http://release.service.das.jeaw.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax2291="http://pojo.servgen.das.jeaw.com/xsd"> <ax2291:code>DAS00000</ax2291:code> <ax2291:message>服务访问成功</ax2291:message> <ax2291:totalRowCount>1</ax2291:totalRowCount> <ax2291:currentPageNo>1</ax2291:currentPageNo> <ax2291:datas xsi:type="ax2293:EntityGZ_GZBDJXX"> <ax2293:GZYXM_1>吕姗姗</ax2293:GZYXM_1> <ax2293:GZYZBH_1 xsi:nil="true"/> <ax2293:ID_1 xsi:nil="true"/> </ax2291:datas> <ax2291:pageSize>1</ax2291:pageSize> <ax2291:totalPageCount>1</ax2291:totalPageCount> </ns:return> </ns:queryResponse> </soapenv:Body> </soapenv:Envelope> |
解析如上的xml,就涉及到两个类,XmlNamespaceManager和XmlDocument。XmlDocument用于解析xml,而XmlNamespaceManager则是和命名空间相关的类。 如上的xml,如果我们想要获取到吕姗姗和ID_1的true怎么实现呢,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
string xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soapenv:Body> <ns:queryResponse xmlns:ns=\"http://release.service.das.jeaw.com\"> <ns:return xsi:type=\"ax2291:QueryReturnEntity\" xmlns:ax2293=\"http://release.service.das.jeaw.com/xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ax2291=\"http://pojo.servgen.das.jeaw.com/xsd\"> <ax2291:code>DAS00000</ax2291:code> <ax2291:message>服务访问成功</ax2291:message> <ax2291:totalRowCount>1</ax2291:totalRowCount> <ax2291:currentPageNo>1</ax2291:currentPageNo> <ax2291:datas xsi:type=\"ax2293:EntityGZ_GZBDJXX\"> <ax2293:GZYXM_1>吕姗姗</ax2293:GZYXM_1> <ax2293:GZYZBH_1 xsi:nil=\"true\"/> <ax2293:ID_1 xsi:nil=\"true\"/> </ax2291:datas> <ax2291:pageSize>1</ax2291:pageSize> <ax2291:totalPageCount>1</ax2291:totalPageCount> </ns:return> </ns:queryResponse> </soapenv:Body> </soapenv:Envelope>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlStr); XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);//这一步实例化一个xml命名空间管理器 nsMgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); nsMgr.AddNamespace("ns", "http://release.service.das.jeaw.com"); nsMgr.AddNamespace("ax2293", "http://release.service.das.jeaw.com/xsd"); nsMgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); nsMgr.AddNamespace("ax2291", "http://pojo.servgen.das.jeaw.com/xsd"); XmlNode nodeGZYXM = doc.SelectSingleNode("soapenv:Envelope/soapenv:Body/ns:queryResponse/ns:return/ax2291:datas/ax2293:GZYXM_1", nsMgr); Console.WriteLine(nodeGZYXM.InnerText); //将输出 吕姗姗 XmlNode nodeId = doc.SelectSingleNode("soapenv:Envelope/soapenv:Body/ns:queryResponse/ns:return/ax2291:datas/ax2293:ID_1/@xsi:nil", nsMgr); //@xsi:nil表示获取Attribute而不是node节点 Console.WriteLine(nodeId.InnerText); //将输出 true |
from:https://www.cnblogs.com/duanjt/p/11654173.html
View Details