Pull to refresh
0
0.1
Кучеров Матвей @MKMatriX

Битриксоид (((

Send message

И ведь не сложно сделать все лучше:

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

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

То что позволено Юпитеру не позволено быку)

Все меньше и меньше читаю новости, и это один из примеров почему. Хоть блокируй весь сегмент новостей, хоть пиши плагин, скрывающий заголовки по словам ["РФ", "Путин", "запретить", "блокировать", "правительство"]. У них там свои игры, мне не интересные.

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

Очередная раскладушка, которой похвастаться нечем кроме как дизайном и тем что они тоже сделали "свою" версию андроида. Во всяком случае в новости больше ничего и нету. Разве что намек на крутой шарнир. Шарнир Карл! Впрочем крутость его заключается только в отсутствии складки. Хабр, которой мы заслужили.

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

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

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

В общем безопасники считающие что в компании всем не все равно на ее судьбу это оторванные от реальности люди. В реальности надо быть заодно готовиться к саботажу. Где-то тут была статья где одного из основателей какой-то конторы (вроде додо) похитили ради выкупа, так теперь у них просто нельзя вывести деньги без личного разговора.

А Бабе Сраке все равно что там наговорит безопасник, она похлопает глазками, и дальше будет клеить пароль на монитор.

Это работает только если работа интересная, у большей части сотрудников это не так, так что порой можно и покликать, чтобы отдохнуть от работы, еще раз посмотрев видео втыкая в это время в телефон. Доведение человека до обеспокоенности Бабы Сраки восемь часов * пять дней в неделю, лишь помешает ему работать. Да и невозможно это, физически. В любом случае перевоспитывать сотрудников - настоящей возможности нет, можно лишь мотивировать их к нужному поведению, положительными подкреплениями.

Ну открыть письмо и перейти по ссылке это вполне адекватные действия) Ввести лого-пасс от корпоративной жиры уже хуже, но в целом тоже допустимо. А вот вести жиру так, что предполагается что к ее аккаунтам имеют доступ только сотрудники по принципу один аккаунт - один сотрудник, вот это уже неадекватно)

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

Тут скорее вранье инвесторам. Алисы конечно много, только этим яндекс и ограничивается. А пылесосы и лампочки - китайские. Вообще просто манипулирование формулировкой умного устройства в сторону - говорит по русски. Отсюда и 90%)

На js квадратики учатся играть во флаппи берд) https://mkmatrix.github.io/flappynn.github.io/ где-то 300 поколений уходит)

Как результат у нас появится модуль, назовем его mkmatrix.main (чтобы не думать над названием), в названии модуля обязательно должна быть одна точка разделяющая два "слова" (копайтесь в битриксовском поиске классов, если интересно почему так)

в модуле будет папочка lib с файликом myhighload.php и примерно таким содержанием

<?php
namespace MKMatriX\Main;
class MyHighloadTable extends DataManager
{
	public static function getTableName()
	{
		return 'myhighload';
	}

	public static function getMap()
	{
		return [
			new IntegerField(
				'ID',
				[
					'primary' => true,
					'autocomplete' => true,
					'title' => Loc::getMessage('_ENTITY_ID_FIELD')
				]
			),
			new TextField(
				'UF_NAME',
				[
					'title' => Loc::getMessage('_ENTITY_UF_NAME_FIELD')
				]
			),
			// ...
		];
	}
}

Кстати его можно не писать самому, а накликать в админке https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2410 . А если вы знакомы с консолью битры, то можно еще и сгененировать OE_MyHighloadTable чтобы редактор кода подсказывал вам методы исходя из полей, на мой взгляд это избыточно, хотя и удобно.

Пользоваться соответственно так

use MKMatriX\Main\MyHighloadTable;

if (!CModule::IncludeModule("mkmatrix.main")) { // понимаю что устаревший вариант, но мне влом переписывать сниппеты
	ShowError("Модуль mkmatrix.main не установлен!");
	return;
}

$this->arResult["ITEMS"] = MyHighloadTable::query()
	->setSelect(["*"])
	->where("UF_XML_ID", "in", $this->arParams["XML_ID"])
	->setOrder(["UF_SORT" => "ASC"])
	// ->setLimit(20)
	->exec()->fetchAll(); // ну или fetchCollection() или что вам надо

Еще рекомендую запекать хайлоады через orm-генерацию. Так не надо будет писать

$hlblockID = 1;	// используйте код хайлоада вместо магических чисел, ну или хотя бы константы
$hlblock = HL\HighloadBlockTable::getById($hlblockID)->fetch(); // тут мы получаем сущность из базы с кодом что на деле можно пропустить
$entity = HL\HighloadBlockTable::compileEntity($hlblock); // тут мы создаем "запеченный класс", который могли создать заранее

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

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

А потом для премиум юзеров потом еще и текстовое описание сториз) В коротком и художественном вариантах) Пример короткого варианта: "Полуголая, красивая девушка, на пляже, во время заката".

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

А вообще версии с патчами иногда лучше) Как пример те же игры без denuvo тратят меньше ресурсов, и соответственно работают быстрее и плавнее. Опять таки, если патч удаляет эпизодическое стучание в инет, то огромное ему спасибо. Даже в современном мире, иногда инета нету, например отключили свет в доме, через который идет провод, в результате комп с лицензиями начинает подтормаживать. Разработку без инета вести можно, давно есть виртуалки на домашнем компе, а вот остальное страдает.

Обновления это отдельная боль. Везде идет тезис о том какие обновления хорошие, как они закрывают уязвимости, что-то оптимизируют и добавляют отдельные функции. А на деле уязвимости закрывают, вот только этим их заодно показывают, и не факт что про них до этого знали. Оптимизации зачастую теоретические, т.е. что-то что длилось 0.01с начинает длиться 0.0001с, что вроде пара порядков, и все же время обновления значительно превышает выгоду, а пользователь разницу не заметит. Ну а изменения интерфейсов и прочее, про то как их любят - "Дуров верни стену", в общем нужны далеко не всем, и привычный интерфейс лучше чем продуманный. Хорошие же апдейты вечно продают. Типа новой версии винды, или дополнения для игры. А еще с новой версией может что-то исчезнуть. Как пример музыка из-за окончания лицензии на нее, или проигрывание определенного формата, тоже из-за юридической возни. Конечно это не призыв не обновляться.

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

Поэтому считать ДнД конкретную систему правил не получится. Ибо понятие разошлось шире игры. Намного шире) Даже в ту глубинку где я жил. Без книг, без правил, без знания. Этакий диабло на словах. Та еще фигня, но веселая.)

Да, "ваншот" это обычно убийство одним выстрелом, или персонаж которого можно одним выстрелом убить. Лучше использовать другое слово, более понятное. Например DnD-like игра. Или что это. Это на компе запускается? Это настолка? Для этого нужен софт? Почему то что Foundry VTT это движок становится понятно только из комментариев?

В общем у вас много локальных базовых понятий. И на данном ресурсе было бы вежливым дать им определения. Ибо любителей ВоВа (хотя бы как фольклора) тут много, а вот людей которые могут понять статью мало.

Кстати DnD - Это не на компе. В смысле да, на компе много DnD-like, но много для кого DnD - это общий класс настольных игр. Даже не игры определённой фирмы и названия, нет, это просто жанр настолок - ролевок.

Для кого интересно что тут... Ну в самой статье есть ссылка с текстом https://www.gmbinder.com/share/-L6TGIh9J0x2AqFHovf4 и это и правда DnD настолка.. И видимо ее реализация на каком-то популярном, для порта настолок на комп, движке.

Мой каммент ниже отвечает на часть ваших вопросов, сначала написал потом прочитал) И да это все для свойства версии 2. Кстати у одного ИБ могут и те и другие свойства, но это вообще мрак, и тот кто хочет с этим заморачивать точно должен знать что он делает и зачем)

Чуть добавлю.
Для получения датакласса одиночных свойств

public function getSinglePropsDataClass($iblockId) {
		$className = 'SProps' . $iblockId;

		if (class_exists($className . "Table")) {
			return $className . "Table";
		}

		$props = \Bitrix\Iblock\PropertyTable::query()
			->setSelect(["ID", "MULTIPLE", "PROPERTY_TYPE"])
			->where("IBLOCK_ID", $iblockId)
			->where("MULTIPLE", "N")
			->where("VERSION", 2)
			->exec()->fetchAll();

		$sProps = [];
		foreach ($props as $prop) {
			$key = "PROPERTY_" . $prop["ID"];
			$type = $prop["PROPERTY_TYPE"] == \Bitrix\Iblock\PropertyTable::TYPE_NUMBER ? 'float' : 'string';
			$sProps[$key] = ['data_type' => $type];
		}
		$sProps['IBLOCK_ELEMENT_ID']= ['data_type' => 'integer'];

		$entitySProps = \Bitrix\Main\Entity\Base::compileEntity(
			$className,
			$sProps,
			['table_name' => sprintf('b_iblock_element_prop_s%s', $iblockId)]
		);

		return $entitySProps->getDataClass();
	}

Ну и для множественных

	private function getMultiplePropsDataClass($iblockId) {
		$className = 'MProps' . $iblockId;

		if (class_exists($className . "Table")) {
			return $className . "Table";
		}

		$entityMProps = \Bitrix\Main\Entity\Base::compileEntity(
			$className,
			[
				'ID' => ['data_type' => 'integer'],
				'IBLOCK_ELEMENT_ID' => ['data_type' => 'integer'],
				'IBLOCK_PROPERTY_ID' => ['data_type' => 'integer'],
				'VALUE' => ['data_type' => 'string'],
				'VALUE_ENUM' => ['data_type' => 'string'],
				'VALUE_NUM' => ['data_type' => 'float'],
				'DESCRIPTION' => ['data_type' => 'string'],
			],
			['table_name' => sprintf('b_iblock_element_prop_m%s', $iblockId)]
		);

		return $entityMProps->getDataClass();
	}

Еще заметил что работа через эти таблицы на пол порядка быстрее чем работа через orm для инфоблоков, ну и вообще orm для инфоблоков еще крайне сырой, часто входит в бесконечные циклы, поглощая всю оперативку.
Про то что $objItem->GetProperties(); использовать не надо, даже особо писать не буду)
Не очень знаю уместно ли тут использовать sprintf('b_iblock_element_prop_m%s', $iblockId) ибо если $iblockId это число, то и париться с искейпом не надо, да и делает ли sprintf искейп... Но влом было все строчки менять)

Еще
[аниме / киберпанк] Serial Experiments Lain (1998)
[аниме / комедия стиля ванпанчмен] Battle Programmer Shirase (2003)
[аниме / попадание в игру] Sword Art Online (2014)
[аниме / попадание в игру] Log Horizon (2013)
[книга / попаданцы] Анджей Ясинский - Ник (2009)

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

Information

Rating
3,306-th
Location
Россия
Date of birth
Registered
Activity