Pull to refresh
0
g00d @g00dread⁠-⁠only

User

Send message

Правило пирамиды

Reading time5 min
Views9.3K
Правило пирамидыУ вашего нового сайта современный актуальный дизайн. Пуленепробиваемая верстка. Хрустально чистый код, способный в легкую держать 50 000 уников. Осталось только написать ясные и четкие тексты.

Это правило поможет вам. Не смотря на то, что оно простое, оно очень эффективно.

Стив Круг и Якоб Нильсен учат нас: если пользователь быстро не понял, нужна ли ему информация – он уйдет. Текст будет прочитан очень бегло, буквально одно-два предложения.

Как правильно составить текст для сайта? Что поставить вперед, а что приберечь на потом? Когда я впервые задался этим вопросом, мой отец, в прошлом журналист ТАСС, рассказал о правиле пирамиды. Его, в свое время, научили коллеги из BBC (Би-би-си, а не вэ-вэ-эс, если что).
Правило пирамиды и примеры
Total votes 170: ↑162 and ↓8+154
Comments55

Wikipedia через DNS

Reading time1 min
Views665
Как правило при наложении ограничений в локальных сетях администраторы оставляют открытыми, например, DNS или ICMP. Их можно чудесным образом использовать для связи с внешним миром.

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

> nslookup -type=txt large_hadron_collider.wp.dg.cx

Server: rr0.mtu.ru
Address: 212.188.4.10

Неофициальный ответ:
large_hadron_collider.wp.dg.cx text =

"The Large Hadron Collider (LHC) is the world's largest and the highest-
energy particle accelerator complex, intended to collide opposing beams of proto
ns, from hydrogen atoms stripped of their electrons, or lead ions, two of severa
l types of hadrons, at o"
"ver 99.9999991% of the speed of light. httр://en.wikipedia.org/wiki/Lar
ge_Hadron_Collider"


страничка проекта
Total votes 78: ↑77 and ↓1+76
Comments27

Мак. Гид по выживанию. Часть 2

Reading time12 min
Views27K
Перед вами вторая часть большой переводной статьи Мишель Делио. Если вы ещё не читали, можете ознакомиться с первой частью Гида по выживанию на этих страшных яблочных компьютерах.

В статье много ссылок на платные программы, что многие расценят, как рекламу. Я долго думала, что с ними делать, и решила оставить, но пыталась рассказать также о возможных бесплатных альтернативах. Здесь и далее мои комментарии выделены курсивом. Итак, приступим к нашим бедствиям.

Chapter 2

Читать дальше →
Total votes 69: ↑43 and ↓26+17
Comments48

Многоканальное аудио для MAC OS своими руками или как обЪединять интерфейсы

Reading time3 min
Views29K
Пошаговое руководство, как скрутить вместе 2 разных аудиоинтерфейса в один под MAC OS X без паяльника и дополнительных проводов. Думаю, будет полезно дискжокеям и сочувствующим.
Читать дальше →
Total votes 29: ↑23 and ↓6+17
Comments24

Вардрайвинг в MAC OS X

Reading time5 min
Views96K


Стандартом де-факто в вардрайвинге обычно считается система Linux (модифицированные драйвера, Kismet в связке с aircrack-ng). Но немногие знают, что в маке есть мощные инструменты для взлома аудита безопасности беспроводных сетей, ни чуть не уступающие, а во многом и превосходящие по функционалу Linux-аналоги.
UPD: Описанные в статье инструменты на сегодняшний день устарели. Рекомендуется использовать Linux

Читать дальше →
Total votes 93: ↑82 and ↓11+71
Comments89

Собеседование на должность JavaScript разработчика

Reading time4 min
Views287K


Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
Читать дальше →
Total votes 126: ↑115 and ↓11+104
Comments313

10 самых распространённых ошибок при программировании на JavaScript

Reading time10 min
Views155K


Сегодня JavaScript лежит в основе большинства современных веб-приложений. При этом за последние годы появилось большое количество JavaScript-библиотек и фреймворков для разработчиков Single Page Application (SPA), графики, анимации и даже серверных платформ. Для веб-разработки JavaScript используется повсеместно, и поэтому качество кода обретает всё большее значение.

На первый взгляд, этот язык может показаться довольно простым. Встраивание в веб-страницу базового функционала JavaScript — это не проблема для любого опытного разработчика, даже если он ранее не сталкивался с этим языком. Однако это обманчивое впечатление, поскольку JavaScript гораздо сложнее, мощнее и чувствительнее к нюансам, чем кажется поначалу. Немало тонкостей в этом языке приводит к большому количеству распространённых ошибок. Сегодня мы рассмотрим некоторые из них. На эти ошибки нужно обратить особое внимание, если вы хотите отлично программировать на JavaScript.
Читать дальше →
Total votes 205: ↑176 and ↓29+147
Comments127

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Reading time17 min
Views277K
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

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

Я предполагаю, что читатель уже знаком с тем, что такое mod_rewrite, и не буду описывать его основы, которые легко найти в интернете. Также нужно отметить, что в статье освещается работа mod_rewrite при использовании его директив в файле .htaccess. Отличия при работе в контексте <VirtualHost> изложены в конце статьи.

Итак, вы изучили mod_rewrite, составили несколько RewriteRule и успели столкнуться с бесконечными перенаправлениями, со случаем, когда правило почему-то не ловит ваш запрос, а также с непредсказуемой работой группы правил, когда последующее правило неожиданно изменяет запрос, кропотливо подготовленный правилами предыдущими.

Почему так происходит?
Читать дальше →
Total votes 208: ↑203 and ↓5+198
Comments25

Тестирование безопасности клиент-серверного API

Reading time6 min
Views40K
2 года назад я выступал на конференции CodeFest с темой «Пентест на стероидах. Автоматизируем процесс» и делал пересказ выступления в качестве статьи. В этом году я с большим удовольствием снова принял участие в конференции и выступил с темой «BlackBox тестирование безопасности клиент-серверного API» и, видимо уже в качестве традиции, также делаю пересказ выступления.



Уязвимости в API встречаются. Правда.

О чем разговор?


Разговор про API, но API бывает разным — API операционной системы, сайта, десктопной программы, да хоть чего. Вкратце — API это обращение к методам чего-либо (например в случае ОС — запись в файл) через определенный метод. И запуск какого-нибудь файла с т.ч. зрения разработки произойдет схожим образом (тоже через API метод ОС), хотя результат выполнения команды совершенно разный. В веб-технологиях многие тоже реализуют API к своим проектам, и если на пальцах: можно отправить сообщение в соц. сети зайдя на сайт, а можно — сформировав специальный HTTP запрос. И при реализации подобного альтернативного использования функционала допускаются (как и везде) ошибки в безопасности. Статья как раз о специфичных ошибках при реализации подобного функционала в веб-проектах.
Читать дальше →
Total votes 68: ↑66 and ↓2+64
Comments16

Битовые операции в PHP на примерах

Reading time3 min
Views87K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →
Total votes 242: ↑203 and ↓39+164
Comments162

Тонкости благополучного git-merge

Reading time8 min
Views356K

Вступительное слово


Считается, что «киллер фичей» СКВ Git является легковесное ветвление. Я ощутил это преимущество в полной мере, ведь я перешел на Git с SVN, где ветвление было достаточно дорогим процессом: для создания ветки нужно было скопировать весь рабочий каталог. В Git все проще: создание ветки подразумевает лишь создание нового указателя на определенный коммит в папке .git/refs/heads, который является файлом с 40 байтами текста, хешем коммита.

Основными командами пользовательского уровня для ветвления в Git являются git-branch, git-checkout, git-rebase, git-log и, конечно же, git-merge. Для себя я считаю git-merge зоной наибольшей ответственности, точкой огромной магической энергии и больших возможностей. Но это достаточно сложная команда, и даже достаточно длительный опыт работы с Git порой бывает недостаточным для освоение всех ее тонкостей и умения применить ее наиболее эффективно в какой-либо нестандартной ситуации.

Попробуем же разобраться в тонкостях git-merge и приручить эту великую магию.

Здесь я хочу рассмотреть только случай благополучного слияния, под которым я понимаю слияние без конфликтов. Обработка и разрешение конфликтов — отдельная интересная тема, достойная отдельной статьи. Я очень рекомендую так же ознакомиться со статьей Внутреннее устройство Git: хранение данных и merge, содержащей много важной информации, на которую я опираюсь.
Читать дальше →
Total votes 76: ↑75 and ↓1+74
Comments47

Бесплатные скринкасты для изучения Go

Reading time1 min
Views9.6K
На сайте GoCasts.io опубликована небольшая подборка скринкастов, обучающих программированию на языке Go. Всего опубликовано три скринкаста от Алана Харпера. Приятно, что в качестве примеров выбраны не абстрактные, а самые практичные примеры из реальной жизни.

#1 – HTTP Get
Как осуществить простой HTTP-запрос с использованием пакета net/http в стандартной библиотеке Go.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments3

Metasploit Penetration Testing Cookbook – часть 7

Reading time14 min
Views46K

Перевод седьмой части книги «Metasploit Penetration Testing Cookbook»


metasploit cookbook

Глава 7. Работа с модулями


В этой главе изучим следующее:
  • Работа со вспомогательными скан-модулями
  • Работа со вспомогательными админ-модулями
  • SQL injection и DOS модули
  • Пост-эксплуатационные модули
  • Основы создания модулей
  • Анализ модулей
  • Создание пост-эксплуатационного модуля

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments13

Как это сделано: префиксный поиск

Reading time5 min
Views44K
Мы живем во времена, когда кажется, что все просто и все есть. Нужно сделать масштабируемый проект — используем MongoDB, нужна очередь — вот RabbitMQ, нужно поднять функционал поиска — раз плюнуть: ставим Sphinx, Solr, ElasticSearch (нужное подчеркнуть).

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

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

Мы посмотрим, как с помощью нашего проекта http://indexisto.com сделан поиск на сайте http://maximonline.ru и сравним его с тем, что есть на других сайтах.

Для начала несколько примеров. Возьмем запрос «Битва за Лос Анджелес» и представим, что его напишут неправильно «Лос Анжелес биттва». Как видно, пользователь не знает точно, как пишется имя города, и забыл, как звучит название фильма, а также у него дрогнула рука в конце на слове «битва».

Выберем достойные проекты рунета, в которых есть префиксный поиск, и попробуем поискать там наш запрос:

Проект Правильный запрос Неправильный запрос
afisha.ru

все ОК

Не найдено
ivi.ru

все ОК

Не найдено
vk.com

все ОК

Не найдено
maximonline.ru

все ОК

все ОК

Читать дальше →
Total votes 103: ↑81 and ↓22+59
Comments37

Путь JavaScript модуля

Reading time28 min
Views121K


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

Модули или подобные структуры это неотъемлемая часть любого взрослого языка программирования. Просто иначе никак. Модули позволяют ограничить область видимости, позволяют реиспользовать части приложения, делают приложение более структурированным, отделяют ресурсы от шума и вообще делают код нагляднее.

Вот в JavaScript своя атмосфера — в языке нет официальных модулей, более того все файлы лежат удаленно, один поток приложения. Приходится постоянно решать какие-то странные проблемы с загрузкой, хитро паковать модули в один файлы, чтобы ускорить время загрузки. Бывает, что нужно воевать с двойными стандартами, адаптировать модули другого формата.

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →
Total votes 188: ↑185 and ↓3+182
Comments71

Как сверстать веб-страницу. Часть 1

Reading time13 min
Views1.2M
Уважаемый читатель, этой статьей я открываю цикл статей, посвященных вёрстке.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.

Часть 1. Верстка стандартными средствами


Преимущество данной верстки состоит в том, что код получается более «чистым», а значит быстрее загружается и легче изменяется под специфические нужды. Недостаток такой верстки заключается в том, что она требует значительно больше времени, чем при использовании фреймворков.

Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
Читать дальше →
Total votes 155: ↑120 and ↓35+85
Comments110

Re: Собеседование разработчика (альтернатива/дополнение)

Reading time6 min
Views57K
Не мог пройти мимо топика "Вопросы на собеседование middle/senior iOS Developer" и статьи "Собеседование разработчика". Хочу предложить альтернативный или дополнительный подход к собеседованию разработчиков.

Разбор говнокода или сотня разношерстных вопросов на листочке — это, конечно, прекрасно, но если это единственный этап собеседования, то это вызывает желание спросить что-то вроде: «Вы серьезно?»

Вы не устали от того, что на собеседованиях на конкретную позицию разработчика вас спрашивают достаточно сильно оторванную от жизни фигню, которую хочется поскорее забыть после такого собеседования (режим nightmare — это тест на 150+ вопросов и психолог в конце)? Я не отрицаю, что оценивать качество кода — это очень важно, но оценивать качество какого-то конкретного куска и делать по нему большие выводы — это точно неправильно.

К тому же, слишком много так называемых разработчиков не имеют никакого понятия о том, как строить архитектуру приложения, как грамотно разделить компоненты на модули, как внести гибкость для последующих изменений проекта. А вопросы подобные вопросам из топика "Вопросы на собеседование middle/senior iOS Developer" не дадут вам понять, насколько человек хорошо применяет свои знания при реализации проекта.

Что ты предлагаешь, чувак?

Давайте рассмотрим на примере android разработчика (адаптировать можно для любой области, но вы же понимаете, что без конкретики эту статью просто раскритиковали бы, так что поговорим об android).

Что я предлагаю: берем популярное, большое (в плане функционала) и сложное (в плане реализации) приложение и беседуем насчет того, как кандидат бы его сделал!

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

Разбор листочка с кодом или заученные ответы на подковыристые вопросы не дадут вам понять, как потом этот человек справится с реальными задачами на реальном проекте (но я не говорю, что не надо спрашивать этого, можно, но это не должно быть основой собеседования).

Для примера, возьмем приложение Вконтакте для android (оно большое, сложное и многим знакомое).
Читать дальше →
Total votes 65: ↑55 and ↓10+45
Comments35

Semantic UI — почти альтернатива Bootstrap

Reading time1 min
Views81K
image
Наткнулся сегодня на одну интересную штуку.
Semantic UI — это фреймворк для создания переносимых интерфейсов, который поможет повторно использовать элементы UI в своих проектах. Такая себе альтернатива Bootstrap.
Небольшой пример — если вы хотите добавить в свой проект что-то похожее на кнопку

просто воспользуйтесь следующими элементами:
semantic add button
semantic add icon
Читать дальше →
Total votes 85: ↑79 and ↓6+73
Comments40

Трансляция разработки iOS приложения за 48 часов

Reading time2 min
Views9.6K
Здравствуйте, дорогие читатели Хабра!

Только что начался 48-ми часовой марафон по разработке iOS клиента для биржи Btc-e.com. Сам марафон доступен по ссылке: bdev.tv.

За отведенное на марафон время команда талантливых разработчиков и дизайнеров начнет с нуля и доведет до ума приложение под iOS6+. В программе стрима:

  • Сама разработка приложения
  • Советы начинающим кодерам и дизайнерам
  • Небольшой курс-введение в Objective-C
  • Практическая часть статей «Записки iOS разработчика»
  • Свободное общение с командой, постоянный интерактив
  • Теле-мост в Ванкувер (разработка ведется одновременно на двух полушариях)
  • Смех, интриги, расследования

Наша команда:
Узнать, кто в команде
Total votes 37: ↑27 and ↓10+17
Comments14

Адаптивные email'ы

Reading time4 min
Views42K
image


Сегодня пользователи все чаще читают электронные письма на мобильных устройствах. Каково бывает просмотр большого HTML-email'а на телефоне? Приходится много масштабировать и скроллить, в целом читать становится очень неудобно. Поэтому и письма электронной почты следует делать адаптивными.
Читать дальше →
Total votes 63: ↑54 and ↓9+45
Comments18

Information

Rating
Does not participate
Registered
Activity