test

Создание простого расширения для Chrome

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

Теперь немного более приземленно.
Создаем папку с расширением, например myclickbtn
В ней создаем файл manifest.json, ...
test

PHPStorm в Windows 10 не работает терминал

После обновления Windows на 10 версию PHPStorm не смог запустить терминал. В решении помогает гугл давая ссылку.
Решение сводиться к запуску обычного терминала, клику по управляющей окном панели правой кнопкой мыши и выбора Properties(Свойства).
windows terminal
Внизу ставим галочку на "Use legacy console"(Использовать прежнюю версию консоли)
Использовать прежнюю версию консоли
ОК.
После переходим в PHPStorm и запускаем новый терминал. Все.
test

Мой отзыв по книге: "На пределе. Неделя без жалости к себе" Эрик Бертран Ларссен

Неделя на пределе Книга "На пределе. Неделя без жалости к себе" Эрика Бертрана Ларссена понравилась скоплением в одной книге большим количеством идей, практик и техник. Если говоря о Михай Чиксентмихайи - Поток. Психология оптимального переживания или Тео Компернолле "Мозг освобожденный. Как предотвратить перегрузки и использовать свой потенциал на полную мощь" можно сказать что книги содержат по 1-4 важных тезиса на книгу, то в этой книге было просто огромное количество тезисов. Много важного. Это как конспект или краткие выжимки основного с множества других книг. Так же, весьма радикальным является метод проведения самой адской недели, но обоснованность такого подхода в книге доказана полностью. Всего 200 страниц, но такая насыщенность полезной информацией встречается крайне редко. Хорошая и очень практичная книга. Must have, однозначно!
test

Youtube парсим картинку превью из кода

youtube image У нас есть текст фрейма поделиться, но нужно получить картинку превью.
Для этого нам нужно выпарсить ID видео и подставить в нужную ссылку:
Youtube генерирует несколько таких ссылок: http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg Что соответствует размерам и аналогично ссылкам в том же порядке: По умолчанию: http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg Для картинок в высоком качестве: http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg Среднее качество: http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg Стандартный размер картинки: http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg Максимальный размер картинки: http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg Просто выбираем подходящую ссылку.
Я парсил из кода следующей регуляркой:
//кусок кода выбирающий превью для ютуба
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $this->body, $matches);
            //preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&"'>]+)/", $this->body, $matches);
            if (!empty($matches[1])) $vid_id = $matches[1];
            if (!empty($vid_id)) return "http://img.youtube.com/vi/".$vid_id."/0.jpg";

Такой код вернет нам ссылку с подставленным айди видео, что нам и требовалось.
test

Очки для работы за компьютером(Антиочки)

обычные очки vs антиочки

Антиочки

На днях дали на тестирование антиочки. Мое отношение к очкам для компьютеров достаточно скептическое. Лет 10 назад я первый раз опробовал подобные очки, но по заверениям производителя они только защищали от излучения монитора. Как итог я забил на них через неделю использования. В этот раз мне дали на использование несколько другие очки, другого производителя.
По заверениям создателя очков, плюшки:
  • Выпуклость линзы у переносицы облегчает работу глазных мышц При работе вблизи глаза устанавливают позицию, будто вы смотрите вдаль. Эффект достигается с помощью выпуклости ближе к переносице. Глаза получают двойную разгрузку при работе вблизи.
  • Небольшой плюсовой компонент. Позволяет крупно и четко видеть вблизи без напряжения мышц хрусталика.
  • Призматический компонент Расширяет поле зрения, освобождает внутренние прямые мышцы глаз от необходимости напрягаться, чтобы сводить оси зрения в одну близкорасположенную точку.
  • Специальные фильтры защищают сетчатку
  • Работать в таких очка можно много часов подряд сохраняя при этом свое зрение!
Сложно дать отзыв о подобных очках, ведь они призваны не лечить, а не допустить ухудшения зрения. Но из первых впечатлений можно выделить следующее:
  • Первый раз одев почувствовал себя как-будто на голову одел круглый аквариум. Но через 10 минут глаза привыкли и так очки на носу и остались. Не мешают.
  • Субъективно можно сказать что глаза меньше напрягаются, за счет выпуклости линзы. Что тоже хорошо.
  • Про излучение сказать ничего не могу, это вопрос к экспертизам и т.д.
  • Остальное покажет время, пока радуют.
test

Отзыв о книге: Доставляя счастье. От нуля до миллиарда - Тони Шей

Так уж сложилось, я либо пишу в блоге о книге - значит советую, либо я не могу посоветовать книгу и лучше вообще умолчу что читал её. Сперва мнение о книге Тони Шей - "Доставляя счастье. От нуля до миллиарда" сложилось таким, что я даже советовать ее не собирался. Не зацепила. В отличии от Биз Стоун "Решайся! Заряд на создание великого от основателя Twitter". Там все началось зажигательно и так же держалось до конца книги. А здесь, я увидел изначально историю одного смышленого малыша. Ну да смышленый... Но больше ничего. Но читать продолжил. И вот реально затянуло очень сильно читать на истории самой компании Zappos. Очень увлекательно и полезно, особенно если Вы собираетесь вынести какой-нибудь, для себя, опыт развития крупной компании. Книга понравилась, хотя первых страниц 40-50 впечатления складывались не очень, не смотря на то что некоторые моменты были смешными и веселыми. Книга заслуживает как минимум твердых 4/5. В ней много о корпоративном духе, когда вся компания как одна семья. Когда вся компания - семья, даже в момент беды никто не бросает и не убегает, а все борются до последнего. Борются и как показывает книга - побеждают. От компании балансирующей на краю пропасти, до компании с огромным оборотом и отличным коллективом... В книге есть над чем подумать и что взять на вооружение. Она стоит того чтобы быть прочитанной.
test

Отзыв о книге: Михай Чиксентмихайи - Поток. Психология оптимального переживания

Вау!
Вау...

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

Сниппет JQuery кода, который скролит страницу к нужному элементу, указанному в ссылке

Может кому пригодиться. Код найден где-то на stackoverflow. Если у ссылки путь начинается с hash(#), то при клике код скролит страницу к нужному элементу на странице.
$(function() {
    $("a[href*='#']:not([href='#'])").click(
        function()
        {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname)
        {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
            if (target.length)
            {
                $('html,body').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }});
    });
test

Отзыв о книге: Объектно-ориентированное программирование в С++ Р. Лафоре

Объектно-ориентированное программирование в С++ Р. Лафоре Из двух книг, которые есть у меня по C++, именно эту я могу смело рекомендовать. Хотя изучал я по ней язык где-то более двух лет назад, сама книга не стареет и как сам C++. С тех пор я пока не встречал лучше книги по C++. Хотя мое мнение и субъективно, но все же мне есть на что опираться, на свой собственный опыт программирования. Считаю что для тех кто действительно хочет понять и изучить язык C++ эту книгу стоит взять на вооружение. Рассмотрены все фундаментальные темы и даже больше. Материал подан легко, так что очень быстро осваивается. Считаю эту книгу лучшей в данном классе.
test

Отзыв о книге: Биз Стоун "Решайся! Заряд на создание великого от основателя Twitter"

Биз Стоун "Решайся! Заряд на создание великого от основателя Twitter" Книга великолепна!
Об этом я могу сказать даже спустя месяц после ее прочтения. Когда ты видишь какой путь прошел автор книги в попытке найти свою цель и придти к тому что эта цель появилась на свет, взрастить ее из зачаточного состояния. Пройти весь этот путь не смотря на отсутствие денег и наличие проблем, и не согласных, но при том остаться все-равно человеком... От бедняка до богача. От простого человека до уважаемого многими. Книга - история жизни действительно великого человека. История бизнес-успеха которая Вас обязательно вдохновит. Рекомендовал эту книгу нескольким другим людям, своим знакомым, давал почитать и никто из них не остался равнодушным к книге, более того, все были просто в восторге после прочтения.
Рекомендую?
Однозначно да!
test

Отзыв о книге: Тео Компернолле "Мозг освобожденный. Как предотвратить перегрузки и использовать свой потенциал на полную мощь"

Тео Компернолле, Мозг освобожденный. Как предотвратить перегрузки и использовать свой потенциал на полную мощь Несколько дней назад я прочитал эту важную для себя книгу. Что могу сказать, так это то что книга однозначно полезная и важная. Периодами надоедала, так как часто повторялись одни и те же тезисы. Иногда хотелось закрыть книгу так как казалось что дальше будет тоже что и последние 20 страниц... но... через еще некоторое количество страниц всплывало что-то новое и очень важное. По этому чтение книги у меня несколько затянулось дольше чем я планировал, но книга однозначно стоит того чтобы быть прочитанной от начала и до конца. Жалею ли я что советую ее? Однозначно нет, ведь даже один-два факта меняющих жизнь уже стоят очень многого, а в этой книге мыслей, фактов и выводов однозначно на порядок больше. Она того стоит, однозначно. Не такая зажигательная как многие бизнес-книги, но не менее, а более полезная, ведь по сути это не просто бизнес-книга, это инструкция по работе с собственным мозгом. Нашим инструментом как для работы, так и для жизни. Нас учат управлять машиной, мы сдаем на получение прав экзамены, но вот более сложным и важным является наш собственный мозг. Но этому нас никто не учит. Учитесь сами, по вот таким книгам. Книгу рекомендую.
test

Майкл Фицджеральд: "Регулярные выражения: основы", небольшой обзор книги

За последнее время, стараясь оптимизировать свою работу и увеличить личную эффективность на работе я прочел несколько книг, о них я и хочу поделиться. Кратко, что дало и стоит ли тратить время. Регулярные выражения: основы Эту книгу я прочел несколько месяцев назад, когда мне понадобилось частое использование регулярных выражений. В основном я редко ими пользуюсь, так как достаточно часто при работе с текстом можно было бы обойтись и без них. Но не всегда, иначе бы их никто не использовал. Скажу что книга как для профи, где-то на 3/5, так как остается достаточно много белых пятен. Как для новичка 5/5 из-за хорошего объяснения базы и при этом используя разный инструментарий. В общих чертах книга понравилась, но в дополнение я обязательно возьму более сложную литературу, закрывающую оставленные белые пятна. Автор действительно объясняет все пошагово и очень основательно. Для моего проекта универсального парсера сайтов этих знаний хватило, но в нем регулярные выражения занимали очень небольшую часть, а если быть точнее, только в том случае если искомый элемент не находился другими механизмами, тогда в силу вступали регулярные выражения. Стоит брать если Вы хотите освоить базу в сжатые сроки. Вот такое сложилось у меня мнение об этой книге.
test

Select2 и добавление нового элемента

Нужна была возможность добавлять новый элемент в список если такого элемента у нас еще не было, благо select2 предусматривает подобную возможность. Загвоздка заключалась только в том что мы использовали список с числовыми id как значение и брался из базы данных. Имеем классическую конструкцию из трех таблиц:
материал(id, ..., ..., ...); теги(id,...,...,...); материал_тег(id_material, id_tag);
Так вот, сам select2 мы используем так:
<select id="multiple" class="form-control select2-multiple" multiple name="tags[]"  >
                                {foreach $labels as $label}
                                    <option value="{$label->id}" {if !empty($exists.{$label->id})}selected{/if} >{$label->title}</option>
                                {/foreach}
                            </select>
<script>

    $(document).ready(function () {

        $("#multiple").select2({
            placeholder: "Select or add tags",
            tags: true,
            tokenSeparators: [",", " "],
            createSearchChoice:function(term, data) {
                if ( $(data).filter( function() {
                            return this.text.localeCompare(term)===0;
                        }).length===0)
                {
                    return { id: term, text:term };
                }
            }
        });
</script>
На стороне сервера я использую фреймворк Laravel 5 и в контроллере использую такую часть кода:
//...
//материал
$record = Linkedin_GroupLabel::find($id);
//...
//Сбрасываем связи с тегами
                        $record->tags()->detach();
                        $rtags  = array();
                        foreach ($request->input('tags') as $tag){
//если значение элемента селекта число, значит это id
                            if (is_numeric($tag)){
                                $rtags[] = $tag;
                            }
                            else //в противном случае это новое значение
                            {
                                $new = Linkedin_Label::where('title','=',trim($tag))->first();
                                if (empty($new->id)){
                                    $new = new Linkedin_Label();
                                }
                                $new->title = trim($tag);
                                $new->save();
                                $rtags[] = $new->id;
                            }
                        }
//аттачим айдишники между записями
                        $record->tags()->attach($rtags);

Единственное НО при таком, записи тегов не должны быть только числом, иначе is_numeric подумает что добавлен айдишник, а не новый тег. Очень вероятно что у кого-то есть вариант получше, но данный случай для меня работает.
test

Windows7+Apache2.4+PostgreSQL+Laravel 5= PDO Exception: driver not found

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

Итак, проблема следующая:
Windows 7+Apache2.4+PostgreSQL+Laravel = PDO Exception: driver not found
При этом команда:
php -m
Показывает что как pgsql так и pdo_pgsql есть, но Laravel 5 уверенно доказывает обратное. При этом в php.ini:
extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
раскомментированны.

Но вот команда:
php -a
Вызывающая интерактивную консоль php, так же сообщает:
Unable to load dynamic library `D:\WebServer\php\ext\php_pgsql.dll` - тут вместо сообщения какая-то каша, но явно что-то не в порядке.

Оказалось, не хватает dll для данных расширений.

Нужны библиотеки:


libpq.dll, libiconv-2.dll и libintl-8.dll Взять их можно в установленном PostgreSQL, в папке:
C:\Program Files\PostgreSQL\9.4\bin\
вместо 9.4 может быть ваша версия.
Копируем их в:
apache\bin\

Вместо libiconv-2.dll у меня лежала iconv.dll, на всякий случай скинул как есть, так и копию переименованную в libiconv-2.dll
Перезапускаем apache и видим что Laravel 5 на эту проблему больше не ругается.
test

DOMDocument проблемы с кодировкой

В один прекрасный момент заметил что до этого работающий парсер начал вместо нормального текста показывать крокодилов. Недолгие поиски привели к решению:
<?php
$url = file_get_contents('your-xml-file.xml');
//именно эти строчки и выравнивают всю кривость кодировки
$url = mb_convert_encoding($url, 'utf-8', mb_detect_encoding($string));
$url = mb_convert_encoding($url, 'html-entities', 'utf-8');
$dom = new DOMDocument();
$dom->loadHTML($url);
$page_content = $dom->saveHTML();
Все.

Страницы

Subscribe to Nelex.in.ua RSS