[00:22:30] *** -kv- выходит из комнаты [00:28:32] *** -kv- заходит в комнату как participant и member [00:43:04] *** Gerc выходит из комнаты [00:59:06] *** Gerc заходит в комнату как moderator и owner [01:01:41] *** Gerc выходит из комнаты: Replaced by new connection [01:01:44] *** Gerc заходит в комнату как moderator и owner [01:02:25] *** Gerc выходит из комнаты [01:02:36] *** Gerc заходит в комнату как moderator и owner [01:14:45] *** modi выходит из комнаты [01:27:02] *** PtitsaF выходит из комнаты: Logged out [01:27:16] *** PtitsaF заходит в комнату как participant и member [02:30:49] *** goodwin98 выходит из комнаты [02:33:24] *** PtitsaF выходит из комнаты: Replaced by new connection [02:33:25] *** PtitsaF заходит в комнату как participant и member [02:51:38] *** -kv- выходит из комнаты [02:57:34] *** fog_hedgehog выходит из комнаты: Logged out [02:57:50] *** SSKlord выходит из комнаты: Logged out [02:58:10] *** SSKlord заходит в комнату как participant и member [02:58:32] *** SSKlord выходит из комнаты [03:00:38] *** fog_hedgehog заходит в комнату как participant и none [03:12:57] *** SSKlord заходит в комнату как participant и member [03:23:51] *** SSKlord выходит из комнаты: Logged out [03:40:21] *** -kv- заходит в комнату как participant и member [03:41:34] *** fog_hedgehog выходит из комнаты: Logged out [03:48:20] *** fog_hedgehog заходит в комнату как participant и none [03:56:05] *** -kv- выходит из комнаты: Logged out [04:11:56] *** sarmat заходит в комнату как participant и none [04:17:43] *** SSKlord заходит в комнату как participant и member [04:38:27] *** fog_hedgehog выходит из комнаты: Logged out [04:38:29] *** fog_hedgehog заходит в комнату как participant и none [04:42:35] *** PtitsaF выходит из комнаты: Replaced by new connection [04:42:37] *** PtitsaF заходит в комнату как participant и member [05:01:10] *** SSKlord выходит из комнаты: Logged out [05:03:24] *** 777Andrej выходит из комнаты: Logged out [05:03:29] *** 777Andrej заходит в комнату как participant и member [05:12:12] *** SSKlord заходит в комнату как participant и member [05:12:34] *** SSKlord выходит из комнаты [05:14:19] *** SSKlord заходит в комнату как participant и member [05:14:42] *** SSKlord выходит из комнаты [05:19:36] *** SSKlord заходит в комнату как participant и member [05:34:09] *** 777Andrej выходит из комнаты: Logged out [05:34:14] *** 777Andrej заходит в комнату как participant и member [05:47:15] *** PtitsaF выходит из комнаты: Replaced by new connection [05:47:17] *** PtitsaF заходит в комнату как participant и member [06:04:06] *** 777Andrej выходит из комнаты: Logged out [06:04:11] *** 777Andrej заходит в комнату как participant и member [06:12:18] *** radiance заходит в комнату как participant и member [06:24:15] *** 777Andrej выходит из комнаты: Logged out [06:24:20] *** 777Andrej заходит в комнату как participant и member [06:38:46] *** 777Andrej выходит из комнаты: Logged out [06:38:52] *** 777Andrej заходит в комнату как participant и member [07:04:24] *** 777Andrej выходит из комнаты: Logged out [07:04:29] *** 777Andrej заходит в комнату как participant и member [07:07:21] *** SetazeR заходит в комнату как participant и member [07:23:22] *** fog_hedgehog выходит из комнаты: Logged out [07:23:24] *** fog_hedgehog заходит в комнату как participant и none [07:24:37] *** 777Andrej выходит из комнаты: Logged out [07:24:42] *** 777Andrej заходит в комнату как participant и member [07:38:46] *** 777Andrej выходит из комнаты: Logged out [07:38:52] *** 777Andrej заходит в комнату как participant и member [07:48:12] *** vort3 заходит в комнату как participant и member [07:49:47] *** fog_hedgehog выходит из комнаты: Logged out [07:50:23] *** fog_hedgehog заходит в комнату как participant и none [07:58:22] *** vort3 выходит из комнаты [08:07:20] *** fog_hedgehog выходит из комнаты: Logged out [08:07:55] *** fog_hedgehog заходит в комнату как participant и none [08:14:26] *** PtitsaF выходит из комнаты: Replaced by new connection [08:14:28] *** PtitsaF заходит в комнату как participant и member [08:44:30] *** fog_hedgehog выходит из комнаты: Logged out [08:44:32] *** fog_hedgehog заходит в комнату как participant и none [08:53:41] *** goodwin98 заходит в комнату как participant и member [09:20:36] *** radiance выходит из комнаты [09:21:14] <goodwin98> а если все сообщения в базу кидать, то ведь, когда таких сообщений будет с несколько тысяч, то, наверно, и sqlite будет немного задумываться? а ведь каждое открытие чата - это обращение к ней. [09:22:11] <goodwin98> а еще, как я и думал, глючит не реализация rms, а то как к ней обращаются. К примеру, зачем сохранять в истории то, что получено при входе в конфу от сервера ? [09:22:13] *** Hombreby меняет ник на adelens [09:23:24] <adelens> Как я понял поймал только что пуш. Закрытый савим сам запустился, подключился к сети и показал сообщения новые. Оно? [09:23:54] <goodwin98> да [09:24:43] *** _vt заходит в комнату как participant и member [09:28:40] <Gerc> goodwin98, хранить сообщений столько, сколько указано в настройках. И щас история грузится только при создании чата [09:30:33] <goodwin98> Gerc: при созданиии чата они загружаются из истории и приходят от сервера ? [09:32:17] <Gerc> goodwin98, да. Потомучто время последнего сообщения не берется из истории [09:33:08] <goodwin98> Gerc: можно и взять.. но я вообще о другом. То, что приходит от сервера, при входе в чат, тоже сохраняется в истории. [09:33:34] <goodwin98> По крайней мере так в версии 22, в которой я ковырялся [09:34:38] <Gerc> goodwin98, да, много раз одно сообщение может записаться в историю. [09:35:35] <goodwin98> ну вот.. надо бы убрать это [09:47:36] *** goodwin98 выходит из комнаты: Logged out [09:47:38] *** goodwin98 заходит в комнату как participant и member [09:51:24] *** adelens выходит из комнаты: I'll be back [09:52:23] *** 6yp4uk заходит в комнату как participant и member [10:05:29] *** goodwin98 выходит из комнаты: Logged out [10:05:34] *** goodwin98 заходит в комнату как participant и member [10:07:23] *** goodwin98 выходит из комнаты [10:09:04] *** goodwin98 заходит в комнату как participant и member [10:20:49] <Gerc> Надо тогда историю как-то грузить до прихода новых сообщений, чтоб время получить последнего сообщения из истории [10:23:03] *** none заходит в комнату как participant и none [10:23:33] *** vort3 заходит в комнату как participant и member [10:24:00] *** fog_hedgehog выходит из комнаты: Logged out [10:24:02] *** fog_hedgehog заходит в комнату как participant и none [10:25:34] *** vort3 выходит из комнаты [10:25:47] <none> [Gerc 10:20] » Надо тогда историю как-то грузить до прихода новых сообщений, чтоб время получить последнего сообщения из истории --- Согласна. Всем привет. [10:30:49] <goodwin98> Время последнего можно в любой момент получить, но историю все равно надо первой, да [10:32:06] *** evghetto_ заходит в комнату как participant и none [10:38:41] *** 6yp4uk выходит из комнаты [10:52:04] *** Gerc выходит из комнаты [11:03:08] *** Gerc заходит в комнату как moderator и owner [11:04:35] *** Gerc выходит из комнаты [11:05:10] *** Gerc заходит в комнату как moderator и owner [11:42:40] *** evghetto_ выходит из комнаты [11:43:20] *** -kv- заходит в комнату как participant и member [11:57:49] *** Gerc выходит из комнаты [12:06:30] *** -kv- выходит из комнаты: Replaced by new connection [12:06:31] *** -kv- заходит в комнату как participant и member [12:13:24] *** Gerc заходит в комнату как moderator и owner [12:16:40] <none> goodwin98, эту проблему пока не решили? [12:17:04] <goodwin98> none, какую? [12:17:16] <none> [goodwin98 10:30] » Время последнего можно в любой момент получить, но историю все равно надо первой, да --- [12:17:33] <goodwin98> Её только что озвучили [12:18:38] <none> goodwin98, привет. Я на работе сижу. Вообще, её озвучили с десяток бета-версий назад. [12:19:36] <none> Вернее, судя по изменениям, работы идут. [12:25:56] *** radiance заходит в комнату как participant и member [12:27:07] *** radiance выходит из комнаты [13:05:56] <none> goodwin98, а оно на Яве? [13:06:50] <goodwin98> none, да [13:14:09] *** -kv- выходит из комнаты: Replaced by new connection [13:14:10] *** -kv- заходит в комнату как participant и member [13:15:23] <none> goodwin98, ужас. [13:15:37] <goodwin98> none, ? [13:15:51] <none> goodwin98, ? [13:25:07] *** Gerc выходит из комнаты: Logged out [13:25:25] *** Gerc заходит в комнату как moderator и owner [13:29:49] *** Gerc выходит из комнаты [13:30:02] *** Gerc заходит в комнату как moderator и owner [13:30:29] <none> goodwin98, что ты хотел? [13:30:55] <goodwin98> none, я ничего не хотел [13:31:25] *** none выходит из комнаты [13:31:57] *** none заходит в комнату как participant и none [13:32:07] <goodwin98> Я понятия не имею к чему ты написала то, что написала [13:32:46] <none> goodwin98, хм. [13:38:59] *** 777Andrej выходит из комнаты: Replaced by new connection [13:39:00] *** 777Andrej заходит в комнату как participant и member [13:39:01] *** 777Andrej выходит из комнаты: Logged out [13:39:06] *** 777Andrej заходит в комнату как participant и member [13:39:46] *** goodwin98 выходит из комнаты: Replaced by new connection [13:39:47] *** goodwin98 заходит в комнату как participant и member [13:51:14] *** Gerc выходит из комнаты: Replaced by new connection [13:51:18] *** Gerc заходит в комнату как moderator и owner [14:02:32] *** 777Andrej выходит из комнаты: Logged out [14:02:48] *** 777Andrej заходит в комнату как participant и member [14:11:51] *** PtitsaF выходит из комнаты: Replaced by new connection [14:11:55] *** PtitsaF заходит в комнату как participant и member [14:19:24] *** Hombreby заходит в комнату как participant и none [14:24:32] *** snm заходит в комнату как participant и member [14:25:30] *** snm выходит из комнаты [14:34:32] *** 777Andrej выходит из комнаты: Logged out [14:34:40] *** 777Andrej заходит в комнату как participant и member [14:36:54] *** 777Andrej выходит из комнаты: Logged out [14:37:02] *** 777Andrej заходит в комнату как participant и member [14:38:08] *** goodwin98 выходит из комнаты: Replaced by new connection [14:38:13] *** 777Andrej выходит из комнаты: Logged out [14:38:14] *** goodwin98 заходит в комнату как participant и member [14:38:26] *** 777Andrej заходит в комнату как participant и member [14:38:55] *** PtitsaF выходит из комнаты [14:42:41] *** none выходит из комнаты [14:53:15] *** govardhana заходит в комнату как participant и member [14:54:51] *** 777Andrej выходит из комнаты: Logged out [14:55:00] *** 777Andrej заходит в комнату как participant и member [14:57:43] *** 777Andrej выходит из комнаты: Logged out [14:57:52] *** 777Andrej заходит в комнату как participant и member [14:58:42] *** govardhana выходит из комнаты [14:59:37] *** 777Andrej выходит из комнаты: Logged out [15:17:17] *** Hombreby выходит из комнаты: Logged out [15:23:24] *** evghetto_ заходит в комнату как participant и none [15:28:44] *** evghetto_ выходит из комнаты [15:32:43] *** none заходит в комнату как participant и none [15:33:54] <none> goodwin98, а теперь он фолтится. [15:43:48] *** ilya01 заходит в комнату как participant и member [15:53:10] *** ilya01 выходит из комнаты [16:03:12] *** fog_hedgehog выходит из комнаты: Replaced by new connection [16:03:12] *** fog_hedgehog заходит в комнату как participant и none [16:03:26] *** Gerc выходит из комнаты: Replaced by new connection [16:03:29] *** Gerc заходит в комнату как moderator и owner [16:07:03] *** 777Andrej заходит в комнату как participant и member [16:08:28] *** goodwin98 выходит из комнаты: Replaced by new connection [16:08:29] *** goodwin98 заходит в комнату как participant и member [16:13:06] *** goodwin98 выходит из комнаты [16:17:04] *** govardhana заходит в комнату как participant и member [16:23:40] *** SSKlord выходит из комнаты [16:24:29] *** govardhana выходит из комнаты [16:25:06] *** SSKlord заходит в комнату как participant и member [16:29:58] *** 777Andrej выходит из комнаты [16:37:31] *** 777Andrej заходит в комнату как participant и member [16:41:40] *** radiance заходит в комнату как participant и member [16:51:40] *** goodwin98 заходит в комнату как participant и member [16:53:14] *** goodwin98 выходит из комнаты [17:04:37] <none> Бред. История в случае падения не сохраняется. [17:05:41] <none> Gerc, так и задумано? [17:06:30] <SSKlord> Не думай ее включить пиздец будет [17:07:00] *** radiance выходит из комнаты [17:07:12] *** radiance заходит в комнату как participant и member [17:11:19] *** radiance выходит из комнаты [17:11:46] *** -kv- выходит из комнаты: Logged out [17:32:03] *** 6yp4uk заходит в комнату как participant и member [17:32:23] *** 6yp4uk выходит из комнаты [17:44:51] *** radiance заходит в комнату как participant и member [18:16:20] *** PtitsaF заходит в комнату как participant и member [18:20:02] *** Gerc выходит из комнаты: Logged out [18:24:54] *** Gerc заходит в комнату как moderator и owner [18:26:40] *** Hombreby заходит в комнату как participant и none [18:29:18] *** Hombreby выходит из комнаты [18:42:19] *** goodwin98 заходит в комнату как participant и member [18:43:20] *** PtitsaF выходит из комнаты: Replaced by new connection [18:43:22] <goodwin98> Так её кто нибудь делает или нет. А то я вчера начал, но это просто для себя от нечего делать. Мне удалять или заканчивать? [18:43:22] *** PtitsaF заходит в комнату как participant и member [18:46:17] <SSKlord> goodwin98, кого? [18:46:46] <goodwin98> Историю переводил на работу с sqlite [18:47:02] <SSKlord> Есприт еще делал [18:47:27] <goodwin98> Да что то давно начал, вроде.. [18:47:42] <goodwin98> Или не начал, непонятно [18:47:58] *** Gerc выходит из комнаты [18:48:13] *** Gerc заходит в комнату как moderator и owner [18:48:17] <goodwin98> esprit, ты историей занимаешься? [18:48:35] <esprit> неа [18:48:54] <goodwin98> А герц? [18:49:24] <SSKlord> esprit, ты же че-то начинал [18:49:54] <esprit> SSKlord, то, что я начинал, мы уже вчера обсудили. и оно нинужно [18:50:22] <goodwin98> esprit, а что там было? [18:51:16] <esprit> goodwin98, ну просто сделал реализацию рмс в виде sqlite-баз [18:51:46] <goodwin98> esprit, каждый чат в отдельную базу? [18:52:03] <esprit> goodwin98, да [18:52:29] <esprit>http://freize.info/log/logs/loc-id@conference.jabber.ru/2014/05/03.html вчерашнее обсуждение, если интересно [18:52:30] <goodwin98> esprit, ну я сделал все сообщения в 1 базу.. [18:52:57] <goodwin98> Сохранение и заполнение из истории тоже запилил [18:53:25] <esprit> если сделал, так показывай :) [18:54:14] <goodwin98> Я с телефона.. Но и я не умею красиво писать, потому и спрашиваю [18:56:08] <goodwin98> Меня смущает только то, что при получении истории контакта, вся история приходит одним массивом. [18:56:42] <goodwin98> Хз как нормально придумать [18:57:23] <esprit> каким ещё массивом? [18:57:31] <SSKlord> Одним тормозить же может [18:57:35] <goodwin98> Листом [18:57:39] *** radiance выходит из комнаты [18:57:56] <goodwin98> Ну или вектором. Я не знаю какая разница [18:58:57] <goodwin98> SSKlord, не.. Тормозить наверно нет, но расход памяти будет [18:59:30] <goodwin98> Короче я хз [19:00:07] <SSKlord> Смотря размер истории [19:00:07] <goodwin98> По одному сообщению получать из базы наверняка дольше [19:00:52] <SSKlord> Если 20 сообщений то фигня, а если разом по 200 постов [19:01:59] <esprit> так надо делать базу и адаптер для ListView, ничего не будет тормозить [19:02:11] <goodwin98> Можно сделать, чтоб при заполнении бралось только последние 30 сообщений.. Да так правильно [19:02:27] <goodwin98> Я а этом нуб [19:06:51] *** Gerc выходит из комнаты [19:14:37] <goodwin98> Что то я вас прочитал и не понял проблемы. Почему не сохранять тупо как базой задумано? [19:15:14] <goodwin98> Имя стринг, время лонг, аватар блоб или ссылка на файл [19:15:22] <esprit> Што [19:15:27] <goodwin98> Объекты какие то [19:15:47] <goodwin98> Што што? [19:16:01] <esprit> я ничего не понял [19:16:41] <goodwin98> Ну вы там обсуждали и хотели сохранять в базу объекты как они есть, нет? [19:17:45] <goodwin98> Причем почему то либо в одну базу, либо в разные. [19:18:53] <esprit> герц хотел создать один класс-обёртку над базой, которая умеет сохранять разные типы объектов. Как сохранять он мне показал, как загружать - нет. [19:21:36] <goodwin98> Каждый тип, в свою табличку базы не проще кидать? [19:23:25] *** goodwin98 выходит из комнаты [19:23:36] *** goodwin98 заходит в комнату как participant и member [19:26:21] *** Gerc заходит в комнату как moderator и owner [19:26:25] <esprit> для ростера, чатов и прочей хуиты - для каждой своя база. класс для работы с базой - один. [19:28:07] <goodwin98> толи я туплю и не понимаю в чем проблема, толи вы слишком закрученно делать хотите.. [19:28:58] <esprit> это герц хочет, я ничего не хочу [19:29:13] <goodwin98> класс для работы с базой принимает разные типы объектов и отдает объекты. Для каждого типа можно свой метод слепить. [19:29:26] <esprit> хуита [19:29:31] <goodwin98> почему ? [19:30:21] <goodwin98> каждый метод знает как раскидать свой объект на составляющие и положить в свою табличку [19:30:36] <esprit> лучше пицот обёрток сделать [19:31:26] <goodwin98> курсоры и все прочее нах не должно выходить дальше этого метода [19:31:41] <esprit> не должно конечно [19:31:59] <goodwin98> ну а что не так в том, что я написал ? [19:32:39] <esprit> goodwin98, ты тут про таблички пишешь, хочешь, чтоб была одна база sawim с таблицами roster, chats и т.д.? [19:33:23] <goodwin98> esprit: сколько я видел примеров всяких таблиц, то там, почему-то, именно таблицы плодили, а не файлы бд [19:34:12] <goodwin98> хотя почему это не должно тормозить - я хз [19:34:35] <esprit> умные люди делали потому что [19:34:59] <goodwin98> ну вот мне и кажется, что люди умные и хуйню делать не станут, значит так надо [19:35:52] <Gerc> каждую таблицу в отдельную базу надо? [19:36:28] <goodwin98> я хз. [19:37:22] <goodwin98> но я видел другое [19:38:06] <goodwin98> но историю, наверно, бы отдельно все таки создал файлик [19:38:45] <goodwin98> уж больно много она весить будет, чтоб мешать с тем же ростером [19:39:12] <esprit> при чём тут размер? [19:39:39] <goodwin98> чем больше количество записей, тем больше времени на проход по всей базе [19:39:58] <esprit> есть базы по 2 гига, и ничего, не тормозят [19:40:08] <goodwin98> на телефоне ? [19:40:18] <esprit> на компе [19:40:33] <goodwin98> именно sqlite ? или что-то более существенное ? [19:41:33] <goodwin98> имею ввиду с отдельным сервером, который может кэшировать и всякой хренью заниматься [19:41:33] <esprit> не знаю, а какая разница? [19:59:52] *** SSKlord выходит из комнаты: Logged out [20:03:46] *** fog_hedgehog выходит из комнаты [20:04:14] *** fog_hedgehog заходит в комнату как participant и none [20:07:01] *** SSKlord заходит в комнату как participant и member [20:19:32] *** none выходит из комнаты [20:47:56] *** SetazeR выходит из комнаты [20:57:31] <Gerc> esprit: переделал же запись на ContentValues и также гс жрало и было 4сек(хотя должно быть же 1сек), а это долго и жрет изза closeHistory() в ru.sawim.modules.history.HistoryStorage#addText [20:57:59] <Gerc> теперь надо опять с блобами перемерить [20:58:19] <goodwin98> зачем вообще closehistory при работе с базой ? [20:59:25] <Gerc> на каждую итерацию нинужен, да [20:59:36] <goodwin98> да и вообще не нужен же. [21:00:26] *** fog_hedgehog выходит из комнаты: Logged out [21:00:28] *** fog_hedgehog заходит в комнату как participant и none [21:02:09] <Gerc> goodwin98: closeHistory() это SQLiteOpenHelper.close() [21:02:36] <Gerc> чтоб после записи зыкрыть базу [21:03:18] <goodwin98> и на каждый чих ее закрывать-открывать ? [21:03:53] <goodwin98> значения она сохраняет сразу, вроде как.. памяти чтоли много берет ? [21:11:24] <Gerc> esprit: теперь твоя реализация с блобами без closeHistory() в ru.sawim.modules.history.HistoryStorage#addText так же 1сек заполняется и не жрет гс, как и классическая реализация [21:12:00] <esprit> ок [21:12:15] *** radiance заходит в комнату как participant и member [21:18:48] <goodwin98> и как с этими блобами делать выборки из базы ? Оо [21:20:27] <Gerc> goodwin98: byte[] getRecord(int id) { String where = COLUMN_ID + " = " + id; Cursor cursor = db.query(TABLE_NAME, null, where, null, null, null, null); cursor.moveToFirst(); return cursor.getBlob(cursor.getColumnIndex(COLUMN_DATA)); } [21:21:13] <goodwin98> ну это тебе вернет одну конкретную запись. А если ты хочешь получить историю с такого-то числа ? [21:22:00] <goodwin98> поиск опять же не сделать по истории [21:24:09] <goodwin98> да и вообще куча запросов разве не медленее, чем один, но емкий ? [21:25:45] <_vt> а уже накомитили это? [21:26:19] <esprit> нет ещё [21:26:21] *_vt на работе постоянно оптимизирует sql-запросы, все расскажет как надо [21:27:12] <goodwin98> _vt: как лучше сохранять в базу. бинарные данные или расписать отделоьно каждый элемент структуры в свой столбец ? [21:27:42] <esprit> _vt, ну вот тут вопрос промелькнул про хранение данных. Как хранить - всё в одном или контакты в одной базе, сообщения в другой? [21:27:53] <esprit> щас завалим вопросами [21:28:12] <_vt> esprit: в нашем случае - похуй [21:28:30] <_vt> это даже у меня на работе- тоже похуй [21:29:01] <_vt> у нас пока разные базы для простоты, в идеале надо объединить, но пока не спешим [21:29:17] <esprit> т.е. типа создать базу sawim.db с таблицами contacts, messages и будет норрм? [21:30:35] <esprit> и почему "в идеале надо объединить"? какой в этом смысл? [21:30:36] <_vt> покада [21:31:47] <esprit> щас в мандарине посмотрел, там тоже всё в одной базе. и контент провайдер напердолен [21:32:11] <_vt> esprit: на работе надо объединить не поэтому, а потому что там разные данные с разных магазинов [21:32:33] <esprit> ок [21:32:47] <Gerc> контентпровайдер сложно и тормозить будет [21:32:58] <Gerc> _vt: закомитил [21:32:58] <esprit> в чём сложность? [21:33:10] <_vt> в случае савима - разницы, где хранятся контакты и сообщения, я вообще не вижу, это будет видно на 100000 контактов и 10000000 сообщений [21:34:21] <_vt> Gerc: в жталке контентпровайдер, я пока так и не понял зачем [21:34:56] <goodwin98> тест то нафига коммитить в мастер ветку ? [21:34:59] <Gerc> _vt: для нескольких бд [21:35:13] <esprit> герц не умеет в ветки [21:35:15] <Gerc> goodwin98: это лучше чем рмс [21:35:33] <esprit> +1 баг в савиме теперь [21:35:34] <goodwin98> я про + for (int i = 0; i < 10000; ++i) { + ContentValues values = new ContentValues(); + values.put("incoming", 0); + values.put("author", "i" + i); + values.put("msgtext", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + values.put("date", 9869905); + db.insert("messages", null, values); + } + messagesHelper.close(); [21:35:50] <Gerc> а бля [21:36:22] <_vt> это мгновенно будет, скорее всего [21:36:50] <Gerc> _vt: что именно? [21:36:56] <_vt> ветки в случае савима неправильные, только потому, что релизов нет [21:37:35] <_vt> Gerc: я про пример goodwin98 [21:38:08] <goodwin98> _vt: можно запрос составить, чтобы пришла выборка по какому-то стоблцу, отсортированная как обычно, но только последние n строчек ? [21:38:45] <_vt> goodwin98: select столбец limit N [21:39:00] <goodwin98> _vt: это не первые n строк пришлет ? [21:39:14] <_vt> goodwin98: последние [21:39:22] <goodwin98> хм.. круть [21:39:45] <_vt> я кстати на этом застрял в савиме для гейос [21:40:38] <_vt> там это запрос не в ту сторону сортирован и все тормозит [21:40:43] <goodwin98> [code=""] public List<Record> getRecords(int num) { Vector result = new Vector(); Cursor c = MessagesDbHelper.getRowByName(database, uniqueUserId, baseName, num); if ( null == c) return null; if(c.moveToFirst()) { do { Record record = new Record(); record.from = c.getString(c.getColumnIndex(MessagesDbHelper.AUTHOR)); record.gmttime = c.getLong(c.getColumnIndex(MessagesDbHelper.TIMESTAMP)); record.incoming = false; // TODO response incoming message in history record.text = c.getString(c.getColumnIndex(MessagesDbHelper.MESSAGE)); result.add(record); } while (c.moveToNext()); } c.close();
return result; }[/code] так не быстрее получать num записей, чем в цикле дергать базу ? [21:41:16] <_vt> то есть я прошу 20 сообщений, и самое старое ИЗ ЭТИХ почему-то СВЕРХУ, и наборот нельзя просто так без пердолинга [21:42:09] <_vt> goodwin98: там в getrowbyname был лимит, если я помню правильно [21:42:28] <goodwin98> _vt: я ее переписал же [21:42:53] <goodwin98> и он был в getIds [21:43:26] <_vt> goodwin98: точно, в фастчяте так [21:43:51] <_vt> goodwin98: идс - там индекс, поэтому по индексу запрос идет в 1000 раз быстрее [21:44:10] <_vt> а по нейм - там медленно, если индекса нет [21:45:18] <goodwin98> ясно.. значит хрень написал [21:45:43] <goodwin98> хотя как они отличают id одного чата от id другого, я пока не нашел.. [21:46:50] *** evghetto_ заходит в комнату как participant и none [21:47:52] <_vt> вот таблица: id name 1 vasya 2 petya 3 masha если запрашивать select by id=, то будет мгновенно если select by name='pasha' - будет внутри базы сначала искать по id, потом по паше [21:48:54] <_vt> если есть индекс по name, то тоже быстро [21:49:06] <goodwin98> я это понял, но в нашем случае под id =1 может быть сообщение из савим@c.j.r а под id = 2 - герц@жру [21:49:44] <_vt> но чем больше полей с индексами - тем ДОЛЬШЕ вставка новых полей, ибо надо все индексы обновить [21:50:19] <goodwin98> _vt: как понять индекс по name ? какой-то модификатор при создании ? [21:51:46] <_vt> goodwin98: изначально - primary key [21:51:48] <goodwin98> и обязано ли поле, в данном случае быть с уникальным содержимым ? [21:52:16] <_vt> goodwin98: по primary key всегда есть индекс [21:53:43] <goodwin98> _vt: но primary key должен быть уникальным каждый раз ? короче, как сочинить базу, чтоб можно было составлять запрос на получение кучи записей, по названию чата ? [21:54:38] <esprit> название таблицы в базе = название чата? [21:55:23] <esprit> ну и из этой таблицы брать по id [21:55:24] *** Hombreby заходит в комнату как participant и none [21:55:42] <goodwin98> таблицы тоже, почему-то не плодят обычно.. даже на крупных бд [21:56:20] *** evghetto_ выходит из комнаты [21:56:31] *** 6yp4uk заходит в комнату как participant и member [21:57:25] *** 6yp4uk выходит из комнаты: I'll be back [21:58:43] <_vt> в первую очередь не надо мудрить, и пользовать базу так, как в фастчяте сделано, строго по id, то есть по primary key [21:59:44] <_vt> дальше, когда бы уже знаем, что в коде мы постоянно запрашиваем where name='', то в базе должен быть индекс по name [22:00:01] <_vt> я пока еще не видел что вы там в савиме сделали, завтра скажу [22:00:35] <esprit> в савиме вообще херня сделана, не как в фастчате [22:00:37] <Hombreby> У меня бэкэнд чата выбирает сообщения опреденного чата по его айди из структуры сообщений таблицы. Имеет смысл создавать ещё таблицу только если их очень много :) [22:01:30] <goodwin98> чатов вполне может быть под сотню. [22:01:37] <_vt> Hombreby: имеет смысл сделать индекс по id, если id это primary key, то делать ничего не надо [22:01:41] <goodwin98> под сотню будет и таблиц [22:02:15] <esprit> сотня таблиц - это плохо что ли? [22:03:06] <_vt> похуй на таблицы вообще, скорость выборки зависит от индексов [22:03:09] <Hombreby> _vt, _vt, логично) [22:03:33] <goodwin98> ок.. значит на каждый чатик по таблице [22:03:56] <_vt> если все запросы идут по primary key, то будет мгновенно, независимо от числа таблиц [22:06:02] <_vt> goodwin98: в либе для айос все чатики пишутся в одну таблицу, с полями = чятик, сообщение [22:06:40] <_vt> я пока не знаю, хорошо это или нет, у меня тормоза уже на запросе одного чятика [22:06:47] <Hombreby> Хм [22:06:56] <Hombreby> Сколько запрос? [22:07:12] <_vt> но там я пока не разобрал, тормоза в айос самой, или в говнолибе [22:09:15] *** Hombreby выходит из комнаты: I'll be back [22:09:18] *** Hombreby заходит в комнату как participant и none [22:09:22] *** Hombreby выходит из комнаты: I'll be back [22:09:23] *** Hombreby заходит в комнату как participant и none [22:09:29] *** Hombreby выходит из комнаты: I'll be back [22:09:29] <goodwin98> да я догадывался, что это долго должно быть [22:09:31] *** Hombreby заходит в комнату как participant и none [22:10:17] <Hombreby> Хм. Раньше при входе в чистый чат сообщения подгружались. Теперь нет :) регресс какой-то.. [22:10:54] <goodwin98> сейчас ты и выйти то нормально не можешь, чтоб чат очистился. [22:11:22] <Hombreby> Это да. Я вышел, а горит зелёный. Такие дела [22:11:41] <goodwin98> через даже не жопу, а наверно через хуй только можно сделать так, чтоб чат стал чистым [22:12:08] <_vt> в общем, это главный секрет DATABASE ARCHITECTOR-ов: этот чувак профилирует базу на запросы, и делает индексы там, где запросы чаще всего. Это в хуевом случае. В хорошем случае он чинит базу, чтоб все связи были по айди с индексами. За это DB ARCHITECT получает многабабла [22:13:36] <_vt> это вот очень выгодное знание, если хотите получать многабабла. За знание индексов этот мудак получает больше погромистов. [22:15:38] <_vt> хуевый дб-архитект, кстати, пихает индексы где попало, что в результате делает быстрое открытие таблиц, но ооочень долгую вставку [22:15:52] <Hombreby> А вы для каких целей решили историю в базе теперь хранить? Раньше было вроде бы в тексте [22:16:12] <goodwin98> чет я все равно не понимаю что за индекс такой :-( [22:16:27] <esprit> раньше было в куче файликов [22:16:39] <goodwin98> т.е. я понимаю, что какая-то внутреняя структура для быстрого поиска.. [22:16:50] <goodwin98> но как это выглядит снаружи - не понимаю( [22:18:19] <_vt> goodwin98: ну вот есть таблица, вася в 105 строке, маша в 20134 строке, петя в 23 строке. Обычный запрос, если нет индекса по name, пробегает ВСЮ БАЗУ и ищет там машу с васей и петей. Запрос индексом сначала смотрит в индекс и видит номера строк, СРАЗУ их и возвращает [22:19:17] <_vt> то есть запросы-то одинаковые, это внутри базы делается, если есть индекс по нужному полю - сразу возвращаются номера, без полного перебора [22:20:43] <goodwin98> ладно.. для общего ознакомления хватит.. чай все равно с бд не работать [22:22:16] <_vt> меня на работе директор заебал, просил объяснить как ИНДЕКСЫ выглядят, я тоже не мог сначала объяснить, когда задрочил базу, то смог вот на примере васи и пети объяснить [22:22:25] <_vt> он правда мог и забыть [22:22:32] <Hombreby> Тут тоже смотря какие цели :) если вся таблица почти нужна, то индексы лучше не трогать. Хотя для истории конечно нужны только позиции сообщений из опред чатов.. [22:22:49] <Hombreby> На васе он понял?) [22:22:56] <_vt> вроде понял [22:23:33] <_vt> так я вот щас плохо объяснил? Кто что не понял? Давайте точнее расскажу [22:23:54] <esprit> интересно, зачем директору знать про индексы [22:23:55] <_vt> Мне это полезно по работе просто, директору объяснять :) [22:25:27] *** -kv- заходит в комнату как participant и member [22:26:52] *Hombreby проверял на практике в своё время. При выборке where name=a сервер упал за шесть минут, при id=3 3% нагрузка. Такие дела :) плюс запрос короче на долю секунды [22:27:46] <goodwin98> только вот name может много раз встречаться, а id уникальный [22:28:43] <_vt> Hombreby: просто индекса по name не было [22:29:27] <goodwin98> понятно что бд не будет рыться по всему файлу в поисках других копий id [22:30:10] <_vt> просто левый мудак, которого взяли на работу, где жалуются на медленные выборки - профилирует запросы и добавляет индексы по частым запросам, и люди, работающие с базой, охуевают от счастья что выборки стали в 100000 раз быстрее [22:30:56] <_vt> но это чревато тем, что записать новую запись становится в 100000 раз медленнее, ибо при записи бд обновляет все индексы [22:32:22] <_vt> то есть в хорошем случае, специалист по бд идет к погромисту базы и заставляет его переписать запросы так, чтоб и select и insert работали по индексам [22:34:14] <tliSida> RSS: Новости для https://github.com/gerc99/SawimNE/commits/master.atom Recent Commits to SawimNE:master • Store data in sqlite databases • Convert old storages to new ones [22:40:10] *** radiance выходит из комнаты [22:42:09] *** Santiago26 заходит в комнату как participant и member [22:57:30] *** Santiago26 выходит из комнаты [23:01:23] *** mnezius выходит из комнаты [23:07:10] <_vt> esprit: директору это вообще не нужно, у него просто иногда заебы посмотреть, чем я занимаюсь [23:07:30] <_vt> esprit: вот я ему это объясняю, подробно [23:10:18] *** mnezius заходит в комнату как participant и member [23:11:53] <_vt> goodwin98: если ты говоришь базе, что id это primary key, и она вдруг найдет одинаковые id, то скажет что база разрушена нахер [23:12:00] <_vt> ибо такого не бывает [23:12:26] <goodwin98> ну да. и я про это [23:14:13] *** mnezius выходит из комнаты [23:16:01] *** mnezius заходит в комнату как participant и member [23:18:43] <_vt> goodwin98: а, чтоб лимит прислал последние строки, надо select by столбец ORDER BY ID DESC limit N [23:18:55] <_vt> если ORDER BY ID ASC, то будут первые [23:18:55] <goodwin98> погуглил малость про индекс. понял, что он создается отдельной командой [23:19:46] <_vt> select столбец, без by [23:20:01] <goodwin98> _vt: теперь лично для меня это не важно, ибо делать будет более знающий человек ) [23:20:10] *** esprit выходит из комнаты [23:21:50] <_vt> вот ебаная либа на айос, если ей зажать лимитом, или не зажимать, похуй, она привязывается по порядку сверху, в этом и херь [23:22:25] <_vt> если ей делать ASC, то в чате показывает последнее вверху [23:22:36] <Hombreby> [_vt 22:18] » goodwin98: а, чтоб лимит прислал последние строки, надо select by столбец ORDER BY ID DESC limit N --- Если там ещё дата, то скорее всего в выходе инверсия будет :) последние то они последние. [23:24:02] *** esprit заходит в комнату как participant и member [23:24:58] *** sarmat выходит из комнаты: I'm happy Miranda IM user. Get it at http://miranda-im.org/. [23:25:18] <Hombreby> Т.е. новые сверху, а старые снизу :) а то я что-то загнул. [23:26:44] *** Santiago26 заходит в комнату как participant и member [23:27:10] *** Santiago26 выходит из комнаты [23:34:07] *** Gerc выходит из комнаты [23:34:28] *** Gerc заходит в комнату как moderator и owner [23:42:46] *** -kv- выходит из комнаты [23:42:59] *** -kv- заходит в комнату как participant и member [23:48:29] *** -kv- выходит из комнаты