Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
36 / 13 / 2
Регистрация: 12.10.2009
Сообщений: 421

Оценить написание кода

24.07.2011, 14:26. Показов 1932. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста оцените кусочек кода, что и как не стоит писать и т.д. И как лучше.

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
class index extends Not {
 
    public function _index ()
    {
 
           $this->titl_mod=$this->lang['title']['view'];
           
           $view=null;
           $db= new db;
           
           $sql=$db->query("SELECT * FROM page");
           
           while ($row=$sql->fetch(PDO::FETCH_ASSOC)) $view[]=$row;
 
           $this->tpl->assign('view',$view);
           
           
           
           $this->contect=$this->tpl->load_root('page/view.html');
           
    }
        
       public function edit ($id=null)
        {
            
            $id=(int)$id[1];
 
            $db= new db;
            $this->titl_mod=$this->lang['title']['edit'];
            
            $sql=$db->query("SELECT * FROM page WHERE id='".$id."' LIMIT 1");
            
            if($sql->rowCount()==1){
                
                if(!isset($_POST['edit'])) $_POST=$sql->fetch(PDO::FETCH_ASSOC);
                
                echo 5;
 
                $this->_change($id);
                
            } else $this->error();
            
            
        }
        
        public function add ()
        {
            $this->titl_mod=$this->lang['title']['add'];
            $this->tpl->assign('add',1);
            $this->_change();
            
            
        }
        
        private function _change ($id=null)
        {
            $error=null;
            $not=null;
            
            if(isset($_POST['add']) or isset($_POST['edit']) )
            {
                if(input('name'))
                {
                    if(input('url','a-zi') or $_POST['url']=='')
                    {
                       
                        $data=array(
                            
                            'name'=>$_POST['name'],
                            'url'=>$_POST['url'],
                            'text'=>$_POST['text'],
                            'keywords'=>$_POST['keywords'],
                            'description'=>$_POST['description']
                        );
                        
                            if(isset($_POST['edit'])) $not=" and NOT id='".(int)$id."'";
                            
                            $db= new db;
                           
                            if($db->res('page', " url=".$db->quote($_POST['url']).$not." LIMIT 1 ")==0)
                            {   
                   
                                if(isset($_POST['add'])) 
                                {
                                    $db->insert('page', $data);
                                    $error['success']=$this->lang['success']['add'];
                                    $this->refrech('',1);
                                }
                                if (isset($_POST['edit'])) 
                                {
                                    $db->update('page', $data," id='".(int)$id."' LIMIT 1");
                                    $error['success']=$this->lang['success']['edit'];
                                    $this->refrech('',1);
                                }
 
                            } else $error['error']=$this->lang['error']['replace'];
                        
                        
                    } else $error['url']=$this->lang['error']['url'];
                    
                } else $error['name']=$this->lang['error']['name'];
            }
            
            $this->tpl->assign('error',$error);
            
            $this->contect=$this->tpl->load_root('page/add.html');
        }
        
        public function delete ($id=null)
        {
            $db= new db;
            $db->exec("DELETE FROM page WHERE id='".(int)$id[1]."' LIMIT 1");
            $this->refrech(HOST.'admin/page',0);
        }
    
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2011, 14:26
Ответы с готовыми решениями:

Оценить качество кода написанного фреймворка
Прошу оценить то что пока написал: https://github.com/DeadMoras/tc-framework Роутеры - до этого свои были, вроде работали, но там...

Где можно оценить качество своего кода?
Здравствуйте! Как оценить качество своего кода?

Оценить качество кода (читабельность и эффективность)
Написал javascript библиотеку для уведомлений (notifications). github repo https://github.com/madtaras/madtaras-toast Главный файл...

13
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
25.07.2011, 00:00
Хорошо, попробую.
Сразу говорю код не нравится.
1. Не люблю когда в языках из юникс эгиды используют стилистику майкрософт.... зачем вы переносите открывающую фигурную скобочку на одну строку ниже, названия функции/метода?... Обычно я бы даже читать не стал такой код уже только из-за этого... если конечно это не связанно с работой...
2. если вы планируете использовать метод только внутри класса или его потомков, то не стоит определять его как public.
3. блок if else, меня учили, что при любых обстоятельствах, даже если после if с условием идет одна строчка кода, все равно брать ее в фигурные скобки(подобно тому как я советую в п.1). Сам же я часто дописываю еще и else... даже если там ничего нету... это помогает/окупается мне потом, при редактировании кода.
4. где свойства класса?
5. где контруктор класса?
6. в PDO::query не нужно печатать строку sql запроса, для этого можно вывести отдельную переменную заполнив ее аккуратно(построчно с $sql .= 'text'; )
7. Так же не стоит беря строку запроса в двойные кавычки " соединять точкой с переменными... в двойные кавычках переменные видны и так. Я же советую одинарные кавычки.
8. инициализация массивов мена в этом коде тоже пугает... зачем пропускать целую строку... ст.69
9. функции/методы должны что-то возвращать... очень желательно... у меня они возвращают обычно булево значение... редко что-то иначе... для этого есть свойства...
10. ст.14, я понимаю, что минимализм так и плещет, но плохо читаемо... ставьте блоки фигурных скобок(п.1)
11. Используйте один главный класс для коннекта к БД, который наследуется от PDO. ЗАтем от него наследуйте другие классы. Можно создавать классы по схемам СуБД postgresql, а потом наследовать от них классы для таблиц в этих схемах. Обычно для приложений построенных по технологии ajax я делаю именно так.
12. Ну и как бонус, могу посоветовать в классах, к таблицам(одинаковые названия), создавать только 3-4 public метода, для select, insert, update, delete и можно еще alter, но я бы советовал его использовать в классах ближе к корню структуры ОПП иерархии...

Я уже не использую PDO, не вижу смысла, если использовать на максимум postgresql то врядли можно будет легко перейти на другую СуБД.
0
25.07.2011, 00:01

Не по теме:

нужно удалить.. какой-то глюк что ле...

0
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 43
25.07.2011, 08:33
1) Нету конструктора.
2) $this->lang['title']['view'] - вы не можете знать, есть ли в этом массиве такой ключ или нет. Либо используйте перед этим isset(), либо создавайте ещё один уровень абстракции для доступа к этому массиву.
3) new db; - используйте new db();. Этого можно не делать, но код выглядит более симпатичным, когда написан в одном стиле. Плюс в нормальном(начинайте ненавидеть) языке программирования тебе не дадут использовать new %CLASSNAME% без скобочек.
4) Зачем Вам целых 3 экземпляра класса db?
Теперь общая стилистика кода, которая, как я считаю, полное говно:
1) Зачем было создавать _index? Зачем эта чёрточка в начале метода? Не обобщённо. Такие скобочки нужно делать(и делают) тогда, когда у метода или проперти должна быть какая нить отличительная черта(в венгерской нотации, например, так обозначают защищённые методы). Я знаю что в <5.3.5(или какая там?) метод, названный одинаково с классом - конструктор, но с этим можно что то поделать(обновить php, переименовать метод, класс)
2) Код слабо читабелен из-за отсутствия многих пробелов и наличия их в других не нужных местах. То же самое относиться и к переносам строки.
3) Дичайше страдает орфография. Вы хотя бы словарём пользуйтесь. Ну что за titl, concect, refrech? Убивать.
@DenQ
Не докапывайтесь до предпочтений к стилю кода. Более 50% Вашего сообщения - именно претензии к стилю, тема всё таки о ООП
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
25.07.2011, 09:58
Цитата Сообщение от Archon64 Посмотреть сообщение
Не докапывайтесь до предпочтений к стилю кода. Более 50% Вашего сообщения - именно претензии к стилю, тема всё таки о ООП
Просили оценить написание кода, я оценил... Просили бы оценить алгоритм, я бы оценил алгоритм. @
0
36 / 13 / 2
Регистрация: 12.10.2009
Сообщений: 421
25.07.2011, 10:43  [ТС]
Цитата Сообщение от DenQ Посмотреть сообщение
Хорошо, попробую.
Сразу говорю код не нравится.
1. Не люблю когда в языках из юникс эгиды используют стилистику майкрософт.... зачем вы переносите открывающую фигурную скобочку на одну строку ниже, названия функции/метода?... Обычно я бы даже читать не стал такой код уже только из-за этого... если конечно это не связанно с работой...

Увидил такой стиль и использовал его, больше не буду )


2. если вы планируете использовать метод только внутри класса или его потомков, то не стоит определять его как public.

Он не использоваться в потомках, а вызывается. Если вы использовали CodeInteger

3. блок if else, меня учили, что при любых обстоятельствах, даже если после if с условием идет одна строчка кода, все равно брать ее в фигурные скобки(подобно тому как я советую в п.1). Сам же я часто дописываю еще и else... даже если там ничего нету... это помогает/окупается мне потом, при редактировании кода.


Смотря какая ситуация я думаю. Допустим надо проверить существует ли переменная если да то 1 а если нет то 0ж

$t=(isset($t)) ? 1:0;

Вприницпе понятно все, здесь обязательность должен присутствовать else (т.е 0) , а где нужно просто проерить 1 условия то просто else, А если большие строки if else то тогда использовать их.



4. где свойства класса?

Свойство тут не нужны, т.е отписал в 2 пункте. пример
site.ru/edit

Ну вот он обратиться к методу edit




5. где контруктор класса?

Отписал выше он там не нужен)

6. в PDO::query не нужно печатать строку sql запроса, для этого можно вывести отдельную переменную заполнив ее аккуратно(построчно с $sql .= 'text'; )



Типа так

$sql.="SELECT ";
$sql.="test";
$sql.=" FROM uu";

Согласен это удобно если длинный запрос, но тогда почему не так
$sql.="SELECT
test
FROM uu";


7. Так же не стоит беря строку запроса в двойные кавычки " соединять точкой с переменными... в двойные кавычках переменные видны и так. Я же советую одинарные кавычки.
А разница в чем это как влияет на скорость и т.д ?

8. инициализация массивов мена в этом коде тоже пугает... зачем пропускать целую строку... ст.69


Да не стоит, просто код бывает генерируется автоматом. но это пустяки



9. функции/методы должны что-то возвращать... очень желательно... у меня они возвращают обычно булево значение... редко что-то иначе... для этого есть свойства...


Из сходя 2 раздела, мне не нужно ничего возвращать.



11. Используйте один главный класс для коннекта к БД, который наследуется от PDO. ЗАтем от него наследуйте другие классы. Можно создавать классы по схемам СуБД postgresql, а потом наследовать от них классы для таблиц в этих схемах. Обычно для приложений построенных по технологии ajax я делаю именно так.


У меня 1 класс для бд который расширяет PDO называется db


12. Ну и как бонус, могу посоветовать в классах, к таблицам(одинаковые названия), создавать только 3-4 public метода, для select, insert, update, delete и можно еще alter, но я бы советовал его использовать в классах ближе к корню структуры ОПП иерархии...

у меня одинаковые)

Я уже не использую PDO, не вижу смысла, если использовать на максимум postgresql то врядли можно будет легко перейти на другую СуБД.

И что в нем такого плохого ? почему же не использовать его


Добавлено через 43 секунды
Цитата Сообщение от DenQ Посмотреть сообщение
Просили оценить написание кода, я оценил... Просили бы оценить алгоритм, я бы оценил алгоритм. @
Пожалуйста оцените алгоритм = )

Добавлено через 9 минут
1) Нету конструктора.

он не нужен

2) $this->lang['title']['view'] - вы не можете знать, есть ли в этом массиве такой ключ или нет. Либо используйте перед этим isset(), либо создавайте ещё один уровень абстракции для доступа к этому массиву.

Я его описываю руками я знаю что он есть, проверять всегда это лишняя время да и бессмысленно если ты его описываешь вручную

3) new db; - используйте new db();. Этого можно не делать, но код выглядит более симпатичным, когда написан в одном стиле. Плюс в нормальном(начинайте ненавидеть) языке программирования тебе не дадут использовать new %CLASSNAME% без скобочек.

учту спасибо

4) Зачем Вам целых 3 экземпляра класса db?

Каждый метод вызывается отдельно, смотяр как вы обратиться по урлу
Пример:

site.ru/edit
site.ru/delete

Тут он обратиться оп методам delete and edit. Мне не зачем просто так соединяться с бд




Теперь общая стилистика кода, которая, как я считаю, полное говно:
1) Зачем было создавать _index? Зачем эта чёрточка в начале метода? Не обобщённо. Такие скобочки нужно делать(и делают) тогда, когда у метода или проперти должна быть какая нить отличительная черта(в венгерской нотации, например, так обозначают защищённые методы). Я знаю что в <5.3.5(или какая там?) метод, названный одинаково с классом - конструктор, но с этим можно что то поделать(обновить php, переименовать метод, класс)

Да эти методы которые подчернуты они выказываться самыми первыми, то метода вызванными через браузер по урлу. И к нем нельзя обратиться к методом которые начинаются с _ через браузер.

2) Код слабо читабелен из-за отсутствия многих пробелов и наличия их в других не нужных местах. То же самое относиться и к переносам строки.

Можете пожалуйста показать хороший пример кода с расстановкой пробелов и т.д. на моем примере кода

3) Дичайше страдает орфография. Вы хотя бы словарём пользуйтесь. Ну что за titl, concect, refrech? Убивать.

Да я незнаю англ, и поэтому такая извращенность =)
0
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 43
25.07.2011, 11:25
он не нужен
Надо, не надо. Мы строим объект, а стартовый метод у объекта - конструктор. Он должен быть чисто логически, даже если пустой. Так же в нормальном языке тебе не дадут создать объект если у него нету конструктора
Тут он обратиться оп методам delete and edit. Мне не зачем просто так соединяться с бд
Соединение с БД - часть любой инициализации. Оно должно быть всегда, даже если не требуется. Плюс, при использовании постоянных соединений, новое соединение не открывается, а используется одно и тоже всегда. Так же глупо соединяться с БД из контроллера, ибо это совсем другой уровень и контроллер нужен совсем для другого.
Да я незнаю англ, и поэтому такая извращенность =)
Не знаете, а пытатесь. Либо не пытайтесь, либо сидите со словарём или пользуйтесь помощью людей, которые знают язык.
Можете пожалуйста показать хороший пример кода с расстановкой пробелов и т.д. на моем примере кода
Самое банальное - отступы. $a=1+2 -> $a = 1 + 2
Не нужны лишние переносы строки. Во всех местах должно быть либо if () либо if()
Я его описываю руками я знаю что он есть, проверять всегда это лишняя время да и бессмысленно если ты его описываешь вручную
Контроллер- не Вы. Он ничего не описывает, следовательно не может знать о том, что описано, а что нет.
0
Комбинатор
 Аватар для DenQ
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
25.07.2011, 11:41
EFEFEFEF, не понимаю я вас - что вам не нравится?
вы пришли сюда за советом, заранее дали понять людям что познания ваши желают лучшего... и теперь доказываете что вы во всем правы... даже в реально абсурдных местах... Я бы на вашем месте прислушался как минимум. Меня тоже когда-то как котенка тыкали в слабые места... да и сейчас бывает... не надо доказывать оправданность, своего кода, людям которые имеют больший опыт нежели у вас... Это как минимум неблагодарно с вашей стороны.

Добавлено через 4 минуты
Цитата Сообщение от EFEFEFEF Посмотреть сообщение
Я его описываю руками я знаю что он есть, проверять всегда это лишняя время да и бессмысленно если ты его описываешь вручную
На первом курсе я тоже доказывал преподу что я же знаю что возвращает моя функция, зачем делать проверки...
Проверки это как минимум хороший тон, а польза от них может быть очень существенной...
1
0 / 0 / 0
Регистрация: 06.07.2011
Сообщений: 3
25.07.2011, 11:57
Цитата Сообщение от EFEFEFEF Посмотреть сообщение
Пожалуйста оцените кусочек кода, что и как не стоит писать и т.д. И как лучше.

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
class index extends Not {
 
    public function _index ()
    {
 
           $this->titl_mod=$this->lang['title']['view'];
           
           $view=null;
           $db= new db;
           
           $sql=$db->query("SELECT * FROM page");
           
           while ($row=$sql->fetch(PDO::FETCH_ASSOC)) $view[]=$row;
 
           $this->tpl->assign('view',$view);
           
           
           
           $this->contect=$this->tpl->load_root('page/view.html');
           
    }
        
       public function edit ($id=null)
        {
            
            $id=(int)$id[1];
 
            $db= new db;
            $this->titl_mod=$this->lang['title']['edit'];
            
            $sql=$db->query("SELECT * FROM page WHERE id='".$id."' LIMIT 1");
            
            if($sql->rowCount()==1){
                
                if(!isset($_POST['edit'])) $_POST=$sql->fetch(PDO::FETCH_ASSOC);
                
                echo 5;
 
                $this->_change($id);
                
            } else $this->error();
            
            
        }
        
        public function add ()
        {
            $this->titl_mod=$this->lang['title']['add'];
            $this->tpl->assign('add',1);
            $this->_change();
            
            
        }
        
        private function _change ($id=null)
        {
            $error=null;
            $not=null;
            
            if(isset($_POST['add']) or isset($_POST['edit']) )
            {
                if(input('name'))
                {
                    if(input('url','a-zi') or $_POST['url']=='')
                    {
                       
                        $data=array(
                            
                            'name'=>$_POST['name'],
                            'url'=>$_POST['url'],
                            'text'=>$_POST['text'],
                            'keywords'=>$_POST['keywords'],
                            'description'=>$_POST['description']
                        );
                        
                            if(isset($_POST['edit'])) $not=" and NOT id='".(int)$id."'";
                            
                            $db= new db;
                           
                            if($db->res('page', " url=".$db->quote($_POST['url']).$not." LIMIT 1 ")==0)
                            {   
                   
                                if(isset($_POST['add'])) 
                                {
                                    $db->insert('page', $data);
                                    $error['success']=$this->lang['success']['add'];
                                    $this->refrech('',1);
                                }
                                if (isset($_POST['edit'])) 
                                {
                                    $db->update('page', $data," id='".(int)$id."' LIMIT 1");
                                    $error['success']=$this->lang['success']['edit'];
                                    $this->refrech('',1);
                                }
 
                            } else $error['error']=$this->lang['error']['replace'];
                        
                        
                    } else $error['url']=$this->lang['error']['url'];
                    
                } else $error['name']=$this->lang['error']['name'];
            }
            
            $this->tpl->assign('error',$error);
            
            $this->contect=$this->tpl->load_root('page/add.html');
        }
        
        public function delete ($id=null)
        {
            $db= new db;
            $db->exec("DELETE FROM page WHERE id='".(int)$id[1]."' LIMIT 1");
            $this->refrech(HOST.'admin/page',0);
        }
    
 
}
Код похож на синтаксис фраемворку коденжінер.
0
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 43
25.07.2011, 12:41
Цитата Сообщение от romanet Посмотреть сообщение
Код похож на синтаксис фраемворку коденжінер.
Кстати да, дичайше. Только не на синтаксис, а на стиль
0
0 / 0 / 0
Регистрация: 06.07.2011
Сообщений: 3
25.07.2011, 12:48
[QUOTE=Archon64;1865529]Кстати да, дичайше. Только не на синтаксис, а на стиль [/QUOT

0
36 / 13 / 2
Регистрация: 12.10.2009
Сообщений: 421
25.07.2011, 18:39  [ТС]
Цитата Сообщение от Archon64 Посмотреть сообщение
Кстати да, дичайше. Только не на синтаксис, а на стиль
По поводу стиля незнаю) я на примере его разработал свой фреймворк)

Добавлено через 1 минуту
Цитата Сообщение от DenQ Посмотреть сообщение
EFEFEFEF, не понимаю я вас - что вам не нравится?
вы пришли сюда за советом, заранее дали понять людям что познания ваши желают лучшего... и теперь доказываете что вы во всем правы... даже в реально абсурдных местах... Я бы на вашем месте прислушался как минимум. Меня тоже когда-то как котенка тыкали в слабые места... да и сейчас бывает... не надо доказывать оправданность, своего кода, людям которые имеют больший опыт нежели у вас... Это как минимум неблагодарно с вашей стороны.

Добавлено через 4 минуты

На первом курсе я тоже доказывал преподу что я же знаю что возвращает моя функция, зачем делать проверки...
Проверки это как минимум хороший тон, а польза от них может быть очень существенной...
Нет я не собирался доказывать, а прост прокомментировать=)
0
5 / 5 / 0
Регистрация: 11.04.2011
Сообщений: 43
25.07.2011, 20:54
я на примере его разработал свой фреймворк)
Боже мой...
1
36 / 13 / 2
Регистрация: 12.10.2009
Сообщений: 421
25.07.2011, 21:59  [ТС]
Цитата Сообщение от Archon64 Посмотреть сообщение
Боже мой...
( очередной велосипед со своими примочками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2011, 21:59
Помогаю со студенческими работами здесь

Рекурсивный поворот строки, оценить корректность кода
Всем привет. Закодил следующую ф-ю: void ReverseStringRecursion(char *str, int i = 0) { int size = strlen(str); if (i...

Написание кода
Есть алгоритм, но т.к я новенький в Java и в программирование для меня немного сложно написания кода, но есть алгоритм по которому надо...

Написание кода!
1) Даны натуральное число n и действительное x. Вычислить: S=sin x+ sin^2 x +…+sin^n x. 2)Написать программу, которая вычисляет...

написание кода
Помогите пожалуйста написать код к заданию: - предпоследняя буква в названии товара равна второй букве в ней

Написание кода
Здравствуйте у меня такая проблема. Я пробую написать программу на Java суть программы заключается в том что есть определенное расписание...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru