unknown 4 days ago
parent
commit
d3a3627376

+ 22 - 65
.obsidian/workspace.json

@@ -7,78 +7,35 @@
         "id": "d32e90214846329f",
         "type": "tabs",
         "children": [
-          {
-            "id": "4e65549c05eac768",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "hardcore web development/11. SQL/Дата и время.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Дата и время"
-            }
-          },
-          {
-            "id": "990ef808e2f4beef",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "hardcore web development/11. SQL/SQL настройка.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "SQL настройка"
-            }
-          },
-          {
-            "id": "be93e7f6373f1d1d",
-            "type": "leaf",
-            "state": {
-              "type": "markdown",
-              "state": {
-                "file": "hardcore web development/11. SQL/Псевдонимы.md",
-                "mode": "source",
-                "source": false
-              },
-              "icon": "lucide-file",
-              "title": "Псевдонимы"
-            }
-          },
           {
             "id": "9dc8c633db81c6b0",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "English/Homework/Homework 5.md",
+                "file": "ROTEK/Devlink 070.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "Homework 5"
+              "title": "Devlink 070"
             }
           },
           {
-            "id": "70b2ee7a5436e50c",
+            "id": "0f1109505357e2ce",
             "type": "leaf",
             "state": {
               "type": "markdown",
               "state": {
-                "file": "ROTEK/Devlink 070.md",
+                "file": "hardcore web development/11. SQL/JOIN/INNER JOIN.md",
                 "mode": "source",
                 "source": false
               },
               "icon": "lucide-file",
-              "title": "Devlink 070"
+              "title": "INNER JOIN"
             }
           }
-        ],
-        "currentTab": 3
+        ]
       }
     ],
     "direction": "vertical"
@@ -101,7 +58,7 @@
                 "autoReveal": false
               },
               "icon": "lucide-folder-closed",
-              "title": "Файловый менеджер"
+              "title": "Files"
             }
           },
           {
@@ -149,7 +106,7 @@
       }
     ],
     "direction": "horizontal",
-    "width": 230.5
+    "width": 205.5
   },
   "right": {
     "id": "cf92ccf43e96a53d",
@@ -201,32 +158,35 @@
   },
   "left-ribbon": {
     "hiddenItems": {
-      "switcher:Меню быстрого перехода": false,
-      "graph:Граф": false,
-      "canvas:Создать новый холст": false,
-      "command-palette:Открыть палитру команд": false,
-      "markdown-importer:Импорт Markdown-файлов": false
+      "switcher:Open quick switcher": false,
+      "graph:Open graph view": false,
+      "canvas:Create new canvas": false,
+      "command-palette:Open command palette": false,
+      "markdown-importer:Open format converter": false
     }
   },
   "active": "9dc8c633db81c6b0",
   "lastOpenFiles": [
+    "hardcore web development/11. SQL/JOIN/INNER JOIN.md",
+    "hardcore web development/11. SQL/JOIN/LEFT и RIGHT OUTER JOIN.md",
+    "ROTEK/Devlink 070.md",
+    "hardcore web development/11. SQL/Псевдонимы.md",
+    "hardcore web development/11. SQL/SQL настройка.md",
+    "hardcore web development/11. SQL/Дата и время.md",
+    "hardcore web development/11. SQL/JOIN",
+    "English/Homework/Homework 5.md",
     "linux/server.md",
     "linux/linux common.md",
     "linux/gogs.md",
     "linux/GS server.md",
-    "English/Homework/Homework 5.md",
     "todo/Счета.md",
     "todo/Разное.md",
     "todo/Задачи по направлениям.md",
     "proGit.md",
     "link.md",
-    "hardcore web development/11. SQL/INNER JOIN.md",
-    "hardcore web development/11. SQL/Псевдонимы.md",
-    "hardcore web development/11. SQL/SQL настройка.md",
     "Pasted image 20250413063157.png",
     "hardcore web development/11. SQL/Изменение структуры таблиц.md",
     "hardcore web development/11. SQL/Последовательности.md",
-    "hardcore web development/11. SQL/Дата и время.md",
     "English/Texts/Text 8.md",
     "English/Homework/Homework 1.md",
     "English/Homework",
@@ -235,10 +195,8 @@
     "English/Texts/Text 0.md",
     "English/Texts/Text 7.md",
     "English/Texts",
-    "ROTEK/Devlink 070.md",
     "English/Texts/Text 2.md",
     "hardcore web development/11. SQL/Задание.md",
-    "hardcore web development/11. SQL/Boolean и всякое.md",
     "configs/gl_wg.conf",
     "configs/Текстовый документ.txt",
     "English/img/20-13.JPEG",
@@ -254,7 +212,6 @@
     "Python/telegram bot",
     "English/img/13-5.JPEG.~tmp",
     "English/img/13-4.JPEG.~tmp",
-    "docs/sniffers_texto.pdf",
-    "English/img/9-4.jpg.~tmp"
+    "docs/sniffers_texto.pdf"
   ]
 }

+ 22 - 0
ROTEK/Devlink 070.md

@@ -3,9 +3,31 @@
 - charge_on - включение зарядка суперкапов и батареи
 - sc_on - включение повышающего преобразователя
 
+~={yellow}Важное=~
+- Теперь повышающем преобразователем управляет Allwinner. Т.е. нужно вносить изменения в основной код. Раньше питание процессора обрубалось Artery.
+
 ~={yellow}Проблемы=~
 - Большой ток утечки (51мкА) в цепи измерения напряжения на SuperCap. Постоянно.
 
+~={yellow}Управление gpio=~
+```bash
+echo 1 > /sys/devices/platform/bt7kgpio/charger.charge_on/value
+```
+
+~={yellow}Плата 069. Коэффициенты ADC.=~
+1. 3.25 - напряжения на суперкапах верхняя точка
+
+~={yellow}Сигнал наличия 220V=~
+- PA_6
+
+  // первый аналоговый вход
+  // второй аналоговый вход
+  // третий аналоговый вход (проверить)
+  // четвертый аналоговый вход
+  // вход current limiter
+  // выход current limiter
+  // верхняя точка super cup
+  // средняя точка super cup
 
 
 0,327868

+ 109 - 0
hardcore web development/11. SQL/JOIN/INNER JOIN.md

@@ -0,0 +1,109 @@
+~={yellow}Основные виды JOIN=~
+* INNER JOIN
+* LEFT OUTER JOIN
+* RIGHT OUTER JOIN
+* FULL OUTER JOIN
+* CROSS JOIN
+
+~={yellow}Создадим таблицы для тестов=~
+```sql
+drop table if exists book_category, author, book cascade;
+
+create table author (
+	author_id bigint generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 3),
+	description text check (length(description) >= 30)
+);
+
+create table book_category (
+	category_id int generated always as identity primary key,
+	name varchar(150) not null check (length(name) >= 2)
+);
+
+create table book (
+	book_id bigint generated always as identity primary key,
+	name varchar(255) not null check (length(name) >= 2),
+	author_id bigint references author(author_id),
+	description text check (length(description) >= 30),
+	cover varchar(255),
+	category_id int references book_category(category_id),
+	created_at timestamp
+);
+
+INSERT INTO book_category ("name") VALUES
+('Художественая литература'),
+('Литература по программированию'),
+('Литература по фотографии');
+
+INSERT INTO author ("name",description) VALUES
+('Михаил Шолохов','Великий русский советский писатель, журналист и киносценарист.'),
+('Лусиану Рамальо','Автор замечательных книг по языку программирования Python.'),
+('Александр Пушкин','Русский поэт, драматург и прозаик, рассматривается как основоположник современного русского литературного языка.'),
+('Александр Беляев','Русский писатель-фантаст, один из основоположников советской научно-фантастической литературы.'),
+('Жюль Верн','Французский писатель, классик приключенческой литературы, один из основоположников жанра научной фантастики.'),
+('Борис Пастернак', 'Один из крупнейших русских поэтов XX века.');
+
+INSERT INTO book ("name",author_id,description,cover,category_id,created_at) VALUES
+('Тихий Дон',1,'Одно из наиболее значительных, масштабных и талантливых произведений русскоязычной литературы, принесшее автору Нобелевскую премию.','https://cdn.rroom.io/17558b4d-59dd-4f8e-b2c7-51b0d7da5216.png',1,'2024-01-01 00:00:00'),
+('Python. К вершинам мастерства',2,'Лучшая книга по углубленному изучению Python.','https://cdn.rroom.io/2bee8345-a535-4fe3-add9-8db804ea89ae.png',2,'2024-01-02 00:00:00'),
+('Судьба человека',1,'Пронзительный рассказ о временах Великой Отечественной войны, одно из первых произведений советской литературы, в котором война показана правдиво и наглядною.','https://cdn.rroom.io/271755e5-046f-4842-85cf-4e22cb17b294.png',1,'2024-01-03 00:00:00'),
+('Капитанская дочка',3,NULL,NULL,1,'2024-01-04 00:00:00'),
+('Сказка о рыбаке и рыбке',3,NULL,NULL,1,'2024-01-05 00:00:00'),
+('Голова профессора Доуэля',4,NULL,NULL,1,'2024-01-06 00:00:00'),
+('Остров погибших кораблей',4,NULL,NULL,1,'2024-01-07 00:00:00'),
+('Путешествие к центру Земли',5,NULL,NULL,1,'2024-01-08 00:00:00'),
+('Дети капитана Гранта',5,NULL,NULL,1,'2024-01-09 00:00:00'),
+('Простой Python',NULL,NULL,NULL,NULL,'2024-01-10 00:00:00');
+```
+
+~={magenta}INNER JOIN=~ - это тип соединения таблиц, который возвращает строки, имеющие совпадения в обеих таблицах на основе указанного условия.
+
+```sql
+select b.name as book_name, a.name as author_name
+from book b
+inner join author a on b.author_id = a.author_id
+order by author_name, book_name;
+
+|book_name |author_name |
+|-----------------------------|----------------|
+|Голова профессора Доуэля |Александр Беляев|
+|Остров погибших кораблей |Александр Беляев|
+|Капитанская дочка |Александр Пушкин|
+|Сказка о рыбаке и рыбке |Александр Пушкин|
+|Дети капитана Гранта |Жюль Верн |
+|Путешествие к центру Земли |Жюль Верн |
+|Python. К вершинам мастерства|Лусиану Рамальо |
+|Судьба человека |Михаил Шолохов |
+|Тихий Дон |Михаил Шолохов |
+|Тихий Дон. Том 1 |Михаил Шолохов |
+|Тихий Дон. Том 2 |Михаил Шолохов |
+```
+
+~={yellow}Более короткая запись с использованием using=~
+
+```sql
+select b.name as book_name, a.name as author_name
+from book b
+inner join author a using(author_id)
+order by author_name, book_name;
+```
+
+То есть вместо on `b.author_id = a.author_id` можно писать `using(author_id)`. Есть мнение, что это вообще хороший повод называть первичные ключи в таблицах именно так, название сущности, подчеркивание, id, вместо просто id.
+
+То есть если бы в таблице авторов первичный ключ был бы не `author_id`, а `id`, то запрос пришлось бы писать только так:
+
+```sql
+select b.name as book_name, a.name as author_name
+from book b
+inner join author a on b.author_id = a.id
+order by author_name, book_name;
+```
+
+При этом можно записать тот же запрос и в таком синтаксисе, вообще без `JOIN`:
+
+```sql
+select b.name as book_name, a.name as author_name
+from book b, author a
+where b.author_id = a.author_id
+order by author_name, book_name;
+```

+ 0 - 0
hardcore web development/11. SQL/INNER JOIN.md → hardcore web development/11. SQL/JOIN/LEFT и RIGHT OUTER JOIN.md