Блог пользователя Nelex

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 RSS - Блог пользователя Nelex