只是想知道这里的人写了哪些小脚本/程序,可以帮助他/她的日常生活(又称与工作无关)。
任何事情,无论是否具有开创性。现在对我而言,这是一个小小的python脚本,可以根据给定的距离和时间来计算跑步速度。
只是想知道这里的人写了哪些小脚本/程序,可以帮助他/她的日常生活(又称与工作无关)。
任何事情,无论是否具有开创性。现在对我而言,这是一个小小的python脚本,可以根据给定的距离和时间来计算跑步速度。
Answers:
我的o
钥匙掉在笔记本电脑上了;因此,我编写了一个程序,将0
彼此之间200 MS内的两次击键替换为o
,0
而将彼此之间700 MS 内的两次击键替换为,0
而忽略了其余击键。因此我可以在更换键盘之前使用笔记本电脑。
哇; 我不知道这会这么受欢迎:p
至于如何-微软公开了一个很好的小API功能,称为Hooks。
使用那个钩子;我能够编写一个执行所需操作的“过滤器”(提示:如果您在回调窗口中返回1,则不会处理按键)。
我之所以知道这一点,实际上不是因为我在写键盘记录器,而是因为我前一段时间为Synergy写了一个程序微笑器。
是的。我确实编写了另一个程序,该程序将字母数字键与随机字母数字键互换,是的。这真的很有趣:D
我再也没有代码了,但也许我写的最有用的脚本是VBA中的(信不信由你)。我有一个烦人的同事,他的导火线如此短,以至于我称他为樱桃炸弹。当客户打来电话,然后站起来,开始在隔间墙上对我怒吼时,他常常会生气,这使我的生产力和士气丧命。
我总是打开Microsoft Excel。当他执行此操作时,我将alt键切换到Excel,然后在工具栏上出现一个带有樱桃炸弹图像的新图标。我会谨慎地单击该按钮,而不会发生任何事情。
但是,此后不久我会打个电话,说“是的,听起来不错。我最好看看。” 然后我起床,向樱桃炸弹道歉并走开。
发生的是,我们使用了NetWare,并且内置了原始消息传递系统。当我单击按钮时,一个小的VBA脚本会向我的朋友发送一条NetWare消息,告诉他们樱桃炸弹又在发生着,他们会请给我打电话。他从来没有想过:)
一个bash脚本被调出,以便如果我进入/a/very/deeply/nested/path/somewhere
并且想要“向上” N个目录,我可以输入:up N
#!/bin/bash
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
例如:
/a/very/deeply/nested/path/somewhere> up 4
/a/very>
NB by gmatt:
通过完成上面的出色工作,可以通过将以下内容放入您的bashrc中将其扩展为back函数:
function up( )
{
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
export MPWD=$P
}
function back( )
{
LIMIT=$1
P=$MPWD
for ((i=1; i <= LIMIT; i++))
do
P=${P%/..}
done
cd $P
export MPWD=$P
}
back
方法,因此,每当您用尽时都可以使用它来回轻松地移动。要使用它,请将其放在您的bashrc中(对狗屎格式感到抱歉):function up(){LIMIT = $ 1 P = $ PWD for((i = 1; i <= LIMIT; i ++))做P = $ P /。完成cd $ P导出MPWD = $ P}函数back(){LIMIT = $ 1 P = $ MPWD for((i = 1; i <= LIMIT; i ++))do P = $ {P%/ ..} done cd $ P export MPWD = $ P}
超级远程重置按钮。
的架超级特殊模拟硬件(backin的日子,当一个完整的VME机箱的房间做了不到你的GPU),关于世界的另一侧的用户将崩溃在清晨的。进入实验室并通过安全性花了一个小时。
但是我们不允许连接到超级特殊控制器或修改硬件。解决方案是使用epson点阵打印机的老式DEC工作站,将塑料尺子粘在进纸旋钮上,将打印机放在复位按钮附近。
以常规用户身份登录WS(不允许root用户,所有外部端口均已锁定),打印带有24条空白行的文档-旋转进纸旋钮,然后在超级专用硬件上按一下标尺上的标尺。
在Windows XP上,我设置了一个AT作业,每天在C:\下运行此命令。
dir /s /b * > dirlist.txt
这列出了C驱动器上所有文件的完整路径。然后,每当需要查找文件时,都可以使用findstr
。使用Windows资源管理器搜索比这更好,因为它允许在整个路径上进行正则表达式匹配。例如:
findstr ".jpg" dirlist.txt
findstr /i /r "windows.*system32.*png$" dirlist.txt
这是设置非常快速的解决方案,如果您发现自己安装了全新的Windows并且没有Internet连接,则非常有用。
如果需要在某些文件类型中搜索某种模式,请首先列出所有需要检查的文件,然后在其中搜索。例如,要查找翻转图像的Java或Python程序,可以执行以下操作:
findstr "\.java \.py" dirlist.txt > narrowlist.txt
findstr /i /r /f:narrowlist.txt "flip.*image"
我有一个Python脚本,在插入数码相机后会自动运行。
它将所有图片从相机的存储卡上复制下来,进行备份,然后将其上传到Flickr。
从Flickr上传文件的片段来自uploadr.py(我对此不以为然)。
这是用于卸载相机的Python代码。它通过SRCDIR递归,并在将图像复制到DESTDIR之前用日期和时间命名每个图像。
#!/usr/bin/python
import os
import string
import time
import shutil
###################################################
__SRCDIR__ = "/mnt/camera"
__DESTDIR__ = "/home/pictures/recent"
###################################################
def cbwalk(arg, dirname, names):
sdatetime = time.strftime("%y%m%d%H%M")
for name in names:
if string.lower(name[-3:]) in ("jpg", "mov"):
srcfile = "%s/%s" % (dirname, name)
destfile = "%s/%s_%s" % (__DESTDIR__, sdatetime, name)
print destfile
shutil.copyfile( srcfile, destfile)
###################################################
if __name__ == "__main__":
os.path.walk(__SRCDIR__, cbwalk, None)
我编写了一个Python脚本,该脚本可以转到我阅读的所有网络漫画,然后下载任何新漫画。我每天只运行一次,不需要单独访问每个站点,只需访问/ Comics /文件夹。;)
我的.cmd备份脚本。它每晚在我的服务器上运行,并根据工作日命名备份文件。整整一周的备份为我(和我的家人)节省了很多时间:
::备用参数: :: / V验证?(是/否) :: / R限制对所有者的访问?(是/否) :: / RS可移动存储?(是/否) :: / HC硬件压缩(开/关) :: / M备份类型(正常/复制/差异/增量/每日) :: / L日志文件类型(f / s / n) :: / D“描述” :: / J“职位名称” :: / F“文件名” 地方性 ::确保已安装网络驱动器 呼叫C:\ bat \ configs \ MapShares-home.cmd 回声 今天设置=%DATE:〜0.3% 如果%today%==周一设置为昨天= 0周日 如果%today%==昨天的星期二= 1星期一 如果%today%==昨天设置了周三= 2星期二 如果%today%==昨天设定为星期三= 3星期三 如果%today%== Fri昨天设置为= 4Thursday 如果%today%==昨天设置了星期六= 5星期五 如果%today%== Sun昨天已设置= 6Saturday 设置configsDir =%〜dp0 设置storePath = C:\ mybackups ::(例如:星期一C文件) 设置标题=%昨天%备份集 echo%DATE%%TIME%%title%>“%storePath%\%yesterday%_backup.log” 呼叫BackupConfigs.bat ::创建新的BKF文件 呼叫C:\ WINDOWS \ system32 \ ntbackup.exe备份^ “ @%configsDir%\ daily.bks” ^ / V:是/ R:否/ RS:否/ HC:关闭/ M正常/ L:s ^ / D“%title%” ^ / J“%title%.job” ^ / F“%storePath%\%yesterday%.bkf” ^ >>“%storePath%\%yesterday%_backup.log” echo%DATE%%TIME%已完成>>“%storePath%\%yesterday%_backup.log” 复制“%storePath%\%yesterday%.bkf”“ V:\ Backups \ NEPTUNE” 呼叫C:\ bat \ clean-temps.bat defrag -v C:>“%storePath%\%yesterday%_defrag.log” ::显示备份目录 开始/ D“ C:\ bat \ Backups \” checkbkf.bat 本地 ::暂停
我写了一个脚本,最终在团队中每天使用。当我以前在英特尔工作时,我们有一个与访问数据库对话的应用程序,以获取注册信息的转储(我从事验证芯片组的工作)。它将(从SQL查询中)获取此信息并将其转储到CSV文件,HTML文件和Excel文件中。整个过程耗时近2个小时。不是开玩笑。不知道为什么花了这么长时间。我们将在午餐前一个小时开始,先去吃午餐,然后再回来。
我认为必须有一种更好的方法来做到这一点。我与维护注册表数据库并从中获取SQL代码的团队进行了交谈。然后,我编写了一个perl脚本,该脚本捕获数据并将其输出为CSV,HTML和Excel格式。运行?大约1-2秒。速度有了很大的提高。
2006年在伊拉克部署时,我还写了一些剧本(我在国民警卫队服役9年-12月退役)。我们使用了这个名为ULLS-G(单位级物流系统-地面)的旧应用程序,该应用程序是用ADA编写的,最初是在DOS上运行的。他们在命令外壳中对其进行了充分的破解,使其可以在Windows XP上运行。该系统没有鼠标界面。一切都通过键盘完成,没有批处理功能。假设您要为所有车辆操作员打印许可证?嗯...我们部队有150名士兵,所以花了很长时间。假设每个人都拥有使用新车的资格,而您想将其添加到每个人的操作员资格中?您必须一一完成。
我能够找到SAGE数据库的ODBC驱动程序(使用了ULLS-G),因此我编写了能够与SAGE数据库对话的perl脚本。事情花了一个多小时,现在只花了几秒钟。我还使用了脚本和驱动程序进行报告。我们必须每天早晨报告到营的所有信息。其他单位每天早晨会用手写方式将信息写入。我整理了一个Excel宏,该宏使用相同的驱动程序进行通信,并与SAGE数据库通信,并以这种方式更新了Excel电子表格。这是最复杂且唯一的我编写过 Excel宏。它获得了回报,因为他们授予了我“陆军表彰奖章”。是的,我因撰写Perl脚本而在军中获得了一枚奖章:)有多少人可以这么说?;)
我是私人飞行员。我编写了一些脚本,这些脚本可从Aviationweather.gov获取当地机场的天气信息。它们对于快速回答“今天是否是美好的一天?”这一问题非常有用。
一个Greasemonkey脚本,从游戏网站Kotaku.com上删除了明显的愚蠢[*]评论。
[*]如常见的拼写错误,全大写字母,过度使用“ LOL”和类似的启发式方法所标识。
线程化的HTML抓取工具,可从网站上下载所有适用于系列/电影的字幕,这很难使用(您必须在搜索后点击4次才能进入下载页面,才能显示更多广告)。现在,我只输入搜索条件,然后按下载。
快速且肮脏的Python脚本,每5秒钟对google.com的DNS进行一次查找,如果成功,则会发出一声哔声,如果失败,则会发出两次哔声。
我写这篇文章的时候,我不得不住在一个高度脆弱的家庭网络中。即使当我第一次头顶穿过房间的桌子下面时,我的双手也充满了网络电缆和手电筒,它使我可以立即知道网络的状态。
从几个月前我在博客中发布的内容,到现在,我已经从一个我认为很酷的想法变成了我最近记忆中最好的小技巧之一。我在这里完整引用:
==================
我花了很多时间在bash上。对于刚起步的人,bash是一个可以在大多数UNIX机器上找到的系统,而且,幸运的是,这里有一些Windows和每台Mac。乍一看,它只不过是命令行界面,因此对于大多数用户来说,他们早已忘记了这种过时的东西,这使大多数用户无法理解。
我几乎全力以赴。我从命令行阅读了我的电子邮件,这就是为什么我避开了标记的电子邮件。我浏览目录,编辑文件,进行日常源代码校验和交付,搜索文件,搜索文件内部,重新启动计算机,甚至偶尔从命令行浏览网页。bash是我数字生活的灵魂。
麻烦的是,我倾向于一次打开大约6个bash窗口。今天,在工作中,我有一台运行Web服务器,另一台运行数据库,第三,第四和第五次编辑不同的文件,而第六次正在遍历我的机器,试图记录系统上每个文件的名称。为什么?因为如果您想知道按文件名查找对象的位置,便可以方便地搜索此类档案。
当您执行此操作时,最终会在控制栏中出现很多窗口,名称分别为“ bash”。如果您只有其中之一,这很好,但是当您有6个或更多时,它又是痛苦的....还有其他二十多种情况。在一对键盘/鼠标对的同时命令下,我有三台显示器,但我仍然觉得需要更多。这些窗口中的每一个都有几个bash终端打开。
所以我一起喝了。首先,将这些行放在您的.bash_profile中:
export PROMPT_COMMAND='export TRIM=`~/bin/trim.pl`'
export PS1="\[\e]0;\$TRIM\a\]\$TRIM> "
trap 'CMD=`history|~/bin/hist.pl`;echo -en "\e]0;$TRIM> $CMD\007"' DEBUG
我仔细阅读并撰写了许多段落,介绍了这一切的工作原理以及确切的设置原因,但是您并不是很感兴趣。相信我。一整本书介绍了为什么我要“ CMD =...
在第三行 ; echo ...”,这。许多人(包括托管我的其他域的bluehost)仍在使用旧版本的bash,但在处理陷阱方面存在重大错误,因此我们坚持使用此方法。如果您使用的是最新的bash版本并且希望进行研究,则可以删除CMD并将其替换为$ BASH_COMMAND。
无论如何,我使用的第一个脚本在这里。它会创建一个不错的提示,其中包含您的计算机名称和目录,并切成合理的长度:
============trim.pl===========
#!/usr/bin/perl
#It seems that my cygwin box doesn't have HOSTNAME available in the
#environment - at least not to scripts - so I'm getting it elsewhere.
open (IN, "/usr/bin/hostname|");
$hostname = <IN>;
close (IN);
$hostname =~ /^([A-Za-z0-9-]*)/;
$host_short = $1;
$preamble = "..." if (length($ENV{"PWD"})>37);
$ENV{"PWD"} =~ /(.{1,37}$)/;
$path_short = $1;
print "$host_short: $preamble$path_short";
==============================
在此博客文章的开头有一个警告,您在开始问诸如“为什么不只是通过@ENV使用HOSTNAME环境变量?”这样的愚蠢问题之前,应该立即阅读。简单:因为这不适用于我尝试过的所有系统。
现在,让您真正酷起来。还记得.bash_profile添加的第3行吗?
trap 'CMD=`history|~/bin/hist.pl`;echo -en "\e]0;$TRIM> $CMD\007"' DEBUG
它会将trim.pl脚本输出转储到与以前相同的容器中,同时打印到命令提示符和窗口标题,但是这次添加的是您刚刚键入的命令!这就是为什么您不想在.bashrc中执行所有这些操作的原因:您运行的任何脚本(在我的机器上,人就是其中之一)将在每一行触发该操作。我们在这里所做的事情使人的输出严重混乱。我们在终端上玩得并不好。
为了获取您刚刚键入的命令,我们将bash的历史记录进行了切分:
===========hist.pl============
#!/usr/bin/perl
while (<STDIN>)
{
$line = $_
}
chomp $line;
$line =~ /^.{27}(.*)/;
print $1;
==============================
所以现在,我有一个数不胜数的窗户,他们说:
castro: /home/ronb blog
Ron-D630: /C/ronb/rails/depot script/server
Ron-D630: /C/ronb/rails/depot mysql -u ron -p
Ron-D630: /C/ronb/rails/depot find . > /C/ronb/system.map
Ron-D630: /C/ronb/rails/depot vi app/views/cart.html.erb
Ron-D630: /C/perforce/depot/ p4 protect
Ron-D630: /C/perforce/depot/ p4 sync -f
Ron-D630: /C/perforce/depot/
现在,从屏幕底部的快乐小栏,我可以一眼看出哪个是哪个。并且因为我们已经设置了PS1,所以命令完成执行后,命令名称将再次由trim.pl的输出替换。
更新(同一天):当我在.bashrc中进行尝试时,这些东西(.bash_profile条目)使我陷入了各种各样的困境。每当您以一种语言调用bash时,.bashrc就会由非交互式脚本执行。当我尝试使用人时碰到了这个。各种垃圾(我的.bashrc的全文,以及转义字符)都显示在手册页的顶部。我建议一旦您将它们放在一起,就可以在命令行中使用快速的“ man man”调用来测试此gem。
我想是时候该从我的.bashrc中提取自定义垃圾了,并放到它所属的地方了...
偶然地,我发现自己在此过程中的某一时刻键入了“ man trap”。
在我以前的工作地点,上班时间很荒谬。那是一家软件公司,我的老板很烂。他会在下午5:30左右给我们工作(正好是该回家的时间),并让我们完成工作直到晚上11:00为止(超过我们理想的生产时间)。否则,他会在仍在进行的代码中发现烦人的问题。
因此,我制作了一个批处理文件和一个脚本,该脚本将在7:00 PM至8:00 PM之间的任意时间关闭计算机。它有一个1分钟的计时器,以防万一我下班后呆在这里并且需要中止关机过程。
但是我会在下午5:00之前离开我的办公桌,所以如果他想在结帐时间附近丢下垃圾,他就找不到我要保留我。如果他来到我的办公桌上并看到我的电脑,他会认为我仍在厨房区域或附近的小型超市里,要拿些薯条或其他东西。但是,如果那段时间不在家,他会打给我手机,告诉我回到办公室。
我还计划将计算机上的BIOS设置为在8:00 AM或9:00 AM左右打开计算机,以防我感到懒惰并想在10:00 AM或11:00 AM左右漫步。如果我被发现走到办公桌前,他会问:“你整个早上都在哪里?” 我会说:“我正在与营销团队开会。” 或“我出去吃早餐。”
笨狗
#! /bin/bash
# check to see if site is up
# if it is, don't worry
# if it's down, restart apache after get a process listing
#
# v.1 Warren M Myers - initial stab
# 31 Aug 06
#
ERRCOD='7'
WHEN=`date +%d%b%y`
REPT="~/psaux.$WHEN.txt"
STARS='********************'
curl -I http://www.shodor.org > /var/tmp/curlret.txt
if [ "$?" = "$ERRCOD" ]; then
# return was unable to connect to host: save ps -aux; mail report
ps -aux > $REPT
echo $STARS
echo 'curl return results'
echo
cat curlret.txt
echo
echo $STARS
echo 'ps -aux results'
cat $REPT
echo
echo $STARS
echo 'restarting apache'
/etc/init.d/apache2 restart
echo 'apache restarted'
echo
echo "ps -aux results saved in $REPT"
fi
rm -f /var/tmp/curlret.txt
我将此用作自动加载的功能。我只要输入“ mycd”,就会出现一个我经常使用cd访问的目录列表。如果我碰巧知道数字,那么我只能说“ mycd 2”。要将目录添加到列表中,只需键入“ mycd / tmp / foo / somedirectory”。
function mycd {
MYCD=/tmp/mycd.txt
touch ${MYCD}
typeset -i x
typeset -i ITEM_NO
typeset -i i
x=0
if [[ -n "${1}" ]]; then
if [[ -d "${1}" ]]; then
print "${1}" >> ${MYCD}
sort -u ${MYCD} > ${MYCD}.tmp
mv ${MYCD}.tmp ${MYCD}
FOLDER=${1}
else
i=${1}
FOLDER=$(sed -n "${i}p" ${MYCD})
fi
fi
if [[ -z "${1}" ]]; then
print ""
cat ${MYCD} | while read f; do
x=$(expr ${x} + 1)
print "${x}. ${f}"
done
print "\nSelect #"
read ITEM_NO
FOLDER=$(sed -n "${ITEM_NO}p" ${MYCD})
fi
if [[ -d "${FOLDER}" ]]; then
cd ${FOLDER}
fi
}
使用rsync执行轮换备份的Shell脚本。它还支持执行任意子程序以支持其他预备份活动(例如,下载美味的书签)。