Мысли о программировании, жизни и христианстве.

Позднее Ctrl + ↑

Яндекс.XML или паранойя по-русски

Добавляю новый функционал к плагину Аддурилка и столкнулся какой-то паранойей Яндекса.

Кодеры, парсить наши странички нехорошо, поэтому мы представляем вам наш сервис Яндекс.XML.

Сервис для получения ответов поисковой базы Яндекса в формате XML. Может использоваться для разработки поиска по сайту, группе сайтов или всей сети.

Ок. Начинаю вкручивать и... У меня появляется желание «побить» кого-нибудь из разработчиков Яндекс.XML. А мне нельзя бить и желать. Я христианин. Почему такое желание?

Во-первых, ограничение по количеству обращений. Вы поисковик же, ну какие лимиты?
Во-вторых, два уникальных идентификатора. Я должен указать user и key. Одного недостаточно?
В-третьих, привязка к IP. Это меня добило! Пишут.

IP-адрес в совокупности с учетной записью в Яндекс.Паспорт используются для однозначной идентификации пользователя сервиса Яндекс.XML. По итогам идентификации пользователя определяются ограничения, накладываемые на использование сервиса.

Вы где и в каком веке живете? Многие провайдеры выделяют только динамические IP и на одном IP хостинга находится куча сайтов. А знаете какой выход они предлагают?

Причина Возможный метод устранения
Для обращений к Яндекс.XML используется открытый прокси-сервер. Используйте прокси-сервер интернет-провайдера.
Для доступа к интернету используется модем. Провайдер выделяет динамический IP-адрес, который может различаться при каждом подключении. Попробуйте отключиться и заново подключиться к интернету.
Обращение к сервису выполняется с сервера. Приобретите выделенный IP-адрес.

Спрашивается, вы для кого сервис сделали?

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

А Гугл? А Гугл просто http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=ЯНДЕКС.XML&start=1&rsz=8

P.S. Все цитаты взяты из документации Яндекса.

Что изменить в логотипе?

Достался по наследству на работе (христианское учебное заведение) следующий логотип. Интересно стало мнение дизайнеров. Что вы бы изменили и почему? Основные проблемы, на данный момент, возникают при работе с надписью (не читается) и кругом (шумит).

Описание и символика эмблемы для юстиции

Описание эмблемы

Эмблема состоит из темных контуров двух стилизованных изображений: 1) лампады (античного светильника) и 2) пламени, которое, вместе с тем, выглядит как раскрытая книга и голубь. Изображения помещены на фоне светлого круга, образованного мелкими горизонтальными полосками, среди которых просматривается четырехугольный вертикальный крест. С внешней стороны круга помещен девиз учебного заведения — «Освящая путь истиной в новом тысячелетии».

Символика изображений

  1. Светильник в виде древней лампады — символизирует как отдельного человека, так и организацию в целом, несущую свет просвещения, истину Евангелия, тепло, добро и служение окружающему миру. Архаичный вид светильника указывает на древность корней Церкви, иллюстрирует культурный быт времен Нового Завета и напоминает образные слова Иисуса Христа о том, что задача светильника (т. е. христиан) светить всем людям (Мф. 5:14,16).
  2. Огонь или пламя — это а) Свет истины Евангелия, б) символ нашего духа, горящего любовью к Богу и светящего окружающим людям, в) символ искренней молитвы. Оно также напоминает нам об огне Святого Духа, который сошел на Апостолов в виде языков пламени, сделав их способными нести свет Евангелия народам земли (Деян. 1:8; 2). И мы как духовное учебное заведение ожидаем постоянного присутствия Духа Божия, без которого не можем делать никакого доброго дела.
  3. Голубь — это не только общепризнанный вестник мира, но и один из символов Духа Святого в Новом Завете. Дух Святой сходит на Иисуса Христа во время крещения в реке Иордан (Лук. 3:21-22) для видимого свидетельства о том, что он является Сыном Божиим, Мессией, Спасителем о котором писали пророки.
  4. Книга — символ Библии — Слова Божия, источника духовного просвещения, несущей весть о спасении. Эта книга изображена открытой, т. к. богословское образование делает Священное Писание более понятным студентам, буквально говоря, открывает его. Это также символ книжного знания, обучения, что является неотъемлемой частью любого образовательного процесса.
  5. Круг — символ вечности, гармонии и общности в тесном общении.
  6. Крест — известный всем символ христианства и иллюстрация постоянной борьбы земного (горизонталь) и небесного (вертикаль).
  7. Надпись — девиз «Освящая путь истиной в новом тысячелетии» конкретизирует идеи, заложенные в эмблему.

Аддурилка или мой первый плагин для Wordpress

Вот так выглядит «Аддурилка» для CMS Wordpress

Написал свой первый плагин для Wordpress. Даже отправил его на WordPress.org. Называется «Addulika». Из названия понятно, что он служит для добавления ссылок публикаций в Яндекс.Вебмастер. Также он может проверить находится ли ссылка (проиндексирована ли) уже в поисковике.

Из планов на будущее:

  • Прикрутить возможность отправлять ссылки в другие поисковики.
  • Автоматизировать процесс проверки ссылки. Сразу проверялась и отображался результат.

Два совета для разработчиков:

  • Обдуманно упоминать в названии плагина наименования известных брендов.
  • Наименования функций в плагине нужно придумывать исходя из его уникального названия.

P.S. Вопрос знатокам русского языка. Кавычки в наименовании. Когда ставятся, а когда ими можно пренебречь?

Настройки MAMP Pro для слабого интернета.

Слабый интернет, поэтому я стряхнул пыль с MAMP Pro и начал работать в нем. Возникла необходимость обновить ядро проекта с интернета и я получаю ошибку 500, а в логах следующее:

FastCGI: comm with server "/Applications/MAMP/fcgi-bin/php5.6.10.fcgi" aborted: idle timeout (30 sec)

Выход был найден при прочтении «FastCGI error when accessing a local development site using MAMP Pro».
Последовательность действий:

  1. Перейти в MAMP Pro File → Edit Template → Apache → httpd.conf
  2. Выполнить Find & Replace для MAMP_FastCgiServer_MAMP
  3. Закомментировать MAMP_FastCgiServer_MAMP
  4. Добавить линию конфигурации для вашей версии PHP с временным периодом, который вас устраивает:
FastCgiServer /Applications/MAMP/fcgi-bin/php5.6.10.fcgi -idle-timeout 3600

В результате в вас получится в httpd.conf следующее:

#MAMP_FastCgiServer_MAMP
FastCgiServer /Applications/MAMP/fcgi-bin/php5.6.10.fcgi -idle-timeout 3600

P.S. Важно не забыть вернуть все назад, когда появится нормальный интернет.

Time Machine на Tomato by Shibby для Asus RT-AC68U

Озадачился вот своим роутером. Надоела нестабильность стоковой прошивки и решил попробовать что-то новое. Решил поставить Tomato by Shibby. Про установку из под Windows достаточно подробно написано в публикации «ASUS RT-AC68U — How to flash TomatoUSB for RT-AC68U». Но у меня уже стояла прошивка от Merlin с открытым Telnet, поэтому все ограничилось подключением к роутеру и командами nvram erase, затем nvram commit, выбором файла с последней (131) прошивкой на её сайте и установкой.
В отличии от стоковой, у этой прошивки нет встроенной поддержки Time Machine, поэтому её пришлось добавить. Операция проходила в два этапа.

Этап первый: Установка репозитория Entware

Раньше нужно было сделать много манипуляций, но сейчас репозитории для моего роутера устанавливается достаточно просто. Проверьте доступ по SSH в роутере Administration → Admin Access и в путь.
Для флешки отформатированной в ext2/ext3 с меткой ENTWARE делаем следующие настройки роутера в USB and NAS → USB Support:
В поле Run after mounting вносим:

#!/bin/sh
/opt/etc/init.d/rc.unslung start

и в поле Run before unmounting следующее:

#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 15
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
  mount -o remount,ro $i
done

Не забываем сохранить изменения. Переходим в Administration → Scripts → Init page, вводим

echo "LABEL=ENTWARE /opt ext3 defaults 1 1" >> /etc/fstab

и вновь сохраняем. Перегружаем роутер и устанавливаем Entware. В текущей прошивке он устанавливается простой командой через Telnet.

entware-install.sh

Дополнительно об установке можно почитать в статье «Устанавливаем Entware.arm на маршрутизатор с прошивкой tomato от Shibby»

Этап второй: Настройка Time Machine

Приступим к настройке Time Machine и начнём с установки нужных пакетов. Может они не все нужны, поэтому комментарии экспертов приветствуются!
Устанавливаем netatalk для реализации протокола AppleTalk нужного для Time Machine и  avahi-daemon с утилитами, для имитации сервиса Bonjour. Bonjour нужен для наглядного представления Time Machine в Mac OS. Слухи ходят, что netatalk сам это умеет и он не нужен
Пакет busybox даст нам возможность использовать некоторые недоступные Unix команды. Например, добавлять пользователей.

opkg install netatalk avahi-daemon avahi-utils busybox

Создаём файл S00setup с первой строкой #!/bin/sh для загрузки настроек нужных для Time Machine при перезагрузке роутера и кладём его в /opt/etc/init.d/S00setup
Теперь сделайте его исполняемым

chmod +x /opt/etc/init.d/S00setup

Настраиваем avahi

Настройку avahi начинаем с создания файла afpd.service со следующем содержанием

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
    <service>
    <type>_afpovertcp._tcp</type>
    <port>548</port>
  </service>
  <service>
    <type>_device-info._tcp</type>
    <port>0</port>
    <txt-record>model=TimeCapsule6</txt-record>
  </service>
</service-group>

который кладём по следующему пути /opt/etc/avahi/services/afpd.service
Редактируем /opt/etc/avahi/avahi-daemon.conf, раскомментировав линию host-name и дав имя:

host-name=TimeCapsule

Чтобы TimeCapsule показывалась в Finder всем, нужно добавить группу nogroup для всех пользователей.

addgroup nogroup

Делаем автосоздание группы при перезапуске пользователя.

echo "addgroup nogroup" >> /opt/etc/init.d/S00setup

Запускаем avahi

/opt/etc/init.d/S42avahi-daemon start

и в боковой панели Finder должена появиться TimeCapsule.

Настраиваем netatalk

Приступаем к самому важному. Настраиваем netatalk начиная с редактирования файла /opt/etc/netatalk/AppleVolumes.default. Добавляем в конце следующую строку:

/mnt/LABELDISK/TimeMachine "TimeMachine" volsizelimit:300000 
veto:"/lost+found/Network Trash Folder/Temporary Items/" cnidscheme:dbd options:usedots,upriv,tm allow:USER

, где /mnt/LABELDISK/TimeMachine — путь к папке, где будут хранится бекапы;
«TimeMachine» — имя расшаренного ресурса, которое появится в настройках Time Machine в Mac OS;
volsizelimit:300000 — максимальный размер бекапов (~314GB);
veto:«/lost+found/Network Trash Folder/Temporary Items/» — прячем не нужные папки;
cnidscheme:dbd — уменьшаем количество ошибок (может влиять на скорость создания бекапа);
options:usedots,upriv,tm — показываем что можно использовать для создания Time Machine и кто может это делать;
allow:USER — пользователь имеющий доступ к папке для бекапов, которого мы сейчас создадим.

Поменяем конфигурацию netatalk по следующему пути /opt/etc/netatalk/afpd.conf удалив или закомментировав старую и вставив новую

- -tcp -noddp -uamlist -uams_dhx.so,uams_dhx2_passwd.so -nosavepassword

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

Создаём пользователя USER с паролем PASS (это пример, пароль какой вы хотите) и даём ему права на папку для бекапов.

adduser USER
chown -R USER /mnt/LABELDISK/TimeMachine/

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

echo 'adduser USER' >> /opt/etc/init.d/S00setup
echo 'echo -e "PASS\PASS" | passwd USER' >> /opt/etc/init.d/S00setup

Вот тут загвоздка! Пользователь создаётся, но пароль ему не присваивается. Может кто подскажет?

В результате у нас получается следующее содержимое файла /opt/etc/init.d/S00setup

#!/bin/sh
addgroup nogroup
adduser USER
echo -e "PASS\PASS" | passwd USER

Перезапускаем netatalk

/opt/etc/init.d/S27afpd restart

Или просто перезагрузите роутер целиком. Теперь вы должны подключиться к TimeCapsule как созданный выше пользователь и настроить Time Machine на Mac OS.

P.S. Я ещё не достаточно долго тестировал работу Time Machine на Tomato by Shibby и мог что-то забыть, поэтому возможны неточности.
P.S.S. Дополнительно можно почитать «Using an ASUS router as a Time Capsule», «Concisest guide to setting up Time Machine server on Ubuntu Server 12.04, 14.04 & Debian» и «Time Capsule on OpenWRT (Apple File Protocol Server with Time Machine Support)».

Церковный сайт: веб-мастер и команда

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

Люблю советы по существу. Нравится публикация «70+ tips for effective church sites». Привожу часть советов в вольном переводе. К ним буду добавлять другие советы и комментарии. Чтобы не громоздить в одну публикацию, разобью советы по темам. Потом соберу эти публикации в отдельный проект.

  1. Церковный веб-мастер или команда нуждается в чёткой должностной инструкции.
    Руководство церковью должно чётко обозначать обязанности людей участвующих в работе сайта. Если руководитель команды или веб-мастер не входит в руководство церкви, то он помещается в зону прямой ответственности перед церковными лидерами. Тем не менее те, кто не разбирается в вопросах связанных с сайтом, не навязывают веб-мастеру собственными представлениями о веб-дизайне! Церковь поощряет веб-мастера или команду сайта стоя за кулисами.
  2. Церковному веб-мастеру (или команде) необходимо составить план предстоящей работы.
    Церковь обозначает какого вида труд ожидается от тех, кто участвует в проекте. Это выражается в тех задачах, которые решает сайт в контексте видения церкви. Для команды, полезные инструменты — это системы совместной работы над проектами типа Битрикс24, Мегаплан, Asana, Basecamp или любые другие.
  3. Крупный церковный сайт желательно создать на системе управления контентом (CMS). В CMS удобно структурировать и управлять содержимым сайта и предоставлять разным людям доступ к его редактированию без участия веб-мастера. В многочисленной церкви она позволит служениям оперативно размещать последние новости и править информацию, используя только интерфейс браузера и доступ по паролю. Это удобное решение для командной работы и для поддержания сайта в актуальном состоянии.
    Существует много CMS. Поищите подходящую вам на CMSmatrix или OpenSourceCMS. Потратьте время, чтобы найти CMS подходящую вам лучше других. Рекомендую воспользоваться рейтингами Ruward или CMSmagazine.
  4. Что делать, если в вашей церкви нет никого технически подготовленных на роль веб-мастера? Используйте готовые шаблоны сайтов церкви. Это также ответ к вопросам возникающим если создатель сайта покидает церковь не подготовив себе замену. При этом никто не представляет, как обновить или изменить на сайте информацию.
    Существуют конструкторы сайтов (даже христианские) предлагающие готовые шаблоны церковных сайтов на платной или бесплатной основе. Об них в этой статье «Церковный сайт: Конструкторы сайтов». Содержимое добавляется и меняется с помощью визуальных редакторов в браузере. Перед выбором потратьте некоторое времени, чтобы сравнить предложения.
    Другой вариант это шаблон для CMS или HTML. Поискать можно здесь или в Яндексе или Google по запросу «church themes».
  5. Команда — это не всегда люди рядом. Учитесь у других. Общайтесь с другими христианскими веб-мастерами. Сделайте ряд манипуляций мышкой для поиска помощи.
    Существуют форумы и другие ресурсы, где церковные веб-мастера общаются на интересующие их вопросы. Используйте Google или Яндекс для поиска решения технических проблем. Вдохновитесь на обновления дизайна сайта просматривая и изучая другие церковные сайты. Даже один верный в малом человек, достигнет многого.
  6. Привлекайте членов церкви к молитве и поддержке администраторов сайта, модераторов и новых церковных веб-проектов. Это и их сайт!
    Ваша церковь — это уже команда! Проясняйте для них цели сайта и нужды, просите молиться за эффективность охвата аудитории и о том, чтобы он стал известен новым людям. Члены церкви, у которых есть блоги или другие типы сайтов, могут использовать их, чтобы придать сайту церкви более высокий рейтинг в сети.

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

Администратор — человек любящий сроки и способный объединить разных людей над одной задачей.
Иллюстратор — человек умеющий рисовать и знающий слова Photoshop, Corel, Illustrator.
Фотограф — тот, кто не мыслит себя без камеры, Instragram и интересных ракурсов.
Корректор — виртуоз, владеющий знаками орфографии и чувствующий великий и могучий русский язык.
Интервьюер — тот, кто может задавать правильные вопросы и затем перенести ответы в прозу.
Корреспондент — тот, кто появляется в нужном месте и в нужное время и способен описать происходящее.
Редактор — человек способный мыслить глобально и понимать, что люди ищут на сайте о вашей церкви.
Разнорабочий — верный человек не боящийся повторяющихся действий и нужной, но простой работы.
Кодер — человек которого не пугают непонятные символы и знающий тайны php, html, css и js.

Битрикс: Выводим адреса элементов инфоблока на одной Яндекс карте

Столкнулся в Битрикс с задачей вывода на одной карте расположения всех офисов компаний. Данные о расположении офиса хранились в переменной «MAP» типа «Привязка к Яндекс. Карте» свойств элемента инфоблока «Офисы». В процессе решения родился следующий код:

// Берём все значения инфоблока с ID равным 10. Вам нужно подставить свой ID.
$mas = CIBlockElement::GetList(array(), array( "IBLOCK_ID" => 10 )); 

while ( $oElement = $mas->GetNextElement() ) {
  $aElement['PROPERTIES'] = $oElement->GetProperties(); // Берём значения элемента инфоблока

  // Координаты хранятся в переменной MAP (подставьте вашу переменную) через запятую, разделим их
  $arTmp = explode(',', $aElement['PROPERTIES']['MAP']['VALUE']); 
  //Подготовка карты
  $arResult['POSITION']['yandex_scale'] = "5"; // Подбираем размер карты, чтобы поместились все маркеры
  // В yandex_lat и yandex_lon заносим координаты центральной точки карты
  $arResult['POSITION']['yandex_lat'] = $arTmp[0]; // В нашем случае координаты первого элемента инфоблока
  $arResult['POSITION']['yandex_lon'] = $arTmp[1];
  //Собираем маркеры
  $arResult['POSITION']['PLACEMARKS'][] = array(
    'LON' => $arTmp[1], // LON и LAT - координаты маркера
    'LAT' => $arTmp[0],
  );
}
// Выводим карту с метками через компонент Битрикса для карт Яндекса (Яндекс.Карты: настраиваемая карта)
$APPLICATION->IncludeComponent(
  "bitrix:map.yandex.view",
  "",
  Array(
    "INIT_MAP_TYPE" => "MAP",
    "MAP_DATA" => serialize($arResult['POSITION']),
    "MAP_WIDTH" => "978", // Ширина карты
    "MAP_HEIGHT" => "400", // Высота карты
    "CONTROLS" => array("ZOOM", "TYPECONTROL", "SCALELINE"),
    "OPTIONS" => array("ENABLE_SCROLL_ZOOM", "ENABLE_DBLCLICK_ZOOM", "ENABLE_DRAGGING"),
  )
);

P.S. Настройки компонента карт Яндекса можно посмотреть вот здесь.

Сейфинг или псевдоанглицизм в русском языке

Встретил слово «сейфинг» и воспротивилась русская душа. Возмутился во мне разум! И узнал я о псевдоанглицизме. Что это за явление?

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

Людинг простинг восхитинг вашинг уминг!

Пример текста с псевдоанглицизмами.

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

P.S. Как вы относитесь к псевдоанглицизму?

Финансовый фильтр для мозга

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

Ранее Ctrl + ↓