離開北京已經有半年了,再次回到這裡看著以前住過的小區,走過的街道,滿是懷念。說實話我並不喜歡這裡,寫過的關於北京的日誌大多數是對這裡的冷嘲熱諷,污濁的空氣,擁擠的高峰人流,髒亂差的老城區和郊區街道。上下班,擠地鐵,在這裡的日常生活並不特殊,但是平時的點點滴滴卻值得讓人紀念。
剛剛來北京的時候有一個冠冕堂皇的理由,為了前女友(大概是前前),當然這只是表面上的,也許只是為了這個藉口去擺脫曾經被父母規劃出的兩點一線的日常。來到北京之後就被前女友甩了,這並不意外也不過分,我也絲毫不會記恨,當時的我僅僅是一個屌絲,沒有房子沒有錢工作也不靠譜,甚至連一千多的房租都覺得貴。然而身為軟漢子我一向沒什麼壓力,想著總會好起來一路也就這麼過來了。
現在想想租房的生活還真是辛苦,每個月的工資並不高,那時候又是一個人,加上平時的花銷真是緊張的夠嗆。因為房子到期要出售或者漲了房租,也換了好幾次房子,折騰了幾次搬家。除了大西邊石景山沒住過,東南北都算是住過了,剛開始是四惠那邊,再是大興,再是昌平,在昌平也搬過一回,對住宿環境很挑剔所以一直也沒住太便宜的,倒是越搬越遠了。每天上班單程就要一個多小時,沒有手機和pad是活不了的。
自從美國大使提出PM2.5之後開始發現北京的空氣原來那麼差,冬天有時候出門看見濃濃的霧霾真是讓人毛骨悚然,漸漸地也開始想離開這裡。當然原因大概也有買不起北京的房子,可我自己也並不認為值那個價,主要還是不喜歡這裡。城市再大也不是自己的,我最喜歡的活動還是家裡蹲,唯一的優點就是見朋友很方便,新的朋友很多,舊的同學也很多,來往的老朋友也常常能見到。
離開北京之後我也經常回來,因為公司的所有關係還在這裡,辦社保和公積金也要回來。每次回來都會見見北京的同學,朋友。這次回到北京時間很趕,去我曾經住過的地方轉了一圈,和室友們打了個招呼。小區門口的商店還是那個阿姨,常常去的披薩店倒了,多了很多其他的店鋪。小區裡面到了夜晚還是感覺挺黑暗,涼風吹在臉上,看著路燈下的樹影,像是加班回家的感覺,想起了很多往事。
見見以前的朋友,聊聊過去聊聊未來,說說誰結婚了,誰談對象了,誰去相親了。在這個城市中生活節奏和洪水一樣,留不下自己的影子。留下的是和仍然在這裡漂泊的朋友們的感情,以及自己所知道的回憶。回憶總是美好的,無論辛苦悲傷,還是喜悅歡樂,當再回憶起那些一去不復返的舊時光時,總會讓人露出微笑。坐在地鐵站附近的肯德基看著窗外人群漸少,寫到這裡也該回去睡覺了,諸君晚安。
======
kujou_rin
作者彙整: 九条凛
禁止自動升級Win10禁止後台下載Win10的方法
Win7/8/8.1沒有預定Win10,也不想升級Win10,但是系統總是提示已經準備好升級,後台也總下載好幾G大的升級包,很讓人煩惱。
解決辦法1:
刪除KB3035583補丁,並隱藏該補丁。(我不喜歡這個方案,強迫症不安裝所有補丁會難受)
解決辦法2:
此方案為微軟官方設置辦法。在註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate下新建DWORD(32)值,命名為DisableOSUpgrade,數值為1。後台就不會再自動下載升級包了。(若沒有WindowsUpdate鍵值可新建該目錄)
======
kujou_rin
[270930]食戟之吃貨
由於工作的關係,常常在外出差,前段時間剛剛結束了天津的行程,又出差到新疆,算是一趟回到家鄉的旅程吧。我小時候是在這裡長大的,對於新疆算是再熟悉不過,雖然離家多年,但是有很多習慣還是難以改變。常常出差的人最常見的問題之一就是飲食,待最久的基本是華北地區,還有即將定居的東北,說實在的,那裡的飯菜實在不喜歡。我不敢說哪裡的菜不好吃,但確實不合我的胃口,覺得太淡,沒有味道,也可以理解成是我太重口味。在東北吃酸菜燉豬肉,東北人要沾醬油之類的,不然自己都覺得淡,我很不能理解,如果啥東西都是白水燉了自己蘸醬,還要廚師調味做什麼。
回到新疆出差了一段時間,特別是吃家裡的菜,又把嘴養刁了。雖然我自己也會簡單的炒菜,但是在家裡基本都是我爸掌勺,他是家裡的特級大師傅。他平時不僅做菜,也偶爾把從飯店看來的菜拿回家試驗。拜他所賜,基本也能學到一些東西,比如炒素菜可以用蒜香去調味,料酒去除肉腥味比葱薑蒜調料要強,油裡扔些花椒可以看出油溫之類的,其實也無非是些居家做飯的基本常識。真正的料理並不像「食戟のソーマ」那樣精彩,有些時候甚至覺得千篇一律。寫這篇文章一來是曬曬家鄉飯菜,二來是當個記筆記的地方。
提到新疆首先要說的是大盤雞,那麼大盤雞究竟要怎麼做呢,說說我家的做法吧。首先要準備好雞和調料,這個不必多說。雞切塊,葱薑蒜調料備齊。(如下圖)
熱鍋涼油基礎不多說,油熱後放糖,燒化。大盤雞實際上無非是紅燒,因此放糖一是味道,二是用於著色,注意不要燒糊。然後放肉,肉洗淨後把水瀝干再入鍋。翻炒潤色,顏色均勻差不多的時候入料酒和調料。無論加什麼東西建議先放在炒勺上再入鍋,方便控制適量,不要什麼東西直接往鍋裡倒。料酒主要用於去腥,在肉類料理中常常用到,加上現在肉的質量越來越差,去腥必不可少。大盤雞的調料和其他紅燒時的調料基本相同,花椒,八角,桂皮,辣椒自不用說,我喜歡辣椒和花椒下的多一點,此外的調料還有小茴香,草果,丁香,陳皮,山奈,白蔻。中華料理拼的本來就是調料,自己家配一般很難配齊,買配好的亦可。草果捏爛了好出味。扔進去翻炒一會,肉的表面基本熟了,入鍋醬油,葱薑蒜。葱薑蒜在炒菜中用於熗鍋,而在紅燒中用於配合燉的環節。翻炒兩下就可加水了,因為醬油易糊。水漫過肉然後就可以慢慢燉了,一開始建議開蓋燉,放一放氣味,順便把鹽加了,嘗嘗燙的鹹淡,考慮要收燙不能鹹了。加鹽早了肉不好爛,加鹽晚了不好入味自己把握。燉一段時間後,依照肉的程度選擇關小火慢慢燉,還是快點燉完了水出鍋,或者土雞肉太老,上高壓鍋,自己掌握。最後放土豆然後土豆軟了,收燙即可出鍋。如果需要中途補水一定要開水不然肉被涼水激了不容易爛。最後裝盤擺盤,完成。
以上就是家裡做大盤雞的基本工序,其他紅燒類似。紅燒羊肉的時候八角可以減少,調料也可以下的輕一些因為需要保留羊肉的味道。八角主要用於對付豬肉類似的腥味,在紅燒豬肉中用的很多。說完這些來看看下面的成品吧。
[圖]大盤雞一般會配合腰帶面(如果覺得面太淡可以在下面的水裡放點鹽
下面來圖片介紹一下最近幾天家裡的部分晚餐食譜。
[圖]左邊的芹菜炒羊肉為了讓肉更嫩,先過了油。右邊其實是一個實驗失敗的作品,薯片炸蝦,薯片炸過火了,苦了。
[圖]名為「鮮」的實驗失敗品,魚肉燉羊肉,不怎麼好吃,魚的味道沒處理好。
======
kujou_rin
Linux下查看pptpd等VPN撥入日誌的方法
使用pptpd和xl2tpd搭建VPN之後,會發現在/var/log下並沒有詳細的日誌,在syslog中雖然有IP記錄和撥入時間,但卻沒有帳戶和連接等信息,當需要查看當前連接的用戶,或者之前的使用日誌則無從查起。
之前的文章中介紹過利用shell腳本對VPN撥入的PPP連接進行限速,原理是利用ppp撥入時會加載ip-up,事實上在ppp斷開時也會加載ip-down。參考pptpd幫助可以得知其中可以使用的參數。因此可以用如下方法:
在ip-up結尾添加
1 2 3 4 5 6 7 8 9 |
echo "##################################" >> /var/log/pptpd.log echo "Now User $PEERNAME is connected!!!" >> /var/log/pptpd.log echo "##################################" >> /var/log/pptpd.log echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log echo "clientIP: $6" >> /var/log/pptpd.log echo "username: $PEERNAME" >> /var/log/pptpd.log echo "device: $1" >> /var/log/pptpd.log echo "vpnIP: $4" >> /var/log/pptpd.log echo "assignIP: $5" >> /var/log/pptpd.log |
在ip-down結尾添加
1 2 3 4 5 6 7 8 9 10 11 12 |
echo "#####################################" >> /var/log/pptpd.log echo "Now User $PEERNAME is disconnected!!!" >> /var/log/pptpd.log echo "#####################################" >> /var/log/pptpd.log echo "time: `date -d today +%F_%T`" >> /var/log/pptpd.log echo "clientIP: $6" >> /var/log/pptpd.log echo "username: $PEERNAME" >> /var/log/pptpd.log echo "device: $1" >> /var/log/pptpd.log echo "vpnIP: $4" >> /var/log/pptpd.log echo "assignIP: $5" >> /var/log/pptpd.log echo "connect time: $CONNECT_TIME s" >> /var/log/pptpd.log echo "bytes sent: $BYTES_SENT B" >> /var/log/pptpd.log echo "bytes rcvd: $BYTES_RCVD B" >> /var/log/pptpd.log |
之後當連接撥入和斷開時則寫入日誌,如果擔心日誌過大可以在crontab寫一個自動清理腳本即可。
======
kujou_rin
WordPress升級4.3後無法統計中文摘要字數的解決方法
WordPress升級4.3之後,首頁摘要以及搜索結果摘要字數統計不正確,只統計了英文而不統計中文,導致中文摘要幾乎要包含到全篇的內容。
解決方法為,打開/wp-includes/formatting.php,找到如下內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* * translators: If your word count is based on single characters (e.g. East Asian characters), * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. * Do not translate into your own language. */ if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) { $text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' ); preg_match_all( '/./u', $text, $words_array ); $words_array = array_slice( $words_array[0], 0, $num_words + 1 ); $sep = ''; } else { $words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY ); $sep = ' '; } |
参考注释,根据需要把这一行
strpos( _x( ‘words’, ‘Word count type. Do not translate!’ ), ‘characters’ )
中的’words’改為’characters_excluding_spaces’或者’characters_including_spaces’。
======
轉載自nex3z’s blog
連接VPN後自動區分國內國外流量的方法
大陸的網友常常遇到這樣的問題,連接VPN後,會遇到國內網站訪問變慢問題。這也是全局VPN的一大缺陷,如何解決這個問題呢。
之前的文章講過如何設置路由,那麼我們可以用路由區分國內和國外流量,從而實現目的地不同走不同網路的效果。
方法如下:
1,下載以下附件
pre_created_for_win
2,解壓,右鍵管理員身份運行vpnup.bat。
3,連接VPN
注意,以上方案適用與中國大陸翻X的網友,重啟後可能需要重新運行bat進行設置。
相關文章,路由表的原理和基本配置方法:
https://lilith.pro/gijyutsu/1930
======
kujou_rin
C語言socket編程發送HTTP請求實例
前幾天在自己的私服中用c寫了一個模擬股市系統,所使用的數據是通過socket發送HTTP請求,然後獲得新浪財經的接口頁面進行處理。那麼現在我們把需求和需要做的事情總結一下:
1、如何發送HTTP請求
2、請求到某個股票網站的輸入和輸出分別是什麼
3、處理收到的字符串數據
先試著寫一個簡單的HTTP請求發送和接收程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> int main(int argc,char *argv[]) { char urlstr[8096]; char buf[8096]; struct hostent *server; //創建套接字 int fd=socket(AF_INET,SOCK_STREAM,0); if(fd==-1) printf("sockett err:%m\n"),exit(-1); printf("socket ok!\n"); struct sockaddr_in addr; addr.sin_family=AF_INET; addr.sin_port=htons(80); //解析域名 server = gethostbyname("hq.sinajs.cn"); //連接 memcpy((char *)&addr.sin_addr.s_addr,(char*)server->h_addr, server->h_length); int r=connect(fd,(struct sockaddr*)&addr,sizeof addr); if(r==-1) printf("connect err:%m\n"),exit(-1); printf("connect ok!\n"); //發送HTTP請求 sprintf(urlstr,"GET /?list=sh600000 HTTP/1.1\r\nHost: hq.sinajs.cn\r\nConnection: Close\r\n\r\n"); write(fd,urlstr,strlen(urlstr)); //接收並打印 r=recv(fd,buf,8096,0); if(r<=0) {close(fd);return -1;} buf[r]=0; printf("%s",buf); //關閉套接字 close(fd); return 0; } |
上面的例子使用非阻塞的recv作為接收,優點是接收後不會阻塞的運行程序進行接下來的輸出打印,而缺點是如果返回的頁面數據很多,分包之後會發現recv接收的頁面是不全的,只有大概2k多數據。所以在實際應用中我使用了read作為接收函數。
我的需求是通過上證股票代碼獲得開盤收盤和當前價格等信息,已知新浪股票的HTTP接口用法是這樣 http://hq.sinajs.cn/?list=sh600000,sh600406 放到瀏覽器一看就明白了,已經滿足通過代碼獲的所有信息,接下來寫具體的處理過程。
下面是我所寫的通過股票代碼獲得實時價格的程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#include<iostream> #include<sstream> #include<string.h> #include<time.h> #include<stdlib.h> #include<unistd.h> #include<mysql/mysql.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> using namespace std; int s_num = 5; char stock[][10]={"000001","600000","600005","600006","600007"}; // 上證指數,浦發銀行,武鋼股份,東風汽車,中國國貿 int main(int argc,char *argv[]) { time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); char str[1024]; int i; double d; int i1; char ch; MYSQL my_connection; MYSQL_RES *result; MYSQL_ROW row; mysql_init(&my_connection); struct hostent *server; stringstream sstr,recvstr; char strss[1024]; char zd[33][50]; int fd=socket(AF_INET,SOCK_STREAM,0); if(fd==-1) printf("sockett err:%m\n"),exit(-1); printf("socket ok!\n"); struct sockaddr_in addr; addr.sin_family=AF_INET; addr.sin_port=htons(80); server = gethostbyname("hq.sinajs.cn"); memcpy((char *)&addr.sin_addr.s_addr,(char*)server->h_addr, server->h_length); int r=connect(fd,(struct sockaddr*)&addr,sizeof addr); if(r==-1) printf("connect err:%m\n"),exit(-1); printf("connect ok!\n"); //同時獲得多個個股信息 sstr << "GET /?list="; for (i=0; i<s_num; i++) { sstr << "sh"; sstr << stock[i]; if (i != s_num-1) sstr << ","; } sstr << " HTTP/1.1\r\nHost: hq.sinajs.cn\r\nConnection: Close\r\n\r\n"; cout << "debug:" << sstr.str(); write(fd,sstr.str().c_str(),sstr.str().length()); //阻塞read一直讀取直到fd被超時關閉 while(read(fd,&ch,1)) { recvstr << ch; } close(fd); cout << recvstr.str() << endl; //因為本人習慣於使用stream類型保存便於以後getline和處理 if (mysql_real_connect(&my_connection, "0.0.0.0","user", "passwd", "datadb", 0, NULL, 0)) { printf("[%04d%02d%02d%02d%02d%02d] Connection success\n",now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); } else { printf("[%04d%02d%02d%02d%02d%02d] Connection failed\n",now->tm_year+1900, now->tm_mon+1, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); return -1; } recvstr.getline(strss, 1024); i = 0; while(!recvstr.eof()&&!recvstr.fail()) { if((strstr(strss,"var hq_str_sh") != NULL) && (strstr(strss,stock[i]) != NULL)) { //======數據庫處理過程已省略====== //======數據庫處理過程已省略====== i++; } if (i == s_num) break; memset(strss, 0x00, 1024); recvstr.getline(strss, 1024); } mysql_close(&my_connection); return 0; } |
由於涉及自己伺服器數據庫的數據結構,數據庫處理過程已經省略。getline得到的每一行可以用sscanf分隔成字符串,然後再使用atof轉化為價格數的浮點。引號內的字段可以分別保存到zd[33][50]的二位數組中,關於新浪的股票接口,它們每個字段表示的意義大概如下:
0股票名稱;1今開價;2昨收價;3當前價;4今最高;5今最低;……最後是30更新日期和31時間
自用程序寫的比較爛,如有缺陷歡迎指正。
=======
kujou_rin
[270713]守候永恆的愛
這個日記標題應該我是第二次使用了,實際上它是仙境傳說(RO)中文版主題曲的名字。一轉眼這個遊戲已經誕生了十年多,現在已經少有人知,它和傳奇一樣是一個時代的象徵,它也在我們這一代的回憶中敘說著時光的飛逝。喜歡仙境傳說,這個屬性其實相當於暴露了年齡。雖然我對網遊並無太大熱情,但這卻是我中學時代唯一玩過的網遊。
去年的時候出於對RO的好感,玩了一年的RO2,但是卻很令人失望。除了怪和城市的名字沿用了仙境傳說的老傳統以外,其他技能和操作設定已經完全和其他3D網遊沒有區別,加上二流臨時團隊所打造的各種粗糙的畫面和各種各樣的BUG,以及猖獗沒人管的外掛,開了一年服之後台服就關門大吉了。當然RO2其實並不能算是仙境傳說,只是隨隨便便一個撈錢跑路的渣作而已。
實際上很久之前我和小夥伴們假期一起玩的RO私服,依舊在我手下經營著,目前正常運行。去年開始正式對外開放,這一年來除了正常的運營維護外,BUG也改了不少,特別是NPC腳本的BUG機會每周都能發現。為了給玩家朋友們帶來一些新的東西,花費了一整個週末,甚至熬了一下夜寫了一個股票交易的NPC,可以模擬進行股票交易。雖然我的私服提供給大家都是免費的,但我卻樂此不疲。
為了寫這個NPC幾乎翻遍了eathena的英文wiki網站,還把以前扔掉的socket編程的知識也重新撿了起來。原理是C程序使用socket模擬發送HTTP請求,從新浪財經處獲得個股實時數據,然後分別存MySQL中,eathena再使用NPC腳本從SQL中取出數據存到伺服器內存變量中。在網上做RO私服的人很多,但是估計像我這樣用真實數據去做模擬交易的伺服器,應該算是獨創。我自己雖然覺得很厲害,但除了經常玩我遊戲的那十幾個玩家,估計也沒其他人看得到了。
至於socket模擬HTTP請求的具體編碼,之後應該會在技術分類單獨寫一篇文章。今天的回憶就先到這裡吧。
[圖]自己寫的股市交易NPC
======
kujou_rin
相關鏈接 [110306]守候永恆的愛(舊文)
https://lilith.pro/nikki/1433
相關鏈接 拯救世界委員會仙境傳說私服
http://ro.lilith.pro
eAthena NPC Script Variables
Variables
———
The meat of every programming language is variables – places where you store
data.
Variables are divided into and uniquely identified by the combination of:
prefix – determines the scope and extent (or lifetime) of the variable
name – an identifier consisting of ‘_’ and alfanumeric characters
postfix – determines the type of the variable: integer or string
Scope can be:
global – global to all servers
local – local to the server
account – attached to the account of the character identified by RID
character – attached to the character identified by RID
npc – attached to the NPC
scope – attached to the scope of the instance
Extent can be:
permanent – They still exist when the server resets.
temporary – They cease to exist when the server resets.
Prefix: scope and extent
nothing – A permanent variable attached to the character, the default
variable type.
“@” – A temporary variable attached to the character.
SVN versions before 2094 revision and RC5 version will also treat
‘l’ as a temporary variable prefix, so beware of having variable
names starting with ‘l’ if you want full backward compatibility.
“$” – A global permanent variable.
They are stored in “save\mapreg.txt” or database table mapreg
,
depending on server type.
“$@” – A global temporary variable.
This is important for scripts which are called with no RID
attached, that is, not triggered by a specific character object.
“.” – A NPC variable.
They exist in the NPC and dissapear when the server restarts or the
npc is reloaded. Can be accessed from inside the NPC or by calling
‘getvariableofnpc’.
“.@” – A scope variable.
They are unique to the instance and scope. Each instance has it’s
own scope that ends when the script ends. Calling a function with
callsub/callfunc starts a new scope, returning from the function
ends it. When a scope ends, it’s variables are converted to values
(‘return .@var;’ returns a value, not a reference).
“#” – A permanent local account variable.
They are stored with all the account data in “save\accreg.txt” in
TXT versions and in the SQL versions in the ‘global_reg_value’
table using type 2.
“##” – A permanent global account variable stored by the login server.
They are stored in “save\account.txt” and in the SQL versions in the
‘global_reg_value’ table, using type 1. The only difference you will
note from normal # variables is when you have multiple char-servers
connected to the same login server. The # variables are unique to
each char-server, while the ## variables are shared by all these
char-servers.
Postfix: integer or string
nothing – integer variable, can store positive and negative numbers, but only
whole numbers (so don’t expect to do any fractional math)
‘$’ – string variable, can store text
Examples:
name – permanent character integer variable
name$ – permanent character string variable
@name – temporary character integer variable
@name$ – temporary character string variable
$name – permanent global integer variable
$name$ – permanent global string variable
$@name – temporary global integer variable
$@name$ – temporary global string variable
.name – npc integer variable
.name$ – npc string variable
.@name – scope integer variable
.@name$ – scope string variable
#name – permanent local account integer variable
#name$ – permanent local account string variable
##name – permanent global account integer variable
##name$ – permanent global account string variable
If a variable was never set, it is considered to equal zero for integer
variables or an empty string (“”, nothing between the quotes) for string
variables. Once you set it to that, the variable is as good as forgotten
forever, and no trace remains of it even if it was stored with character or
account data.
Some variables are special, that is, they are already defined for you by the
scripting engine. You can see the full list somewhere in ‘db/const.txt’, which
is a file you should read, since it also allows you to replace lots of numbered
arguments for many commands with easier to read text. The special variables most
commonly used are all permanent character-based variables:
StatusPoint – Amount of status points remaining.
BaseLevel – Current base level
SkillPoint – Amount of skill points remaining
Class – Current job
Upper – 1 if the character is an advanced job class.
Zeny – Current amount of zeny
Sex – Character’s gender, 0 if female, 1 if male.
Weight – The weight the character currently carries.
MaxWeight – The maximum weight the character can carry.
JobLevel – Character’s job level
BaseExp – The amount of base experience points the character has.
Notice that it’s zero (or close) if the character just got a level.
JobExp – Same for job levels
NextBaseExp – Amount of experience points needed to reach the next base level.
NextJobExp – Same for job levels.
Hp – Current amount of hit points.
MaxHp – Maximum amount of hit points.
Sp – Current spell points.
MaxSp – Maximum amount of spell points.
BaseJob – This is sneaky, apparently meant for baby class support.
This will supposedly equal Job_Acolyte regardless of whether the
character is an acolyte or a baby acolyte, for example.
Karma – The character’s karma. Karma system is not fully functional, but
this doesn’t mean this doesn’t work at all. Not tested.
Manner – The character’s manner rating. Becomes negative if the player
utters words forbidden through the use of ‘manner.txt’ client-side
file.
While these behave as variables, do not always expect to just set them – it is
not certain whether this will work for all of them. Whenever there is a command
or a function to set something, it’s usually preferable to use that instead. The
notable exception is Zeny, which you can and often will address directly –
setting it will make the character own this number of zeny.
If you try to set Zeny to a negative number, the script will be terminated with an error.
播放HEVC編碼MP4沒有畫面的解決辦法
從今年4月番開始,很多字幕組開始使用新的編碼HEVC,也就是H265進行視頻壓制,很多播放器出現只有聲音沒有畫面的情況。也有一些用戶在播放某些編碼的MP4時出現沒有聲音或是無法播放的狀況。要解決這些問題,首先要弄清編解碼器和播放器的關係。
一個播放器能播放各種各樣的格式,最重要的是它的解碼器而不是播放器本身,播放器本身無關緊要。Windows Media Player本身並不支持rmvb、DivX、H265等格式,能播放這些格式是因為完美解碼、Win7codecs等將解碼器註冊到系統中,使其可以調用。國內的很多播放器如某某看看、完美解碼、暴風影音等均是自己先安裝一個播放器,再安裝很多類型的解碼器,讓自己的播放器調用自己安裝的編解碼器達到解碼效果。這種方式的好處是可以推廣自己的播放器,播放器也能智能選擇編碼。缺點是無法自由選擇解碼方式和分流器,如果某個格式不能播放,只能刪了換一個播放器。
編碼是各種各樣的,因此沒有任何一個播放器是萬能的,個人建議使用系統自帶的Windows Media Player配合一個可以自由設置的編解碼器,當出現播放問題時,可以嘗試修改分流器和解碼方式。下面以Shark007 ADVANCED Codecs(前身是Win7codecs)為例,說明常見類型不能播放的處理方法。
在解決問題之前首先安裝Win7codecs然後打開設置選中最下方的Shark007 SUGGESTED settings將它設置為默認編解碼器。
1)HEVC(H265)不能播放的設置方法。
如圖將Disable Windows Media Foundation前面的勾選去掉即可
2)x264-Hi10P不能播放的設置方法。
如圖將XVID/DIVX/MP4V in DirectShow從微軟解碼改為FFDShow解碼,建議將下面的MPEG2也改為FFDShow解碼,最下面的AAC音頻不要改為FFDShow解碼否則可能出現一些手機拍攝的MP4放不出聲音的狀況。
3)一些老的AVI文件不能播放的設置方法。
如圖左邊將AVI的分流器從微軟系統自帶改為LAV分流器即可。
說明1:視頻在播放時會先使用分流器,再使用解碼器分別對音頻和視頻進行解碼。如果文件無法打開說明分流器有問題,如果文件打開但沒有聲音或者沒有圖像,說明解碼器有問題,可以在設置中手動修改反復嘗試。
說明2:MP4、AVI只是視頻文件的封裝格式,文件的擴展名並不代表編碼,可以播放一個MP4文件並不代表可以播放其他MP4文件。同樣是MP4文件可以是H263、H264、H265等不同編碼,同樣是AVI文件可以是DIVX、Xvid等不同的編碼。
======
kujou_rin
[270604]大坂城落城400週年
又是一年6月4日,而歷史上的今天這個標題我也連續使用了好幾年了。每年都想寫點什麼但每年都是輕描淡寫一筆帶過,也許歸根結底是變得懶散不想動手了。那麼今年,依舊是和往年一樣的話題,談談歷史上的今天,400年前,1615年6月4日(西曆)。戰國時代最後一役,由德川家康、德川秀忠率領的德川軍對陣豐臣秀賴為首的豐臣軍的大坂之陣,以德川軍的勝利結束,大坂城落城,城池幾乎完全燒毀,豐臣家當主豐臣秀賴與淀夫人在倉庫中自盡。
豐臣家的滅亡,標誌著大阪之陣的結束,同時也是戰國時代的正式結束。這一年時任征夷大將軍的德川秀忠(實際上仍然是其父德川家康的二元政治)奏請朝廷使用了新的年號元和,這也標誌的德川時代的正式開始。直到西方思想所掀起的明治維新到來,才結束了德川幕府240多年的統治。今天,大坂城落城400週年之際,我們圍繞該話題來談談德川家的興起和豐臣家的滅亡。
一、豐臣家的唯一家主
從羽柴秀吉在織田信長在世時代嶄露頭角,到信長因本能寺事件去世,秀吉通過清須會議獨攬織田家大權。以及之後的排除異己,不斷消滅由織田家分裂的異見勢力,足以見得秀吉在亂世中的智慧與奸詐。繼承信長家的勢力後,秀吉不斷擴大其勢力,向天下人的目標邁進,在去年NHK的大河劇「黑田官兵衛」中也對秀吉的野心與智慧進行了描寫。我個人建議感興趣的也可以看一下大前年的「江-公主們的戰國」。
秀吉通過武力和智略,最終將大半日本收入囊中。而對於擁有東北最大勢力的德川,秀吉則通過外交手段,不惜將自己生母送往德川家成為人質,最終成功籠絡德川,使德川對秀吉俯首稱臣。通俗的說秀吉為了統一日本可謂不擇手段,無賴、殘忍、跪舔,而這種拿得起放得下的性格正是他成功統一日本的原因。一個農民出身的人,通過不斷努力最終受封關白一職統一日本被天皇賜姓豐臣,這也成為了後人講述勵志故事的典型,這種事情也是日本從古至今聞所未聞的,光榮公司所出品的遊戲「太閣立志傳」便是對秀吉建立豐臣家偉業的描寫。
當然農民出身的身份也正是豐臣家興衰史中最大的局限性,雖然編造了自己的公家出身,但內心依舊是一介草民,成為人上人之後隨之出現的就是暴發戶的心態。傾盡全國之金錢造就日本歷史上最大的城池,大坂城,外牆裝飾多用鍍金材料,內部有著著名的全鍍金的金色茶室,與當今迪拜人的土豪設計有的一比。當然這一切都向天下展示著豐臣家的權力與威嚴,並不為過,而暴發戶的心態帶來最多的是,獨斷與專橫,無法再接受任何反對意見,肆意妄為出爾反爾朝令夕改。晚年的秀吉,幾乎到了隨意處死反對者的地步,因此得到「殺生關白」的民間稱號。
豐臣家最終衰落我個人認為原因有以下幾個。其一是秀吉晚年時代判斷力喪失,不顧眾多大名反對獨斷的發起對朝鮮的侵略戰爭,並處罰反對者;其次是對基督教的鎮壓,早年藉助基督教之力對抗日本僧眾勢力的秀吉晚年因感受到基督教的威脅而開始鎮壓基督教,並扣押西方船隻處死幾十名傳教士(聖人),國際影響極為惡劣;再次是因為其老來得子,民間傳聞秀吉不是孩子生父,秀吉因此動怒將流出傳言的整條街道數百人全部處死;另外秀吉膝下無子時將關白之位傳給外甥豐臣秀次,而老來得子後反悔,隨即殺死了外甥秀次及其侍女、孩子一家39人;此外,在日本具有極高威望的茶道大師千利休,同時也是秀吉的舊友,也因反對秀吉而被賜死。種種惡行使豐臣家的威望衰落極大。
而最大的原因是豐臣家的權力幾乎集中於秀吉一人身上,秀吉死後豐臣家迅速敗落,加上秀吉是老來得子,其子秀賴當時還是個孩子,豐臣家大權落在淀夫人和家臣石田三成手中。而另一方面,秀吉死後石田三成則積極的進行與德川的對抗,最終在戰國史中最大戰役也是決定性的戰役關原之戰中落敗,造成豐臣家敗於德川家的不可挽回的局面。而石田和淀夫人的專橫跋扈也使豐臣家內部產生了不滿情緒,很多家臣因此背離豐臣投靠德川。大河劇中也多有描寫三成失道寡助的情節。
且讓我們八卦一下,關於豐臣秀賴與之前同樣是秀吉老來得子的鶴松不是秀吉親生子的謠言,其實野史上有諸多說法,傳的最盛的是秀賴是石田三成或是大野治長的孩子,三成即是秀吉的心腹,同時也是淀夫人的心腹,秀吉死後一直不遺餘力的支持著豐臣家(淀夫人和秀賴),而相傳三成乃是戰國第一美男子;而另一位大野治長則是淀夫人乳母的兒子,兩人也來往甚密。加上秀吉生前極好女色,共立側室十幾位,而城中的後宮女人則多達百人,但卻沒有一個孩子,因此有傳言秀吉不能生育,直到遇到茶茶(未來的淀夫人)才有了繼承人,因此民間野史「借種」一說不無道理。但是前幾年在日本歷史節目「歷史秘話」中,有學者發言指出大坂城後宮的管理極為森嚴,野史傳聞並不可信,秀賴很大程度上應該是秀吉的親生孩子。
二、德川家的亂世智慧
某天,有人問德川家康、織田信長、羽柴秀吉同一個問題,杜鵑不鳴怎麼辦。信長回答:殺之,而家康回答:待其鳴,秀吉則回答:逗其鳴。這其實是一個人盡皆知的典故,也是對戰國歷史中最關鍵三人性格最真實的表述。信長的性格急於求成,雖然開創了「天下布武」的事業,卻同樣因為其性格葬身本能寺;而秀吉則善於使用方法,終於完成一統大業;家康則善於坐享其成,在秀吉死後等待時機,最終建立德川盛世。
家康自幼身為人質在大名中輾轉生存,深知戰國的生存之道,在與織田結盟時雖為盟友但仍然受到家臣待遇,而在與豐臣的爭霸中,也願意暫且低頭臣服等待時機。他被稱為老奸巨猾,同時因為長壽民間外號「老烏龜」,在「戰國無雙」等作品中,他總以反派角色出現,永遠不是主角派,但在江戶幕府的歷史中,他卻是創立盛世的神功始祖。他所創立的幕府與政治體系堅如磐石堅持了幾百年,借用中國歷史上評價曹操的話,德川家康也算得上「治世之能臣,亂世之奸雄」。
豐臣秀吉時代在與豐臣的較量中,雖然德川家康始終無法壓制豐臣秀吉,但他一直都極力做到從未敗給秀吉,小牧長久手之戰中也同樣以勝利者的姿態議和結束。因此秀吉也一直對家康敬重有加,在豐臣時代中家康在豐臣家也有極高的地位。家康並不是身為秀吉的手下敗將而臣服,或者可以說家康從未真正對秀吉臣服過。大河劇「江」中也有秀吉臨死前囑咐秀賴稱家康為父的情節(可能是杜撰),足以見得豐臣時代中德川勢力的強大。
為了削弱德川的勢力,秀吉使用轉封的方式給了德川更大的土地將其支到遙遠的東北江戶,表面上已經立誓臣服的德川自然不能拒絕。江戶也就是現今的東京,在安土桃山時代及以前都是東北荒涼之地,而當時發達的地區主要集中於京都大阪近畿,也就是關西一帶。不過看過日本地形就會知道江戶一帶其實有日本最大的一片開闊平原,很利於城市的發展,德川家就在這天高皇帝遠的地方重新起家發展慢慢積攢勢力。
秀吉死後,德川家康的野心逐漸抬頭,多次挑撥三成引發矛盾。而一心保護豐臣家的三成為了消滅德川的野心,積極的應戰,最終以德川家康為首的東軍(德川軍、伊達軍、黑田軍等聯合軍)和以石田三成為首的西軍(石田豐臣軍、毛利軍、大谷軍等聯合軍)在貫穿日本東西以及山陰山陽道的交通要地關原展開決戰。幾十萬大軍對陣的關原之戰雖為史上最大規模戰役,卻僅僅一天就結束了。因石田的專橫而喪失人心,各大名紛紛倒戈。而具有公家身份的小早川秀秋的倒戈則成為東軍勝利的關鍵,西軍內部紛紛倒戈兵敗如山倒。而另一方面毛利家佈陣於山上,因為內部分裂,德川的支持者堵住山路使大軍無法參戰最終輸掉戰役。對於這段歷史感興趣的朋友可以看一下多年前的大河劇「葵-德川三代」。
目前保留下的文物中,德川家康戰前寄給各大名的信件多達百封,而石田三成寄給各大名的信件則寥寥無幾。因此有德川是得道者多助,石田是失道寡助的說法。但這終究只是一面之詞,德川寄出的信留下百封是因為德川是勝利者,而石田的信寥寥無幾是因為石田是失敗者。失敗者的信件被大家悉數銷毀,其歷史也被勝利者抹殺。我們在文學作品、影視作品中看見的石田三成也許並非歷史的真實。「借種」的淀夫人,專橫跋扈無人支持的三成,這些歷史又是誰書寫的呢。還是那句老話,歷史是勝利者書寫的,我們看見的三成,也僅僅是德川時代筆下的三成罷了。
1600年(西曆)關原的勝利讓德川成為第一大名,而豐臣家的威望一落千丈,垂死掙扎了十幾年後。德川家通過羞辱、挑撥、借機陷害找藉口的老辦法最終與豐臣家開戰。在長達半年的大阪之陣中,最終攻陷這座不落之城。1615年6月4日(西曆),大坂城落城,豐臣秀賴與淀夫人在倉庫自盡,豐臣家滅亡。從此日本進入德川幕府(又稱江戶幕府)統治時代,改年號為元和。德川幕府雖然創造了240多年的太平盛世,但由於其閉關鎖國政策,科技與思想遠遠落後西方。直到1853年美國的佩裡船長率艦隊抵達日本(史稱黑船來航),讓第一次看見蒸汽船的日本人震驚,從而成為了1867年大政奉還和明治維新的導火索。
明治維新雖然結束了德川的統治,但因坂本龍馬等人的努力,德川家最後以民主的方式和平退還政權。其後在議會中也獲得席位,至今德川的後人依舊經營著德川紀念財團。
三、今天的大阪城
也許有人會疑問前文的「大阪城」為何使用的寫法是「大坂城」,這是為了尊重和還原歷史。大阪城的寫法原本是「坂」字,但因幕末時代時局動蕩,維新前夕坂本等人企圖顛覆幕府政權,加上「坂」拆開文字解讀有武士謀反的意味,因此為了避諱將「大坂城」改為了「大阪城」。
當今的大阪城公園,已經成為關西旅遊的必經之地。而我們現在所看見的大阪城,實際上並非豐臣秀吉所建造大阪城的原貌。雖然大阪城一直保持五層天守的結構,但豐臣秀吉所修建的大阪城,是外牆均為黑色,瓦簷鑲金的設計,該城在前文所述的大阪之陣中被德川軍燒毀。其後在德川幕府時代,大阪城被重建為外牆均為白色的德川時代建築,而在1665年大阪城遭遇雷電引發的火災天守閣再次燒毀。直到1930年才由明治政府重建,重建風格為下四層為白色德川風格,第五層保持豐臣時代的黑色風格。而在1945年太平洋戰爭的大阪大空襲以及其後美軍管轄中再次失火導致部分建築受損,索性天守躲過一劫。因此我們現在所看見的大阪城公園的大阪城,是1930年重建,並在戰後考證翻修的大阪城。
從大阪城的歷史到大阪城的今日至此就全部講完了,因為最近工作生活較忙以及手頭也沒什麼資料,加上文章有一半是在火車上寫的,而且還分了兩天才寫完,文中的故事情節基本都是靠記憶胡謅,所以不免有很多疏漏和錯誤,如有讀者發現敬請指正。
完成於平成27年6月5日
kujou_rin
相關文章:歷史上的今天,大阪之陣
https://lilith.pro/nikki/1157
Discuz找回密碼出現參數錯誤的解決辦法
使用Discuz3.X的找回密碼功能後,點擊郵件收到的找回密碼鏈接,輸入信息卻被告知「參數錯誤」(如圖)
這是因為Discuz3.X採用了新的驗證機制,在驗證鏈接的hash之外還驗證了sign,但是修改密碼的頁面並沒有寫入這一項,因此需要我們手動修改。
解決辦法是:
打開source\module\member\member_getpasswd.php
在第32行找到
1 |
$uid = $_GET['uid']; |
在下面添加一行
1 |
$sign = $_GET['sign']; |
再打開template\default\member\getpasswd.htm
找到第8行
1 |
<form method="post" autocomplete="off" action="member.php?mod=getpasswd&uid=$uid&id=$hashid"> |
修改為
1 |
<form method="post" autocomplete="off" action="member.php?mod=getpasswd&uid=$uid&id=$hashid&sign=$sign"> |
重新點一下找回密碼鏈接發現問題已經解決啦。順便說一下,Discuz完全是把用戶當小白鼠忽悠。
======
kujou_rin