Форум программистов, компьютерный форум, киберфорум
PHP: Фреймворки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3

Кто как понимает MVC

02.11.2012, 10:43. Показов 2403. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
продолжение темы https://www.cyberforum.ru/php-... 76758.html
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Zend - написано все, что нужно для любого сайта. Полно документации на русском. MVC.
Зенд не разу не MVC зенд VC моделей там как бэ и нет.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2012, 10:43
Ответы с готовыми решениями:

Кто понимает скажить
Vsem privet. Vajno mojet kto znaet! Ya sluchayno najal na spam sylku naverno (neznay mojno li tak delat, no neznay chto delat, sylka pod...

Кто как понимает смысл такой фразы
"Нет технологии протеста, есть только технология прогресса"

Не могу понять задание, подскажите кто как понимает?
Привет. Такое задание "Рассчитать сумму соседних четных элементов массива." Допустим у меня массив 1 2 4 5 6 7 8 2 4, то что именно...

27
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 11:22
Zend_Db_Table - не модель по твоему?
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
02.11.2012, 11:43  [ТС]
>Zend_Db_Table нет это класс. А используют этот класс в контроле а должны использовать в модели. my_sqli тоже модель в таком случае и doctrina это тоже модель.
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 11:55
Мне хочется материться.
Класс контроллера - класс. Класс модели - класс. Класс вида - тоже класс.

Все что класс - то класс.

Модель - это классы, которые работают с данными. Пример: Zend_Db.
Контроллер - класс, управляющий передачей данных. Zend_Controller.
Вид - класс, отвечающий за вывод информации. Zend_View.

Иди и читай мануалы.
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
02.11.2012, 12:03  [ТС]
KoIIIeY, Иди лесом почитай что такое модель и её функции в шаблоне MVC потом называй классы моделями. К тому же модель это не класс это может быть функцией и пакетом и файлом в котором весь код оформлен в процедурном стиле.

Поэтому читай мануалы и не тупи.

Добавлено через 1 минуту
например в jsнет классов это совсем не значит что шаблон MVC там не реализуем.
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 12:07
basili4, я с тобой не согласен. Модель - это то, что изменяет данные. И она не обязана быть в процедурном стиле.
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
02.11.2012, 12:10  [ТС]
KoIIIeY, http://zendframework.ru/anonses/model-with-mvc
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 12:14
Не важно, кто как хочет делать. Возможность есть сделать по MVC - значит MVC фрэймворк.

Если бы возможности вообще не было - я бы с тобой согласился.
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
02.11.2012, 12:21  [ТС]
KoIIIeY, ZendFramework это VC это даже разработчики на zendframework говорят. то что ZF называют MVC это лишь маркетинг. Тут присутствует подмена понятий почитай статью если не согласен приведи пример использования модели а Zend_Db_Table это не модель.
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 12:29
Модель изменяет(сохраняет, удаляет, получает) данные.
Все, что меняет данные является моделью.
Все.
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
02.11.2012, 12:41  [ТС]
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Все, что меняет данные является моделью.
doctrina модель? mysql_query тоже изменяет данные это модель о_О ???
Код
PHP
1
2
3
4
<?php
echo "<input ......>";
mysql_query('insert тра ляля') or die(mysql_error()); 
?>
соответствует шаблону MVC. Есть представление
PHP
1
echo "<input ......>";
есть модель
PHP
1
mysql_query
есть контролер
PHP
1
2
3
4
<?php
echo "<input ......>";
mysql_query('insert тра ляля') or die(mysql_error()); 
?>
Так получается ? Или все же. >Модель включает все правила, ограничения и поведения, используемые для управления и работы с информацией
т.е. разработка приложение это разработка моделей и любое добавление функционала это разработка новой модели.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
02.11.2012, 15:29
омг... вы что прицепились к классу или функции

Все три составляющие: M, V и C - это просто понятия, для реализации любого из них может быть не просто класс или функция, может быть целое расширение написано или группа классов и функций вперемешку.

Когда разрабатывают вэб-приложение, разрабатывают не только модели, но и представления и контроллеры.
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
02.11.2012, 16:00
DrobyshevAlex, он не понимает.
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
03.11.2012, 16:29
Поддерживаю KoIIIeY
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
03.11.2012, 17:47  [ТС]
>DrobyshevAlex, он не понимает.
KoIIIeY, что он не понимает, что ты не в курсе что такое модель ? я это у же понял посему не деру глотку пытаясь тебе что то доказать с опытом поймешь
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
03.11.2012, 20:11
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Модель - это классы, которые работают с данными. Пример: Zend_Db.
Модель - это не средство для вытягивания данных из БД.
Модель - это объекты системы, содержащие бизнес-логику приложения.
Тот факт, что модель МОЖЕТ работать с базой, не делает класс для работы с БД моделью. И это описано в статье про "Толстые тупые уродливые контроллеры" - http://zendframework.ru/anonses/model-with-mvc

И что же получилось в итоге, разработчики придумали новую концепцию. ТТУК - Толстые тупые уродливые контроллеры (Fat Stupid Ugly Controllers, так назвал ее Pádraic ). Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, валидировал, записывал, а также передавал данные в Вид. Такой подход стал очень популярен, потому что использование таких контроллеров похоже на классическую практику использования отдельного php файла для каждой страницы приложения.

Большая часть фреймворков заявляет что они дают нам все три составляющие MVC архитектуры, на самом деле это не совсем так. Модель это нечто что мы должны реализовать сами, Модель по сути и является ядром нашего приложения

Таким образом фреймворки косвенно поощряют мнение о том что модель это что-то сродни уровня абстракции базы данных которые поставляются с фреймворком, например Zend_Db.
Вот пример модели из моего кода:
PHP
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
<?php
class Krugozor_Module_Advert_Model_Advert extends Krugozor_Base_Model
{
    protected static $db_field_prefix = 'advert';
 
    /**
     * Паттерн для создания md5-хэшей объявлений.
     *
     * @var string
     */
    protected static $text_hash_pattern = '#[а-яa-z]{4,}#i';
 
    protected static $model_attributes = array
    (
        'id' => array('db_element' => false,
                      'default_value' => 0,
                      'validators' => array(
                          'Common/Decimal' => array('unsigned' => false),
                      )
                     ),
 
        'id_user' => array('db_element' => true,
                           'db_field_name' => 'advert_id_user',
                           'default_value'=>-1,
                           'validators' => array(
                               'Common/EmptyNull' => array(),
                               'Common/Decimal' => array('unsigned' => true),
                           )
                          ),
 
        'active' => array('db_element' => true,
                          'db_field_name' => 'advert_active',
                          'default_value' => 1,
                          'validators' => array(
                              'Common/EmptyNull' => array(),
                              'Common/Decimal' => array('unsigned' => true),
                              'Common/IntRange' => array('min' => 0, 'max' => 1),
                          )
                         ),
 
        'type' => array('type' => 'Krugozor_Module_Advert_Type_AdvertType',
                        'db_element' => true,
                        'db_field_name' => 'advert_type',
                        'default_value' => 'sale',
                        'validators' => array(
                            'Common/EmptyNull' => array(),
                            'Common/VarEnum' => array('enum' => array('sale', 'buy')),
                        )
                       ),
 
        'category' => array('db_element' => true,
                            'db_field_name' => 'advert_category',
                            'default_value' => NULL,
                            'validators' => array(
                                'Common/Empty' => array(),
                                'Common/Decimal' => array('unsigned' => true),
                            )
                           ),
 
        'header' => array('db_element' => true,
                          'db_field_name' => 'advert_header',
                          'default_value' => NULL,
                          'validators' => array(
                              'Common/EmptyNull' => array(),
                              'Common/StringLength' => array('start'=> 0, 'stop' => Krugozor_Module_Common_Validator_StringLength::VARCHAR_MAX_LENGTH),
                          )
                         ),
 
        'text' => array('db_element' => true,
                        'db_field_name' => 'advert_text',
                        'default_value' => NULL,
                        'validators' => array(
                            'Common/EmptyNull' => array(),
                        )
                       ),
 
        'price' => array('db_element' => true,
                         'db_field_name' => 'advert_price',
                         'default_value'=> NULL,
                         'validators' => array(
                             'Common/Decimal' => array('unsigned' => true),
                         )
                        ),
 
        'price_type' => array('type' => 'Krugozor_Module_Advert_Type_PriceType',
                              'db_element' => true,
                              'db_field_name' => 'advert_price_type',
                              'default_value' => 'rur',
                              'validators' => array(
                                  'Common/EmptyNull' => array(),
                                  'Common/VarEnum' => array('enum' => array('rur', 'eur', 'usd')),
                              )
                             ),
 
        'email' => array('db_element' => true,
                         'db_field_name' => 'advert_email',
                         'default_value' => NULL,
                         'validators' => array(
                             'Common/StringLength' => array('start'=> 0, 'stop' => Krugozor_Module_Common_Validator_StringLength::VARCHAR_MAX_LENGTH),
                             'Common/Email' => array(),
                         )
                        ),
 
        'phone' => array('db_element' => true,
                         'db_field_name' => 'advert_phone',
                         'default_value' => NULL,
                         'validators' => array(
                             'Common/StringLength' => array('start'=> 0, 'stop' => Krugozor_Module_Common_Validator_StringLength::VARCHAR_MAX_LENGTH),
                         )
                        ),
 
        'icq' => array('db_element' => true,
                       'db_field_name' => 'advert_icq',
                       'default_value' => NULL,
                       'validators' => array(
                           'Common/Decimal' => array('unsigned' => true),
                           'Common/IntRange' => array('min' => 10000, 'max' => Krugozor_Module_Common_Validator_IntRange::PHP_MAX_INT_32)
                       )
                      ),
 
        'url' => array('db_element' => true,
                       'db_field_name' => 'advert_url',
                       'default_value' => NULL,
                       'validators' => array(
                           'Common/StringLength' => array('start'=> 0, 'stop' => Krugozor_Module_Common_Validator_StringLength::VARCHAR_MAX_LENGTH),
                           'Common/Url' => array(),
                       )
                      ),
 
        'user_name' => array('db_element' => true,
                             'db_field_name' => 'advert_user_name',
                             'default_value' => NULL,
                             'validators' => array(
                                 'Common/StringLength' => array('start'=> 0, 'stop' => Krugozor_Module_Common_Validator_StringLength::VARCHAR_MAX_LENGTH),
                             )
                            ),
 
        'main_email' => array('db_element' => true,
                              'db_field_name' => 'advert_main_email',
                              'default_value' => 1,
                              'validators' => array(
                                  'Common/EmptyNull' => array(),
                                  'Common/Decimal' => array('unsigned' => true),
                                  'Common/IntRange' => array('min' => 0, 'max' => 1),
                              )
                             ),
 
        'main_phone' => array('db_element' => true,
                              'db_field_name' => 'advert_main_phone',
                              'default_value' => 1,
                              'validators' => array(
                                  'Common/EmptyNull' => array(),
                                  'Common/Decimal' => array('unsigned' => true),
                                  'Common/IntRange' => array('min' => 0, 'max' => 1),
                              )
                             ),
 
        'main_icq' => array('db_element' => true,
                            'db_field_name' => 'advert_main_icq',
                            'default_value' => 1,
                            'validators' => array(
                                  'Common/EmptyNull' => array(),
                                  'Common/Decimal' => array('unsigned' => true),
                                  'Common/IntRange' => array('min' => 0, 'max' => 1),
                            )
                           ),
 
        'main_url' => array('db_element' => true,
                            'db_field_name' => 'advert_main_url',
                            'default_value' => 1,
                            'validators' => array(
                                'Common/EmptyNull' => array(),
                                'Common/Decimal' => array('unsigned' => true),
                                'Common/IntRange' => array('min' => 0, 'max' => 1),
                            )
                           ),
 
       'main_user_name' => array('db_element' => true,
                              'db_field_name' => 'advert_main_user_name',
                              'default_value' => 1,
                              'validators' => array(
                                  'Common/EmptyNull' => array(),
                                  'Common/Decimal' => array('unsigned' => true),
                                  'Common/IntRange' => array('min' => 0, 'max' => 1),
                              )
                             ),
 
       'place_country' => array('db_element' => true,
                                'db_field_name' => 'advert_place_country',
                                'default_value' => 0,
                                'validators' => array(
                                    'Common/Decimal' => array('unsigned' => true),
                                )
                               ),
 
       'place_region' => array('db_element' => true,
                               'db_field_name' => 'advert_place_region',
                               'default_value' => 0,
                               'validators' => array(
                                   'Common/Decimal' => array('unsigned' => true),
                               )
                              ),
 
       'place_city' => array('db_element' => true,
                             'db_field_name' => 'advert_place_city',
                             'default_value' => 0,
                             'validators' => array(
                                 'Common/Decimal' => array('unsigned' => true),
                             )
                            ),
 
       'create_date' => array('type' => 'Krugozor_Module_Common_Type_Datetime',
                                'db_element' => true,
                                'db_field_name' => 'advert_create_date',
                                'default_value' => 'now'),
 
       'edit_date' => array('type' => 'Krugozor_Module_Common_Type_Datetime',
                             'db_element' => true,
                             'db_field_name' => 'advert_edit_date',
                             'default_value' => null),
 
       'view_count' => array('db_element' => true,
                             'db_field_name' => 'advert_view_count',
                             'default_value' => 0,
                             'validators' => array(
                                 'Common/Decimal' => array('unsigned' => true),
                             )
                            ),
 
       'hash' => array('db_element' => true,
                       'db_field_name' => 'advert_hash',
                       'validators' => array()
                      ),
    );
 
    /**
     * explicit_method для неявной генерации хэша объявления.
     *
     * @param string $text
     * @return string
     */
    public function _setText($text)
    {
        $this->_setHash($text);
 
        return $text;
    }
 
    public function _setUrl($url)
    {
        return $url === 'http://' ? NULL : $url;
    }
 
    /**
     * Инвертирует активность объявления.
     *
     * @param void
     * @return Module_Advert_Model_Advert
     */
    public function invertActive()
    {
        $this->setActive($this->getActive() ? 0 : 1);
 
        return $this;
    }
 
    /**
     * Возвращает объект DateInterval, указывающий сколько осталось до-
     * или уже прошло времени после- времени create_date + $hour часов.
     *
     * @access public
     * @param int $hour колчество часов
     * @return DateInterval
     */
    public function getExpireRestrictionUpdateCreateDate($hour=1)
    {
        $interval = new DateInterval('P0Y0DT'.$hour.'H0M');
        $t_date = clone $this->getCreateDate();
        $t_date->add($interval);
 
        $now = new Krugozor_Module_Common_Type_Datetime();
        return $now->diff($t_date);
    }
 
    /**
     * Устанавливает свойство create_date в значение
     * текущего времени - 1 секунда.
     *
     * @access public
     * @param void
     * @return void
     */
    public function setCurrentCreateDateDiffSecond()
    {
        $now = new Krugozor_Module_Common_Type_Datetime();
        $now->setTimestamp(time()-1);
        $this->setCreateDate($now);
    }
 
    /**
     * Создёт хэш объявления на основании текста объявления.
     *
     * @param $string
     * @return Module_Advert_Model_Advert
     */
    protected function _setHash($string)
    {
        preg_match_all(self::$text_hash_pattern, $string, $matches);
        $this->hash = md5(implode('', $matches[0]));
 
        return $this;
    }
}
- модель тут знает, что она в себе может содержать, модель описывает ограничения и правила валидации при наполнении модели данными, в модели я определил бизнес-логику, которая и применяется к этой модели.

Вообще, определение "модель" прекрасно описано у фаулера http://ooad.asf.ru/Pattern.aspx?IdKat=7&IdPat=5
В своих наихудших проявлениях бизнес-логика бывает чрезвычайно сложной, с множеством правил и условий, оговаривающих различные варианты использования и особенности поведения системы. Для облегчения именно таких трудностей и предназначены объекты. Типовое решение модель предметной области предусматривает создание сети взаимосвязанных объектов, каждый из которых представляет некую осмысленную сущность – либо такую крупную, как промышленная корпорация, либо настолько маленькую, как строка формы заказа.
Ну и советую все же почитать эту книгу:

0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.11.2012, 20:21
Василий Макогон, ну если судить именно по фразе
Модель - это классы, которые работают с данными. Пример: Zend_Db.
То тут не сказано что именно с данными с БД

Они вообще спорят не понятно о чём. Оба говорят что класс - не значит модель а модель не значит класс, и оба спорят что это не так :-D

Вот пример:
Цитата Сообщение от basili4 Посмотреть сообщение
Zend_Db_Table нет это класс. А используют этот класс в контроле а должны использовать в модели.
Тут звучит как будто модель не может быть представлена в виде класса, на что и был ответ
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Класс контроллера - класс. Класс модели - класс. Класс вида - тоже класс.
Все что класс - то класс.
На что ответ
Цитата Сообщение от basili4 Посмотреть сообщение
К тому же модель это не класс это может быть функцией и пакетом и файлом в котором весь код оформлен в процедурном стиле.
а потом
Цитата Сообщение от KoIIIeY Посмотреть сообщение
И она не обязана быть в процедурном стиле.
Где говорилось что обязана?
Почему модель не может быть классом?)

Вообщем это спор не о чём

Можно расширить класс ПДО и будет вам модель, хотя этои не правильно будет.
А можно вообще класс не делать, и это можно назвать моделью

И естественно в модели может использоваться класс для работы с бд или наследовать его.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
03.11.2012, 20:40
И естественно в модели может использоваться класс для работы с бд
Да конечно может, но дело не в том. Дело в том, что произошла подмена понятий. Моделью действительно часто называют источник данных - Zend_Db, mysq_query или PDO.
На самом же деле "код для работы" с СУБД к модели никакого отношения не имеет.

Лично я изначально понял суть MVC только после того, как понял паттерн Data Mapper - http://www.design-pattern.ru/p... apper.html

http://www.design-pattern.ru/i/data-mapper.gif

— это программная прослойка, разделяющая объект и БД. Его обязанность — пересылать данные между ними и изолировать их друг от друга. При использовании Data Mapper'а объекты не нуждаются в знании о существовании БД. Они не нуждаются в SQL-коде, и (естественно) в информации о структуре БД.
теперь я искренне считаю, что что бы понять MVC надо написать свой Data Mapper. Будет ясно видно, где у вас модель, а где СУБД.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.11.2012, 20:44
На сколько я вижу, у них спор вообще не о функциях модели, а о том что же такое модель: класс, функция, или файл с простым кодом
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
03.11.2012, 20:46
нет, у них спор о том, является ли код для выборки данных из базы - моделью.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2012, 20:46
Помогаю со студенческими работами здесь

кто понимает
пожалуйста посмотрите программу и сделайте ее рабочей очень надо сама не могу файл по этой теме ...

Кто понимает в инженерке!
Кто разбирается в инженерке и может построить простенькую проекцию с сечением за вознаграждение. Пишите в личку.

кто понимает в api vk
http://vk.com/page-1_2369497 вот там есть sig. с ним надо помочь. кто знает, разъясните мне что делать Добавлено через 23 часа 49...

Кто понимает это
Добрый день Помогите плиз понять, что значить в этом коде param в функции function dValue(i,param)? И local v = param or ''C'' разве...

Кто понимает в написании программ C#?
Кто сможет выручить и помочь сделать программы на C#?до этого работал только на delphi, теперь дали задачу за неделю написать около 14...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru