- 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
interface PostRepository
{
public function save(Post $model);
}
class Post
{
protected $id;
protected $title;
protected $content;
public function setId(int $id)
{
$this->id = $id;
}
public function getId(): ?int
{
return $this->id;
}
public function setTitle(string $title)
{
$this->title = $title;
}
public function getTitle(): string
{
return $this->title ?: '';
}
public function setContent(string $content)
{
$this->content = $content;
}
public function getContent(): string
{
return $this->content ?: '';
}
}
Блядь, до чего ж отвратительный код. Говёность «PHP», тщательно и с извращённой любовью смешанная с ЙАЖАвским бойлерплейтом. Омерзительно.
https://habr.com/ru/post/505400/
>>> Как должны выглядеть модели?
gost 08.06.2020 20:51 # −1
3.14159265 08.06.2020 23:55 # 0
>protected
>public
Бочку варенья тому кто пропихнёт новый Йазык без вот такой дристни.
guest8 09.06.2020 00:04 # −999
3.14159265 09.06.2020 00:08 # 0
Никакие мудификаторы кроме var кмк не нужны.
Даже от стасика пользы нет особой, больше проблемы.
MAKAKA 09.06.2020 15:04 # 0
Там всё по умолчанию
* финальное
* закрытое
Нужен только модификатор val
Koko 09.06.2020 17:22 # 0
Попробуй коко-коко.
MAKAKA 12.06.2020 12:35 # 0
Вот тут он рассказал, как запустить apache+nginx. Зачем? Зачем?
https://habr.com/ru/post/346086/
>Если честно, я не понимаю откуда столько негатива.
ахахахах
bormand 12.06.2020 12:42 # 0
guest8 12.06.2020 12:45 # −999
bormand 12.06.2020 12:59 # 0
MAKAKA 12.06.2020 13:08 # 0
у него типа локально apache Тормозит для статики? серьезно?
bormand 12.06.2020 13:18 # 0
Выглядит вполне разумно, тем более как ты говоришь, это для локального запуска.
MAKAKA 12.06.2020 13:22 # 0
Если ты запускаешь все через apache + mod_php, то зачем поверх apache еще nginx?
Про локальный запуск он сам говорит
bormand 12.06.2020 13:24 # 0
У меня совсем-совсем проблем не будет при запуске их на противоположной конфигурации? Идеальная совместимость и никаких подводных камней? Не верю.
guest8 12.06.2020 13:26 # −999
bormand 12.06.2020 13:29 # 0
MAKAKA 12.06.2020 13:30 # 0
Docker production
По данному вопросу к сожалению я ничего сказать не могу, зато может сказать официальная документация.
Если у вас есть опыт использования docker на боевых проектах, то просьба поделиться своим опытом в комментариях: стоит ли, какие трудности и подводные камни у вас возникли и др. полезную информацию для молодых и неопытных.
bormand 12.06.2020 13:31 # 0
MAKAKA 12.06.2020 13:32 # 0
как видишь, он просто отдает им статику (причем весьма уныло, даже не настраивая кеш) а всё остальное тупо форвардит на apache.
bormand 12.06.2020 13:34 # 0
Какой хтакцесс )))
guest8 12.06.2020 13:36 # −999
gost 12.06.2020 13:36 # 0
Блядь, а это вообще нормальный способ отдавать статику? Не первый раз вижу такую волшебную строчку, но терзают меня смутные сомнения…
MAKAKA 12.06.2020 13:38 # 0
https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
Хотя я бы конечно сделал через content type, но я хз -- можно ли так в nginx
bormand 12.06.2020 13:38 # +1
guest8 12.06.2020 13:40 # −999
bormand 12.06.2020 13:40 # +1
З.Ы. Хотя если пыхомакаку не заставить срать в отдельный угол, то она и в еду себе насрёт.
MAKAKA 12.06.2020 13:42 # 0
Но пыхеры, как видишь, умеют только копировать готовые куски конфига даже не задумываясь "зачем?". Куда уж им до такой хуйни додуматься
nemyx 12.06.2020 15:32 # 0
Может быть, у него код, как у «Конардо», где всё в кучу.
MAKAKA 12.06.2020 15:35 # 0
внутри htdocs может лежать двадцать php файлов и картинки рядом и .htaccess
nemyx 12.06.2020 16:09 # 0
guest8 12.06.2020 16:10 # −999
nemyx 12.06.2020 16:18 # 0
В директории htdocs лежит единственный php-файл, а именно index.php, в котором ничего критического нет, только вызов bootstrap.php, который лежит вне htdocs.
Вот реальный пример из документации по первой версии фреймворка (специально выбрал самую старую), тут htdocs названа public:
https://framework.zend.com/manual/1.12/en/learning.quickstart.create-project.html
guest8 12.06.2020 16:48 # −999
nemyx 12.06.2020 17:01 # 0
guest8 12.06.2020 17:03 # −999
nemyx 12.06.2020 17:09 # 0
Интересно, для чего так делают. Чтобы в $_SERVER['DOCUMENT_ROOT'], $_SERVER['SCRIPT_NAME'], $_SERVER['PHP_SELF'] были определённые значения?
nemyx 12.06.2020 17:17 # +1
Ему не пофигу, где лежит index.php. Какой багор )))
gost 13.06.2020 01:20 # 0
Ебать… Слов нет.
nemyx 13.06.2020 01:37 # 0
Именно поэтому я за «PHP».
nemyx 12.06.2020 17:26 # 0
В ZF есть свойство $this->basePath, через которое можно узнать путь к статике. Иногда этот путь требуется (например, когда нужно упаковать css- и js-файлы или что-то сделать с картинками). Так вот фреймворк определяет путь к статике по положению скрипта index.php. Как в первой версии ZF какой-то дурак предложил, так оно осталось и в ZF2, и в ZF3, и в Laminas.
Какой анскилл )))
bormand 12.06.2020 17:34 # 0
nemyx 12.06.2020 17:37 # 0
https://github.com/hobodave/bundle-phu
guest8 12.06.2020 14:09 # −999
bormandinho 12.06.2020 14:18 # 0
guest8 12.06.2020 15:10 # −999
nemyx 12.06.2020 15:33 # 0
nemyx 12.06.2020 16:07 # 0
В пыхе не так много функций, которые зависят от типа интерпретатора.
Специально для FastCGI всего одна функция:
https://www.php.net/manual/ru/function.fastcgi-finish-request
Она отдаёт страницу пользователю, но не убивает контекст, а позволяет доделать фоновую задачу.
Для запуска из-под «mod_php» есть пачка функций:
https://www.php.net/manual/ru/book.apache.php
Но они не особо нужны. Разве что если сайт использует и другие модули «Apache», например, для конвертации документов или ещё какой-нибудь питушни.
Есть ещё пачка функций для «IIS» и для какого-то «Netscape» (вообще не представляю, что это за сервер).
Всё, больше ничего серверозависимого нет. Разве что конфиг самого сервера (например, могут быть дурацкие файлы .htaccess, которые требуют «Apache»).
guest8 12.06.2020 16:10 # −999
nemyx 12.06.2020 16:23 # 0
Зачем же тогда вообще нужен «Арасне»? Он нужен, только если проект использует какие-то нативные модули «Арасне», аналогов которых нет у «пдіпх», или файлы .htaccess, которые анскильная обезьяна не может перевести в конфиг «пдіпх». Всё, больше низачем.
Stallman 12.06.2020 16:29 # +1
nemyx 12.06.2020 16:56 # 0
Если у проекта куча точек входа, и каждая точка входа требует свои параметры рнр.іпі, то портировать его с «Арасне» на что-то другое нелегко. Придётся либо переносить настройку в рнр-файл (функция ini_set; в документации по параметру должен быть флаг PHP_INI_USER или PHP_INI_ALL), либо запускать несколько FastCGI-серверов, каждый со своими параметрами.
guest8 12.06.2020 16:44 # −999
gost 12.06.2020 20:53 # +1
Это чтобы не шкварить прекрасный «Nginx» дерьмом вроде «PHP». А «Апач» можно, «Апач» и сам, скажем так, не самый качественный продукт.
guest8 12.06.2020 21:50 # −999
Stallman 12.06.2020 16:22 # +1
nemyx 12.06.2020 16:34 # 0
KOPOHABuPYC 13.06.2020 00:27 # 0
nemyx 19.06.2020 05:12 # 0
https://www.php.net/manual/ru/book.htscanner.php
Расширение заброшено в 2012-м году, поддерживает только PHP 5.3-5.6.
nemyx 12.06.2020 16:58 # 0
>> fpm
FPM — это FastCGI process manager. FastCGI можно использовать с ним и без него. В первом случае детей рождает и убивает FPM, во втором случае детей рождает и убивает сервер («nginx», «lighttpd» и т. п.).
guest8 12.06.2020 16:59 # −999
nemyx 12.06.2020 17:05 # 0
А «lighttpd» может:
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI
TEH3OPHblu_nemyx 08.06.2020 20:52 # +1
guest8 08.06.2020 20:56 # −999
TEH3OPHblu_nemyx 08.06.2020 20:57 # 0
guest8 08.06.2020 20:58 # −999
bormand 08.06.2020 21:06 # 0
MAKAKA 08.06.2020 21:10 # 0
У Kotlin и C# таких проблем нет: там методы генерятся сами.
bormand 08.06.2020 21:15 # 0
>> Если ты не либу для других пишешь.
MAKAKA 08.06.2020 21:16 # 0
но опять таки: джавий блох не велит
Кстати
https://projectlombok.org/features/Data
В груви кстати тоже геттеры генерятся емнип.
3.14159265 08.06.2020 23:57 # 0
Не все знают, но в Йаже на методах интерфейса бублик можно не писать.
Автовывод.
Fike 09.06.2020 00:16 # +1
gost 09.06.2020 00:17 # +3
Звучит как форма онанизма у ООПушков.
3.14159265 09.06.2020 00:22 # +1
Оксюморон, да.
Но к этому я и подвожу.
Мудификаторы нахуй не нужны, если в языке уже есть интерфейсы.
Экспортировать из модуля методы через интерфейс (публичное).
Всё остальное делать видимым внутри мудуля (приватное).
3.14159265 09.06.2020 00:29 # 0
По сути выходят улучшенные .h-файлы с примесью ООП.
Опять всё лучшее придумано ещё в Сишке.
Desktop 09.06.2020 00:30 # 0
guest8 09.06.2020 10:52 # −999
Desktop 09.06.2020 11:38 # 0
jojaxon 09.06.2020 12:07 # 0
Desktop 09.06.2020 12:09 # 0
MAKAKA 12.06.2020 12:23 # 0
в жобе можно
TEH3OPHblu_nemyx 08.06.2020 21:12 # 0
Примерно так:
Вообще мне ?:'' не нравится. Вместо этой питушни можно было установить дефолтные значения полей.
Кстати, зачем в этой задаче геттеры и сеттеры? Почему нельзя поля сделать public, а не protected?
MAKAKA 08.06.2020 21:14 # +2
Потому что автор подсмотрел, что в джаве так делают, и тоже сделал. Мозга-то нету. Пыхер-с.
Но даже в жобе есть Ломбок
OlegUP 09.06.2020 11:01 # 0
https://www.youtube.com/watch?v=lfdAwl3-X_c
guest8 09.06.2020 11:03 # −999
frnnds 16.07.2021 15:23 # 0
Технически, так делают для защиты этих полей (данные можно проверять при их поступлении), тут это избыточно, говнокод.
gost 08.06.2020 21:07 # 0
MAKAKA 08.06.2020 21:12 # 0
У джанги это вообще через атрибуты решено:
с помощью магии))
gost 08.06.2020 21:17 # 0
«dataclass» — более мощный, универсальный и новый (>=3.7, ЕМНИП) инструмент для создания, собственно, датаклассов с (опционально) сложной логикой.
MAKAKA 08.06.2020 21:18 # 0
https://www.python.org/dev/peps/pep-0589/
gost 08.06.2020 21:24 # 0
Fike 09.06.2020 00:09 # +1
ёбаные анскилябры
3.14159265 09.06.2020 00:26 # 0
gost 09.06.2020 00:35 # 0
— ключ x1 испарился.
UPD:
3.14159265 09.06.2020 01:00 # +1
Да. Не учёл.
Ну это общая проблема, инвариантная языку.
>>> x1.x = 42
Разве нельзя запретить его мутировать?
А коли нельзя, то человек сам виноват.
Кстати именно поэтому я за умолчательную немутабельность и модификатор var.
Desktop 09.06.2020 01:09 # 0
3.14159265 09.06.2020 01:38 # 0
Жавашки к примеру так же обосрались, чему посвящена отдельная глава у Блоха.
guest8 09.06.2020 07:00 # −999
jojaxon 09.06.2020 08:05 # 0
Великий kill приди, память освободи!
bormand 09.06.2020 10:02 # 0
А в последней версии за каким-то хером прикрутили gc.
guest8 09.06.2020 11:18 # −999
nemyx 09.06.2020 11:22 # 0
3.14159265 09.06.2020 20:15 # 0
Desktop 09.06.2020 10:09 # 0
Если ты про время жизни, то освободился словарь, вместе с ним грохнули и ключи.
guest8 09.06.2020 10:11 # −999
bormand 09.06.2020 10:13 # 0
guest8 09.06.2020 10:15 # −999
bormand 09.06.2020 10:19 # +1
guest8 09.06.2020 10:20 # −999
bormand 09.06.2020 10:12 # 0
Desktop 09.06.2020 11:40 # 0
Там вообще можно хранить не объекты, а хеши, но тогда коллизии не разрулишь.
gost 09.06.2020 13:42 # 0
jojaxon 09.06.2020 13:45 # 0
gost 09.06.2020 13:49 # 0
Desktop 09.06.2020 13:46 # 0
gost 09.06.2020 13:52 # 0
Desktop 09.06.2020 13:53 # 0
Копирование это NSCopying и @property(copy).
gost 09.06.2020 13:55 # 0
Понятно.
Desktop 09.06.2020 13:57 # 0
gost 09.06.2020 14:01 # 0
Desktop 09.06.2020 14:04 # 0
Ты сначала пишешь, что в Питоне нет механизмов копирования произвольных объектов, а теперь, что можно руками всё копировать. Это как?
В ObjC тип, который ты хочешь использовать в качестве ключа в словаре, должен быть Equatable, Hashable и NSCopying. Все механизмы на столе. В питоне как?
gost 09.06.2020 14:13 # 0
Питоновскому дикту нужны __hash__() и __eq__() (N.B.: про cmp в начале ветки напиздел). Ещё ключи нельзя менять, иначе будет багор — т.е. либо они должны быть иммутабельными, либо их никто не должен трогать.
> Ты сначала пишешь, что в Питоне нет механизмов копирования произвольных объектов, а теперь, что можно руками всё копировать. Это как?
Я про встроенные механизмы, вроде копирующего конструктора из крестов. Но да, тут я не совсем прав: для этого есть магические методы __copy__() и __deepcopy__(). Тем не менее, некоторые объекты (вроде перечисленных выше сокетов и файлов) глубоко скопировать нельзя.
> В ObjC тип, который ты хочешь использовать в качестве ключа в словаре, должен быть Equatable, Hashable и NSCopying.
А NSCopying зачем?
Desktop 09.06.2020 14:18 # 0
В обжективе ещё есть NSHashTable и NSMapTable. Там своя атмосфера:
The hash table is modeled after NSSet with the following differences:
- It can hold weak references to its members.
- Its members may be copied on input or may use pointer identity for equality and hashing.
- It can contain arbitrary pointers (its members are not constrained to being objects).
gost 09.06.2020 14:24 # 0
Desktop 09.06.2020 14:26 # 0
gost 09.06.2020 14:32 # 0
Теперь, если мы изменим x1-x3, то внутри словаря изменится и ключ со всеми полагающимися баграми.
Вот если бы словарь мог узнавать, когда его ключи меняются, тогда было бы интереснее.
Desktop 09.06.2020 14:35 # +1
С произвольным объектом всё немного проще.
> Вот если бы словарь мог узнавать, когда его ключи меняются, тогда было бы интереснее.
- я давно не ковырялся в ObjC, не могу сказать про такие тонкости. Чисто технически это возможно при помощи KVO/KVC, но вызовет ещё больший оверхед.
gost 09.06.2020 14:40 # 0
Desktop 09.06.2020 14:45 # 0
Надо будет как-то поиграться с разными кейсами, как словарь будет эрогировать на такое.
Desktop 09.06.2020 21:03 # 0
Бриджинг между Dictionary и NSDictionary естественным образом накладывает некоторые ограничения на типы ключей.
Реализация протокола NSCopying не даёт ровным счётом ничего до того момента, пока класс не помечен как @objc. Если его пометить таким образом, то происходит копирование ключа в словарь и изменение изначального объекта не приводит к UB.
Нахуевертили, в общем.
3.14159265 09.06.2020 20:17 # 0
Честно говоря трудно представить себе долбоёбов, которые ложат в качестве ключа открытые объекты сокетов или файлов.
bormand 09.06.2020 20:19 # 0
Ну удобно же. Можно быстро найти контекст по сокету, с которого пришёл пакет. Я на сишке так делал.
Просто сравнивать надо ссылки на эти сокеты, а не их "содержимое". В джаве вроде так и делается по-умолчанию если ничего не перегружать?
3.14159265 09.06.2020 20:57 # 0
Да.
>Просто сравнивать надо ссылки на эти сокеты, а не их "содержимое".
Так зачем тогда «глубина»? Я же говорю сами объекты, а не ссылки.
guest8 09.06.2020 13:58 # −999
Desktop 09.06.2020 14:01 # 0
guest8 09.06.2020 14:04 # −999
Desktop 09.06.2020 14:06 # 0
gost 09.06.2020 14:21 # +3
> Питон такой язык
Не-а. Проблемы value/reference не касаться можно только в полностью иммутабельном языке (1024-- приде, ссылочную прозрачность наведе!). А в «Python» ссылки на мутабельные объекты приводят к регулярным баграм. Классические питоньи ссылочные багры:
Desktop 09.06.2020 14:23 # 0
3.14159265 09.06.2020 20:30 # 0
Багры от мутабельных ссылок есть во всех языках, где эти мутабельные ссылки используются.
Например С# (там же упоминание точно такой же траблы в js):
http://govnokod.ru/11946
3.14159265 09.06.2020 20:23 # 0
Но вот это просто багор классический:
>def add_to_list(value, lst=[]):
Сколько раз говорилось: сделайте скриптуху с умолчательной немутабельностью.
Может это сильно и не помогло бы.
А может программеру пришлось бы писать:
> return append(lst,value);
Или явно копировать объёкт.
В любом случае избавило бы от проёбов типа
И не сильно бы выбешивало, т.к. 80-90% переменных в методе обычно не меняются.
3.14159265 09.06.2020 20:59 # 0
Плюс там не будет циклической питушни.
Поэтому помимо отсутствия ссылочных проблем, бонусом идут ARC-friendly структуры данных, отстутствие зацикливания при сериализации и ненужность tracing gc.
Минус конечно, это постоянная борьба с немутабельностью.
gost 09.06.2020 14:02 # 0
guest8 09.06.2020 06:58 # −999
gost 09.06.2020 15:03 # 0
>>> A mapping object maps hashable values to arbitrary objects.
>>> An object is hashable if it has a hash value which never changes during its lifetime (it needs a __hash__() method), and can be compared to other objects (it needs an __eq__() method). Hashable objects which compare equal must have the same hash value.
gost 08.06.2020 21:04 # 0
Сразу представил, как аффтар будет делать «модель» с десятком свойств.
MAKAKA 08.06.2020 21:13 # 0
Он небось еще и круды руками пишет все
guest8 08.06.2020 21:26 # −999
TEH3OPHblu_nemyx 08.06.2020 21:41 # 0
Безо всяких setIq, setId.
Правда, придётся в кокококонструкторе сделать чуть-чуть бройлерплейта.
MAKAKA 08.06.2020 21:46 # +1
Бля, что с этим миром не так?! Структура с полями, инициализируемая сразу -- самое частоиспользуемое, самое родное, почему его нету из коробки в половине скриптухов кроме lua и js?
TEH3OPHblu_nemyx 08.06.2020 21:47 # 0
MAKAKA 08.06.2020 21:50 # 0
OCETuHCKuu_nemyx 08.06.2020 21:58 # 0
OCETuHCKuu_nemyx 08.06.2020 22:46 # +1
https://ideone.com/6XwEjJ
TEH3OPHblu_nemyx 08.06.2020 23:38 # 0
Desktop 08.06.2020 21:48 # 0
MAKAKA 08.06.2020 21:53 # 0
кста
в objc же были @property, там руками тоже можно было не пусать сеттеры и геттеры
или я пута.ю?
Desktop 08.06.2020 22:05 # 0
MAKAKA 08.06.2020 22:07 # 0
Desktop 08.06.2020 22:13 # 0
Desktop 08.06.2020 22:35 # 0
Мы тут огненно тёрли за инкапсуляцию как-то и пришли к выводу, что это вообще МАСТХЕВ, вот в твоей сисечке все поля видны, как пизда у молодой училки, а в пыхе поменял приват на vixenпротектед и gost доволен
3.14159265 09.06.2020 00:06 # +1
> высокоуровневый язык пхп
Вот сам хотел такой коммент написать.
MAKAKA 08.06.2020 22:17 # 0
Desktop 08.06.2020 22:37 # 0
Fike 09.06.2020 00:11 # 0
OCETuHCKuu_nemyx 08.06.2020 22:52 # −1
guest8 09.06.2020 06:56 # −999
guest8 09.06.2020 11:17 # −999
guest8 09.06.2020 11:37 # −999
phpBidlokoder2 09.06.2020 00:35 # −1
gost 09.06.2020 00:42 # 0
Koko 10.06.2020 18:14 # 0
MAKAKA 12.06.2020 12:13 # 0
jojaxon 12.06.2020 12:23 # 0
guest8 12.06.2020 12:43 # −999
OCETuHCKuu_nemyx 08.06.2020 22:53 # 0
gost 08.06.2020 23:38 # 0
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
3.14159265 09.06.2020 00:00 # +1
>if the number is divisible by 5
Кстати хорошая идея для модулей npm
3.14159265 08.06.2020 23:59 # 0
В 2к20 считается.
@Data is a convenient shortcut annotation that bundles the features of @ToString, @EqualsAndHashCode, @Getter / @Setter and @RequiredArgsConstructor together
In other words, @Data generates all the boilerplate that is normally associated with simple POJOs (Plain Old Java Objects)
guest8 09.06.2020 06:59 # −999
Fike 09.06.2020 00:02 # +1
> Под формулировкой "Модель — это исключительно бизнес-логика" подразумевается что модель — отражает сущности, данные и поведение предметной области, и никак не касается данных и объектов сервисного слоя и слоя приложения.
какой бизнес-объект без протекающих абстракций ))))
gost 09.06.2020 00:03 # 0
Fike 09.06.2020 00:04 # 0
действительно, кому нужен finally
phpBidlokoder2 09.06.2020 00:34 # 0
3.14159265 09.06.2020 01:12 # 0
Пайтух такой пайтух.
Нужно было поставить pip-модуль, pip install сломался.
Сообщает что «пайтух не может снести яйцо»:
Решение нашлось быстро:
https://stackoverflow.com/questions/35991403/pip-install-unroll-python-setup-py-egg-info-failed-with-error-code-1
https://stackoverflow.com/questions/32068325/python-setup-py-egg-info-failed-with-error-code-1
И оказалось «тривиальным».
БЛЯТЬ, МОЖНО БЫЛО ЗДЕЛАТЬ ЧТОБЫ РАБОТАЛО БЕЗ ПАЙТУШНИ И ПЕРДОЛИНГА??!!!
TEH3OPHblu_nemyx 09.06.2020 01:22 # 0
3.14159265 09.06.2020 01:25 # 0
>pip install --upgrade setuptools
Из чего я делаю вывод что отребье било себя в грудь: «дак мы же как Сишка», «у нас тоже есть пакетный минетжер».
А по факту не осилили простейший dependency resolver.
TEH3OPHblu_nemyx 09.06.2020 01:45 # +1
Через easy_install новая версия «distribute» ставится, но «unroll» опять ставиться отказывается.
3.14159265 09.06.2020 01:49 # 0
TEH3OPHblu_nemyx 09.06.2020 02:03 # 0
«unroll» хочет устанавливаться только через «ez_setup», а «ez_setup» не обновляли с 2010-го года, т. е. уже десять лет. За это время некоторые ссылки на pypi.org стали недействительными.
Чтобы поставить «unroll» в 2020-м году, нужно патчить пакет «ez_setup».
TEH3OPHblu_nemyx 09.06.2020 02:24 # 0
Короче, там весь пакет переписывать надо.
TEH3OPHblu_nemyx 09.06.2020 01:49 # 0
Fike 09.06.2020 05:30 # 0
nblXOMAKAKA 09.06.2020 05:34 # 0
Ну что за макаки!
Fike 09.06.2020 10:40 # 0
nemyx 09.06.2020 17:29 # 0
Да! Пусть не по правилам игра!
Fike 09.06.2020 02:14 # 0
всегда радовала эта хуйня
TEH3OPHblu_nemyx 09.06.2020 02:26 # 0
Fike 09.06.2020 02:51 # +1
ropuJIJIa 09.06.2020 03:03 # +1
У меня пакет «unroll» установился. Мои действия:
1. Если по глупости поставили «ez_setup», удаляем:
2. Скачиваем и распаковываем пакет «unroll» в чистую директорию:
3. Переходим в директорию unroll-0.1.0 и из файла setup.py нахрен удаляем первые две строки: Остальные строки оставляем.
4. Собираем и устанавливаем «колёса»:
Всё, «unroll» установлен.
Ну что за обезьяны на «SO»? По нескольку раз вслепую повторяют бессмысленные команды вместо того, чтобы решить проблему.
ropuJIJIa 09.06.2020 10:18 # 0
У меня два варианта:
1. Искать в файле «setup.py» в сломанных пакетах строчки, упоминающие «ez_setup», и удалять.
2. Написать фейковый модуль «ez_setup», состоящий из метода «use_setuptools», который ничего не делает.
guest8 09.06.2020 10:33 # −999
3.14159265 09.06.2020 16:54 # −1
Правильный способ это не использовать питуха.
Пайтух-гермафродит не нужен.
jojaxon 09.06.2020 16:56 # +1
3.14159265 09.06.2020 17:02 # −1
Некроссплатформенная, непортируемая, тормозная скриптуха с торчащими нативными костылями.
ECMA хотя бы портабельный, и не приколоченный сишными гвоздями к платформе.
С нодушков здесь все смеялись, за то что пишут свои sshи.
А в это время анскильная Питухомразь просто ворует сишные либы.
guest8 09.06.2020 10:41 # −999
ropuJIJIa 09.06.2020 11:04 # 0
https://packaging.python.org/discussions/wheel-vs-egg/
Колёса появились в 2012-м году. Т. е. вся эта питушня с «изяинсталлом» была актуальна до 2012-го года (точнее, до того года, когда перестали распространять «яйца»).
bormand 09.06.2020 15:29 # +2
MAKAKA 09.06.2020 15:32 # +1
А еще есть pyenv и poetry
Ах да, и к яйцам с колесами не забудьте sdist
bormand 09.06.2020 15:33 # +1
MAKAKA 09.06.2020 15:35 # +2
Вот вам переписывание Правильно.
Кстати: из твоего списка выкинули тока Easyinstall и яйца
bormand 09.06.2020 15:43 # 0
MAKAKA 09.06.2020 15:45 # 0
разве setuptools не работает поверх distutils?
bormand 09.06.2020 15:51 # 0
MAKAKA 09.06.2020 15:55 # 0
setuptools -- apt
ясна ли аналогия ?:)
bormand 09.06.2020 15:58 # 0
А pip тогда что?
guest8 09.06.2020 15:59 # −999
jojaxon 09.06.2020 16:25 # 0
bormand 09.06.2020 16:28 # 0
jojaxon 09.06.2020 16:53 # 0
Desktop 09.06.2020 17:07 # +1
Формат описания пакетов это некая спека. При чём тут формат данных, в котором она будет храниться? Сколько интерфейсов напишут, столько тулза таких форматов и примет.
Ничему никого жизнь не учит. А ещё называются домом высокой культуры быDа!
jojaxon 09.06.2020 17:15 # 0
gost 09.06.2020 15:36 # 0
jojaxon 09.06.2020 15:45 # 0
Desktop 09.06.2020 15:49 # 0
MAKAKA 09.06.2020 15:49 # 0
jojaxon 09.06.2020 16:21 # 0
Или хочет показать малышне кто тут батя.
bormand 09.06.2020 16:29 # 0
Своё говно не воняет, угу.
Но вообще он там писал про какие-то совсем уж дикие кейсы когда numpy целиком тащат ради NaN и т.п.
nemyx 09.06.2020 17:33 # 0
Звучит как название книги. Что-то типа «Гарри Поттер и яйца на колёсах».
3.14159265 09.06.2020 17:42 # +2
В то время считалось, что питушиные яйца используют ведьмы для приготовления колдовских скриптов.
Для пользователей этот факт был неопровержимым доказательством пердолинга птицы. Адвокат апеллировал тем, что несение яйца - это непроизвольное действие, в котором не было злого умысла, поэтому и наказывать за это несправедливо.
Но посонов такие доводы не убедили. Питуха, как еретика, сожгли на костре вместе с яйцом.
В XXI веке голландский ученый доказал, что птица, болеющая инфекционным заболеванием, может непроизвольно поменять версию со 2ой на 3ю.
jojaxon 09.06.2020 15:49 # 0
bormand 09.06.2020 16:34 # 0
Ну скорее юзал свежие и популярные либы, которые из коробки работают и не надо лезть под капот.
gost 09.06.2020 18:15 # +1
nemyx 09.06.2020 18:22 # 0
nemyx 09.06.2020 18:29 # 0
P.S. Кому-нибудь приходилось использовать команды JOIN, APPEND и MKLINK?
gost 09.06.2020 18:40 # +1
«mklink» пару раз юзал, но параметры, естественно, забыл все.
nemyx 09.06.2020 18:47 # 0
В каких-то реализациях «DOS», если не задать «LASTDRIVE Z», для дисков с номерами после 26 назначались «буквы» [, \, ], ^, _, `, которые не принимали многие программы (бэкслэш уж точно никто не принимал).
gost 09.06.2020 19:03 # 0
guest8 09.06.2020 22:02 # −999
nemyx 09.06.2020 22:16 # 0
В «DOS» у каждого диска свой текущий каталог. Я, например, делаю так: Вернувшись на диск C:, я вернусь в директорию NC, потому что последняя команда cd изменила текущую директорию только у диска D:.
В «NT» же сначала сделали глобальную текущую директорию. Т. е. после команд c: и cd NC текущей будет директория \DosDevices\C:\NC. Глобально. Изменение текущей директории на диске D: её сбросит.
Чтобы досовские батники работали в «NT», пришлось прикручивать костыль: теперь в енвиронменте создаются «скрытые» пельменные, имена которых начинаются со знака равенства, хранящие адрес текущей директории на каждом диске. Следующая команда их покажет:
bormand 09.06.2020 22:34 # 0
Зачем? Зачем? Малость было места на дисках, поэтому юзали отдельный диск под каждую задачу?
MAKAKA 09.06.2020 22:36 # 0
где ты должен оказаться?
bormand 09.06.2020 22:41 # +1
А вот кстати, это случаем не со времён, когда у доса не было каталогов пришло?
Типа раньше я мог копировать a:1.txt в b:1.txt. Потом в дос завезли каталоги, но я не хочу ничего менять. Поэтому я могу сфокусировать каждый диск на нужный каталог и продолжать копировать a:1.txt в b:1.txt.
MAKAKA 09.06.2020 22:44 # 0
переключение диска? ну да, с тех пор.
Были два диска: A: и B: (два дисковода на 360 что-ли килобайт).
Каталоги завезли где-то в районе третьего доса что-ли
bormand 09.06.2020 22:45 # 0
1) переключение диска через a:
2) обращение к текущему каталогу на диске a: как a: (без слеша)
nemyx 09.06.2020 22:45 # 0
Только в DOS 2.0 в файловую систему завезли атрибут «директория», чтобы директории были не только корневыми, и у файловых функций добавили разделитель поддиректорий (почему-то выбрали бэкслэш).
3.14159265 09.06.2020 22:45 # 0
Стоп. А разве это так работало?
По-моему оно оставляло на диске А.
Ну были там какие-то багры со сменой диска, что нужно писать
C:
А потом уже cd
nemyx 09.06.2020 22:48 # +2
3.14159265 09.06.2020 22:49 # 0
Ага, что-то в этом духе.
Я помню что там было просто выбешивающее поведение.
bormand 09.06.2020 22:51 # +1
Почему было? Оно и в десятке точно такое же выбешивающее.
gost 09.06.2020 22:54 # 0
А вот в «Powershell» это говно исправили. Именно поэтому я за «Powershell».
3.14159265 09.06.2020 23:02 # 0
Потому что я давно уже виндой не пользовался. Вдруг починили.
>Оно и в десятке точно такое же выбешивающее.
Какой CHDIR )))
MAKAKA 09.06.2020 22:48 # 0
Важно, что у каждого диска был свой каталог. Во всяком случае, в DOS 6.22
nemyx 09.06.2020 22:50 # 0
Итого у нас два уровня текущей питушни:
1. Глобальный переключатель текущего диска.
2. На каждом диске переключатель текущей директории.
MAKAKA 09.06.2020 22:50 # 0
3.14159265 09.06.2020 22:59 # 0
То есть эта питушня даже не баг, но фича.
Коли уж вайн так себя ведёт.
bormand 09.06.2020 23:02 # +1
ropuJIJIa 09.06.2020 23:38 # 0
bormand 09.06.2020 22:50 # 0
3.14159265 09.06.2020 23:14 # 0
Вроде это появилось только со времён 2K/XP. И вроде на NTFS. Но это не точно.
Кстати там свои приколы были.
Я вот точно не помню, но кажется когда-то ловил глюк с местом. На одном диске место было достаточно, а на другом мало.
А при копировании, встроенный в винду чекер свободного места тупил и выдавал окно что на диске мало места.
3.14159265 09.06.2020 23:16 # 0
Можно папку было переименовать в хитрый UUID, и тогда вместо её содержимого эксплорером открывалась например Панель Управления.
Причём если переименовать папку обратно, то все данные в ней естественно оставались.
bormand 09.06.2020 23:19 # +1
ropuJIJIa 09.06.2020 23:36 # 0
3.14159265 09.06.2020 23:40 # 0
MAKAKA 10.06.2020 02:04 # 0
ropuJIJIa 09.06.2020 23:49 # +2
Ты можешь в одной папке создать подпапку с именем и подпапку с именем
В «Проводнике» обе будут отображаться как корзина.
ropuJIJIa 10.06.2020 02:33 # 0
Кстати, для корзины есть такой раздел реестра:
Там есть подразделы ContextMenuHandlers и PropertySheetHandlers. Похоже, что именно в них указано, какому обработчику делегируем показ этой папки.
Вот тут что-то про эту питушню написано:
https://docs.microsoft.com/en-us/windows/win32/shell/handlers
3.14159265 10.06.2020 03:07 # 0
3.14159265 09.06.2020 16:53 # +1
>Но яйца не нужны: все давно перешли на колёса. Колёса ставит пип-инсталлер.
Вооо. Теперь понятно и по делу.
nemyx 21.06.2020 08:48 # 0
https://wiki.php.net/internals/windows/stepbystepbuild
В «Линуксе» всё просто: phpize; ./configure; make
Только перед этим нужно поставить пакет «php-dev» через «apt-get» или какой-нибудь другой пакетный менеджер. Возможно, даже команды phpize... запускать не придётся, их запустит сам «pecl».
В «Windows» же нужно:
1. Cоздать директорию «php-sdk».
2. В неё распаковать предварительно скачанный архив «php-sdk-binary-tools.zip».
3. В этой директории создать «phpdev» с кучей поддиректорий.
4. В нужную поддиректорию распаковать «deps-5.6-vc11-x86.7z» или типа того (цифры зависят от версии «PHP», от того, какой версией «MSVC» её собирали и от разрядности процессора).
5. В нужную поддиректорию распаковать исходники самого «PHP».
6. Запустить «Visual Studio Command Prompt», чтобы установить необходимые переменные окружения.
7. Перейти в директорию «php-sdk» и запустить «bin\phpsdk_setvars.bat».
8. Перейти в директорию с исходниками «PHP» и запустить «buildconf».
9. Вот теперь можно начинать компилировать расширения.
Т. е. разработчикам «PHP» было лень даже написать тупой инсталлятор, который раскидает части SDK по нужным директориям.
3.14159265 21.06.2020 23:29 # 0
Именно поэтому я за «Линукс».
В виндах исторически багры с любой свободушней, которая в Луниксе ставится простым apt/yum/... install.
То mingw надо, то работает хуёво, то с поддержкой POSIXa проблемы.
>распаковать предварительно скачанный архив «php-sdk-binary-tools.zip».
>>>Вот именно поэтому я за «Линукс».
vistefan 21.06.2020 23:35 # 0
vistefan 21.06.2020 23:36 # 0
3.14159265 21.06.2020 23:48 # 0
Не нужно ставить дрова, не нужно собирать зипованные какашки по файлопомойкам, не нужны кряки с ви-руснёй.
Потому M$ и пилит свои WSL 1/2.
Кстати зацени: https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-DXGKRNL-Uphill-Battle
guest8 23.06.2020 01:16 # −999
3.14159265 21.06.2020 23:55 # +1
[u]https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Writing-Wayland-Comp[u]
Там занятный срач:
https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/wayland-display-server/1180655-microsoft-is-writing-its-own-wayland-compositor-as-part-of-wsl2-gui-efforts
Особенно я орнул с этого:
nemyx 21.06.2020 23:59 # +1
guest8 22.06.2020 00:03 # −999
gost 22.06.2020 05:21 # 0
3.14159265 22.06.2020 14:28 # 0
После таких знаков Аппокалипсиса как нарушение Emacsом GPL, Microsoft Loves Linux, посещения Столлманом ИХ штаб-квартиры я уже ничему не удивлюсь.
Тем более тому что мелкомягкие решать сэкономить на индусах портирующих винду на армы, и просто прикрутят к очередной десятке бекэнд линукс-кернел с вайном.
MATEMATuK_u3_PAIIIKu 22.06.2020 15:21 # 0
guest8 22.06.2020 15:44 # −999
nemyx 23.06.2020 10:25 # 0
https://gist.github.com/Orvid/5c9bc8c54e960a604968
35 пунктов.
nemyx 23.06.2020 10:31 # 0
nemyx 21.06.2020 23:50 # 0
guest8 22.06.2020 15:25 # −999
3.14159265 22.06.2020 15:31 # 0
«systemd» например никуда толком не портирован.
guest8 22.06.2020 15:42 # −999
3.14159265 22.06.2020 15:54 # 0
Да. OLE/ActiveX был прикольный. И в браузере можно было лепить аналог ява-апплетов.
Просто во-первых у них был целый зоопарк всяких технологий: DDE, MFC, ATL, ... От самого списка ехала крыша.
А во-вторых, ихнее RPC DCOM/ActiveX мало того что было сложным, так ещё и дырявым как решето. Фактически позволяя выполнять удалённо любой код.
nemyx 22.06.2020 19:41 # 0
guest8 23.06.2020 01:16 # −999
3.14159265 23.06.2020 01:20 # 0
Мелкомягкие Ява-апплеты?
В VB даже виртуальная машина была :) msvbvm
guest8 23.06.2020 01:26 # −999
nemyx 23.06.2020 11:09 # 0
KOPOHABuPYC 25.06.2020 01:43 # 0
KOPOHABuPYC 23.06.2020 03:19 # −1
Вряд ли кто-то захочет поместить свой детородный орган в рот больного ОРВИ.
nemyx 23.06.2020 09:58 # 0
Проблема «PHP» в том, что компания «Zend» не посчитала нужным собрать инсталлятор для «Windows». Типа хороший парень сам инсталлятор соберёт, если нужно.
AMEPuKAHCKuu_xyu 17.06.2020 00:08 # 0
guest8 21.06.2020 11:18 # −999