Опыт основан на проекте, который я делал два года и который включал серверное исполнение JavaScript + интерфейс в Хроме, интенсивно использующий JS (закладки, плавающие окна, undo и пр.) На клиенте использовался только jQuery. На сервере собирался движок V8 для и серверные скрипты работали на JavaScript.
Работа с JavaScript мне напомнила старую шутку про «если опель поставить в тихом лесу, то можно услышать как он гниет». С JavaScript эту шутку можно сформулировать как «если отвернуться на минутку от куска JavaScript-кода, то можно услышать как он устаревает».
Т.е. основную проблему JS сформулировал бы так: «никогда нет уверенности, что этот кусок кода работает оптимальным образом». Поскольку JS слишком гибок, он позволяет делать одно и то же разными путями и нет понимания — какой путь лучше. В других языках не так. Там более-менее ясна логика работы и ясно, где может быть узкое место. В JS понять это трудно. Некоторые места приходится переписывать по 10 раз и все равно непонятно — достигнут ли приемлимый уровень быстродействия.
Оптимизированный код на JS сложен для понимания программистом. Его трудно читать, много неявного происходит.
Еще никакой встроенной поддержки для разделения логики нету. Ни модулей, ничего. JavaScript настолько легко перемешивается в кучу, что просто диву даешься.
Да это все, вообщем, давно уже было сказано. Что вас удивило в моем замечании-то? Не зря же «улучшителей» JS больше, чем китайцев в Китае… :)
Ну, надеюсь (хотя, конечно, могу ошибаться) они встроят умную регуляцию и при воспроизведении кино и качании торрентов вентилятор не включается или крутится слабо. Система-то еле нагружена будет… А уж когда игра — ради бога.
Иначе, на мой взгляд, нет смысла затевать это дело и называть маленький PC «приставкой». Вообщем, верю в инженерный талант Valve)
Насчет Intel — наверное. Вот AMD как раз идет по пути энергосбережения. Вон и в PlayStation 4 их решение взяли…
Записать угрозы на пленку.
Архив кода зашифровать и залить на какой-нибудь dropbox.
Сообщить директору, что он использует разработанный вами в свободное время в исследовательских целях продукт. Который вы планируете в ближайшее время сделать Open Source.
Использовать полученный опыт работы напрямую на авиакомпанию.
А, вообщем, конечно, надо было гораздо раньше почувствовать «неладное».
Изначально делается посылка, что sqlite это «недобаза» из-за отсутствия встроенного языка, прав доступа, и пр. Этот вывод расширяется на «плохую» работу оптимизатора запросов. В sqlite безусловно имеется оптимизатор запросов, не такой мощный как в Oracle, но вполне приличный. В каждой новой версии sqlite он улучшается.
Поэтому, вначале надо понять какой версией sqlite пользуетесь вы. Затем увидеть схему БД, напишите какие индексы есть по указанной таблице. Если вы действительно наблюдаете такую разницу по времени, то, возможно, наткнулись на какой-то баг и следует отправить баг-репорт.
Оператор LIKE может быть использован в индексе при записи операнда в виде 'ABC%'.
Насчет однопоточности: не знаю каким образом встроена sqlite на вашей платформе, но обычно всегда можно открыть N независимых соединений к БД. Блокировка БД будет возникать только при обновлении (т.е. sqlite работает по принципу «многие читают-один пишет») и ее можно обойти. Короче, просто открывайте дополнительные соединения к БД.
В вашем примере используется кэширование загруженных из БД объектов на диске. sqlite позволяет создать БД в памяти, которую очень удобно использовать как раз для кэширования.
Sqlite замечательно использует индексы. Отсутствие хранимых процедур не влияет на их работу.
Условие LIKE '%foo%' не индексируется ни в одной БД, включая Oracle. Поэтому оно не может и не должно влиять на подбор индекса.
Работать из двух потоков можно, используя два соединения к БД. Использовать одно соединение можно при условии, то sqlite работает в режиме сериализации.
Кэширование данных можно выполнять по-разному. Можно и БД в памяти использовать.
Напомнило ценник в каком-то месте, нечто вроде справочной.
Задать вопрос — 50 руб.
Задать вопрос и получить ответ — 100 руб.
Получить ответ на заданный вопрос — 200 руб.
Получить ответ на заданный вопрос в течение минуты — 300 руб.
Получить правильный ответ на заданный вопрос в течение минуты — 500 руб.
" каждый сам для себя решает что ему нужно полноценный компьютер"
В том и дело, что это — не полноценный компьютер. Это кастрированный ноутбук — маленький экран, неудобная клавиатура и малое время работы без розетки. Приличный вес опять же. Кто заплатит за эти компромисcы и зачем?
Не очень понял — зачем вообще эти танцы с _Write?
Работа с JavaScript мне напомнила старую шутку про «если опель поставить в тихом лесу, то можно услышать как он гниет». С JavaScript эту шутку можно сформулировать как «если отвернуться на минутку от куска JavaScript-кода, то можно услышать как он устаревает».
Т.е. основную проблему JS сформулировал бы так: «никогда нет уверенности, что этот кусок кода работает оптимальным образом». Поскольку JS слишком гибок, он позволяет делать одно и то же разными путями и нет понимания — какой путь лучше. В других языках не так. Там более-менее ясна логика работы и ясно, где может быть узкое место. В JS понять это трудно. Некоторые места приходится переписывать по 10 раз и все равно непонятно — достигнут ли приемлимый уровень быстродействия.
Оптимизированный код на JS сложен для понимания программистом. Его трудно читать, много неявного происходит.
Еще никакой встроенной поддержки для разделения логики нету. Ни модулей, ничего. JavaScript настолько легко перемешивается в кучу, что просто диву даешься.
Да это все, вообщем, давно уже было сказано. Что вас удивило в моем замечании-то? Не зря же «улучшителей» JS больше, чем китайцев в Китае… :)
Иначе, на мой взгляд, нет смысла затевать это дело и называть маленький PC «приставкой». Вообщем, верю в инженерный талант Valve)
Насчет Intel — наверное. Вот AMD как раз идет по пути энергосбережения. Вон и в PlayStation 4 их решение взяли…
Долго хочу сделать upgrade устаревшему плееру, но что-то ничего не нравится. Ни андроидные, ни специальные коробки. А ваш вариант нравится.
Но, наверное, подожду все-таки следующее поколение процессоров, пускай еще похолоднее будут. И заодно SSD побольше станут.
И Steam Box интересен, может за меня все Valve сделает (маленький, быстрый, бесшумный), просто пойти и купить :)
Архив кода зашифровать и залить на какой-нибудь dropbox.
Сообщить директору, что он использует разработанный вами в свободное время в исследовательских целях продукт. Который вы планируете в ближайшее время сделать Open Source.
Использовать полученный опыт работы напрямую на авиакомпанию.
А, вообщем, конечно, надо было гораздо раньше почувствовать «неладное».
Если под iOS нельзя читать двоим это странно. Зачем такое ограничение…
Изначально делается посылка, что sqlite это «недобаза» из-за отсутствия встроенного языка, прав доступа, и пр. Этот вывод расширяется на «плохую» работу оптимизатора запросов. В sqlite безусловно имеется оптимизатор запросов, не такой мощный как в Oracle, но вполне приличный. В каждой новой версии sqlite он улучшается.
Поэтому, вначале надо понять какой версией sqlite пользуетесь вы. Затем увидеть схему БД, напишите какие индексы есть по указанной таблице. Если вы действительно наблюдаете такую разницу по времени, то, возможно, наткнулись на какой-то баг и следует отправить баг-репорт.
Оператор LIKE может быть использован в индексе при записи операнда в виде 'ABC%'.
Насчет однопоточности: не знаю каким образом встроена sqlite на вашей платформе, но обычно всегда можно открыть N независимых соединений к БД. Блокировка БД будет возникать только при обновлении (т.е. sqlite работает по принципу «многие читают-один пишет») и ее можно обойти. Короче, просто открывайте дополнительные соединения к БД.
В вашем примере используется кэширование загруженных из БД объектов на диске. sqlite позволяет создать БД в памяти, которую очень удобно использовать как раз для кэширования.
Sqlite замечательно использует индексы. Отсутствие хранимых процедур не влияет на их работу.
Условие LIKE '%foo%' не индексируется ни в одной БД, включая Oracle. Поэтому оно не может и не должно влиять на подбор индекса.
Работать из двух потоков можно, используя два соединения к БД. Использовать одно соединение можно при условии, то sqlite работает в режиме сериализации.
Кэширование данных можно выполнять по-разному. Можно и БД в памяти использовать.
Вообщем, не очень понятно, что хотели сказать.
Задать вопрос — 50 руб.
Задать вопрос и получить ответ — 100 руб.
Получить ответ на заданный вопрос — 200 руб.
Получить ответ на заданный вопрос в течение минуты — 300 руб.
Получить правильный ответ на заданный вопрос в течение минуты — 500 руб.
В том и дело, что это — не полноценный компьютер. Это кастрированный ноутбук — маленький экран, неудобная клавиатура и малое время работы без розетки. Приличный вес опять же. Кто заплатит за эти компромисcы и зачем?