Wolfram mathematica 使用Mathematica和StackOverflow API查看新的Mathematica问题

Wolfram mathematica 使用Mathematica和StackOverflow API查看新的Mathematica问题,wolfram-mathematica,stackexchange-api,Wolfram Mathematica,Stackexchange Api,除非巫师先生正在度假,否则很难克服这种似乎无所不在、无所不知的现象。使用Mathematica和StackOverflow API,我们怎么能超过他呢?其实很简单。您所需要的只是以下内容 定义监视任务: storedTitle = ""; mySOWatchTask = CreateScheduledTask[ { lastTitle = "title" /. ("questions" /. Import["http://api.stackover

除非巫师先生正在度假,否则很难克服这种似乎无所不在、无所不知的现象。使用Mathematica和StackOverflow API,我们怎么能超过他呢?

其实很简单。您所需要的只是以下内容

定义监视任务:

storedTitle = "";

mySOWatchTask =
  CreateScheduledTask[
   {
    lastTitle = 
    "title" /. ("questions" /. 
        Import["http://api.stackoverflow.com/1.1/questions?key=\
                QEpjCjsXYE6s_kZEkFr4Lw&page=1&pagesize=1&sort=creation&tagged=\
                mathematica", "JSON"])[[1]];
    If[lastTitle != storedTitle, 
      storedTitle = lastTitle; 
      EmitSound[Sound[SoundNote[]]]; 
      MessageDialog["New question: " <> lastTitle]
    ];
    },
   60
   ];
停下来:

 StopScheduledTask[mySOWatchTask];
看看在运行什么:

 ScheduledTasks[] // Shallow
删除任务:

 RemoveScheduledTask[mySOWatchTask];
或所有任务:

RemoveScheduledTask[ScheduledTasks[]];
它每分钟轮询一次(),并在新问题出现时显示对话框和播放声音

它的美妙之处在于:它使用了Mathematica 8,而我们都知道Wizard先生还没有这个功能;-)

请注意,SO API被大量缓存,因此响应可能不会直接出现。我也没有对此进行过广泛的测试

编辑

请注意,上面使用的密钥(应用程序id)仅用于此小型Mathematica应用程序。如果你需要一个不同的应用程序,你可以得到一个自己在一个快速和无痛的过程。这花了我不到一分钟的时间。

这是Sjoerd解决方案的一个变体

主要区别在于使用固定单元格而不是弹出对话框。该单元格有一个指向新帖子的链接,以及一个将停靠单元格清除为先前状态的按钮

另一个区别是使用问题ID而不是标题来确定新职位。我知道标题有时会被编辑,所以在这种情况下,这会触发一个新的帖子

storedTitle = "";
storedID = 0;
mySOWatchTask = 
  CreateScheduledTask[{lastTitle, 
     lastID} = {"title", 
      "question_id"} /. ("questions" /. 
        Import["http://api.stackoverflow.com/1.1/questions?key=       \
         QEpjCjsXYE6s_kZEkFr4Lw&page=1&pagesize=1&sort=creation&\
tagged=                mathematica", "JSON"])[[1]];
   If[lastID != storedID,
    storedTitle = lastTitle;
    storedID = lastID;
    SetOptions[$FrontEndSession, 
     DockedCells -> 
      Cell[BoxData[
        ToBoxes[Style[
          With[{dock = Options[$FrontEndSession, DockedCells]}, 
           Grid[{{Button[Style["\[CircleTimes]", 16], 
               SetOptions[$FrontEndSession, dock], 
               Appearance -> None], "New StackOverflow question: ", 
              Hyperlink[lastTitle, 
               "http://stackoverflow.com/questions/" <> 
                ToString[lastID]]}}, 
            Alignment -> {{Left, Left, Left}}, 
            ItemSize -> {{2, 14, Scaled[0.7]}}]], 
          FontFamily -> "Times"]]], "DockedCell", 
       Background -> Orange]]; EmitSound[Sound[SoundNote[]]]];, 60];
storedTitle=”“;
storedID=0;
mySOWatchTask=
CreateScheduledTask[{lastTitle,
lastID}={“标题”,
“问题_id”}/(“问题”/)。
导入[”http://api.stackoverflow.com/1.1/questions?key=       \
QEpjCjsXYE6s_kZEkFr4Lw&page=1&pagesize=1&sort=creation&\
tagged=mathematica“,”JSON“])[[1]];
如果[lastID!=storedID,
storedTitle=lastTitle;
storedID=lastID;
SetOptions[$FrontEndSession,
DockedCells->
单元格[BoxData][
托博克斯[风格][
使用[{dock=Options[$FrontEndSession,dockdcells]},
网格[{{Button[Style[“\[CircleTimes]”,16],
SetOptions[$FrontEndSession,dock],
外观->无],“新堆栈溢出问题:”,
超级链接[最新标题,
"http://stackoverflow.com/questions/"  
ToString[lastID]}},
对齐->{Left,Left,Left},
ItemSize->{{2,14,缩放[0.7]}}],,
FontFamily->“Times”]]],“DockedCell”,
背景->橙色]];发射声音[Sound[SoundNote[]]];,60];

@bzlm它属于上述程序。“钥匙”这个名字用词不当。这实际上是一个用于使用统计的应用程序id。我将发布另一个问题:“如何为@Mr…err Mma 7执行此操作?”昨天讨论后,我写了一些非常类似的东西,但我想你对缓存的看法是正确的:它没有告诉我这个问题!哦,好吧…@Sjoerd如果可以的话,我会不止一次投这个票。但你本可以利用这一点,不仅是w.r.t.@先生,既然你发表了这篇文章,我们又是平等的:)但说真的,这证实了我在过去的一次讨论中所说的话:在当前SO模式的刺激下,急于成为第一个,是一件艺术品,反映了它的弱点——它不鼓励合作到适当的程度。@Leonid,以防万一你不知道,“西方最快的枪”问题已经被广泛讨论过了。参见示例+1漂亮的变化。我喜欢
dockdcell
设置的位,以及如何将其恢复为原始值。对于这个问题和应用程序,我的灵感来自于[Yu Sung Chang's‘Photo booth’blog][1]。以前,我认为定时评估只不过是批处理作业的cron任务,但我知道它在GUI和类似的应用程序中做得非常好。[1] :我认为对接单元格未得到充分利用,可能是因为创建一个单元格需要付出一些努力。我安装了好几份Mathematica,通常至少有两份是打开的,并使用一个定制的停靠单元,告诉我哪个笔记本连接到哪个版本。出于这个原因,有办法回到正常的停靠牢房对我来说很重要。我刚刚看到了这个编辑。看起来不错。它让我想起了SO本身对新答案的通知等等。。。(旁白:在我教的一门课程中,我在作业模板中使用了一个停靠单元格。它包含作业信息、下一个问题按钮和通过FTP提交按钮)查找一条更大的鱼。超越列奥尼德可能需要通过图灵测试的人工智能。:-)@巫师先生,在我看到他的标签之前,我几乎总能识别出莱昂尼德的帖子是他的。我想我的潜意识启发是如果[PostLength>1页,Poster==Leonid],那可能还有很多CS风格的东西(令人惊讶的是,他刚刚告诉你他没有CS背景)。
storedTitle = "";
storedID = 0;
mySOWatchTask = 
  CreateScheduledTask[{lastTitle, 
     lastID} = {"title", 
      "question_id"} /. ("questions" /. 
        Import["http://api.stackoverflow.com/1.1/questions?key=       \
         QEpjCjsXYE6s_kZEkFr4Lw&page=1&pagesize=1&sort=creation&\
tagged=                mathematica", "JSON"])[[1]];
   If[lastID != storedID,
    storedTitle = lastTitle;
    storedID = lastID;
    SetOptions[$FrontEndSession, 
     DockedCells -> 
      Cell[BoxData[
        ToBoxes[Style[
          With[{dock = Options[$FrontEndSession, DockedCells]}, 
           Grid[{{Button[Style["\[CircleTimes]", 16], 
               SetOptions[$FrontEndSession, dock], 
               Appearance -> None], "New StackOverflow question: ", 
              Hyperlink[lastTitle, 
               "http://stackoverflow.com/questions/" <> 
                ToString[lastID]]}}, 
            Alignment -> {{Left, Left, Left}}, 
            ItemSize -> {{2, 14, Scaled[0.7]}}]], 
          FontFamily -> "Times"]]], "DockedCell", 
       Background -> Orange]]; EmitSound[Sound[SoundNote[]]]];, 60];