Обычное утро 2027 года

16 October 2017, 15:10:32
%d0%be%d0%b1%d1%8b%d1%87%d0%bd%d0%be%d0%b5-%d1%83%d1%82%d1%80%d0%be-2027-%d0%b3%d0%be%d0%b4%d0%b0

Ну что же, доброе утро. Сегодня… Хмм… 23 сентября 2027 года. Надо бы посмотреть, какие на сегодня планы. О, сегодня же день рождения моего двоюродного племянника! Надо бы поздравить его. Интересно… Мы не виделись с ним уже три года. Даже не могу точно вспомнить, как он выглядит. Ну да ладно, это не проблема. Нельзя помнить всех и всё – вполне достаточно пары воспоминаний и дежурного набора слов.

Вежливость и память – наше всё. Опорная точка для здравого рассудка человека, который не может существовать в социальном вакууме. Об этом свидетельствует социальный проект “Third Life”, который был запущен пять лет назад, сразу после Второй Мировой Криптовойны, которая стоила человечеству миллионы сожженных вместе с мозгами нейроимплантов. Потери были так велики, что на освободившихся от обслуживания мощностях было решено запустить ИИ симуляторы восьмого поколения, которые, обработав полностью всю информацию о деятельности человека в сети, создавали его виртуальный образ, который мог почти полноценно участвовать в его социальной жизни.

Continue reading…

Предыстория одного мага

19 September 2017, 11:09:44
%d0%bf%d1%80%d0%b5%d0%b4%d1%8b%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d0%be%d0%b4%d0%bd%d0%be%d0%b3%d0%be-%d0%bc%d0%b0%d0%b3%d0%b0

Небольшая предыстория мага Традиции Эвтанатос для тех, кому это может быть интересно. Орфография и построение предложений может местами страдать, так как тест является компиляцией телеграмм переписки. Итак…

Джеффри никогда не блистал отличными оценками или выдающимся умом. От сверстников его отличало одно – всепоглощающее стремление помогать живым существам. Это был именно тот ребёнок, который несколько раз за неделю приносит домой больных животных и их выхаживает. Неудивительно, что он хотел стать врачом…

В семье и вокруг всё тоже складывалось не лучшим образом. Отец был алкоголиком и часто по пьяни бил его, мать и младшую сестру. Мать была молчаливой страдалицей, и пыталась наставить Джеффри на путь христианского смирения. Он смирялся, но религиозные соображения проходили мимо, несмотря на наличие креста – Джеффри не мог понять, почему Бог хочет, чтобы вечерами его бил смрадный тупой боров.

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

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

Continue reading…

Шёл октябрь 2017 года. В огромном здании из стекла и металла шёл какой-то бурный праздник. Люди с чёрными синяками под глазами и широкими улыбками на осунувшихся лицах поздравляли друг друга с окончанием долгой и тяжёлой работы. Наконец-то “Дженезис” будет запущен – продукт нового века с непревзойдённой скоростью обработки информации, который позволит объединить в одну огромную систему все существующие на планете электронные устройства.

Но не все радовались одинаково. Нарушая все правила безопасности, группа избранных предавалась празднику и обливала стены холодной серверной комнаты шампанским. Присмотревшись, можно было заметить некоторые странности в этой группе. У одного человека из черепа шла направленная вперёд антенна, у некоторых были татуировки с рисунками сложных схем, третьи несли свои массивные или же наоборот истощённые тела в лёгких экзоскелетах.
Continue reading…

Один день Зимы

24 November 2015, 13:11:54
%d0%be%d0%b4%d0%b8%d0%bd-%d0%b4%d0%b5%d0%bd%d1%8c-%d0%b7%d0%b8%d0%bc%d1%8b

Огромные кристаллы снежинок, порхая в воздухе, неумолимо стремились к грязному асфальту, превращаясь на нём в тёмную слякоть. Они могли танцевать, застывать на предметах, резкие порывы ветра иногда вскидывали их обратно вверх – но судьба их была предрешена. Я подставил им лицо, и они таяли, оставляя на нём длинные влажные следы. Неплохая судьба, если сравнить их с теми, что были безжалостно размазаны и стекали в канализацию тёмными лужами. А ведь когда-то я шёл сквозь снег и ни одна снежинка не посмела ко мне приблизиться, словно облетая невидимую преграду.
Continue reading…

Бег с Microsoft Band

16 July 2015, 12:07:39

Не так давно стал счастливым обладателем Microsoft Band. До него бегал сначала с Endomondo на телефоне, потом с Strava, потом получил Suunto Quest с HR датчиком, и радостно использовал его.
Поскольку у нас пока в продаже MS Band нету, то наверняка обзор будет интересен. Если что, купить это чудо можно примерно за 10.000 рублей на ebay. Не за 17, как у нас продают :)

Итак, что же мы хотим от устройства?
1) Пульс. Думаю, комментировать очевидное не стоит.
2) GPS. Важно знать пройденное расстояние и интересно смотреть на маршруты, которые пробежал. На той же Strava можно ещё сравнивать своё время на известном маршруте с другими бегунами. Бывает интересно – побегал в произвольной местности, а потом оказалось, что там тоже кто-то бегал. Сравниваешь, радуешься… Или огорчаешься и мотивируешься :)
3) Количество шагов. Не так важно, но интересно.


Continue reading…

Внимание! Я более не занимаюсь поддержкой этой плагина, после версии 3.5.9.9! Пожалуйста, задавайте вопросы на странице поддержки wordpress.

Маскировать ссылки в произвольных полях при помощи wp-noexternallinks очень просто. Сначала, нужно найти место, где идёт вывод вашего произвольного поля. Скорее всего, он идёт в файле вашей темы, single.php.
Выглядеть он должен как-то так:

1
echo get_post_meta(get_the_ID(), 'имя_вашего_поля', 1);

Затем редактируем его, чтобы он выглядел так:

1
2
3
4
5
6
7
//получить содержимое поля
$text=get_post_meta(get_the_ID(), 'имя_вашего_поля', 1);
//Использовать на содержимом поля все те же фильтры, что на стандартном выводе контента страницы
//В эти фильтры так же входит фильтр wp-noexternallinks:
$text_filtered=apply_filters('the_content',$text);
//Вывести отфильтрованный текст:
echo $text_filtered;

Заметьте, что если вы не маскируете ссылки в тексте поста, а маскируете их в комментариях, то пятая строчка должна выглядеть так:

3
4
5
//Использовать на содержимом поля все те же фильтры, что на стандартном выводе комментария пользователя
//В эти фильтры так же входит фильтр wp-noexternallinks:
$text_filtered=apply_filters('comment_text',$text);

Заметьте, что если произвольное поле выводится при помощи плагина, то вам придётся править его код или как-то ещё обрабатывать его вывод.

Обновление
Я так же добавил фильтр, который можно вызывать в коде без остальных, вот так:

$text_filtered=apply_filters('wp_noexternallinks',$text);

Warning! I no longer support this plugin after version 3.5.9.9! Please ask questions on wordpress support page.

Masking links in custom fields with wp-noexternallinks is really simple. At first, you need to find the place where your custom field is being output. It should be in your theme file, single.php.

Then edit output so it looks like this (you should change custom_field_name to your field name):

1
2
3
4
5
6
7
//get custom field text with links:
$text=get_post_meta(get_the_ID(), 'custom_field_name', 1);
//Apply all the filters that are used for post content on custom field text.
//It will also apply wp-noexternallinks filter:
$text_filtered=apply_filters('the_content',$text);
//output filtered text:
echo $text_filtered;

Notice that if you don’t mask links in your posts’s content but mask them in comments, your fifth line should look like this:

3
4
5
//Apply all the filters that are used for user comments on custom field text.
//It will also apply wp-noexternallinks filter:
$text_filtered=apply_filters('comment_text',$text);

If custom field output is generated by plugin then unfortunately you will have to edit plugin code or try to preprocess it’s output.

UPDATE
I also provided custom filter to process links. You can call it like this:

$text_filtered=apply_filters('wp_noexternallinks',$text);

Encrypting links for WP-NoExternalLinks

9 December 2014, 16:12:03

Warning! I no longer support this plugin after version 3.5.9.9! Please ask questions on wordpress support page.

This article is based on this one and the latest version of plugin. Now you can easily encrypt your links without changing plugin code.

1) Ensure that you have php-mcrypt installed:

For CentOS, type

sudo yum install php-mcrypt

For ubuntu, type

sudo apt-get install php5-mcrypt

For windows, enable this extension in php.ini:

extension=php_mcrypt.dll

2) Create file wp-content/uploads/custom-parser.php and add here the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
if(!defined('DB_NAME'))
  die('Error: Plugin "wp-noexternallinks" does not support standalone calls, damned hacker.');
 
#include base parser
include_once(ABSPATH . 'wp-content/plugins/wp-noexternallinks/wp-noexternallinks-parser.php');
 
class custom_parser extends wp_noexternallinks_parser
{
  var $salt,$iv;
  function init_crypt()
  {
    if(!function_exists('mcrypt_create_iv'))
      die('php-mcrypt library not installed, can not process links!');
    $this->salt ='ms8-sRt-kBs5-s1wQ';
    $this->iv=mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
  }
  function encode_link($url)
  {
    if(!$this->salt)
      $this->init_crypt();
    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->salt, $url, MCRYPT_MODE_ECB, $this->iv)));
  }
  function decode_link($url)
  { 
    if(!$this->salt)
      $this->init_crypt();
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->salt, base64_decode($url), MCRYPT_MODE_ECB, $this->iv));
  }
}
?>

Do not forget to change $salt to any custom value! Also, add statistic handling from the original function if you use statistics.

Custom parser for WP-NoExternalLinks

8 December 2014, 22:12:49

Warning! I no longer support this plugin after version 3.5.9.9! Please ask questions on wordpress support page.

Recently I added a new feature to this plugin. Now you can extend it yourself without danger of plugin update which could remove all your changes in plugin code.

In this sample, we will overwrite function check_follow, which checks if link is posted by admin and has rel=”follow” attribute.
Let’s imagine we want all our authors to have the same options. How can we accomplish it? Easily!
Just create file custom-parser.php in directory wp-content/uploads and replace

user_can($author,'manage_options' );

from original function with

user_can($author,'publish_posts' );

– voila!
Here is the full code of our new modified class which will be loaded instead of basic one:

wp-content/uploads/custom-parser.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if(!defined('DB_NAME'))
  die('Error: Plugin "wp-noexternallinks" does not support standalone calls, damned hacker.');
 
#include base parser
include_once(ABSPATH . 'wp-content/plugins/wp-noexternallinks/wp-noexternallinks-parser.php');
 
class custom_parser extends wp_noexternallinks_parser
{
function check_follow($matches)
{
  #support of "meta=follow" option for admins. disabled by default to minify processing.
  if(!$this->options['dont_mask_admin_follow'])
    return false;
  $id=array(get_comment_ID(),get_the_ID());//it is either page or post
  if($id[0])
    $this->debug_info('It is a comment. id '.$id[0]);
  elseif($id[1])
    $this->debug_info('It is a page. id '.$id[1]);
  $author=false;
  if($id[0])
    $author=get_comment_author($id[0]);
  else if($id[1])
    $author=get_the_author_meta('ID');
  if(!$author)
    $this->debug_info('it is neither post or page, applying usual rules');
  elseif(user_can($author,'publish_posts' )&&(stripos($matches[0],'rel="follow"')!==FALSE || stripos($matches[0],"rel='follow'")!==FALSE))
  {
    $this->debug_info('This link has a follow atribute and is posted by author, not masking it.');
    #wordpress adds rel="nofollow" by itself when posting new link in comments. get rid of it! Also, remove our follow attibute - it is unneccesary.
    return str_ireplace(array('rel="follow"',"rel='follow'",'rel="nofollow"'),'',$matches[0]);
  }
  else
    $this->debug_info('it does not have rel follow or is not posted by author, masking it');
  return false;
}
}
?>

One more sample is encrypting links.

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

1) за всю трилогию нет никакой эволюции персонажей. Какими они были с самого начала – такими и остались.
2) “глубокие переживания” и эмоции персонажей поднимаются не выше пятого класса средней школы. Всё просто как сценарий телевизионного ток шоу на канале тнт. С учётом того, что нам ещё и пытаются скормить, что это самые умные и наиболее эмоциональные подростки… It smells.
3) рояли выпрыгивают из кустов с такой скоростью и в таком количестве, что повествование даже нельзя воспринимать всерьёз. Ты заранее знаешь, что тебя наёбывают. Причём делают это крайне топорным методом – например, загадка разрешается ответом “просто всемогущие наблюдатели, которые могут делать что угодно с их мозгом, подменили их восприятие”.
4) на корню отсутствует хоть какая-то оригинальность мира и сюжета. Впрочем, даже автор признаётся, что именно он так убого копировал.
5) главной идеи, озарения, катарсиса к концу трилогии – ничего нет. Всё те же рояли.
6) так же полностью отсутствует какая-либо выразительность и колорит, который раскрашивает черновик повествования. Даже сленг в книге состоит менее чем из десятка слов, и убог донельзя.
7) персонажи картонные. У большинства даже нет имён. Так и говорится “и тут погибло ещё десять человек, имён которых Томас не знал”. Именные персонажи в общем-то тоже никакие, безо всякой индивидуальности.
8) абсолютно никак не раскрыты многие идеи и фишки. Например, практически немая и безымянная группа девушек, или сама телепатия. Недаром из фильма её вообще убрали – зачем собаке пятая нога?
9) на закуску дабы показать примером общую характеристику трилогии. Главный герой убегает из рушащегося строения с двумя неравнодушными к нему девками. Я уже какое-то время задаюсь вопросом, как автор это разрешит. И тут автор разрешает. Одна из них выпихивает его из-под подающих обломков и умирает. Наверное, один из самых скучных штампов за всю историю книгопечатания, в котором автор полностью расписывается в своей беспомощности относительно того, чтобы как-то решить повествовательную задачу. Кстати, только сейчас подумал, что за трилогию это вторая такая идиотская смерть – первым был Чак, который заслонил главного героя грудью от ножа. Феерически бездарный и неправдоподобный штамп.

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