Архив рубрики: Публикации

Чертовщина с “окнами”. Сказка для младших технических сотрудников

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

Но буквально через пару часов был звонок из другого офиса. Там уже властный мужской голос требовал, вылечить паразита, который не даёт ему с мышкой работать, а дёргает её. Запустили админы проверки антивирусные, да утилиты разные. Но нашли ничего и решили, что с железом проблема. На коврик дрова не установлены. И никто не сложил, что пользователи работали на одном удалённом сервере через RDP, и машины клиентские были под ОС Windows 8 от  брэндовой двух-буквенной компании. А далее все ещё хуже: звонить стали с филиалов разных, проблемы разные были там и с включенными пробросами принтеров, и не работала RDP, и другие весёлости.

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

Валерий Кулик

http://efsol.ru/solutions/data-protection.html

Автор: Виктор Лукаш

Функции пагинации в WordPress 4.1

Знали ли вы, что частой причиной взлома сайтов на WordPress являются вредоносные темы и плагины? Читайте подробности: Учебное пособие по безопасности WordPress.

Обновление: версия 4.1 вышла 18 декабря.

В WordPress версии 4.1 появятся несколько новых функций для упрощения навигации в темах: the_post_navigation, the_posts_navigation и функция пагинации the_posts_pagination.

Для постраничной навигации многие темы для WordPress внедряют поддержку таких плагинов, как WP-PageNavi, а начиная с темы Twenty Fourteen, некоторые авторы последовали примеру стандартной темы и стали выполнять пагинацию с помощью встроенной функции ядра paginate_links.

Использование этой функции часто требует большое количество кода и иногда включает логику для работы с постоянными ссылками модуля WP_Rewrite, данными о запросе WP_Query и прочее. Начиная с WordPress версии 4.1 разработчики ядра обернули эту логику в одну простую функцию.

the_posts_pagination()

Функция the_posts_pagination() вставляет блок пагинации в тему WordPress:

<?php paginate_links(); ?>

 

twentyfifteen-pagination-wordpress

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

Например, можно добавить символ № перед каждым номером страницы:

the_posts_pagination( array( 

    'before_page_number' => '&#8470;', 

) );

 

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

  • show_all — показывать все страницы
  • end_size — количество страниц в начале и конце списка
  • mid_size — количество страниц слева и справа от текущей страницы

Например:

the_posts_pagination( array(

    'end_size' => 2,

    'mid_size' => 2,

) );

 

Данный код будет отображать первую, вторую, предпоследнюю и последнюю страницы, независимо от текущей. А вокруг текущей страницы будет по две страницы с каждой стороны. На примере темы Twenty Fifteen это будет выглядеть следующим образом:

twentyfifteen-pagination

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

the_posts_navigation

Функция the_posts_navigation() является менее привлекательной альтернативой функции the_posts_pagination(). Она выводит лишь ссылки на следующую и предыдущую страницы относительно текущей.

До WordPress 4.1 данные ссылки можно получить с помощью функций get_next_posts_link() и get_previous_posts_link(), которыми на сегодняшний день пользуются большинство авторов тем для WordPress. Начиная с версии 4.1 авторы могут существенно упростить вывод подобных ссылок:

<?php the_posts_navigation(); ?>

 

С помощью ключей prev_text и next_text передаваемого массива, можно изменить текст ссылок. По умолчанию используется «Старые записи» и «Новые записи», что подойдет для большинства случаев.

the_post_navigation

Функцию the_post_navigation() можно использовать в шаблоне вывода одной записи. Данная функция отображает ссылки на следующую и предыдущую записи относительно текущей. Она также хорошо подходит для использования в шаблонах прикрепленных файлов.

<?php the_post_navigation(); ?>

 

Аргументами prev_text и next_text можно изменить текст, куда строкой %title можно вставить заголовок следующей или предыдущей статьи:

the_post_navigation( array(

    'next_text' => 'Следующая запись: %title',

    'prev_text' => 'Предыдущая запись: %title',

) );

 

Заключение

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

Следует отметить, что все три функции выводят результат сразу на экран. Если вы хотите записать результат в переменную, сделать это можно добавив префикс get_ к любой из них, например get_the_posts_pagination().

Напоминаем, что WordPress версии 4.1 выйдет в декабре 2014 года вместе с новой стандартной темой Twenty Fifteen.

Функции пагинации в WordPress 4.1



2014-12-24T13:08:51
Лучшие учебники по Wodpress

Создание правила политики ip-безопасности (IPsec)

Создание правила политики ip-безопасности (IPsec)

После того, как вы создали политику безопасности IPsec в GPO, необходимо создать правила и фильтра ip-безопасности в данной политике. Свойства политики открываются сразу после того как вы нажимаете  закончить(finish), при её создании. В данном примере откроется свойства политики «Polis» созданная в предыдущей статье.

Во вкладке «Правила(Rules)» нажимаем кнопку «добавить(add)» Читать

Создание фильтра политики ip-безопасности (IPsec)

В данной статье описано как создать список в «Мастере IP фильтра (IP Filter Wizard)

Мастер вызывается в процессе создания правила политики ip-безопасности, на странице «Список IP-фильтров (IP Filter List)» при нажатии кнопки «Добавить (Add)». Читать

ZTE V965 – обзор бюджетного смартфона

Сразу необходимо сказать, что данный смарт нельзя официально купить в СНГ. Официально к нам поставляется модель ZTE V880H, которая является полным аналогом героя нашего обзора. Но ценник на V880H не такой «вкусный», как на V965.

А теперь перейдём непосредственно к обзору. Итак, перед нами классический моноблок с 4,5-дюймовым экраном, интересным дизайном и всеми необходимыми функциями на борту.

ZTE V965

 

… далее о смартфоне ZTE

Подключение к Arduino различных элементов

RGB светодиод с общим катодом

Самая длинная ножка — катод, его подключаем на GND (земля). Остальные ножки отвечают за конкретный свет; их подключаем через резистор на 1 КОм на ШИМ (PWM) выход. Слева от катода одна ножка; отвечает за красный свет; подключаем через резистор, например, на D11. Справа от катода ножка, отвечающая за зелёный свет; подключаем через резистор, например, на D10. Последня ножка отвечает за синий свет; подключаем через резистор, например, на D9.
Пример плавного зажигания (и гашение) красного света:


int ledRed = 11;
int ledGreen = 10;
int ledBlue = 9;
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup()  {
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledBlue, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
// set the brightness of pin 9:
analogWrite(ledRed, brightness);
analogWrite(ledGreen, 0);
analogWrite(ledBlue, 0);

// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;

// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 30 milliseconds to see the dimming effect
delay(30);
}

Инфракрасный приёмник

Мой образец у продавца назывался «VS1838 TL1838 VS1838B Universal Infrared Receiving Head For Remote control». Этот экземпляр подключается к arduino не так, как в статье Arduino Uno. Подключение ИК-приемника, но программу для считывания значений я применил оттуда (библиотеку IRremote качать по ссылке из той статьи):


#include "IRremote.h"
IRrecv irrecv(11); // Указываем пин, к которому подключен приемник
decode_results results;
void setup() {
  Serial.begin(9600); // Выставляем скорость COM порта
  irrecv.enableIRIn(); // Запускаем прием
}
void loop() {
  if (irrecv.decode(&results)) // Если данные пришли
  {
    Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
    irrecv.resume(); // Принимаем следующую команду
  }
}

Согласно этой программе, первую ногу ИК приёмника подключаем на цифровой пин 11. Среднюю ногу подключаем и к катоду (минус, короткая ножка) конденсатора на 10 микрофарад, и к земле (порт GND на arduino). Третью ногу через резистор на 100 Ом подключаем и к аноду (плюс, длинная ножка) того же конденсатора, и к 5V на arduino. Всё, можно запускать и наблюдать в консоли коды нажимаемых кнопок с любых инфракрасных пультов.

LCD экран 2 строки 16 символов через I2C

Мой экземпляр у продавца назывался «Blue Display IIC/I2C/TWI/SP​​I Serial Interface 1602 16X2 Character LCD Module». Продавец в описание продукта любезно добавил ссылку на библиотеку и пример. Для того, чтобы сэкономить пины на Arduino, на обратной стороне экранчика установлена плата для конвертации в I2C. Благодаря этому подключается мониторчик к arduino всего четырьмя проводками. Земля (GND), питание (VCC экрана на 5V), SDA (data экрана на A4), SCL (clock экрана на A5). Подробности по экранчику и указанный способ подключения почерпнул в статье «Arduino UNO урок 11 — Serial LCD«.
Пример программы из архива, рекомендованного продавцом:


//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include
#include LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
  lcd.init();                      // initialize the lcd
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}
void loop() {
}

Предварительно скопировал всю папку LiquidCrystal_I2C с примером и библиотекой в свою папку библиотек: /home/oleg/sketchbook/libraries/

Автор: Олег Ехлаков