2007-11-17

Дешевый межгород с sipnet.ru

Все необходимое для подключения, настройки и контроля находится на страничке http://www.sipnet.ru/

Прежде всего нужно зарегистрироваться:
https://customer.sipnet.ru/cabinet/register
тонкости:
  • нужно заполнять все поля (можно совершенно левой информацией, главное заполнить и запомнить Имя/Логин, Пароль, Электронная почта т.к. туда придет активация и Контрольное число)
  • даты вводятся в формате дд/мм/гггг. Пр: 23/02/2007
После регистрация на указанный email придет письмо с ссылкой для активации (проверка что вы не робот).

После этого вы можете заходить в свой "личный кабинет": справа-внизу на главной странице http://www.sipnet.ru/ есть поля для ввода имени и пароля.

В личном кабинете наверху указан ваш SIP ID - по сути ваш "номер телефона". Например мой: 2983927
На него можно позвонить из других SIP сетей в Internet набрав:
2983927@sipnet.ru
Внимательно запишите его на бумажку т.к. именно его надо указывать для зачисления денег на счет в Евросети.

В личном кабинете идете в раздел: Скачать файлы.
Выбираете SIPpoint (Программный агент для SIPNET). Скачиваете, запускаете для установки.

Запускаете SIPPoint. Заходите в Файл|Параметры.
Вводите ваш SIP-адрес: sipid@sipnet.ru, в моем случае: 2983927@sipnet.ru
Учетное имя: sipid, в моем случае 2983927
Пароль: пароль указанный при регистрации
OK. После чего телефон должен зарегистрироваться на сайте - иконка станет зеленой и в строке статуса будет "В сети".
Переходите на закладку "Телефоны", вводите номер в формате код_страны код_города номер, например: 74951234567 или 79173411111 и звоните, звоните, звоните!

У них идет акция и звонки на стационарные телефоны
Россия, Москва $0.000
Россия, Санкт-Петербург $0.000
На счету сразу есть 1$, но я рекомендую положить туда рублей 100. Иначе иногда в разговор будет вставляться реклама ;-)
Чтобы позвонить другому пользователю SIPNET, например мне, надо набрать его sipid.

Для качественной связи нужна гарнитура (наушники и микрофон) или USB-телефон (продаются в той же Евросети), например такой: http://skypemate.ru/catalogue/?wid=4 .

Если SIPPoint Вас утомит, то есть другие варианты программных телефонов:
http://www.sipnet.ru/orderandpay/software.html

Инструкция по их настройке есть в Internet, но по сути главные параметры там: sipnet.ru, sipid@sipnet.ru и пароль.

PS: не забывайте о том, что голос генерирует довольно большой трафик. Многое зависит от того, куда и с какого телефона Вы звоните. Поэтому рекомендую провести несколько тестовых звонков, чтобы оценить качество и посмотреть какой счет выставит Вам Ваш Internet-провайдер.
Скорее всего, на текущий момент развития Internet в России, качество будет приемлимым, а совокупная стоимость звонка (плата sipnet + плата за трафик) заметно ниже стоимости такого же звонка с городского или мобильного телефона.

Mobile World War!

http://code.google.com/android/

http://www.openhandsetalliance.com/

Blog:
http://android-developers.blogspot.com/2007/11/android-first-week.html

оттуда интересная статья:
http://www.onlamp.com/pub/a/onlamp/2007/11/12/google-calling-inside-the-gphone-sdk.html

http://devphone.com/category/android

Поднимается очень сильный ветер...

2007-10-14

Преимущества Java для разработки server side jobs.

Преимущества:

1. Широко известная возможность Java программ работать на разных платформах БЕЗ ПЕРЕКОМПИЛЯЦИИ.
Т.е. тщательно оттестированная программа, с большой вероятностью (если зависимости от платформы не внес по небрежности сам программист, но это находится и правится)
будет работать везде, где есть эта и выше версия JRE.
С использованием .conf-файлов, можно вынести все платформозависимые части из исходников (ex: пути к shell скриптам, regexp для разбора вывода shell скриптов, etc).
С использованием wrappers, таких как: http://wrapper.tanukisoftware.org/ можно запустить программу как сервис Windows или демон Linux/Solaris/HPUX/etc.

2. Дополнительный уровень абстракции (JVM и байт-код), позволяют меньше беспокоиться о том, что
- сервис “завалит” всю платформу или
- будет найдена уязвимость позволяющая получить права root unsafe коду.
Использование JDBC драйверов написанных полностью на Java, позволяет сократить количество ПО, которое требуется установить на сервер.

3. В отличие от (обычно) монолитного .exe файла, в который слито все, что нужно для работы. Классы Java образуют истинную модульность, позволяя модифицировать (обновлять) небольшие куски приложения, ДИНАМИЧЕСКИ определять что будет загружено и догружать по мере необходимости (в том числе из БД, сети).

4. Для Java существует большое количество функционально богатых широко протестированных библиотек логирования, с возможностью удобно группировать логируемую информацию по категории (обычно полный.путь.к.классу.Класс) и важности (trace, debug, info, warn, error). Без каких-либо изменений в исходном коде, логирование может быть отфильтровано, перенаправлено на консоль, по почте, в syslog, БД, файл, и даже лог windows. Новые библиотеки, такие как http://slf4j.org/ позволяют варьировать фактическую библиотеку логирования на конечной системе и практически до нуля снизить потерю производительности от логирования (параметризованые сообщения и отключение лишних логов).

5. Исключения Java помимо традиционных ТИПА исключения и поясняющего сообщения (message) содержат:
а) полный стек на момент создания исключения (stackTrace), включающий названия классов, методов, исходных файлов и номера строк в них;
б) «причину» (cause) - другое исключение (которое также может содержать cause), которое явилось причиной создания этого, что позволяет не тащить на верхние уровни абстракции низкоуровневые исключения, но при желании иметь возможность детально разобраться в том, что случилось.

6. Наиболее важным достижением (можно сказать уникальным на сегодняшний день) Java можно считать т.н. checked exceptions.
Если Вы встретите того, кто уверяет, что checked exceptions это плохо, смело плюньте ему в глаза.
Для разработки надежных устойчивых приложений checked exceptions полезны чрезвычайно!

Поясню на примере: в простом коде, открывающем соединение к БД, выполняющем запрос и генерирующем по полученным данным файл, порядка 80% строк могут сгенерировать исключения (драйверов БД нет, ошибка подключения к БД, ошибка работы с БД, ошибка работы с файлом и т.д.).
В случае Java и checked exceptions компилятор предупредит Вас обо всех проблемных участках и предложит что-то сделать (игнорировать, передавать наверх в чистом виде, передавать наверх «обернув», обрабатывать), т.е. полученный код сразу, после того как скомпилируется, будет устойчив к большинству ошибок! Это разительно отличается от ситуации, например, в Delphi, где любой вызов стандартной библиотеки, библиотеки логирования, библиотеки доступа к БД и т.д. может закончиться неожиданным исключением. Частично Вы найдете описание генерируемых исключений в документации, частично будете отлавливать в течении длительного времени, в процессе рабочей эксплуатации.

7. Мелкая радость для тех, кто в теме: sleep, wait, join и т.д. можно прервать из другого потока и они сгенерируют InterruptedException. На Delphi у меня была собственная библиотека с наследником Thread и заменой sleep (используя события).

К замеченным недостаткам Java можно отнести:
1. Крайне потребительское отношение к оперативной памяти. Java очень любит память ;-(

2. Меньший объем предложений хостинга в сравнении с PHP и Perl.

p.s.
Мелкие хотелки по синтаксису языка (syntax sugar ;-)
1. is вместо instanceof.

2. Объект as Тип вместо (Тип)объект т.к. приходится почти всегда делать ((Тип)объект).метод.

3. in для любых типов и .. для перечислимых типов, т.е:
чтобы можно было писать if (myStr in ("bla", "БЛА", "BLA", "бла")), if (myInt in (1,5,7..300)),
case 1..300: case 400:.

4. чтобы в switch () case могли участвовать любые объекты, а не только целые и enum.