2013年2月25日 星期一

以 perldoc 程式讀文件

http://gugod.org/2009/07/-perldoc/


perldoc syn # 讀內建 perlsyn 文件
perldoc data # 讀內建 perldata 文件
perldoc WWW::Mechanize  # 讀 WWW::Mechanize 模組內的文件
perldoc lib/Foo.pm # 讀 Foo.pm 檔案內容中所寫的文件

改變<br>的高度

http://stackoverflow.com/questions/1409649/how-to-change-height-of-a-br


br:nth-of-type(n+4) {
   display: block;
   margin-top: 0;
   line-height: 0;
}

chrome瀏覽器要加:

content: " ";


讓第四個以後的br高度消失
IE7, IE8要在jquery多加jquery-extra-selectors.js

perl 匹配字串

http://www.cbi.pku.edu.cn/chinese/documents/perl/perl6.htm

http://blog.sina.com.cn/s/blog_50873f890100a13i.html
''  q//  字面字串
""  qq//  字面字串
``  qx//  命令執行
()  qw//  單字串列
//  m//  樣式比對
s///  s///  樣式代換
y///  tr///  字符轉譯
""  qr//  正規表示式

@test = qw/test perl is fun/;
use Data::Dumper;
print Dumper @test;
#$VAR1 = 'test';
#$VAR2 = 'perl';
#$VAR3 = 'is';
#$VAR4 = 'fun';
 
$reg = "test";
$test = "atesta";
$test =~ s/$reg/bear/;
print $test;  #abeara
 
`mkdir test2`;  #建立test2資料夾
qx/mkdir test3/;  #建立test2資料夾



替換操作符
选项 描述
g 改变模式中的所有匹配
i 忽略模式中的大小写(case insensitive)
e 替换字符串作为表达式
m 将待匹配串视为多行
o 仅赋值一次
s 将待匹配串视为单行
x 忽略模式中的空白


二、匹配操作符 =~、!~
    =~检验匹配是否成功:$result = $var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回0,即false。!~则相反。

使用index去判斷匹配字串:
$filename = "bear_test-1234578";
print index($filename,"bear_test"); # 小於零時表示$filename與第二個參數("bear_test") 不匹配

搜尋中文: \p{Han}  (未測試 ) 無法使用
http://www.regular-expressions.info/unicode.html#prop
其他特殊表示式:
http://www.gnu.org/software/grep/manual/html_node/Character-Classes-and-Bracket-Expressions.html

perl正規式的escape sequence
http://www.regular-expressions.info/characters.html
Escaping a single metacharacter with a backslash works in all regular expression flavors. Many flavors also support the \Q…\E escape sequence. All the characters between the \Q and the \E are interpreted as literal characters. E.g. \Q*\d+*\E matches the literal text *\d+*. The \E may be omitted at the end of the regex, so \Q*\d+* is the same as \Q*\d+*\E. This syntax is supported by the JGsoft enginePerlPCREPHPDelphi, and Java, both inside and outside character classes. Java 4 and 5 have bugs that cause \Q…\E to misbehave, however, so you shouldn't use this syntax with Java.

=> 在perl正規式中\Q..\E中間的內容會被解釋為原文字符


IE7, IE8 jquery能使用nth-of-type

http://stackoverflow.com/questions/11531070/nth-of-type-alternative-for-ie8

使用jquery-extra-selectors.js
https://github.com/keithclark/JQuery-Extended-Selectors

2013年2月8日 星期五

PERL 執行cron job (crontab)

http://jck11.pixnet.net/blog/post/4902321-利用lwp%3A%3Auseragent與網頁互動%5Bperl%5D
利用LWP::UserAgent與網頁互動[perl]
用perl去抓twitter的api把其中的資料存到主機上的檔案

#!/usr/bin/perl

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use LWP::UserAgent;
use HTTP::Headers;
use JSON;

our %SITE = (
    'aaa' => 'https://api.twitter.com/1/users/show.json?screen_name=aaa_account&include_entities=true',
    'bbb'    => 'https://api.twitter.com/1/users/show.json?screen_name=bbb_account&include_entities=true',
);


&get_twitter_api(\%SITE);

sub get_twitter_api {
    my $site = shift;

    my $url;
    my $class;
    my $agent_name='myagent';
    my $ua=LWP::UserAgent->new($agent_name);

    foreach my $k (keys %$site) {
        $url = $site->{$k};
        $class = $k;

        my $request=HTTP::Request->new(GET=>$url);

        $request->header(Accept=>'text/html');

        my $response=$ua->request($request);

        my $decoded;

        my $content = $response->{_content};

        $decoded = &JSON::decode_json($content);

        my $path = '>/XXX/files/'.$class.'/cron/twitter_followers_count.txt';

        open (MYFILE, $path) || die "Can't open file $path : $!\n";;

        print MYFILE $decoded->{followers_count};

        close (MYFILE);

    }

}
.
http://stackoverflow.com/questions/8655487/how-to-convert-string-to-json-in-perl
How to convert string to json in perl
用UA抓回來的資料是字串
要把他轉為json
上文範例中的 use Try::Tiny; 是需要安裝的perl套件
安裝方法: $cpan Try::Tiny

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
15 Awesome Cron Job Examples
跑cron job
1. 查crontab有沒有在跑
$ service crond status
crond (pid  13616) is running...
$ crontab -e 進入編輯
寫入
00 * * * * /usr/bin/perl /home/xxx/cronjob/twitter_followers_count.pl
分 時 日 月 星期
(可先用 * * * * * 每分鐘跑 去看他有沒有跑 或者網路上有用到秒數的方法sleep)
ls -l 看那個檔案最後更新的時間

測試
$ ./your_cron_job.pl

對reference跑迴圈:
http://stackoverflow.com/questions/5249362/how-to-use-foreach-on-hash-a-reference
foreach my $key (keys %{ $ad_grp_ref }) {
    ...
}

Crontab "*/1" 是什麼意思?
http://www.unix.com/linux/136805-crontab-1-a.html
*/1 * * * * /usr/local/bin/jdumpscan.sh
/1是多餘的,等同於每分鐘。等於
* * * * * /usr/local/bin/jdumpscan.sh

設定crontab -e 預設編輯器
http://superuser.com/questions/281617/change-default-text-editor-for-crontab-to-vim
如果預設編輯器不是vim,則使用下面指令設定
export VISUAL=vim

export EDITOR=vim

每30秒跑一次cronjob
http://stackoverflow.com/questions/9619362/running-a-cron-every-30-seconds
crontab -e:
* * * * * /usr/bin/bash /home/ds/test.sh
* * * * * ( sleep 30 ; /usr/bin/bash /home/ds/test.sh)




YAHOO信箱:如何儲存信件到「寄件備份匣」

http://help.cc.tw.yahoo.com/frame_article.html?prodid=29&id=6305

點右上角的設定圖示

選 "電子信箱選項"

勾選 "將已寄出的信件另存在寄件備份匣"

--------------------------------------------
20131128 新版信箱- 送信後自動備份到"寄件備份匣"方法

點右上角的設定圖示

點"設定"

選左邊的"撰寫電子信件"

勾選 "將已寄出的信件另存在寄件備份匣"

儲存後離開

2013年2月7日 星期四

OPERA常見問題

OPERA crash
狀況:opera開啟後因為太多分頁出現錯誤訊息重開而陷入無窮迴圈

解法:
C:\Users\user\AppData\Local\Opera

將其下的Opera (Opera資料夾下)的資料夾改名 Opera-old 然後重開後會自動產生新的Opera資料夾

之前儲存的分頁還在

顯示完整網址(內建網址後面的query不顯示)
設定 => 功能設定 => 進階 => 瀏覽 => 勾選"在網址列裡顯示完整的網址"
選單 => 設定 => 瀏覽 => 進階設定 => 勾選"Show advanced settings"
選單 => 設定 => 瀏覽 => 使用者介面 => 勾選 "在搜尋/網址列裡顯示完整的網址"



2013年2月6日 星期三

linux 抓檔案match的行數(grep)

Counting total number of matches with grep instead of just how many lines match
http://superuser.com/questions/339522/counting-total-number-of-matches-with-grep-instead-of-just-how-many-lines-match

$ grep -o -E "your expression" file |wc -l

計算資料夾下matches的個數( 類似sublime ctrl+shift+f 計算出來的matches數,注意: ThinkPHP 自動產生的 Runtime/Logs log檔被match多次時這邊只算一次 )
$ grep -r -o "discard_balance"  . | wc -l
使用git grep把哪些檔案被match了幾次列出來:
$ git grep -c -w "count"
-w 整個字匹配
-c 算出match了幾行,一行match多次只算一次
$ git grep -c -w "count" | wc -l 與sublime ctrl+shift+f 算出來match的行數相同(要注意被gitignore的檔案subllime也會算),git grep目前只會檢查到行數,無法到次數

Regular expression to match string not containing a word?
http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word
If you're just using it for grep, you can use grep -v hede to get all lines which do not contain hede.

我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
http://codingstandards.iteye.com/blog/1132879

$ wc -l <file>
打印指定文件的文本行?。(l=小?L)


自己的解法:

$ grep -v .*\.tw /etc/developers
列出非台灣開發者


$ grep -o -E ".*\.tw" /etc/developers |wc -l
列出台灣開發者總數

grep中使用 AND, OR, NOT
http://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/

OR -
$ grep -E 'pattern1|pattern2' filename

$ egrep 'pattern1|pattern2' filename

$ grep -e pattern1 -e pattern2 filename
AND -
$ grep -E 'pattern1.*pattern2' filename => grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename

$ grep -E 'pattern1' filename | grep -E 'pattern2'
NOT -
$ grep -v 'pattern1' filename

CentOS查某個套件是否安裝
$ rpm -qa | grep mysql
(空)
因為grep 大小寫敏感所以查不到,
$ rpm -qa | grep -i mysql
MySQL-test-5.6.25-1.el6.x86_64
MySQL-server-5.6.25-1.el6.x86_64
MySQL-client-5.6.25-1.el6.x86_64
MySQL-embedded-5.6.25-1.el6.x86_64
MySQL-shared-5.6.25-1.el6.x86_64
MySQL-devel-5.6.25-1.el6.x86_64
MySQL-shared-compat-5.6.25-1.el6.x86_64
rpm -ivh 安裝的東西用 rpm -qa 去找一定有

篩選日誌內容

https://www.cyberciti.biz/faq/grep-regular-expressions/  Regular expressions in grep ( regex ) with examples
使用egrep,這樣""裡面才是使用我習慣的正則
如,篩選出6/3和6/4的日誌,將內容篩選出來後再輔以sublime做處理,找出你想要的資料
$ egrep "(2022-06-03|2022-06-04).*INFO" laravel.log > laravel-2.sql




2013年2月1日 星期五

ssh 調整字型大小 ( putty 使用心得 )

原本是想調整vim字型大小的,但網路上文章怎麼試都不成功

我是用mtputty.exe掛putty.exe遠端ssh的

但調整pietty0400b14.exe (選項->字型->大小)後 mtputty.exe字型大小也有跟著改變(關掉重開後)

打開putty -> load 你的連線 -> 調整字型大小 -> save -> mtputty.exe字型大小也跟著改變 (只需重新連線那個連線,不用關掉mtputty)

(putty.exe和pietty.exe和mtputty.exe-捷徑 在同一路徑)

我使用20大小的字讓眼睛不會這麼累

更改MTPuTTY的 標題
在你的頁籤上點右鍵 -> Change Settings -> Window -> Behaviour -> 直接修改"Window title"後生效


輸入中文
http://gsyan888.blogspot.com/2009/11/putty-utf-8.html
打開putty,window-〉Appearance-〉Font settings-〉Change ,選 細明體 ,字集 選 中文 Big5
然後 window-〉Appearance-〉Translation 中 Received data assumed to be in which character set 選 UTF-8

ps.
http://unix.stackexchange.com/questions/94527/how-do-i-kill-all-screens
在沒有使用rellik的.screenrc時,嘗試在putty上輸入中文會把該screen連線卡死,screen 卡死後
使用killall 把它刪掉,我使用 # screen -S screen.id -X quit 沒反應
# killall screen

固定putty和MTPuTTY的標題
https://serverfault.com/questions/178469/set-puttys-window-title-to-name-of-loaded-session
打開putty
設定標題:
Window => Behaviour => Window title: 設定你要的title
固定標題:
Terminal => Features => 勾選Disable remote-controlled window title changing 避免遠端把你title換了