Mercury13: я так понимаю опыт огромный с j2me )) Можешь обяснить принцип зависимостей. Т.к. для реализации топорного запуска самых простых мидлетов нужна реализация JSR 139 (CLDC) и JSR 118 (MIDP 2.0) ?
"Обычный ME’шник драйверов не пишет, их пишут авторы прошивок мобильников." Вот, мне интересен момент именно той прослойки между jvm и железом, а не написание j2me программки.
Очень много пищи для размышления предоставили, спасибо за это, отдельно спасибо за MicroEmulator т.к. похоже это как раз то что я ищу.
Могли бы еще немного описать особенностей работы j2me ?
Baramandarin: Вас не смущает зачем вообще нужен сокс?
Выдержка из википедии:
"SOCKS — сетевой протокол, который позволяет пересылать пакеты от клиента к серверу через прокси-сервер прозрачно (незаметно для них) и таким образом использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от «SOCKet Secure».
Более поздняя версия SOCKS5 предполагает аутентификацию, так что только авторизованные пользователи получают доступ к серверу."
Дмитрий Шицков: все вполне решабельно, в микротике есть возможность рулить маршрутами и доменными зонами, на крайний случай есть metarouter в который можно поставить openwrt(еще и не 1 а десяток) а уж в нем то вообще можно разгуляться.
The results of parsing 100000 rows of “12 34″ on my macbook were:
Split: 366ms
IndexOf: 50ms
StringTokenizer: 89ms
GuavaSplit: 109ms
IndexOf2 (some super optimised solution given in the above question): 14ms
CsvMapperSplit (mapping row by row): 326ms
CsvMapperSplit_DOC (building one doc and mapping all rows in one go): 177ms
Therapyx: вот про это я писал выше постом что можно и нужно в случае больших данных выцеплять целое сообщение и вляпывать в класс а потом по необходимости в отдельных потоках или по обращению производить медленный парсинг и раскладывание по полочкам.
Therapyx: опишите все возможные комбинации данных в классы с минимумом необходимых полей. Разбираете строчку и данные запихиваете в нужный класс, класс отправляете дальше. Синглтон конкретно в этой ситуации не подойдет т.к. данных очень много и лучше использовать многопоточность без локов. Если пойдете путем как уже начали то это и есть костыли которые пытаетесь избежать, лучше один раз опишите каждый тип данных а потом по необходимости просто сделаете еще один класс с новым типом данных чем будете перелопачивать кучу кода и искать где надо сделать Null или выловить новое поле с новым типом данных. С отдельным классом описывающим конкретный тип данных работать дальше будет очень приятно.
Так же можете помимо многопоточного чтения файлов(это полезно если файлы на ssd или на винтах в рейде) еще и ускорить обработку.
Скажем каждый класс описывает определенную структуру.
class SomeData. Все классы отнаследованы от одного родителя Data и переопределяют общие мотоды и в частности метод parse();
Где то в коде вы читаете, скажем, текстовый файл. Вместо того чтобы нонстопом медленно парсить данные сразу через стрингтокенайзер вы читаете все строку до "\n"и отправляете ее через конструктор в нужный класс с типом данных. Файлик очень быстро читается а парсинг данных можно делать даже по требованию или сразу.
По требованию это будет что то типа такого:
class SomeData. В нем метод:
getData(){
if(bParsed==false){
this.parse(); //Медленный парсинг и раскладывание данных по полочкам
}return this.data;
}
Сразу будет проще, где то в отдельном потоке будет вызываться метод parse. Можно даже обернуть весь класс в поток и в конструкторе после передачи ему непарсенной строки запускать метод parse в отдельном потоке.
PS фух, целое сочинение =D
P_Alexander: в вашем случае у родителя должен быть метод например draw который вы переопределяете во всех потомках. Т.е. метод draw в классе линии нарисует линию, в треугольнике треуголиник. Дальше тогда можете не приводить тип а писать так:
Figure f = aro.get(rabdom);
f.draw();
В таком случае вам до лампочки что именно там лежит но нарисует он фигуру которая там лежит.
P_Alexander: Вы не приводите тип и естественно у вас не будет методов которые определены в классе.
Т.е. если вы сделаете так:
Object f = aro.get(rabdom) то тип у вас будет Object и соответсвенно уведите только методы от Object.
Если сделаете так:
Rect f = (Rect) aro.get(rabdom) то увидите все методы класса Rect.
Т.е. Вам в любом случае вытаскивать не Object а то что вы туда запихнули. Object будет выступать только этакой коробкой в которую вы положили известно что и достали такое же известно что.
Денис Загаевский: а при чем тут это? Я как бы вкурсе, а код выше это просто возможное решение или идея т.к. для каждого случая нужен свой подход для работы с синглтонами.
Arris: как правило не задумываются о куче векторов уязвимостей. Скажем очень часто прибегают к shell_exec и при этом не особо фильтруют данные при передаче в него, примеров такого очень много.
Алексей Сундуков: очень много инструкций есть, в свое время я запускал отдельный Х сервер в отдельном tty с игрой, по необходимости убивал tty с рабочим столом чтобы дать буста. Вообще бонусов много при запуске игры в отдельном Х сервере, для меня это было решением проблемы перехода на рабочий стол и обратно в игру =D
Как и писал ниже, причина такого из-за врапперов и тяжелого рабочего стола. Поэтому разработчики и завышат сис. требования для линуксов, кто его знает что у тебя там за графика\рабочее окружение и т.д., перестраховались и умножили все требования на 2-3-4.
Так надо было начинать с того что надо для bluestacks.
Ставьте и настраивайте FREECAP, он может любую програмку заставить работать через прокси хоть и очень редко с глюками.