Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Это idle-игра стратегия о рыцарях, исследованиях, крафте и сражениях, которая предоставляет пользователям расслабляющий опыт. Игра не требует концентрации и идеально подходит, когда вам нужно сделать перерыв или отдохнуть.

Герои Мини-Королевства

Кликер, Стратегии, Мидкорные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Habrahabr

С этим тегом используют

Habr Комментарии Все
963 поста сначала свежее
1
antson
antson
7 месяцев назад

Осеннее обострение ?⁠⁠

Осеннее обострение ? Habr, Пофигизм

Некроманты влезли с комментариями к моим старым ответам.

Осеннее обострение ? Habr, Пофигизм
Осеннее обострение ? Habr, Пофигизм

Одна критика, а где конструктив ?

Оба новореги. Но на тостере я промолчу. так как чту 3.4 и 5.16 правил

Показать полностью 2
[моё] Habr Пофигизм
1
345
astrobeglec
Топовый автор
7 месяцев назад

Ответ на пост «Почему я не хожу больше на habr.com»⁠⁠5

Был не с первых дней на Хабре, но инвайт получал во времена, когда сообщество было крайне малоизвестным.

Если взять судьбу Пикабу и Хабра и сопоставить, то в целом будет похожая ситуация.

Оба проекта на старте были за идею, качественный продукт, уникальный контент...

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

Получить инвайт - достижение, которого удостаивались немногие.

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

А потом туда пришел бизнес... И ресурс скатился.

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

Да, на Хабре ещё есть крутые статьи и авторы. Просто листать овер9000 постов чтобы найти тот самый крутой авторский пост вообще не интересно.

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

[моё] Программист Программирование IT Разработка Текст Habr Волна постов Ответ на пост
36
5
Hasheck
Hasheck
7 месяцев назад

Ответ на пост «Почему я не хожу больше на habr.com»⁠⁠5

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

[моё] Программист Программирование IT Разработка Текст Habr Ответ на пост Волна постов
7
392
XaLjaLniySween
XaLjaLniySween
7 месяцев назад

Ответ на пост «Почему я не хожу больше на habr.com»⁠⁠5

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

Вон в комментах человек отписался, что ему слили карму, потому что он посмел утверждать, что майкрософт целенаправленно привязывают пользователей к своим стандартам. #comment_329433616

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

А никого блять не смутило, как эпл выкатили обновление в свою ОСь для приваси и делишн полиси, обязывающее разработчиков выводить перед игрой диалоговое окно GDPR политики с подтверждением о сборе анонимной аналитики, при том со своим шаблоном текста, который обещает, что если ты согласишься, тебя чуть ли не в рабство продадут. И за год убили целую отрасль гиперказуальных игр, которые завязаны на таргетинговой рекламе. А почему? А потому что "схуяль какие-то voodoo, saygames, azur, homa, rolic, zplay, lion, moone etc. лутают миллиарды денег, выплачивая за рекламные кампании агрегаторам, а эпл сосет хуй? Непорядок блять! Где наши 30% от IAPов? Ну ка быстро придумали, как прикрыть лавочку!" То есть они не теряли прибыль, они ее недополучали, считая чужие деньги, это при том, что в таких играх внутриигровые покупки тоже были... И вместо того, чтобы договариваться, эти петухи просто взяли и грохнули целую отрасль геймдева во имя "заботы о юзерах".

А как топ менеджмент Unity ебанулся в край, получив монополию на рынке мобильных игр и потребовал от миллионов разработчиков такие отчисления, при которых весь смысл модели LTV > CPNU(CPI + органический трафик) пошел в жопу. При том не для крупных разработчиков и издателей, которые не делят ревеню шеар с кем-то, у которых есть свои площадки и которые могут хоть на собственный движок портировать проекты, а для одиночек и малого геймдев бизнеса, которые и так хуй без соли доедают.

При том не защищены от монополии даже крупные бизнесы. Чего стоит только удаление Fortnite из стора и суд Apple и Epic... Epic на этом потеряли миллиарды долларов, которые им никто не возместит. Так что на малый бизнес эти петухи тем более срать хотели с высокой колокольни.

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

А то что Хабр - сборище соевых ебланов с огромным ЧСВ, это мне стало понятно еще в 2009 году(когда он еще был хабрахабр), мне было достаточно прочитать пару веток с комментариями под самыми обычными постами.

Показать полностью
[моё] Программист Программирование IT Разработка Текст Habr Мат Ответ на пост Волна постов
66
3208
Z316
Z316
7 месяцев назад

Ответ на пост «Почему я не хожу больше на habr.com»⁠⁠5

Году в 2013-2014 я написал комментарий к статье от ребят которые продавали на тот момент дорогие DLP 3д принтеры, тогда все такие принтеры были дорогие, потому что китай еще не пришел на рынок.
Так вот, ребята топили что мол в стоматологической лаборатории надо вот прям срочно всем переходить на печать рабочих моделей из фотополимерных смол, мол и быстрее и дешевле, а по старинке из гипса это фу и грязно, и вообще не точно и писали они это чето листов 5-6 фолрмата а4.
Так как я прям скажем в теме, и просто офигел от такого фарса, покрутил пальцем у виска и начал писать коммент, я написал им коммент аля пол листика а4, с выкладкой цен на их метод, с покупкой сканера, принтера, материалов и тп, сравнил время подготовки, чистоту процесса(кто печатает на длп принтерах знает что смола от них рано или поздно появляется везде где можно, что модели надо мыть и тп, и это не фига не чище чем гипс, хотя бы по химическому загрязнению). Привел абсолютные цифры с официальных источников. Привел аргументы против их методов(не дешевле, не чище, дорогое доп оборудование, сильно медленнее, не фига не точно как они пишут, с цифрами). Получилась разница в цене почти в 10 раз, что с их идеальной моделью продаж никак не сходилось=)
И что вы думаете? коммент потерли, а мне вообще запретили комментировать на хабре, такой подставы я по наивности не ждал, так что либо их мнение, либо никакого, после этого я там больше не бываю, как бы все ясно с ними=)

IT Текст Habr Стоматология Лаборатория 3D печать Ответ на пост Волна постов
203
899
Fantomster
7 месяцев назад

Почему я не хожу больше на habr.com⁠⁠5

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

Пруф: https://habr.com/ru/search/?q=golang&target_type=posts&a...

Программист Программирование IT Разработка Текст Habr Волна постов
243
16
Есть официальный ответ
Аноним
Аноним
8 месяцев назад

Желтый банкомат⁠⁠

Всем добрый вечер. Сегодня произошел пиздец следующего характера. Нужно было пополнить счет через банкомат на крупную сумму (0.5 млн). По итогу банкомат зачел часть денег , часть малую вернул. А 75 тысяч рублей просто испарились. Зачисленная сумма и купюры, которые вернулись в итоге 425. Сразу сообщил в банк по процедуре, была составлена заявка. Для меня деньги большие, я думаю как и для всех. Деньги до этого были пересчитаны на машинке, убраны. Знал где они только я. Любые варианты , что изначально денег было меньше отрицаю. Деменцией и слабоумием не страдаю. Пожалуйста не нужно писать «забыл» «не усмотрел» и так далее. Эти варианты исключены. Начитался схожих кейсов в интернете - сижу в ахуе, что банки в 99% идут в отрицалово. Да и как их проверить? При тебе не вскроют ,не посмотрят , не покажут. Уважаемые сотрудники банков , а может технари , кто имеет опыт, пикабутяне. Подскажите пожалуйста:

  1. Есть ли факт залипания , прилипания и так далее купюр куда-то?

  2. Если да, то какова вероятность, что инкассаторы или техники ( я хз не разбираюсь) могут просто их прикарманить, если они (деньги) упали в условную «щель»?

  3. Я правильно понимаю, что АТМ емеет логи сколько купюр и какого наминала были при первичном пересчете пачки? А то желтый банк тупо написал было принято 77 купюр по 5000 и все. А количество изначального купюр не называют.

    может у вас будут ещё какие-нибудь советы мне в помощь. Заранее спасибо.

Банковская карта Банк Т-Банк Банкомат Деньги Habr Техника Мат Текст
33
Партнёрский материал Реклама
specials
specials

Даже получать удовольствие ты должен с коммерческой выгодой для себя ©⁠⁠

Так говорил греческий судовладелец, миллиардер Аристотель Онассис. Миллиардеры, конечно, живут немножко иначе, но этот принцип вполне распространяется и на «простых смертных». Давайте посчитаем, какую выгоду вы получаете.

Посчитать

Бизнес Выгода Текст
SlyVolunteer
SlyVolunteer
8 месяцев назад
Программирование на PHP

Туториал: компонент интерактивной SVG картограммы для InstantCMS 2⁠⁠

Карта зарплат бюджетников

Сложность: средняя.
Необходимое время: 30 мин.
В статье представлена инструкция по созданию своего компонента для движка InstantCMS2. В конце статьи приведена ссылка на архив с исходным кодом и содержимым всех файлов из этой инструкции. Пример внешнего вида компонента, который можно создать, используя данный туториал, представлен на иллюстрации.

Туториал: компонент интерактивной SVG картограммы для InstantCMS 2 PHP, Веб-разработка, Зарплата, Бюджетники, Маленькая зарплата, Habr, Длиннопост

@akiritch в моем предыдущем посте Продолжение поста «Зарплаты ректората МГТУ им. Н.Э. Баумана» усомнился #comment_325445602 в наличии функции отображения зарплат ка карте по регионам. Поэтому публикую здесь на Пикабу исходный код модуля для движка InstantCMS 2, который мы используем на сайте сообщества Зарплата бюджетников - этот исходный код в свое время был опубликован на Хабре (там фрагменты с кодом более читыемые, потому что сохраняются отступы в начале строк и присутствует подсветка синтаксиса PHP).

Для начала несколько слов про движок соц.сети / сообщества / блогосоциальной сети InstantCMS2. Эта бесплатная CMS может являться отличным компромиссом, возможно, лучшим из существующих.
В базовой версии уже заложен более богатый функционал по сравнению с LiveStreet CMS.

Скриншот сравнения функционала не привожу, потому что по ссылке дана информация не по самой последней версии движка InstantCMS.

Достоинства и недостатки InstantCMS2

Из минусов — количество модулей, дополнений, тем для данного движка достаточно ограничено. Качество технической поддержки немного хромает. Живого активного сообщества вокруг данного движка нет, а регистрация на форуме вообще только по приглашению. Но все эти минусы с лихвой перекрывает факт бесплатности движка InstantCMS 2.

Из плюсов — из коробки предоставляется сразу: форум, профили пользователей с возможность добавления в друзья, статьи, блоги, новости, группы, фотоальбомы, статичные страницы сайта. А также комментарии, ленты RSS, поля RSS, возможность настраивать главное меню, нормальная модерация и вполне удобная админка.

Скачать движок InstantCMS 2 с функцией авто-установки можно с официального сайта проекта.
Процесс установки хорошо документирован и интуитивно понятен.

Свой компонент для InstantCMS2

Перейдем непосредственно к вопросу написания отдельного компонента.

Для создания нового компонента создайте папку, в которой будет ваш компонент (назовем его newcomponent), в директории \SiteDirectory\system\controllers\, т.е полный адрес к созданной директории будет \SiteDirectory\system\controllers\newcomponent\ — все буквы в названии компонента должны быть строчными, это важно!

Далее в этой папке создаем файл frontend.php — это главный файл, без которого компонент не будет работать.

В этом файле создаем класс с таким же названием. Название класса совпадает с названием папки. И этот класс наследуется от системного класса cmsFrontend.
В этом классе мы имеем возможность добавлять методы, описывающие действия компонента.
Что такое действия компонента? Давайте взглянем на следующее изображение:

Туториал: компонент интерактивной SVG картограммы для InstantCMS 2 PHP, Веб-разработка, Зарплата, Бюджетники, Маленькая зарплата, Habr, Длиннопост

Каждый адрес страницы состоит из нескольких сегментов:

  1. /controller — Название компонента.

  2. /action — Название действия. Каждый компонент может иметь несколько действий внутри себя.

  3. /p1/p2/p3/… — Любое количество параметров, необходимых для этого действия.

Как определяется действие компонента? Определяется публичный метод в классе компонента, который называется actionНазваниеДействияСБольшойБуквы. Для главной страницы компонента siteaddress.ru/newcomponent/ необходимо определить метод actionIndex(). Для внутренней страницы компонента siteaddress.ru/newcomponent/act/ необходимо определить метод actionAct().

Файл frontend.php

<?php

class newcomponent extends cmsFrontend {

public function actionIndex() {

$template = cmsTemplate::getInstance();

$template->render('index');

}

public function actionAct() {

$errors = false;

$form = $this->getForm('newForm');

$is_submitted = $this->request->has('submit');

$newForm = $form->parse($this->request, $is_submitted);

if ($is_submitted){
$errors = $form->validate($this, $newForm);

if (!errors) {
$choropleth = $this->model->getChoropleth($newForm);
}

if (!errors) {
cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
}
}

$template = cmsTemplate::getInstance();

$template->render('act', array(
'form' => $form,
'errors' => $errors,
'newForm' => $newForm
));

}

}

?>

Внимательный читатель заметил использование метода $this->model->getChoropleth().
Для использования методов модели в директории \SiteDirectory\system\controllers\newcomponent\ создаем файл model.php
Однако читать данные мы будем из файлов, поэтому поставим здесь заглушку. Описание файла модели приведено с целью обучения.

Файл model.php

<?php

class modelNewComponent extends cmsModel {

public function getChoropleth($average_zarplata) {

$choropleth = array();

return $choropleth;

}

}

?>

Строка $template->render('index'); определяет вывод настоящего шаблона, который должен быть создан в директории \SiteDirectory\templates\default\controllers\newcomponent\. Где \default — название используемой темы на сайте (можно найти и скачать новую тему с сайта сообщества instantcms и изменить используемую тему через админку), папку \newcomponent необходимо будет создать самостоятельно, это папка для шаблонов нового компонента.
В этой папке должен быть создан файл index.tpl.php для главной страницы компонента, и act.tpl.php — для внутренней.

Файл index.tpl.php

<?php

$this->setPageTitle('Заголовок страницы в названии окна браузера');
$this->addBreadcrumb('Название страницы в цепи хлебных крошек');

$this->addToolButton(array(
'class' => 'item',
'title' => 'Название кнопки в меню действий для перехода на внутреннюю страницу компонента',
'href' => $this->href_to('act')
));

?>

<h1>Главный заголовок страницы</h1>
<p>Содержание страницы</p>

Внутренняя страница компонента будет содержать форму выбора параметров.
Для начала создадим папку \forms\ в папке нашего компонента \SiteDirectory\system\controllers\newcomponent\.
В директории \SiteDirectory\system\controllers\newcomponent\forms\ создаем файл form_newForm.php
Форма будет очень простой, она предлагает пользователю выбрать два параметра из выпадающих списков.

Файл form_newForm.php

<?php

class formNewcomponentnewform extends cmsForm {

public function init() {

return array(

array(
'type' => 'fieldset',
'childs' => array (
new fieldList('par1', array(
'title' => 'Параметр1',
'items' => array (
"ТекстовыйИдентификатор1" => "ТекстовыйПараметр1",
"ТекстовыйИдентификатор2" => "ТекстовыйПараметр2"

)
)),
new fieldList('par2', array(
'title' => 'Параметр2',
'items' => array (
1 => "1",
2 => "2"

)
))

)

)

);

}

}

?>

Интерактивная SVG картограмма

После этого перейдем к созданию шаблона для внутренней страницы компонента /act — создаем файл act.tpl.php и размещаем его в директории \SiteDirectory\templates\default\controllers\newcomponent\.
Для создания уникального сервиса воспользуемся разработкой пользователя KoGor (пользуясь случаем, хочу передать огромную благодарность за проведенный KoGor 'ом труд и хорошо оформленную и интуитивно понятную статью) — инфограммой карты Российской Федерации с распределением по регионам.

В результате, у нас должна получится примерно такая приятная карта России:

Туториал: компонент интерактивной SVG картограммы для InstantCMS 2 PHP, Веб-разработка, Зарплата, Бюджетники, Маленькая зарплата, Habr, Длиннопост

Файл act.tpl.php

<?php

$this->setPageTitle('Заголовок страницы в названии окна браузера');
$this->addBreadcrumb('Название главной страницы компонента в цепи хлебных крошек', $this->href_to(''));
$this->addBreadcrumb('Название страницы в цепи хлебных крошек');

$arr_par1_id = array('ТекстовыйИдентификатор1' => 1 ,
'ТекстовыйИдентификатор2' => 2
);


$filename='/upload/zarplata-'.$arr_par1_id[$_GET['par1']].'-'.$_GET['par2'].'.csv';
if (!isset ($_GET['par1']) || !isset ($_GET['par2'])) $filename='/upload/zarplata-1-1.csv';

$this->renderForm($form, $newForm, array(
'action' => '',
'method' => 'get',
'toolbar' => false
), $errors);
?>

<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
<script type="text/javascript" src="http://d3js.org/queue.v1.min.js"></script>
<script type="text/javascript" src="http://d3js.org/topojson.v0.min.js"></script>
<!-- <script type="text/javascript" src="http://d3js.org/topojson.v1.min.js"></script> -->

<style>

path {
stroke:white;
stroke-width: 1px;
}

body {
font-family: Arial, sans-serif;
}

.city {
font: 10px sans-serif;
font-weight: bold;
}

.legend {
font-size: 12px;
}

div.tooltip {
position: absolute;
text-align: center;
width: 150px;
height: 25px;
padding: 2px;
font-size: 10px;
background: #FFFFE0;
border: 1px;
border-radius: 8px;
pointer-events: none;
}
</style>

<script type="text/javascript">
var width = 720,
height = 375;

// Setting color domains(intervals of values) for our map

var color_domain = [10000, 15000, 20000, 30000, 50000]
var ext_color_domain = [0, 10000, 15000, 20000, 30000, 50000]
var legend_labels = ["до 10000 руб.", "10000-15000 руб.", "15000-20000 руб.", "20000-30000 руб.", "30000-50000 руб.", "от 50000 руб."]
var color = d3.scale.threshold()
.domain(color_domain)
.range(["#ff1300", "#ff4e40", "#ff7d73", "#ffba00", "#ffcb40", "#adfcad"]);

var div = d3.select("form").append("div")
.attr("class", "tooltip")
.style("opacity", 0);

var svg = d3.select("form").append("svg")
.attr("width", width)
.attr("height", height)
.style("margin", "10px auto");

var projection = d3.geo.albers()
.rotate([-105, 0])
.center([-10, 65])
.parallels([52, 64])
.scale(500)
.translate([width / 2, height / 2]);

var path = d3.geo.path().projection(projection);

//Reading map file and data

queue()
.defer(d3.json, "/upload/russia.json")
.defer(d3.csv, "<?php echo $filename; ?>")
.await(ready);

//Start of Choropleth drawing

function ready(error, map, data) {
var rateById = {};
var nameById = {};

data.forEach(function(d) {
rateById[d.RegionCode] = +d.AverageZarplata;
nameById[d.RegionCode] = d.RegionName;
});

//Drawing Choropleth

svg.append("g")
.attr("class", "region")
.selectAll("path")
.data(topojson.object(map, map.objects.russia).geometries)
//.data(topojson.feature(map, map.objects.russia).features) <-- in case topojson.v1.js
.enter().append("path")
.attr("d", path)
.style("fill", function(d) {
return color(rateById[d.properties.region]);
})
.style("opacity", 0.8)

//Adding mouseevents
.on("mouseover", function(d) {
d3.select(this).transition().duration(300).style("opacity", 1);
div.transition().duration(300)
.style("opacity", 1)
div.text(nameById[d.properties.region] + " : " + rateById[d.properties.region])
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY -30) + "px");
})
.on("mouseout", function() {
d3.select(this)
.transition().duration(300)
.style("opacity", 0.8);
div.transition().duration(300)
.style("opacity", 0);
})

// Adding cities on the map

d3.tsv("/upload/cities.tsv", function(error, data) {
var city = svg.selectAll("g.city")
.data(data)
.enter()
.append("g")
.attr("class", "city")
.attr("transform", function(d) { return "translate(" + projection([d.lon, d.lat]) + ")"; });

city.append("circle")
.attr("r", 3)
.style("fill", "lime")
.style("opacity", 0.75);

city.append("text")
.attr("x", 5)
.text(function(d) { return d.City; });
});

}; // <-- End of Choropleth drawing

//Adding legend for our Choropleth

var legend = svg.selectAll("g.legend")
.data(ext_color_domain)
.enter().append("g")
.attr("class", "legend");

var ls_w = 20, ls_h = 20;

legend.append("rect")
.attr("x", 20)
.attr("y", function(d, i){ return height - (i*ls_h) - 2*ls_h;})
.attr("width", ls_w)
.attr("height", ls_h)
.style("fill", function(d, i) { return color(d); })
.style("opacity", 0.8);

legend.append("text")
.attr("x", 50)
.attr("y", function(d, i){ return height - (i*ls_h) - ls_h - 4;})
.text(function(d, i){ return legend_labels[i]; });

</script>

Исходные данные для картограммы

Для того, чтобы карта заработала, остался последний шаг. Размещаем файлы cities.tsv, russia.json, zarplata-1-1.csv, zarplata-1-2.csv, zarplata-2-1.csv, zarplata-2-2.csv (приведены в архиве, ссылка на который есть в конце статьи) в директории \SiteDirectory\upload\.

Заходим по адресу siteaddress.ru/newcomponent/act/ — здесь все регионы на карте России подкрашены темно-серым цветом и при наведении появляется название региона — NaN. Для отображения каких-нибудь реальных данных замените значения в последнем столбце .csv файлов на численные данные.

Демо компонента

Подобный модуль разработан мною для сайта ЗарплатаБюджетников.РФ в разделе Карта зарплат. Демо модуля можно посмотреть по ссылке. (сейчас данных нет, модуль отключен, а чтобы собрать карту, нужны регистрации с указанием зарплат и регионов от пользователей)

Бонус

Напоследок, небольшой хинт. В дефолтном шаблоне по умолчанию в InstantCMS 2 боковая колонка вместе с меню действий пропадает при уменьшении ширины окна браузера. Но на мобильных девайсах исчезновение боковой колонки и меню действий очень не удобно, т.к. у пользователей пропадает довольно таки много возможных действий. Для изменения этой ситуации можно проделать следующее. Найдите в директории \templates\default\css\ файл theme-layout.css, и замените в нем кусочек кода

/* Media Queries ============================================================ */

@Media screen and (max-width: 980px) {
#body section { width:100% !important; }
#body aside { display:none; }
}

@Media screen and (max-width: 800px) {
#body section { width:100% !important; }
#body aside { display:none; }

на

/* Media Queries ============================================================ */

@media screen and (max-width: 980px) {
#body section { width:100% !important; }
#body aside { width:100% !important; }
}

@media screen and (max-width: 800px) {
#body section { width:100% !important; }
#body aside { width:100% !important; }

Т.е. по факту необходимо исправить всего 2 строчки #body aside { display:none; } на #body aside { width:100% !important; } — после этого боковая колонка при уменьшении ширины браузера будет съезжать в основную колонку после находящегося в нем контента (перед футером).

Исходный код

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

Показать полностью 3
[моё] PHP Веб-разработка Зарплата Бюджетники Маленькая зарплата Habr Длиннопост
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии