Home

Advertisement

Customize
 
magicprinc
17 April 2009 @ 07:27 pm
Анекдот:
Q: почему дом брэда питта (Brad Pitt) стоит $3m, а хороший дом на рублевке $5m ?
































A: потому-что дом брэда питта (Brad Pitt) находиться в 8000 км от МКАД !!!
 
 
magicprinc
23 March 2009 @ 12:23 pm
http://rssh.livejournal.com/36310.html

В управленческих школах людей учат тому, что если вы хотите, что бы что-то было сделано,
надо что бы у нас был человек, который за это отвечает.

Последовательное применение этого принципа привело к выведению породы людей,
которые умеют перебрасывать друг-другу бирку “ответственность” так, что она все время висит в воздухе.
 
 
magicprinc
http://www.ddj.com/dept/java/184406463

http://developers.sun.com/mobility/apis/pim/pim1/

Cellity Puts Your Mobile Address Book On Steroids

http://www.techcrunch.com/2008/11/14/cellity-puts-your-mobile-address-book-on-steroids/


http://www.cellity.com/home.html

 
 
magicprinc
19 January 2009 @ 03:28 pm

Пока все носятся с iPhone, "классические" производители совершают бархатную революцию.

Давеча меня окончательно достал мой КПК c Windows Mobile и я решил сменить аппарат.

Выбор пал на Sony Ericsson C702.

Телефон имеет на борту GPS, 3G, 3mp камеру и отличную JavaMe (может выполняться несколько приложений, поддержано много JSR: в частности Location API т.е. работа с GPS).

 

Изучая телефон кричал в голос!

 

Телефон БЕЗ всяких предварительных настроек:

- Отлично читает RSS (в standby бегут по экрану) и подкасты

- Отснятую фотографию успешно может разместить в блоге Google's blogger.com

- По умолчанию имеет настроенный аккаунт mail.ru (легко добавил @gmail.com)

- По умолчанию имеет интегрированную google maps: порадовал тем, что мгновенно определяет грубое место положение по CellID, а потом 2-5 мин (время холодного старта GPS) определяет точное

- Отснятую фотографию может снабжать координатами места съемки и показывать на карте

- Имеет отличный браузер на борту c поддержкой flash и javascript

- Имеет настройки для SIP (пока не тестировал)

- Одна из кнопок в меню ведет на адаптированную контент страничку провайдера, где можно скачать/купить игры, картинки, мелодии.

- Встроенное радио интегрировано с сервисом определения мелодии (автор, название и тд) по оцифрованному куску мелодии

 

С установленными мидлетами gmail и opera mini окончательно превращается в абсолютную замену КПК.

 

Пояснение про заголовок "Сервисы в telco":

телефон от вендора, не кастомизированный - уже интегрирован с кучей внешних служб: google, mail.ru, провайдер, rss feeds, распознавание мелодий

Tags: ,
 
 
magicprinc
16 January 2009 @ 02:41 pm
http://community.livejournal.com/za_pivo/

Пожалуй тоже там, что-нибудь выставлю :-)
 
 
magicprinc
http://lib.ru/INOFANT/UELS/blind.txt
   Он думал о большом свободном мире, с которым  был  разлучен,  о  родном
своем мире, и перед ним вставало видение все новых горных склонов, даль за
далью, и среди них Богота, город  многообразной,  живой  красоты,  днем  -
блеск и величие, ночью - озаренная тайна; город дворцов, фонтанов,  статуй
и белых домов, красиво расположившийся в самом сердце далей.  Он  думал  о
том, как в какие-нибудь два-три дня можно дойти до него горными  ущельями,
с каждым шагом подходя все ближе к его оживленным улицам и проспектам.  Он
думал о том, как долго можно идти по реке, от  большого  города  Боготы  в
большой, огромный мир, через города и села, через  леса  и  пустыни;  идти
день за днем по быстрой реке, пока берега не расступятся  и  не  поплывут,
поднимая волну, большие пароходы; и тогда ты достигнешь моря - бескрайного
моря с тысячью островов - нет, с тысячами островов и смутно видимыми вдали
кораблями, что ходят и ходят без устали  по  широкому  свету.  И  там,  не
замкнутое горами, ты увидишь небо - небо, не такое, как здесь, не диск,  а
купол бездонной синевы, глубь глубин, в которой плывут по  круговым  своим
орбитам звезды.
   Все зорче всматривались его глаза в каменную завесу гор.
   Если, к примеру,  подняться  по  этой  ложбине,  а  потом  вот  по  той
расселине, то выйдешь высоко между тех корявых  сосенок,  что  разбежались
там по уступам скал, забираясь все выше  и  выше  над  ущельем.  А  потом?
Пожалуй, можно влезть на  ту  осыпь.  Затем  как-нибудь  вскарабкаться  по
каменной стене до границы снегов, а если  та  расселина  непроходима,  ему
послужит, может быть, другая, дальше к востоку. А потом? Потом  выйдешь  в
горящие янтарем снега, на полпути к гребню тех прекрасных пустынных высот.
  

   Когда солнце склонилось к закату,  он  больше  не  карабкался:  он  был
далеко и очень высоко. Побывал он и выше, но и теперь он еще был куда  как
высоко. Его одежда была изодрана, руки в крови, тело все в синяках, но  он
лежал покойно, и на его лице была улыбка.
   Оттуда, где он лежал, долина казалась ямой, зияющей  чуть  не  на  милю
внизу. Вечер уже стелил туман и тени, хотя вершины гор окрест были свет  и
огонь, а скалы рядом с ним в каждой  своей  частице  напоены  были  тонкой
красотой: прожилка зеленой руды бежала по серым камням; вспыхивали  тут  и
там грани кристаллов; мелкий оранжевый лишайник вил тонкий узор вокруг его
лица. Ущелье наводнили глубокие таинственные  тени;  синева  сгустилась  в
темный пурпур, пурпур  -  в  светящийся  мрак,  а  наверху  распростерлась
безграничная ширь неба. 

Но он больше не смотрел на эту красоту,  он  лежал недвижный, улыбаясь, 
как будто удовлетворенный уже тем одним, что вырвался из Долины Слепых, 
где думал стать королем.

   Закат отгорел, настала ночь, а он все лежал, примиренный  и  довольный,
под холодными светлыми звездами.
 
 
magicprinc
12 December 2008 @ 08:01 pm
Знакомый живущий в США прислал анекдот:

Бабушка, кто такие гуманитарии? - В наше время их называли просто дураками, внучек...
 
 
magicprinc
11 December 2008 @ 01:04 am
Приветствую коллеги!

Под свои нужды (VoIP IVR, ЦОВ) был написан "универсальный генератор" для генерации фраз из чисел, дат, времени, сумм денег.

Поддерживается склонение числительных/существительных (по родам, временам, падежам). Из падежей сейчас есть именительный, родительный, винительный - остальные редко используются в голосовых меню, но добавляются при необходимости тривиально.

Весь текстовый контент вынесен в файл конфигурации. Просто поменяв файл можно генерировать вместо русского голоса, русский текст (что собственно и демонстрирует ссылка), английский голос, английский текст, вероятно с минимальными изменениями заработает и для немецкого (там 4 падежа и также как в русском есть род).
Я планирую в следующем году (подчистив) выпустить эту библиотечку под какой-нибудь open source лицензией.

Собственно интересно, чтобы желающие потестировали и высказали конструктивные пожелания:
http://cti.nettrans.ru:8080/nsa/speaker.jsp

Ещё раз кратко, о чем вообще идет речь: из строки «$123» библиотека генерирует фразу «Сто двадцать три доллара ноль центов», а из «(date (today);родительный) Вы выиграли в казино: (money (rand);leastignore)!»: «одиннадцатого декабря восьмого года Вы выиграли в казино: восемьсот шесть миллионов сто восемьдесят две тысячи девятьсот семьдесят шесть рублей!»
 
 
magicprinc
05 October 2008 @ 12:09 pm
Бабло всегда побеждает зло
 
 
magicprinc
07 July 2008 @ 09:40 am
В Башкирии  фраза "огромный выбор" означает  "от 5 и больше".
 
 
magicprinc
30 June 2008 @ 08:39 pm

РАТ: "Чужих бросаем, своих кидаем"

 
 
magicprinc
Написал для пояснения. Совсем выбросить жалко. Написано с точки зрения человека перешедшего с Delphi. Вдруг кому-то будет интересно, а для кого-то послужит евангелизмом ;-)

Read more... )
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 ;-)
</span>
</span>Мелкие хотелки по синтаксису языка (syntax sugar ;-)
1. is вместо instanceof.

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

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

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

5. is вместо extends и implements т.е. class Наследник is Родитель,
Интерфейс1, ... {}

6. обязательные {} после if,while,for,do и как следствие отсуствие
необходимости в (), т.е.
if a == b { do1(); do2(); }</div>
Tags: , ,
 
 
magicprinc
Возможно, баян, но не могу молчать! ;-)

Проблематика всем известна: есть несколько библиотек для логирования, у каждой свои плюсы и минусы, чтобы все унифицировать была создана библиотека http://commons.apache.org/logging/ , которая, похоже, создает больше проблем, чем решает.

Недавно натолкнулся на великолепное решение, которое, можно сказать, полюбил ;-)

http://slf4j.org/
Simple Logging Facade for Java (SLF4J)

Плюсы очень кратко, т.к. настоятельно рекомендую сходить на сайт автора. (1 и 2 – пример того, кто такой гений и чем он от таланта отличается):
1)  легкая и быстрая – без трюков с ClassLoader. Используется тот факт, что package может быть размазан по нескольким папкам/jar-файлам.
2)  вместо жутких конструкций if (log.debugEnabled()) log.debug(‘bla bla’ + myObj); -> log.debug(‘bla bla {}’, muObj);
3)   автор – оригинальный автор log4j.
4)  принят подход не наименьшего поддерживаемого функционала, а все самое лучшее. Если конечная библиотека не поддерживает, например, MDC – молча проглатываем.
5)  Logger – не класс, а interface!
Tags: , , ,
 
 
 
 
 

Advertisement

Customize