<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-699567392699350920</id><updated>2011-10-17T07:53:42.629-07:00</updated><title type='text'>edwin3d</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-5407661394617134060</id><published>2011-06-16T04:41:00.000-07:00</published><updated>2011-06-16T04:49:53.261-07:00</updated><title type='text'>MySQL: Получение значение ID добавляемой записи при генерации этого ID с помощью auto_increment</title><content type='html'>Добрый день.&lt;br /&gt;Когда Вы работаете с MySQL, то так или иначе Вам необходимо работать с записями, имеющими уникакльный ID. &lt;br /&gt;Для ряда таблиц такого рода ID генерируется автоматически, путем использования директивы auto_increment.&lt;br /&gt;Иногда необходимо знать, а какой же ID получился для только что добавленных данных ...&lt;br /&gt;Сделать это можно просто, а именно воспользоваться встроенной в MySQL ф-й LAST_INSERT_ID(), которая возвращает ID добавленных данных.&lt;br /&gt;Для примера:&lt;br /&gt;&lt;br /&gt;mysql&gt; SELECT LAST_INSERT_ID();&lt;br /&gt;+------------------+&lt;br /&gt;| LAST_INSERT_ID() |&lt;br /&gt;+------------------+&lt;br /&gt;|               33 |&lt;br /&gt;+------------------+&lt;br /&gt;1 row in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;Показывает, что последнаяя добавленная запись имела ID 33.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-5407661394617134060?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/5407661394617134060/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2011/06/mysql-id-id-autoincrement.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/5407661394617134060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/5407661394617134060'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2011/06/mysql-id-id-autoincrement.html' title='MySQL: Получение значение ID добавляемой записи при генерации этого ID с помощью auto_increment'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-7494183383432988630</id><published>2011-04-20T01:49:00.000-07:00</published><updated>2011-04-20T02:22:01.025-07:00</updated><title type='text'>Java - собственные исключения</title><content type='html'>Добрый день.&lt;br /&gt;Сегодня мы коротко поговорим о механизме исключений в Java.&lt;br /&gt;Причем не просто о механизме как таковом, а о том, зачем необходимы собственные исключения и как их использовать на практике.&lt;br /&gt;Итак - начнем с азов. Исключение (Java) — это некий объект, описывающий исключительное состояние, воз­никшее в каком-либо месте работы программы.&lt;br /&gt;При этом (при возникновении исключения) создается объект класса Exception.&lt;br /&gt;Затем может быть несколько вариантов развития событий:&lt;br /&gt;1) Исключение не обрабатывается, то есть для данного участка кода нет обработчика соот. типа исключения. &lt;br /&gt;В этом случае происходит завершение работы потока, в котором произошло исключение.&lt;br /&gt;2) Исключение обрабатывается, и в этом случае управление передается в блок обработки исключений или-же в блок финализации.&lt;br /&gt;Для примера:&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt; // участок, где мы ожидаем исключение&lt;br /&gt;}&lt;br /&gt;catch (ИсключениеА еxt)&lt;br /&gt;{&lt;br /&gt; // обработчик Исключения А&lt;br /&gt;}&lt;br /&gt;catch (ИсключениеБ еxt)&lt;br /&gt;{&lt;br /&gt; // обработчик Исключения Б&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt; // блок финализации, который должен всегда выполняться.  &lt;br /&gt;} &lt;br /&gt;Со стандартными исключениями все просто. Они определены и их обработка - это рутина &lt;br /&gt; программирования.&lt;br /&gt;Но в Java можно определять о обрабатывать свои исключения.&lt;br /&gt;Сделано это по многим причинам, но одно из основных применений этой возможности  &lt;br /&gt; мы сейчас рассмотрим.&lt;br /&gt;Итак - есть некое приложение, в котором есть некая процедура, &lt;br /&gt; обрабатывающая некие, полученные извне, данные.  &lt;br /&gt;Так или иначе, данные могут быть некорректны (к примеру вместо число - строка и др.)и &lt;br /&gt; состояние (некорректности входящих данных) необходимо обработать.&lt;br /&gt;Это сделать можно множеством путей, одним из которых есть использование механизма &lt;br /&gt; исключений.&lt;br /&gt;&lt;br /&gt;// класс собственного исключения, описывающего некорректность пары ключ &lt;&gt; значение&lt;br /&gt;class ParceError extends Exception&lt;br /&gt;{&lt;br /&gt;        String KeyName,KeyValue;&lt;br /&gt;        // конструктор&lt;br /&gt;        ParceError(String inKeyName,String inKeyValue)&lt;br /&gt;        {&lt;br /&gt;                KeyName = inKeyName;&lt;br /&gt;                KeyValue = inKeyValue;&lt;br /&gt;        }&lt;br /&gt;        // конструктор по умолчанию&lt;br /&gt;        ParceError()&lt;br /&gt;        {&lt;br /&gt;                this("not","not");&lt;br /&gt;        }&lt;br /&gt;        // view&lt;br /&gt;        public String toString()&lt;br /&gt;        {&lt;br /&gt;                return "KeyName="+KeyName+" "+"KeyValue="+KeyValue;&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;// расшифровка ключей&lt;br /&gt;// мы указываем, что наша процедура может генерировать исключение ParceError&lt;br /&gt;// которое необходимо обработать&lt;br /&gt;DecodeKeys(HashMap In,String Data) throws ParceError&lt;br /&gt;  {&lt;br /&gt;   // ..&lt;br /&gt;   // в случае некорректности некой пары ключ &lt;&gt; значение &lt;br /&gt;   // генерируем исключение&lt;br /&gt;   throw new ParceError(Key,Value);&lt;br /&gt;   // ..&lt;br /&gt;  }&lt;br /&gt;try&lt;br /&gt; {&lt;br /&gt;  Result = DecodeKeys(Result,Data);&lt;br /&gt; }&lt;br /&gt;catch (ParceError ext)&lt;br /&gt; {&lt;br /&gt;  // обрабатываем сгенерированное исключение &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;То есть как видим, мы отделяем механизм обработки некорректности. Более того - мы из вызывающего метода не лезем в внутреннюю кухню проверки ...&lt;br /&gt;Такого же рода меры можно применять при работе с различными событиями, для примера - обработку очередей и др.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-7494183383432988630?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/7494183383432988630/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2011/04/java_20.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/7494183383432988630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/7494183383432988630'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2011/04/java_20.html' title='Java - собственные исключения'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-8594823860110555250</id><published>2011-04-07T05:31:00.000-07:00</published><updated>2011-04-07T05:59:51.728-07:00</updated><title type='text'>Java - поток демона (автоматическое завершение дочерних потоков)</title><content type='html'>Добрый день.&lt;br /&gt;При программировании многопоточных приложений в Java очень часто стоит задача остановить потоки, которые являются дочерними.&lt;br /&gt;Можно пойти 2-мя путями:&lt;br /&gt;&lt;br /&gt;1) В ручном режиме "гасить" дочерние потоки.&lt;br /&gt;2) Сделать это автоматически.&lt;br /&gt;&lt;br /&gt;Про первый случай мы говорить не будем.&lt;br /&gt;Поговорим про второй.&lt;br /&gt;Для того, что-бы дочерние потоки завершались сами при завершении родительского потока,&lt;br /&gt; необходимо дочерние потоки объявить как потоки демона.&lt;br /&gt;&lt;br /&gt;Для примера:&lt;br /&gt;Простой поток мы порождаем:&lt;br /&gt;&lt;br /&gt;SimpleThread = new Thread(this,"Simple Thread");&lt;br /&gt;SimpleThread.start();&lt;br /&gt;&lt;br /&gt;Поток демона мы описывает так:&lt;br /&gt;&lt;br /&gt;SimpleThread = new Thread(this,"Simple Thread");&lt;br /&gt;SimpleThread.setDaemon(true);&lt;br /&gt;SimpleThread.start();&lt;br /&gt;&lt;br /&gt;Для проверки того, является ли поток потоком демона применяется метод isDaemon().&lt;br /&gt;Возвращаемое значение - boolean.&lt;br /&gt;&lt;br /&gt;Также необходимо пару слов сказать о области применения такого рода потоков. Чаще всего применять этот тип в том случае, когда отдельный поток должен делать некую работу, но только тогда, когда работает основное приложение.&lt;br /&gt;Самый ходовой пример - менеджер заметок.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-8594823860110555250?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/8594823860110555250/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2011/04/java.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/8594823860110555250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/8594823860110555250'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2011/04/java.html' title='Java - поток демона (автоматическое завершение дочерних потоков)'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-433385864236690789</id><published>2010-11-21T02:23:00.000-08:00</published><updated>2010-11-21T02:43:35.535-08:00</updated><title type='text'>Cisco - транскодирование</title><content type='html'>Добрый день.&lt;br /&gt;Периодически возникает необходимость ответить на вопрос или найти документацию (с примерами) по  некоторым вопросам, связанным с оборудованием Cisco.&lt;br /&gt;Приведенные ниже ссылки, возможно, будут Вам полезны по вопросам, связанным с &lt;br /&gt; транскодированием голосовых кодеков в MG cisco:&lt;br /&gt;http://www.cisco.com/en/US/docs/voice_ip_comm/cucme/admin/configuration/guide/cmetrnsc.html  &lt;br /&gt;http://www.cisco.com/en/US/docs/ios/12_3/vvf_c/interop/intcnf2.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-433385864236690789?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/433385864236690789/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/11/cisco.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/433385864236690789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/433385864236690789'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/11/cisco.html' title='Cisco - транскодирование'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-4621621774452267133</id><published>2010-09-21T02:59:00.000-07:00</published><updated>2010-09-21T03:15:55.474-07:00</updated><title type='text'>Реализация услуги CLIR в протоколе SIP</title><content type='html'>Добрый день.&lt;br /&gt;Наконец смог добавить сообщение.&lt;br /&gt;Было очень много работы, причем частично дурной ... но живем.&lt;br /&gt;Сегодня мы поговорим о том, как в протоколе SIP реализуется услуга CLIR.&lt;br /&gt;Услуга CLIR (Calling line identification rebound) - запрет определения номера вызываемого абонента (А номер) позволяет абонентам совершать вызовы, не открывая при этом вызываемому абонента своего номера. &lt;br /&gt;Теперь посмотрим как это работает в SIP.&lt;br /&gt;Обычно протокол SIP оперирует А номером из заголовков From и Contact.&lt;br /&gt;Для примера рассмотрим обычный INVITE:&lt;br /&gt;&lt;br /&gt;INVITE sip:XXX56374XXXX@XX.XX.2.18:2000;user=phone SIP/2.0&lt;br /&gt;From: "XXX56375XXXX" &lt;sip:XXX56375XXXX@XX.XX.252.7;user=phone&gt;;tag=1412239&lt;br /&gt;To: &lt;sip:XXX56374XXXX@XX.XX.2.18:2000;user=phone&gt;;tag=9300128943591984131&lt;br /&gt;Call-ID: 5C116F62-06E4-4501-B226-5BA0EF83EDD7&lt;br /&gt;CSeq: 1 INVITE&lt;br /&gt;Privacy: none&lt;br /&gt;P-Asserted-Identity: tel:XXX56375XXXX&lt;br /&gt;Max-Forwards: 69&lt;br /&gt;P-Charging-Vector: icid-value=F593133B-AA95-4005-83A8-59CADB73407A&lt;br /&gt;User-Agent: vocl-essentra-ex/8.1 (19070.34)&lt;br /&gt;Via: SIP/2.0/UDP XX.XX.252.7:5060;received=XX.XX.252.7;branch=z9hG4bK-536856b0-4c9883a7;vtservice=b2buaservlet.siptosip&lt;br /&gt;Contact: &lt;sip:XXX56375XXXX@XX.XX.252.7:5060;vtservice=b2buaservlet.siptosip&gt;&lt;br /&gt;Allow: INVITE,ACK,CANCEL,BYE,OPTIONS,INFO,PRACK&lt;br /&gt;&lt;br /&gt;А теперь включим на нашем SSw (реализация достаточно однотипна, обычно называется примерно Caller ID Blocking) соот. услугу и посмотрим на INVITE:&lt;br /&gt;&lt;br /&gt;INVITE sip:XXX56374XXXX@XX.XX.2.18:2000 SIP/2.0&lt;br /&gt;From: "Anonymous" &lt;sip:anonymous@XX.XX.252.7&gt;;tag=1411481&lt;br /&gt;To: &lt;sip:XXX56374XXXX@XX.XX.2.18:2000&gt;;tag=9300128943591983723&lt;br /&gt;Call-ID: 52588159-9C78-4F42-A67D-D5E4E284BAE7&lt;br /&gt;CSeq: 1 INVITE&lt;br /&gt;Privacy: id&lt;br /&gt;P-Asserted-Identity: tel:XXX56375XXXX&lt;br /&gt;Max-Forwards: 69&lt;br /&gt;P-Charging-Vector: icid-value=77C422A6-6D56-4DBD-AAB5-410F7AA4EEAE&lt;br /&gt;User-Agent: vocl-essentra-ex/8.1 (19070.34)&lt;br /&gt;Via: SIP/2.0/UDP XX.XX.252.7:5060;received=XX.XX.252.7;branch=z9hG4bK-58251148-4c9881ab;vtservice=b2buaservlet.siptosip&lt;br /&gt;Contact: &lt;sip:anonymous@XX.XX.252.7:5060;vtservice=b2buaservlet.siptosip&gt;&lt;br /&gt;Allow: INVITE,ACK,CANCEL,BYE,OPTIONS,INFO,PRACK&lt;br /&gt;&lt;br /&gt;Видите разницу ?&lt;br /&gt;Во втором случае SSw "замаскировал" поля From и Contact.&lt;br /&gt;Но при этом А номер сохранился в хитром поле P-Asserted-Identity.&lt;br /&gt;Тем самым мы и маршрутизировать трафик можем по А номеру, и учет вести и при этом А номер сокрыт.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-4621621774452267133?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/4621621774452267133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/09/clir-sip.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/4621621774452267133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/4621621774452267133'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/09/clir-sip.html' title='Реализация услуги CLIR в протоколе SIP'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-1160724222222351728</id><published>2010-07-27T10:53:00.000-07:00</published><updated>2010-07-27T11:54:45.192-07:00</updated><title type='text'>Провал в головах или WIMax по украински</title><content type='html'>Добрый всем вечер.&lt;br /&gt;Сегодня мы немного затронем тему WiMax.&lt;br /&gt;А вернее - его якобы "провала".&lt;br /&gt;Итак на днях на ряде сайтов, стали активном цитировать газету "Дело", которая выступила с плаксивой статьей, суть которой сводиться к тому, что  внедрение WiMAx потерпело неудачу.&lt;br /&gt;(для примера - http://www.broadband.org.ua/content/view/2519/490/).&lt;br /&gt;В сухом остатке из этого текста мы узнаем, что:&lt;br /&gt;Внедрение WiMAx провалено, по причине якобы плохой технологии, злого УТ и развращенных пользователей.&lt;br /&gt;На лицо яркий пример подмены понятий, когда неумение планировать и руководить пытаются замаскировать. &lt;br /&gt;Итак постараемся разобрать почему я говорю именно в таком ключе.&lt;br /&gt;Разберем тезис N1:&lt;br /&gt;"Первый и основной фактор, объясняющий такое положение вещей, — это несовершенство технологии, которая требует установки большего количества базовых станций.Но даже это не решит проблемы: львиная доля абонентов WiMax постоянно испытывают сложности с наличием сигнала в помещении, и эти проблемы не всегда решаются размещением модемов, например, на балконе. "&lt;br /&gt;&lt;br /&gt;Какая жалость.&lt;br /&gt;То есть налицо ситуация, когда сеть построена таким образом, что сигнала в зданиях нет.&lt;br /&gt;Иначе говоря на этапе проектировки и тестирования никто не озаботился проверкой того, а будет ли ЭТО работать в зданиях. И мы сразу понимаем, что:&lt;br /&gt;а) проектировка велась небрежно, без учета особенностей технологии.&lt;br /&gt;б) тестирование в необходимом объеме не проводилось.&lt;br /&gt;Зато по документам все красиво - 70% типа "покрыто".&lt;br /&gt;&lt;br /&gt;Есть еще еще одно предположение .... страшное, но тоже не менее логичное.&lt;br /&gt;На этапе составления бизнес плана неверно была выбрана аудитория и не учтены условия.&lt;br /&gt;То есть великие аналитики предположили, что 100К человек купят WiMAx и дружно выйдут на улицу.&lt;br /&gt;Правда в этом случае, как минимум, не учтен наш климат, ибо летом у нас жарко, зимой холодно, осенью сыро и холодно, а весной тоже погода далеко не всегда балует.&lt;br /&gt;Кроме того, если программист может себе позволить поваляться на травке, то для ряда работников ра-ть на улице просто недопустимо.  &lt;br /&gt;Проще говоря имела место попытка подогнать не технологию под человека, а человека под технологию.&lt;br /&gt;&lt;br /&gt;Читаем дальше и удивляемся:&lt;br /&gt;"Российские 4G-операторы для решения этой проблемы используют специальное оборудование, устанавливаемое в помещениях и усиливающее мощность сигнала. Но этот путь требует значительных денежных вложений, окупаемость которых в нынешней ситуации не гарантирована."   &lt;br /&gt;&lt;br /&gt;То есть еще одно подтверждение того, что никто не удосужился разобраться с особенностями работы технологии. Если бы разобрались, то воспользовались опытом Yot'ы и установили внутренние усилители, тем самым покрыв бы 30% Киева зоной уверенного приема и получили бы довольных абонентов, которых было-бы намного больше, чем теперь.&lt;br /&gt;&lt;br /&gt;"Также более чем скромное число абонентов объясняется тем, что обе компании предлагают клиентам USB-модемы по льготной цене только при условии подписания годичного контракта."&lt;br /&gt;&lt;br /&gt;Комментировать это вообще трудно .... тут бы разобраться, кто является основной клиентской базы  для такого рода услуги. И после чего понять, что люди, которые выбирают этот вид связи (в основном абоненты, ориентированные на бизнес) привыкли к прогнозируемым расходам в любом виде деятельности (в том числе в связи). &lt;br /&gt;&lt;br /&gt;"Помимо этого, тарифные планы двух компаний — безлимитные пакеты стоят 150-180 грн. в месяц — на фоне постоянного удешевления предложений у других провайдеров Интернета выглядят довольно дорогостоящими. "&lt;br /&gt;&lt;br /&gt;Тоже перл неслабый. А за что получали деньги составители бизнес плана ? За трезвый анализ и соот. прогнозирование тарифов или сидение в кожаных креслах ? &lt;br /&gt;Иначе говоря - явных провал составителей бизнес плана.&lt;br /&gt;Если бы при составлении бизнес плана был учтен опыт стационарной связи и коллег из соседних стран, то и тарифы и методы построения сети имели бы совершенно иной вид.&lt;br /&gt;&lt;br /&gt;Итого что мы имеем - явный провал на этапе проектирования и тестирования.&lt;br /&gt;И никаких попыток исправить ситуацию при запуске.&lt;br /&gt;То есть группа людей составила красивый прожект, получила под него деньги (а вложено уже 50 млн. $) и по факту эти деньги выброшены на ветер (это в лучшем случае, а в при более пессимистичном прогнозе - распилены).&lt;br /&gt;И откровенно говоря, вероятной причиной появления данной статьи стало то, что те ,кто провалил внедрение прожекта, попытались тем самым оправдаться .. мол мы не виноваты, обстоятельства такие.&lt;br /&gt;Иначе говоря облажавшиеся топ менеджеры (небось с дипломами MBA) ищут способы уйти от ответа (что в целом типично для обычного топа).&lt;br /&gt;&lt;br /&gt;А если серьезно, то WiMax конечно не самая лучшая технология (к слову называть ее 4G - неграмотно), но при грамотнои проектировании сети вполне себе работает вполне хорошо.&lt;br /&gt;Именно поэтому сегодня Киевстар с помощью S&amp;T Ukraine строит WiMax сеть, которая ориентирована на СТАЦИОНАРНЫЙ доступ, что четко показывает что в VimpelTelecom Ltd. сидят не дураки, понимающие нужды клиентов.&lt;br /&gt;А тем кто хочет именно WiMAx, стоит чуть потерпеть и получить качественный беспроводный доступ.&lt;br /&gt;Или-же не замыкаться на технологии,а выбрать достойные альтернативы, которых на Украине немало.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-1160724222222351728?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/1160724222222351728/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/07/wimax.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1160724222222351728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1160724222222351728'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/07/wimax.html' title='Провал в головах или WIMax по украински'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-1077319779696350133</id><published>2010-07-14T00:09:00.000-07:00</published><updated>2010-07-14T00:34:02.085-07:00</updated><title type='text'>Шаг вперед или свет в конце тоннеля</title><content type='html'>Добрый день всем.&lt;br /&gt;Давненько я не писал - не было времени, уж очень тяжелые последние дней 10 выдались.&lt;br /&gt;Итак главное и очень позитивное событие последних 2-х недель - это принятие Верховным Советом в первом чтении законов, которые расширяю полномочия НКРС.&lt;br /&gt;По ККЭ (кабельная канализация элекстросвязи) дает право НКРС регулировать тарифы и порядок доступа к ККЭ.&lt;br /&gt;Кроме ККЭ, взялись решать вопрос с Интерконнеком.&lt;br /&gt;Для этого вводиться понятие оператора с "существенным рыночным положением", тарифы которого (прежде всего на взаимосоединение) можно будет регулировать.&lt;br /&gt;Иэ этого события можно сделать 2 вывода:&lt;br /&gt;1) УТ таки хотят продать, потому как если до продажи не утрясти вопрос с канализацией, то могут проявиться различные неприятные моменты.&lt;br /&gt;2) Есть все-же шанс, что наш рынок связи выйдет из того анархического болота, в котором он сидел последние 5 лет и больше не будут повторяться ситуации, когда с номеров Оператора А мы не можем позвонить на Оператора Б, а все потому, что они не договорились о том, кто и сколько кому должен.&lt;br /&gt;Если же кому-то кажется, что подобное гос. регулирование мешает нормальному развитию рынка, то для примера возьмите и ознакомьтесь с механизмами гос. регулирования связи в Китае, ЕС, и США.&lt;br /&gt;Суть в том, что вседозволенности и анархии быть НЕ должно.&lt;br /&gt;Кроме того, прошел более чем обоснованный слух о том, что стоимость нового плана конверсии  (предположительно готов будет в акгусте)частот от МО будет порядка 850 млн. грн.&lt;br /&gt;Это почти в три раза меньше прошлогодней цифры. &lt;br /&gt;То есть при этом мы получаем вполне реальный шанс провести полноценный тендер на частоты для 3G уже в этом году.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-1077319779696350133?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/1077319779696350133/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/07/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1077319779696350133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1077319779696350133'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/07/blog-post.html' title='Шаг вперед или свет в конце тоннеля'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-6449676065157847577</id><published>2010-07-01T06:49:00.000-07:00</published><updated>2010-07-01T07:10:11.482-07:00</updated><title type='text'>MNP в Украине</title><content type='html'>Добрый день.&lt;br /&gt;Итак сегодня случилось в некоторой степени знаковое событие - мы вернулись к вопросу практического внедрения MNP в Украине.&lt;br /&gt;Что такое MNP и с чем его едят ?&lt;br /&gt;MNP - расшифровывается как Mobile Number Portability или же переносимость мобильного номера.&lt;br /&gt;То есть при работе данной технологии мы сможем менять оператора, при этом не меняя номер.&lt;br /&gt;Сегодня в Верховном Совете Украины был принят соот. законопроект.&lt;br /&gt;Разумеется пока это пока только "первый звоночек" грядущих изменений и закон еще должен быть подписан президентом, затем НКРС должно сформулировать тех. требования и др.&lt;br /&gt;В общем дорога долгая, но очень радует тот факт, что сделан важный шаг для увеличения возможностей нашей телефонной сети.&lt;br /&gt;Теперь немного о технологии:&lt;br /&gt;Сделать это можно 3-мя вариантами:&lt;br /&gt;1) OR (Onward Routing)  &lt;br /&gt;Данный метод основан на том, что вызов направляется в сеть Компании, изначального владельца нумерации, а там (при необходимости) вызов перенаправляется на сети сторонних операторов.&lt;br /&gt;То есть аля межоператорский роуминг.&lt;br /&gt;Внедряется достаточно быстро. &lt;br /&gt;Недостатки начинают вылазят при переносе услуг и большого количества перенесенных номеров.&lt;br /&gt;2) QoR (Query on Release)&lt;br /&gt;Данный метод основан на том, что вызов направляется в сеть Компании, изначального владельца нумерации, а там (при необходимости) в случае отбития вызова запрашивается специальная база данных, в которой указано месторасположение номера.&lt;br /&gt;В принципе неплохой вариант, но при этом необходимо модифицировать сети на предмет добавления возможности запроса в базе данных информации о номере.&lt;br /&gt;3) ACQ (All Call Query)&lt;br /&gt;Данный метод основан на том, что по каждому вызову осуществляется запрос к спец. базе данных, которая и указывает точное расположение номера.&lt;br /&gt;Достаточно неплохое и прозрачное решение, но его главный  недостаток - стоить это будет очень дорого.&lt;br /&gt;Помимо самих технологий есть еще вагон вопросов ( к примеру тарификация).&lt;br /&gt;Как это будет внедряться на территории Украины и каков будет реальный результат - покажет время.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-6449676065157847577?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/6449676065157847577/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/07/mnp.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/6449676065157847577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/6449676065157847577'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/07/mnp.html' title='MNP в Украине'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-1950628316581487995</id><published>2010-06-24T00:30:00.000-07:00</published><updated>2010-06-24T02:04:18.316-07:00</updated><title type='text'>Автоматическое резервирование настроек шлюзов D-Link DVG-5004S и DVG-5008S</title><content type='html'>Добрый день.&lt;br /&gt;Если Вы управляете неким количеством оборудования, то рано или поздно приходите к вызову, что настройки необходимо резервировать.&lt;br /&gt;Причем в автоматическом режиме.&lt;br /&gt;Сегодня мы поговорим по то, каким образом решить данную задачу для шлюзов компании D-Link типа DVG-500xS.&lt;br /&gt;Шлюзы эти достаточно часто используются для организации небольших выносов (уд. склад, магазин, отделение и др.).&lt;br /&gt;Однако мало того, что у данных шлюзов файл настроек имеет бинарный вид, штатной возможности "вытянуть" его не предусмотрено.&lt;br /&gt;Но это проблема вполне решаемая.&lt;br /&gt;Данный шлюз может отдавать настройки через Web интерфейс, а значит с помощью небольшого Python скрипта мы можем эти настройки получить в автоматическом режиме:&lt;br /&gt;&lt;br /&gt;&lt;HR&gt;&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;&lt;br /&gt;#!/usr/local/bin/python&lt;br /&gt;# import modules&lt;br /&gt;import sys&lt;br /&gt;import urllib2&lt;br /&gt;&lt;br /&gt;#get dlink config&lt;br /&gt;def get_dlink_config(_realm,_user,_password,_url,_router):&lt;br /&gt;        try:&lt;br /&gt;                _auth_handler = urllib2.HTTPDigestAuthHandler()&lt;br /&gt;                _auth_handler.add_password(realm=_realm,uri=_url,user=_user,passwd=_password)&lt;br /&gt;                _source = urllib2.build_opener(_auth_handler)&lt;br /&gt;                urllib2.install_opener(_source)&lt;br /&gt;                _res = urllib2.urlopen(_url)&lt;br /&gt;                _res = urllib2.urlopen("http://"+_router+"/backup.profile")&lt;br /&gt;                return _res.read()&lt;br /&gt;        except:&lt;br /&gt;                print "ERR: We were not getting config from device"&lt;br /&gt;                sys.exit(1)&lt;br /&gt;&lt;br /&gt;# write ALERT to txt file &lt;br /&gt;def txt_alert(_cfg_file):&lt;br /&gt;        _txt_alert_file = open(_cfg_file, 'w')&lt;br /&gt;        _txt_alert_file.write("Backup in binaryconf file")&lt;br /&gt;        _txt_alert_file.close()&lt;br /&gt;&lt;br /&gt;# write bin config file&lt;br /&gt;def bin_config_write(_cfg_file_bin,_body):&lt;br /&gt;        _bin_config = open(_cfg_file_bin, 'w')&lt;br /&gt;        _bin_config.write(_body)&lt;br /&gt;        _bin_config.close()&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;# variables &lt;br /&gt;        _user = "Admin"&lt;br /&gt;        _password = "XXXX"&lt;br /&gt;        _realm = "IAD-Configuration"&lt;br /&gt;# get variables&lt;br /&gt;        if len(sys.argv) &lt; 2:&lt;br /&gt;                print 'No Hostname'&lt;br /&gt;                sys.exit()&lt;br /&gt;&lt;br /&gt;        _router = sys.argv[1]&lt;br /&gt;        _url = "http://"+_router+"/otgw.cgi?PAGE=ConfigBackupForm"&lt;br /&gt;        _cfg_file = "/configs_path/"+_router+".new"&lt;br /&gt;        _cfg_file_bin = "/binary_configs_path/"+_router&lt;br /&gt;        # get body config  &lt;br /&gt;        _config_body = get_dlink_config(_realm,_user,_password,_url,_router)&lt;br /&gt;        # write alert&lt;br /&gt;        txt_alert(_cfg_file)&lt;br /&gt;        # write body config&lt;br /&gt;        bin_config_write(_cfg_file_bin,_config_body) &lt;br /&gt;        sys.exit()&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    main()&lt;br /&gt;&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;&lt;HR&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-1950628316581487995?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/1950628316581487995/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/06/d-link-dvg-5004s-dvg-5008s.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1950628316581487995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/1950628316581487995'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/06/d-link-dvg-5004s-dvg-5008s.html' title='Автоматическое резервирование настроек шлюзов D-Link DVG-5004S и DVG-5008S'/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-699567392699350920.post-114389289685526244</id><published>2010-06-22T06:05:00.000-07:00</published><updated>2010-06-22T06:10:32.537-07:00</updated><title type='text'></title><content type='html'>Добрый всем день.&lt;br /&gt;Итак данный блог создан.&lt;br /&gt;Создан с тем, что-бы обсуждать вопросы (в основном технические) телекоммуникационной и частично ИТ отрасли и по мере сил делиться с другими знаниями.&lt;br /&gt;Я не тешу себя надеждой, что мой блог станет хитом, однако хотеться верить, что кому-то опубликованная здесь информация станет полезной.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/699567392699350920-114389289685526244?l=edwin3d.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edwin3d.blogspot.com/feeds/114389289685526244/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://edwin3d.blogspot.com/2010/06/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/114389289685526244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/699567392699350920/posts/default/114389289685526244'/><link rel='alternate' type='text/html' href='http://edwin3d.blogspot.com/2010/06/blog-post.html' title=''/><author><name>edwin3d</name><uri>http://www.blogger.com/profile/16242381683680696113</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_x9NFMIWIKDE/TD7Swo4k3wI/AAAAAAAAACY/MFY6SYbqqno/S220/dog.jpg'/></author><thr:total>0</thr:total></entry></feed>
