[Android] RandomChat - клиент чатика под дроид

Тема в разделе "Hard & Soft & Code & Roll", создана пользователем _TrueLecter_, 14 сен 2015.

  1. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
    Так а что этот проект представляет из себя? Модификацию чего-то?
    Если ты укажешь какие файлы делал\редактировал ты, а какие взял "из надежных источников(там где код почти гарантированно пишут серьезные люди, и который не нужно проверять)", то другие смогут заняться поиском багов в твоём коде
     
  2. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Из сторонних библиотек - XenAPI
    https://github.com/Contex/XenAPI
    Остальных файлов не редактировал. Добавил однк строку в само апи. Остальное - самопис
     
  3. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
    Ну вот тебе пока пара вещей:
    1) ты выложил в общий доступ свой апи ключ от тайгачата(если он настоящий, то лучше пойти и этот ключ сменить там, где тебе его выдали - по гитхабам лазюют боты и ищут ключи)
    2) mysqli лучше заменить на PDO - он безопасней и быстрей, а mysqli устарел и "может быть удален в будущем"
     
  4. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    А сама суть проекта такова. Вот для тем есть тапатолк. Он кдобный и тд. А для чатика - нужно идти в браузер + если по моб. инету - то чатик у них пересылает список сообщений - уже сгенерированых кусков html кода. Так что я и так когда-то думал, но так и не придумал. А тут @Rult напомнил и я решил этим занятся
    --- Даблпост!, 16 сен 2015 ---
    Клбч апи? Его можно сменить на сво в api.php. Это, по сути, md5 хэш какого-то первого взбредшого мне в голову слова.
    А mysqli заменю, спасибо.
     
    • <3 <3 x 1
  5. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Заменил mysqli на PDO.
    Постараюсь на выходных сделать пару изменений в интерфейсе.
     
  6. Vintage

    Регистрация:
    9 апр 2013
    Сообщения:
    361
    Симпатии:
    95
    Пол:
    Мужской
    шрифт на дроидах устанавливается в настройках. ставить свой там, где можно использовать тот, что выбрал для себя сам пользователь - не стоит.
    я имел ввиду меньшую монотонность и большее цветовое разнообразие, соответствие цветам Рандома - зеленый, синий, желтый, красный. вот эта идея мне очень понравилась:
    было бы круто такое увидеть. ну и небольшая панелька кастомизации была бы вообще отличным дополнением, но это потом.
     
  7. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    @vasya, @HeMe3iC, чего еще можно было бы для серверной части допилить? Ибо если уже все +/- норм, то было бы не плохо залить ее на рк. Ибо я не могу нормально тестить у себя т.к. я постоянно премещаюсь и мне нужно менять адреса локального сервера и заново перестравивать проект. Да и форум локальный у меня открывается 3-4 секунды. Не знаю, почему.
    --- Даблпост!, 20 сен 2015 ---
    Дело в том, что в андроиде стиль - это раньше сделанная тема. Соотвественно, для 4-х рандомных каждого раза цветов мне нужно будет создать 4 темы. Не знаю, инициализируются ли они, но это может быть относительно затратно по ресурсам. Я-то, конечно, могу это сделать. Ну или попытатся, в крайнем случае.
     
    • Полезно Полезно x 1
  8. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
    Ну, с этим ты иди к паперу, но пока я против подключения всего этого дела к реальному форуму. Если папер согласится - может выделит тебе отдельный тестовый серверок

    На тему PDO, его надо не так использовать, используй execute а не query

    пример:
    Код:
    $dbh = new PDO(данные от бд);
    $query = 'SELECT * FROM vegetables WHERE foo=:foo  LIMIT 1';
    $stmt = $dbh->prepare($query);
    $stmt->bindValue(':foo','bar', PDO::pARAM_STR);
    $stmt->execute();
    if( $row = $stmt->fetch(PDO::FETCH_ASSOC)  ){
        echo 'Название фрукта:'.$row['name'];
    }
    else{
        //ошибка или пустой результат
    }
    
    так же не забывай что, в случае ошибок при коннекте PDO в сообщении исключения может вывести данные логина от БД, и запихивать их в общедоступный текстовик-плохой план(оно кстати туда и не запихнется, т.к. die() останавливает исполнение скрипта)

    еще:
    Код:
    while ($row = $STH->fetch()) {
    $q = 'SELECT username FROM `xf_user` WHERE user_id = ' . $row['user_id'] ;
    $STHU = $DBH->query($q);
    $STHU->setFetchMode(PDO::FETCH_OBJ);
    $r = $STHU->fetch();
    $table[] = array('id' => strip_tags($row['id']), 'uid' => $row['user_id'], 'rid' => $row['room_id'],'date' => $row['date'],'msg' => $row['message'],'uname'=>$r->username , 'avatar' =>'notImplmented');
    $i = $i + 1;
    }
    - плохая практика, тебе стоит объединить строки запроса в одну и отправить на выполнение 1 раз
    т.е. лучше не
    Код:
    for($i=0; $i<100; $i++)
    {
        $query = 'SELECT * FROM vegetables WHERE foo=:foo  LIMIT 1';
        $stmt = $dbh->prepare($query);
        $stmt->bindValue(':foo',$i, PDO::pARAM_STR);
        $stmt->execute();
    }
    
    ,а примерно следующее(можно иначе, но не суть не в этом, а в том, что бы запрос к базе был один/по минимуму):
    Код:
    $in='';
    for($i=0; $i<100; $i++)
    {
         $in=$in.'value'.$i;
    }
    $in=rtrim($in, ',');
    $query = 'SELECT * FROM vegetables WHERE foo IN('.$in.')  LIMIT 1';
    $stmt = $dbh->prepare($query);
    for($i=0; $i<100; $i++)
    {
        $stmt->bindValue(':value'.$i,'bar'.$i, PDO::pARAM_STR);
    }
    $stmt->execute();
    
    код я не тестировал, и тебе стоит проверить его на ошибки перед использованием.
    Прирост производительности от сокращения кол-ва запросов огромен, так что не стоит этим пренебрегать(помню как делал скорборду для старого сайта, и в начале я тоже делал сотню запросов для топ100, но страница загружалась секунд 15, а объединив всё в один запрос я сократил время составления страницы до милисекунд)
     
    • Полезно Полезно x 2
    #23 HeMe3iC, 21 сен 2015
    Последнее редактирование: 21 сен 2015
  9. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Для файла ошибок - я запретил его через htaccess.
    А запрос на имя пользователя я реализовал иначе:
    Код:
    SELECT dark_taigachat.id, dark_taigachat.user_id, dark_taigachat.room_id, dark_taigachat.date, dark_taigachat.message, xf_user.username  FROM `dark_taigachat`, `xf_user` WHERE xf_user.user_id = dark_taigachat.user_id AND dark_taigachat.date > :dateS ORDER BY dark_taigachat.date DESC LIMIT :limitS
    
     
  10. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
    а с какой целью ты получаешь все сообщения одного юзера? если ты хотел отображать историю сообщений в чатике, то тебе нужны сообщения всех юзеров из чатика
     
  11. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Я немного изменил на:
    Код:
    SELECT dark_taigachat.id, dark_taigachat.user_id, dark_taigachat.room_id, dark_taigachat.date, dark_taigachat.message, xf_user.username FROM `dark_taigachat`, `xf_user` WHERE dark_taigachat.user_id = xf_user.user_id AND dark_taigachat.date > :dateS ORDER BY dark_taigachat.date DESC LIMIT :limitS
    
    Но вроде бы как и тот вариант работал. Резльтат был от всех пользователей. Я же сам не задаю значение xf_user.user_id. Оно ищет значения что бы они были равными с теми, которые из таблицы сообщений.
    [​IMG]
     
  12. Vintage

    Регистрация:
    2 июл 2014
    Сообщения:
    439
    Симпатии:
    106
    Пол:
    Мужской
    Когда (примерно) уже будет выложена первая доступная сборка?
     
  13. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг
    Ну, чатик +/- рабочий. Осталось серверую часть припилить на сервер.
     
  14. HeMe3iC Overwatch
    Команда форума

    Регистрация:
    15 сен 2010
    Сообщения:
    627
    Симпатии:
    90
    Пол:
    Мужской
  15. _TrueLecter_ All hail Lelouch!
    Vintage

    Регистрация:
    6 дек 2013
    Сообщения:
    2.394
    Симпатии:
    468
    Пол:
    Мужской
    Род занятий:
    Быдлокоддинг