精华内容
下载资源
问答
  • 自制小工具 StringBuilder生成器 自已用这个小工具快两年了,中间增加过一点功能,原来在用sqlserver做表拼接或视图时会产生密密的sql语句,这个字符串的sql语句直接拷贝到c#中是不行的,因此我就做了这...

    自已用这个小工具快两年了,中间增加过一点功能,原来在用sqlserver做表拼接或视图时会产生密密的sql语句,这个字符串的sql语句直接拷贝到c#中是不行的,因此我就做了这个工具,用法比较简单,我就上张图

    程序地址:

    http://www.maolz.com/Upload/Convert.zip

    posted on 2008-08-03 22:04 lexus 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lexus/archive/2008/08/03/1259446.html

    展开全文
  • 自制小工具-格式化json

    千次阅读 2020-11-29 10:50:03
    后端总是要返回一些json响应数据,这些数据不格式化的话看着不顺眼,用网上的格式化工具又觉得是内部的敏感数据,万一被收集会带来不安全的因素,所以就想着自己做一个,一种是用上篇博客说的ubuntu 格式化json这种...

    目录

    背景:

    实现:

    使用方式:

    界面截图:


    背景:

    后端总是要返回一些json响应数据,这些数据不格式化的话看着不顺眼,用网上的格式化工具又觉得是内部的敏感数据,万一被收集会带来不安全的因素,所以就想着自己做一个,一种是用上篇博客说的 ubuntu 格式化json 这种,这种可以使用命令去格式化,如果在shell里面不想切出来就可以用这种方式,如果在外面在切换成shell,不方便,故有了下面一种解决方式。

    实现:

    不使用第三方的js,纯html+js实现。

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8"> 
    	<title>格式化json</title>
    </head>
    <body>
    
    <div>
    <textarea rows="15" cols="200" id="inputJson" >
    
    </textarea>
    </br>
    <input type="button" onclick="parseJson(false)" value="格式化">
    <input type="button" onclick="parseJson(true)" value="压缩">
    <input type="button" onclick="copy()" value="复制代码">
    <pre id="result" style="border:#ddcbc2 1px solid ; margin:5px 5px auto 0">
     
    </pre>
    
    </div>
    
    </body>
    
    <script>
    function copy() {
    
       selectText("result")
       document.execCommand("Copy"); // 执行浏览器复制命令
       alert("已复制好,可贴粘");
    }
    
    function selectText(element) {
            var text = document.getElementById(element);
            if (document.body.createTextRange) {
                var range = document.body.createTextRange();
                range.moveToElementText(text);
                range.select();
            } else if (window.getSelection) {
                var selection = window.getSelection();
                var range = document.createRange();
                range.selectNodeContents(text);
                selection.removeAllRanges();
                selection.addRange(range);
            } else {
                alert("none");
            }
        }
    
    function parseJson(isCompress) {
      var json = document.getElementById("inputJson").value;
      if(isCompress){
        document.getElementById("result").innerHTML=format(json,true)
      }
      else{
        document.getElementById("result").innerHTML=format(json)
     }
    }
    
    function format(txt,compress/*是否为压缩模式*/){/* 格式化JSON源码(对象转换为JSON文本) */  
            var indentChar = '    ';   
            if(/^\s*$/.test(txt)){   
                alert('数据为空,无法格式化! ');   
                return;   
            }   
            try{var data=eval('('+txt+')');}   
            catch(e){   
                alert('数据源语法错误,格式化失败! 错误信息: '+e.description,'err');   
                return;   
            };   
            var draw=[],last=false,This=this,line=compress?'':'\n',nodeCount=0,maxDepth=0;   
               
            var notify=function(name,value,isLast,indent/*缩进*/,formObj){   
                nodeCount++;/*节点计数*/  
                for (var i=0,tab='';i<indent;i++ )tab+=indentChar;/* 缩进HTML */  
                tab=compress?'':tab;/*压缩模式忽略缩进*/  
                maxDepth=++indent;/*缩进递增并记录*/  
                if(value&&value.constructor==Array){/*处理数组*/  
                    draw.push(tab+(formObj?('"'+name+'":'):'')+'['+line);/*缩进'[' 然后换行*/  
                    for (var i=0;i<value.length;i++)   
                        notify(i,value[i],i==value.length-1,indent,false);   
                    draw.push(tab+']'+(isLast?line:(','+line)));/*缩进']'换行,若非尾元素则添加逗号*/  
                }else   if(value&&typeof value=='object'){/*处理对象*/  
                        draw.push(tab+(formObj?('"'+name+'":'):'')+'{'+line);/*缩进'{' 然后换行*/  
                        var len=0,i=0;   
                        for(var key in value)len++;   
                        for(var key in value)notify(key,value[key],++i==len,indent,true);   
                        draw.push(tab+'}'+(isLast?line:(','+line)));/*缩进'}'换行,若非尾元素则添加逗号*/  
                    }else{   
                            if(typeof value=='string')value='"'+value+'"';   
                            draw.push(tab+(formObj?('"'+name+'":'):'')+value+(isLast?'':',')+line);   
                    };   
            };   
            var isLast=true,indent=0;   
            notify('',data,isLast,indent,false);   
            return draw.join('');   
        } 
    
    
    </script>
    </html>
    

    使用方式:

    复制以上代码,新建一个 xxx.html,粘贴进去,用浏览器打开即可!

    界面截图:

     

     

    其它:谷歌浏览器安装json格式化插件

    效果如下:

    插件下载地址:https://github.com/gildas-lormeau/JSONView-for-Chrome

     

    展开全文
  • 自制实用小工具】——1、Xpath解析器 由于js脚本的影响,我们请求得到的数据常常与网页显示的数据不一样。而chrome插件xpath helper不能调试本地网页,于是有了制造一个xpath解析器的想法。(粗略尝试了一下,没有...

    【自制实用小工具】——1、Xpath解析器

    由于js脚本的影响,我们请求得到的数据常常与网页显示的数据不一样。而chrome插件xpath helper不能调试本地网页,于是有了制造一个xpath解析器的想法。(粗略尝试了一下,没有问题,大家要是发现bug的话记得评论告诉我啊~)
    个人博客地址:https://www.asyu17.cn
    工具:

    1. PyQt5 库
    2. Qt designer
    3. sys 库
    4. requests 库
    5. lxml 库

    步骤:

    (一)用Qt designer设计界面

    界面

    (二)将.ui文件转换为.py文件

    有关(一)、(二)部分的教程可以参考:https://www.jb51.net/article/170810.htm

    (三)链接按钮

    将以下代码添加到def setupUi后面

     # 设置按钮控件
            self.button_Get_html.clicked.connect(self.Button_Get_Html)
            self.button_Xpath_Parse.clicked.connect(self.Button_Xpath_Parse)
    

    (四)按钮事件

    以下分别是按钮Get Html和按钮 Xpath Parse 的代码:

        def Button_Get_Html(self):
    
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3970.5 Safari/537.36'
            }
            url = self.text_Web_Site.toPlainText().strip()
            if len(url):
                if url[0] == 'w':
                    url = 'http://' + url
                session = requests.session()
                try:
                    res = session.get(url=url, headers=headers, verify=False).content.decode('utf-8','ignore')
                    # 在text_HTML_Code中输出返回内容
                    self.text_HTML_Code.setPlainText(res)
                except Exception as e:
                    self.text_HTML_Code.setPlainText(e.__str__())
            else:
                self.text_HTML_Code.setPlainText('网址不能为空!')
    
        def Button_Xpath_Parse(self):
            self.text_Result.document().clear()
    
            xpath_syntax=self.text_Xpath_Syntax.toPlainText()
            html_code=self.text_HTML_Code.toPlainText()
            html=etree.HTML(html_code)
            try:
                results = html.xpath(xpath_syntax)
                num = 0
                for result in results:
                    self.text_Result.append('-'*60+'这里是第 '+str(num)+' 个')
                    # result 有两种格式
                    try:
                        self.text_Result.append(result.text)
                    except Exception:
                        self.text_Result.append(result)
                    num=num+1
            except Exception as e:
                self.text_Result.setPlainText(e.__str__())
    

    (五)初始化界面

    if __name__ == '__main__':
        # 每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
        app = QtWidgets.QApplication(sys.argv)
        # QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。
        w = QtWidgets.QWidget()
        ui = Ui_Asyu17_Xpath_Helper()
        ui.setupUi(w)
        w.show()
    
        # 系统exit()方法确保应用程序干净的退出
        # 的exec_()方法有下划线。因为执行是一个Python关键词。因此,exec_()代替
        sys.exit(app.exec_())
    

    结果展示:

    测试无问题后,可使用pyinstaller将代码编译成可执行文件~
    结果展示
    代码:

    from PyQt5 import QtCore, QtGui, QtWidgets
    import sys
    import requests
    from lxml import etree
    
    requests.packages.urllib3.disable_warnings()
    
    class Ui_Asyu17_Xpath_Helper(object):
        def setupUi(self, Asyu17_Xpath_Helper):
            Asyu17_Xpath_Helper.setObjectName("Asyu17_Xpath_Helper")
            Asyu17_Xpath_Helper.resize(969, 905)
            self.button_Xpath_Parse = QtWidgets.QPushButton(Asyu17_Xpath_Helper)
            self.button_Xpath_Parse.setGeometry(QtCore.QRect(830, 860, 75, 31))
            self.button_Xpath_Parse.setObjectName("button_Xpath_Parse")
            self.label = QtWidgets.QLabel(Asyu17_Xpath_Helper)
            self.label.setGeometry(QtCore.QRect(10, 10, 71, 16))
            self.label.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.label.setScaledContents(False)
            self.label.setObjectName("label")
            self.label_2 = QtWidgets.QLabel(Asyu17_Xpath_Helper)
            self.label_2.setGeometry(QtCore.QRect(490, 10, 51, 16))
            self.label_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.label_2.setScaledContents(False)
            self.label_2.setObjectName("label_2")
            self.label_3 = QtWidgets.QLabel(Asyu17_Xpath_Helper)
            self.label_3.setGeometry(QtCore.QRect(20, 860, 91, 31))
            self.label_3.setObjectName("label_3")
            self.text_Xpath_Syntax = QtWidgets.QTextBrowser(Asyu17_Xpath_Helper)
            self.text_Xpath_Syntax.setGeometry(QtCore.QRect(110, 860, 681, 31))
            font = QtGui.QFont()
            font.setFamily("Arial")
            font.setPointSize(13)
            self.text_Xpath_Syntax.setFont(font)
            self.text_Xpath_Syntax.setReadOnly(False)
            self.text_Xpath_Syntax.setObjectName("text_Xpath_Syntax")
            self.button_Get_html = QtWidgets.QPushButton(Asyu17_Xpath_Helper)
            self.button_Get_html.setGeometry(QtCore.QRect(830, 820, 75, 31))
            self.button_Get_html.setObjectName("button_Get_html")
            self.text_Web_Site = QtWidgets.QTextBrowser(Asyu17_Xpath_Helper)
            self.text_Web_Site.setGeometry(QtCore.QRect(110, 820, 681, 31))
            font = QtGui.QFont()
            font.setFamily("Arial")
            font.setPointSize(13)
            self.text_Web_Site.setFont(font)
            self.text_Web_Site.setReadOnly(False)
            self.text_Web_Site.setObjectName("text_Web_Site")
            self.label_4 = QtWidgets.QLabel(Asyu17_Xpath_Helper)
            self.label_4.setGeometry(QtCore.QRect(20, 820, 91, 31))
            self.label_4.setObjectName("label_4")
            self.layoutWidget = QtWidgets.QWidget(Asyu17_Xpath_Helper)
            self.layoutWidget.setGeometry(QtCore.QRect(10, 30, 951, 781))
            self.layoutWidget.setObjectName("layoutWidget")
            self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
            self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
            self.horizontalLayout.setObjectName("horizontalLayout")
            self.text_HTML_Code = QtWidgets.QTextBrowser(self.layoutWidget)
            self.text_HTML_Code.setEnabled(True)
            font = QtGui.QFont()
            font.setFamily("Arial")
            font.setPointSize(12)
            self.text_HTML_Code.setFont(font)
            self.text_HTML_Code.setMouseTracking(False)
            self.text_HTML_Code.setTabletTracking(False)
            self.text_HTML_Code.setReadOnly(False)
    
            self.text_HTML_Code.setObjectName("text_HTML_Code")
            self.horizontalLayout.addWidget(self.text_HTML_Code)
            self.text_Result = QtWidgets.QTextBrowser(self.layoutWidget)
            font = QtGui.QFont()
            font.setFamily("Arial")
            font.setPointSize(12)
            self.text_Result.setFont(font)
            self.text_Result.setReadOnly(False)
    
            self.horizontalLayout.addWidget(self.text_Result)
    
            self.retranslateUi(Asyu17_Xpath_Helper)
            QtCore.QMetaObject.connectSlotsByName(Asyu17_Xpath_Helper)
    
            # 设置按钮控件
            self.button_Get_html.clicked.connect(self.Button_Get_Html)
            self.button_Xpath_Parse.clicked.connect(self.Button_Xpath_Parse)
    
        def retranslateUi(self, Asyu17_Xpath_Helper):
            _translate = QtCore.QCoreApplication.translate
            Asyu17_Xpath_Helper.setWindowTitle(_translate("Asyu17_Xpath_Helper", "Asyu17 Xpath Helper"))
            self.button_Xpath_Parse.setText(_translate("Asyu17_Xpath_Helper", "Xpath Parse"))
            self.label.setText(_translate("Asyu17_Xpath_Helper", "HTML Code:"))
            self.label_2.setText(_translate("Asyu17_Xpath_Helper", "Result:"))
            self.label_3.setText(_translate("Asyu17_Xpath_Helper", "Xpath Syntax:"))
            self.button_Get_html.setText(_translate("Asyu17_Xpath_Helper", "Get Html"))
            self.label_4.setText(_translate("Asyu17_Xpath_Helper", "Web Site:"))
    
        def Button_Get_Html(self):
    
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3970.5 Safari/537.36'
            }
            url = self.text_Web_Site.toPlainText().strip()
            if len(url):
                if url[0] == 'w':
                    url = 'http://' + url
                session = requests.session()
                try:
                    res = session.get(url=url, headers=headers, verify=False).content.decode('utf-8','ignore')
                    # 在text_HTML_Code中输出返回内容
                    self.text_HTML_Code.setPlainText(res)
                except Exception as e:
                    self.text_HTML_Code.setPlainText(e.__str__())
            else:
                self.text_HTML_Code.setPlainText('网址不能为空!')
    
        def Button_Xpath_Parse(self):
            self.text_Result.document().clear()
    
            xpath_syntax=self.text_Xpath_Syntax.toPlainText()
            html_code=self.text_HTML_Code.toPlainText()
            html=etree.HTML(html_code)
            try:
                results = html.xpath(xpath_syntax)
                num = 0
                for result in results:
                    self.text_Result.append('-'*60+'这里是第 '+str(num)+' 个')
                    # result 有两种格式
                    try:
                        self.text_Result.append(result.text)
                    except Exception:
                        self.text_Result.append(result)
                    num=num+1
            except Exception as e:
                self.text_Result.setPlainText(e.__str__())
    
    if __name__ == '__main__':
        # 每一pyqt5应用程序必须创建一个应用程序对象。sys.argv参数是一个列表,从命令行输入参数。
        app = QtWidgets.QApplication(sys.argv)
        # QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。
        w = QtWidgets.QWidget()
        ui = Ui_Asyu17_Xpath_Helper()
        ui.setupUi(w)
        w.show()
    
        # 系统exit()方法确保应用程序干净的退出
        # 的exec_()方法有下划线。因为执行是一个Python关键词。因此,exec_()代替
        sys.exit(app.exec_())
    
    

    微信公众号:

    小术快跑

    展开全文
  • 自制 Python小工具 将markdown文件转换成Html文件

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 自制【CAN数据解析小工具

    万次阅读 多人点赞 2017-04-07 16:41:48
    一步步对照协议解析CAN数据的过程是痛苦的,为了以后方便调试,同时练练手,自制了这么个小工具,在此做个笔记。 上大学时学过一学期的vb6,那时是为了应付考试做了一个双色球选号的工具,当时VB6给我的感觉...
  • 如何开发一个自制题库答题考试的工具,可以自己输入题目创建考试的程序。自助出题,然后转发给别人考试,直接在手机里打开就可以答题,也可以将考卷分享到微信群里,群里的人同时还是答题。 可以自己自制出题考试...
  • VB / VBA 自制二维码小工具

    千次阅读 2013-11-15 16:38:46
    从网上找了一个二维码的控件,自己做了个小工具。   二维码可以把一串字符,不管长短(没试过最长能多长),做成二维码图片 现在的的智能手机软件很多都有扫描二维码的功能,比如微信、我查查,等等。   点击下面...
  • 自制imp/exp小工具

    2012-06-05 15:36:30
    VBS写的简单小工具 将下面两段代码保存为两个vbs文件,双击执行. 在弹出对话框中输入dmp文件名(不包含扩展名)即可.   imp.vbs inFileInName=inputbox("输入文件名。","Info") if inFileInName="" then msgbox...
  • 子域名查找自制脚本工具 资源已上传至☞:https://download.csdn.net/download/weixin_43510203/12543274
  • 自制StartUp宏病毒专杀小工具

    万次阅读 2011-12-25 00:17:31
    StartUp宏病毒,是我从公司里看到的。...可以根据此操作查看(Excel 2003为例):工具——宏——Visual Basic编辑器,打开后如果发现有“StartUp.xls”工作簿,或模块中有“StartUp*”之类的模块,或工作表中多
  • 本文使用的工具链是根据LFS指南编译而来,路径位于系统的/opt/...其它工具如ar、ld等加上前缀即为自制工具链的工具名称。 按照交叉编译的步骤编译DPDK。首先export工具链的目录: export PATH=$(PATH):/opt/lfs_...
  • 一、 前言 ...看到标题其实有人就要问了,自制2D的碰撞体。楼主你这是在炫技吗,Unity不是有自带的碰撞体和刚体可以用吗,为什么要吃饱了自己写一个?无奈!职场生活,装逼必死无疑。Unity的碰撞
  • 自制截图工具V1.0

    千次阅读 2016-12-04 20:51:32
    之前比较空闲,就尝试着做了个截图工具,功能还算实用。等以后有时间再研究V2.0。 这个项目都是用C语言做的,所以还算精简。 #include #include #include "resource.h" #pragma comment(lib,"winmm.lib") ...
  • 自制】前端html代码格式化小工具

    千次阅读 2016-07-06 12:39:22
    出于以上两点原因,我们需要对html代码进行格式化操作,手工格式化容易出错,费时费力,于是本人自制了一个为html代码自动进行格式化的小工具,功能如图所示。 具体源代码(附带说明注释)写在下面。 注:代码中js...
  • 没开多久的博客,排名总是显示 千里之外,受到 如何查看CSDN 排名 这篇文章的启发,结合最近学习的爬虫技术写了个小工具。 HTTPError: Forbidden
  • 文件提取导入/压缩工具友人汉化就喜欢玩手工自己手工提取-> 解压缩 -> 汉化->导入 我根据他的需求做出文件提取/导入/压缩工具 这个压缩工具 不能打包也就是不能制作那种完整压缩包(最后那个工具可以制作完整压缩包...
  • 自制小工具软件----鼠标取色器

    千次阅读 2010-04-28 23:39:00
    自已在制作网页时经常觉得有些站点的配色非常好,想用之!但不知其颜色值,查看源文件往往是引入外部CSS,要一个...于是就有了这个小工具----鼠标取色器!Exe及源文件下载:http://download.csdn.net/source/2297703 
  • 自制sql连接工具

    2010-07-08 18:51:00
    :main@echo off @mode con cols=50 lines=25title 吴万涛自制sql连接工具set a=0clsecho *****************echo * sql连接工具 *echo *****************echo.echo.echo 1.连接mysql数据库echo 2.退出echo 
  • 自制XE2100数据导出Excel的小工具

    千次阅读 2010-06-09 01:35:00
    这不是一项多么光荣的事情,毕竟我们以一种未经许可的方式获取了别人数据,尽管我们认为这些数据的所有权是我们的。...为了方便数据对比,将XE2100的数据读取出来进行分析研究,做成了这个小工具。将XE2100启动起来
  • 自制常用实用工具: 网址收藏软件

    千次阅读 2013-02-25 16:33:27
    网址收藏小工具 效果预览:   1:网址类别管理 操作方式:用鼠标右击网址类别,出现以下界面:   2:网址信息管理 2:可保存该网站的用户名和密码(支持多个用户名)
  • 最近在学unity自制一点游戏,当然我们这种主攻开发的,在学习阶段肯定只能借(tou)美工素材来学习了。 本来拿到了一系列的动画,但是是SVG的矢量图格式的,原生unity对SVG矢量图支持不太好,好像有插件能支持,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,064
精华内容 8,025
关键字:

自制小工具