アカデミックなメモ


TeX


TeXの学会スタイルファイル


一応、本家も。



あまり品のよくないdouble space化

\renewcommand{\baselinestretch}{1.5}

一応、他にもやり方はある。
以下、http://tug.ctan.org/get/info/l2tabu/english/l2tabuen.pdf から引用。
  • Changing inter-line space using \baselinestretch
As a rule of thumb, parameters should be set on the highest possible level within a user interface.
So if you want to reset inter-line space you can do so on three levels:
1. Either by using the setspace.sty package;
2. or by using the LATEX command \linespread{<factor>};
3. or by redefining \baselinestretch.
Redefining parameters such as \baselinestretch works on the lowest LATEX level available—
which should better be left to packages. The \linespread command is provided for
this, so it is a better way to get more inter-line space than fiddling with \baselinestretch.
It is even better, though, to use setspace.sty which also takes care of space in footnotes and list
environments that you usually don’t want to change when modifying inter-line space.
So if you just need some more spacing between lines, say, you would like to set spacing to one
half or to double spacing, setspace.sty provides the easiest way to achieve this. However, if you
only want to use fonts other than Computer Modern you may use \linespread{<factor>}.
For example, when using Palatino \linespread{1.05} would be appropriate.

他人の文章にコメントなどを追加する用

多分、soutはstrikeoutの略。
\usepackage{color}% 適宜[dvipdfm]などを付けてください。
%\usepackage{ulem}
\usepackage[normalem]{ulem}
\newcommand{\tr}[1]{\textcolor{red}{#1}}
\newcommand{\trs}[1]{\textcolor{red}{\sout{#1}}}
\newcommand{\tb}[1]{\textcolor{blue}{#1}}
\newcommand{\tbs}[1]{\textcolor{blue}{\sout{#1}}}
%\newcommand{\tg}[1]{\textcolor{green}{#1}}
\definecolor{darkgreen}{rgb}{0,0.5,0}
\newcommand{\tg}[1]{\textcolor{darkgreen}{#1}}
\newcommand{\tgs}[1]{\textcolor{darkgreen}{\sout{#1}}}
\definecolor{purple}{rgb}{0.5,0,0.5}
\newcommand{\tp}[1]{\textcolor{purple}{#1}}
\newcommand{\tps}[1]{\textcolor{purple}{\sout{#1}}}

# 参考文献の出力をitalicのままにしたければ
# \usepackage[normalem]{ulem} にする。
# http://aki.issp.u-tokyo.ac.jp/itoh/hiChangeLog/html/2006-12.html#2006-12-10

tex改行位置調整


図表の位置制御

\renewcommand{\topfraction}{1.1}
\renewcommand{\bottomfraction}{1.1}
\renewcommand{\dbltopfraction}{1.1}
\renewcommand{\textfraction}{-0.1}
\renewcommand{\floatpagefraction}{1.1}
\renewcommand{\dblfloatpagefraction}{1.1}
\setcounter{topnumber}{5}
\setcounter{bottomnumber}{5}
\setcounter{totalnumber}{10}


book.clsでoneside

\documentclass[a4paper,oneside,12pt]{book}

aspell list

#!/bin/bash

#cat ./tex_en/*.tex | aspell --lang=en --mode=tex list | sort > mispelledwords_out

filedate=`date +%Y%m%d_%k%M%S`
filename=mispelledwords_out

echo "# ${filedate}" > ${filename}
for i in ./tex_en/*.tex
do
	echo "#----" >> ${filename}
	echo "# ${i}" >> ${filename}
	cat ${i} | aspell --lang=en --mode=tex list >> ${filename}
done

rm -f *~

bibtexリスト自動生成関連

  • getpaper
getpaper -j prl -v 99 -p 052502
or
getpaper -f [input_file]

  • doi2bibtex.py

  • Turning DOIs into formatted citations
curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
or
curl -LH "Accept: application/x-bibtex" http://dx.doi.org/10.1038/nrd842

  • Towards minimal bibliographic managment software

  • Stephen's BibTeX tools

itemizeで改行したときに左はじをそろえる方法


gs, eps2eps, ps2pdf, pdftkの仕様やバグ


gsによる処理

ps2ps, eps2epsは稀にバグるときがある(気がする)。
こいつらはgsを使ってるらしい
http://linux.die.net/man/1/ps2ps
http://linux.die.net/man/1/eps2eps
が、パラメータの指定が悪いせいだろう。
だったら、最初からgsで処理すればよい。

eps2epsのソースをハックする。
http://www.google.com/codesearch?hl=en&q=eps2eps+lang%3Ashell
で、その結果は以下のとおり。

BoundingBoxの取得(BoundingBoxを修正したいとき)
gs -q -sDEVICE=bbox -dNOPAUSE -dSAFER -dBATCH -dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000 input.ps > output.bb 2>&1

PS本文の取得(重いPSを軽くしたいとき)
gs -q -sDEVICE=epswrite -dNOPAUSE -dSAFER -dBATCH -dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000 -sOUTPUTFILE=output.ps input.ps

サイズが小さいとBoundingBoxを間違えるようなので
-dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000 
とPSの幅を大きめに取ってる。これでも誤るようなら、
もっと大きい値を入れればよい。

psのBoundingBoxに合わせたpdf作成

psのBoundingBoxに合わせてpdfをつくりたいときは
ps2pdf -dEPSCrop foo.ps
とすればいいらしい。

だが、-dEPSCropでpsをpdfにするとき、できあがった
pdfのBoundingBoxがA4になるときがある。

そんなときは、psの頭を
%!PS-Adobe-3.0 EPSF-3.0
に書き換えたら、欲しいpdfがつくれるかもしれない。
詳しくは
http://ghostscript.com/pipermail/gs-bugs/2008-February/000969.html
http://bugs.ghostscript.com/show_bug.cgi?id=689726
を参照のこと。

pdfから正しいBoundingBoxのついたepsを作成

#!/bin/bash
TARGET=${1%.pdf}.eps
echo "pdftops -eps ${1} - | ps2eps > ${TARGET}"
pdftops -eps ${1} - | ps2eps > ${TARGET}
echo "ps2eps stdout redirected to: ${TARGET}"

使えそうなネタ


まとめ

全部合わせると
#!/bin/bash
input=$1
output=$2

gs -q -sDEVICE=bbox -dNOPAUSE -dSAFER -dBATCH \
-dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000 \
${input}.ps > ${output}_tmp.bb 2>&1

gs -q -sDEVICE=epswrite -dNOPAUSE -dSAFER -dBATCH \
-dDEVICEWIDTH=250000 -dDEVICEHEIGHT=250000 \
-sOUTPUTFILE=${output}_tmp.ps ${input}.ps

head -1 ${output}_tmp.ps > ${output}.ps
cat ${output}_tmp.bb >> ${output}.ps
tail -$(( `wc -l < ${output}_tmp.ps` - 3 )) \
${output}_tmp.ps >> ${output}.ps
rm ${output}_tmp.*
ps2pdf -dEPSCrop ${output}.ps
でpsのソースを綺麗に整形して、pdfにできる。

A0ポスター完全アウトライン化(フォント文字化け対策)

一部のプリンターではA0印刷したときに、「フォントの埋込み」をした文字ですら文字化けすることがある。
それに対処する方法として、pdfのアウトライン化(全画像化)を紹介する。まず、pdfをepsに変換する。その後、gsを使ってepsをアウトライン化する。解像度は"-r"で指定する。最後に、epsをpdfに変換する。
pdftops -eps input.pdf
gs -q -sDEVICE=epswrite -dNOPAUSE -dSAFER -dBATCH -dDEVICEWIDTH=2500000 -dDEVICEHEIGHT=2500000 -r9600 -sOUTPUTFILE=output.eps input.eps
ps2pdf -dEPSCrop output.eps
rm input.eps output.eps
難点は、ファイルサイズが重くなることとBoundingBoxがずれること。後者はeps作成後に手動で書き換えれば、対処できなくはないが…。


文字のみのアウトライン化

上のコマンドで、widthとresolutionを指定する代わりに、
-dNOCACHE
を付け加えればよい。

eps圧縮関連


手書きepsの図作成関連


pdf分割・結合

pdftk in.pdf cat n output out.pdf
mページ目からnページ目を切り出し
pdftk in.pdf cat m-n output out.pdf
10ページ目削除
pdftk A=in.pdf cat A1-9 A11-end output out.pdf
全pdf結合
pdftk *.pdf cat output out.pdf

pdfのパスワード解除

pdftk a.pdf input_pw YOUR_PASSWORD output b.pdf

gnuplotの図の入ったtex文書をdvipsで処理するとpdfinfoがバグる


図の作成関連


gnuplotの図の修正


gnuplotでつくったsvgの図をInkscapeで編集

  • 吐き出したsvgを処理する場合

  • 吐き出したepsを処理する場合
pstoedit -f plot-svg input.eps output.svg
とやってsvgをつくる。

  • 吐き出したpdfを処理する場合
"-ssp" を指定
http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/43337.html
# 念のため言うと、最近のinkscapeはpdfを生で扱えるので
# svgに直す必要はまったくない。

  • 個人的な意見
フォントをいじらないなら、pdfをinkscapeで処理すればよい。
フォントをいじりたいなら、svgをgnuplotで吐き出す。
その際、
set term svg font "Nimbus Roman No9 L"
とでも指定すればよい。残念ながら、ItalicとかBoldへの
フォント変更はsvgを直接編集しないとダメっぽい。

こうして作成したinkscapeのsvgを編集後、epsを吐き出すと、
しばしばeps中のマイナスがハイフンになっている。具体的には、
「フォントを埋め込む(タイプ1のみ)」にチェックを入れると、マイナスがハイフンになる。
「フォントを埋め込む(タイプ1のみ)」にチェックを入れなければ、マイナスはマイナスのままである。
epsを確認すると、後者はISO Latin-1 encodingになっており、
ハイフンがマイナスとして無事に認識されている模様。
フォントの埋め込みがされていないのが嫌なら、
ps2pdf -dEPSCrop before.eps
pdftops -eps before.pdf after.eps
とでもしてください。

ちなみに、「『フォントを埋め込む(タイプ1のみ)』に
チェックを入れない」という後者の操作は
inkscape 0.46の場合、
inkscape --export-eps=hoge.eps hoge.svg に相当。
0.47以降は埋め込まないオプションが
削除されてるらしいので、
https://bugs.launchpad.net/inkscape/+bug/375323
「フォント埋め込まない」っていう方法では無理かも。
そのときは、svgファイルのハイフンを
地道にマイナスに置換するしかないかな。

# 参考までにinkscapeのcuiコマンド
http://inkscape.paix.jp/manual/cmdline-usage.html

gnuplotでつくったepsをtexでpdfにするときのフォント埋め込み

gnuplotでつくったepsをtexでpdfにするとき、
Nimbus Roman No9 Lなどではなく、
Times Romanなどを埋め込みたい場合の話。

gs_pdfwr.psを編集する。
# ubuntu hardyでは
# /usr/share/ghostscript/8.61/lib/gs_pdfwr.ps
# ubuntu lucidでは
# /usr/share/ghostscript/8.71/Resource/Init/gs_pdfwr.ps
下記のようにコメントアウトする。
/.standardfonts [
%   /Courier /Courier-Bold /Courier-Oblique /Courier0BoldOblique
%   /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
%   /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic
%   /Symbol /ZapfDingbats
] readonly def
# /AlwaysEmbedのバグのための対処療法?
# http://www.google.co.jp/search?hl=ja&q=alwaysembed+bug&aq=f&aqi=&aql=&oq=&gs_rfai=


図ではなく本文のフォント埋め込みは
  • dvips
linux:
dvips -Pdownload35 hoge.dvi
windows:
dvips -Pdl hoge.dvi
  • dvipdfmx
linux:
dvipdfmx -f dvipdfm_dl14.map hoge.dvi
windows:
dvipdfmx -f dlbase14.map hoge.dvi
らしい。
# Nibus系のフォントがTimes系の代わりに埋め込まれるらしい。
# これだけだと図のフォントは埋め込まれない。


gnuplot等でフォントを埋め込んだepsの軽量化

gnuplotでフォントを埋め込んだ後のepsは結構重くなる。
一旦ps2pdfなどでpdfにしてから、
その後pdftopsでepsに戻すと軽くなる。
ps2pdf -dEPSCrop before.eps
pdftops -eps before.pdf after.eps
なお、pdf2psではなくて、xpdf付属のpdftopsを用いた方がよい。

埋め込もうとしているPostScriptの
代替フォントについては以下を見よ。
http://www.tg.rim.or.jp/~hexane/ach/hfw/hfwa3.htm
フォント名は
http://d.hatena.ne.jp/mashabow/20071216
ghostscript/?.??/lib/Fontmap.GS
で確認せよ。ubuntu hardyでは
/usr/share/ghostscript/8.61/lib/Fontmap.GS
にあった。中身はこんな感じ。
/URWBookmanL-DemiBold	(b018015l.pfb)	;
/URWBookmanL-DemiBoldItal	(b018035l.pfb)	;
/URWBookmanL-Ligh	(b018012l.pfb)	;
/URWBookmanL-LighItal	(b018032l.pfb)	;

/NimbusMonL-Regu	(n022003l.pfb)	;
/NimbusMonL-ReguObli	(n022023l.pfb)	;
/NimbusMonL-Bold	(n022004l.pfb)	;
/NimbusMonL-BoldObli	(n022024l.pfb)	;

/URWGothicL-Book	(a010013l.pfb)	;
/URWGothicL-BookObli	(a010033l.pfb)	;
/URWGothicL-Demi	(a010015l.pfb)	;
/URWGothicL-DemiObli	(a010035l.pfb)	;

/NimbusSanL-Regu	(n019003l.pfb)	;
/NimbusSanL-ReguItal	(n019023l.pfb)	;
/NimbusSanL-Bold	(n019004l.pfb)	;
/NimbusSanL-BoldItal	(n019024l.pfb)	;

/NimbusSanL-ReguCond	(n019043l.pfb)	;
/NimbusSanL-ReguCondItal	(n019063l.pfb)	;
/NimbusSanL-BoldCond	(n019044l.pfb)	;
/NimbusSanL-BoldCondItal	(n019064l.pfb)	;

/URWPalladioL-Roma	(p052003l.pfb)	;
/URWPalladioL-Ital	(p052023l.pfb)	;
/URWPalladioL-Bold	(p052004l.pfb)	;
/URWPalladioL-BoldItal	(p052024l.pfb)	;

/CenturySchL-Roma	(c059013l.pfb)	;
/CenturySchL-Ital	(c059033l.pfb)	;
/CenturySchL-Bold	(c059016l.pfb)	;
/CenturySchL-BoldItal	(c059036l.pfb)	;

/NimbusRomNo9L-Regu	(n021003l.pfb)	;
/NimbusRomNo9L-ReguItal	(n021023l.pfb)	;
/NimbusRomNo9L-Medi	(n021004l.pfb)	;
/NimbusRomNo9L-MediItal	(n021024l.pfb)	;

/StandardSymL	(s050000l.pfb)	;

/URWChanceryL-MediItal	(z003034l.pfb)	;

/Dingbats	(d050000l.pfb)	;

多分、
Times-Roman -> NimbusRomNo9L-Regu
Times-Italic -> NimbusRomNo9L-ReguItal
Symbol -> StandardSymL
とかがあれば、論文の図をつくるのには十分。
eps中でフォント名が微妙に間違ってても
それっぽいフォントが割り当てられてるんだけど…。
なんでだろう。
# 例えば Times-Italic -> NimbusRomNo9L-Ital としても
# ちゃんとTimes系のItalicフォントが割り当てられてた…。


gnuplotの色づかい

http://とうごろう.jp/wiki/%E3%81%9D%E3%81%AE%E4%BB%96/Gnuplot%E3%81%A7Keynote%E9%A2%A8%E3%81%AE%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/
http://d.hatena.ne.jp/peccu/20100210/gnuplot
http://d.hatena.ne.jp/MegumiNiikura/20100127/1264601500
http://itoshi.tv/d/?date=20071001


試作品
set style line  1 lt 1 lc rgbcolor "#7b0600" lw 4 ps 2
set style line  2 lt 1 lc rgbcolor "#ca5c00" lw 4 ps 2
set style line  3 lt 1 lc rgbcolor "#c29805" lw 4 ps 2
set style line  4 lt 1 lc rgbcolor "#a2b932" lw 4 ps 2
set style line  5 lt 1 lc rgbcolor "#267e17" lw 4 ps 2
set style line  6 lt 1 lc rgbcolor "#1aafff" lw 4 ps 2
set style line  7 lt 1 lc rgbcolor "#006ffe" lw 4 ps 2
set style line  8 lt 1 lc rgbcolor "#0021d2" lw 4 ps 2
set style line  9 lt 1 lc rgbcolor "#8b2bd3" lw 4 ps 2
set style line 10 lt 1 lc rgbcolor "#545857" lw 4 ps 2

set terminal postscript eps enhanced color
set output "test10.ps"

set size 0.8,0.8
set key left top
set sample 10
set xrange [0:pi]
set yrange [-1.5:2.0]

plot \
	sin(x - 0 * ((2 * pi) / 16)) ti "1" w lp ls 1, \
	sin(x - 1 * ((2 * pi) / 16)) ti "2" w lp ls 2, \
	sin(x - 2 * ((2 * pi) / 16)) ti "3" w lp ls 3, \
	sin(x - 3 * ((2 * pi) / 16)) ti "4" w lp ls 4, \
	sin(x - 4 * ((2 * pi) / 16)) ti "5" w lp ls 5, \
	sin(x - 5 * ((2 * pi) / 16)) ti "6" w lp ls 6, \
	sin(x - 6 * ((2 * pi) / 16)) ti "7" w lp ls 7, \
	sin(x - 7 * ((2 * pi) / 16)) ti "8" w lp ls 8, \
	sin(x - 8 * ((2 * pi) / 16)) ti "9" w lp ls 9, \
	sin(x - 9 * ((2 * pi) / 16)) ti "10" w lp ls 10

==== line colors ====

---- 10 colors ----
#7b0600
#ca5c00
#c29805
#a2b932
#267e17
#1aafff
#006ffe
#0021d2
#8b2bd3
#545857

---- 6 colors ----
#c60300
#ff8a1b
#267e17
#006ffe
#8b2bd3
#545857

---- 7 colors ----
#ff0200
#ff8a1b
#267e17
#0021d2
#8b2bd3
#2b3230
#545857

---- 8 colors ----
#974F00
#FF2800
#FF8F00
#009800
#250097
#A800FF
#52466C
#000000

==== surface colors ====

---- 3 surfaces ----
#c1d2ff/#c1d5ff
#d2fec7
#ffe2e3
---- 2 lines ----
#ff1b1b
#004bfe

---- 3 surfaces ----
#e4eaff
#ffede4
#fffee4
---- 3 lines ----
#c40501
#008111/#206b00
#206bff
---- 2 gray lines ----
#0f0f0f
#a6a6a6/#bfbfbf

gnuplotで中抜き(白塗り)のマーク

eps出力でpoint typeを白で塗られたマークに変えたいときは、
以下をしかるべきところに追加すればOK。
# とりあえず、
## /h {rlineto rlineto rlineto gsave fill grestore} bind def
# /h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
# の下ぐらいにかけばいいんじゃない?
/CircleF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      hpt 0 360 arc fill
    grestore
      hpt 0 360 arc stroke
} def
/BoxF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill
    grestore
      exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke
} def
/TriUF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill
    grestore
      vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke
} def
/TriDF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill
    grestore
      vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke
} def
/DiaF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill
    grestore
      vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke
} def
/PentF {
  stroke [] 0 setdash
    gsave LCw setrgbcolor 2 copy
      gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore
    grestore
      gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore
} def

ちなみに、これらは
http://とうごろう.jp/wiki/%E3%81%9D%E3%81%AE%E4%BB%96/Gnuplot%E3%81%A7Keynote%E9%A2%A8%E3%81%AE%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B/
http://d.hatena.ne.jp/peccu/20100210/gnuplot
のソースのパクリ。

マークの白抜きの部分に色をつけたい場合は、
gsave LCw setrgbcolor 2 copy
のLCWを{0 0 0}や{1 1 1}といったrgb colorに置き換えればよい。

gnuplotで掛け算記号

  • は{/Symbol \327}
×は{/Symbol \264}

グラフからデータの抽出



gnuplot以外の選択肢


非常に参考になるサイト


C language memo

fgets + sscanf


malloc


mpi


lapack

gcc in ubuntu
gcc a.c -lm -llapack -o a_out

icc: disable annoying remarks

To disable "remark #981: operands are evaluated in unspecified order":
icc -c main.c -O3 -Wall -wd981

shell command memo


bash/csh:標準出力と標準エラー出力


shでファイル名を取得

#!/bin/bash

path="/path/to/foo.tar.gz"
echo "path: $path"

basename=${path##*/}
echo "basename: $basename"

filename=${basename%.*}
echo "filename: $filename"

extension=${basename##*.}
echo "extension: $extension"

#!/bin/sh

echo "This script name is $0"
echo "This script name is `basename $0`"

echo "This script name is ${0##*/}"
echo "This script name is ${0#*/}"

bashで小数演算(bc使用)

a=`echo "scale=7; 133.1/4.25" | bc`
echo ${a}
整数部分の0も表示させたいなら、例えば
b=`echo "scale=4; 133.1/4.25" | bc | sed -e "s/^\./0./" | sed -e "s/^0$/0.0000/"`
echo ${b}

awkコマンドに引数を渡す方法

シングルクォートで囲むだけ。
http://oshiete.goo.ne.jp/qa/3482584.html

awkで文頭が#の行を削除

awk '$1 !~ /#/{print $0}' [filename]
#の行を表示させる場合は
awk '$1 ~ /#/{print $0}' [filename]

find+exec/find+xargs

~/work/ directoryのfileをすべてtouchする。
find ~/work/ -exec touch {} \;
より高速:
find ~/work/ | xargs touch
ファイル名にスペースがあるとき:
find ~/work/ -print0 | xargs -0 touch

wget

例えば、pdfが欲しいとき。
wget -r -l 1 -A pdf http://www.hoge/

arXiv.orgのソースの展開

http://arxiv.org/help/unpack
ファイルはtarらしい。
tar -xvf filename.tar

rsync


io errorでも強制的に--deleteしたいときは--ignore-errorsをつける。

web, css関連


validator


画像の使用を極力控えてかっこいいCSSデザインをやってみよう大会


twitter関連


ログ保存

#!/usr/bin/perl

# 指定アカウントの全発言を取得
$user = $ARGV[0]; # アカウント
$wget = "wget"; if ( $user eq "" ) {
 print "perl krmall.pl [アカウント]\n";
 exit;
} # 現在のツイート数を取得
`$wget http://twitter.com/$user -Otemp.txt`;
open( FILE, "<temp.txt" );
while(<FILE>) {
 if ( /<span id="update_count" class="stat_count">([0-9,]+)<\/span>/ ) {
  $cnt = $1;
  $cnt =~ s/,//;
  break;
 }
}
close( FILE ); $pmax = int($cnt/20)+1;
print "account: $user count: $cnt pages: $pmax\n";  # 指定アカウントを全て読み込み
unlink( "$user.txt" );
open( OUT, ">>$user.txt" ); for ($i=1; $i<=$pmax; $i++ ) {
 `$wget http://twitter.com/$user?page=$i  -Otemp.txt`;
 
 open( FILE, "<temp.txt" );
 while(<FILE>) {
  if ( /<span class="entry-content">/ ) {
   $text = $_;
   if ( !/<\/span>/ ) {
    while(<FILE>) {
     if ( /<\/span>/ ) {
      $text .= $_;
      last;
     }
     $text .= $_;
    }
   }
   $text =~ s/\n//g;
   $text =~ s/\r//g;
   $text =~ /<span class="entry-content">(.*)<\/span>/;
   $text = $1;
   
   <FILE>; <FILE>;
   $id = <FILE>;
   $id =~ /status\/([0-9]+)/;
   $id = $1;
   $date = <FILE>;
   $date =~ /data="{time:'([^']+)'}/;  #"
   $date = $1;
   
   $text =~ s/<[^>]+>//g;
   
   print OUT "---\n";
   print OUT "$id\n";
   print OUT "$text\n";
   print OUT "$date\n\n";
  }
 }
 close( FILE );
}
close( OUT ); # "
# 統計表示
open( OUT, "<$user.txt");
open( ST,  ">${user}_st.txt");
while(<OUT>) {
 if ( /^---/ ) {
  $_ = <OUT>; chomp; $id = $_;
  $_ = <OUT>; chomp; $text = $_;
  $_ = <OUT>; chomp; $date = $_;
  
  $_ = $text ;
  @res = /(@[A-Za-z0-9_]+)/g;
  foreach $re ( @res ) {
   $users{ $re } = $users{ $re } + 1;
  }
 }
}
close( OUT ); 

foreach $re ( sort {$users{$b} <=> $users{$a}} keys %users ) {
 if ( $re ne "@".$user ) {
  print ST "$re (".$users{$re}.")\n";
 }
}
close( ST );

タイムライン関連のAPI /user_timeline


twitter ubuntu クライアント


Echofon


TwitterBar


"コメント --post"で投稿可。

twitte.rb



sudo apt-get install libglade2-ruby libgconf2-ruby libopenssl-ruby

mitter




最終更新:2013年12月31日 12:35