вторник, 22 сентября 2009 г.

Java - записки на манжетах

Продолжая знакомиться с языком программирования Java записал то, что мне хотелось для себя отметить.
  • область видимости переменных (scope) определяется фигурными скобками {}
  • есть возможность перехода после break по метке: continue label1
  • конструкторы перегружаются соблюдая следующие правила: конструктор без параметров является конструктором по умолчанию, различее конструкторов делается по их списку параметров(сигнатуре), то же справедливо и для обычных методов. если объявляется конструктор с параметрами, то нужно явно описать и конструктор по умолчанию
  • конструкторы вызываются из конструкторов, вызов должен быть первой иструкцией в конструкторе и вызывать более одного раза запрещено
  • статический метод отличается тем, что в нем нет ссылки this. вызвать нестатический метод из статического невозможно
  • метод finalize выполняется при сборке мусора. нужен для контроля освобождения памати подпрограмм на C/C++ и для проверки "смерти" объекта
  • локальные переменные обязательно инициализировать, переменные класа получают значения по умолчанию
  • статические переменные инициализируется если создан хоть один экземпляр класса и делается это однократно
  • можно написать static {...} внутри класса
  • можно написать {...} в классе для инициализации нестатических переменных объекта
  • предложение package foo.bar.baz интерпретатор превращает в путь "foo/bar/baz" и подставлет его ко всем элементам CLASSPATH

пятница, 19 июня 2009 г.

Устранение поломки ARDO AED 1000XT.

При работе стиральной машины(СМ) появился странный запах, который сначала считался запахом горящей пыли или горящего стирального порошка на тепловых элементах(ТЭН-ах).

Версии оказались ошибочными, СМ перестала работать. Вскрытие показало, что огорело три контакта на разьеме.

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



Спасибо добрым людям, опубликовавшим фото платы:


В итоге: сгорел резистор и тиристор, причем от резистора не осталось и следа.
Схемы удалось найти в журналах "Ремонт и сервис":
rc2007_12.djvu
rs2007_03.djvu
После замены вышедших из строя деталей и припайки дополнительного разьема машина заработала. Вместо тиристора BT134 пришлось параллельно поставить два ВТ134W, у которых токи поменьше.

пятница, 8 мая 2009 г.

Установка Mac OS на ПК

Появилась задача - установить Mac OS Х на обычный ПК.

Удалось заполучить DVD-образ 10.5.2 Kalyway. Устанавливать было решено на компьютер Dell Optiplex 740.

Нормально пошла инсталляция, после перегрузки:
"HFS+ error" и стоп. Удалось найти лекарство:
Загрузка с ключем +s, потом fdisk -u /dev/disk0
Загрузчик встал и стало все ОК.

Звука нет, сетевую не зацепило, видео только на разрешении 1024х768. Сеть критична, вставили сетевую плату на Realtek8139, завелась.

Вторая проблема - нужна версия минимум 10.5.3, узнали как поставить Combo Update.

Дальше, в консоли Xcode выдает ошибку при попытке обращений в сеть через симулятор iPhone: "_CFGetHostUUIDString: unable to determine UUID for host. Error: 35".
Решается следующим образом.


Впечателения.
Может быть без поддержки трехмерного акселлератора не видно всех прелестей интерфейса. Все простенько, без излишеств. По скорости сравнимо с ХР на этой же машине.

Можно отметить то, что имеется функциональность для домашнего использования, но нет для корпоративного, как в линейке систем NT компании МС.

воскресенье, 22 марта 2009 г.

Первый опыт с Tomcat и Java

Apache Tomcat
1) Подключение к tomcat, порт по умолчанию 8180.

2) Администаторская консоль по адресу http://localhost:8180/admin/, менеджера
http://localhost:8180/manager/

3) Добавим двух пользователей admin и manager в файл "/usr/share/tomcat5.5/conf/tomcat-users.xml": manager и admin

3)
Удалось запустить tomcat5 под IBM JDK . Компилятор от IBM работает в 3 раза быстрее, чем от Sun.


4) Ускорить перегрузку классов tomcat-ом.
в файл "WEB-INF/web.xml" приложения добавить:
<init-param>
<param-name>checkInterval</param-name>
<param-value>1</param-value>
</init-param>

<init-param>
<param-name>cdevelopment</param-name>c
<param-value>true</param-value>
</init-param>


5) Кодировка в загловоках сервера задается в файле JSP:
<%@ page contentType="text/html; charset=UTF-8" %>

6) Из сервлета:
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
важен порядок этих операторов.

Java
Сравниваю с PHP и JavaScript.
1) Сравнение строк через метод equals, т.е. такое не работает:
if( str1 == str2)...
а надо:
if(str1.equals(str2))...

2) Нат ассоциативных массивов, вместо них используютя контейнеры, в частности можно использовать
HashMap.

3) Если проект использует классы из ".jar-файла", то нужно явно указывать путь к нему в переменной окружения CLASSPATH:
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib/jsp-api.jar


суббота, 17 января 2009 г.

Windows Vista - цель API

Прошло около года после выхода Windows Vista и у многих до сих пор возникает недоумение - что же это:
-Шутка
-Неудачная разработка
-Революционная ОС

Для начала посмотрим на даты выхода основных не серверных ОС:

Windows NT 3.5 1994
Windows NT 4.0 1996
Windows 2000 2000
Windows XP 2001
Windows Vista 2007

После выхода Vista многие были озадачены - что же такое делала МС
так долго, a получился продукт к которому выдвигаетя масса претензий.
Тут и скорость работы, плохая совместимость со старыми приложениями,
неудобство интерфейса.

Если вспомнить статью Джоэла Сполски "Как Microsoft проиграла битву за API ",
то начнет прояснятся, что МС преследует цель положить в основу своих ОС
новый API.

Теперь посмотрим на то, как выходили новые версии .Net Framework и
какие технологии при этом анонсировались:

1.0 2002 CLR, BCL
2.0 2005
3.0 2006 WPF, WCF, WF, Card Space
3.5 2007 LINQ, ADO.NET, Entity Framework,

К сожалению не удалось найти подробности про первые две версии фреймворка,
а в качестве основного источника использован рисунок с wikipedia.



Рисунок 1 - Версии Windows и .Net Framework


Предположительно Vista была построена с использованием технологий .Net,
а win32 программамы являются не native и совместимость достигается посредством
специального слоя в ОС. Как было сделано в Mac OS X, где за совместимость со старыми
программами написанными на старом процедурном API Carbon достигалась через специальный слой.

Теперь Microsoft меняет свой устаревший процедурный API win32 на новый. Еще до выхода
Vista начали выходить .Net фреймворки, в которые постепенно(скорее по мере готовности)
вводились новые части будущего API.

Думается, что Win16/32 API в начале 90-х уже устарел - стало ясным, что будущее
за объектно-ориентированной разработкой. Поэтому в 1992 году МС представила
обертку над win16/32 - MFC.

Итак, вместо Win32/MFC теперь перед нами масса абриватур, среди которых:
WCF (Windows Communication Foundation)
WPF (Windows Presentation Foundation)
WF (Workflow Foundation).

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

Так же тяжело сказать, что является стоящей технологией, а в чем больше маркетинга.

Может быть MS решила, как Sun Microsystems c Java EE создать стандарты, а потом зарабатывать
на консалтинге? Ибо при таком уровне сложности, без помощи корпорации MS тяжело будет
создавать программные продукты?

В отличии от Java .Net может работать на только на операционных системах MS Windows,
но позволяет использовать для разработки много языков. Но уже в Java 6 Sun обявила о поддержке
скриптовых языков, первым стал JavaScript. То есть теперь можно разрабатывать приложения на платформе Jave на JavaScript. В Java встроен JavaScript движок Rhino и java.script API, который в перспективе может работать с любым скриптовым языком. Связано это, вероятно, с тем, что в последнее время стали очень популярны скриптовые языки, особенно при создании web-приложений.
Таким образом Sun начала движение в сторону многоязыковости платформы Java.