При разработке JavaScript, да и при вёрстке страниц в браузере Firefox не возможно обойтись без использования Firebug. Невозможно обойтись также и без дополнений к нему. Возникает резонный вопрос:«Откуда взять дополнения к Firebug?» Ответ на этот вопрос можно найти на странице:
На странице предоставлены дополнения к Firebug, сделаны маленькие скриншоты их внешнего вида и краткое описание дополнений. В общем на этой странице каждый найдёт что-то, что ему сможет пригодится.
Часто, а то и почти-всегда встречаются следующие вопросы:
Какие бывают области видимости (модификаторы доступа) у переменных и методов?
Каким образом модификатор доступа можно изменять в наследниках класса?
Ответим на данный вопрос ниже.
Уровень доступа определяет то, как остальные классы могут использовать какое-либо поле класса или метод класса. Есть два уровня контроля доступа:
верхний уровень (уровень класса) — public или package-private (явно не указан модификатор доступа)
уровень методов — public, private, protected и package-private (явно не указан модификатор доступа)
Уровень 1
Этот уровень определяет области видимости для класса, т.е. класс может иметь только два уровня доступа (public или package-private).
Модификатор доступа указанный у класса
Область видимости класса
public
класс будет виден везде
package-private
класс будет виден только внутри пакета, где он объявлен
Уровень 2
Этот уровень определяет области видимости для элементов класса (методов, полей и т.п.).
Таблица показывает уровни доступа к элементам класса в зависимости от модификатора
Модификатор доступа
Class
Package
Subclass
World
public
Да
Да
Да
Да
protected
Да
Да
Да
Нет
package-private
Да
Да
Нет
Нет
private
Да
Нет
Нет
Нет
*package-private для Subclass будет виден только если Subclass находится в том же пакете, что и класс родитель(Parent). В остальных случаях - не виден(как на таблице) (Спасибо Dmitry Staurou за дополнение)
Последовательность модификаторов доступа по убыванию закрытости слева на право:
private
package-private
protected
public
При наследовании можно менять модификаторы доступа в сторону большей видимости, но не наоборот.
Вот в принципе тот минимум который нужно знать, чтобы программировать на Java.
Сегодня Google Chrome обновился до 18 версии. Что в нём стало такого особенного? Всё очень просто, раньше для обработки регионов в WebGL происходила не на аппаратном уровне (графических процессоров средствами видеокарт), а на программном, сейчас для рендеринга и обработки будут использовать функции железа (если оно это позволяет делать, а всё относительно новое железо это делать позволяет).
Посмотреть поддержку GPU в google chrome можно введя команду в адресной строке: «chrome://gpu/»
А посмотреть на 3D в действии можно по этой ссылке:
При запуске JBOSS 5.1 GA выкидывает следующую ошибку:
08:54:00,791 INFO [ServerImpl] Starting JBoss (Microcontainer)...
08:54:00,792 INFO [ServerImpl] Release ID: JBoss [The Oracle] 5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)
08:54:00,792 INFO [ServerImpl] Bootstrap URL: null
08:54:00,792 INFO [ServerImpl] Home Dir: D:\dev\servers\jboss-5.1.0.GA
08:54:00,792 INFO [ServerImpl] Home URL: file:/D:/dev/servers/jboss-5.1.0.GA/
08:54:00,793 INFO [ServerImpl] Library URL: file:/D:/dev/servers/jboss-5.1.0.GA/lib/
08:54:00,794 INFO [ServerImpl] Patch URL: null
08:54:00,794 INFO [ServerImpl] Common Base URL: file:/D:/dev/servers/jboss-5.1.0.GA/common/
08:54:00,794 INFO [ServerImpl] Common Library URL: file:/D:/dev/servers/jboss-5.1.0.GA/common/lib/
08:54:00,794 INFO [ServerImpl] Server Name: default
08:54:00,794 INFO [ServerImpl] Server Base Dir: D:\dev\servers\jboss-5.1.0.GA\server
08:54:00,795 INFO [ServerImpl] Server Base URL: file:/D:/dev/servers/jboss-5.1.0.GA/server/
08:54:00,795 INFO [ServerImpl] Server Config URL: file:/D:/dev/servers/jboss-5.1.0.GA/server/default/conf/
08:54:00,795 INFO [ServerImpl] Server Home Dir: D:\dev\servers\jboss-5.1.0.GA\server\default
08:54:00,795 INFO [ServerImpl] Server Home URL: file:/D:/dev/servers/jboss-5.1.0.GA/server/default/
08:54:00,795 INFO [ServerImpl] Server Data Dir: D:\dev\servers\jboss-5.1.0.GA\server\default\data
08:54:00,796 INFO [ServerImpl] Server Library URL: file:/D:/dev/servers/jboss-5.1.0.GA/server/default/lib/
08:54:00,796 INFO [ServerImpl] Server Log Dir: D:\dev\servers\jboss-5.1.0.GA\server\default\log
08:54:00,796 INFO [ServerImpl] Server Native Dir: D:\dev\servers\jboss-5.1.0.GA\server\default\tmp\native
08:54:00,796 INFO [ServerImpl] Server Temp Dir: D:\dev\servers\jboss-5.1.0.GA\server\default\tmp
08:54:00,796 INFO [ServerImpl] Server Temp Deploy Dir: D:\dev\servers\jboss-5.1.0.GA\server\default\tmp\deploy
08:54:01,309 INFO [ServerImpl] Starting Microcontainer, bootstrapURL=file:/D:/dev/servers/jboss-5.1.0.GA/server/default/conf/bootstrap.xml
08:54:01,830 INFO [VFSCacheFactory] Initializing VFSCache [org.jboss.virtual.plugins.cache.CombinedVFSCache]
08:54:01,833 INFO [VFSCacheFactory] Using VFSCache [CombinedVFSCache[real-cache: null]]
08:54:02,067 INFO [CopyMechanism] VFS temp dir: D:\dev\servers\jboss-5.1.0.GA\server\default\tmp
08:54:02,075 INFO [ZipEntryContext] VFS force nested jars copy-mode is enabled.
08:54:02,807 INFO [ServerInfo] Java version: 1.6.0_24,Sun Microsystems Inc.
08:54:02,807 INFO [ServerInfo] Java Runtime: Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
08:54:02,807 INFO [ServerInfo] Java VM: Java HotSpot(TM) Client VM 19.1-b02,Sun Microsystems Inc.
08:54:02,807 INFO [ServerInfo] OS-System: Windows 7 6.1,x86
08:54:02,808 INFO [ServerInfo] VM arguments: -Dprogram.name=run.bat -Xms128m -Xmx512m -XX:MaxPermSize=256m -Dfile.encoding=Cp1251
08:54:02,836 INFO [JMXKernel] Legacy JMX core initialized
08:54:03,925 ERROR [AbstractKernelController] Error installing to Instantiated: name=AttachmentStore state=Described
java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected= actual=
at org.jboss.reflect.plugins.introspection.ReflectionUtils.handleErrors(ReflectionUtils.java:395)
at org.jboss.reflect.plugins.introspection.ReflectionUtils.newInstance(ReflectionUtils.java:153)
at org.jboss.reflect.plugins.introspection.ReflectConstructorInfoImpl.newInstance(ReflectConstructorInfoImpl.java:106)
at org.jboss.joinpoint.plugins.BasicConstructorJoinPoint.dispatch(BasicConstructorJoinPoint.java:80)
at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.createTarget(AOPConstructorJoinpoint.java:282)
at org.jboss.aop.microcontainer.integration.AOPConstructorJoinpoint.dispatch(AOPConstructorJoinpoint.java:103)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
at org.jboss.kernel.plugins.dependency.InstantiateAction.installActionInternal(InstantiateAction.java:66)
at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBean(AbstractKernelDeployer.java:319)
at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deployBeans(AbstractKernelDeployer.java:297)
at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.deploy(AbstractKernelDeployer.java:130)
at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.deploy(BasicKernelDeployer.java:76)
at org.jboss.bootstrap.microcontainer.TempBasicXMLDeployer.deploy(TempBasicXMLDeployer.java:91)
at org.jboss.bootstrap.microcontainer.TempBasicXMLDeployer.deploy(TempBasicXMLDeployer.java:161)
at org.jboss.bootstrap.microcontainer.ServerImpl.doStart(ServerImpl.java:138)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:450)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:662)
Failed to boot JBoss:
java.lang.IllegalStateException: Incompletely deployed:
DEPLOYMENTS IN ERROR:
Deployment "AttachmentStore" is in error due to: java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected= actual=
DEPLOYMENTS MISSING DEPENDENCIES:
Deployment "ProfileServiceBootstrap" is missing the following dependencies:
Dependency "ProfileService" (should be in state "Installed", but is actually in state "Instantiated")
Dependency "jboss.kernel:service=Kernel" (should be in state "Installed", but is actually in state "**ERROR**")
Deployment "ProfileServicePersistenceDeployer" is missing the following dependencies:
Dependency "AttachmentStore" (should be in state "Installed", but is actually in state "**ERROR**")
Deployment "ProfileService" is missing the following dependencies:
Dependency "jboss.kernel:service=KernelController" (should be in state "Installed", but is actually in state "**ERROR**")
Dependency "ProfileServiceDeployer" (should be in state "Installed", but is actually in state "Instantiated")
Deployment "ProfileServiceDeployer" is missing the following dependencies:
Dependency "AttachmentStore" (should be in state "Installed", but is actually in state "**ERROR**")
at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.internalValidate(AbstractKernelDeployer.java:278)
at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.validate(AbstractKernelDeployer.java:174)
at org.jboss.bootstrap.microcontainer.ServerImpl.doStart(ServerImpl.java:142)
at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:450)
at org.jboss.Main.boot(Main.java:221)
at org.jboss.Main$1.run(Main.java:556)
at java.lang.Thread.run(Thread.java:662)
08:54:04,424 INFO [ServerImpl] Runtime shutdown hook called, forceHalt: true
08:54:04,429 INFO [ServerImpl] Shutdown complete
Shutdown complete
Halting VM
Чтобы избавиться от этого падения, нужно в файле conf/bootstrap/profile.xml добавить явно класс для работы с файлами (этот баг описан здесь: ):
Для перехвата нажатой клавиши используется переопределение события onkeypress (возварщает true — если событие должно обрабатываться дальше при bubling, false — прерывает дальнейшее выполнение ), которое возникает в браузере при нажатии любой клавиши на клавиатуре. Пример использования:
function customOnKeyPress(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
return false;
}
}
var newObjectNameField = document.getElementById('textField');
newObjectNameField.onkeypress = customOnKeyPress;
node.type=="text" — указывает, что привязываем только к текстовому полю
Eclipse Color Themes или как сменить подсветку кода в редакторе
При программировании в Eclipse важным моментом является подсветка кода, ведь в подсвеченном коде разобраться куда проще и легче, чем в сплошном и плохо разделяемом, хотя тут некоторые могут поспорить
Для изменения подсветки кода в Eclipse я использую дополнение, которое называется Eclipse Color Themes для меня этот плагин удобен и установить его очень просто. Сайт обновления: Официальный сайт плагина:
После выхода в свет Java 7, все стали бурно обсуждать критическую ошибку с циклами, которая была обнаружена и воспроизведена группой разработчиков Tomcat(если мне не изменяет память). Эта ошибка с циклами, по-заверениям разработчиков Java, будет исправлена в Java 7 Build 2, а пока этого не произошло, то можно использовать опцию JVM, которая изолирует этот баг (у меня за все время работы с Java 7 — небыло ни одного падения, а вот прирост скорости «на глаз» ощутим). Вписываем эту опцию при запуске JVM (например в eclipse.ini) и радуемся жизни:
Сегодня столкнулся с очередной проблемой, которая как-всегда подкралась незаметно из-за угла. Дело обстояло следующим образом. После скачивания Eclipse Indigo 3.7 и запуска его в JVM 7 я обычно ставлю плагины, которые облегчают программирование, например подсветку синтаксиса в окне редактора, или авто дополнение кода JavaScript и т.п. После того, как я зашел в установку программ (Help -> Install New Software…) появилось сообщение «Problem Occurred»
Вот текст того, что написано при нажатии Details:
Some sites could not be found. See the error log for more detail.
Unable to read repository at http://download.eclipse.org/eclipse/updates/3.7/compositeContent.xml.
Cannot assign requested address: connect
Unable to read repository at http://download.eclipse.org/technology/epp/packages/indigo/content.xml.
Cannot assign requested address: connect
Unable to read repository at http://andrei.gmxhome.de/eclipse/site.xml.
Cannot assign requested address: connect
Unable to read repository at http://download.eclipse.org/mylyn/releases/indigo/compositeContent.xml.
Cannot assign requested address: connect
Unable to read repository at http://regex-util.sourceforge.net/update/content.xml.
Cannot assign requested address: connect
Unable to read repository at http://download.eclipse.org/webtools/repository/indigo/compositeContent.xml.
Cannot assign requested address: connect
Unable to read repository at http://download.eclipse.org/technology/epp/packages/indigo/R/content.xml.
Cannot assign requested address: connect
Unable to read repository at http://download.eclipse.org/releases/indigo/content.xml.
Cannot assign requested address: connect
Само окно с ошибкой представлено на скриншоте: Аналогичное сообщение о том, что Eclipse не может найти сайты с обновлениями, получаем и при добавлении какого-нибудь Update сайта для установки дополнений в Eclipse.
Решение проблемы оказалось как-всегда не тривиальным, но легким. Для этого необходимо открыть файл настроек Eclipse — eclipse.ini и вставить в конец него следующую строку:
-Djava.net.preferIPv4Stack=true
Из-за чего собственно проблема? Да из-за того, что попытки достучатся до сайта обновлений происходили по протоколу IPv6, а он у провайдера не поддерживается, поэтому мы принудительно заставляем использовать протокол IPv4.
Теперь после сохранения настроек и перезапуска Eclipse — никаких ошибок об отсутствующем сайте обновлений мы не получим.
Часто на форумах, в чатах, в ICQ и Skype нам задают много вопросов, которые вполне, при желании, можно было бы найти в Google, но по каким-то причинам не сделали этого. В таких случаях я предлагаю давать ссылки через сервис (На оригинале пишится как: Let me google that for you)
Для использования сервиса, просто вставляете ссылку в строку поиска, которая сделана как google и сервис Вам выдаст ссылку, перейдя по-которой человек, для которого Вы искали, увидит как пользоваться Google.
При разработке JavaScript, да и при вёрстке страниц в браузере Firefox не возможно обойтись без использования Firebug. Невозможно обойтись также и без дополнений к нему. Возникает резонный вопрос:«Откуда взять дополнения к Firebug?» Ответ на этот вопрос можно найти на странице: http://getfirebug.com/wiki/index.php/Firebug_Extensions На странице предоставлены дополнения к Firebug, сделаны маленькие скриншоты [...]
Часто, а то и почти-всегда встречаются следующие вопросы: Какие бывают области видимости (модификаторы доступа) у переменных и методов? Каким образом модификатор доступа можно изменять в наследниках класса? Ответим на данный вопрос ниже. Уровень доступа определяет то, как остальные классы могут использовать какое-либо поле класса или метод класса. Есть два уровня [...]
Сегодня Google Chrome обновился до 18 версии. Что в нём стало такого особенного? Всё очень просто, раньше для обработки регионов в WebGL происходила не на аппаратном уровне (графических процессоров средствами видеокарт), а на программном, сейчас для рендеринга и обработки будут использовать функции железа (если оно это позволяет делать, а всё [...]
Для перехвата нажатой клавиши используется переопределение события onkeypress (возварщает true — если событие должно обрабатываться дальше при bubling, false — прерывает дальнейшее выполнение ), которое возникает в браузере при нажатии любой клавиши на клавиатуре. Пример использования: function customOnKeyPress(evt) { var evt = (evt) ? evt : ((event) ? event : [...]
Eclipse Color Themes или как сменить подсветку кода в редакторе При программировании в Eclipse важным моментом является подсветка кода, ведь в подсвеченном коде разобраться куда проще и легче, чем в сплошном и плохо разделяемом, хотя тут некоторые могут поспорить Для изменения подсветки кода в Eclipse я использую дополнение, которое называется [...]
После выхода в свет Java 7, все стали бурно обсуждать критическую ошибку с циклами, которая была обнаружена и воспроизведена группой разработчиков Tomcat(если мне не изменяет память). Эта ошибка с циклами, по-заверениям разработчиков Java, будет исправлена в Java 7 Build 2, а пока этого не произошло, то можно использовать опцию JVM, [...]
Сегодня столкнулся с очередной проблемой, которая как-всегда подкралась незаметно из-за угла. Дело обстояло следующим образом. После скачивания Eclipse Indigo 3.7 и запуска его в JVM 7 я обычно ставлю плагины, которые облегчают программирование, например подсветку синтаксиса в окне редактора, или авто дополнение кода JavaScript и т.п. После того, как я [...]
Часто на форумах, в чатах, в ICQ и Skype нам задают много вопросов, которые вполне, при желании, можно было бы найти в Google, но по каким-то причинам не сделали этого. В таких случаях я предлагаю давать ссылки через сервис http://lmgtfy.com/ (На оригинале пишится как: Let me google that for you) [...]
Привожу ссылку на достаточно хорошую библиотеку тегов и к тому же — бесплатную ! Библиотека находится здесь — http://www.primefaces.org Презентацию можно увидеть на видео чуть ниже, в общем мне библиотека очень даже понравилась
Можно еще дать несколько простых советов:
- Не используйте модификатор public для полей класса (кроме констант)
- Будьте внимательны с private-методами, ...
На самом деле мне не помогло.
Помогает другое:
добавьте в eclipse.ini 2 строчки
-vm
c:\develop\java\jdk1.6.18\bin\javaw.exe
во 2-й сроке соотв. указываем путь к javaw.exe вашего ...
Английский, например, хорошо изучать по мультимедийным дискам. Например, "Профессор Хиггинс", там и грамматика есть (полностью из English Grammar от Мёрфи) ...