脚本语言编程
薛定谔之死猫
生当作人杰,死亦为鬼雄。
展开
-
Ruby递归目录文件的又一种方法
经常派得上用场,记录一下。原创 2024-05-01 00:55:10 · 925 阅读 · 0 评论 -
Ruby递归查找目录中特定类型文件
Ruby脚本递归查找目录下的文件原创 2023-01-05 12:05:44 · 164 阅读 · 0 评论 -
使用MAME的Lua引擎替代cheat的XML文件
老是写一次忘一次,每次都去找C++代码才能回忆起来,现在直接在这里记录备忘了。Cheat的XML如下:<mamecheat version="1"> <cheat desc="Always winning hand"> <script state="run"> <action>maincpu.pw@100680=3030</action> <action>maincpu.pd@100682原创 2021-01-12 01:48:54 · 861 阅读 · 0 评论 -
使用Ruby的FTP组件将远程目录克隆到本地
这里以获取XFS标准文档为例,直接将远程的XFS目录克隆到本地的t子目录。#encoding:utf-8require 'net/ftp'HOST='ftp.cenorm.be'REMOTE_PATH='/CEN/WhatWeDo/Fields/ICT/eBusiness/WS/XFS'LOCAL_PATH='D:/Documents/WOSA/t'def fetch_file(ftp,path) $stderr.puts 'get "' + path + '"' ftp.g原创 2020-10-13 11:55:17 · 275 阅读 · 0 评论 -
使用Chrome Console批量下载同类文件
最近需要从https://www.cen.eu/下载标准文件,使用吸血雷下载全部链接再选取类型的方法居然被掐断了,决定使用Chrome Console执行JavaScript的方法快速解决,从网上搬来一大神的代码稍加修改,开始下载时提示是否下载多个文件确认即可,文件容量大的话把时间参数设置大一些,不然还是有可能会被服务端掐了。(function () { var aa=$$("a"); var arr=[]; for(var i=0;i<aa.length;i++){原创 2020-09-30 11:39:08 · 1557 阅读 · 1 评论 -
中文自定义字符字形的处理
在进行应用系统维护的过程中,因需要不同行业间交互数据,在系统和提供商纷杂的情况下,难免会出现信息处理方式不对称的尴尬。最近遇到一个比较具体的自定义冷僻字的字形问题,现处理的差不多的情况下,也该总结一下做个备忘,这里就流水账的方式记录一下解决和测试的方法。 首先需要面对的是五花八门的中文字符编码,这里就引出几个国标文件,不一定都需要理解,大概看一下有个概念就可以了。GB 2312-1980 信息交换用汉字编码字符集 基本集GB 13000-2010 信息技术 通用多八位编码字...原创 2020-09-06 02:13:04 · 972 阅读 · 0 评论 -
Ruby解析加工Word文档的表格
和非格式化文本打交道需要相当强大的心脏,顺便抱怨一下歪果仁写的文档也有乱七八糟的,而且是随商业产品发布的。特此记录备忘。#encoding:utf-8require 'win32ole'WIN32OLE.codepage = WIN32OLE::CP_UTF8FilePath='plugindoc.docx'FuncTypeOne = { 'Plug-In Primary functions'=>[], 'Plug-In Event functions'=>[原创 2020-07-19 21:03:29 · 227 阅读 · 0 评论 -
Ruby常规编码加解密记录
记不住每次都翻文档比较繁琐,在此集中记录下线索。#encoding:utf-8#Hashrequire 'digest'md5 = Digest::MD5.newmd5.update 'message 1'md5 << 'message 2'puts md5.hexdigestsha256 = Digest::SHA256.newputs sha256.digest 'message'puts sha256.hexdigest 'message'puts sha25原创 2020-07-12 01:44:30 · 417 阅读 · 0 评论 -
使用Chrome的Console获取某站学术文档粗糙版本
有时候使用搜索引擎找到一些有用但不关键的学术文档,非商业目的需要下载下来参考一下,又因囊中羞涩付不起相对昂贵的费用,可以用类似以下的方法来应急。首先使用Chrome打开网站,定位到免费的文档,并将文档展示为最大化(为了尽可能清晰),F12打开Chrome开发视图,在控制台输入类似的代码获取图片的原始文件数据。(function (console) { console.export_canvas_base64 = function (page_count, name_pattern) {原创 2020-07-12 00:31:12 · 218 阅读 · 1 评论 -
Ruby中对应PHP的hex2bin和bin2hex方法
今天观摩了网上PHP大师破译注册表Navicat连接中保存的数据库密码,现实中也遇到了这样的尴尬,由于本地没有PHP运行环境,在线执行的方法毕竟把密码POST出去了,感觉欠妥,打算使用其它语言移植一段代码备日后使用。在移植过程中遇到Ruby没有现成的标题中提到的两个方法,而需要使用pack和unpack来完成工作,恰巧这两个方法的官方文档描述是非常晦涩的,不动手尝试完全不能理解它在说什么,下面放上一段加密和解密的方法,然后在记录下pack和unpack在处理十六进制字符串时的用法。#encoding:原创 2020-06-25 23:38:13 · 424 阅读 · 1 评论 -
如何使MinGW编译的可执行程序摆脱libwinpthread、libgcc_s_seh、libstdc++依赖
在Windows下用C++编写Ruby扩展,原生编译工具使用的是GCC,连接得到动态库直接或间接依赖于libstdc++-6.dll、libgcc_s_seh-1.dll和libwinpthread-1.dll,这在运行时是极大的障碍。通过探索,可以使用GCC的编译连接开关回避它:-Wl,-Bstatic -lstdc++ -lgcc_eh -lpthread -Wl,-Bdynamic...原创 2019-11-03 23:46:27 · 4938 阅读 · 4 评论 -
24点计算器Python脚本
使用Python脚本枚举24点答案,去除冗余括号,效率没有Ruby版本的好,记录之。#coding=gbkimport itertools as ittimport renums = [5, 6, 2, 7]ops = ['+', '-', '*', '/']levels = [0, 1, 2]def simplest(exprstr): patterns = [re.co原创 2016-07-24 00:15:50 · 1535 阅读 · 0 评论 -
Ruby递归删除空目录
#encoding:gbkdef kill_empty_dir(dir) dir.each do |filename| next if filename == '.' or filename == '..' if File.directory?(dir.path + File::SEPARATOR + filename) kill_empty_dir(Dir.new(dir.p原创 2016-11-15 20:18:52 · 818 阅读 · 0 评论 -
Ruby解析Windows PE文件
纯属业余分析一些应用程序的需要,特意去了解了下Windows下的PE文件格式,相比MSDN的其它内容,PE文件规范文件的部分描述算是相当的晦涩了。好记性不如烂笔头,搭好框架后就此记录,以便日后抄袭。代码解决了导入和导出的部分,其余部分日后再作添加和完善,可以继续利用Ruby动态语言的优势、魔幻般的语法糖和强悍的元编程能力构造更便利的代码。#encoding:gbkrequire "dele原创 2016-10-26 23:17:07 · 1036 阅读 · 1 评论 -
Windows下编译Ruby源代码
为了在Windows下粘合Ruby扩展到应用程序,需要重新编译Ruby源代码,以便使用Visual Studio进行扩展的开发。使用第三方一键安装的版本开发工具使用的是Mingw下的GCC,无法满足需要。源代码使用官网提供的源码包,直接从源代码库下载的源码需要额外的工具,代码包中有相关说明。由于是用VS进行编译,缺省的Native包中gdbm和readline无法找到VS能原创 2016-10-12 19:39:08 · 2806 阅读 · 0 评论 -
Emacs+Cedet+Ecb折腾日记
感谢http://stackoverflow.com/,感谢https://github.com/Cedet和Ecb,还有Emacs的版本各种不兼容,中文站点上的攻略试了个遍,不管用Emacs版本为Windows 7下运行的GNU Emacs 24.5.1 (i686-pc-mingw32)Cedet为http://git.code.sf.net/p原创 2016-09-08 14:26:05 · 2394 阅读 · 0 评论 -
emacs 使用 etags 阅读代码
1 生成 TAGS使用etags前要先生成TAGS文件。在很多网上的资料中[1][2]都是使用这样一条命令find . -name "*.[chCH]" -print | etags -管道前是一个查找文件的命令,但是我搞不懂etags 后的 - 是什么意思。请知道的同学告诉我,谢谢了。受到参考文献[3]的启发,想出了两个更容易理解的命令,我要阅读的代码中只有 .c .h转载 2016-09-21 10:44:47 · 2593 阅读 · 0 评论 -
使用MAME的Lua引擎修改内存数据
简要记录之。执行生产mame.inimame64.exe -createconfig修改参数,对应到自己的目录下的启动脚本文件autoboot_script boot\boot.luaboot.lua的内容require('lfs')local function test_boot_script(path) print(path .. " test原创 2017-02-10 01:02:46 · 2622 阅读 · 0 评论 -
在Windows环境中使用MSYS2编译Ruby源代码
Ruby源代码在Windows下可以使用Visual C++顺利编译,可惜少gdbm和readline两项native扩展,没有直接在Visual C++中处理的案例,在编写Ruby代码的过程中,一些实验性的语句还是需要在irb工具中执行,少了readline的支持,irb难用到令人怀疑人生,于是仿照RubyInstaller官网的描述,自己进行编译,寻求readline的支持。RubyIntal...原创 2018-04-12 14:11:57 · 2036 阅读 · 0 评论 -
解决ruby安装mysql的gem包native编译错误
mysql的gem包年久失修,项目的作者明确表示不再维护该包的代码,等待接盘侠。然而习惯了使用ruby的dbi数据库操作,dbi的mysql驱动dbd-mysql依赖于mysql的gem包,因此还是绕不过去,只有硬着头皮把它改了。错误的表现:在安装dbd-mysql的gem包时,去解决依赖安装mysql的gem包,结果native代码编译报错,提示rb_cFixnum变量没有定义。错误...原创 2018-08-30 11:24:50 · 421 阅读 · 0 评论 -
快速安装rubyinstaller-devkit
1、从https://rubyinstaller.org/downloads/下载Ruby+Devkit的安装包;2、双击开始安装,选择全部安装;3、在安装结束时,去除ridk install的选项,因为从默认的原去下载几百兆会非常缓慢;4、查找Ruby安装目录下的msys64\etc\pacman.d,编辑更新源:Server = https://mirrors.tuna.tsi...原创 2018-09-11 16:28:19 · 5947 阅读 · 2 评论 -
Windows 10下在Ruby 2.5.1 with Devkit中安装mysql-2.9.1.gem
1、Windows中加工数据有时候需要借助关系数据库,而使用Ruby DBI操作MySQL是最快捷的办法;2、mysql-2.9.1已经停止维护,随着Ruby的升级需要变更一些内容才能通过本地代码的编译;3、下载mysql-2.9.1.gem,链接在这里https://rubygems.org/downloads/mysql-2.9.1.gem;4、将下载的gem包解包到本地目录;...原创 2018-09-12 14:49:46 · 1041 阅读 · 0 评论 -
Visual Studio Code中安装go语言插件
在vscode中安装go语言插件的过程中,提示工具不完整,之后点击全部安装按钮但是出错,通过搜索得到一些方法,但还是行不通。主要存在两个问题,首先golang.org被拦在墙外,借了梯子后依然无法成功安装,分析得出是在请求golang.org获取工具代码时出现了重定向,go命令并没有检测出这一变化,导致包括微软妹子写的工具也因依赖关系安装失败。解决的办法是顺藤摸瓜,通过请求安装失败提示的URL...原创 2018-09-14 01:50:41 · 3665 阅读 · 0 评论 -
按依赖递归下载RubyGems的离线安装包
工作环境无法连接外网,在进行环境准备时经常遇到离线安装Ruby的gem包的情况,而包之间存在严苛的依赖,还需要注意版本,手工处理非常不方便,幸好bundle能帮忙处理这一问题。比如需要离线安装rubocop的0.59.1版本,在能连接外网的主机上新建一个目录,比如offlinegems。mkdir offlinegems在此目录下新建Gemfile的文本文档,加入如下内容,这里使用清...原创 2018-09-19 15:59:07 · 1070 阅读 · 1 评论 -
Python使用SocksiPy使paramiko库通过Socks代理SSH连接服务器
近期有使用Python通过SSH连接服务器进行维护的需求,通过搜索发现使用paramiko库的居多,因此决定使用该库。经过短时间的使用后发现paramiko没有如Ruby的net/ssh一般很方便使用Socks代理的方法(可能有,出于自己初学的水平没有发现吧,从Agent相关的类发现有一些转发的痕迹,看代码依赖于具体的平台,而且还访问到环境变量,并且不确定能通过这些方法使用代理连接),希望只有寄托原创 2012-05-10 00:53:20 · 10703 阅读 · 0 评论 -
24点计算器Ruby脚本
找到的答案比网上的一些工具找到的个数要少,不过可能是臃肿的化简过程中剔除了,因此不保证解的个数正确,不过能找到至少存在解,记录之。#encoding:GBKrequire 'set'num = [9, 9, 9, 9]ops = ['+', '-', '*', '/']def simplest(expr) exprstack = Array.new exprstack.pus原创 2016-07-22 22:10:31 · 523 阅读 · 0 评论 -
拉取百度汉语的成语接龙脚本
成语不存在或期望的接龙长度超出可查询范围时会报错,不过凑合能找到部分接龙的成语,记录之。#encoding:GBKrequire 'net/http'require 'nokogiri'def get_alist(url) puts url $stdout.flush res = Net::HTTP.get_response(URI.parse(url)) doc = Nok原创 2016-07-22 22:13:11 · 1515 阅读 · 0 评论 -
Oracle正规表达式替换函数
原来也支持子表示之间的贪婪模式权衡,对比较特别的需求特别的有用,记录之。select orgcode, replace(orgcode, '-', '') orgcode_h, regexp_replace(replace(orgcode, '-', ''), '([0-9]+?)(([0]{2})+)$',原创 2016-04-14 14:58:32 · 449 阅读 · 0 评论 -
使用Pyinstaller打包Python脚本
Python打本地包工具很多,网上资料也不少,自己经常碰到需要打成独立包的需求,因此选择了Pyinstaller,只是Windows下如果Python的版本大于2.6就需要Pywin32支持(类Unix下工具本身就很全,打单个包执行的需求不强烈),执行的过程大致如下,旨在在记录,日后来此处复制。 准备就需要后执行如下命令序列: Configure.py MakeSpe原创 2012-07-17 13:20:52 · 733 阅读 · 0 评论 -
Oracle DBA日常任务——查杀死锁
Oracle的锁分为两大类,一类就是极为常见的DML事务锁,是为保障数据库系统数据一致性而存在的锁,其中分共享锁、排它锁等,不同的DBMS对这类锁的实现参差不齐;另一大类锁就是DDL级锁,这类锁一般出现在开发或发布时候,一旦出现比较棘手。下面就两类所的锁查找和灭杀做一个阐述。 1、查找DML锁select p.spid, s.sid, s.serial#,原创 2012-07-03 11:17:44 · 855 阅读 · 0 评论 -
Oracle计算正常公休或工作日的PL/SQL函数
记录如下create or replace function f_jg_sxts(date_begin in number, date_end in number default to_char(sysdate,原创 2012-06-21 16:52:58 · 6110 阅读 · 0 评论 -
一个用作撕碎字符串的PL/SQL工具函数(Oracle 10g)
create or replace function f_tool_splt2arr(p_src in varchar2, p_sub in varchar2 default ',', p_regflag i原创 2012-06-20 19:12:37 · 689 阅读 · 0 评论 -
Lua语言string对象的split方法实现
function split(str,delim) local i,j,k local t = {} k = 1 while true do i,j = string.find(str,delim,k) if i == nil then table.insert(t,string.sub(str,k)) return t end table.insert(t,s原创 2012-05-14 13:42:58 · 1799 阅读 · 0 评论 -
Python中使用正规表达式实现查找和匹配串
Python的正规表示通过标准库re模块实现,其中包括两种基本操作:1、使用正规表达式匹配整串;2、使用正规表达式查找子串。对应到正规表达式的操作,有两个对象需要涉及,re.RegexObject和re.MatchObject,这两个对象分别代表正规表示本身和匹配信息,对象有一组方法用于设置匹配选项、编译、查找、匹配、查看分组匹配情况等,同时提供有模块级别的对应方法,只是参数中要把模式原创 2012-05-10 15:33:55 · 1554 阅读 · 0 评论 -
使用Python库Paramiko连接SSH服务器
Ruby下有net/ssh方便连接SSH服务端,在Python下是否也存在类似的库呢?经过简单的搜索发现使用paramiko库的较多,于是乎尝试一下。 首先使用easy_install pycrypto安装pycrypto库作为ssh库的依赖,然后执行easy_install paramiko安装这个库。 编写如下代码进行测试:import paramikoif _原创 2012-05-08 16:04:01 · 1668 阅读 · 0 评论 -
Python使用Httplib访问Web站点
最简单的用法:import httplib2import libxml2http = httplib2.Http()response,content=http.request('http://www.google.com/ig/api?hl=en_us&weather=kunming','GET')doc = libxml2.parseDoc(content)print docd原创 2012-05-08 21:47:36 · 769 阅读 · 0 评论 -
MySQL-python在Windows环境下的编译安装
MySQL-python是Python语言访问MySQL数据库的扩展,和Ruby或Perl的DBI类似,是便捷访问数据库的方式之一。MySQL-python的项目地址为http://sourceforge.net/projects/mysql-python/files/,下载文件后在README中发现惊人的几句话:I don't do Windows. However if someone p原创 2012-04-21 14:12:02 · 1164 阅读 · 0 评论 -
使用Visual Studio 2010编译wxPython-2.8.12.1
为了解决C运行时冲突的问题,决定在本地编译使用Visual Studio 2010编译wxPython,话不多说,开始处理。 1、首先下载wxPython-2.8.12.1源码包,下载地址为http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.12.1.tar.bz2; 2、解压源码包至本地,在这里解压到D:\wxPython原创 2012-05-04 14:01:40 · 2202 阅读 · 1 评论 -
使用Visual Studio 2010本地构建libxml-python
由于要使用libxml-python,官方下载的Windows二进制发布安装包会向系统添加反安装信息,和经典Windows应用程序混为一堂,不方便管理,因此决定自己在本地进行编译,加之这样可以部分避开MinGW中转。MinGW在本机的表现实在令人蛋疼,部分应用效率之差都不敢恭维啊。在构建过程中遇到了一些问题,部分问题发现是自己再4年前的项目应用中解决过的,由于当时没留下记录,所有的图破又重走一遍,原创 2012-05-02 03:46:55 · 1846 阅读 · 0 评论 -
Visual Studio 2010编译Python扩展程序报error: Unable to find vcvarsall.bat
该错误由于Python扩展编译工具在注册表找不到Visual Studio 2010注册信息造成,编辑“\Lib\distutils\msvc9compiler.py”,找到 toolskey = “VS%0.f0COMNTOOLS” % version,直接修改为 toolskey = ”VS100COMNTOOLS”解决,记录之。原创 2013-11-20 23:55:01 · 1304 阅读 · 0 评论