A menos que el Sr.Wizard esté de vacaciones, es bastante difícil vencer este fenómeno que parece estar dotado de omnipresencia y omnisciencia. ¿Cómo podemos superarlo usando Mathematica y la API de StackOverflow?Buscando nuevas preguntas de Mathematica usando Mathematica y la API de StackOverflow
Respuesta
Aquí hay una variación de la solución de Sjoerd.
La principal diferencia es utilizar una celda acoplada en lugar de un cuadro de diálogo emergente. La celda tiene un enlace a la nueva publicación, así como también un botón que borrará la celda acoplada al estado anterior.
La otra diferencia es usar el ID de la pregunta en lugar del título para determinar nuevas publicaciones. Sé que los títulos se editan a veces, por lo que se activan como una nueva publicación en ese caso.
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];
+1 Buen cambio. Me gusta el bit con la configuración 'DockedCell' y cómo restaurarlo a los valores originales. Para esta pregunta y aplicación, obtuve mi inspiración del [blog 'Photo booth' de Yu-Sung Chang] [1]. Previamente, pensé en la evaluación cronometrada como nada más que tareas cron para trabajos por lotes, pero aprendí que hace un trabajo fantástico en GUI y aplicaciones como esta. [1]: http://blog.wolfram.com/2011/06/23/mission-mathematica-making-a-photo-booth-app-in-three-steps/#more-6374 –
Creo que las células acopladas son subutilizado, probablemente porque hay un poco de esfuerzo involucrado para crear uno. Tengo varias copias de Mathematica instaladas, y usualmente al menos dos abiertas, y uso una celda acoplada personalizada que me dice qué computadora portátil está conectada a qué versión. Por esta razón, era importante para mí tener una forma de volver a mi celda anclada normal. –
Acabo de ver esta edición. Se ve bien. Me recuerda a las notificaciones que SO mismo da para nuevas respuestas, etc ... (Aparte: para un curso que enseñé, utilicé una celda acoplada en la plantilla de asignación. Contenía información sobre la tarea, un botón de pregunta siguiente y un envío a través del botón FTP) – Simon
Bastante fácil en realidad. Todo lo que necesitas es lo siguiente.
Definir una tarea reloj:
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
];
Y para empezar la siguiente:
StartScheduledTask[mySOWatchTask];
Basta con:
StopScheduledTask[mySOWatchTask];
Mira lo que está ejecutando:
ScheduledTasks[] // Shallow
Retire la tarea:
RemoveScheduledTask[mySOWatchTask];
o todas las tareas:
RemoveScheduledTask[ScheduledTasks[]];
Este encuestas por lo que cada minuto (the minimum that is not seen as abusive), y muestra un cuadro de diálogo y reproduce un sonido cada vez que llega una nueva pregunta Mathematica .
La belleza de esto es: se usa Mathematica 8, y todos sabemos Mr.Wizard no tiene que (aún) ;-)
Tenga en cuenta que la API de SO se almacena en caché en gran medida, por lo que la respuesta puede no venir directamente. Tampoco he probado esto extensivamente.
EDITAR
Tenga en cuenta que la clave (ap-id) se ha usado anteriormente está destinado a ser utilizado sólo por esta pequeña aplicación Mathematica. Si necesita uno para una aplicación diferente, puede obtener uno usted mismo en un procedimiento rápido e indoloro here. Me llevó menos de un minuto.
¿De quién es la clave?:) – bzlm
@bzlm Pertenece al programa anterior. El nombre 'clave' es un nombre inapropiado. En realidad, es un ID de aplicación para las estadísticas de uso –
@Sjoerd ¡Felicitaciones en su 5K! ... –
- 1. Dos preguntas rápidas de Mathematica
- 2. Redefinir no conmutativa multiplicación en Mathematica Mathematica
- 3. Mathematica y CUDA
- 4. Usando Mathematica Reunir/Recoger adecuadamente
- 5. "listas enlazadas" Mathematica y desempeño
- 6. Extraiga información de HTML usando Mathematica
- 7. Relleno de degradado usando gráficos en Mathematica
- 8. Multigrafos en Mathematica 8
- 9. Mathematica: Documentación de función
- 10. Mathematica ColorFunctionScaling
- 11. Generación de mensajes en mathematica
- 12. Mapa de Mathematica Norteamérica
- 13. Mathematica "\ <...\>" sintaxis
- 14. equivalente de Doxygen para Mathematica?
- 15. Analizador para la sintaxis de Mathematica?
- 16. Error de Overflow [] de Mathematica: ¿Por qué y cómo omitir?
- 17. Diferenciación numérica de la lista en Mathematica
- 18. Integración en Mathematica
- 19. ConvexHull en Gráficos - Mathematica
- 20. Simplifique la expresión regular en Mathematica
- 21. Diferentes resultados usando f @ expr y expr // f en Mathematica
- 22. Rendimiento en Mathematica
- 23. Variables temporales en Mathematica
- 24. Mathematica quedando sin memoria
- 25. Ecuación de Schrodinger en Mathematica
- 26. Indización de lista en mathematica
- 27. equivalente de Sprintf en Mathematica?
- 28. Targeted Simplificar en Mathematica
- 29. Portando Mathematica a Octave
- 30. Mathematica Dynamic List Manipulation
Encuentra un pez más grande. Superar a Leonid puede requerir una IA que pase la prueba de Turing. :-) –
@ Mr.Wizard Casi siempre puedo identificar las publicaciones de Leonid mucho antes de que vea su etiqueta. Creo que mi heurística inconsciente es If [PostLength> 1 página, Poster == Leonid], eso y probablemente muchas cosas de CS-ish (sorprendentemente, acaba de decirte que no tiene experiencia en CS). –