Блог о программировании

Введение в D3js для чайников

Категория: Javascript
 26 апреля 2016 г. 19:35

Перевод статьи

За прошедшие 5 лет в Web’е, фактически, прошла революция в области визуализации данных. Майком Бостоком была создана библиотека D3js, пропагандирующая новый, революционный, подход к построению различных визуализаций. Как ни странно, идея проста: связать визуализируемые данные с конкретными DOM-элементами на HTML-странице. Содержание данной статьи должно помочь читателю понять данный подход до того, чтобы можно было самостоятельно использовать его в построении собственных визуализаций.


От данных к их визуализации

Визуализация данных преобразовывает количественные данные в графические образы. В самом общем виде набор данных представляет собой последовательность чисел. Каждое число в последовательности соответствует какому-то графическому элементу, например, столбику в столбиковой диаграмме, или точке в системе координат или область на карте. Если мы берем подходящий графический атрибут для отображения набора данных(высота столбика, координата точки, цвет области на карте), значение числа из последовательности данных определяет вид атрибута графического элемента, с которым это число связано.

Это наш набор данных - просто числа

Это наш набор данных - просто числа


Читать далее  

Теги:  d3js  визуализация 

Определение местоположения по IP на PHP

Категория: PHP
 12 апреля 2016 г. 23:23

Чтобы получить информацию о местоположении по ip на PHP– достаточно совершить несколько простых действий: сформировать и отправить запрос на специальный сервис и обработать его.

Пример кода:

/*О каком ip ищем информацию*/
$ip = '87.224.214.72';

/*получаем информацию о ip в виде xml-файла от сервиса ipgeobase.ru*/
$result = file_get_contents("http://ipgeobase.ru:7020/geo?ip=".$ip);

/*Формируем DOM-структуру из полученного xml*/
$xml = new SimpleXMLElement($result);
/*Выводим полученную информацию*/
echo "Информация об IP ".$xml->ip->attributes[0]."<br>";
echo "Сеть: ".$xml->ip->inetnum."<br>";
echo "Страна: ".$xml->ip->country."<br>";
echo "Город: ".$xml->ip->city."<br>";
echo "Область: ".$xml->ip->region."<br>";
echo "Округ: ".$xml->ip->district."<br>";
echo "Широта: ".$xml->ip->lat."<br>";
echo "Долгота: ".$xml->ip->lng."<br>";

Получается страница с таким результатом:

Информация об IP 87.224.214.72
Сеть: 87.224.191.0 - 87.224.255.255
Страна: RU
Город: Екатеринбург
Область: Свердловская область
Округ: Уральский федеральный округ
Широта: 56.837814
Долгота: 60.596844

Все просто!

Теги:  php  сниппет  php7 

Javascript. Подробное руководство

Категория: Книги
 11 апреля 2016 г. 23:47

Автор: Дэвид Флэнаган

Обложка книги 'Javascript. Подробное руководство'Наверное, для каждого языка программирования уже написана книга, обязательная к прочтению для знакомства с языком. Так вот, для javascript-разработчиков "Javascript. Подробное руководство" является именно такой книгой. Прочитав ее и переработав, вы будете знать все об этом языке: его историю, особенности, где и как он работает, перспективы использования. Конечно же, книга всецело раскрывает для многих наболевшие темы особенностей использования переменных и функций, DOM-элементами; применять технологию Ajax, обрабатывать XML-документы, формировать структуру приложения через использование собственных модулей и многое-многое другое. Вам останется лишь практиковаться и оттачивать свои навыки мастерства в использовании этого замечательного языка.

Поскольку на данный момент основная среда использования javascript - это браузер, то книга полностью раскрывает и этот аспект. Описаны такие моменты, как использование локальных хранилищ данных, работа с cookies, подробно описана событийная модель языка, работа с html-элементами(формы, поля ввода, кнопки и т.д.) и управление css. Этот набор знаний критически важен для frontend-разработчиков.

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

Также в книге есть всеобъемлющий справочник по языку и его конструкциям.

Теги:  книга  javascript 

Что такое ООП на примерах. Для чайников

 10 апреля 2016 г. 14:50

Наверное, в половине вакансий(если не больше), требуется знание и понимание ООП. Да, эта методология, однозначно, покорила многих программистов! Обычно понимание ООП приходит с опытом, поскольку годных и доступно изложенных материалов на данный счет практически нет. А если даже и есть, то далеко не факт, что на них наткнутся читатели. Надеюсь, у меня получится объяснить принципы этой замечательной методологии, как говорится, на пальцах.

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

ООП (или объектно-ориентированное программирование) представляет собой способ организации кода программы, когда основными строительными блоками программы являются объекты и классы, а логика работы программы построена на их взаимодействии.


Об объектах и классах

Класс - это такая структура данных, которую может формировать сам программист. В терминах ООП, класс состоит из полей (по-простому - переменных) и методов (по-простому - функций). И, как выяснилось, сочетание данных и функций работы над ними в одной структуре дает невообразимую мощь. Объект - это конкретный экземпляр класса. Придерживаясь аналогии класса со структурой данных, объект - это конкретная структура данных, у которой полям присвоены какие-то значения. Поясню на примере:

Допустим, нам нужно написать программу, рассчитывающую периметр и площадь треугольника, который задан двумя сторонами и углом между ними. Для написания такой программы используя ООП, нам необходимо будет создать класс (то есть структуру) Треугольник. Класс Треугольник будет хранить три поля (три переменные): сторона А, сторона Б, угол между ними; и два метода (две функции): посчитать периметр, посчитать площадь. Данным классом мы можем описать любой треугольник и вычислить периметр и площадь. Так вот, конкретный треугольник с конкретными сторонами и углом между ними будет называться экземпляром класса Треугольник. Таким образом класс - это шаблон, а экземпляр - конкретная реализация шаблона. А вот уже экземпляры являются объектами, то есть конкретными элементами, хранящими конкретные значения.

Читать далее  

Теги:  ООП  java 

Шпаргалка по командам git

Категория: Шпаргалки
 13 марта 2016 г. 14:35

Инициализация нового git-репозитория:

git init

Отобразить статус git-репозитория и рабочего каталога:

git status

Добавить в индекс изменения:

git add <filename>

Добавить в индекс все измененные файлы:

git add .

Удалить файл с внесением в индекс:

git rm <filename>

Переименование файла/перенос в другую директорию с внесением в индекс:

git mv <filename>

Зафиксировать изменения в репозитории, находящиеся в индексе:

git commit -m "<message>"

Комбо:

git commit -a -m "<message>" = git add . + git commit -m "<message>"

История коммитов:

git log

Переход к старому состоянию проекта:

git checkout <hash>

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

git reset --hard <hash>

Клонирование проекта из удаленного репозитория

git clone <откуда> <куда>

Например:

git clone ssh://dmn@192.168.1.100:22/var/www/superproject/htdocs/.git superproject
git clone /home/username/project myrepo
git clone http://user@somehost:port/~user/repository/project.git
git clone --bare hello hello.git

Последний пример создает т.н. "чистый" репозиторий. "Чистые" репозитории не хранят рабочие каталоги и обычно используются для расшаривания.
Обычный git-репозиторий подразумевает, что вы будете использовать его как рабочую директорию, поэтому вместе с файлами проекта в актуальной версии, git хранит все служебные, "чисто"-репозиториевские файлы в поддиректории .git. В удаленных репозиториях нет смысла хранить рабочие файлы на диске (как это делается в рабочих копиях), а все что им действительно нужно — это дельты изменений и другие бинарные данные репозитория. Вот это и есть «чистый" репозиторий.

Получение изменений из удаленного репозитория и их слияние с локальным:

git pull

Внесение локальных изменений на удаленный:

git push

Просмотр веток:

git branch

Добавление ветки:

git branch <имя_ветки>

Удаление ветки:

git branch <имя_ветки> -d

Переход между ветками:

git checkout <имя_ветки>

Слияние двух веток:

git merge <имя_ветки>

Полезные ресурсы

Интерактивный учебник по использованию git

Большая, всеобъемлющая и в то же время унылая книга по git

Теги:  git 

И попал я в ад...

Категория: Рабочие моменты
 27 февраля 2016 г. 10:50

В поисках

Уволившись из рая для программиста по причине переезда в другой город, пришлось искать тут работу. Долго заморачиваться не хотел, поскольку было много других неотложных дел; нужен был стабильный источник дохода. Так как на предыдущей работе я программировал исключительно на js, естественно, искал вакансию, где мои знания пригодились бы. Как водится, нашей несколько вакансий на хедхантере, отправим резюме и стал ждать. На следующий день уже было назначено два собеседования.
Первое: вакансия php-программиста с активным использованием js. Работа в стартапе, который занимается оцифровкой одного бизнеса. Собеседование продлилось 15 минут, в течении которого, после стандартного опросника меня гоняли по основами ООП и php, нюансах ООП в php. Собеседующий даже не попытался сбить тот оклад, на который я претендую.
Второе: собеседование в крупную телеком компанию на вакансию js-программиста со знанием языка python. Тут меня даже не пытались поймать на каком-нибудь каверзном вопросе, а собеседование, скорее, походило на разговоры давних приятелей. Мы обсуждали современные технологии, их возможности и способы применения. Без особой конкретики. Проболтали около часа, после чего выяснили, что, поскольку о python'е я только слышал, то на зп могу рассчитывать сильно ниже ожидаемой, на 30 процентов. Сошлись на том, что я подумаю.
Благо думать не пришлось, вечером же позвонили с первого собеседования и предложили выходить уже на следующей неделе. Я согласился.

Читать далее  

Теги:  работа 

Всплывающие уведомления на jquery+bootstrap

Категория: Javascript
 21 февраля 2016 г. 18:55

Довольно часто требуется реализовать всплывающие уведомления на сайте для того или иного случая.

Самый простой способ - это взять фреймворк bootstrap и использовать оттуда уведомления. Они хорошо сверстаны и снабжены js-кодом для управления. Единственное, чего нехватает, так это управляющего кода, который будет генерировать всплывающие уведомления для пользователя.

Идея простая: у нас есть фиксированный элемент div#notifies в верхнем правом углу(координаты: right:0; top:0;) с автоматической настройкой ширины и высоты(height:auto; width:auto;). С помощью jQuery формируем элемент уведомления, ставим ему по таймеру автоматическое сокрытие через 5 секунд и добавляем его в div#notifies. Фактически, все. Ниже приведен код этой реализации:

Читать далее  

Теги:  jQuery  bootstrap 

Совершенный код

Категория: Книги
 15 февраля 2016 г. 20:54

Автор: Стив Макконнелл

Обложка книги 'Совершенный код'

Философская книга. Бесспорно, она не будет смотреться лишней в коллекции книг программиста любого уровня.

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

Много внимания уделено техники проектирования проектов. Освещены вопросы, связанные с качеством ПО. Освещены больные темы тестирования, отладки, рефакторинга и оптимизации. Полно дельных советов.

Книга читается без привязки к какому-либо языку программирования.

Удаление начальных и конечных пробелов(и других символов) из строки в PHP

Категория: PHP
 11 февраля 2016 г. 19:21

В любом языке при работе со строками является типичной задача удаления пробелов как в начале, так и в конце строки. В PHP для этих целей существует три функции: ltrim(), rtrim(), trim(). Функция ltrim() удаляет пропуски в начале строки, rtrim() - в конце строки, trim() - как в начале, так и в конце. Что интересно: эти функции, помимо пробелов, удаляют также управляющие последовательности перехода на новую строку, возврата каретки, табуляции и ноль-символа.

Пример:

$example = " \tHi everybody\n";
var_dump(trim($example));
var_dump(rtrim($example));
var_dump(ltrim($example));

В результате мы получим:

string 'Hi everybody' (length=12)
string ' 	Hi everybody' (length=14)
string 'Hi everybody
' (length=13)

Что самое интересное, вышеописанные функции также могут удалять символы, заданные пользователем. Для этого вышеописанным функциям нужно передать вторым аргументом строку, содержащую удаляемые символы. Например:

$example = " yHi everybody\n";
var_dump(trim($example, " y"));
var_dump(rtrim($example, " y\n"));
var_dump(ltrim($example, " yH"));

В результате:

string 'Hi everybody
' (length=13)
string ' yHi everybod' (length=13)
string 'i everybody
' (length=12)
Теги:  php  php7 

Управление регистром символов строк в PHP

 22 января 2016 г. 20:38

В PHP существует несколько функций для управления регистром символов:

ucfirst() -  преобразует к верхнему регистру первую букву строки;

ucword() -  преобразует к верхнему регистру первые буквы каждого слова в строке;

strtoupper() -  преобразует к верхнему регистру все буквы в строке;

strtolower() -  преобразует к нижнему регистру все буквы в строке;

Пример:

$str = "who is your daddy?";
print ucfirst($str).'<br/$gt;';
print ucwords($str).'<br/$gt;';
print strtoupper($str).'<br/$gt;';
print strtolower($str).'<br/$gt;';

Код выведет:

Who is your daddy?
Who Is Your Daddy?
WHO IS YOUR DADDY?
who is your daddy?
Теги:  php  php7