技术:转载:专访SegmentFault创始人祁宁
原地址:http://www.infoq.com/cn/articles/interview-segmentfault-sunny-joyqi
社会化问答网站自去年起就成为了互联网行业的热点之一,针对程序员的垂直类问答网站也已经出现,本文所提到的SegmentFault(思问)就是其中典型的代表,我们采访到了高阳(@高阳Sunny)和祁宁(@joyqi),以下是详细的采访内容:
InfoQ:请两位分别做下自我介绍?
祁宁:我叫祁宁,微博ID是@joyqi,在SegmentFault上的个人主页是joyqi。07年毕业,08年到10年在阿里巴巴工作。现在在北京的一家创业公司从事互联网游戏的开发工作,是SegmentFault网站的技术负责人。以前还曾做过一些开源项目,其中有一个大家非常喜欢的开源博客项目Typecho,还有其它一些小的开源项目。
高阳:我叫高阳,英文名字Sunny,微博ID是@高阳Sunny,在SegmentFault上的个人主页是Sunny。我接触互联网应该算比较早的,在高中时就接触互联网,当初一直在给校内去做一些事情。在那个大学只上了三个月之后,有一个机会来北京,也就是现在祁宁所在的公司。然后到了2011年,我跳槽到新公司Tech2IPO。业余时间,我喜欢关注就互联网产品趋势,在SegmentFault主要负责运营和推广的工作。
InfoQ:能否简单谈一下国内问答网站的发展,以及SegmentFault的技术背景呢?
祁宁:我们最早接触的国内问答网站就是百度知道,但是对于行业内的垂直问答网站来说国内的发展还是比较晚的,至少在2010年的时候,我们还没有接触到很专门的问答网站,很多网站基本上是用来把问答作为一个子板块来做,比如说ITEye的问答频道还有CSDN论坛都会有一些这样的子板块,但是作为专门的问答网站在国内还是很少找到,针对程序员的就更少,然后我们SegmentFault起步也是看到了这一点。
高阳:社会化问答受到国内大部分人关注的主要是两个网站,一个就是Quora,再一个就是Stack Overflow。其实在2011年的时候Quora受到很多人的关注,因为他们拿到了比较大的一个投资。之后还有像Stack Overflow的增长速度也是非常之快。同时,还出现了其他的一些社会化问答网站,比如像Form Spring、friend.ly这种,都是类似于通过问答去交友的一类网站,这类网站更加社会化,国内也看到了这样的一个趋势,现在也有很多创业者在摸索。然后国内会出现了知乎,知乎得到了创新工厂的投资,我有一个之前在盛大的朋友也做了一个叫做mifan.me的这样一个问答网站,也在做一些尝试。
当时我跟祁宁进行了一次长时间的沟通,当时是抱着试试看的心理,正好也注册了一个比较有意思的域名,想把这个东西给做出来,于是大家花了一个多月的时间把SegmentFault给做了出来,我相信在互联网发展之后,两种人才会特别突出,一类是程序员,再一个就是设计师,所以我们想借助一些体验较好的社区,通过问答的这种形式把这件事给做起来,我们认为这件事本身是一件非常有价值的事情,很值得去做。
InfoQ:你们认为Stack Overflow、Quora的成功之处有哪些?
高阳:首先我谈一下Quora,他的创始人之前在FaceBook工作。Quora从一开始就非常注重用户群,他们认为一个社区要发展就必须要有Power User,他们一开始的用户大部分都是硅谷的精英,有了这样的一批高质量用户,高质量问答就是水到渠成的事情了。其次,Quora控制注册人数,通过邀请机制,首先由内部人员邀请其朋友们过来。Quora里面有更多的社交元素在里面。比如说我可以直接关注这个人,然后在上面给他留言或进行评论交流之类。还有一个就是他们的邀请机制,他们是如何控制中国用户呢?中国用户不能直接注册,必须得通过Twitter或FaceBook才能登录,或是直接通过邀请,因为Face book跟Twitter被墙的原因,这也一定程度上也限制了中国用户的使用。当时我也是Quora的第一批用户,他们很明确规定,在上面回答问题必须是英文,当时我们在上面也问了很多中文的问题,但都被他们官方删除了。
像Stack Overflow的两个创始人,应该是美国比较知名的两个技术博主,非常有名,在国内也许有很多人知道。他们在做问答之前,有很长时间的一个积累。从08年开始做,Stack Overflow只是Stack Exchange下面的一个子站点,但是发展却是十分迅猛。我认为这里面最重要的一点,就是人群定位精准,面向程序员。再一点就是解答,提出的问题得到别人回答之后,会让用户感觉有意义,再通过一些比较不错的激励机制,就使得用户对网站更加地有黏性。
编程:在MATLAB中画半球、半圆锥、椭球面、双叶双曲面
源代码及对应的图像:
[cc lang=”matlab”]
%上半球
figure;
[x,y,z]=sphere(30);
z(z<0)=nan;
surf(x,y,z);
[/cc]
密码保护:IDEA!:远程MATLAB的一种方法——其运行逻辑图
数学:幂函数、指数函数和对数函数的图像(MATLAB绘制)
幂函数图像:
实现代码:
[cc lang=”matlab”]
clear;
clc;
x_left=-5;x_right=5; %X轴的左限和右限
y_down=-5;y_up=5; %Y轴的上限和下限
x=(x_left:0.01:x_right); %生成X数据组
y0=x;
figure; %生成一个图像
axis on;
title(‘幂函数变化图’,’FontName’,’Tahoma’,’FontWeight’,’Bold’,’FontSize’,14);
xlabel(‘X轴’,’FontName’,’Tahoma’,’FontSize’,12);
ylabel(‘Y轴’,’FontName’,’Tahoma’,’FontSize’,12,’Rotation’,0);
set(gca,’FontName’,’Tahoma’,’FontSize’,10);
set(gca,’XLim’,[x_left x_right]);
set(gca,’YLim’,[x_left y_up]);
axis square; %使得X轴和Y轴长短显示的一样
hold on;
plot(0,0,’.k’); %原点
plot(x,0,’-k’); %X轴
plot(0,y0,’-k’); %Y轴
%plot(x,1,’-k’); %直线y=1线
%plot(x,y0,’-r’); %直线y=x,用于观察反函数的对称性图像
pause;
for a=0.25:0.25:3;
y1=x.^a; %幂函数
plot(x,y1); %画幂函数
pause(1);
end
[/cc]
密码保护:资料+IDEA!:远程信息处理(系统)
编程:[转载教程]MATLAB对于文本文件(txt)数据读取的技巧总结
振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html
MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“—-转—-”标注,原作者略去,在此对所有原作者表示感谢!
特别说明:由于大家在 I/O 存取上以 txt 文件为主,且读取比存储更麻烦(存储的话 fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。
一. 基本知识:
————————————————–转—————————————————-
1. 二进制文件与文本文件的区别:
将文件看作是由一个一个字节(byte) 组成的, 那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:
ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASCII码: 00110101 00110110 00110111 00111000
↓ ↓ ↓ ↓
十进制码: 5 6 7 8
共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。
编程:MATLAB的坐标轴操作(包含一些画图的参数)(转自互联网)
title([‘The ‘ num2str(iter) ‘th generation’], ‘FontName’,’Times New Roman’,’FontSize’,10);
xlabel(‘$x_{1}$’,’Interpreter’,’LaTex’,’FontName’,’Times New Roman’,’FontSize’,10);
ylabel(‘$x_{2}$’,’Interpreter’,’LaTex’,’FontName’,’Times New Roman’,’FontSize’,10);
gtext(‘Omega^{0}’,’FontName’,’Times New Roman’,’FontSize’,10);
set(gca,’XTick’,[0:pi/3:2*pi]) 设置所要显示坐标轴刻度,
set(gca,’XTickLabel’,[0:pi/3:2*pi]) 给这些数据加标签
set(gca,’FontName’,’Times New Roman’,’FontSize’,10) 设置坐标轴字体
gca是单词Get current axes handle的缩写,获得坐标轴句柄。(不知道matlab为什么不自动对应数据加标签,还需要多一条命令)出来的图形
坐标轴标注:
1. 控制坐标轴尺度长度:set(gca,’XLim’,[-pi/2 pi])
2. 定制自己想标注的刻度:
(1)set(gca,’XTick’,[-pi/2:pi/4:pi]) %%%坐标轴最小值,步长,最大值
(2)set(gca,’XTickLabel’,{‘-pi/2’ ‘-pi/4:’ ‘0’ ‘pi/4’ ‘pi/2’ ‘pi*3/4’ ‘pi’})
3. 反转坐标轴:set(gca,’XDir’,’reverse’)
4. 上下标及latex公式
输下标:_{wb}
输上标:^{0.5}
输latex公式:
text(‘Interpreter’,’latex’,…
‘String’,’$$int_0^x!int_y dF(u,v)$$’,…
‘Position’,[.5 .5],…
‘FontSize’,16)
在Matlab中输入上标、下标、特殊符号或字体:
bf,it,rm表示黑体,斜体,正体字符
上标用 ^(指数),下标用 _(下划线)
调用方式为: ^{任意字符}, _{任意字符}, 注意{}的使用!
希腊字母等特殊字符用 加拼音如:
后字母大写的,表示是大写(如Ω Omega),小字母的,表示小写(如ω omega)
α alpha β beta γ gamma θ theta Θ Theta
Г Gamma δ delta Δ Delta ξ xi Ξ Xi Ω Omega
η elta ε epsilong ζ zeta μ miu υ nu τ tau
λ lamda Λ Lamda π pi Π Pi σ sigma Σ Sigma
φ phi Φ Phi ψ psi Ψ Psi χ chi ω omega
< leq > geq 不等于 neq << ll >> gg
正负 pm 左箭头 leftarrow 右箭头 rightarrow 上箭头 uparrow
体会以下两例:
figure, title(‘zeta^{-t}sint’);
figure, title(‘x~{chi}_{alpha}^{2}(3)’);
5. 坐标轴的视点
1、坐标轴的视点(viewpoint):从哪个方向看整个坐标系统,这决定了坐标轴的方向和位置,通过view函数实现视点的设置;
view([z y ]):(将坐标系统想象为一座房子,而自己是个会飞的天使,最初你在房子的北,海拔角度为0的位置,这是时你的视角是view[0 0],之后可以根据需要设置z和y的值,分别是绕房子转动的方向,和沿空间轴向上妃的高度)z表示视角沿z轴(正方向)旋转的角度,y表示视角沿y轴(水平面)旋转的角度
2、坐标轴显示、关闭、样式
axis off; % 去掉坐标轴
axis tight; % 紧坐标轴
axis equal; % 等比坐标轴
axis([-0.1, 8.1, -1.1, 1.1]); % 坐标轴的显示范围
% gca: gca, h=figure(…);
set(gca, ‘XLim’,[3 40]); % X轴的数据显示范围
set(gca, ‘XTick’,[-3.14,0,3.14] ); % X轴的记号点
set(gca, ‘XTicklabel’,{‘-pi’,’0′,’pi’}); % X轴的记号
set(gca, ‘XTick’, []); % 清除X轴的记号点
set(gca, ‘XGrid’,’on’); % X轴的网格
set(gca, ‘XDir’,’reverse’); % 逆转X轴
set(gca, ‘XColor’,’red’); % X轴的颜色
3、设置x,y轴位置
set(gca,’YAxisLocation’,’right’) % y轴的刻度设置到右侧
编程:用MATLAB绘制对数图像
[cc lang=”matlab”]
clear;
figure;
hold on;
grid;
x=logspace(0,5,20);
ya=log10(x);
yb=log(x)/log(1/10);
plot(x,ya);
plot(x,yb);
[/cc]
得到图像:
编程:MATLAB命令收录
管理命令和函数
help 在线帮助文件
doc 装入超文本说明
what M、MAT、MEX文件的目录列表
type 列出M文件
lookfor 通过help条目搜索关键字
which 定位函数和文件
Demo 运行演示程序
Path 控制MATLAB的搜索路径
管理变量和工作空间
Who 列出当前变量
Whos 列出当前变量(长表)
编程:MATLAB实现粒子二维随机运动轨迹
代码如下:
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 |
clear; n=10;%粒子数 step=200; %粒子前进的步数 jump=0.1; %每前进一步粒子的跳跃位置,这里认为是一个自然数,甚至程序中给出小数也可以。 figure; %创建绘图窗口 hold on; %打开重绘 grid; %显示网格 %以下是为了显示两个上下极限概率的边界 x_line=(1:step); y_line_upper=jump*x_line; %上边界的y值 y_line_lower=-jump*x_line; %下边界的y值 plot(x_line,y_line_upper); %绘制上边界 plot(x_line,y_line_lower); %绘制下边界 clear x_line;clear y_line_upper;clear y_line_lower; %清除这几个变量,节省内存 for m=1:n; %粒子数(n)个循环 move_x=zeros(100); %初始化粒子的横坐标位置数组 move_y=zeros(100); %初始化粒子的纵坐标位置数组 y=0; %初始位置的纵坐标 for x=1:step; %粒子随机前进500步 c=rand(1); %生成随机数 %以下生成的是非等概率分布 if c<=0.20 a=-jump; %概率分布为1/4 elseif c>0.10 && c<0.70 a=0; %概率分布为1/2 else a=jump; %概率分布为1/4 end y=y+a;%纵坐标y改变,横坐标是步长j move_x(x)=x; %把当前步长的粒子位置横坐标给位置数组 move_y(x)=y; %把当前步长的粒子位置纵坐标给位置数组 plot(x,y,'.'); %绘当前位置点 pause(0.00001);%延时绘图,动画显示 end plot(move_x,move_y,'r');%将点连线,形成粒子的运动轨迹 end clear all; %清除所有变量 |
视频演示:待更新
运行结果图展示:
3个粒子的轨迹:
10个粒子的轨迹
50个粒子的轨迹
100个粒子的轨迹
wordpress技术:利用插件在博客中在线显示pdf文档
使用插件:Google Doc Embedder
官方下载地址:http://downloads.wordpress.org/plugin/google-document-embedder.zip
Lets you embed MS Office, PDF, and many other file types in a web page using the Google Docs Viewer (no Flash or PDF browser plug-ins required).
Installation:
- Upload the entire
google-document-embedder
folder to the/wp-content/plugins/
directory. - Activate the plugin through the ‘Plugins’ menu in WordPress.
- Done.
Upload the documents to your site using the media upload facility built into WordPress, via FTP, or link to documents on another (public) site. Use the Media Library or Google Doc Embedder button in the Visual editor to build the appropriate shortcode, or use the documentation.
For basic manual instructions, please see the FAQ. For advanced usage, see the web site.
Go to “GDE Settings” (under “Settings” in the admin panel) to change defaults, or override individually using the shortcode syntax in the FAQ.
编程:怎样用MATLAB制作动画
电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放。这是其它三种动画制作方法所不具备的。
MATLAB中,创建电影动画的过程分为以下四步:
step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。
step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。
getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。
该函数格式有:
(1)F=gefframe,从当前图形框中得到动画帧
(2)F=gefframe(h),从图形句柄h中得到动画帧
(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧
step3:调用movie函数按照指定的速度和次数运行该电影动画。
当创建了一系列的动画帧后,可以利用movie函数播放这些动画帧。
该函数的主要格式有:
(1)movie(M),将矩阵M中的动画帧播放一次
(2)movie(M,n),将矩阵M中的动画帧播放n次
(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
step4:调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。这样,即使脱离了matlab环境都可以播放动画。