• Как начать майнить для начинающих

    Идея и название статьи подсказано юзером Xao в комментарии к недавнему посту Что делать с Bitcoin нам, обычным людям, а также многочисленными вопросами на Тостере. Эта инструкция поможет начать майнинг на обыкновенных компьютерах и ноутбуках под управлением ОС Windows или Linux в составе пула совместной генерации криптовалюты.

    Как верно заметил dzzh
    Смысла нет сейчас биткоин майнить. Какие-то мелкие монетки генерировать и через биржи в биткоин выводить — еще да.

    Поэтому начать майнинг придется с выбора криптовалюты. Данная инструкция состоит из 5 простых шагов:
    1. Выбор форка
    2. Выбор пула
    3. Выбор майнера
    4. Запуск майнинга
    5. Вывод на свой кошелек

    Читать дальше →
  • Абстракции в компьютерном покере

      image

      Компьютерный покер является весьма нетривиальной задачей в первую очередь из-за громадного количества игровых состояний, которое настолько велико, что мечтать о непосредственном решении этой игры не приходится. Единственным способом хоть как-то научить машину играть в покер является переход к абстракции — уменьшенной копии покера, в которой близкие в стратегическом смысле ситуации исходной игры объединены воедино. Именно вопросам абстракций в покере и посвящена данная заметка.
      Читать дальше →
    • Проверка идеи боем: fake landing page

      Основная проблема любой идеи стартапа — никто не знает, нужно ли это вообще кому-нибудь или нет. Готовы ли люди изменить своё поведение, свои привычки и начать пользоваться новым продуктом? И главное — готовы ли они за него заплатить?



      Десятки-сотни тысяч стартапов ежегодно запускаются, не зная ответа на этот вопрос. Это понятно — никогда нельзя быть абсолютно уверенным в успехе нового бизнеса. Тем не менее, существуют несколько методов проверки идеи — и все они с разной степенью могут предсказать будущее продукта. Один из самых эффективных методов — это разработка fake landing page.



      Начнем «раскручивать» термин с конца. Landing page («посадочная страница») называют страницу сайта, на которую пользователь переходит по нажатию на рекламное сообщение. Обычно на этой странице кратко и полно описывается суть продукта, а так же размещается action button, например «Зайти», «Начать», «Узанать подробнее». Цель landing page — «взять на руку» человека, пришедшего извне по рекламе, быстро и четко объяснить, что здесь происходит, и показать один путь, куда двигаться дальше. Переход же на главную страницу сайта, как часто делают многие рекламодатели, обычно является серьезной ошибкой — большое количество информации, которая понятна уже постоянному пользователю, пугает новичка — и даже не надейтесь, что он найдет раздел «О нас» или «Что это?».



      С появлением приставки fake — фальшивый, ненастоящий — проявляется сакральный смысл всей идеи проверки будущего стартапа на реальности. Мы создаем landing page для еще несуществующего продукта, «пригоняем» траффик посредством рекламного объявления и проверяем, как ведут себя наши потенциальные клиенты. Итоговым результатом является четкий ответ — сколько из всех, кто в принципе заинтересован предложенной идеей (нажали на рекламное объявление) готовы стать вашими клиентами (нажали на кнопку «Зайти» на fake landing page).


      Дальше - конкретные шаги по созданию fake landing page
    • Оформление резюме для зарубежных компаний

      Disclaimer


      Текст не претендует на истину в последней инстанции, описанное ниже основано на собственном опыте и рекомендациях людей с больше чем двадцати годами опыта в IT в США и Канаде.

      Анализ резюме рекрутером


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

      У вас есть 3-5 минут чтобы заинтересовать своим резюме. Это то, сколько будет уделено времени на него в начале, в лучшем случае. Часто резюме могут отсеяться спустя 10 секунд. Вас никто не знает, вы это лист бумаги с текстом, и это единственное, что вас может отличить от других. Представьте, что вы хотите купить новый телевизор, вас вряд ли будут интересовать длинные мануалы или 5 страничные описания. Выбирая из десятков и сотен аналогов, нужно за 5-10 секунд сделать предварительный отсев по определенным параметрам. Оставшимся 5-10 устройствам вы выделите чуть больше времени, а потом еще помешкаете выбираю между двух. Как то так и происходит отбор кандидатов.
      Читать дальше →
    • Как работает yield

      • Translation
      На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

      Вот исходный вопрос:
      Как используется ключевое слово yield в Python? Что оно делает?

      Например, я пытаюсь понять этот код (**):
      def _get_child_candidates(self, distance, min_dist, max_dist):
          if self._leftchild and distance - max_dist < self._median:
              yield self._leftchild
          if self._rightchild and distance + max_dist >= self._median:
              yield self._rightchild
      

      Вызывается он так:
      result, candidates = list(), [self]
      while candidates:
          node = candidates.pop()
          distance = node._get_dist(obj)
          if distance <= max_dist and distance >= min_dist:
              result.extend(node._values)
              candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
              return result
      


      Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

      ** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

      Подробный и обстоятельный ответ
    • Пишем Instagram виджет для сайта. Инструкция для любопытных. Готовое решение для всех остальных

      image Недавно мне потребовалось интегрировать в сайт Instagram виджет. Чтобы пользователи видели последние опубликованные фотографии. Может даже подписывались.

      Тут же выяснилось, что официального виджета у Instagram нет. Более того, с Instagram можно взаимодействовать исключительно через запросы к API. Никаких тебе JavaScript библиотек, генераторов кода и дизайна. Всё нужно делать руками.

      Сразу нашлось множество сторонних сервисов разной степени платности и бесплатности. Объединяло их одно – клиент получает лишь код вызова виджета, всё остальное тянется с сервиса. Меня лично это не устраивало. Почему нет бесплатного standalone решения с открытым исходным кодом? Может быть я плохо искал? В общем, я решил внести свои пять копеек.

      Инструкция по созданию виджета и готовое решение под катом.

      Небольшое примечание. С момента написания этой статьи прошло уже семь месяцев. За это время виджет был установлен на около 80 ресурсах, создан репозиторий на GitHub, добрый человек подарил мне инвайт, виджет сменил механизм кэширования, обзавёлся собственным сайтом, добрые люди на его основе сделали плагин для CMS Битрикс, а я так и не нашёл аналогов в сети.
      Читать дальше →
    • URL.js или дружим JavaScript с обработкой ссылок

      image

      Доброго времени суток, уважаемые хабравчане!

      Возникла передо мной сегодня задача генерации GET-параметров и всего URL в целом, на стороне клиента, прям вот щас, без возможности «поговорить» с сервером. Сразу оговорюсь, про этот пост я узнал вот прям перед написанием данной статьи ибо сначала закончил писать, а потом уже прибег к поиску, да и пост тот — не со всем про то же самое, что у меня.

      Итак, к делу.

      Задача и проблемы


      Проблемы — те же что и в посте, который я привел выше:
      • Невозможность использовать window.location для «приготовления» URL;
      • Нельзя работать сразу с несколькими window.location в силу политики безопасности браузеров;
      • Отсутствие известных готовых решений ( да и сейчас, уже апосля, я не нашел подобного кода )

      Задачи которые я поставил перед собой:
      • Удобный синтаксис
      • Возможность как читать части URL так и изменять их
      • Работа с GET-параметрами
      • Кроссбраузерность и универсальность


      Писал я на чистейшем JavaScript, причем без использования prototype.__defineGetter__ или prototype.__defineSetter__ в угоду кроссбраузерности ибо IE < 9 такого не умеет. Более подробно про getters/setters написано в этом посте.

      Для тех кому интересно — сядем разберем, а кому надо готовое решение — милости прошу в конец поста, ссылки на скачивание — там.

      Приступим! Раньше сядем — раньше выйдем.
      Читать дальше →
    • 6 мифов, мешающих разработчикам использовать Git

      • Translation


      Сейчас вы с трудом найдете профессионального разработчика, который не пользуется системой контроля версий (VCS) такой, как Git.
      Но есть и не мало тех среди нас, кто не использует VCS по причине предвзятого мнения о системах контроля версий.
      Ниже несколько мифов и отговорок, которые препятствуют внедрению в рабочий процесс разработчика Git (или любой другой VCS).
      Читать дальше →
    • Учебник Swift — разработка приложения для iOS8 [Часть 1, Hello World!]

      • Translation
      • Tutorial

      Предисловие


      Недавно Apple представила общественности достаточно важное изменение в разработке iOS приложений, анонсировав новый язык программирования Swift. Я принял решение: изучая этот язык пошагово, я буду в своих статьях рассказывать обо всём, что мне удалось найти. Это лишь первый пост из многих на эту тему, но я надеюсь, что вы решите изучать язык вместе со мной!

      Весьма вероятно, что многие примеры кода, представленные в постах, будут позже изменены. Это отчасти потому, что мой стиль программирования – написать сейчас, чтобы проверить идею, а потом заняться рефакторингом, а также отчасти это потому, что для меня (как и для многих других) Swift – абсолютно новый язык программирования. Так что, скорее всего, как только я узнаю что-нибудь новое, ход этих уроков будет меняться.

      Итак, я собираюсь начать с довольно простого приложения. Также я буду объяснять, как работает код. Готовы? Поехали…
      Погружаемся в Swift
    • Настройка Atom от GitHub для работы с PHP, Python и некоторыми другими языками программирования

      • Tutorial
      Редактор Atom от GitHub после установки поддерживает подсветку синтаксиса для основных языков программирования. Однако для более полноценной работы — валидации кода, проверки синтаксиса, базовой отладки и снипетов, как и в большинстве редакторов кода, необходимо подключение дополнительных пакетов и ряд действий.
      Под катом так же дополнительно расскажем:
      • про запуск скриптов
      • работу в терминале прямо из интерфейса Atom
      • и чуть-чуть про заявленную поддержку Swift от Apple

      Внимание трафик — кликабельные картинки и анимированые gif. (~3МБ)

      Читать дальше
      • +27
      • 135k
      • 9
    • Continuous Integration в 10 строках кода или зачем нужны BuildBot, Jenkins, TeamCity и подобные

      Заметка рассчитана на тех, кто уже знает, что такое Continuous Integration, но еще не выбрал, какую именно систему внедрить у себя.

      Почитать, что такое CI и зачем его использовать, можно в Википедии и здесь же на Хабре: статья 1, статья 2, тег CI.

      А я расскажу, на что стоит обратить внимание при выборе CI для своего проекта, почему стоит использовать готовую стороннюю систему и не стоит ввязываться в написание собственного «велосипеда».


      Началось с того, что в одной IT-компании случился такой разговор между коллегами из соседних отделов:

      K1: У вас continuous integration есть?
      K2: Есть, запускаются тесты на каждый коммит в транке.
      К1: На чем работают?
      К2: Собственный скрипт. Сейчас переходим на Buildbot.
      К1: Может я чего-то не понимаю, но что там сложного? Апнуться, запустить тесты, отправить результат, зачем какой-то Buildbot, проще же самим написать?

      Подобные рассуждения — «да зачем какое-то сторонее continuous integration, что там сложного, сейчас сами скриптик наваяем» — мне встречались достаточно часто, так что хочу на примере показать, чего скорее всего будет не хватать в простом «наколеночном» варианте.

      Итак, пишем «свой маленький скриптик». У меня получилось уложиться в 10 строк, включая shebang, задание в кронтабе и настройку отправки писем.
      Читать дальше →
    • Псевдо-случайное изображение (на примере страницы 404-й ошибки)

        Однажды автор этого поста работал над одним заказом по разработке простенько сайта и тогда появилась идея — придать всем страницам некой уникальности и запоминаемости — использовать уникальные фоновые текстуры или элементы дизайна (активно использовался parallax-scrolling). Так как в тот момент дедлайн был довольно близок, а идея — в зачаточном состоянии, было реализовано намного проще — простыми заготовками, но идея выброшена не была.

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

        Читать дальше →
      • Генерация CSS-спрайтов с Gulp

        • Tutorial

        Работая над одним большим проектом, мы с напарником задумались над тем, чтобы автоматизировать процесс сбора спрайтов на проекте.
        До этого спрайты собирались ручками или с помощью онлайн сервисов, что отнимало достаточно времени.
        Проект уже собирался Gulp'ом и было принято решение найти адаптированный под него сборщик спрайтов.
        Ищем решение
      • Новый REST API Яндекс.Диска и Полигон. А также зачем Диску ещё один API и как мы его делали

          Многие знают, что у Диска уже достаточно давно есть API на WebDAV. Он достаточно узко заточен под работу с файловой структурой, а у его реализации на разных платформах часто бывают некритичные, но не очень приятные недостатки. Поэтому в дополнение к WebDAV мы запускаем REST API, который позволит разработчикам делать всё то же и немного больше.

          Например, при использовании нового API все приложения, которым просто нужно хранить свои файлы в Диске, смогут получать доступ только к своей папке, лежащей в Диске пользователя в папке «Приложения». В WebDAV API сервису для этого придётся получать у пользователя разрешение на запись/чтение всего Диска, а не только конкретной папки.



          В этом посте я хочу рассказывать не о структуре или об операциях, которые умеет выполнять наш API — там всё довольно очевидно — а сразу перейду к интересным вещам: что такое Hypermedia и Machine-readable and Self-describing API, и как мы все это реализовали.
          Читать дальше →
        • Рисоваська, часть 3: Амазоновские веб-сервисы в действии

            В данной статье я расскажу, что же такое Amazon Web Services или сокращенно AWS, для чего это можно использовать, и приведу пошаговую инструкцию, как настроить их у себя с самого начала. В статье основной упор будет сделан на Amazon Elastic Compute Cloud или EC2 и Amazon Simple Storage Service или S3. Amazon CloudFront, являющийся логическим продолжением S3, хорошо рассмотрен в статье mish: Настраиваем CloudFront для работы с S3. С остальными амазоновскими сервисами вы можете познакомиться самостоятельно: Amazon SimpleDB, Amazon Simple Queue Service или SQS, а также другими сервисами Амазона. Данная статья является продолжением первой и второй статей. Итак:

            Что такое Amazon Web Services


            Это набор удобных сервисов, которые можно использовать как по отдельности, так и вместе. В первую очередь это «облачные вычисления» (анг. Elastic Compute Cloud). Что это значит? Это значит, что вы можете запустить в «облаке» любое кол-во компьютеров нужной вам конфигурации c нужной вам операционной системой всего за пару минут. Это действительно так. Время запуска одного инстанса (instance называется один виртуальный сервер в амазоне) обычно не превышает двух минут. Сразу после запуска инстанс начинает работать, к нему есть root-доступ по SSH или Remote Desktop, если там установлен Windows. Не правда ли, здорово! С момента запуска оплата за инстанс идет по часам. В любой момент вы можете остановить инстанс и деньги за его использование перестанут сниматься. Помимо времени работы инстанса, так же отдельно оплачивается входящий и исходящий трафик.
            Читать дальше →
          • Хостинг на AWS (EC2, EBS, S3) для чайников

              На хабре уже проскакивали периодически заметки посвященные AWS (Amazon Web-Services) — так что тема не новая. Однако, если для меня лично (да и для многих моих знакомых как выяснилось) — этот термин был знаком — однако каких-либо деталей я не знал. Попробую на основании только-что полученного опыта рассказать немного подробней, а так же изложить основные шаги по организации хостинга сервера на AWS и его преимущества. Как и несколько ссылок, которые могут оказаться полезными.
              image
              Читать дальше →
            • Python Meetup: апрельская встреча

              • Tutorial
              image

              Последняя пятница апреля не стала исключением из правил для Python Meetup Minsk: все прошло в то же время, в том же месте. На этот раз было три доклада и одно блиц-выступление. Мы рассмотрели следующие темы:
              — "Разработка мобильных приложений на Python" от Дмитрия Овчинникова
              — "Python для ленивых или как сделать свою жизнь проще" от Никиты Гришко
              — "Unittesting. Как?" от Максима Щепелина
              — "Pathlib. Маленькие вкусности Python 3.4" от Алексея Черкеса

              Все подробности и видео докладов можно найти под катом. Приятного просмотра!
              Читать дальше →
            • Анализ неявных предпочтений пользователей. Научно-технический семинар в Яндексе

                Анализ неявных предпочтений пользователей, выраженных в переходах по ссылкам и длительности просмотра страниц, — важнейший фактор в ранжировании документов в результатах поиска или, например, показе рекламы и рекомендации новостей. Алгоритмы анализа кликов хорошо изучены. Но можно ли узнать что-то ещё об индивидуальных предпочтениях человека, используя больше информации о его поведении на сайте? Оказывается, траектория движения мыши позволяет узнать, какие фрагменты просматриваемого документа заинтересовали пользователя.

                Этому вопросу и было посвящено исследование, проведенное мной, Михаилом Агеевым, совместно с Дмитрием Лагуном и Евгением Агиштейном в Emory Intelligent Information Access Lab Университета Эмори.




                Мы изучали методы сбора данных и алгоритмы анализа поведения пользователя по движениям мыши, а также возможности применения этих методов на практике. Они позволяют существенно улучшить формирование сниппетов (аннотаций) документов в результатах поиска. Работа с описанием этих алгоритмов была отмечена дипломом «Best Paper Shortlisted Nominee» на международной конференции ACM SIGIR в 2013 году. Позже я представил доклад о результатах проделанной работы в рамках научно-технических семинаров в Яндексе. Его конспект вы найдете под катом.
                Читать дальше →
                • +37
                • 17.5k
                • 8
              • lemongrab: плагин валидации веб-форм

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

                  Некоторое время назад мне пришлось дорабатывать клиент-сайд ресурса, включающего просто невероятное количество анкетных форм. Одной из неприятных особенностей этих форм было жуткое количество разнотипных правил валидации ввода и ещё большее количество взаимосвязей между полями.
                  Пример: если выбран чекбокс А, то в поле Х можно ввести только цифры, а поле Y должно быть скрыто, но если дополнительно выбрана радиокнопка Z, то поле Y нужно показать, а в поле X можно ввести всё, кроме цифр.
                  Иными словами — сущий ад, рождённый нездоровым сознанием маркетологов.


                  Читать дальше →
                • Почему технология RTB не смогла завоевать рекламный рынок Европы

                    image

                    Технология закупки рекламы в реальном времени на основе аукциона (Real-Time Bidding — RTB) в США пользуется большой популярностью и очень распространена. Однако по другую сторону Атлантики — в Европе — ситуация не столь оптимистична. Несмотря на большие авансы и высокие ожидания, сопровождавшие появление RTB в Старом Свете, этой технологии пока не удалось взять те вершины, которые, казалось, она должна покорить играючи.

                    RTB в Европе все же растет и, в целом, не такими плохими темпами, однако ожидания были куда выше. Причинам не таких выдающихся результатов RTB посвящен отчет компании AdMonsters. Сегодня мы повнимательнее изучим этот интересный документ.
                    Читать дальше →