• «Феерическая расстановка точек над проблемой копирастии»

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

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

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

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

      1. Информация должна распространяться бесплатно!
      2. Пиратство – это не воровство.
      3. Я купил товар – диск (книгу, кассету) а значит, могу делать с ним все, что хочу.
      4. Я физически могу скопировать информацию – значит, по закону, мне никто не может это запрещать.
      5. Я лучше куплю то же самое у пиратов – они успешно конкурируют с правообладателями за счет более низких цен.
      6. Кто сказал, что я принимаю условия лицензионного соглашения?
      7. Почему это так дорого стоит? Я считаю, что оно должно стоить дешевле.
      8. Я не желаю платить за некачественный товар.
      9. Почему бы не перейти на систему пожертвований? У Radiohead же получилось!
      10. Что же все-таки делать с засильем некачественного контента?
      11. Я считаю, что распространяя контент бесплатно, я помогаю правообладателям увеличивать продажи. Все от этого только выигрывают.
      Читать дальше →
    • История Linux. Вкратце о главном

        Корни Linux прослеживаются ещё с 70-х годов 20-го века. Точкой отсчёта можно считать появление операционной системы Unix в 1969-м году в США в фирме Bell Laboratories, дочернем подразделении компании AT&T. Unix стала основной для большого количества операционных систем промышленного класса. Самые основные из них отображены на этой временной шкале:


        Читать дальше →
      • Maltego. Нароет все

          image

          Вчера, просматривая очередную сборку live-дистрибутива BackTrack, наткнулся на очень интересную и довольно таки, как оказалось потом, полезную софтину. Многие из нас часто сталкивались с проблемой поиска информации касательно определенной организации, а именно конкретный данных: начиная с общего описания деятельности и заканчивая личными телефонами сотрудников. Как инструмент использовали популярные поисковые машины(играясь с языком запросов для более результативного поиска), различные общедоступные базы данных(телефонный базы, whois и т.д.).

          Хотелось найти что-то, что могло само осуществлять «умный», узкоспециализированный поиск, разделять(по критериям и типу) и сортировать информацию и главное — указывать взаимосвязи.
          Именно для эти целей и появился на свет инструмент под названием Maltego, разработка южноафриканской компании Paterva.

          Читать дальше →
        • Web options в поиске Google

            imageНа странице поисковой выдачи google грядут приятные изменения, анонсированные в мае на конференции Searchology.
            При поиске через google.com слева показывается меню опций представления результатов поиска.
            Есть показ только видео, страниц с форумов, и обзоров. Появились опции показа результатов с картинками (не поиск картинок), вывод большего объема текста, и многие другие интересные и полезные опции.
            Что рассказывать, попробуйте сами.

            Читать дальше →
          • YouTube EDU — обучающие видеоматериалы из колледжей и университетов



              26 марта 2009 года на youtube открыли раздел YouTube EDU, в котором собраны лучшие обучающие видеоматериалы (в основном — лекции и обучающие материалы из колледжей и университетов).

              Среди лидеров просмотров: MIT, Stanford University, индийские универститеты.

              Представлены целые курсы в виде плей-листов: курс линейной алгебры, введение в биологию, принципы цифровых коммуникаций и многие другие.

              Информации становится более чем достаточно, чтобы изучать всё что угодно. Остаётся только вопрос мотивации.

              Upd. Еще один подобный ресурс — academicearth.org (Женя Теплов, спасибо!)
              Upd2. University of Washington, Engineering & Computer Science (YasonBy, спасибо!)
            • Разгони свой сайт. Электронные версии

                Сегодня закончилась эпопея с выкладыванием электронных версий книги «Разгони свой сайт», их доступно аж три пять шесть:
                1. PDF-версия, аналогичная ушедшему в типографию макету книги (даже немного лучше за счет исправленных опечаток). Идеально подходит для чтения на ПК или самиздата.
                2. FB2-версия (формат Fiction Book). Просили владельцы наладонников для чтения — вроде форматом остались довольны.
                3. CHM-версия. Незаменима в качестве руководства, которое всегда под рукой. Очень удобно искать нужный материал.
                4. HTML-версия. Уж этот-то формат сложно испортить :) Спасибо laik216.
                5. Онлайн-версия. Просто копия HTML-версии, расположенная на сервере.
                6. WOL-версия. Для владельцев lBook V8, спасибо msa
                Все версии (последней редакции — 1.4) выложены на сайте книги. Здесь прямых ссылок не будет: мало ли что поменяется, чтобы в нескольких местах не править.

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

                Если кто-то возьмется перегнать CHM в человеческие (=красивые внешне и валидные внутри) HTML-страницы — буду крайне признателен.

                P.S. судя по логам, книгу скачали уже более 3000 4000 человек

                P.P.S. Судя по отзывам, CHM (и не только) кривоват. Если кто-нибудь знает, как его переконвертировать в нормальный файл — напишите, пожалуйста, в комментариях. На сайте доступны и прошлые версии PDF, которые отличаются некоторым количеством опечаток — нужно 1.4 заменить на 1.2.

                P.P.P.S. PDF-версия перевыложена (1.4.1)
              • Unsupervised learning или «пойди туда, не знаю куда, найди то, не знаю что»

                  imageЭкспертные системы, нейронные сети, исчисление предикатов, хорновские дизъюнкты, теоремы сходимости…
                  Не знаю как у вас, у меня вся эта кухня вызывает восторг. Как замечательно, что компьютеры (конечно, наученные программистами, вооруженными серьезной математикой) могут хотя бы иногда приближаться к человеку по навыкам принятия решений. Особенно это хорошо у них получается, когда человек готов учить.

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

                  Неуправляемое обучение, обучение без учителя
                  Однако есть ситуации, и их довольно много, когда правильного ответа никто не знает. И даже непонятно что является ответом. И даже задача не вполне ясна. Есть только данные. Надо что-то полезное из них извлечь.
                  Согласитесь, задача гораздо более интересная и дающая простор для фантазии?
                  Читать дальше →
                • Как написать отличную статью и завоевать умы


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

                    В данной статье мне хотелось бы предложить несколько вариантов того, как стоит создавать статьи, как их подавать и как поддерживать жизнь своей статьи.
                    Читать дальше →
                  • Моноиды и их приложения: моноидальные вычисления в деревьях

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

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

                      Итак, на повестке сегодняшнего дня — моноиды и их основное применение для кеширования вычислений в деревьях.

                      Моноид как концепция


                      Представьте себе множество чего угодно, множество, состоящее из объектов, которыми мы собираемся манипулировать. Назовём его M. На этом множестве мы вводим бинарную операцию, то есть функцию, которая паре элементов множества ставит в соответствие новый элемент. Здесь и далее эту абстрактную операцию мы будем обозначать "⊗", и записывать выражения в инфиксной форме: если a и b — элементы множества, то c = ab — тоже какой-то элемент этого множества.

                      Например, рассмотрим все строки, существующие на свете. И рассмотрим операцию конкатенации строк, традиционно обозначаемую в математике "◦", а в большинстве языков программирования "+": "John""Doe" = "JohnDoe". Здесь множество M — строки, а "◦" выступает в качестве операции "⊗".
                      Или другой пример — функция fst, известная в функциональных языках при манипуляции с кортежами. Из двух своих аргументов она возвращает в качестве результата первый по порядку. Так, fst(5, 2) = 5; fst("foo", "bar") = "foo". Безразлично, на каком множестве рассматривать эту бинарную операцию, так что в вашей воле выбрать любое.

                      Далее мы на нашу операцию "⊗" накладываем ограничение ассоциативности. Это значит, что от неё требуется следующее: если с помощью "⊗" комбинируют последовательность объектов, то результат должен оставаться одинаковым вне зависимости от порядка применения "⊗". Более строго, для любых трёх объектов a, b и c должно иметь место:
                      (ab) ⊗ c = a ⊗ (bc)
                      Легко увидеть, что конкатенация строк ассоциативна: не важно, какое склеивание в последовательности строк выполнять раньше, а какое позже, в итоге все равно получится общая склейка всех строк в последовательности. То же касается и функции fst, ибо:
                      fst(fst(a, b), c) = a
                      fst(a, fst(b, c)) = a
                      Цепочка применений fst к последовательности в любом порядке всё равно выдаст её головной элемент.

                      И последнее, что мы потребуем: в множестве M по отношению к операции должен существовать нейтральный элемент, или единица операции. Это такой объект, который можно комбинировать с любым элементом множества, и это не изменит последний. Формально выражаясь, если e — нейтральный элемент, то для любого a из множества имеет место:
                      ae = ea = a
                      В примере со строками нейтральным элементом выступает пустая строка "": с какой стороны к какой строке её ни приклеивай, строка не поменяется. А вот fst в этом отношении нам устроит подлянку: нейтральный элемент для неё придумать невозможно. Ведь fst(e, a) = e всегда, и если ae, то свойство нейтральности мы теряем. Можно, конечно, рассмотреть fst на множестве из одного элемента, но кому такая скука нужна? :)

                      Каждую такую тройку <M, ⊗, e> мы и будем торжественно называть моноидом. Зафиксируем это знание в коде:
                      public interface IMonoid<T> {
                          T Zero { get; }
                          T Append(T a, T b);
                      }
                      

                      Больше примеров моноидов, а также где мы их, собственно, применять будем, лежит под катом.
                      Читать дальше →
                    • Перевод: Я ненавижу тебя: твой код – хлам!

                        Хочу представить свой перевод статьи «Your Code Sucks and I Hate You: The Social Dynamics of Code Reviews».

                        Я ненавижу тебя: твой код – хлам!
                        Взаимоотношения участников ревизий кода

                        Джонатан Лэндж (Jonathan Lange), 15.09.2008

                        Обзор


                        Ревизия кода это действительно полезная, но в то же время и невероятно отпугивающая процедура. Эта статья подскажет, как избежать «кулачных боёв» при проведении ревизий.

                        Мы кратко рассмотрим, почему следует проводить ревизии кода, и сделаем упор на вопросе, как складываются при этом взаимоотношения участников процесса, в особенности в проектах с открытым исходным кодом. Действительно, отчасти open source привлекает (а порой наоборот отпугивает!) людей именно потому, что ваш код будут просматривать эксперты со всего земного шара. Мы также рассмотрим влияние, оказываемое некоторыми существующими технологиями на культуру ревизий кода, рассмотрим, чего можно достичь с их помощью, и как проводятся ревизии в других сферах деятельности. Мы также обозначим некоторые «подводные камни» ревизий, которые легко не заметить.
                        Читать дальше →
                      • Системы рекоммендаций: введение в гибридные системы

                          Системы рекомендаций:
                          Советы от машины
                          Холодное начало
                          — Введение в гибридные системы
                          искусственные имунные системы и эффект идиотипов


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

                          Для начала все-таки придется дополнить классификацию СР. Przemyslaw Kazienko и Pawel Kolodziejski предложили разделить все СР на пять типов: статистические, коллективные, ассоциативные и информационные. Начнем с самых простых.
                          Читать дальше →
                        • Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

                            candybar2Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции — запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум — система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.
                            Читать дальше →
                          • PHP Speedy — наше все

                              PHP SpeedyЧто такое PHP Speedy? Это набор php-скриптов, которые позволяют объединять и сжимать CSS- и JS-файлы для веб-сайта, написанного на PHP. Изначально разрабатывался как приложение к Wordpress, но сейчас получил более широкое распространение.

                              PHP Speedy был выбран в качестве основы для начала разработки Web Optimizer — веб-приложения, автоматизирующего клиентскую оптимизацию. Предполагается, что такое приложение можно будет максимально быстро и максимально легко развернуть на любой платформе, а оно уже само позаботится о всех действиях, связанных со скоростью загрузки страницы.

                              Как показала практика, клиентская оптимизация интересует большой круг людей. Но очень многих останавливает то, что нужны специальные знания для освоения этой области. Web Optimizer создается как раз, чтобы убрать этот барьер (и как наш ответ Чемберлену www.getrpo.com :).
                              Читать дальше →
                            • Автогенерация CSS Sprites

                                Свершилось. Долгие бессонные ночи не прошли даром и мысль, заявленная Вадимом aka pepelsbey, обрела более-менее физические очертания.

                                sprites.webo.in (сырая-сырая альфа-версия) — название, собственно, говорит само за себя. Вводим URL CSS-файла — на выходе получаем архив с минимизированным (никакой сортировки селекторов, просто базовая минимизация) CSS-файлом и набором свеженьких спрайтов. Здорово?
                                Читать дальше →
                              • Призовой фонд соревнования Sapka

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

                                  Но, у программистов все не так. У них все начинается с нуля и в счете они часто ограничены разрядной сеткой.

                                  У соревнования для программистов Sapka появился генеральный спонсор призов, который учреждает призовой фонд для награждения команд-победителей энными сумами денег.
                                  дележ по-программистски
                                • Фонетический поиск

                                    Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

                                    ...больше про инсайд
                                  • Определение нечетких дубликатов для коротких документов

                                      Хочу поделиться простым, но эффективным алгоритмом определения нечетких копий документов. Есть много статей об использовании для этой цели алгоритма шинглов. Ходят слухи, что большие поисковые системы используют очень похожий алгоритм у себя. Однако, все признают, что шинглы плохо подходят для коротких (3-5 предложений) документов. А в моей задаче надо было работать именно с такими документами. В качестве решения предлагают закольцовывать текст, чтобы как бы сделать из него длинный, но мне кажется, что это не очень правильное решение, точность распознавания дублей все равно будет низкая.

                                      Итак, описание алгоритма, который я использовал:
                                      Читать дальше →