Search
Write a publication
Pull to refresh
4
0
Артём Белов @RAZZOR

User

Send message

Несколько интересных приемов и особенностей работы с MySQL

Reading time3 min
Views88K
Я думаю, что в процессе изучения той или иной СУБД каждый из вас не раз изобретал велосипеды для решения своих задач, не зная о существовании той или иной функции или приема, которые бы могли в разы ускорить выполнение запросов и уменьшить объем кода. В данной статье я хочу поделиться с вами своим опытом работы с очень «добрым» и «отзывчивым» MySQL, часто позволяющему программисту делать вещи, которые другие СУБД переварить бы не смогли. Материал будет полезен скорее тем, кто только решил углубиться в чудесный мир запросов, но возможно и опытные программисты найдут тут что-то интересное.
Читать дальше →

Программа zxcvbn: реалистичная оценка надежности пароля

Reading time19 min
Views37K
Последние несколько месяцев анализаторы надежности паролей попадаются мне чуть ли не в каждой форме регистрации в Интернете. В этой области сегодня наблюдается особенно бурный рост.

Вопрос только в том, действительно ли такая программа помогает защитить учетную запись пользователя? Этот аспект интернет-безопасности, конечно, не настолько важен, как некоторые другие, например:
  • предотвращение взлома веб-страниц за счёт нарастающей задержки или использования CAPTCHA;
  • предотвращение офлайн-взлома путем применения достаточно медленной хеш-функции с индивидуализированной на уровне пользователя «солью»;
  • защита хешей паролей.

Читать дальше →

Библиотечка datef — форматирование дат

Reading time2 min
Views3.8K
Разрешите представить datef — мини-JS-библиотеку вывода даты в разных форматах.
Вкратце опишу имеющиеся фичи:
  • Выполняет одну и только одну задачу: вывод дат в разных, потребных юзеру форматах;
  • Работает в nodejs и в браузерах. В браузерах может работать как requirejs/amd-модуль;
  • Не мусорит в прототипах встроенных объектов;
  • Написана в strict mode;
  • Обильно аннотирована в js-doc-формате;
  • Не имеет внешних зависимостей.

Примеры использования:
datef('dd.MM.YY', new Date()); // "13.08.12"
datef('dd.MM.YY'); // второй аргумент необязателен — берется «сейчас»

var d = new Date();
d.setFullYear(2045);
datef('dd.MM.YYYY', d); // "13.08.2045"

// есть несколько заранее заданных форматов:
datef.formatters.ISODateTimeTZ(); // "2012-08-13T15:01:29 -04:00"

// можно определить и сохранить свой…
datef.register('myFormat', 'd.M.YY');
datef.formatters.myFormat(); // "13.8.12"

// или просто получить его как отдельную функцию
var myFormat = datef.createFormatter('d.M.YY');

Копание во внутренностях и лирические отступления

InfiniteWP: управляем всеми сайтами на WP из одной панели

Reading time2 min
Views11K

Итак здравствуйте!


На данный момент много (больше 30) наших клиентов заказали себе сайт на популярной CMS WordPress, и остались на поддержке.
Это значит порядка 30 сайтов к которым надо иметь пароли, проверять на наличие обновлений, устанавливать нужные плагины, наполнять материалом и делать хорошо клиенту и его сайту.
И совсем недавно у меня возник вопрос, а что если все это упростить? Собрать все в одном месте?

Сказано — сделано. Искал — нашел.


Читать далее

Что если бы Google выпустил свой Bootstrap?

Reading time2 min
Views19K
Поздравляю всех с пятницей и в качестве небольшого развлечения предлагаю представить, как бы выглядел популярный CSS-фреймворк Twitter Bootstrap, если бы он был от Google? Встречайте Plusstrap.


Читать дальше →

Велосипеды на Javascript и jQuery

Reading time4 min
Views77K
В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
Безусловно количество таких вещей очень и очень велико, поэтому в статье ограничусь лишь некоторыми.
Читать дальше →

Джентельменский набор модулей для Drupal 7

Reading time3 min
Views86K
Доброго всем времени суток!

Те, кому часто приходится поднимать сайты на Drupal, имеют в загашнике постоянный набор модулей и тем, которые так или иначе могут использоваться на поднимаемом ресурсе.
При отсутствии данного набора приходится вспоминать и скачивать модули для воплощения на сайте того или иного функционала.
Поскольку актуальной на данный момент версией является седьмая, о ней и пойдёт речь.
Читать дальше →

Защита от SQL-инъекций в PHP и MySQL

Reading time26 min
Views259K
К своему удивлению, я не нашёл на Хабре исчерпывающей статьи на тему защиты от инъекций. Поэтому решил написать свою.

Несколько пространный дисклеймер, не имеющий прямого отношения к вопросу
Давайте признаем факт: количество статей (и комментариев) на тему защиты от SQL-инъекций, появившихся на Хабре в последнее время, говорит нам о том, что поляна далеко не так хорошо истоптана, как полагают некоторые. Причём повторение одних и тех же ошибок наводит на мысль, что некоторые заблуждения слишком устойчивы, и требуется не просто перечисление стандартных техник, а подробное объяснение — как они работают и в каких случаях должны применяться (а в каких — нет).

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

Я не буду пытаться изображать полиглота и писать рекомендации для всех БД и языков разом. Достаточное количество опыта у меня есть только в веб-разработке, на связке PHP/MySQL. Поэтому все практические примеры и рекомендации будут даваться для этих технологий. Тем не менее, изложенные ниже теоретические принципы применимы, разумеется, для любых других языков и СУБД.

Сразу отвечу на стандартное замечание про ORM, Active record и прочие query builders: во-первых, все эти прекрасные инструменты рождаются не по мановению волшебной палочки из пены морской, а пишутся программистами, используя всё тот же грешный SQL. Во-вторых, будем реалистами: перечисленные технологии — хорошо, но на практике сырой SQL постоянно встречается нам в работе — будь то legacy code или развесистый JOIN, который транслировать в ORM — себе дороже. Так что не будем прятать голову в песок и делать вид, что проблемы нет.

Хоть я и постарался подробно осветить все нюансы, но, вполне возможно, некоторые из моих выводов могут показаться неочевидными. Я вполне допускаю, что мой контекст и контексты читателей могут различаться. И вещи, которые кажутся мне сами собой разумеющимися, не являются таковыми для некоторых читателей. В этом случае буду рад вопросам и уточнениям, которые помогут мне исправить статью, сделав её более понятной и информативной.

Ещё только начав интересоваться темой защиты от инъекций, я всегда хотел сформулировать набор правил, который был бы одновременно исчерпывающим и компактным. Со временем мне это удалось:

Правила, соблюдение которых гарантирует нас от инъекций


  1. данные подставляем в запрос только через плейсхолдеры
  2. идентификаторы и ключевые слова подставляем только из белого списка, прописанного в нашем коде.

Всего два пункта.
Разумеется, практическая реализация этих правил нуждается в более подробном освещении.
Но у этого списка есть большое достоинство — он точный и исчерпывающий. В отличие от укоренившихся в массовом сознании правил «прогонять пользовательский ввод через mysql_real_escape_string» или «всегда использовать подготовленные выражения», мой набор правил не является катастрофическим заблуждением (как первое) или неполным (как второе).

Но вперёд, читатель — перейдём уже к подробному разбору.
Читать дальше →

Ваш сайт тоже позволяет заливать всё подряд?

Reading time4 min
Views52K
Один французский «исследователь безопасности» этим летом опубликовал невиданно много найденных им уязвимостей типа arbitrary file upload в разных «написанных на коленке», но популярных CMS и плагинах к ним. Удивительно, как беспечны бывают создатели и администраторы небольших форумов, блогов и интернет-магазинчиков. Как правило, в каталоге, куда загружаются аватары, резюме, смайлики и прочие ресурсы, которые пользователь может загружать на сайт — разрешено выполнение кода PHP; а значит, загрузка PHP-скрипта под видом картинки позволит злоумышленнику выполнять на сервере произвольный код.

Выполнение кода с правами apache — это, конечно, не полный контроль над сервером, но не стоит недооценивать открывающиеся злоумышленнику возможности: он получает полный доступ ко всем скриптам и конфигурационным файлам сайта и через них — к используемым БД; он может рассылать от вашего имени спам, захостить у вас какой-нибудь незаконный контент, тем подставив вас под абузы; может, найдя параметры привязки к платёжной системе, отрефандить все заказы и оставить вас без дохода за весь последний месяц. Обидно, правда?

Как ему это удастся?

Принцип «уверенности» высококачественного веб-дизайна

Reading time10 min
Views21K
Краткий синопсис

Доброго времени суток, уважаемые Хабрапользователи. Я довольно давно наблюдаю за различными постами Хабра, касающихся веб-дизайна, да и дизайна в целом. Чаще всего смысл таких постов сводится к очень подробным описаниям отдельных элементов сайта и их различным вариантам — в этом нет ничего плохого, но, мне кажется, этой теме чего-то не хватает: а именно, освещения более общих и всем понятных принципов высококачественного дизайна, которыми мог бы воспользоваться любой пользователь, даже не владеющий соответствующим профилем. В этой статье речь пойдет об одном из таких основополагающих принципов.

image

Под катом примерно 1.1 Мб трафика.
Читать дальше →

Настоящий домашний кинотеатр

Reading time6 min
Views8.3K
Сегодня мне хотелось бы поговорить о настоящем домашнем кинотеатре. Да-да, именно о настоящем, а не о тех что «в одной коробке». Большинство упоминаний этого термина, ни имеет с настоящим домашним кинотеатром ничего общего.
Читать дальше →

Фриланс как средство заработка. Ч.2. Приступаем к работе

Reading time6 min
Views26K
Чтож, в первой части я долго и упорно лил из пустого в порожнее, преследуя лишь одну цель — признать, что в провалах проектов по стоимости и срокам виноваты мы, мы и только мы. Не существует мифических дядь Вась, повинных во всех наших бедах, не заказчик выносит мозг нам своими требованиями и сменой приоритетов — это все мы, родимые, учиняем, потом благополучно взращиваем и оберегаем от внешнего воздействия. Так что если вы с этим спорить не будете, то айда под кат, посмотрим что у нас дальше на повестке дня.
Читать дальше →

Фриланс как средство заработка. Ч.1. Старт проекта

Reading time5 min
Views43K
В предыдущих своих постах я постарался рассказать о том, как взаимодействуют фрилансер и заказчик. Большинство мыслей, представленных в этих статьях, были самим собой разумеющимся, на что мне указывали, и не раз. Сегодня я бы хотел начать разговор о том, как мы, благополучно пройдя все перипетии первоначального обсуждения, начинаем проект. Я опять буду банален до безобразия, вновь и вновь буду перетирать то, что каждому понятно. Но, как показывает практика, все мы с упорством мазохистов наступаем на одни и те же грабли.
Читать дальше →

Радиоэлектронный фриланс

Reading time10 min
Views118K
Окончив институт и устроившись на работу, я осознал, что совершенно не создан для офисной или выездной работы, четких распорядков, начальников и прочей рутины. А ходить на работу каждый день было ну совсем невыносимо. Хватило меня на пол года :) Потому, несмотря на не пыльную работу, весьма высокую зарплату, а по меркам вчерашнего студента, так вообще шикарную, я дождался первого же срача с начальством и красиво хлопнул дверью. С тех пор развлекаю себя сам и доволен жизнью. О нюансах вольной жизни бывшего фрилансера электронщика я и хочу поведать в этом посте.
Все нижеследующее это исключительно мой практический опыт и я не уверен, что у вас все получится именно так.

Бабло
Начну с самого интересного, с денег. Скажем так, под конец моей деятельности (примерно 2010), не особо напрягаясь, работая около двух-трех дней в неделю, можно было смело делать тысяч по 50-70 рублей. Это в Челябинске. Если работать каждый день, то легко было делать от 150 тысяч рублей в месяц и более, но я для этого был слишком ленив. А теперь по порядку.

Далее Война и Мир, написал как сумел

В помощь тем кто хочет начать разработку приложений для iOS

Reading time4 min
Views20K

Разработчик, кто он?



Для начала, надо понимать зону ответственности разработчика приложений и те роли, которые могут присутствовать в ходе всего процесса разработки. Лучше всего это понимание приходит после работы в команде, но все-таки немного теории. Роли примерно следующие:
  • Заказчик
  • Менеджер
  • Архитектор, старший разработчик
  • Разработчики
  • Дизайнер


Роли можно расписать более подробно – все зависит от сложности проекта и от наличия или отсутствия человеческих ресурсов.
Как это все работает. У заказчика появляется идея, он хочет ее воплотить жизнь. Возможно, он еще сам толком не представляет, чего хочет и может выговорить менеджеру только несколько слов. К примеру «iphone» и«карта моих ресторанов». После чего, задача менеджера составить с заказчиком максимально подробную спецификацию приложения. В спецификацию должна входить вся информация от поддерживаемых версиях операционной системы до зарисовок экранов. Вот пример зарисовок(wireframes, mockups) вместе с оценкой.
image

Архитектор или старший разработчик — это опытный человек, который знает как выстроить архитектуру приложения в соответствии с принципами ООП, MVC(паттерн модель-вью-контроллер), как сделать код приложения гибким, красивым и удобно поддерживаемым. Он смотрит на спецификацию, рисует архитектуру и раздает задания разработчикам. С дизайнером, чаще всего, общается менеджер, предоставляя ему зарисовки и концепт. Это очень общее представление о том как происходит разработка ПО, поэтому я советую вам так же познакомиться с наиболее распространённым итеративным подходом к разработке.

Tips and tricks



Читать дальше →

The Modal — правильные модальные окна

Reading time2 min
Views180K
Очень часто модальные окна и диалоги делаются при помощи плагинов jQuery. Например, SimpleModal или jqModal. К сожалению, все они, в варианте по умолчанию, работают неправильно.

Что же такое «правильно»?

Модальное окно по определению блокирует работу пользователя с родительским окном до тех пор, пока пользователь его не закроет. То есть:

  1. Пользователю нельзя позволять прокручивать страницу под ним.
  2. При этом, если содержимого в модальном окне очень много, нужно позволить прокручивать содержимое.


По этому принципу работает просмотр фото в Facebook и Вконтакте и, я считаю, что для модальных окон это правильный вариант.

Чтобы не мучать вас заранее деталями реализации, покажу сначала демо плагина jQuery: http://rmcreative.ru/playground/modals_plugin/demo.html.

Ну а теперь немного про реализацию.
Читать дальше →

Особенности поиска и устройства на работу программистом. И что плохого в современных хедхантерах

Reading time5 min
Views31K
Ни для кого не секрет, что программисты сейчас востребованы, и найти работу программисту с опытом не составляет труда. Спрос нынче больше предложения.
В этом посте я хочу описать свой опыт и наблюдения, которые я сделал после прохождения нескольких собеседований. Буду рад, если его прочитают не только соискатели, но и работодатели.

Небольшой дискламмер. Я программист и пишу с точки зрения программиста. Я сейчас не ищу работу. Я не представляю и не рекламирую ни одну из компаний, упомянутых в этом посте. Я получил оффер примерно от 6 из 9 компаний, где проходил собеседование. Я не вижу ничего плохого в том, чтобы открыто писать названия некоторых компаний, потому что они сами не делают тайны из своей деятельности и открыто публикуют свои вакансии. От моих рук ни один хедхантер не пострадал.
Читать дальше →

10 мифов современного образования

Reading time4 min
Views268K

Миф 1. Университет не должен давать профессию — университет должен учить студента учиться.


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

Недаром, когда идет набор абитуриентов, все вузы кричат: «наши выпускники возглавляют банки, заводы и работают на самых престижных должностях», «мы вас научим тому-то и тому-то, да вообще, всему что только может понадобится».
image
И вот на пятом курсе подходит очередной выпускник к лектору и говорит:
— Профессор, я иду на красный диплом, но не могу найти работу.
— Задача университета — научить человека учится.
— ??
Читать дальше →

Бот для браузерки Angry Pets

Reading time6 min
Views11K
Предупреждение: бот прост до безобразия. Вы вряд ли научитесь чему-то новому. Статья just for fun.

Решил, что спустя год можно поглядеть, чем френды вконтакте развлекаются. Кроме традиционных тонн политоты, картинок с котятами и прочих непотребств обнаружил ссылку на браузерку Angry Pets. В браузерки никогда не играл, поэтому решил посмотреть, что это за зверь такой. Выяснилось следующее: картинки кавайнейшие (милые котики, пингвинчики и белочки бьют друг другу морды), донат анальнейший (за деньги доход умножают в 8 раз), сюжет, стратегия, безбажность, мануал и прочие привычные удобства отсутствуют.

Игра чуть менее, чем полностью, состоит из следующих нехитрых операций: построить здание, подождать 10 минут, построить юнитов, подождать 10 минут, найти жертву, отправить юниты в атаку, подождать 10 минут, найти жертву, отправить юниты в атаку, подождать 10 минут… (10 минут на высоких уровнях растут экспоненциально. За ускорение — отдельная плата.)

Что делать с такой игрой? Правильно, писать бота. Не играть же в это, честное слово.

Приступаем к делу!

17-летний бизнесмен основал четыре стартапа

Reading time2 min
Views18K
История 17-летнего австралийского веб-программиста Лэйчи Грума (Lachy Groom) показывает, что предпринимательство — это талант: или он есть с малых лет, или его нужно долго в себе искать.

Этот парень (на фотографии он учит программированию студента) начал заниматься бизнесом с малых лет, в детстве он торговал газировкой и занимался выгулом собак, к 11-ти годам отец научил его HTML и CSS. В 2008 году в возрасте 13-ти лет мальчик основал первый стартап PSDtoWP.com. По заказам клиентов, преимущественно, из Европы и США, он создавал WordPress-темы из макетов Photoshop. Спустя девять месяцев сайт купила крупная консалтинговая компания.
Читать дальше →

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity