Перейти к содержанию
Fire Monkey от А до Я

noisy

Пользователи
  • Постов

    23
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные noisy

  1. Я использую Git ( репозитории на Github и Bitbucket), но не использую встроенные средства RAD, в ранних версиях их не было, да и сред разработки несколько...

    Использую консоль, а если совсем лень, то мышкой кликаю в https://www.sourcetreeapp.com/

  2. Прогнал оба варианта (от ZuBy и asviridenkov) на своем тестовом китайце Jiayu G3 2012 года выпуска. Android 4.1.2

    Визуально разницы не заметил. но с LVcolumns потребляет меньше процессора, но незначительно.

    А раз нет разницы, то разумно и дешевле использовать стандартные средства

  3. Вы меня извините, что я не по теме... но ...

    Перестаньте работать с мобильной платформой как с десктопом.

    Не нужно работать с базой напрямую, делайте промежуточное звено и общайтесь с базой через него (API). Да это сложнее, но так правильней.

  4. ZXing Barcode Scanning Library for Delphi XE7/XE8/10 Seattle and Appmethod. ZXing.Delphi is a native Object Pascal library that is based on the well known open source Barcode Library: ZXing (Zebra Crossing). This port is based on .Net Redth port of ZXing and the Java one. This is I think the first native FireMonkey barcode lib. It is aimed at all of the FireMonkey mobile platforms.

    https://github.com/Spelt/ZXing.Delphi

  5. -- Выбираем все что совпадает
    select ron.datatimeon, roff.datatimeoff
    from regesteron ron inner join regesteroff roff on ron.dataon = roff.dataoff
    union
    -- Выбираем из ron все чего нет в roff
    select ron.datatimeon, roff.datatimeoff
    from regesteron ron left join regesteroff roff on ron.dataon = roff.dataoff
    where roff.datatimeoff is null
    union
    -- Выбираем из roff все чего нет в ron
    select ron.datatimeon, roff.datatimeoff
    from regesteroff roff left join regesteron ron on ron.dataon = roff.dataoff
    where ron.datatimeon is null

     

  6. Мое мнение, что хранить в зависимости от логики приложения.  если повторно отправка пуша допустима, то храните на телефоне, если нет, то на сервере.

    Учтите, что пользователь может удалить приложение, обновить прошивку, или просто поменять аппарат, что приведет к потере информации о пуше.

  7. ушел. так как неудобно разворачивать у клиента. На Go один бинарник, прописал конфиги, запустил и забыл.

    Серверное приложение для линукса на Delphi не написать. можно на freepascal, но тут у Go есть несколько плюсов.

    • сборка мусора

    • многопоточный

    • богатая стандартная библиотека (есть все, кроме гуя)

    • как, и freepascal, кросс-платформенный

    не забываем о том, что PHP рожден умирать, и тут начинается, мемкэш и т.д.

     

     

     

  8. Так как сервера, в основном, линуксовые, Delphi мало пригоден для написания бэкенда.

    Ранее использовал PHP, сейчас все пытаюсь перейти на GoLang. Может кто как и я Go использует?

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

     

     

  9. Посмотрите на реализацию JSON парсера в библиотеке https://github.com/synopse/mORMot

    немного о быстродействии http://blog.synopse.info/post/2015/02/16/Benchmarking-JsonDataObjects-JSON-parser

    пример кода

    {
       "glossary":{
          "title":"example glossary",
          "GlossDiv":{
             "title":"S",
             "GlossList":{
                "GlossEntry":{
                   "ID":"SGML",
                   "SortAs":"SGML",
                   "GlossTerm":"Standard Generalized Markup Language",
                   "Acronym":"SGML",
                   "Abbrev":"ISO 8879:1986",
                   "GlossDef":{
                      "para":"A meta-markup language, used to create markup languages such as DocBook.",
                      "GlossSeeAlso":[
                         "GML",
                         "XML"
                      ]
                   },
                   "GlossSee":"markup"
                }
             }
          }
       }
    }
    // Synopse direct record access
    Check(gloss.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso[0]='GML');
    
    // Synopse TDocVariant with properties
    Check(DocVariantData(doc.GetValueByPath(['glossary','GlossDiv','GlossList','GlossEntry','GlossDef','GlossSeeAlso'])).Value[0]='GML');
    
    // Synopse TDocVariant with late binding
    Check(doc.glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso._(0)='GML');
    
    // DBXJSON
    check(((((((obj.GetValue('glossary') as TJSONObject).GetValue('GlossDiv') as TJSONObject).GetValue('GlossList') as TJSONObject).GetValue('GlossEntry') as TJSONObject).GetValue('GlossDef') as TJSONObject).GetValue('GlossSeeAlso') as TJSONArray).Get(0).Value='GML');

     

×
×
  • Создать...