LINUX.ORG.RU

История изменений

Исправление dzidzitop, (текущая версия) :

код тут:

https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...

Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне «бэхи» оголтелого «русского патриота» в марте). Поэтому прокомментирую ключевые моменты:

1) не используется динамическая память в принципе. Весь парсинг идёт на стэке

2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера

3) используется знание о том, что за данные будут парсится. Например, что объект «duration» имеет два поля - величина и единица измерения («ms» или «s»). Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.

Такой код пишется долго и нудно. Но зато потом работает быстро и экономично.

Исправление dzidzitop, :

код тут:

https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...

Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне бэхи оголтелого «русского патриота» в марте). Поэтому прокомментирую ключевые моменты:

1) не используется динамическая память в принципе. Весь парсинг идёт на стэке

2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера

3) используется знание о том, что за данные будут парсится. Например, что объект «duration» имеет два поля - величина и единица измерения («ms» или «s»). Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.

Исходная версия dzidzitop, :

код тут:

https://github.com/dzidzitop/gravifon_lastfm_scrobbler_deadbeef_plugins/blob/...

Почти уверен, что без знания/дебага он выглядит совсем непонятно (вариант - как неснятая георгиевская лента на антенне бэхи оголтелого русского патриота в марте). Поэтому прокомментирую ключевые моменты:

1) не используется динамическая память в принципе. Весь парсинг идёт на стэке

2) используется не универсальный парсер JSON, а набор утилит для построения своего парсера. Что-то типа лексера

3) используется знание о том, что за данные будут парсится. Например, что объект 'duration' имеет два поля - величина и единица измерения ms или s. Но при этом если что-то идёт не так, то идёт сообщение об ошибке. Т.е. какашку скормить не получится.