Во всех известных поисковиках!
Все ваши комментарии!
Да, именно так, я сделал синхронизацию комментариев с Disqus. Теперь, даже если в вашем браузере отключен JavaScript, вы всё равно сможете прочитать всё.
Могу с уверенностью сказать, что Haskell — не самый подходящий язык для подобных вещей. На каком-нибудь php всё это можно было бы реализовать гораздо быстрее, но мы ведь не ищем легких путей. Самая большая проблема — работа с JSON. Библиотека для работы есть, и она неплохо реализована, но сказывается специфика Haskell и его статической типизации. Ну например,
{
"code":0,
"response":[
{
"forum":"dikmax",
"parent":667510883,
"author":{
"username":"google-1b379da98470c64a0c4bc8c2230d616d",
"about":"",
"name":"...",
"url":"",
"joinedAt":"2012-09-25T03:14:42",
"avatar":{
"permalink":"...",
...
},
...
},
"message":"...",
...
},
...
]
}Приблизительный процесс разбора:
- Что делать, если результат не является правильным JSON.
- Что делать, если корневой узел — не объект.
- Что делать, если у объекта нет свойства
code. - Если
code— не является числом. - Если
codeвсё-таки число, но не 0. - Если у объекта нет свойства
response. - Если
response— не массив. - Преобазовываем
responseв два массива: первый с комментариями, второй с ошибками разбора комментариев.
И когда какого-то «если» нет, компилятор выдаст ошибку и придется искать, какой вариант ты еще не предусмотрел. Т.е. компилятор заботится, чтобы твоя программа умела работать при любых данных. И это, конечно, огромный плюс программирования на Haskell.
Весь код для синхронизации. Получилось не очень много, но времени на него было потрачено прилично.
Хочется что-то добавить или сказать? Я всегда рад обсудить. Пишите на me@dikmax.name.