|
|
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Nebo, Спасибо. Приступил к просмотру. Тем временем, играю с spring-config.xml Я получаю вот такое исключение Line 36 in XML document from class path resource [spring-config.xml] is invalid; nested exception is org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/data/jpa/spring-jpa.xsd; lineNumber: 36; columnNumber: 63; src-resolve: Cannot resolve the name 'repository:auditing-attributes' to a(n) 'attribute group' component. org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 36 in XML document from class path resource [spring-config.xml] is invalid; nested exception is org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/data/jpa/spring-jpa.xsd; lineNumber: 36; columnNumber: 63; src-resolve: Cannot resolve the name 'repository:auditing-attributes' to a(n) 'attribute group' component. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2015, 15:24 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Какой-то геморрой. Поменял пару вещей в pom.xml, и вышеоказанная ошибка пропала, но появилась другая. Unexpected exception parsing XML document from class path resource [spring-config.xml]; nested exception is org.springframework.beans.FatalBeanException: Invalid NamespaceHandler class [org.springframework.data.jpa.repository.config.JpaRepositoryNameSpaceHandler] for namespace [ http://www.springframework.org/schema/data/jpa%5D:]http://www.springframework.org/schema/data/jpa]: problem with handler class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/config/AuditingHandlerBeanDefinitionParser org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring-config.xml]; nested exception is org.springframework.beans.FatalBeanException: Invalid NamespaceHandler class [org.springframework.data.jpa.repository.config.JpaRepositoryNameSpaceHandler] for namespace [ http://www.springframework.org/schema/data/jpa%5D:]http://www.springframework.org/schema/data/jpa]: problem with handler class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/config/AuditingHandlerBeanDefinitionParser ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2015, 15:42 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
В общем, разобрался с исключениями. Пришлось гуглить, добавлять зависимости в maven, удалять их, менять version и т. д. Заработал Hibernate, соединение с базой установлено. Прописал вот такую штуку<prop key="hibernate.hbm2ddl.auto">validate</prop>, чтобы оно мне базу не пересоздавало каждый раз. Но есть проблема в сервисах. Например, лог выдает такое INFO - DefaultListableBeanFactory - Overriding bean definition for bean 'writerRepository': replacing [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] Честно говоря я не знаю, хорошо это или плохо, но написано Info, никакхи error или exception нету. Но потом, когда приложение уже работает, я делаю такю штуку public interface WriterRepository extends CrudRepository<WriterDomain, Long> { } @Service("WritersService") @Repository @Transactional public class WritersServiceImpl implements WritersService { @Autowired private WriterRepository writersRepository; public List<WriterDto> findAll() { Iterable<WriterDomain> listOfWriterRecords = writersRepository.findAll(); } } И там, где помечено красным вылетает NullPointerException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2015, 18:17 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
xml файл выглядит вот так вот Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2015, 20:55 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Почему такая тишина. 150 млн. в стране и никто не в теме ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2015, 21:55 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo, Страна отдыхает. И всем лень вникать в твои неформатированые логи, неподкюченые библиотеки и т.п. Есть общая рекомендация не мешать в кучу инъекции через XML и аннотации. Выбери один способ и его используй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 10:55 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemo, Страна отдыхает. И всем лень вникать в твои неформатированые логи, неподкюченые библиотеки и т.п. С библиотеками были проблемы. Разобрался. Все запускается, все зависимости на месте. Но работает не так, как надо. Я пересмотрел кучу примеров в инете. У товарищей якобы все работает. По поводу логов, можно и отформатировать, но несильно это отличается от того, что было. INFO - DefaultListableBeanFactory - Overriding bean definition for bean 'writerRepository': replacing [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] Есть общая рекомендация не мешать в кучу инъекции через XML и аннотации. Выбери один способ и его используй. Ну я делаю по аналогии с реальным проектом, в котором все работает. Что именно вам не нравится. В xml файле прописаны общие вещи, которые для всего проекта. А в куче классов сущностей, репозиториев и т. д. я уже прописываю аннотации. Разве это не оптимально ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 12:40 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
GeronemoНу я делаю по аналогии с реальным проектом, в котором все работает. За такое в универе даже тройку не всегда ставили. Где и как WritersServiceImpl инстанциируется? Как показывает история форума все удивления обычно занканчиваются на банальном new WritersServiceImpl(). У тебя не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 12:47 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, это у меня сделано. В как быть с private UserRepository userRepository; его же я не должен создавать, и по идее имею право делать вот такое userRepository.findAll(); Но оно выдает NullPointerException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 14:53 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo, Так WriterRepository или UserRepository? Варианта два. Либо Spring Data не сконфигурирован и репозиториев не создаёт. Либо WritersServiceImpl инстанциирован без контекста и в него вообще ничего не инжектится. Кстати, почему он и Service и Repository одновременно? Stacktrace NPE покажи. WritersServiceImpl откуда берется у вызывающего класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 14:57 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemo, Так WriterRepository или UserRepository? У меня есть и тот и тот. И еще несколько репозиториев. Варианта два. Либо Spring Data не сконфигурирован и репозиториев не создаёт. По поводу Спринг Дата, выше я указал конфиг. В приложениии я делаю такую штуку Код: java 1. 2. 3. 4. 5. 6. 7. 8. При запуске лог выглядит так автор[2015-01-05 04:48:12,842] Artifact HelloWorld:war exploded: Artifact is being deployed, please wait... янв 05, 2015 4:48:14 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath ????????????? ..................................... INFO - Application - Application start. INFO - XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [spring-config.xml] INFO - DefaultListableBeanFactory - Overriding bean definition for bean 'writerRepository': replacing [Root bean: class ???????????? [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] ................... тут еще 3 записи INFO - DefaultListableBeanFactory - Overriding bean definition для осталбных репозиториев INFO - nericXmlApplicationContext - Refreshing org.springframework.context.support.GenericXmlApplicationContext@507d5db9: startup date [Mon Jan 05 16:48:15 FET 2015]; root of context hierarchy INFO - DriverManagerDataSource - Loaded JDBC driver: com.mysql.jdbc.Driver INFO - erEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default' WARN - HibernatePersistence - HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead. INFO - LogHelper - HHH000204: Processing PersistenceUnitInfo [ name: default...] INFO - Version - HHH000412: Hibernate Core {4.3.7.Final} INFO - Environment - HHH000206: hibernate.properties not found INFO - Environment - HHH000021: Bytecode provider name : javassist INFO - Version - HCANN000001: Hibernate Commons Annotations {4.0.5.Final} INFO - Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect INFO - ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory INFO - SchemaValidator - HHH000229: Running schema validator INFO - SchemaValidator - HHH000102: Fetching database metadata INFO - TableMetadata - HHH000261: Table found: library.book INFO - TableMetadata - HHH000037: Columns: [numberofbooks, bookname, currentnumberofbooks, bookid] INFO - TableMetadata - HHH000261: Table found: library.bookinfo INFO - TableMetadata - HHH000037: Columns: [literaryworkid, bookid] INFO - TableMetadata - HHH000261: Table found: library.literarywork INFO - TableMetadata - HHH000037: Columns: [literaryworkid, literaryworkname, authorid] INFO - TableMetadata - HHH000261: Table found: library.users INFO - TableMetadata - HHH000037: Columns: [firstname, id, login, lastname, userpassword] INFO - TableMetadata - HHH000261: Table found: library.writerofliterarywork INFO - TableMetadata - HHH000037: Columns: [literaryworkid, authorid] INFO - TableMetadata - HHH000261: Table found: library.writer INFO - TableMetadata - HHH000037: Columns: [firstname, fullname, authorid, info, lastname] INFO - Application - Spring init done Либо WritersServiceImpl инстанциирован без контекста и в него вообще ничего не инжектится. Кстати, почему он и Service и Repository одновременно? Вкратце класс выглядит так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Слово сервис я убрал. Я много вариантов аннотаций перепробовал. Вот 2 примера из инета http://habrahabr.ru/post/238487/ http://habrahabr.ru/post/139421/ Stacktrace NPE покажи. WritersServiceImpl откуда берется у вызывающего класса? Вот как я вызываю service. (В идеале, я бы хотел, чтобы этот сервис был бы RMI И было несколько проектов, но я упростил задачу и буду усложнять ее по мере надобности) Стектрейс очен длинный, суть его вот в Caused by: java.lang.NullPointerException at ru.Bakai.services.impl.UsersServiceImpl.findAll(UsersServiceImpl.java:57) at ru.Bakai.pages.LoginPage.<init>(LoginPage.java:108) ... 37 more sersServiceImpl.java:57 - это Iterable<WriterDomain> listOfWriterRecords = writersRepository.findAll(); WritersService service = new WritersServiceImpl (); service.findAll(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 17:13 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
GeronemoINFO: No Spring WebApplicationInitializer types detected on classpath ????????????? С этим разобрался, прописал кое-что в Project Structure но все равно NPT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 17:19 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo WritersService service = new WritersServiceImpl (); service.findAll(); Ха-ха. Сеанс телепатии прошел успешно. Почему ты просто проигнорировал моё замечание про new WritersServiceImpl ()? Ах, не удобно читать без подсветки кода? Ты знаешь что такое объект? Ты знаешь что Spring IoC берет одни объекты и помещает в них ссылки на других. Это называется Dependency Injection. Ты знаешь что new WritersServiceImpl() создаёт новый объект? А теперь следи за руками. Spring про этот новый объект ничего не знает и поместить туда ничего не может. Ты его создал сам себе. И хочешь что Spring через какую-то магию туда наижектил зависимостей? Нет никакой магии. Не нужно пытаться проглотить весь пирог целиком. Начините с основ Dependency Injection, прежде чем использовать всю мощь Spring. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 17:22 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Так сначала я не создавал объекта и не работало. Потом стал экспериментировать. Так что не так в коде. Если у товарище по ссылкам якобы все работает, почему у меня нет. Я вернул, как было, убрал создание объекта. У меня снова writerService.findAll(); выкидывает исключение. Код: java 1. 2. 3. 4. 5. 6. 7. 8. Код: java 1. 2. 3. 4. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Я играюсь с ключевыми словами Service. Autowired и еще несколькими, смотрю, как сделано по ссылкам, но все время NPE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 19:38 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo, NPE значит что нет зависимости. Зависимости нет потому что Spring её не инжектит. Если Spring не инжектит, значит он не знает про этот объект потому что тот создан вне контекста. Метод научного тыка проб и ошибок замечательная штука, но не для таких сложных фреймверков. По стеку кто-то вызывает LoginPage, а тот вызывает Service. LoginPage это контроллер? Service туда инжектится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 20:23 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemo, NPE значит что нет зависимости. Зависимости нет потому что Spring её не инжектит. Если Spring не инжектит, значит он не знает про этот объект потому что тот создан вне контекста. Метод научного тыка проб и ошибок замечательная штука, но не для таких сложных фреймверков. По стеку кто-то вызывает LoginPage, а тот вызывает Service. LoginPage это контроллер? Service туда инжектится? LoginPage вызывается главным классом, где прописано вот такое Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Кстати, в spring-config.xml есть такая строчка <bean class="ru.corp.Dao.repository.AutowireHelper" factory-method="getInstance" /> И есть такой класс, который я нарыл в инете. Слева от названия класса стоит значок, который означает, что это Spring Bean и если на него нажать, то мы попадаем на эту самую строчку Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Этот класс нигде в программе явно не вызывается. Кстати, очень любопытный момент. Я поставил во всех 3-х методах брейкпойнтах. При запуске программы я побывал во 2-м и 3-м методе и пока гулял дебаггером по разным методам всяких spring классов, в одном месте я увидел, что программа создала 23 бина, из них все мои repository и и все Impl классы. А также куча каких-то системных бинов. Т. е. бины создаются, но в LoginPage они не видны. В метод autowire класса AutowireHelper я так ни разу не попал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 22:34 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Любопытно, сделал вот такую штуку из главного класса автор @Override public void init() { List<WriterDto> list; LOG.info("Application start."); try { gxac = new GenericXmlApplicationContext(); gxac.load("classpath:/spring-config.xml"); gxac.refresh(); gxac.registerShutdownHook(); list = ((WritersService)gxac.getBean("writersService")).findAll(); } catch (Throwable t) { LOG.error(t.getMessage(), t); } LOG.info("Spring init done"); } Выделенная красным строчка действительно вернуло то, что находится в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2015, 23:47 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Придумал временное решение проблемы. Создал вот такой метод в главном классе Application Код: java 1. 2. 3. А потом вызываю откуда захочу Код: java 1. Немного извращение, но это хотя бы работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 13:21 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
авторЭтот класс нигде в программе явно не вызывается. Кстати, очень любопытный момент. Я поставил во всех 3-х методах брейкпойнтах. При запуске программы я побывал во 2-м и 3-м методе и пока гулял дебаггером по разным методам всяких spring классов, в одном месте я увидел, что программа создала 23 бина, из них все мои repository и и все Impl классы. А также куча каких-то системных бинов. Т. е. бины создаются, но в LoginPage они не видны. В метод autowire класса AutowireHelper я так ни разу не попал. Бросьте эту ахинею, запутаетесь и потеряете время. Изучайте лучше основы программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 15:29 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo, Что такое LoginPage для меня до сих пор загадка. Похоже что проекту остро не хватает Spring MVC, чтобы ваш LoginPage попал под управление Spring. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 15:38 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪБросьте эту ахинею, запутаетесь и потеряете время. Изучайте лучше основы программирования. Почему ахинею ? И почему вы считаете, что ваш комментарий полезен и компетентен ? У меня большой опыт програмирования на Java, но у меня был и очень большой перерыв. Я многое забыл, также появилось много новых технологий, фреймворков и т. д. Надо основами Java я работаю итак. Несколько месяцев назад прочитал хорошую книжку, сейчас смотрю видеоуроки (чуть выше товарищ посоветовал, там 18 уроков, я начал их смотреть сначала, очень рекомендую). По поводу времени. Самый большой поглотитель времени у меня это когда я натыкаюсь на вот такие вот проблемки, когда в теории должно работать, но я что-то где-то забыл прописать, чаще всего по незнанию каких-то нюансов. Можно понимать вопрос в целом, на 80% где-то, но задачу надо решить на 100% и вот эти 20% это какие-то мелочи, которые отнимают кучу времени. И тогда я задаю вопрос на форуме, а сам параллельно пытаюсь найти решение. Вам кажется вопрос глупым, а для меня это препятствие, чтобы продолжить работу. И это надо как-то разрешить. Сейчас я придумал некоторое корявое решение, как получить доступ к сервисам, чтобы была полноценная возможность продолжить работу. Когда знакомые программисты приедут с какого-нибудь Таиланда, я проконсультируюсь и сделаю как надо. А пока есть как есть и я буду сюда задавать глупые вопросы. Мне нечего стесняться Вас или кого-то еще. Я специально задал проекту высокий уровень, чтобы мозг напрягался. Потому что на работе такого рода проекты уже разработаны с т. з. архитектуры. И у меня стоят много каких-то узких задач, которые я делаю по аналогии какими-то более ранними проектами. А мне хочется максимально быстрого прогресса, т. к. я несколько лет потерял в профессиональном плане как программист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 17:58 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemo, Что такое LoginPage для меня до сих пор загадка. Похоже что проекту остро не хватает Spring MVC, чтобы ваш LoginPage попал под управление Spring. Вкратце как-то так. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Сразу же при запуске открывается страница LoginPage. Доступ к бину имею только из GenericXmlApplicationContext gxac; Почему-то бины не инжектятся (или как это называется) я х. з. Я на это проблему убил очень много времени (похоже надо перечитать книгу про тайм-менеджмент). И поэтому оставлю так и продолжу работу над модификацией БД, созданием страниц, сервисов, Domain, Dto классов, потому как это у меня работает, но тут надо очень много чего сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 18:14 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
>(чуть выше товарищ посоветовал, там 18 уроков, я начал их смотреть сначала, очень рекомендую). Файна слушаем! Товарищ ещё посоветует:) Книжечка: Гибкая разработка приложений на Java с помощью Spring, Hibernate и Eclipse. Анил Хемраджани Самый длинный путь бывает самым коротким) https://www.youtube.com/user/ytkach ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 20:22 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 20:25 |
|
||
|
Клиент-серверное приложение "Библиотека"
|
|||
|---|---|---|---|
|
#18+
Geronemo, на самом деле читать надо очень много. Вдумчиво, последовательно, не торопясь Со временем, количество перейдёт в качество. Ребята здесь правы, что надо взяться за теорию. Без неё никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 20:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38849246&tid=2125971]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 563ms |

| 0 / 0 |
