制作htmlbook方法
#!/bin/bash
# 基本思路
# 获取主数据(data.dat)
#=>获取标题(title.dat) <title></title>
#=>制作目录(index.html),以章节标题为内容
#=>分章节{001..055} <p></p>
#=>预备内容,分离样本html为两部分a.dat:DTD..<html>..<body><div> b.dat:</div></body></html>
#合并文档
#修正标题
mkdir novel/bak -p
sed -n '1,58p' data.dat >> index.html
# vi...
sed -n '1,58p' data.dat >>title.dat
awk '{print $1}' title.dat >1.dat
awk 'NR>1&&NR!=55{print $1};NR==55{print "$"}' title.dat>2.dat
sed -n '1,/<div>/p' ex.html >a.dat
sed -n '/<div>/,$p' ex.html | sed '1d' >b.dat
cp ../philosophy/justice/htmlbook.css .
cp * backup -fv
data=`cat data.dat | tr '\n' '\034' | tr ' ' '\032'|tr '\t' '\033'`
# 变量i的作用:行数/文件名
# 对于博客的代码高亮插件,千万不要缩进,否则会非常ugly.
for i in {001..055};do
sed -n "${i}p" title.dat | sed -e "s/^/<li><a href="$i.html">/;s/$/<\/a><\/li>/">>newtitle
j=`sed -n "${i}p" 2.dat`
echo "$data" | grep -oP "$i.*$j" | tr '\034' '\n' | tr '\032' ' ' | tr '\033' '\t' | sed -n '$d' >$i
sed -e 's/^/<p>/g;s/$/<\/p>/g' -i $i
cat a.dat $i b.dat >$i.html
title=`sed -n "${i}p" title.dat`
sed -r "s/<title>.*<\/title>/<title>$title<\/title>/" -i $i.html
rm $i -f
done
==> title.dat <==
001 河州小镇
002 兰州奇遇
003 迦夏之窟
004 剑使冰璃
005 凉州变故
006 神武观主
007 慕容璇玑
008 沙洲城堡
009 端倪乍现
010 大战周朱
==> 1.dat <==
001
002
003
004
005
006
007
008
009
010
==> 2.dat <==
002
003
004
005
006
007
008
009
010
011
==> a.dat <==
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="htmlbook.css" />
<title>第1课 谋杀的道德侧面 The moral side of murder </title>
</head>
<body>
<div>
==> b.dat <==
<a href="javascript:goPrevious()">上一页<a/> | <a href="javascript:goNext()">下一页<a/>
<script type="text/javascript">
var filename=location.href;
filename=filename.substr(filename.lastIndexOf('/')+1);
//下一页
function goNext(){
goPage(parseInt(filename,10)+1);
}
//上一页
function goPrevious(){
# htmlbook结构
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="htmlbook.css" />
<title>001 河州小镇</title>
</head>
<body>
<div>
<p>章节内容</p>
<a href="javascript:goPrevious()">上一页<a/> | <a href="javascript:goNext()">下一页<a/>
<script type="text/javascript">
var filename=location.href;
filename=filename.substr(filename.lastIndexOf('/')+1);
//下一页
function goNext(){
goPage(parseInt(filename,10)+1);
}
//上一页
function goPrevious(){
goPage(parseInt(filename,10)-1);
}
//进入页号为pagenumber的页面
function goPage(pagenumber){
if(pagenumber<10) pagenumber = "00"+pagenumber;
else pagenumber = "0"+pagenumber;
window.location.href=pagenumber+".html";
}
</script>
<a href="index.html">Index</a>
</div>
</body>
</html>
在关键词前插入内容(js代码,含有各种特殊符号)
给htmlbook添加:“上一页/下一页”的功能
文件
01.html 04.html 07.html 10.html 13.html 16.html 19.html 22.html
02.html 05.html 08.html 11.html 14.html 17.html 20.html 23.html
03.html 06.html 09.html 12.html 15.html 18.html 21.html 24.html
以前是直接把使用shell添加代码进去的,现在想使用js来实现。奈何困难重重,只好探索一下。
#关键词是<table
page.js的内容如下
<a href="javascript:goPrevious()">上一页<a/> | <a href="javascript:goNext()">下一页<a/>
<script type="text/javascript">
var filename=location.href;
filename=filename.substr(filename.lastIndexOf('/')+1);
//下一页
function goNext(){
goPage(parseInt(filename,10)+1);
}
//上一页
function goPrevious(){
goPage(parseInt(filename,10)-1);
}
//进入页号为pagenumber的页面
function goPage(pagenumber){
if(pagenumber<10) pagenumber = "0"+pagenumber;
window.location.href=pagenumber+".html";
}
</script>
shell部分
#!/bin/bash js=`cat page.js | tr '\n' '\034' | tr ' ' '\032'|tr '\t' '\033'` for i in ??.html;do new=`sed "s#<table#$js<table#" $i` echo "$new" | tr '\034' '\n' | tr '\032' ' ' | tr '\033' '\t'>$i done
参考资料:
改造成功之音频输出
电脑主机太吵了。我把它搬到室外,问题来了:音频线太短了,并且有杂音(本来就有的)。最重要的是我想把它改造成插入耳机,音频就从喇叭切换到耳机。
参考了这个电路(以RC实现的低通滤波器)。它的主要作用是滤波,即消除电子杂音。所谓电子杂音就是完全没有声音输出的时候,电脑输出的杂音。
用到元件:电阻、电感、电容、音频插座。全部是打旧收音机拆下来的。
电阻:没到找到合适的阻值的,只好使用“开关/音频调节”的元件来代替了。
上个图看看。

ps: 维基百科真方便
shell修改html电子书标题
# shell 修改html电子书标题
# 使用file命令无法判断得到这个编码,只好用leafpad,得到gb2312
# 转码
cd ebook
mkdir utf8
for i in *html;do
iconv -f gb2312 -t utf8 $i -o utf8/$i;
done
mv utf8/* .
rmdir utf8
# 获取标题 有25个
grep -P '^第([^0-9]*)章' *html>foo.dat
# 替换<title>...</title>
# 测试使用,在后面添加grep和显示文件名,以保证结果的正确
# for i in {001..025}; do
# j=`sed -n "${i}p" foo.dat`;
# sed "s/<title>.*/<title>$j<\/title>/" -i ${i}.html|grep title;
# echo $i;
# done
for i in {001..025}; do
j=`sed -n "${i}p" foo.dat`;
sed "s/<title>.*/<title>$j<\/title>/" -i ${i}.html;
echo $i;
done
转码完成后,也可以不使用文件
a=`grep -P '^第([^0-9]*)章' *html`
for i in {001..025}; do
j=`sed -n "${i}p" <<<"$a"`;
sed "s/<title>.*/<title>$j<\/title>/" -i ${i}.html;
echo $i;
done
linux下制作liveusb--sysrescuecd(gentoo) + tinycore + dos
說明:
- U盤已經格式化為vfat,其它格式未測試
- grub.exe取自grub4dos
- syslinux.cfg和menu.lst附在文章最後
- 想保存進入sysrcd 後做的一些修改,可以創建存儲文件 sysrcd.bs 。方法如下:
進入引导界面裏,按tab鍵,在後面加上这个选项“backstore=off”
你想保存sysrcd.bs在哪里,你就挂载哪个分区(这个分区要是可写的)。可以在進入sysrcd後,重新挂載usb為可寫
mount -o remount,rw /dev/sdc1
创建 sysrcd.bs 单位是M,下面指定的是256M
sysresccd-backstore create /livemnt/boot/sysrcd.bs 256
重启
下面是制作腳本。沒有親自測試過,根據歷史記錄寫的。注釋寫得很明白了。
#!/bin/bash
# files are at ~
#├── grub
#│ ├── e2fs_stage1_5
#│ ├── fat_stage1_5
#│ ├── ffs_stage1_5
#│ ├── grub.exe
#│ ├── iso9660_stage1_5
#│ ├── jfs_stage1_5
#│ ├── menu.lst
#│ ├── minix_stage1_5
#│ ├── reiserfs_stage1_5
#│ ├── stage1
#│ ├── stage2
#│ ├── stage2_eltorito
#│ ├── ufs2_stage1_5
#│ ├── vstafs_stage1_5
#│ └── xfs_stage1_5
#├── syslinux.cfg
#├── systemrescuecd-x86-2.3.1.iso
#└── tinycore-tinycore.iso
# mount the usb on /mnt
DEV=/dev/sdc1
mount $DEV /mnt
# install sysrescuecd
# copy all files in systemrescuecd-x86-2.3.1.iso to the root of usb /mnt
# rename /mnt/isolinux to /mnt/syslinux,
# and copy ~/syslinux.cfg which has been configed before to /mnt/syslinux
ISO1=systemrescuecd-x86-2.3.1.iso
DIR1=/tmp/sys
[ -d $DIR1 ] || mkdir $DIR1
mount $ISO $DIR1
cd $DIR1
cp * -av /mnt/
/mnt/usb_inst/install-mbr /dev/sdc
/mnt/usb_inst/syslinux /dev/sdc1
mv /mnt/{iso,sys}linux
cp ~/syslinux.cfg syslinux
# install tiny core
# copy all the files in boot in tinycore-current.iso to the root of usb /mnt
#
ISO2=tinycore-current.iso
DIR2=/tmp/tiny
[ -d $DIR2 ] || mkdir $DIR2
cp $DIR2/boot -av /mnt
# set grub
# The grub's syntax is easier than syslinux
cp ~/grub -av /mnt
sync
exit 0
nginx+php+mysql+spawn-fcgi with archlinux
安装 wordpress,其实,已经成功安装n多回了.这次是练下手.
#pacman -Sy nginx php php-cgi mysql
配置才是重点
- 配置nginx
编辑文件/etc/nginx/conf/nginx.conf,添加index.php在index index.html index.htm后面.
关于文件/目录开头是 '-'问题.
To creat or remove file(s) and directory(ies) with a - in the head was tricky.
想在当前目录/tmp创设 -a -b 文件
似乎加什么引号都不大行.
-和"参数引导符"(我捏造的一个词)同一,冲突了.使用绝对路径,能够回避它.
touch /tmp/{-a,-b}
删除的时候,也是使用绝对路径.
对于目录的创设和删除同样适合.
12月23日修正:相对路径也是可以的。
IT路
大一下學期,已經對windows上手.關于windows,我實在沒什麽可說的.
08年的黑屏事件,吾轉戰linux.之後約一年半的時間裏,往返于windows和ubuntu/linux.期間學會linux的安裝和web服務器的安裝/簡單配置以及掌握了linux的一些必要的基礎知識.
要說技術上的長進,最主要得益于主系統是archlinux.時間是2009年到現在.10年10月,開始學習shell腳本,掌握了其基本用法.略學了一點C/C++/java/python/php.最近在學習,web開發(html css javascript...).
要說感受最深的莫過于正則表達式(regular expressions),愛之深是恨之切.
我的想法是,什麽都略懂一點,學不可不博,以期為以後之工作助力.
注:吾非計算機專業.
保留两个关键词之间的内容–单行或者多行
這是舊文了,無奈訪問原地址代價高,轉到這裏.
#!/bin/bash # 能不能先并行(使用一个没有出现过特殊字符串作为结束标记),再分行? # file1.txt #"abcxdefgaxcdyeafgxyxabefght..." #"fewewretgjkjk543yeafgxy4534ght..." # 处理 删除第一个x前的内容和最后一个y后面的内容 # 预期结果 #defgaxcdyeafgxyxabefght..." #"fewewretgjkjk543yeafgx # 合并行 # "公平"就是传说中的标记 sed 's/$/公平/g' tex1.txt | tr -d '\n' | sed 's/公平$//'>file1.txt i=`sed 's/x.*$/x/' file1.txt` j=`sed 's/^.*y/y/' file1.txt` echo $i $j | sed -e "s/$i//" -e "s/$j$//" file1.txt
几经修改,最后得到是代码是下面几行。算法不变:先并行,再行分,使用贪婪匹配 x.*y 其實,它本貪婪
(sovled)archlinux无法启动mysqld
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
出现这个问题我完全没意料到,也试过一些网上的方法, 如 启动守护进程(BTW,我连守护进程都无法启动) 或者去掉一个分号 extentions=sockets.so
只可惜对我一点用都没有。