DataJoy

 Add comments  Tagged with:
032016
 

我有个习惯:Google Drive里有个名为“blog”的文件夹。一旦有题材可以写成博客,我就甩进去个文件,以题材为文件名,闲时再细写。

去年夏天,我收到一封来自 ShareLaTeX.com 的邮件。这是个LaTeX在线排版和协作的网站,我以前注册过。来信里说,他们新开发了名为 DataJoy 的项目,是个在线的Python和R编辑器。跟ShareLaTeX类似,只要访问getdatajoy.com,就可以在浏览器使用Python或R编程和调试,免去了本地安装的麻烦,而且方便协作。网站还提供了大量的代码示例和教程。

enter image description here

我大感兴趣,试了一下,觉得很棒。界面清爽,使用流畅,跟本地运行R没有多大区别。将来如果有机会从事跟R有关的教学,我就用这个网站作为教具了。这样想着,我就往博客文件夹里甩进一个名为 DataJoy.md 的文件,准备有空好好为此写一篇博客。

一晃一年过去了。

我现在所在的这个研究组,跟以前读博士时的研究组有很大不同。以前那个研究组,大家常用的操作系统是Ubuntu,数据处理用R语言,写论文用LaTeX,文献管理用Jabref+bibtex,于是我手头积累了一些有用的软件、代码和模板。到了现在这个研究组,我指望着把这些东西分享出来,并且跟同事在原有基础上做一些新东西。

然而,理想跟现实总是有距离。

现在这个研究组,操作系统用Windows,数据处理用MatLab,写论文用Word,文献管理用EndNote。跟以前比起来,可以算是豪华阵容。我攒的那些经验自用还可以,但是在协作和共享上就大打折扣。

于是,我对R的热情缺少了依托的平台,文件夹里那篇DataJoy.md就一直懒得写。

直到今天,我收到DataJoy发给用户的电邮。他们遗憾地通知用户,DataJoy将于2017年1月初关闭。原因是,在过去的两年里,用户增长得太慢,网站缺少投资,没有形成良好的商业模式,无力支撑他们的团队,尽管团队并不大。

这就关闭了?我心里喊,我还没来得及在博客上给你们做广告呢!要知道,每天都有几十甚至上百人来我的博客学习R语言呢!

发邮件的是DataJoy的两位创始人。看得出来,邮件的语气里充满了沮丧和低落,甚至像是没完全写完就匆匆发出来了。

我给他们回了一封信,表达惋惜和感谢,并希望将来DataJoy会有归来的那一天。

办公室窗外,蓝天白云,阳光明媚。这是阿尔卑斯山里凉爽宜人的夏季。然而,看着我那个“blog”文件夹里,堆积了很多题材想些而未写,再想想DataJoy,我的心情怎么也好不起来。

  13 Responses to “DataJoy”

  1. 今天上去官网看了一下,官方竟然登出了“DataJoy is shutting down”,说是2017年1月2日就要关闭了,太可惜了!

  2. 测试一下评论功能。

  3. 博主提到的什么我实在是不懂·······

  4. 你真的是为R语言的发展操碎的心!

  5. 大鹏,读了你写的R 菜鸟入门,受益匪浅,现在想获得你在文章提到 用R画一个立体的红心的代码,不知道能否跟我共享一下,非常感谢。我邮箱是 lai@ibcas.ac.cn

    • 代码如下:

      xtheta=function(x,theta,y,w=0,tt=0)
      {
          (x^2+(x*tan(theta))^2+2*y^2+0.1*cos(w*tt)-0.9)^3-(x^2+y^2/9)*(x*tan(theta))^3;
      }
      fz=function(z,x,y,w=0,tt=0)
      {
          (x^2+2*y^2+z^2+0.1*cos(w*tt)-0.9)^3-(x^2+y^2/9)*z^3;
      }
      
      n=100;
      y=seq(-2,2,length.out=n);
      y0=xx=zz=NULL;
      for(i in 1:length(y))
      {
          theta=seq(-pi/2,1.5*pi,length.out=n);
          solvex=function(theta,y)
          {
              if(theta==-pi/2 | theta==pi/2 | theta==1.5*pi)
              {
                  return(0);
              }else if(theta>-pi/2 & theta<pi/2){
                  interval=c(0,2);
              }else{
                  interval=c(-2,0);
              }
              x.root=uniroot(xtheta,interval,theta,y)$root;
              return(x.root);
          }
          if(xtheta(0,pi/4,y[i])*xtheta(2,pi/4,y[i])>0) next;
          y0=c(y0,y[i]);
          x=sapply(theta,solvex,y[i]);
          zplus=uniroot(fz,c(0,2),0,y[i])$root;
          zminus=uniroot(fz,c(-2,0),0,y[i])$root;
          z=numeric(n);
          z[x!=0]=x[x!=0]*tan(theta[x!=0]);
          z[x==0]=(theta[x==0]==pi/2)*zplus+(theta[x==0]!=pi/2)*zminus;
          xx=cbind(xx,x);
          zz=cbind(zz,z);
      }
      yy=matrix(rep(y0,n),n,length(y0),byrow=TRUE);
      library(rgl);
      persp3d(zz,xx,yy,col="red",xlim=c(-1,1),ylim=c(-1,1),zlim=c(-1,1),axes=FALSE,box=FALSE,xlab="",ylab="",zlab="");
      persp3d(zz,xx,yy,col="red",xlim=c(-2,2),ylim=c(-2,2),zlim=c(-2,2),axes=FALSE,box=FALSE,xlab="",ylab="",zlab="");
      
  6. 在线编辑,这样的功能的确很牛。

  7. dataJoy能开源多好,免费把在线编辑器提供出来,啊哈哈

 填写评论

(必填)

(必填)

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>