Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11

Трёхзвенное приложение ( Android-Glassfish-MySQL )

17.05.2014, 22:22. Показов 2183. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Так вышло, что для своего курсового проекта по БД я выбрал разработку трёхзвенного приложения.
БД я решил сделать на MySQL, в качества сервера приложений выбрал Glassfish, а клиент на Android.
Наброски БД уже есть, но очень сложно разобраться с набором всяких API и технологий JavaEE. В голове каша из всего этого.
Как я понимаю, мне понадобится ещё ORM средство, для преобразования таблиц в объекты и обратно.
Проблемы:
1) Какое ORM лучше выбрать? Мне необходимо ORM с минимальным порогом вхождения и требуемого времени на изучение(с JavaEE никогда ещё не сталкивался). Я слышал о Hibernate и кажется EJB тоже может маппить.
2) Как организовать обмен данными между сервером приложений и клиентом, чем они должны обмениваться, xml, объектами? Прочитав это на сайте NetBEans https://netbeans.org/kb/docs/j... nt_ru.html, я так понял, что EJB может для этого подойти, но хотелось бы уточнить.
3) Если использовать какое-либо ORM, то понадобится ли JDBC?
4) И реализуем ли вообще такой клиент на Android? Не пойму, дружат ли вообще android и JavaEE?
5) Что я ещё мог забыть, что мне может ещё понадобится для разработки?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2014, 22:22
Ответы с готовыми решениями:

Подключение к mysql через android приложение (эклипс)
Доброго времени суток!!! Я в эклипсе вот таким образом подключаюсь к mysql contentTxt.setText("lhilhilh"); ...

Подключение к MySql из консольного приложения (Android приложение C# Shell из Play Market)
Я пока что практикуюсь в базах MySql, и хотел написать консольное приложение, цель которого - просто подключиться к базе и выполнить...

Не пингуется GlassFish с БД MySQL
Доброго времени! Распаковал и создал из командной строки domain сервер GlassFish, стартовал его, затем остановил. Начал пытаться...

17
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.05.2014, 22:30
ORM - Hibernate (jpa CRUD repositories)
Передача сообщений клиент-сервер лучше сделать по http передавая объекты json. Можно использовать jersey 2 например.
Так же используйте Spring чтобы сделать сервисы.
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
18.05.2014, 00:23  [ТС]
ORM - Hibernate (jpa CRUD repositories)
Передача сообщений клиент-сервер лучше сделать по http передавая объекты json. Можно использовать jersey 2 например.
Так же используйте Spring чтобы сделать сервисы.
Спасибо. Буду смотреть.
Не совсем понятно, для каких сервисов нужен spring, какие могут быть сервисы?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
18.05.2014, 00:49
Сервис лейер вашей аппликации. У вас есть ДБ лейер, который разговаривает с БД и есть api на который обращается клиент. Между ними должен быть тот, кто выполняет всю логику. Это и есть сервисы.
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
18.05.2014, 12:42  [ТС]
Сервис лейер вашей аппликации. У вас есть ДБ лейер, который разговаривает с БД и есть api на который обращается клиент. Между ними должен быть тот, кто выполняет всю логику. Это и есть сервисы.
Всё понял, разобрался.
Ещё вопрос. У меня ведь не веб-клиент, зачем передавать json объекты через http? Может для этого проще воспользоваться RMI?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
18.05.2014, 16:22
Я не особый любитель rmi из за потенциальных проблем с прокси и фаерволами но такая реализация тоже возможна.

Добавлено через 2 минуты
К тому же http куда легче запускать без клиента в процессе разработки и отладки сервера
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
26.05.2014, 00:45  [ТС]
Поизучал Spring, написал entity для моих таблиц, реализовал DAO, пишу facade и view.
Как я понимаю, facade реализует бизнес-логику, но я видел ещё какие-то @service. А view являются представленим и должны посылаться в каком-то виде клиенту. Получается, что у меня есть Model, View, но нет Controller-а.
Было б времени побольше, я б почитал книги, но инфу приходится урывать кусками из статей. Я запутался в бесконечных абстракциях и у меня возникают вопросы.
1) Как писать controller, если у меня толстый клиент?
2) Чем отличается facade от @service?
3) Как мне прикрутить сервер приложений к тому, что я уже нагородил?
4) Вопросы, которые стыдно задавать...
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.05.2014, 01:07
1. Контроллер это слой связи клиента с сервером. Он отвечает за то чтобы получить просьбу клиента, вызвать сервис и отдать ответ.
2. Фасад это дизайн паттерн, @Service это аннотация спринга указывающая на то, что класс является сервисом. То есть тем слоем, к кому обращается контроллер и кто имплементирует всю логику и общается с моделью (БД)
3. А где вы весь предыдущий код писали?
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
26.05.2014, 03:08  [ТС]
Контроллер это слой связи клиента с сервером. Он отвечает за то чтобы получить просьбу клиента, вызвать сервис и отдать ответ.
Суть более менее понятна. Просто никогда контроллер в глаза не видел.
Фасад это дизайн паттерн, @Service это аннотация спринга указывающая на то, что класс является сервисом. То есть тем слоем, к кому обращается контроллер и кто имплементирует всю логику и общается с моделью (БД)
Я смотрел курс построения enterprise-приложения Антона Субарова и в главе про бизнес-уровень ни разу не упомянули сервисы http://java-course.ru/student/book2/spring/. А бизнес-логика у него описывается в классах с постфиксом facade. К сожалению там практически нет объяснений, почему именно так.
А если мне придётся писать свой контроллер, то мне нужно будет указать аннотации @service для классов facade?
А где вы весь предыдущий код писали?
Я создавал голый проект, а там уже по пакетам распределил классы с DAO и Entity. На тот момент я не хотел забивать голову ещё и сервером приложений.
Примерно так выглядит мой проект http://i024. radikal. ru/1405/41/4be5fc07441c.jpg (почему-то вставка изображений не работает как надо, поэтому просто ссылка)

Добавлено через 1 час 24 минуты
И думаю стоит показать, что я имел ввиду под facade. Класс AddressFacade
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
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package phonebook.facade;
 
import java.util.LinkedList;
import java.util.List;
import phonebook.dao.AddressDAO;
import phonebook.dao.CityDAO;
import phonebook.entity.Address;
import phonebook.entity.Company;
import phonebook.entity.Person;
import phonebook.view.AddressView;
import phonebook.view.CompanyView;
 
public class AddressFacade {
    private AddressDAO addressDAO;
    private CompanyFacade companyFacade;
    private PersonFacade personFacade;
    private CityDAO cityDAO;
 
    public void setAddressDAO(AddressDAO addressDAO) {
        this.addressDAO = addressDAO;
    }
 
    public void setCityDAO(CityDAO cityDAO) {
        this.cityDAO = cityDAO;
    }
 
    public void setCompanyFacade(CompanyFacade companyFacade) {
        this.companyFacade = companyFacade;
    }
 
    public void setPersonFacade(PersonFacade personFacade) {
        this.personFacade = personFacade;
    }
    
    
    public Long addAddress(AddressView av) {
        av.setAddressId(null);
        return addressDAO.addAddress(createAddressFromView(av));
    }
    
    
    public void updateAddress(AddressView av) {
        addressDAO.updateAddress(createAddressFromView(av));
    }
 
    public void updateCompany(AddressView av) {
        Address a = addressDAO.getAddress(av.getAddressId());
        if (av.getCompanyList() != null) {
            List<Company> cList = new LinkedList<Company>();
            for(CompanyView cv : av.getCompanyList()) {
                cList.add(companyFacade.createCompanyFromView(cv));
            }
            a.setCompanyList(cList);
        }
    }
 
    public void deleteAddress(AddressView av) {
        addressDAO.deleteAddress(addressDAO.getAddress(av.getAddressId()));
    }
 
    public AddressView getAddress(Long id) {
        return new AddressView(addressDAO.getAddress(id));
    }
 
    public List<AddressView> findApplicant() {
        List<AddressView> pvList = new LinkedList<AddressView>();
        List<Address> aList = addressDAO.findAddress();
        for (Address a : aList) {
            pvList.add(new AddressView(a));
        }
        return pvList;
    }
    
 
    private Address createAddressFromView(AddressView av) {
        Address a = null;
        if (av.getAddressId() != null && av.getAddressId() > 0) {
            a = addressDAO.getAddress(av.getAddressId());
        } else {
            a = new Address();
            a.setCompanyList(new LinkedList<Company>());
            a.setPersonList(new LinkedList<Person>());
        }
        a.setStreet(av.getStreet());
        a.setHouseNumber(av.getHouseNumber());
        a.setFlatNumber(av.getFlatNumber());
        a.setCity(cityDAO.getCity(av.getCityId()));
 
        return a;
    }
    
}
а View у меня такой AddressView
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
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package phonebook.view;
 
import java.util.LinkedList;
import java.util.List;
import phonebook.entity.Address;
import phonebook.entity.Company;
import phonebook.entity.Person;
 
 
public class AddressView {
    private Long addressId;
    private String street;
    private Integer houseNumber;
    private Integer flatNumber;
    private Long cityId;
    private List<PersonView> personList;
    private List<CompanyView> companyList;
 
    public AddressView(Address a) {
        this.addressId = a.getAddressId();
        this.street = a.getStreet();
        this.houseNumber = a.getHouseNumber();
        this.flatNumber = a.getFlatNumber();
        this.cityId = a.getCity().getCityId();
        
        this.personList = new LinkedList<PersonView>();
        List<Person> pList = a.getPersonList();
        for (Person p : pList) {
            personList.add(new PersonView(p));
        }
        
        this.companyList = new LinkedList<CompanyView>();
        List<Company> cList = a.getCompanyList();
        for (Company c : cList) {
            companyList.add(new CompanyView(c));
        }
    }
 
    public Long getAddressId() {
        return addressId;
    }
 
    public Long getCityId() {
        return cityId;
    }
 
    public List<CompanyView> getCompanyList() {
        return companyList;
    }
 
    public Integer getFlatNumber() {
        return flatNumber;
    }
 
    public Integer getHouseNumber() {
        return houseNumber;
    }
 
    public List<PersonView> getPersonList() {
        return personList;
    }
 
    public String getStreet() {
        return street;
    }
 
    public void setAddressId(Long addressId) {
        this.addressId = addressId;
    }
 
    public void setCityId(Long cityId) {
        this.cityId = cityId;
    }
 
    public void setCompanyList(List<CompanyView> companyList) {
        this.companyList = companyList;
    }
 
    public void setFlatNumber(Integer flatNumber) {
        this.flatNumber = flatNumber;
    }
 
    public void setHouseNumber(Integer houseNumber) {
        this.houseNumber = houseNumber;
    }
 
    public void setPersonList(List<PersonView> personList) {
        this.personList = personList;
    }
 
    public void setStreet(String street) {
        this.street = street;
    }
    
    
    
}
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.05.2014, 10:59
Лучший ответ Сообщение было отмечено DonSlockZ как решение

Решение

Я так понял класс AddressView это объект, который вы будите передавать с клиента на сервер.
Неочень понятно как вы используете ваш фасад. Например слой DAO у вас имплементирован статическими методами, но фасад нет. То есть вы будите его сами создавать всегда? Или сделаете его singleton?

Аннотация @Service никак не влияет на ход вашей программы. Она лишь поможет вам т.к Spring возьмет на себя работу по синхронизации, созданию и всему жизненному циклу объекта.
То есть если вам нужно использовать сервис из другого слоя, вы просто пишите

Java
1
2
@Autowired
MyService service;
и дальше уже используете service. Вам неважно кто и как его создал.

Цитата Сообщение от DonSlockZ Посмотреть сообщение
На тот момент я не хотел забивать голову ещё и сервером приложений.
Судя по написанному коду это и есть сервер.

Добавлено через 9 минут
UPD. Посмотрел книгу по ссылке. Там используются довольно устаревшие методы работы со spring. Теперь понятно почему вы запутались. По-сути @Service делает то же что в примере в книге делает файл xml

XML
1
2
3
<bean name="professionFacade" class="students.facade.ProfessionFacade">
        <property name="dao" ref="professionDAO_1"/>
    </bean>
Spring тут создает объект со всеми его зависимостями и управляет им. Просто такая конфигурация менее удобна чем аннотации. Вобщем ваш Facade и есть сервис.
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
26.05.2014, 19:09  [ТС]
Аннотация @Service никак не влияет на ход вашей программы. Она лишь поможет вам т.к Spring возьмет на себя работу по синхронизации, созданию и всему жизненному циклу объекта.
То есть если вам нужно использовать сервис из другого слоя, вы просто пишите
@Autowired
MyService service;
и дальше уже используете service. Вам неважно кто и как его создал.
...
По-сути @Service делает то же что в примере в книге делает файл xml
Выходит так, что я могу пометить класс фасада аннотацией @Service, а его поля с DAO и Facade как @Autowired и spring сам выберет для объектов нужную реализацию DAO и Facade, или нужно указать? Я из ваших слов понял, что мне xml с бинами не нужен в случае с аннотациями.

Судя по написанному коду это и есть сервер.
Ого, сам того не осознавая практически написал сервер. То есть, я теперь могу просто реализовать api для общения клиента с сервером?
А классы view и entity просто можно скопировать для клиента на Android?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.05.2014, 22:01
Цитата Сообщение от DonSlockZ Посмотреть сообщение
spring сам выберет для объектов нужную реализацию DAO и Facade, или нужно указать?
Если у вас только одна реализация интерфейса, то спринг сам поймет что её нужно использовать. Если реализаций несколько, то надо будет указать @Qualifier("className") где className имя класса с нужной реализацией.

Цитата Сообщение от DonSlockZ Посмотреть сообщение
То есть, я теперь могу просто реализовать api для общения клиента с сервером?
да

Цитата Сообщение от DonSlockZ Посмотреть сообщение
А классы view и entity просто можно скопировать для клиента на Android?
Вам нужно разработать протокол по которому вы будите общаться с клиентом. Если это будет RMI то скорее всего вам понадобятся классы которые вы передаете на стороне клиента. Все зависит от выбранной технологии и реализации.

ps. Entity никуда передавать ненадо. Передаются только те объекты, которые используются для общения. То есть вы получаете entity из БД и на основе его строите ваш объект для передачи (view в вашем случае, но вообще такие объекты имеют постфикс Dto (data transfer object)
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
26.05.2014, 23:19  [ТС]
Если у вас только одна реализация интерфейса, то спринг сам поймет что её нужно использовать. Если реализаций несколько, то надо будет указать @Qualifier("className") где className имя класса с нужной реализацией.
Я захотел протестить, написал следующий класс Main. Но @Autowired не помог создать объект. NullPointerException возникает в строке cityFacade.addCity(cityView); , очевидно что cityFacade = null. Если его создать вручную, исключение возникает в других местах, где я применил @Autowired.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
    
    @Autowired
    @Qualifier("CityFacadeImpl")
    static CityFacade cityFacade;
    
    public static void main(String[] args) {
        
        City city = new City();
        city.setName("Челябинск");
        city.setCountry("Россия");
        city.setPhoneCode("666");
        CityView cityView = new CityView(city);
        cityFacade.addCity(cityView);
        
        CityView cityView2 = cityFacade.getCity(new Long(1));
        System.out.println(cityView2.getName() + " # " + cityView2.getCountry() + " # " + cityView2.getPhone_code());
        
    }
}


Entity никуда передавать ненадо. Передаются только те объекты, которые используются для общения. То есть вы получаете entity из БД и на основе его строите ваш объект для передачи (view в вашем случае, но вообще такие объекты имеют постфикс Dto (data transfer object)
Спасибо, запомню на будущее.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
26.05.2014, 23:56
Вам надо поменить фасад аннотацией @Service а так же сконфигурировать спринг сканить пакет, где находится этот класс.
0
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
27.05.2014, 01:21  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Вам надо поменить фасад аннотацией @Service
Вы хотели сказать пометить аннотацией @Service? Если так, то фасад уже имеет такую аннотацию.
Java
1
2
3
4
5
6
7
8
9
@Service
public class CityFacadeImpl implements CityFacade{
    @Autowired
    private AddressFacade addressFacade;
    @Autowired
    private CityDAO cityDAO;
 
//методы add, update и т.д
}
А это 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
    <bean name="phoneBookDAO" class="phonebook.dao.PhoneBookDAO" abstract="true">
        <property name="template" ref="hibernateTemplate" />
    </bean>
    
    <bean name="addressDAO" class="phonebook.dao.AddressDAOImpl" parent="phoneBookDAO">
    </bean>
    
    <bean name="cityDAO" class="phonebook.dao.CityDAOImpl" parent="phoneBookDAO">
    </bean>
 
    <bean name="companyDAO" class="phonebook.dao.CompanyDAOImpl" parent="phoneBookDAO">
    </bean>
 
    <bean name="companyPhonesDAO" class="phonebook.dao.CompanyPhonesDAOImpl" parent="phoneBookDAO">
    </bean>
 
    <bean name="personDAO" class="phonebook.dao.PersonDAOImpl" parent="phoneBookDAO">
    </bean>
    
    <bean name="rubricDAO" class="phonebook.dao.RubricDAOImpl" parent="phoneBookDAO">
    </bean>
    
    <bean name="addressFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.AddressFacade">
                <property name="cityDAO" ref="cityDAO" />
                <property name="addressDAO" ref="addressDAO" />
                <property name="companyFacade" ref="companyFacade" />
                <property name="personFacade" ref="personFacade" />
            </bean>
        </property>
    </bean>
    
    <bean name="cityFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.CityFacade">
                <property name="cityDAO" ref="cityDAO" />
                <property name="addressFacade" ref="addressFacade" />
            </bean>
        </property>
    </bean>
    
    <bean name="companyFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.CompanyFacade">
                <property name="companyDAO" ref="companyDAO" />
                <property name="rubricDAO" ref="rubricDAO" />
                <property name="addressDAO" ref="addressDAO" />
                <property name="companyPhonesFacade" ref="companyPhonesFacade" />
            </bean>
        </property>
    </bean>
    
    <bean name="companyPhonesFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.CompanyPhonesFacade">
                <property name="companyPhonesDAO" ref="companyPhonesDAO" />
                <property name="companyDAO" ref="companyDAO" />
            </bean>
        </property>
    </bean>
    
    <bean name="personFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.PersonFacade">
                <property name="personDAO" ref="personDAO" />
                <property name="addressDAO" ref="addressDAO" />
            </bean>
        </property>
    </bean>
    
    <bean name="rubricFacade" parent="abstractTransactionProxy">
        <property name="target">
            <bean class="phonebook.facade.RubricFacade">
                <property name="rubricDAO" ref="rubricDAO" />
                <property name="companyFacade" ref="companyFacade" />
            </bean>
        </property>
    </bean>
 
</beans>


Добавлено через 32 минуты
Хотя, получается я использую те самые старые методы, о которых вы говорили, причём одновременно с @Autowired.
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
сконфигурировать спринг сканить пакет, где находится этот класс
Как надо сконфигурировать файл, чтобы Спринг сканировал пакет? Дайте направление, где же копать.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
27.05.2014, 02:01
http://www.mkyong.com/spring/s... omponents/ -- оба метода
http://docs.spring.io/spring-j... 06s02.html -- конфигурация из java классов
1
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
27.05.2014, 23:03  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
http://www.mkyong.com/spring/spring-...ng-components/ -- оба метода
http://docs.spring.io/spring-j... 06s02.html -- конфигурация из java классов
Почитал, сконфигурировал как надо, хоть и со 150-ой попытки =)
Были проблемы с ленивой инициализацией, но я просто её выключил, ибо это дополнительные сложности, когда мне требуется уложиться в сроки.
Спасибо! Вы мне очень помогли со всем разобраться.
Надеюсь с реализацией Api для обмена данными клиента и сервера у меня столько вопросов не возникнет.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
27.05.2014, 23:58
незачто
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2014, 23:58
Помогаю со студенческими работами здесь

Имеется база данных MySQL (с сайта), в ней данные о товаре, как проще всего сделать онлайн Android-приложение
Имеется база данных mysql(с сайта), в ней данные о товаре. Как сделать онлайн андроид приложение для быстрого поиска товаров по этой базе...

Glassfish - Приложение в корне домена а не в ./MyProject/
Приветствую уважаемые форумчане. Я не знаком с Glassfish и поэтому есть маленький вопрос. Например есть домен http://MyDomain.ru/ и...

После рестарта GlassFish перестает видеть веб приложение
Создал war задеплоил ./asadmin deploy test.war, но после рестарта домена пропадает страница (ошибка 404), которая успешно принимала...

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае - &quot;RTFM&quot; и точка. Так вот, официального мануала, где есть ответ на...

Приложение вылетает на android 6.0 и ниже, сделанное в Android Studio
На андроиде 7.0 и выше все работает. А на 6ом андроиде и ниже вылетает без ошибок. В интернете подобного много, но что не пробовал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru