Google Reader今天換了新的界面,變的跟Google Docs的頁面風格一致了。登陸Reader的時候還彈出來窗口說是為了使頁面更加簡潔還有保持所有產品的風格一致等等,從今天開始全面采用新界面。但是Google Reader里面拿掉了Share的功能,取而代之的是一個Google Plus的+1按鈕和Share on Google+。這個改動讓我非常難以適應,給我帶來了很多問題。
1. 以前把一篇文章分享之后,在Reader里面有一個View Shared Items鏈接,可以很方便的看到自己曾經分享過的文章,對于我自己來說,因為我會經常的回頭看我覺著有價值的文章,點擊這個鏈接就十分方便?,F在不僅僅拿掉了share的圖標,連那個自己的分享頁面在Reader的主界面里面也沒有鏈接。點了+1按鈕或者在Share on Google+之后,這個文章會出現在Google Plus的頁面,并且在那里并不是直接顯示全文,而是只顯示一個文章標題和內容摘要,想要讀文章還有點到鏈接里面去看;
2. 如果一個文章在發表后被刪除了(這實在太常見了),那么即使跑到+1頁面也看不到那個文章了,而以前的Reader是直接把文章復制到一個頁面的,不管原文如何改動,對于分享頁面并無影響;
3. 以前的曾經分享的文章跟現在的Google Plus完全沒了聯系,等于說即使我現在開始用+1按鈕,我還是要為了找不同的文章而不得不分別搜索兩個地方;
4. 我還是比較依賴于我follow的人推薦的文章的,這樣在質量上有保證,可以大大減少在爛文章浪費的時間的可能,而現在也不能查看follow的人推薦文章了;
5. Reader可以通過https訪問,但是國內并不能訪問Google+(不知https是否有效),那么國內的朋友等于是需要額外的功夫才能做跟以前一樣的事情,上次跟浩總聊天,他說現在翻*墻似乎越來越困難了。
好在之前分享的文章還在,我重新訂閱了自己的Shared Items,算是勉強是個辦法,但是以后新的文章如何分享,我還真不知道。把分享改成加星號似乎是個解決辦法,但是它已經遠遠比不上簡單的share所帶來的效果。
我非常珍惜自己曾經分享的文章,用Reader時間不短了,我知道Reader上有太多的條目只是當時看起來覺著有趣,但回想一下卻不能給自己帶來任何價值,真正有價值的文章是需要反反復復去讀的。除了這么多的不安之外,還能讓我稍微安心的是,我已經得到了Reader所能帶給我的一些改變,我并沒有之前那么依賴它了,甚至我正在慢慢的從中抽身出來,把時間用在去讀更多的好書上面。我是一個反SNS主義者,我對于所有SNS性質的東西都感到不太舒服,我停用了校內,基本不上facebook,從未在Google Plus上面分享過任何文章,所以可以肯定的是,將來我也肯定不會花太多時間在Google Plus上。
Google Reader的這次改變,給我帶來了這么多不便,我也正好借此機會慢慢淡出GR了。
http://blog.csdn.net/winterttr/article/details/2590741
作者:winterTTr
我想,這個標題或許是很多初學者的問題。尤其是像我這樣的對C/C++比較熟悉,剛剛進入python殿堂的朋友們
。C/C++的函數參數的傳遞方式根深蒂固的影響這我們的思維--引用?傳值?究竟是那種呢。
呵呵,語言的特性決定了是使用的方法,那么,現在我們來探究一下python的函數參數傳遞方式。
在開始之前,我們有必要分清一下python的一些基礎概念。
首先要說的是:變量 與 對象
在python中,類型屬于對象,變量是沒有類型的,這正是python的語言特性,也是吸引著很多pythoner的一點。所有的變量都可以理解 是內存中一個對象的“引用”,或者,也可以看似c中void*的感覺。所以,希望大家在看到一個python變量的時候,把變量和真正的內存對象分開。
類型是屬于對象的,而不是變量。這樣,很多問題就容易思考了。
例如:
nfoo = 1 #一個指向int數據類型的nfoo(再次提醒,nfoo沒有類型)
lstFoo = [1] #一個指向list類型的lstFoo,這個list中包含一個整數1。
對應于上一個概念,就必須引出另了另一概念,這就是“可更改”(mutable)與“不可更改”(immutable)對象。
對于python比較熟悉的人們都應該了解這個事實,在python中,strings, tuples, 和numbers是不可更改的對象,而list,dict等則是可以修改的對象。那么,這些所謂的可改變和不可改變影響著什么呢?
還是上面的例子:
nfoo = 2
這時,內存中原始的1對象因為不能改變,于是被“拋棄”,另nfoo指向一個新的int對象,其值為2
lstFoo[0] = 2
更改list中第一個元素的值,因為list是可改變的,所以,第一個元素變更為2,其實應該說有一個新int對象被指定給lstFoo 所指向的對象的第一個值,但是對于lstFoo 來說,所指向的對象,并沒有變化,就是這個看似void*的變量所指向的對象仍舊是剛剛的那個有一個int對象的list。(聽著有點暈吧,仔細琢磨一下 就明白了,嘿)
好了,被我這么填鴨似的復習了一下python的基礎知識,改轉回題目的問題了,Python的函數參數傳遞:傳值?引用?
對于變量(與對象相對的概念),其實,python函數參數傳遞可以理解為就是變量傳值操作(注意哦,我說的是變量,不是對象 =_= )
接著說例子好了:
def ChangeInt( a ):
a = 10 # change the number
nfoo = 2
ChangeInt(nfoo)
print nfoo #結果是2
這時發生了什么,有一個int對象2,和指向它的變量nfoo,當傳遞給ChangeInt的時候,按照傳值的方式,復制了變量nfoo的值,這樣,a就是nfoo指向同一個Int對象了,函數中a=10的時候,發生什么?
(還記得我上面講到的那些概念么),int是不能更改的對象,于是,做了一個新的int對象,另a指向它(但是此時,被變量nfoo指向的對象,沒有發生變化),于是在外面的感覺就是函數沒有改變nfoo的值,看起來像C++中的傳值方式。
def ChangeList( a ):
a[0] = 10 # change the number
lstFoo = [2]
ChangeList(lstFoo )
print nfoo #結果是[10]
當傳遞給ChangeList的時候,變量仍舊按照“傳值”的方式,復制了變量lstFoo 的值,于是a和lstFoo 指向同一個對象,但是,list是可以改變的對象,對a[0]的操作,就是對lstFoo指向的對象的內容的操作,于是,這時的a[0] = 10,就是更改了lstFoo 指向的對象的第一個元素,所以,再次輸出lstFoo 時,顯示[10],內容被改變了,看起來,像C++中的按引用傳遞。
恩,現在是不是對python中的變量和對象的概念有了更深入的理解了呢?
通過我上面的解釋,我想大家也可以自己搞定其他類型對象的傳遞問題了吧。
function afunc
{
echo in fnction: $0 $1 $2
var1="in function"
echo var1: $var1
}
var1="outside function"
echo var1: $var1
echo $0: $1 $2
afunc funcarg1 funcarg2
echo var1: $var1
echo $0: $1 $2
OUTPUT:
./ascript: arg1 arg2
in fnction: ./ascript funcarg1 funcarg2
var1: in function
var1: in function
./ascript: arg1 arg2
說明var1在afunc內部被改變了。shell的局部變量跟c語言有些差別,這里默認所有外部定義的變量,在函數內部可以訪問并且可以改變。即外部定義的變量默認為全局變量。
若想在afunc內部定義一個局部變量,則需要顯式的加上local var1.
待續
把vim的配色方案,還有terminal的配色方案弄好了。
vim像是一個有著無窮魔力的神器,我需要不停的學習才能在使用的時候能夠得心應手。
vim的配色方案選擇了,jellybeans.vim. 去vim.org站內搜索一下就ok?,F在覺著黑色的背景確實看起來還不錯。
我就是喜歡在這些無關緊要的地方琢磨很長時間。
ASP.NET
通過BS結構向ftp上傳文件的時候,出現權限錯誤,不能創建文件。
搜索了半天之后,該文件夾權限,更改servu設置,都無濟于事。
最終還是這個辦法解決了問題:
要將 ASP.NET 訪問權限授予某個文件,請在資源管理器中右擊該文件,選擇“屬性”,然后選擇“安全”選項卡。單擊“添加”添加適當的用戶或組。突出顯示 ASP.NET 帳戶,選中所需訪問權限對應的框。
在 Web.Config 中添加如下代碼,就OK了
<authentication mode="Windows"/>
<identity impersonate="true" userName="用戶名" password="密碼"/> //添加這句
需要粘貼的東西多了以后,發現多重粘貼實在是個必要的功能。
這里推薦ClipX.
默認是Ctrl+Shift+Insert調出歷史,我設置成了Ctrl+Shift+X,非常方便。
它的官網在這里:http://bluemars.org/clipx/
假如主鍵id是自增的,插入一條記錄后如何直接返回該id值?
之間寫webservice的時候,很傻,都是先插入以后,再寫一個select語句,有時候會因為數據的更新導致問題。
解決方法很簡單:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName
水題。
看到網上一個代碼挺有意思的,要我肯定寫不了這么簡潔。exp的使用很精髓。
原文:
http://www.shnenglu.com/syhd142/articles/130347.html
1 #include <stdio.h>
2 #include <string.h>
3
4 #define N 20
5
6 const int exp[11] = {0, 128, 64, 32, 16, 8, 0, 4, 2, 1};
7
8 int main()
9 {
10 //freopen("out.txt", "w", stdout);
11 char data[N];
12 while(gets(data))
13 {
14 int sum = 0;
15 int l = strlen(data);
16 if(data[0] != '|') continue;
17 for(int i = 1; i < l - 1; i++)
18 {
19 if(data[i] == '.') continue;
20 if(data[i] == 'o') sum += exp[i];
21 }
22 printf("%c", sum);
23 }
24 return 0;
25 }