Pull to refresh
4
0
Бобров Максим Юрьевич @demimurych

FAEBFE; Тех SEO аудит. 90+ WebVitals etc…

Send message

Стив Возняк: вообще-то, в фильме была в основном ложь обо мне

Reading time4 min
Views265K
Вообще-то, в фильме была в основном ложь обо мне. Я был инженером в HP, разрабатывающим iPhone 5 того времени, их инженерные калькуляторы. Там у меня было много друзей и хорошая репутация. Я создавал вещи для людей по всей стране для развлечения, включая первую систему проката фильмов для отелей и считыватели таймкодов SMPTE для мира коммерческого видео. Ещё домашние пинболл-игры.

Среди этих вещей, Apple I был ПЯТЫМ случаем, когда что-то, что я создал (а не собрал на основе чьей-то схемы), было превращено в деньги Джобсом.
Читать дальше →
Total votes 295: ↑277 and ↓18+259
Comments205

Тонкости продвижения в FaceBook

Reading time6 min
Views11K
Facebook совсем недавно пришел в Россию, однако с каждым днем он все больше набирает популярность. На данный момент в социальной сети Марка Цукерберга насчитывается около 5 000 000 русских пользователей. В сравнении с 35 000 000 ежедневной аудитории ВКонтакте и 27 000 000 в Одноклассниках это очень мало, однако если вы все-таки решите продвигать свой бренд или стартап в Facebook, то это статья для вас.
Читать дальше →
Total votes 57: ↑47 and ↓10+37
Comments19

1000 целевых посетителей с Facebook за 10$

Reading time1 min
Views1.6K
image
Хотелось бы поделиться с вами своим опытом размещения рекламы в Facebook.
Мои затраты на рекламную кампанию с картинки составили всего 10$.
Читать дальше →
Total votes 141: ↑98 and ↓43+55
Comments44

[Подборка] Melchior.js, ng-admin, Hello.js, ineed

Reading time3 min
Views6.5K

Melchior.js


Melchior.js (GitHub: voronianski/melchior.js, Лицензия: MIT, npm: melchiorjs) от Dmitri Voronianski представляет собой реализацию цепочного определения модулей(CMD), концепцию, введенную John Wu.
Идея, кроющаяся за цепочными определениями модулей разрешает некоторые неприятные моменты AMD, такие как объемные объявления зависимостей, а так же обеспечивает простоту и читабельность с использованием визуально-дружелюбного и ясного синтаксиса.

Так же как CommonJS больше подходит для вне-браузерной среды, цепочные определения модулей с их требованиями, идеально вписываются во внутри-браузерные сценарии использования.

Далее
Total votes 11: ↑10 and ↓1+9
Comments5

Google Web Starter Kit: конструктор мобильных сайтов

Reading time1 min
Views51K


Google Web Starter Kit — конструктор и шаблоны для быстрой разработки отзывчивых мобильных сайтов, которые хорошо работают на любой платформе и почти в любом браузере (кроме самых старых). Такие сайты везде выглядят, как нативные приложения.

Основные особенности:
  • HTML-шаблоны, оптимизированные для мобильного применения;
  • отзывчивый макет для разных мобильных устройств
  • руководство по стилю визуальных компонентов;
  • поддержка Guilp.js (по умолчанию), Node.js, Ruby и Sass.
Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments16

Несколько интересностей и полезностей для веб-разработчика #18

Reading time4 min
Views28K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Dat



Dat — data package management. Это инструмент, который позволяет обмениваться большими наборами данных с целью построения совместного рабочего процесса, подобно git с исходными файлами. Важно упомянуть, что текущий статус проекта pre-alpha.

npm install dat -g

Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments4

Как писать парсеры на JavaScript

Reading time10 min
Views110K
… а именно как писать LL парсеры для не очень сложных структур при помощи конструирования сложного парсера из более простых. Изредка возникает необходимость распарсить что то несложное, скажем некую XML-подобную структуру или какой нибудь data URL, и тогда обычно возникает либо простыня хитрого трудно читаемого кода либо зависимость от какой то ещё более сложной и хитрой библиотеки для парсинга. Здесь я собираюсь совместить несколько известных идей (какие то из них попадались на Хабре) и показать как можно просто и лаконично написать довольно сложные парсеры уложившись при этом в совсем немного строчек кода. Для примера я буду писать парсер XML-подобной структуры. И да, я не буду вставлять сюда картинку для привлечения внимания. В статье вообще картинок нет, поэтому читать будет трудно.

Читать дальше →
Total votes 60: ↑56 and ↓4+52
Comments53

Несколько интересностей и полезностей для веб-разработчика #17

Reading time5 min
Views35K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Intercooler.js


Кто нибудь помнит FullAjax — разработку Руслана Синицкого sirus (нынешний основатель Jelastic)? Вкратце это библиотека для работы с AJAX с помощью объявления определенных атрибутов у элементов, а подробнее об этом написано в постах «Прямые ссылки на AJAX веб-сайтах – наша технология Fullajax Direct Link», «Полный AJAX. Теория и Примеры. Фишки и Фичи» и «Fly AJAX — пишите меньше, имейте больше. Нестандартный AJAX и индексация поисковиками». Вернемся к Intercooler, это нечто похожее:

<div id="targetDiv">Results Div...</div>
<i id="indicator" style="display:none" class="fa fa-spinner fa-spin">
<input id="hiddenInput" type="hidden" name="hidden" value="42"/>

<div ic-trigger-on="click" ic-verb="POST" ic-src="/example" ic-include="#hiddenInput" ic-indicator="#indicator" ic-target="#targetDiv" ic-transition="none">
    Click Me!
</div>

После клика по div, отправляется POST запрос со значением поля с #hiddenInput, а в процессе будет отображаться #indicator. Ответ будет передан в блок #targetDiv. Разве не здорово?

Читать дальше →
Total votes 63: ↑57 and ↓6+51
Comments11

День стимпанка в Бабушкинском парке + новый стимпанк-памятник

Reading time1 min
Views35K
Сегодня в Бабушкинском парке открыли кинетическую стимпанк-скульптуру А. Асерьянца. Ну и ещё там в честь дня парков прошла стимпанк-программа. Так получилось, что я там был, и у меня есть немного картинок с события.

Лицо скульптуры:



Одна из движущихся частей (вал, который поднимает и опускает поршень):



Осторожно, трафик.
Читать дальше →
Total votes 97: ↑88 and ↓9+79
Comments42

Скрипт, обрабатывающий события системы с помощю DBus

Reading time5 min
Views19K
Dbus — средство межпроцессного взаимодействия. Другими словами, средство позволяющее одной программе «отдавать приказы» другой программе.
В сети легко найти примеры, как из командной строки с помощью DBus управлять различными программами. Но слабо раскрыта тема, как отслеживать сигналы исходящие от других программ. В данной статье хочу исправить эту несправедливость и разобрать пример обработки событий получаемых от системы посредством Dbus.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments10

Обработка ошибок в Node.js

Reading time22 min
Views71K


Пост содержит перевод статьи «Error Handling in Node.js», которую подготовили сотрудники компании Joyent. Статья была опубликована 28 марта 2014 года на сайте компании. Dave Pacheco поясняет, что статья призвана устранить неурядицу среди разработчиков, касаемо лучших практик работы с ошибками в Node.js, а так же ответить на вопросы, которые часто возникают у начинающих разработчиков.
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments11

Борьба за трафик. Как вывести сайт из-под спам-фильтра Google (Первая Часть)

Reading time9 min
Views48K
В марте прошлого года мы неожиданно получили письмо от команды Google по борьбе со спамом.

В письме говорилось, что некоторые ссылки, ведущие на наш сайт rusonyx.ru, не соответствуют рекомендациям по обеспечению качества. Поэтому, к нашему сайту были применены меры, которые в последствие повлияли на входящий бесплатный трафик с поиска Google. Он резко снизился, а точнее, упал ниже плинтуса.

image

Мы с грустью смотрели на эту картину. Но делать нечего – нужно было срочно что-то предпринимать. Спустя год, потратив 300 человеко-часов, нам удалось вытащить сайт из бана. В этой статье я постараюсь подробно описать, как нам это удалось, каких это стоило усилий и какие шаги нужно предпринимать в такой ситуации.
Читать дальше →
Total votes 91: ↑75 and ↓16+59
Comments76

Отладка асинхронного JavaScript с помощью Chrome DevTools

Reading time6 min
Views35K

Вступление


Возможность асинхронной работы с помощью callback-функций(далее просто возвращаемых функций) — отличительная особенность JavaScript. Использование асинхронных возвращаемых функций позволяет вам писать событийно-ориентированный код, но так же добавляет кучу проблем, ведь код перестает выполняться в линейной последовательности.

К счастью, теперь в Chrome Canary DevTools вы можете отслеживать весь стек вызовов асинхронных функций в JavaScript!
Под катом 10Mb трафика
Total votes 72: ↑71 and ↓1+70
Comments18

Постраничная навигация с MySQL при большом количестве записей

Reading time7 min
Views40K
Рано или поздно многие крупные проекты сталкиваются с проблемами производительности при постраничной навигации по записям. Некоторые из них решают эту проблему ограничением количества доступных для просмотра записей (скажем, не больше 1000). Вполне приемлемое решение. Но в этом случаем могут возникнуть проблемы с индексированием сайта сторонними поисковиками, которые и представляют наибольшую угрозу. В этой статье я хотел бы отказаться от привычной для всех панели навигации вида «1..2..3..4..» в пользу простой «вперед… назад» (будет проще объяснить), но это не проблема реализовать подобное и с первым вариантом.
Более точно определить тему, назвав, какое количество записей считать достаточно большим для появления тормозов, не получится, так как эта цифра для всех разная и сильно зависит от того, насколько быстрые у Вас жесткие диски, сколько памяти, и какая часть Ваших данных уже закеширована в ней и тд. Но если Вы и Ваши сервера ощущают, что n-ная страница при выводе даётся тяжелее первой, и при этом не знаете, что с этим делать – статья для Вас. Но для начала, я хотел бы на пальцах объяснить, почему ОНО работает медленно.

Кстати, тест происходит на виртуальной машинке, работаю я с СУБД под рутом, версия MySQL – 5.0.32.
Читать дальше →
Total votes 139: ↑135 and ↓4+131
Comments81

Diff-алгоритм React

Reading time5 min
Views27K
React — это JavaScript библиотека для создания пользовательских интерфейсов от Facebook. Она была разработана «с нуля», с упором на производительность. В этой статье я расскажу вам о diff-алгоритме и механизме рендеринга, который использует React, что позволит вам оптимизировать ваши приложения.

Diff Алгоритм


Перед тем как мы углубимся в детали реализации, довольно важно, чтобы вы имели представление о том, как работает React.

var MyComponent = React.createClass({
  render: function() {
    if (this.props.first) {
      return <div className="first"><span>A Span</span></div>;
    } else {
      return <div className="second"><p>A Paragraph</p></div>;
    }
  }
});

В любой момент времени вы можете описать, как будет выглядеть ваш UI. Важно понимать, что результат рендеринга не является фактическим DOM деревом. Это всего лишь легковесные JS объекты, которые мы называем «виртуальный DOM».
Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments4

Создаем чат на Node.js и Socket.IO

Reading time5 min
Views226K
В данной статье я попытаюсь показать, как можно создать простой чат, используя Node.js в связке с Socket.IO. Изначально я хотел построить чат на чистых Websockets, но столкнулся с практически полным отсутствием готовых реализаций сервера для них в Интернете. Так что решил не изобретать велосипед, а использовать готовую библиотеку.
В моем случае сервер работает под Ubuntu, поэтому все примеры будут для неё (и ссылки в примерах — на него же).

Установка компонентов

Первым делом нам потребуются собственно Node.js (инструкция по инсталляции и ссылки на скачивание здесь) и Socket.IO. Модули для Node.js проще всего устанавливать, используя менеджер npm —
curl http://npmjs.org/install.sh | sh
npm install socket.io

Серверная часть

Структура серверной части такова: сервер принимает сообщение, если это команда — выполняет определенные действия, если просто сообщение — рассылает всем остальным участникам.
Читать дальше →
Total votes 47: ↑40 and ↓7+33
Comments75

Сравнение сервисов для автодополнения адресов в форме

Reading time3 min
Views92K
Автодополнение адреса


На Хабре не раз поднимался вопрос автодополнения адресов в форме (раз, два, три).

Но вот и перед мной появилась задача реализовать такое автодополнение для небольшого интернет магазина. Критерии были такие:
  • Автодополнение адресов только Москвы
  • Автодополнение адреса одной строкой
  • Решение должно быть бесплатно (лимит запросов не менее 1000 в сутки)
  • Возможность подключить без дополнительных JS библиотек. (Я использую AngularJS Bootstrap-UI, в котором есть директива Typeahead, реализующая автодополнение формы)
  • Стопроцентный uptime не обязателен


Но какой источник данных выбрать? Я выбрал целых четыре, и решил их сравнить: в одном углу ринга заморские Google Geocode и Google Autococomplete, а в другом отечественные КЛАДР в облаке и DaData подсказки.

DISCLAIMER: Автор никак не причастен к разработчикам ни одного из представленных сервисов.
Интересно? Тогда прошу под кат
Total votes 56: ↑53 and ↓3+50
Comments56

Бесплатный редактор шрифтов на HTML5

Reading time1 min
Views48K
Всё больше полезных программ удаётся портировать на открытые веб-технологии. До сих пор среди них не было редактора шрифтов. Теперь есть: Glyphr.



Профессиональный софт для проектирования шрифтов — это сложные и дорогие программы. В отличие от них, интерфейс Glyphr вполне доступен для каждого желающего, а само приложение совершенно бесплатно.
Читать дальше →
Total votes 93: ↑89 and ↓4+85
Comments11

Как использовать секционные элементы HTML5

Reading time5 min
Views200K
Один славный малый Matt West c туманного альбиона, промышляющий фрилансом и предпринимательством, предложил нашему вниманию пост: «Как использовать секционные элементы HTML5».
Ниже приводится его перевод.




HTML5 предлагает набор секционных элементов, используя которые в своей разметке вы добавляете смысловую или семантическую нагрузку своим страницам, тем самым позволяя компьютерным программам лучше понимать их содержание.
Прочитав этот пост, вы научитесь применять секционные элементы на ваших веб-сайтах. Я постараюсь объяснить, в каких случаях лучше использовать тот или иной элемент и когда лучше прибегнуть к старому доброму .
Давайте начнем.
Читать дальше →
Total votes 68: ↑57 and ↓11+46
Comments37

Использование EXPLAIN. Улучшение запросов

Reading time10 min
Views170K
Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым словом EXPLAIN. EXPLAIN – это один из самых мощных инструментов, предоставленных в ваше распоряжение для понимания MySQL-запросов и их оптимизации, но печальным фактом является то, что многие разработчики редко его используют. В данной статье вы узнаете о том, какие данные предлагает EXPLAIN на выходе и ознакомитесь с примером того, как использовать его для оптимизации запросов.
Читать дальше →
Total votes 39: ↑32 and ↓7+25
Comments14

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity

Specialization

Pentester, Reverse Engineer
Lead