Rose debug info
---------------

Позднее Ctrl + ↑

Библиотека по мотивам Bootstrap

Для тех кому наскучило юзать классический Bootstrap случайно нашел стартовый набор для вёрстки Shoelace.
Там есть все от кнопок до сетки, все очень похоже на старый добрый бутсрап, но вроде как весит легче.
Хотя пару лет назад открыл для себя «америку» и узнал что можно использовать не весь бутсрап допустим, а только его сетку и так все весить начинает гораздо меньше.
В итоге если кому надоела классика please welcome — shoelace.style.

 2   2017   bootstrap   shoelace   верстка

Мультиязычный сайт на битриксе

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

Разберем классическую ситуацию с сайтом на двух языках: английском и русском.
В системе будет два типа контента:

  1. Что лежит в инфоблоках — динамический контент.
  2. Статический. Он будет лежать в языковых файлах.

Ключевым моментом в разработке будет создание двух сайтов, каждый из которых будет работать для одного языка вот тут:
http://ВАШ_САЙТ/bitrix/admin/site_admin.php?lang=ru
Важно в поле язык ввести нужно значение языка:

Теперь для статического контента все просто, нужно грамотно использовать папку «lang» и уметь пользоваться функцией «GetMessage()».
Для динамики использую следующий лайхак, в инфоблоке создаю для контента две секции, каждой из которых проставляю символьный код соответсвующий языкам на сайте. Получается что-то типо вот такого:

На самом же сайте просто вывожу контент из нужный папке в инфоблоке с помощью константы LANGUAGE_ID.

Обновление приложений. Что нового?

Некоторые разработчики любят каждую фичу заливать в App Store и заставлять часто обновлять своё Приложение, я непротив, но зачастую кажется что копирайтеров у таких компаний просто нет.
Поэтому зачастую в «Что нового?», я вижу что-то типо:«Мы часто обновляем своё приложение, поэтому просто копируем этот текст и не паримся». Причём такими вещами часто грешат немаленькие компании — Facebook, Twitter, Uber и т. д.
Лично меня это напрягает, потому что я действительно всегда читаю что нового появилось в каждом новом update приложения.
p.s.
У меня есть гипотеза, что разработчики специально вываливают часто обновления, чтобы обратить внимание клиента на своё приложение.

Как поставить тире( ̶д̶е̶ф̶и̶с̶ ) на винде.

В чем разница между тире, минусом и дефисом написано много текста, вот один из самых понятных толкований с ководства Лебедева https://www.artlebedev.ru/kovodstvo/sections/97/

А вот как поставить тире на Windows дано знать не каждому?

На самом деле не просто, надо зажать следующую комбинацию: Alt+0151
У меня есть мнение что если бы разработчики вынесли этот знак куда либо поближе, то и люди стали бы грамотнее и понимали бы разницу между символами.

 3   2017   дефис

Кайф от Macklemore

Еще немного о музыке сегодня.

Удивительно, но уже более месяца пряталась от меня вот эта абсолютно кайфовая работа от американского рэпера Macklemore:

Творчество этого парня я полюбил около 5-и лет назад, когда находился в полной свободе, путешествуя по Марокко с одним лишь рюкзаком. В ушах в те дни частенько звучал Бен(настоящие имя Macklemore) вот с этим треком:

Умные посты в инстаграме

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

Я зачастую задумывался, реально читает ли кто-то эти огромные посты? Лично мне, смотря ленту хочется просто глянуть фоточку, прочитать две строчки описания и тапнуть два раза по ней. Если мне действительно захочется узнать что это за место, я вряд ли буду искать эту фоточку и читать описание, проще будет загуглить.

Как будто хуже таких постов может быть только #ОгромныеНепонятныеХештеги в подписях.

Музыка по пятницам. Armin van Buuren.

Пятница — для меня, как и для многих других давно уже не просто день недели, а нарицательное.

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

Скорее всего в ближайшее время я буду делиться миксами с недавно прошедшего фестиваля Tomorrowland. Первый микс для пятницы уже здесь, встречайте Armin van Buuren live at Tomorrowland 2017:

p.s. если не зайдет, посмотрите хотя бы запись с момента 30:45. Шоу что надо было!

Кадрирование изображений в вебе. (Пример на Битриксе)

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

При этом я обычно наблюдаю два сценария:
№1. Допустим у нас есть лента новостей, и у каждого поста есть превью размером 200x400. Контент-менеджер грузит в админку горизонтальную фотку и ожидает что в ленте, где все фоточки вертикальные они встанут красиво. В таких случаях я обычно кроплю фотки, загоняя их в заданный размер, в 99,9% это происходит «тупо» по центру, при этом код выглядит как-то так:

$imageFile = CFile::GetFileArray($arItem["PREVIEW_PICTURE"]["ID"]);
$arFileTmp = CFile::ResizeImageGet($imageFile,  array("width" => 388, "height" => 215),  BX_RESIZE_IMAGE_EXACT,  false,Array("name" => "sharpen", "precision" => 15));
$photo_img = $arFileTmp["src"];

№2. Во-втором случае речь обычно идет о ленте с партнерами, либо о карусели с «нашими клиентами», либо о слайдере с отзывами и т. п. В общем о случаях, когда важно показать все изображение, без обрезки. В таком случае у нас имеется некая область с заданным размером, и мы скриптом «вгоняем» нашу картинку туда. Предварительно необходимо понять изображения вертикальное или горизонтальное, дабы получить оптимальные размеры для последующей обработки функцией ResizeImageGet().

if ($imageFile["WIDTH"] > $imageFile["HEIGHT"]) 
{
	
	$width = 360;
	$height = $imageFile["HEIGHT"] * $width / $imageFile["WIDTH"];
	if ($height > 270) 
	{
		$width = 360*271/$height;
		$height = 270;
	}
}
else
{
	$height = 270;
	$width = $imageFile["WIDTH"] * $height / $imageFile["HEIGHT"];
}
$arFileTmp = CFile::ResizeImageGet($imageFile,  array("width" => $width, "height" => $height),  BX_RESIZE_IMAGE_EXACT,  false,Array("name" => "sharpen", "precision" => 15));
$photo_img = $arFileTmp["src"];

Код далеко не оптимальный, набросан «на скорую руку». В примере область для загрузки изображений размером 360x270.

 3   2017   bitrix

Первая заметка

Обычно первая заметка у блогеров бывает в стиле: «Привет мир! Это моя первая заметка!».

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

Писать в целом буду больше про технологии в целом и web-разработку в частности, не обойдется без постов про музыку и всего того, что меня окружает. Заранее прошу прощения за периодические ошибки в постах, и буду благодарен за их исправления. Если вдруг так получится, что вы захотите со мной лично пообщаться, смело можете стучать вот сюда: t.me/gilyazov

Ну что ж, Начнем!!!