PHPBoyarin

Мой канал в Telegram: https://t.me/phpboyarin
На Пикабу
17К рейтинг 19 подписчиков 6 подписок 36 постов 10 в горячем
Награды:
За неравнодушие к судьбе Пикабу За сборку компьютера 5 лет на Пикабу За победу над кибермошенниками

Карта России в новых границах 2022-го года1

Для тех, кто хотел актуальную карту, но не знал где взять - в магазинах начали появляться новые карты России, включающие ДНР, ЛНР, Запорожскую и Херсонскую области.


Я хотел получить пораньше, поэтому заказывал в индивидуальном порядке (пруф прилагаю).


А сейчас можно искать на Озоне по фразе "Политическая карта России с новыми границами". Стоит в районе трех тысяч рублей.

Карта России в новых границах 2022-го года
Показать полностью 1
16

В последние два года мы живем в некотором напряжении

В последние два года мы живем в некотором напряжении.

Сначала мы поголовно собирались умереть от ковида, потом некоторые переживали из-за начала периода высокой инфляции, а текущий год подарил нам “новый старый” страх - мировую войну.

С ковидом, вроде бы, получалось неплохо, пока наш президент не отменил его “росчерком пера”. Фармацевтическое лобби пыталось что-то вскукарекивать, но людям уже не интересно.

Ну, скучно людям с вероятностью 0.3% умереть от воспаления легких, когда в двух шагах “идет резня и мордобой, идет конкретный мощный бой”.

В связи с этим уместно вспомнить т.н. “Вторую Конголезскую войну”, в ходе которой погибло, по разным оценкам, от четырех до шести миллионов человек.

Поколение 80-х, в большинстве, не может даже приблизительно вспомнить, когда проходила эта война, хотя это годы, когда они уже были в состоянии воспринимать информацию: с 1998 по 2002.

Этот факт как бы намекает нам на то, что массы поворачивают голову туда, когда указывает флюгер политического тренда и видят то, что им показывают, пока за спиной творятся зверства, распил бюджетов, либо то и другое вместе.

Так или иначе, наш текущий страх - мировая война.

Чем плоха мировая война?

Для русских это, в первую очередь, повторение Великой Отечественной войны. Фашисты, партизаны, страна в руинах, дети у станков, матери воюют, отцы погибли.

Моё поколение эти картины впитало на отличненько. Даже у любителей рассуждать про “трупами завалили”, “кровавых чекистов” и “обезглавленную армию” нет-нет да выползает из глубин подсознания историческая память.

Меж тем, у американцев историческая память иная. Самый ужас-ужас, который они могут вспомнить - внезапное нападение сил Японии на военную базу Перл-Харбор, после которого они героически превозмогали от начала до конца, и, в конце концов, победили фашистов “в одно рыло” (про то, что СССР там где-то воевал, помнят единицы), заслуженно забрав экономические плоды победы.

А, скажем, аргентинцы помнят лишь то, как за морем дрались большие дядьки, а потом приехало много белых людей из числа бывших хозяев.

Спешу всех обрадовать и успокоить!

Советник президента России Сергей Караганов еще в 2016-м году заявил о том, что “Россия больше не будет воевать на своей территории”.

Разумеется, не следует читать это как “никто не будет нападать на Россию”. Не надо быть семи пядей во лбу, чтобы сложить это с “мы, как мученики, попадем в рай, а они просто сдохнут” и тем фактом, что физическая возможность этого дремлет в шахтах.

Принято решение, в будущем, стремиться к мировой войне по “американскому” типу. По “аргентинскому”, конечно, никто не даст: слишком высоки ставки. А если не дадут по “американскому” - включить вариант “динозавры” с полным уничтожением человечества.

Этот вариант, кстати, вполне славная вещь.

Бояться его могут только трусы, слинявшие в страны третьего мира в надежде спастись. Но эта напрасная надежда. Как говорил Джон Сильвер: “те из вас, кто останется в живых, будут завидовать мертвым”

Самые смелые, оставшиеся в крупных городах, погибнут мгновенно, красиво и с блеском. У них не будет времени переживать о потерянном времени, радоваться списанию кредитов, мыть противогазы и бороться с соседями за лишний баллон с кислородом. А потом еще и мучительно умирать.

Именно поэтому недвижимость в центре Москвы такая дорогая.

Показать полностью
1

Новые приключения в мире бетона: прибалтийские “тигры” хотят наложить лапы на недвижимость граждан России



Все уже слышали, что самые богатые члены ЕС (Прибалтика, Чехия и прочие локомотивы европейской экономики) прекращают выдачу виз гражданам России.

Эстония пошла дальше - они отменяют уже выданные визы.

Пикантность ситуации заключается в том, что у нас, оказывается, есть альтернативно одаренные граждане, купившие квартиры и дома в Эстонии. Не озаботившись собственным статусом в стране, где к власти пришли потомки фашистов.

Ну, не дошло до башковитых, что “гражданин мира” - это про пацанов с правильной формой черепа.

И теперь они не могут даже оплатить коммунальные услуги - переводы из России запрещены. Въехать в Эстонию, чтобы произвести оплату лично или сдать квартиру местным в аренду, тоже нельзя: владение недвижимостью само по себе не дает никаких дополнительных прав.

В итоге, самые нерасторопные могут дотерпеть до выставления квартиры на торги. Разумеется, никаких денег с этого они не дождутся: не для того санкции вводили.

Более расторопным, возможно, удастся спасти часть нажитого. Но не всю: эстонцы постараются выжать максимум удовольствия для себя. Ведь когда на рынке появляется предложение от продавцов, не имеющих выбора, можно отхватить лакомый кусочек за бесценок.

Предупреждали ведь: замучаетесь пыль глотать, возвращая свои активы из недружелюбных юрисдикций.

Русские, бежавшие из среднеазиатских республик в начале 1990-х, не дадут соврать.

Показать полностью
82

Ответ на пост «Теперь багаж точно соответствует размеру»1

Это напомнило мне об одной истории.

Когда мы летели из Мюнхена, на регистрации нас проверяли с немецкой педантичностью.


С багажом все в порядке, вес не превышен - на ленту.


А с ручной кладью возникла проблема: при разрешённых 5 килограммах рюкзак весит 6. Ни в какую нельзя, ведь при падении на голову именно 6 килограмм пассажира разрывает на куски. То, что в бизнес-классе можно 7, работника не впечатлило. Нельзя и все тут.


Тогда я вынул из рюкзака ноутбук и, держа его в руках, взвесил рюкзак ещё раз.


Все в порядке, ваша ручная кладь весит 4 килограмма, вы можете лететь. Всего вам доброго и хорошего настроения!

Ответ на пост «Теперь багаж точно соответствует размеру»
Показать полностью 1
8

О важности оптимизации

Один достойный человек вчера спросил меня:


- У меня огромный массив. Будет ли быстрее разбить его на куски для обработки, чтобы сэкономить память?


С той поры, когда Билл Гейтс произнес свою знаменитую фразу "640 килобайт хватит всем", доступный объем памяти все время растет, но остается конечной величиной. Например, мой домашний компьютер имеет 128Гб памяти, то есть ровно в хрен-знает-сколько-лион раз больше, но браузер Google Chrome легко поглощает весь этот объем.


Беречь ограниченные ресурсы - хорошо и правильно. Но все зависит от контекста. Один процесс легко может занять, скажем, 4Гб памяти. Скажут ли нам спасибо остальные 124Гб, за то, что мы избавили их от работы? Будут ли они наслаждаться жизнью, нежась в кремниевых лежаках на берегу моря электронов?


Мне пока ни разу не говорили. Аналогия с мотором автомобиля (он лучше всего работает в определенном диапазоне оборотов) - ложная: модули памяти не изнашиваются от перезаписи. Кожаные мешки могут расслабиться: электронные мозги гораздо выносливее их унылого серого вещества.


В то же время, мне совершенно точно известно: запустив 50 процессов по 4Гб, я загоню компьютер в своп, а если его не хватит, OOM killer разберется кто виноват и накажет кого попало. Начнет убивать процессы, и тогда "те из вас, кто останется в живых, будут завидовать мертвым".

Надо ли заниматься оптимизацией в этот момент? Тоже неясно! Сначала надо взять профайлер и посмотреть, что будет дешевле: переписать логику (например, на генераторы) или докупить еще планку памяти.


Может оказаться так, что мы легко сокращаем потребление памяти в 10 раз, просто возвращая генератор вместо массива. А иногда приходится биться несколько недель ради экономии в 10%.


И это время:

а) стоит денег,

б) никогда не вернется в вашу жизнь.


Оптимизируйте, прежде всего, своё свободное время. Человек изнашивается гораздо быстрее железяки.


Источник

Показать полностью 1

Инопланетяне среди нас

Программисты - бездельники, которые ничего не делают сами.


Целыми днями они спят в более-менее комфортабельном кресле и во сне шевелят пальцами, только лишь с тем, чтобы, вернувшись домой, пересесть в другое более-менее комфортабельное кресло и продолжить шевелить пальцами в свое удовольствие.


Если условно поделить всех людей на работающих руками и разного рода вшивую интеллигенцию, "работников умственного труда", то программисты не попадают даже во вторую категорию, ведь сами они ничего полезного не делают.


Пожалуй, ближайшая к программистам категория это начальство, "руководители", то есть люди, управляющие работой других людей.


Программисты взирают на простых людей с непониманием и в целом свысока. На этот счет в сети они даже публикуют картинки, граничащие с оскорбительной непристойностью:

Изображение 1: программисты смотрят на вас свысока

Может показаться, что программисты представляют собой меньшее зло, ведь они не диктуют свою волю рабочему человеку. Вместо рабочего человека у них есть сонмы электронов, которые алгоритм пихает в бок, заставляя менять энергетическое состояние. Электроны не живые, и это угнетение социально допустимо.


Но жизнь каждого из нас зависит от поведения дрессированных программистами электронов.

Это они заставляют любимый видеохостинг рекомендовать видео с пердящим козлом, якобы на основе истории ваших предыдущих просмотров.


Они тренируют роботов звонить по телефону и сообщать, что новая стоматология предлагает вечную жизнь вашим зубам.


Когда ваш автомобиль превышает скорость, пересекает сплошную линию, обнаруживается припаркованным в неподходящем месте, именно дрессированные электроны программистов выписывают владельцу автомобиля штраф. Люди даже не пакуют уведомления в конверты: угнетенные электроны имеют собственных неуязвимых стальных слуг, не знающих, как и их хозяева, ни устали, ни жалости.


Человечество недооценило угрозу, исходящую от программистов. Возможно, потому, что в прошлом веке они маскировались под малозначимых членов общества.

Изображение 2: отвязная вечеринка айтишников


Американская киноиндустрия пыталась предупредить об опасности, представляя айтишников опасными террористами, способными даже вызвать экологическую катастрофу, перевернув танкеры с нефтью с помощью компьютерного вируса (фильм "Хакеры", 1995 г.). К сожалению, неудачное решение сценариста добавить в фильм фантастическую деталь в виде Анджелины Джоли, влюбляющейся в "хакера", перевернуло весь пропагандистский эффект.

Изображение 3: типичные "хакеры" в одноименном фильме

Лишь одно отделяет наш мир от безответственности программистов и полного "цифрового рабства". Человек с ружьем по-прежнему стоит на страже.

Изображение 4: "Противник не сможет нажать на кнопку, если вы лишите его руки" (х/ф "Звездный десант")

Программисты до сих пор не поработили мир лишь по одной причине: узок круг этих ограниченных лиц. Им требуется огромное количество свежей крови.


Для вербовки пушечного мяса программисты пишут учебники, начиная от легкого чтива вроде "{название любого языка программирования} для чайников" и заканчивая зубодробительными статьями на специализированных ресурсах, где они сами делятся на группы и рвут друг друга в спорах о том, что лучше: отступ в виде четырех пробелов или Tab.


Крупные объединения программистов организуют курсы, в том числе бесплатные. В этом им помогают беспринципные капиталисты, ради трехсот процентов прибыли готовые закрыть глаза на уничтожение рабочих мест для людей из плоти и крови.


Как ни странно, обычный человек в состоянии воспользоваться этим уязвимым местом. Записавшись на бесплатные курсы, воспользовавшись бесплатными доступными в интернете учебниками, можно притвориться одним из них, чтобы нанести спруту удар в самое сердце.


Или... действительно стать одним из них. Сидеть в теплом кабинете или даже в теплой стране. Получать высокую зарплату. Наслаждаться успехами своих дрессированных электронов и не работать больше ни дня в своей жизни.


Ведь программирование - это не работа. Это игра.


Источник

Показать полностью 4
16

Как сечь холопов плетьми объектно и по параметрам

Лучший в мире язык для промышленной веб-разработки - PHP. Он прост в освоении, имеет огромную экосистему, быстр, вынослив и кормить совсем не нужно.


Типичный стиль написания кода, используемый в PHP - "объектно ориентированный". На втором уроке по PHP новичок легко осваивает этот принцип и всю жизнь, в меру своей испорченности, использует его.


Отступление для зануд, которое приличные люди могут не читать: PHP является т.н. "Тьюринг-полным" языком, на котором возможно творить любую бесовщину. Мне известно о возможности писать на PHP приложения с окошками для Windows. Я знаю, что есть любители писать на PHP в "функциональном" стиле. Но приличный человек будет копать землю лопатой, а не любимой серебряной ложечкой для чая.


Сегодня мне довелось лицезреть работу серийного убийцы программистов. Я уверен, что человек, писавший эти строки, ответственен за тысячи людей, не выбравших лучшую в мире профессию программиста из-за того, что это "слишком сложно".


Это определение объектно-ориентированного программирования (ООП) из Википедии. Не стоит читать статью полностью, чтобы не обляпаться (предлагаю остановиться там, где вы в первый раз подумаете "что за фигня?"). Я приведу самое начало. Поверьте, дальше еще хуже.


Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.
Идеологически ООП — подход к программированию как к моделированию информационных объектов, решающий на новом уровне основную задачу структурного программирования: структурирование информации с точки зрения управляемости, что существенно улучшает управляемость самим процессом моделирования, что, в свою очередь, особенно важно при реализации крупных проектов.
Управляемость для иерархических систем предполагает минимизацию избыточности данных (аналогичную нормализации) и их целостность, поэтому созданное удобно управляемым — будет и удобно пониматься. Таким образом, через тактическую задачу управляемости решается стратегическая задача — транслировать понимание задачи программистом в наиболее удобную для дальнейшего использования форму.

Как сечь холопов плетьми объектно и по параметрам

Человек, писавший эти слова, не хотел объяснить, как работает ООП. Он хотел показать, какой он умный. Там дальше еще больше интересного, кому не хватило:

абстракция - для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счёте — контекстное понимание предмета, формализуемое в виде класса;

Ни один нормальный человек не будет это читать по собственной воле. Если после первого урока заставить новичка зубрить эти заклинания, на второй урок он не придет. Есть, конечно, студенты университетов, над которыми можно издеваться как угодно. Они смирились, что в учебниках всегда так.


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


Предмет

Первый способ использования объектов в PHP - это группировка данных (это "свойства" объекта) для передачи куда-то.


Допустим, нам надо сечь плетьми холопа Питера Заумного, написавшего столь прекрасную статью в Википедии. Потому что этот Заумный Питер приносит больше вреда, чем пользы.


Мы вызываем приказчика и говорим: "этого сечь плетьми на конюшне, он вредитель". Таким образом, приказчик получил команду ("сечь плетьми") и параметры (кого - "вот этого", за что - "он вредитель").


Мы могли бы описать приказчику негодяя, назвав его фамилию, имя, рассказать где его найти и как отличить от его сожителей. Вместо того, чтобы брать на себя всю это работу, мы просто говорим: "этого". Тут уже перепутать невозможно.


В терминах программного кода это разница между функцией "сечь плетьми объектно", которая принимает два параметра: объект и причину. И функцией "сечь плетьми по параметрам", которая принимает множество параметров, описывающих то же самое.


Допустим, в нашем коде функция "сечь плетьми по параметрам" используется с десяток раз по разным поводам. Холопов ведь в строгости держать надобно. И мы хотим, так сказать, обновить функционал: раньше каждому полагалось по 10 плетей, а теперь малолетним по 3, зато взрослым 15.


Получается, теперь необходимо, кроме ФИО, передавать еще и возраст холопа. А это значит, что везде, где мы раньше использовали нашу функцию, мы должны дополнить список параметров. Серьезная переделка! Пожалуй, не нужна нам эта прогрессивность, пусть все, как и раньше, по 10 плетей получают.


При передаче же объекта нам ничего не надо переделывать, кроме инструкции приказчику (тела самой функции): "спроси-ка, любезный, сколько ему лет, и секи в зависимости от этого".


В итоге, при передаче всех параметров, мы берем на себя труд самостоятельно описать все необходимые параметры, в то время как объект сам рассказывает все, что надо, о себе. Если завтра обнаружится, что холопы бывают бритые и небритые, в нашем приказе "этого сечь плетьми" ничего не изменится.


Дополнительная "плюшка", которые мы получаем: объект, при создании, вероятно, проверяется на корректность, и нам нет необходимости каждый раз при работе с ним убеждаться в том, что он вообще существует (вот же он).


Описывая его параметрами, наоборот, легко ошибиться. Например, если мы не сами его видели, а получили описание от кого-то другого (такое часто бывает при работе с данными от пользователя - им только дай волю, они такие данные в формы вводят, что закачаешься). При передаче по параметрам каждая функция вынуждена производить собственную проверку корректности комбинации полученных данных.


Сервис

Второй способ использования объектов в PHP - это группировка "команд" (это называется "методы").


Здесь у нас объект "конюшня" - там умеют разные полезные вещи: сечь плетьми холопа, запрягать лошадь, кормить лошадь, выгребать навоз.


Здесь "кузница", можно: подковать лошадь, изготовить кольчугу, заточить меч, сковать гвоздь.

Если лошадей у нас в хозяйстве нет, конюшня не нужна - её можно не строить. Удобный метод  "автозагрузки" позволяет программе загружать только то, что нам нужно прямо во время исполнения.


Конструктор

Когда мы говорим "этого сечь", откуда же взялись все параметры, нужные приказчику для наказания?


Часть из них наш Питер Заумный получил при рождении: имя, фамилию, информацию о родителях. В нашей программе объект был не рожден, а создан при помощи конструктора, специального метода, который записал значения критически важных для существования объекта свойств.


Часть получил в результате каких-то действий: например, наш Питер потерял руку в результате несчастного случая. В результате произошло изменение состояния объекта (свойство "количество рук" уменьшилось).


Конструктор позволяет создать объект по минимальному набору параметров, позволяющих ему существовать. Пусть он пока маленький, ничего не умеет, но у него уже есть имя, фамилия и родители. Плюс некий набор "стандартных" параметров: две руки, две ноги, голова. Наличие кожи конструктор отмечает самостоятельно: нет необходимости описывать объект слишком подробно, когда есть базовая информация о том, как выглядят объекты этого класса.


Создавая объект "конюшня", мы определяем минимально необходимые для создания конюшни вещи: где она будет стоять, сколько будет стойл, кто будет в ней работать и т.д. После чего конюшня готова выполнять свои функции. Если бы мы забыли назначить работников, наши команды не могли бы быть выполнены. Поэтому конструктор объекта должен следить за полнотой предоставленных данных. Это называется валидация.


Все вместе

Нетрудно догадаться, что большинство объектов имеют и свойства и методы. Конюшня имеет размеры, у неё можно спросить, сколько лошадей доступны, а можно использовать её как сервис и дать задание.


Часть действий объект может производить без изменения своего состояния (наказание холопа не влияет на количество стойл или расположение конюшни), а часть действий сами по себе приводят к этому (команда "седлать лошадь" уменьшает число доступных лошадей).


Все это уже относится к практическим вопросам, которые решаются при проектировании системы.


Наследование, статические методы, деструкторы, инкапсуляция, позднее статическое связывание - все эти умные слова можно осознать по мере того, как вы начнете пользоваться объектами. Позже.


Помните - только практика может превратить "чайника" в настоящего PHP-боярина!


Источник

Показать полностью 1
Отличная работа, все прочитано!