- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
<?php include_once("routing" .DIRECTORY_SEPARATOR . "Router.php");?>
<?php include_once("task" . DIRECTORY_SEPARATOR . "Task.php");?>
<?php include_once("db" . DIRECTORY_SEPARATOR . "DB.php");?>
<?php include_once("model" . DIRECTORY_SEPARATOR . "Model.php");?>
<?php
class App{
public static $webuser = null;
public static $config;
public static $routing;
public static $DB;
public static $document_root;
public static function run($config){
//config
self::$config = $config;
/**
* init database
*/
$db = new DB();
$db->connect(self::$config['db']);
self::$DB = $db;
/**
* Run task
*/
$request = Router::getRequest(self::$config['default_task']);
$task_path = self::$document_root . DIRECTORY_SEPARATOR . "tasks" . DIRECTORY_SEPARATOR . $request . ".php";
if(file_exists($task_path )){
include_once($task_path);
$task = new $request();
$task->init();
}else {
throw new Exception("File don't exists");
}
}
public static function isGuest(){
if(is_null(self::$webuser)){
return true;
}
return false;
}
}
?>
oaoaoammm 04.12.2020 14:07 # +3
... написал матёрый пхпшник и пошел обновлять либу, потому что там имена доменных зон захардкожены.
... написал матёрый пхпшник и пошел дальше писать ОРМ на «РНР» для каждого сайта отдельно.
cykablyad 04.12.2020 14:14 # +1
зачем в 2020 году поддерживать что-то кроме "/"? даже "Windows" поддерживает прямые слеши
bormand 04.12.2020 14:14 # +1
При запуске внешних программ не всегда прокатывает т.к. многие тулы парсят /опции и охуевают от / посреди путей. А в остальных местах -- да, и / сойдёт.
cykablyad 04.12.2020 14:16 # +1
надо просто все пути в кавычки хуярить, а без них шиндовс может и на обычном пути обосраться, если там например пробел есть
P.S. спасибо виндовсу и его апи говна с argv в одну строку
guest6 04.12.2020 14:28 # 0
bormand 04.12.2020 14:29 # 0
guest6 04.12.2020 14:30 # 0
https://www.isis.stfc.ac.uk/Pages/vms-user-manual.pdf
2.5
bormand 04.12.2020 14:31 # 0
guest6 04.12.2020 14:31 # 0
gost 05.12.2020 12:02 # +3
https://govnokod.ru/27149#comment600000
bormand 05.12.2020 13:07 # 0
1024-- 05.12.2020 13:34 # 0
guest6 05.12.2020 12:11 # +1
MAKAKA 04.12.2020 14:20 # +2
A: пыхоперхоть должна страдать
cykablyad 04.12.2020 14:22 # +1
MAKAKA 04.12.2020 14:22 # +1
1024-- 04.12.2020 16:34 # 0
* URI
* Filesystem
* Windows
* Linux
* Флаг "ОДНОУРОВНЕВЫЙ" или levels=?.
Чтобы можно было с помощью одной и той же абстракции написать сервер (Filesystem + URI, ОДНОУРОВНЕВЫЙ для предотвращения питунши вида static + '/../../../../../file'), утилиту и прочую питуншю (автопердолинг с пробелами), в том числе экспорт в другие платформы (флаги Win/Lin).
cykablyad 04.12.2020 16:37 # +1
1024-- 04.12.2020 16:40 # 0
bormand 04.12.2020 16:44 # 0
* URI
Всё остальное -- нинужное легаси. Пусть конвертится в нужных точках (при запуске бинарей и т.п.)
1024-- 04.12.2020 16:59 # 0
bormand 04.12.2020 17:03 # 0
gost 04.12.2020 16:45 # 0
Кстати, в ЙАЖЕ уже изобрели: https://docs.oracle.com/javase/8/docs/api/java/net/URI.html.
MAKAKA 04.12.2020 17:02 # 0
CHayT 04.12.2020 16:58 # 0
MAKAKA 04.12.2020 16:59 # 0
path = Path("/foo/bar/gi")
и потом
path.asOsSpecific
всё
1024-- 04.12.2020 17:03 # 0
MAKAKA 04.12.2020 17:05 # 0
path.asUnix
path.asMacOsClassic
Also, URI не обязан быть файлом и путем же
bormand 04.12.2020 17:08 # 0
З.Ы. URI (не путать с URL) вообще не обязан на что-то реальное указывать. Это абстрактная айдишка.
1024-- 04.12.2020 17:17 # 0
> З.Ы. URI (не путать с URL)
Мне для вебтушни чисто URI не нужны, поэтому меня интересует не абстрактушня, а конкретно URL и пути в ОС.
MAKAKA 04.12.2020 17:20 # 0
1024-- 04.12.2020 18:39 # +1
MAKAKA 04.12.2020 17:28 # +2
Это как если бы меня заставили крутить головку привода или открывать странички в SSD прежде, чем подключить файл.
итд
1024-- 04.12.2020 18:46 # +1
А от иерархии в путях и урлах сложно избавиться, иначе библиотеки для урлов и путей не нужны.
Path('a/b/c') преобразуется в Path(['a','b','c']) или в join(BasePath, join(Path('a'), join(Path('b'), Path('c')))) или в аналогичное, а потом питушится в конкретный путь с теми или иными слешами.
Это гораздо удобнее, чем писать кучу жойнов или кучу ' + OLOLO_CEnAPATOP + '.
1024-- 04.12.2020 18:48 # +1
Или делает вид в интерпейсе. Может, эта питушня всё хранит в этом же луникс-формате и только в винде чуть тормозит на импорте/экспорте.
oaoaoammm 04.12.2020 18:58 # 0
Проблемы начинаются, когда какая-то библиотека написана под винду и использует обратные слеши, при этом в самом языке для обозначения иерархии используются прямые слеши. И начинается цирк с переводом одного формата в другой )))
Правда я такого уже очень давно не видел.
bormand 04.12.2020 19:02 # +1
Собственно как и с кодировками.
MAKAKA 04.12.2020 21:20 # +1
Юзаешь везде например джавий char, а конвертишь его перед выводом.
Юзаешь везде Path, и конвертишь перед выводом.
Но пыхосмегма не умеет в абстракции. Они из GET параметров удаляют DELETE чтобы SQL не сломать, какие уж тут абстракции
MAKAKA 04.12.2020 21:19 # 0
Это сёмантический слешик, виртуальный слешик, а не реальный.
1024-- 04.12.2020 22:26 # +1
guest6 04.12.2020 22:38 # 0
bormand 04.12.2020 22:42 # 0
guest6 04.12.2020 22:48 # 0
MAKAKA 04.12.2020 22:53 # 0
bormand 04.12.2020 22:55 # 0
MAKAKA 04.12.2020 23:03 # 0
bormand 04.12.2020 23:13 # +1
MAKAKA 04.12.2020 23:16 # +1
В двенадцать лет это нормально. Закон "фостерс" (c)
guest3 05.12.2020 19:42 # 0
guest6 04.12.2020 23:08 # 0
bormand 04.12.2020 23:09 # 0
Ну да. Но не поэтому, а просто потому что в крестах нельзя для джвух встроенных типов оператор перегрузить.
guest6 04.12.2020 23:13 # 0
bormand 04.12.2020 23:15 # 0
Для литералов const char* вот нельзя, к сожалению. Но обычно путь один хер начинается с какой-то переменной. Так что это не сильно напрягает.
1024-- 04.12.2020 23:20 # 0
А потом и питушню Хиндли-Милнера, чтобы пердолинг с шаблонами был приятнее.
bormand 04.12.2020 23:23 # 0
bormand 04.12.2020 23:12 # +1
Внутри там всегда может быть юниксовый путь. Или массив компонентов. Ты всё равно не узнаешь.
MAKAKA 04.12.2020 23:14 # 0
КУРОЧКА использует разделитель "ы", а ПЕТУШОК -- ":"
А на винды и юниксы тебе пофиг
bormand 04.12.2020 23:17 # +1
guest6 04.12.2020 23:18 # 0
bormand 04.12.2020 23:21 # +1
Тогда я при выводе для твоей оси конверчу его в //. А для винды в \.
А если в твоей оси / можно в именах, я могу заэкранировать его во внутреннем представлении. А при конвертации в юникс сказать что так низя, путь хуёвый.
MAKAKA 04.12.2020 23:22 # +1
Смотри: Я хочу сохранить некую строку в хранилище Foo.
Так случилось, что в хранилище символ Ы -- служебный.
Потому я перед помещением в хранилище заменяю Ы на другой символ.
А перед извлечением заменяю обратно.
guest6 04.12.2020 23:27 # 0
bormand 04.12.2020 23:29 # 0
А хранить можно любые символы. Экранировку никто не отменял.
guest6 04.12.2020 23:31 # 0
bormand 04.12.2020 23:32 # 0
Ну и для текущей оси можно zero copy сделать.
1024-- 04.12.2020 23:35 # 0
guest6 04.12.2020 23:36 # 0
))))))))))))
guest6 04.12.2020 23:37 # 0
guest6 04.12.2020 23:37 # +2
MAKAKA 05.12.2020 00:57 # 0
MAKAKA 05.12.2020 00:57 # 0
1024-- 04.12.2020 23:29 # 0
Допустим, существует JSON. И он ещё не сломался от того, что у каких-то питузов разделители массивов - запятые, кавычки, скобочки или набор букв "null". Вся эта питушня может вместиться в одну строку внутри JSON. А потом этот JSON можно серилизовать в другую строку с JSON.
Строку 6 раз попердолило и распердолило, а ничего не сломалось ни на каком шаге:
Сишка выдерживает символ '\\' или '\"' внутри строки, такую строку можно снова положить в строку.
bormand 04.12.2020 23:30 # 0
1024-- 04.12.2020 23:33 # 0
bormand 04.12.2020 23:35 # 0
1024-- 04.12.2020 23:37 # 0
bormand 04.12.2020 23:47 # 0
1024-- 04.12.2020 23:51 # 0
https://youtu.be/-Jh0EN1De4Q
1024-- 05.12.2020 00:10 # 0
Кстати, гайки добавляют для веса или для массы?
У человека есть как минимум два варианта проверки солидности питушни:
1. Положить на руку и прочувствовать, насколько сильно она притягивается к ближайшей большой массе. (P=GmM(r^-2), M меняется от планеты к планете вместе с весом)
2. Помотать питушню рукой и проверить, как сильно нужно попердолиться, чтобы питушня металась туда-сюда. (m=F/a - F не зависит от M и не меняется от планете к планете - массовый критерий)
Как мне кажется, привычнее весовой критерий. Но массовый критерий может применяться для мелкой питушни, которую не сильно притягивает текущая планета.
Изменится ли оценка солидности питушни, когда люди заселят много разных планет и построят телепорт, позволяющий "превышать" скорость света сквозь дополнительное измерение? Метод "подержать на ладошке" будет неудобен при частой смене планеты.
Будет ли создан генератор веса для стариков, которые привыкли взвешивать питушню на ладошке?
guest6 04.12.2020 23:35 # 0
1024-- 04.12.2020 23:44 # 0
MAKAKA 04.12.2020 23:21 # 0
MAKAKA 04.12.2020 22:45 # 0
MAKAKA 04.12.2020 21:27 # 0
https://www.bloomberg.com/news/articles/2020-12-04/chinese-scientists-claim-breakthrough-in-quantum-computing-race
bormand 04.12.2020 22:46 # +1
Хм, т.е. это больше девайс для неломаемой квантовой криптографии чем наоборот.
Чуваки выбрали задачу о фотонах, которая с помощью этих самых фотонов легко решается за секунды. А для классического компа это NP и миллиарды лет.
Т.е. классический комп в принципе не способен предсказать выхлоп этой хреновины.
g: Gaussian boson sampling