Хостинг с которым я работаю. Так что это даже как-бы не реклама

Хостинг unihost.com плюс домен бесплатно
Пользовательский поиск

Понравилось? Поделитесь с знакомыми и друзьями!

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

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

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

Вау!
Вау...

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

Сниппет 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;
            }
        }});
    });

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

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

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

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

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

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

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

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

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 подумает что добавлен айдишник, а не новый тег. Очень вероятно что у кого-то есть вариант получше, но данный случай для меня работает.

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 на эту проблему больше не ругается.

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();
Все.

Laravel 5: собственная кастомная страница не найдена (404)

Задача:

Выводить собственную страницу 404

Решение:

Открываем файл app/Exceptions/Handler.php и немного меняем код функции render:
//...
public function render($request, Exception $e)
{
//customize 404 page
if ($this->isHttpException($e)) {

$statusCode = $e->getStatusCode();

switch ($statusCode) {
case '404':
//путь к файлу с HTML разметкой
return response()->view('front/notfound');
}
}
return parent::render($request, $e);
}
//...
Вот собственно и все. Нашел как-то на страницах интернета, ссылку на источник не помню.

Laravel 5: генерируем Sitemap.xml

Задача создавать Sitemap.xml по крону.

Как и говорит нам документация по Laravel 5. В нем уже есть готовый планировщик, достаточно добавить его один раз в крон, а все нужные задачи подключать уже в него. Создаем задачи для планировщика
#php artisan make:console XMLSitemap
Console command created successfully.
Новый файл будет создан по пути...

Laravel 5: Middleware удаляющий конечный слеш в пути url

Задача

Если в конце ссылки присутствует символ "/" делать редирект 301 на страницу без него самого.
Задача типичная, значит решение найти не сложно
Итак, создаем Middleware:
#php artisan make:middleware RedirectTrailingSlash
Middleware created successfully.
Заполняем наш файл (app/Middleware/RedirectTrailingSlash.php) соответствующим кодом:
<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Str;

class RedirectTrailingSlash {

/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (preg_match('/.+\/$/', $request->getRequestUri()))
{
//в исходном коде использовалась другая функция редиректа, выбивало ошибку
return redirect(rtrim($request->getRequestUri(), '/'), 301);
}
return $next($request);
}
}

Регистрируем наш Middleware в Http/Kernel.php:
'front.trailingslash'=>'App\Http\Middleware\RedirectTrailingSlash',

Используем. Я использовал его в конструкторе базового контроллера, чтобы все наследующие контроллеры его выполняли:
//...
class BaseController extends Controller {

//...
public function __construct()
{
$this->middleware('front.trailingslash');
//...
}
//...
}

Все. Теперь при переходе на ссылку вида /our/url/ нас перешлет на /our/url

Повторение команды в Linux каждый n секунд

Маленькая заметка о полезной команде Watch

Когда-то мне понравилась команда multitail, которая позволяет отслеживать вывод команд и обновление логов в одном терминале разбивая его на несколько окон. Но есть вариант куда проще. Чтобы повторять команду постоянно каждых несколько секунд достаточно использовать команду watch, например статус gearman сервера:
watch -n 2 gearadmin --status

Или каждых 3 секунды просматривать последних 10 строк лога:
watch -n 3 tail -10 /var/log/php-cli.log

Laravel 5 + CKEditor = простой Fileuploader

CKEditor Нужно мне к очередному проекту прикрутить CKEditor + простой загрузчик файлов. Использовать внешний загрузчик не вижу смысла, а тот интерфейс который предоставляет нам CKEditor для загрузки файлов нам вполне годиться. Сам проект использует базовый фреймворк Laravel 5.
Создаем контроллер для загрузки файлов, выполнив команду из консоли:

Страницы

Subscribe to Nelex.in.ua RSS