• Iodine: DNS туннель через закрытый WiFi

      Дано: полное отсутствие интернета и виднеющийся WiFi hot-spot, в котором предлагают ввести логин-пароль. Или 3G, в котором нет интернета (потому что закончились деньги), но есть страничка провайдера с предложением дать оных денег.
      Задача: получить интернет (легальным?) методом посредством туннелирования его через DNS.
      Решение: linux+ iodine + routing + NAT + squid, и всё это под управлением network manager'а.
      В статье: описание организации DNS туннеля посредсредством программы iodine, нюансы организации маршрутизации через образовавшийся туннель, самописный помощник для iodine и network manager.

      Лирика: Занесла меня судьба на славный остров Кипр, кой славен своим П/пафосом, фраппэ и таким интернетом, после которого российские опсосы начинают выглядеть ангелами во плоти. В частности, попытка подключиться к интернетам закончилась ожиданием, что местный провайдер (Сyta) смилостивится, таки закончит пить оный фраппэ и дотянет до меня поганый ADSL 4Мб/768кбит всего-навсего за €151 (подключение) + €40 в месяц (за 4 мегабита! >_<). Ожидание тянулось и тянулось (как бы уже третья неделя пошла), а рядом был славный PrimeTel, который предлагал за €4/час (172р/час) осчастливить меня интернетом прямо тут и сейчас через едва видный WiFi. Я бы даже и согласился, но видна точка доступа была только на балконе, а в квартире связь была нестабильной и часто терялась. Так что оставалось одно решение (помимо взлома WEP-сети соседей, что уж совсем уголовщина) — это злоупотребить сервисом DNS, который безвозмездно, то есть даром, предоставляет PrimeTel для своих незарегистрировавшихся подлюченцев.

      Те, кому интересно «howto» — решение далее по тексту, а пока что начнём с теории процесса.
      Читать дальше →
    • И ботаники бизнес автоматизируют

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

      image

      Ниже много откровения.

      Читать дальше →
    • «Добавить в корзину» против «Купить в один клик»: результаты АБ-теста

        В течение месяца мы проводили на сайте одного из наших клиентов (интернет-магазина подарков) АБ-тест, в котором сравнивали конверсию посетителей в оплаченные заказы для трех разных вариантов оформления заказа:
        image
        Сразу о главном: победил вариант №2 с приростом конверсии +58% по сравнению с вариантом №1. Под катом подробнее о проведенном тесте, варианте №3, некоторые числа и графики.
        Читать дальше →
      • Conversion Centered Design

          На самом деле это всего лишь продолжение вопроса из «Тостера», поэтому пост дискуссионный.

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

          Например, вешая на сайт голую женщину или поддельные отзывы мы повышаем конверсию. Используя слова «Акция», «Жми!», «Кликай» в копирайте мы «боевым НЛП» воздействуем на подопытного прямо в бессознательное против его воли. Я думаю со мной согласятся, что с точки зрения user-centered design это не экологично и не здорово. И уж явно не образец крутого UCD.

          image
          Читать дальше →
        • Оглядка на популярные тенденции веб-дизайна 2013 года

          • Translation
          Этот год принес новые важные концепции пользовательских интерфейсов, open source проекты, новые хаки и трюки для веб-дизайнеров и разработчиков. Те, кого интересует, что делает хороший дизайн таковым, наверное, заметили устойчивые улучшения. Заглянув в прошлое, хотя бы на одно десятилетие, в 2003 год, вы поймете, что интернет и WWW прошли долгий путь.
          В этой статье я хочу поразмышлять о 2013 годе со стороны наиболее популярных тенденций веб-дизайна. Некоторые повторяются из года в год, но в этом году я заметил пик дизайнерского интереса к ним и даже усовершенствования этих техник.
          Читать дальше →
        • Регистрация на сайте: c начала и до обеда

          Привет хабр!
          Я работаю в области web-разработки и на днях у меня появилась интересная задача – необходимо было создать сложную форму регистрации, на которой будет расположено двадцать два (22!) текстовых поля и один большой список с чекбоксами.
          Я всегда руководствовался принципом, что большое количество полей на форме регистрации очень неприятно для пользователей, даже если они будут получать материальные бонусы по завершению. Поэтому я всегда старался сделать форму максимально простой, максимум в 4 поля, если это было возможно со стороны бизнеса (заказчика). И даже пренебрегал полем с капчей, использовав вместо нее скрытую js-капчу, или вовсе отказывался от нее. Но все попытки донести это заказчику были безуспешны.

          Под хабракатом я попытаюсь создать максимально универсальное решение подобных задач

          Читать дальше →
        • Чему я научился, собирая миллион долларов на стартап без бизнес-плана и финансовых прогнозов (потягивая при этом пивко)

          • Translation
          От переводчика. Автор этой публикации — Роберт Мэй (Robert May), основатель компании Backupify, которая позволяет осуществлять резервирование, архивацию и экспорт информации, находящейся в различных онлайн хранилищах.


          Как и многие из вас, я немало лет читал блоги про стартапы и венчуры. Я перечитал уйму постов о том, что надо писать в своих бизнес-планах и как делать финансовые прогнозы. Но в итоге это неизменно меня утомляло. Я всегда был человеком действия, а не планирования; я проявлял изобретательность, а не искал деньги. При мысли о трате бесценного рабочего времени на корпение над бизнес-планом меня изрядно мутило.

          За несколько месяцев, пока я завершал привлекать инвестиции в Backupify, моё представление сильно изменилось. С одной стороны, я смог собрать деньги без бизнес-плана и финансовых прогнозов. Это радовало. С другой стороны, я узнал некоторые вещи, которые изменили моё представление о процессе поиска средств. Когда я снова буду заниматься этим для нашего следующего этапа и для будущих стартапов, я буду подходить к этому иначе, чем в этот раз. Вот я и подумал, что пока эти мысли свежи, хорошо бы записать свой опыт прохождения пути от новичка в области венчурного капитала до генерального директора компании, за которой стоят венчурные инвесторы. По прошествии времени я уже не вспомню события так подробно, а посему вот пост о том, что я узнал и чем хочу поделиться с теми из вас, кто впервые ступает на этот путь.
          Читать дальше →
        • Элегантная форма входа в админку на Laravel и Sentry

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

          Статья содержит описание некоторых базовых приемов использования Laravel при разработки сайтов и будет полезна тем, кто начинает осваивать данный фреймворк. Для примера использую Ubuntu 12.04, PostgreSQL 9.3, Nginx 1.1.19, PHP 5.5.7, Composer и свежий проект, созданный с использованием Laravel 4.1. Под управление PostgreSQL крутится база данных examples, к которой имеет доступ пользователь examples c одноименным паролем. Nginx же настроен таким образом, что при обращении по адресу examples.loc в браузере открывается главная страницу-заглушка, которая идет с Laravel в комплекте, с надписью «You have arrived.»
          Читать дальше →
          • +4
          • 22.6k
          • 6
        • Создание zip-модулей в python

            Предыстория


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

            В первую очередь, нам хотелось иметь ограниченный компактный набор конечных распространяемых модулей. Однако публичная сборка питона, распространяемая через python.org к этому не располагает, одна только стандартная библиотека, являющаяся неотъемлемой частью самого языка, состоит из более чем тысячи py-файлов. Именно поэтому, мы сразу обратили внимание на такую любопытную особенность интерпретатора, как возможность импорта модулей, находящихся в zip-архивах, когда все множество исходников на питоне, относящихся к одному или нескольким модулям, упаковано в zip-архив и распространяется одним zip-файлом.

            Читать дальше
          • Объектная гимнастика

            • Translation
            В первых двух абзацах оригинального текста автор описывает как он пил пиво с друзьями. Я заменил их пятничной картинкой о гимнастике из детства.

            Объектная гимнастика (англ. Object Calisthenics) — это упражнения в программировании, которые состоят из 9 правил, которые Джефф Бей описал в своей книге «The ThoughWorks Anthology». Пытаясь как можно точней следовать этим правилам, вы измените свои привычки написания кода. Это не значит, что вы должны постоянно соблюдать все эти правила. Найдите баланс и используйте только те, которые вам удобны.

            Эти правила сфокусированы на читаемости, тестируемости, понятности и поддерживаемости вашего кода. Если вы уже пишите код, который читаем, тестируем, понятен и поддерживаем, тогда эти правила помогут сделать его более читаемым, тестируемым. Понятным и поддерживаемым.

            Ниже я прокомментирую этих 9 правил:
            1. Только один уровень отступа в методе
            2. Не используйте Else
            3. Оберните все примитивные типы и строки
            4. Коллекции первого класса
            5. Одна точка на строку
            6. Не используйте сокращения
            7. Сохраняйте сущности короткими
            8. Никаких классов с более чем 2 атрибутами
            9. Никаких геттеров, сеттеров и свойств

            Читать дальше →
          • HowTo: Интернет-банкинг для юридических лиц с использованием Aladdin eToken в Linux (Ubuntu)

              UPD: Обновлено для Ubuntu 13.10 x64 сам клиент SafenetAuthenticationClient придётся попросить у техподдержки Аладдин.

              Случилось так, что я решил организоваться как самостоятельный разработчик и открыл ИП. Долго я маялся с выбором банка для расчётного счёта, т.к. нужно было что-то максимально платформо-независимое — сильно не хотелось заводить винду только для интернет-банкинга, походы же в отделение банка, естественно, не рассматривались в принципе, да и дороже это выходит. В итоге я остановился на ПромСвязьБанке, в надежде, что ключи шифрования у них можно получить в виде файлов/на обычной флешке, а не на eToken'е (дело происходит в Омске). Я даже честно пытался обзванивать банки, на которых остановился и узнать на каком носителе выдаются у них ключи, но день потрачен был зря — ни в одном банке добраться до вменяемого специалиста мне не удалось. В итоге в выбранном банке услуга создания ключей оказалась довольно муторной. При генерации ключей я попытался выбрать в качестве носителя флешку, а не полученный eToken, но позже я узнал, что в этом банке «главная» подпись может быть только на eToken а для отчётов можно генерить ключи на флешку. В общем далее руководство как пользоваться интернет-банкингом с eToken под Ubuntu 12.04 x64.
              Читать дальше →
            • Цифровая погоня за золотым гусём, или как самая большая афера в истории Bitcoin превратилась в фарс

                Жертвы недавней аферы в сфере криптовалют попытались вернуть свои украденные биткоины и попробовали обойти анонимность, заложенную в саму основу криптовалюты. В начале декабря был закрыт SheepMarketplace, сайт, который использует биткоины и анонимный браузер Tor для обеспечения онлайн-продаж запрещенных товаров. Администрация сайта сообщила, что один из дилеров нашел баг в системе, который был использован для кражи 5400 BTC.

                Но пользователи заподозрили неладное, и посчитали, что сайт, скорее всего, беспричинно удерживает гораздо большие средства, принадлежащие пользователям, и не собирается их возвращать. В итоге, бывшие клиенты SMP объединяются, и находят биткоин-бумажник, содержащий 96000 BTC, которые, как они посчитали, связаны с аферой. По курсу на тот момент содержание кошелька составляло 100 миллионов долларов.


                Погоня за деньгами


                То, что произошло дальше было возможно только за счет уникальных особенностей системы биткоин, одна из которых — открытость операций между кошельками. В результате, когда деньги начали передаваться между счетами — пользователи последовали за этими транзакциями.
                Читать дальше →
              • Проектировщик — менеджер проекта. Реальность или утопия?

                  Давайте сначала расскажу, что я вкладываю в понятие проектировщика.

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

                  Если он хорошо общается с клиентом и выведывает у него информацию о компании, производственных процессах, целевой аудитории, а затем превращает их во вводные и договоры, то это в первую очередь аккаунт или продавец (из нашей дискуссии в комментариях получается, что сюда больше подойдёт термин «бизнес-аналитик»). Он умеет не только слушать, но и говорить. Он делает так, чтобы клиент понимал, что они работают над проектом по одну сторону баррикад.

                  Если он формирует эту информацию в список функциональных требований, создаёт по ним структуру разделов будущего проекта, а потом превращает это в интерактивный прототип, то это UX-дизайнер.
                  Читать дальше →
                • Система мониторинга OpenNMS

                    image

                    Ни в малейшей степени не желаю показаться непатриотичным, но исторически сложилось так, что при выборе корпоративной системы мониторинга сетевой инфраструктуры у нас на предприятии победила OpenNMS, сместив с этой должности бабушку Cacti и обогнав земляка-Zabbix. Сравнительный анализ Open Source систем мониторинга не входит в мои планы, поэтому просто в общих чертах расскажу об OpenNMS, благо на Хабре о ней не писали и вообще информации о ней немного.
                    Восстановим равновесие
                  • Делаем безопасную загрузку изображений

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

                    Для начала кратко основные шаги:
                    — производим отправку изображения с использованием XMLHttpRequest;
                    — проводим проверку загруженных данных на сервере на предмет «действительно ли это изображение»;
                    — проводим принудительное преобразование изображения в jpeg
                    Читать дальше →
                  • О цветовых пространствах

                      Я по образованию программист, но по работе мне пришлось столкнуться с обработкой изображений. И тут для меня открылся удивительный и неизведанный мир цветовых пространств. Не думаю, что дизайнеры и фотографы узнают для себя что-то новое, но, возможно, кому-нибудь это знание окажется, как минимум полезно, а в лучшем случае интересно.
                      Читать дальше →
                    • mini-PCIe LTE для ноутбука


                        Это логическое продолжение топика о miniPCIe контроллере WiMax.
                        Некоторое время назад WiMax сети стали историей, и на их место победоносно ступил LTE. Однако идея использовать интегрированный модуль, вместо торчащего свистка беспроводной связи, не стала казаться мне менее привлекательной.
                        Выбор таких устройств совсем небогатый, и я останавился на Sierra MC7710, так как на форумах были сообщения об успехе его использования с Российскими LTE операторами. Процесс настройки оказался совсем не тривиальным делом и в добавок он нигде не описан от начала до конца. Поэтому я уверен, что этот топик должен занять место в кэше поисковых систем.
                        Читать дальше →
                      • LTE в Омске

                        Приветствую, Хабр!

                        Я IT-шник и отправили меня в Омск в командировку, из Санкт-Петербурга. Как любому нормальному современному человеку мне нужен хороший интернет в ноутбуке…

                        Да, да, остальное под катом…
                        С пачкой картинок.
                        Читать дальше →
                      • Практика IPv6 — домашняя сеть

                        • Tutorial
                        Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.

                        Зачем IPv6?


                        Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?

                        Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.

                        Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.

                        Структура сети:

                        (Оригиналы картинок: github.com/amarao/dia_schemes)
                        • 1, 2, 3 — устройства в локальной сети, работают по WiFi
                        • 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
                        • 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
                        • 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
                        • 7 — eth2, интерфейс подключения к сети Tiera

                        Читать дальше →
                      • Десктопные CRM: дегустация бесплатного сыра

                          Пока на Хабре с азартом выбирали облачные CRM, передо мной встала обратная задача — найти CRM десктопную. Такое решение было продиктовано необходимостью обеспечения безопасности данных, особенно клиентской базы и рядом других, не менее весомых причин. Покупка предстояла серьезная (как-никак, 30 мест с возможной доработкой) и подход нужен был соответствующий.

                          Эксперимент


                          Прежде, чем купить ту или иную систему, мы провели большой эксперимент в несколько этапов:
                          1. Собрали списки существующих CRM, отзывы на них, просмотрели сайты и цены.
                          2. Определили свои цели и собрали требования: CRM должна быть операционной, рассчитанной на ведение клиентов, сделок, цикла продаж, базы, на планирование и контроль за действиями менеджеров, построение внятных и быстрых отчетов.
                          3. Установили мне (администратору) и менеджерам бесплатные версии на тестирование.
                          4. Установили демо-версии выбранных CRM и работаем на них.

                          Рассказ получается длинным, поэтому в первой части обзора для Хабра решено рассмотреть бесплатные однопользовательские версии выбранных CRM.
                          image
                          Читать дальше →