Google Reader今天换了新的界面,变的跟Google Docs的页面风格一致了。登陆Reader的时候还弹出来窗口说是为了使页面更加简洁还有保持所有产品的风格一致等等,从今天开始全面采用新界面。但是Google Reader里面拿掉了Share的功能,取而代之的是一个Google Plus的+1按钮和Share on Google+。这个改动让我非常难以适应,给我带来了很多问题。
1. 以前把一篇文章分享之后,在Reader里面有一个View Shared Items链接,可以很方便的看到自己曾经分享过的文章,对于我自己来说,因为我会经常的回头看我觉着有价值的文章,点击这个链接就十分方便。现在不仅仅拿掉了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。现在觉着黑色的背景确实看起来还不错。
我就是喜欢在这些无关紧要的地方琢磨很长时间。
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.cppblog.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 }