- 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;
}
}
?>
... написал матёрый пхпшник и пошел обновлять либу, потому что там имена доменных зон захардкожены.
... написал матёрый пхпшник и пошел дальше писать ОРМ на «РНР» для каждого сайта отдельно.
зачем в 2020 году поддерживать что-то кроме "/"? даже "Windows" поддерживает прямые слеши
При запуске внешних программ не всегда прокатывает т.к. многие тулы парсят /опции и охуевают от / посреди путей. А в остальных местах -- да, и / сойдёт.
надо просто все пути в кавычки хуярить, а без них шиндовс может и на обычном пути обосраться, если там например пробел есть
P.S. спасибо виндовсу и его апи говна с argv в одну строку
https://www.isis.stfc.ac.uk/Pages/vms-user-manual.pdf
2.5
https://govnokod.ru/27149#comment600000
A: пыхоперхоть должна страдать
* URI
* Filesystem
* Windows
* Linux
* Флаг "ОДНОУРОВНЕВЫЙ" или levels=?.
Чтобы можно было с помощью одной и той же абстракции написать сервер (Filesystem + URI, ОДНОУРОВНЕВЫЙ для предотвращения питунши вида static + '/../../../../../file'), утилиту и прочую питуншю (автопердолинг с пробелами), в том числе экспорт в другие платформы (флаги Win/Lin).
* URI
Всё остальное -- нинужное легаси. Пусть конвертится в нужных точках (при запуске бинарей и т.п.)
Кстати, в ЙАЖЕ уже изобрели: https://docs.oracle.com/javase/8/docs/api/java/net/URI.html.
path = Path("/foo/bar/gi")
и потом
path.asOsSpecific
всё
path.asUnix
path.asMacOsClassic
Also, URI не обязан быть файлом и путем же
З.Ы. URI (не путать с URL) вообще не обязан на что-то реальное указывать. Это абстрактная айдишка.
> З.Ы. URI (не путать с URL)
Мне для вебтушни чисто URI не нужны, поэтому меня интересует не абстрактушня, а конкретно URL и пути в ОС.
Это как если бы меня заставили крутить головку привода или открывать странички в SSD прежде, чем подключить файл.
итд
А от иерархии в путях и урлах сложно избавиться, иначе библиотеки для урлов и путей не нужны.
Path('a/b/c') преобразуется в Path(['a','b','c']) или в join(BasePath, join(Path('a'), join(Path('b'), Path('c')))) или в аналогичное, а потом питушится в конкретный путь с теми или иными слешами.
Это гораздо удобнее, чем писать кучу жойнов или кучу ' + OLOLO_CEnAPATOP + '.
Или делает вид в интерпейсе. Может, эта питушня всё хранит в этом же луникс-формате и только в винде чуть тормозит на импорте/экспорте.
Проблемы начинаются, когда какая-то библиотека написана под винду и использует обратные слеши, при этом в самом языке для обозначения иерархии используются прямые слеши. И начинается цирк с переводом одного формата в другой )))
Правда я такого уже очень давно не видел.
Собственно как и с кодировками.
Юзаешь везде например джавий char, а конвертишь его перед выводом.
Юзаешь везде Path, и конвертишь перед выводом.
Но пыхосмегма не умеет в абстракции. Они из GET параметров удаляют DELETE чтобы SQL не сломать, какие уж тут абстракции
Это сёмантический слешик, виртуальный слешик, а не реальный.
В двенадцать лет это нормально. Закон "фостерс" (c)
Ну да. Но не поэтому, а просто потому что в крестах нельзя для джвух встроенных типов оператор перегрузить.
Для литералов const char* вот нельзя, к сожалению. Но обычно путь один хер начинается с какой-то переменной. Так что это не сильно напрягает.
А потом и питушню Хиндли-Милнера, чтобы пердолинг с шаблонами был приятнее.
Внутри там всегда может быть юниксовый путь. Или массив компонентов. Ты всё равно не узнаешь.
КУРОЧКА использует разделитель "ы", а ПЕТУШОК -- ":"
А на винды и юниксы тебе пофиг
Тогда я при выводе для твоей оси конверчу его в //. А для винды в \.
А если в твоей оси / можно в именах, я могу заэкранировать его во внутреннем представлении. А при конвертации в юникс сказать что так низя, путь хуёвый.
Смотри: Я хочу сохранить некую строку в хранилище Foo.
Так случилось, что в хранилище символ Ы -- служебный.
Потому я перед помещением в хранилище заменяю Ы на другой символ.
А перед извлечением заменяю обратно.
А хранить можно любые символы. Экранировку никто не отменял.
Ну и для текущей оси можно zero copy сделать.
))))))))))))
Допустим, существует JSON. И он ещё не сломался от того, что у каких-то питузов разделители массивов - запятые, кавычки, скобочки или набор букв "null". Вся эта питушня может вместиться в одну строку внутри JSON. А потом этот JSON можно серилизовать в другую строку с JSON.
Строку 6 раз попердолило и распердолило, а ничего не сломалось ни на каком шаге:
Сишка выдерживает символ '\\' или '\"' внутри строки, такую строку можно снова положить в строку.
https://youtu.be/-Jh0EN1De4Q
Кстати, гайки добавляют для веса или для массы?
У человека есть как минимум два варианта проверки солидности питушни:
1. Положить на руку и прочувствовать, насколько сильно она притягивается к ближайшей большой массе. (P=GmM(r^-2), M меняется от планеты к планете вместе с весом)
2. Помотать питушню рукой и проверить, как сильно нужно попердолиться, чтобы питушня металась туда-сюда. (m=F/a - F не зависит от M и не меняется от планете к планете - массовый критерий)
Как мне кажется, привычнее весовой критерий. Но массовый критерий может применяться для мелкой питушни, которую не сильно притягивает текущая планета.
Изменится ли оценка солидности питушни, когда люди заселят много разных планет и построят телепорт, позволяющий "превышать" скорость света сквозь дополнительное измерение? Метод "подержать на ладошке" будет неудобен при частой смене планеты.
Будет ли создан генератор веса для стариков, которые привыкли взвешивать питушню на ладошке?
https://www.bloomberg.com/news/articles/2020-12-04/chinese-scientists-claim-breakthrough-in-quantum-computing-race
Хм, т.е. это больше девайс для неломаемой квантовой криптографии чем наоборот.
Чуваки выбрали задачу о фотонах, которая с помощью этих самых фотонов легко решается за секунды. А для классического компа это NP и миллиарды лет.
Т.е. классический комп в принципе не способен предсказать выхлоп этой хреновины.
g: Gaussian boson sampling