31 мар. 2010 г.

Непривычности Google App Engine

Очень непривычным оказался способ работы "маленькими кусочками". Запись в хранилище занимает относительно много времени (за 30 секунд успевает совершится около 200 операций записи по одному объекту), время на разбор не считаем, т.к. там у меня все просто. Плюс было удаление может быть 100-200 тыс. записей кусками по 100 записей за раз: выборка 100 ключей, удаление этих ключей. После разных проб и импортирования 5-6 раз набора из 50 тыс. записей бесплатная квота на процессор была выбрана на 66%. Попробую вставлять записи пачками по 10-120 штук, посмотрю что из этого получится. Кроме того существует квота квота на процессорную нагрузку DataStore. Как точно она учитывается пока не разбирался, но похоже что она учитывается в общей процессорной нагрузке, тогда она в общем-то непонятна, т.к. она значительно (в 10 раз) больше процесорной квоты для приложения. Update: Ознакомился внимательнее, почитал форум - действительно нагрузка на datastore входит в общую нагрузку. Для бесплатного режима цифра приведена скорее просто чтобы была - её не достигнуть, фактически она работает только для платного режима, т.к. нагрузку на datastore нельзя докупить.

30 мар. 2010 г.

Скорость работы Google App Engine

Первое знакомство с Google App Engine у меня состоялось пару месяцев назад. Коэффициент полезной скорости процессора, т.е. за отведенные 30 секунд времени счетчик замерял нагрузку только 20-25 секунд процессорного времени. Сейчас то ли Google Apps Engine глобально улучшился, то ли мое тестовое приложение переместилось на более свободный сервер, но коэффициент полезной скорости процессора теперь около 2, т.е. за отведенные 30 секунд скрипт отрабатывает 60-66 секунд процессоного времени.

27 мар. 2010 г.

Чтение текстовых строк на Java

Читать строку из потока умеет класс BufferedReader.

ByteArrayInputStream iStream = new ByteArrayInputStream(buf, 0, read_bytes);
BufferedReader reader = new BufferedReader(new InputStreamReader(iStream, Charset.forName("windows-1251")));
String line = reader.readLine();
            

17 мар. 2010 г.

Индикатор раскладки клавиатуры при работе на двух мониторах

Проблема: При подключении второго монитора как отдельного экрана (separate X screen) появилась ошибка что не могу запустить область уведомления, после чего индикатор раскладки пропал с панели задач и стал висеть отдельным окошком. Решение: Нажать на панели задачь правой кнопкой мышки, выбрать "Add to panel" и добавить объект notification area. Причина: Пока не исследовал, по симптомам похоже, что создаются два одинаковых объекта на панелях (при разделении мониторов на разные экраны создаются раные панели), а индикатор выводтся как раз в эту область.

Русская раскладка в opensolaris

Проблема: При выборе русской раскладки в настройках ставится машинописная раскладка (например точка это Shift+7). Решение: Заменить файл /etc/iiim/layoutdata.xml на файл с обычной раскладкой (кроме буквы ё), файл взят со страницы http://osum.sun.com/forum/topic/show?id=2181626:Topic:490343

14 мар. 2010 г.

Контролы swing

Как оказалось в Swing есть не все вроде бы привычные контролы. Например в Swing нет контрола календаря.

7 мар. 2010 г.

Бесплатный менеджер разделов для Windows

Для экспериментов с OpenSolaris нужно подвинуть Windows-разделы на нетбуке. Старый Partition Manager работать в Windows 7 отказался, решил поискать что-то бесплатное. Нашел EASEUS Partition Master - сейчас он занимается уменьшением NTFS.

5 мар. 2010 г.

Бесплатный профайлер для .NET

http://www.eqatec.com/

OpenSolaris 2009.06, день первый

На acer travelmate 5620 поставился без проблем, сам подцепил видео Nvidia, WiFi. Работает быстрее, чем внутри виртуальной машины, но на 2.5Гб памяти и двухъядерном процессоре можно было бы и побыстрее. Менеджер пакетов при закачке пакетов процесс показывает какими-то странными кусками то в 500Кб, то в несколько мегабайтов, поэтому непонятно - идет процесс закачки или нет. Попытка собрать pidgin из исходников закончилась тем, что нашел его уже установленным - в меню. Раскладка russian почему-то имеется ввиду машинописная (точка на shift+7), альтернативы в меню выбора раскладок нету.

4 мар. 2010 г.

2 мар. 2010 г.

Установка Opensolaris с USB флешки

После того как с помощью OpenSolaris Live USB Creator создать загрузочную флешку не получилось и с помощью OpenSolaris из виртуальной машины - тоже (при загрузке появлялась надпись "Bad PBR sig"). Нашел, что сначала нужно записать флешку два раза. Первый раз она записывается как-то быстро, потом е` нужно вынуть, снова вставить и записать образ снова, на этот раз он будет писаться в несколько раз дольше. Итоговая последовательность действий: 1. Записать образ с помощью OpenSolaris Live USB Creator на флешку. 2. Вынуть флешку и подождать 30-60 секунд, чтобы компьютер е` забыл 3. Снова записать на флешку тот же образ. Образы для записи можно взять на сайте genunix.org (нужно качать образ .usb).

Eclipse & Netbeans C Linux

Изначально попробовал работать в eclipse, т.к. уже привык, но оказалось, что eclipse либо не очевидно настраивается, либо не оч. хорошо работает: иногда долго стартует отладка, иногда отладчик просто вылетает + куча мелких косячков, создающих неприятный фон. Попробовал netbeans - почувствовал, что попал в цельную среду разработки, как уже давно привык в Visual Studio - устанавливается просто, работает сразу после установки так, как ожидается, без необходимости что-то донастраивать. Нашел один минус и один минусик: 1. Если отлаживаемая функция была вызвана из какой-то библиотечной, то по пошаговом выходе из нее Netbeans не дает ни сделать еще один шаг, ни запустить выполнение программы дальше, т.е. приходится перезапускать её целиком. 2. Некоторые окошки сливаются с фоном или размер поля меньше размера буквы. Вообще в Netbeans мне понравилась изначальная интеграция с Subversion - в Eclipse для этого надо поставить вручную несколько разных плагинов, наглядное приятное сравнение файлов, удобная локальная история (в Ecplipse тоже есть, но видимо неудобна, т.к. не пользуюсь).

GNU C работа со структурами данных

В Gnu GCC есть заголовочный файл search.h, в нем полезные функции для работы с данными: бинарный поиск по массиву bsearch бинарное дерево: tsearch, tfind, tdelete, twalk, tdestroy (для tdestroy перед заголовком нужно определить макрос __USE_GNU) Нужно быть внимательным - в часть функций передается указатель на кореть, в часть - указатель на указатель. Через этот же файл подключается работа с хеш-таблицей.