Bitcoin Forum
December 13, 2024, 08:39:47 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: JSON - нафиг он?  (Read 5092 times)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:01:00 PM
 #1

Почему авторы так любят этот формат? Даже в CLI-интерфейсе всё отдаётся в нём

Благодаря этому я багу словил Sad

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
MrBison
Member
**
Offline Offline

Activity: 61
Merit: 10

Anyone who opposes FOSS shall be destroyed!


View Profile
September 29, 2010, 03:10:18 PM
 #2

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

Please donate BTC to 142VYfhaYBJXsmfMf1LnBiNxb6KYwdj4PM .
BTC0.17 already donated, thanks!
MrBison
Member
**
Offline Offline

Activity: 61
Merit: 10

Anyone who opposes FOSS shall be destroyed!


View Profile
September 29, 2010, 03:11:55 PM
 #3

Насчёт CLI -- было бы неплохо написать ncurses-интерфейс для bitcoin или переделать wxgtk-интерфейс для bitcoind.

Please donate BTC to 142VYfhaYBJXsmfMf1LnBiNxb6KYwdj4PM .
BTC0.17 already donated, thanks!
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:33:06 PM
 #4

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

ааа, легко?! Smiley

Code:
[
    {
        "label" : "",
        "amount" : 251.61000000,
        "confirmations" : 11
    },
    {
        "label" : "user_id:152",
        "amount" : 842.20000000,
        "confirmations" : 12
    },
    {
        "label" : "user_id:21",
        "amount" : 1.00000000,
        "confirmations" : 1328
    }
]

вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 03:34:53 PM
 #5

Насчёт CLI -- было бы неплохо написать ncurses-интерфейс для bitcoin или переделать wxgtk-интерфейс для bitcoind.

не надо путать CLI и терминал

Вообще, Сатоши с точки зрения "маркетинга" может быть и прав был, когда сделал клиента "всё в одном" - и гуй, и демон и cli. Но вот писать теперь под биткоин интерфейсы не слишком удобно. лучше бы это была библиотека...

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
d1337r
Full Member
***
Offline Offline

Activity: 210
Merit: 100


View Profile
September 29, 2010, 04:19:28 PM
 #6

Потому что его легко интерпретировать в различных языках программирования. Во-первых, есть множество биндингов для различных ЯП. Во-вторых, результаты запросов могут представлять собой таблицу или массив, но при этом их можно использовать для любых других нужд.

ааа, легко?! Smiley

Code:
[
    {
        "label" : "",
        "amount" : 251.61000000,
        "confirmations" : 11
    },
    {
        "label" : "user_id:152",
        "amount" : 842.20000000,
        "confirmations" : 12
    },
    {
        "label" : "user_id:21",
        "amount" : 1.00000000,
        "confirmations" : 1328
    }
]

вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 29, 2010, 04:29:58 PM
Last edit: September 29, 2010, 04:58:31 PM by bitcoinex
 #7


вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .

Понятно что это не олимпиадная задача и распарсить это можно. Мне не понятно почему оно в CLI.

Пока, как я понял, мне чтобы это распарсить (этой штукой http://github.com/micha/jsawk ) придётся поставить целый javascript-интерпретатор, видимо, и худо-бедно изучить яваскрипт. Вот оно мне надо? И всё из-за того что кому-то нравится JSON выдать в stdout

Вот, собственно, решение:
Code:
$ cat test.txt |jsawk -n 'out(this.label+" "+this.amount+" "+this.confirmations)'
 251.61 11
user_id:152 842.2 12
user_id:21 1 1328

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
September 30, 2010, 02:10:32 AM
 #8

А сейчас просто этот JSON в моде и все тут. Smiley

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 30, 2010, 08:48:05 AM
 #9

А сейчас просто этот JSON в моде и все тут. Smiley

ага, эдакий XML v2.0

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
eurekafag
Full Member
***
Offline Offline

Activity: 185
Merit: 100


View Profile
September 30, 2010, 09:23:24 AM
 #10

Нет, XML куда сложнее. В нём есть именованные узлы, атрибуты и косвенные параметры, влияющие на разбор. А JSON — это просто список ключ-значение, зачастую, со вложенными такими же списками.
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
September 30, 2010, 09:49:23 AM
 #11

Нет, XML куда сложнее. В нём есть именованные узлы, атрибуты и косвенные параметры, влияющие на разбор. А JSON — это просто список ключ-значение, зачастую, со вложенными такими же списками.

Не, я о моде - была такая же мода на xml, если помните

Под конец даже конфиги в /etc даже пытались на него переводить Smiley

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
September 30, 2010, 12:40:59 PM
 #12

Да, переводили, то еще извращение. У некоторых пользователей вполне так прижилось. Undecided

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
eurekafag
Full Member
***
Offline Offline

Activity: 185
Merit: 100


View Profile
September 30, 2010, 04:48:39 PM
 #13

Hal/udev так и используют до сих пор. С json всё несколько проще. Во-первых, он реально компактен. Точнее, это, пожалуй, наиболее компактный из небинарных форматов хранения данных, обладающий достаточной гибкостью (хотя кроме иерархии от него ничего и не требуется, даже аттрибуты XML можно сэмулировать, хотя лучше нормально продумать структуру). Во-вторых, его намного проще парсить, чем XML. Например, не нужно проверять соответствие и правильность порядка вложенностей, только количество открывающих-закрывающих скобок, а их порядок остаётся на совести выводящего, потому что все скобки равноправны. В XML, напротив, конструкция <a><b></a></b> является синтаксически неверной, что влечёт дополнительные проверки, стек и утяжеление кода. В-третьих, это родной формат JavaScript для хранения структур данных, собственно, из названия оно и понятно. Ну и в-четвёртых, это всё же человекопонятный формат, т.е. его одинаково легко читает и модифицирует как человек, так и машина, что позволяет в разы быстрее находить ошибки и исправлять их людям, далёким от кода программы. Это, само собой, в сравнении с бинарными протоколами, которые без спецификации, дебаггера, tcpdump и поллитры не разобрать.

Но вот XML не одобряю, потому что в ней на самом деле много лишней писанины с точки зрения как человека, так и машины (открытие-закрытие тегов занимает половину объёма текста), а JSON очень неплох, потому как реально ничего лишнего. Кстати, питонские массивы имеют полностью односторонне-совместимый с JSON синтаксис (т.к. в питоне есть ещё tuples в круглых скобках, которые не определены в JSON). Наверно, ещё и поэтому я ему симпатизирую.
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
October 02, 2010, 06:50:51 PM
 #14

Hal всё, похоже.

Да, наверно у меня после xml аллергия на универсальные форматы для всего-всего во Вселенной... Smiley

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
March 24, 2011, 12:25:32 PM
 #15


вот такое примерно получил я в CLI. отинтерпретируйте мне пожалуйста это в 3 столбика? не забывайте, что порядок следования этих полей может измениться

Зато если я использую, скажем, библиотеку для, скажем, PHP, тот же самый запрос оказывается таблицей, которую удобно парсить Smiley .

Понятно что это не олимпиадная задача и распарсить это можно. Мне не понятно почему оно в CLI.

Пока, как я понял, мне чтобы это распарсить (этой штукой http://github.com/micha/jsawk ) придётся поставить целый javascript-интерпретатор, видимо, и худо-бедно изучить яваскрипт. Вот оно мне надо? И всё из-за того что кому-то нравится JSON выдать в stdout

Вот, собственно, решение:
Code:
$ cat test.txt |jsawk -n 'out(this.label+" "+this.amount+" "+this.confirmations)'
 251.61 11
user_id:152 842.2 12
user_id:21 1 1328
Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
March 24, 2011, 12:53:41 PM
 #16

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
Chooseusername
Member
**
Offline Offline

Activity: 94
Merit: 10


View Profile WWW
March 24, 2011, 01:19:23 PM
 #17

JSON затем, что в браузерах везде javascript. А JSON - нативный javascript и есть. И никто парсилки для всяких там XML в AJAX-приложениях писать не будет, ибо они только замедлят скорость работы приложения. Посему переходите на JSON и будет вам счастье.
Manjago
Sr. Member
****
Offline Offline

Activity: 294
Merit: 250


я не ламер, я java-прогаммер :-)


View Profile WWW
March 24, 2011, 02:24:23 PM
 #18

А мне, как java-программеру, JSON нравится. Из него просто и легко поднять класс при помощи сторонних библиотек, а класс - они есть класс  Smiley
dbitcoin
Hero Member
*****
Offline Offline

Activity: 742
Merit: 500

BTCDig - mining pool


View Profile WWW
March 24, 2011, 02:26:13 PM
 #19

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

Ну разве что... однако если пхп код дыряв можно и с сервера утащить все. Было бы желание, а дырки найдутся.
Тут только один вариант более мене надежен, вынос биткоина в другое место и проведение тразакций руками.

p.s. не читайте советских газет (не используйте php код) Smiley

BTCDig - mining pool (Stratum, VarDiff, DGM, SSL, JSON API)
bitcoinex (OP)
Sr. Member
****
Offline Offline

Activity: 350
Merit: 252


probiwon.com


View Profile WWW
March 24, 2011, 02:29:22 PM
 #20

Собственно не понятно зачем парсить именно cli в консоли (ну кроме как для тестов), если нормально работает rpc.
А уж к rpc делать запросы можно откуда угодно и везде есть библиотеки.

Слишком много прав rpc даёт. Взломают ПХП код - унесут биткоины.

Надо делать "прокладку" через sudo, например, которая позволит только проверить баланс, но не sendtoaddress.

Ну разве что... однако если пхп код дыряв можно и с сервера утащить все. Было бы желание, а дырки найдутся.
Тут только один вариант более мене надежен, вынос биткоина в другое место и проведение тразакций руками.

Нет, не руками. "Прокладка" действительно в этом случае хорошо работает

New bitcoin lottery: probiwon.com
- Может, ты ещё и в Невидимую Руку Рынка веруешь? - Зачем же веровать в то, что можно наблюдать непосредственно?
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!