• Как web-страницу легко превратить в PDF?

    • Tutorial

    Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
    Читать дальше →
  • BitSorting Алгоритм со сложностью О(n)

    image

    Предыстория


    В свободное от работы время решил поразмыслить, а нельзя ли создать алгоритм соритировки который имел бы сложность O(n) не занимал бы много дополнительной памяти и мог бы быть легко распараллелен. И добился некоторого результата.
    Читать дальше →
  • Шпаргалка по шаблонам проектирования


      Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

      Под катом — много картинок.

      Читать дальше →
    • Человеческий парсер на Selenium WD



        Начало


        И вот пришла моя очередь покупать автомобиль. Как это делают ребята с работы я видел. Заходят на сайт и следят за предложениями, ну кто постарше покупает газету и просматривает объявления. Все это однообразно и отвлекаться на сиденье, исследование и нажатие по ссылкам не хотелось. Хотелось просто что бы кто то делал это за меня, таких людей не нашлось. Значит надо было заставить делать все это компьютер.
        Читать дальше →
      • Google выпустила парсер HTML5 на чистом Си

          Удачная возможность для веб-разработчиков выучить язык программирования Си — HTML5-парсер Gumbo, реализованный в виде небольшой библиотеки C99 без внешних зависимостей. Парсер создан как строительный блок для создания других инструментов и библиотек, таких как валидаторы, языки шаблонов, инструменты рефакторинга и анализа кода.

          Особенности:
          • Полная совместимость со спецификациями HTML5.
          • Устойчивость к некачественным входным данным.
          • Простые API, которые могут быть легко обработаны программами на других ЯП.
          • Поддержка исходных позиций и указателей в оригинальном коде, при навигации по дереву зависимостей.
          • Проходит все тесты html5lib-0.95.
          • Проверен на более чем 2,5 млрд страниц в индексе Google.
          Читать дальше →
        • Пишем instagram-робота, ставим лайки по тегам

          Иногда, для разминки ради, ставлю себе задачи. Просто ради интереса. Чаще всего они забываются сразу после найденного решения и более не используются. Так произошло и в этот раз. Начитался в интернетах о том, что эффективным способ продвижения в Instagram, считается поиск фото по тегам и «лайканье» оных. Если правильно выбрать теги (как правило те, что соответствуют тематике вашего аккаунта), вы получите не только ответные лайки, но и новых подписчиков (что подтвердилось).

          Задача


          Написать робота (MySQl+php+js), который находил бы фото по тегам и ставил им лайки. Более того, желательно, чтобы наш робот не попал в бан.
          Читать дальше →
          • –4
          • 53.6k
          • 7
        • Отказ от jParser (в пользу работы напрямую с буферами Node.js) ускоряет скрипт на порядок

            Перелистнём несколько страниц недавнего прошлого.

            16 мая 2012 года RReverser во блогозаписи «Javascript BMP Parser» рассказал об употреблении модуля jParser для анализа двоичных данных, во браузере совершаемого.

            На следующий же день (17 мая 2012 года) во блогозаписи «jParser: анализ двоичных файлов работает просто» я перевёл документацию по jParser, а чуть позже (22 мая 2012 года во блогозаписи «Node.js на узле Фидонета: читаем джаваскриптом заголовки эхопочты, хранимой в формате JAM») поделился собственным опытом употребления этого модуля (на сей раз — на Node.js, а не во браузере).

            Прошло ≈1⅓ года…

            12 сентября нынешнего (2013) года во блогозаписи «Недоволен скоростью джаваскриптов? — Подожди год-полтора, и это пройдёт!» я выразил неудовольствие от скорости работы модуля, прежде мною сочинённого, и указал на один только повод для оптимизма: поступательное развитие Node.js от версии 0.6 до версии 0.10 привело к росту скорости моего кода в три раза.

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

            Позвольте же поделиться с вами как впечатлениями, так и исходниками.

            Читать дальше →
          • Экстрактор контента из веб-документов



              Здравствуй, Хабр!

              Это мой первый пост, в котором я хочу поделиться своей наработкой в решении такой задачки, как выделение контента на странице. Собственно, задачка давно висела в голове в фоновом режиме. Но так сложилось, что именно сейчас мне самому понадобился инструмент, кроме того наткнулся на статейку на хабре: habrahabr.ru/company/mailru/blog/200394 и решил — пора. Ладно, поехали.
              Читать дальше →
              • +31
              • 23.4k
              • 9
            • Разбор регулярных выражений



                Хочу просто поделиться недавно найденным сервисом для работы с регулярными выражениями. Да, это еще один сервис. Но у него есть особенность — он позволяет не только составлять регулярные выражения, но и помогает разбирать уже написанные — эдакий regexp-декомпилятор.
                Сервис называется Regex101.

                Читать дальше →
              • Алгоритм генерации судоку

                  sudoku250title
                  Доброго времени суток!

                  Думаю, головоломка Судоку не нуждается в представлении. Многие из нас проводят за её решением достаточно много времени. Например, когда нужно убить время в дороге или просто поворочать мозги, чтобы не сохли. На хабре есть довольно много постов о решении головоломки. Но когда человек решает с десяток, а может и сотню головоломок, то найдётся пытливый ум, который задаст себе вопрос «А как же получается таблица Судоку, имеющая единственное решение? И как можно описать алгоритм для сетки 9x9?».

                  Приведённый алгоритм является вполне логичным. Но моей задачей было описание и реализация. Обо всём этом написано под катом.

                  Читать дальше →
                • Прочие варианты использования оператора else

                  • Translation
                  Всем нам хорошо известен способ использования ключевого слова else совместно с if:

                  if x > 0: 
                      print 'positive' 
                  elif x < 0: 
                      print 'negative' 
                  else: 
                      print 'zero' 
                  


                  Однако в Python’е существует и несколько других, неизвестных большинству программистов, применений else.

                  Читать дальше →
                • Как в Украине принимать платежи на PayPal в целом (и при продажах на eBay в частности)

                  Предисловие


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

                  вот как принимать платёж на PayPal
                • Легальная минимизация налогов в Украине для ИТ компаний

                  • Tutorial
                  В 1935 году судья Дж. Сандерленд выразил принципиальную позицию Верховного Суда США:
                  «Право налогоплательщиков избегать налогов…
                  с использованием всех разрешенных законами
                  средств никем не может быть оспорено»


                  Я продолжаю маленький ликбез по правильной работе с законами нашей страны. Ранее я уже писал про юридическую безопасность ИТ бизнеса в СНГ. Как сказано в цитате выше, которую я совсем недавно где-то прочитал, у каждого есть право платить минимум налогов в рамках закона, и эта статья именно об этом. Как и в прошлой статье, я буду рассматривать одну работающую схему.

                  Сразу оговорюсь, чтобы вы понимали о чем будет идти речь: во-первых, я буду рассказывать только о законных методах минимизации налогов, во-вторых, моя схема создана специально для компаний определенного типа, а именно ИТ компаний, которые работают в сфере ИТ услуг и имеют, как правило, относительно небольшой оборот (до 10 миллионов долларов в год) и высокую маржинальность. Для компаний, которые не подходят под мое описание, будут несколько иные схемы минимизации, и почему – будет понятно из статьи ниже.

                  Немного о том, как все устроено


                  Для начала нужно понимать, что не платить налоги вообще – не получится. Можно и нужно платить минимум, но всё же платить. Любая предпринимательская деятельность в Украине должна регистрироваться, и с доходов от неё должны платиться налоги. Если вы до сих пор стараетесь работать в черную, должен вас предостеречь, с недавнего времени это стало опасно, чем именно расскажу ниже.
                  Если вы только начинаете свою деятельность, начать нужно с регистрации СПД или юр. лица. Даже если не планируете создавать транснациональную корпорацию, а банально фрилансите, это тоже считается предпринимательской деятельностью.
                  Если же предпринимательская деятельность уже идет, и все регистрации давно есть, всегда можно перейти на удобную систему налогообложения, такая возможность по закону дается каждый квартал.

                  Схема минимизации


                  Еще раз повторюсь, говорить я буду о законной схеме минимизации.
                  Читать дальше →
                • Советы Google по кодированию на языке Python. Часть первая: советы по программированию


                  Хай, Хабр!
                  Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
                  Читать дальше →
                • Советы Google по кодированию на языке Python. Часть вторая: советы по форматированию исходного кода


                    Доброго времени суток. Вот и пришло время для публикации второй части так понравившегося многим хабровчанам перевода стайл гайда для языка Python от компании Google, (первая часть бережно хранится хабром). Теперь мы коснемся напрямую форматирования исходного кода на языке программирования Python. Как известно, чистота — залог здоровья, а чистота программного кода — залог уважения коллег и (в идеале) поощрения от кого-нибудь свыше. Вообще, Python сам по себе является хорошо читаемым языком, и даже синтаксис данного языка призывает к порядку в коде (и, как следствие — в голове). Но каждый из нас сам себе документатор и сам себе творец оформления. А как уже говорилось однажды — ко мнению авторитетных товарищей нельзя не прислушиваться. Итак, вторая часть Google Python Style Guide — Python Style Rules ждет Вас под катом. И pdf тут как тут.
                    Читать дальше →
                  • 90 рекомендаций по стилю написания программ на C++

                    • Translation
                    От переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.

                    1 Введение


                    Настоящий документ содержит рекомендации по написанию программ на языке C++.

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

                    Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.
                    Читать дальше →
                  • Методы решения судоку

                    • Tutorial

                    1. Основы


                    Большинство из нас, хабражителей, знает, что такое судоку. Не буду рассказывать про правила, а сразу перейду к методикам.
                    Для решения головоломки, не важно сложной или простой, изначально ищутся ячейки очевидные для заполнения.
                    Читать дальше →
                  • Перевод с карты Payoneer в систему WebMoney

                      Мы рады объявить о запуске новой услуги — перевода средств с карты Payoneer в систему WebMoney. Мы всегда стремимся предоставить нашим клиентам и партнерам лучшие платежные решения: предоплаченные карты, US Payment Service, международные и местные банковские переводы, чеки, трансферы в местные электронные кошельки, различные дополнительные услуги и многое другое.
                      Видя огромный интерес пользователей к прямым переводам с предоплаченных карт Payoneer MasterCard в систему WebMoney, компания Payoneer запустила данную услугу.
                      Читать дальше →
                    • Полезные хаки и сниппеты для .htaccess



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

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

                      Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.
                      Узнать больше
                    • Опыт использования вертикальной мыши или спасаемся от туннельного синдрома

                        В этот понедельник я расскажу о мышке, помогающей избежать туннельного синдрома. Поехали!

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