Во всех известных поисковиках!
Все ваши комментарии!
Да, именно так, я сделал синхронизацию комментариев с 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.