• Лицензия для вашего open-source проекта

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

      Статья будет полезна тем, кто хочет:

      — в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
      — подобрать свободную лицензию для своего проекта;
      — разобраться, что нужно писать в шапке файла исходного кода.
      Читать дальше →
    • 11 марта состоится поединок в пинг-понг между машиной и человеком (Тимо Болль)



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

        Оказывается, такие роботы уже существуют, и, насколько можно понять, один из них может носить гордое звание профессионала по игре в пинг-понг. Во всяком случае, между этим роботом (KR Agilus) и человеком (олимпийский чемпион, многократный победитель соревнований по настольному теннису разного уровня Тимо Болль) состоится матч. Причем ждать долго не придется: встреча человека и робота назначена на 11 марта.

        Читать дальше →
      • Воронежец заключил с банком договор, внеся свои правки, и собирается отсудить 24 миллиона рублей

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

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

          42-летний житель Воронежа нашел остроумный способ обратить эту особенность в свою пользу и теперь, пользуясь невнимательностью банкиров, собирается отсудить у них 24 миллиона рублей.
          Читать дальше →
        • Новый бюджетный 3D принтер


            Появляются всё новые 3D принтеры в семействе RepRap. Printrbot был разработан с целью сделать принтер дешевым, максимально простым в сборке, а значит доступным широким кругам. Девиз проекта — "Printrbot — твой первый 3D принтер". Забегая вперед — планируемая цена на базовую модель 549$.
            Читать дальше →
          • Жизнь разработчика (в картинках)

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

              Когда я показываю босу, что окончательно пофиксил баг



              Когда проджект-менеджер входит в офис



              Читать дальше →
            • Немного о Iptables, Iproute2 и эмуляции сетевых проблем

                Однажды мне понадобилось в Zabbix сделать мониторинг потери пакетов между мастером и репликами (репликация плохо себя чувствует если канал не очень хороший). Для этого, в Zabbix есть встроенный параметр icmppingloss, на удаленный хост отправляется серия ICMP пакетов и результат фиксируется в системе мониторинга. И вот параметр добавлен, триггер настроен. Казалось бы задача выполнена, однако как говорится «Доверяй, но проверяй». Осталось проверить что триггер сработает когда потери действительно будут. Итак, как сэмулировать потерю пакетов? Об этом, да и не только, пойдет речь под катом.

                image

                Читать дальше →
                • +46
                • 33,2k
                • 8
              • Масштабирование наоборот: БЭМ-методология Яндекса на небольших проектах

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

                  Скорее всего, вы уже знаете об одной из таких методологий, разработанной Яндексом, — БЭМ. БЭМ утверждает, что трёх сущностей (блоков, элементов и модификаторов) достаточно для написания HTML и CSS, задания структуры кода и компонентной структуры с последующим масштабированием проекта до самого высокого уровня.

                  Я проработал в Яндексе достаточно долго и видел, как эта методология работает на больших проектах. В Яндексе БЭМ используют для разработки CSS- и JavaScript-компонент, с помощью этой методологии также пишут шаблоны и задают зависимости между компонентами. Есть БЭМ-инструменты, поощряются различные эксперименты с кодом, исследования. В масштабах большой компании эти трудозатраты окупаются и дают Яндексу возможность быстро и качественно разрабатывать сотни сервисов одновременно.

                  Могут ли маленькие команды получить от БЭМ то же самое? Я совершенно не был в этом уверен. Всё же БЭМ — абстракция, которая поставляется вместе с инструментами и технологиями. Для маленькой компании польза от переключения на «полный стек» этих технологий — сомнительна, многие из инструментов изначально приспособлены под крупные и сложные задачи. Быть может, тогда полезной окажется сама идея, сама методология?

                  Изначально эта моя статья была опубликована в известном многим журнале Smashing Magazine. Но я решил, что и на Хабре она может быть интересна, ведь многие здесь занимаются собственными небольшими проектами.

                  Читать дальше →
                • Несколько фактов о CAP-«теореме»

                    В любом обнаружении NoSQL баз данных кто-нибудь обязательно вспомнит о CAP-«теореме». Я не случайно пишу слово «теорема» в кавычках. CAP-«теорема» вовсе не теорема в математическом понимании этого слова. Это неформальное утверждение, сделанное Эриком Брюером в докладе на конференции Principles of Distributed Computing (PODC) в 2000 году. Эрик утверждал, что невозможно создать распределенное (состоящие из нескольких равноценных экземпляров — звеньев) веб-приложение, которое будет одновременно обладать тремя свойствами: согласованность (consistency), доступность(availability) и устойчивость к разделению(partition tolerance), сокращенно CAP. Неформальность утверждения заключается в том, что Брюер не дал определения этим трем понятиям.

                    Спустя два года Сет Гилберт и Ненси Линч опубликовали исследование, где дали определения понятиям CAP а также формализовали "отложенную согласованность" (Delayed Consistency), которую потом прозвали "согласованность в конечном счете" (Eventual Consistency) и доказали CAP-«теорему» в терминах указанных определений. Если вы еще не читали исследование, то это обязательно стоит сделать — lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf

                    Эта «теорема» так бы и не была никому нужна, если бы её не взяли на вооружение маркетологи NoSQL.
                    Читать дальше →
                  • Открытая Yandex PHP Library для работы с API Яндекса

                      Привет всем!

                      Давненько я не писал на Хабр. Не то что бы мне не о чем было рассказывать, просто если уж и делиться историями, то такими, чтобы зуд появлялся работать до полуночи. Тем более, если они будут о сотрудничестве PHP-разработчиков и Яндекса. Тем более, если они о том, что появилась долгожданная PHP-библиотека для работы с API Яндекса.



                      Расскажу-напомню немного о себе. Меня зовут Антон Шевчук. На Хабре я довольно давно, и если вы изучали jQuery, то с большой долей вероятности читали и мой блог. При этом моя основная активность — это всё же PHP-разработка, да и должность обязывает — работаю я техническим экспертом PHP-отдела в компании NIX Solutions.

                      Но хватит лирики, я же обещал познавательную историю.
                      Читать дальше →
                    • Написание своих автодополнений для Shell. Часть 1: zsh


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


                        Преамбула

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

                        Введение

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

                        Читать дальше →
                      • Изучаем PHP изнутри. Zval

                          Эта статья базируется на главе Zvals книги PHP Internals Book, переводом которой на русский язык я сейчас занимаюсь [1]. Книга ориентирована в первую очередь на C-программистов, желающих писать свои расширения для PHP, но, я уверен, что она окажется полезной и для PHP-разработчиков, так как описывает внутреннюю логику работы интерпретатора. В статье я оставил только базовую теорию, которая должна быть понятна всем разработчикам (даже не знакомым с PHP или C). За более полным изложением материала обратитесь к книге.

                          Задачка для привлечения внимания. Каким будет результат выполнения следующего кода?
                          $obj1 = new StdClass();
                          $obj2 = new StdClass();
                          
                          $obj1->value = 1;
                          $obj2->value = 1;
                          
                          function f1($o) {
                            $o = 100;
                          }
                          
                          function f2($o) {
                            $o->value = 100;
                          }
                          
                          f1($obj1);
                          f2($obj2);
                          
                          var_dump($obj1);
                          var_dump($obj2);
                          


                          Ответ
                          object(stdClass)#1 (1) { [«value»]=> int(1) }
                          object(stdClass)#2 (1) { [«value»]=> int(100) }

                          Если вы точно определили ответ и можете объяснить почему он будет именно таким, то, наверное, вы не узнаете из этой статьи ничего нового, иначе — вам определенно стоит прочитать эту статью, чтобы углубить свои знания.
                          Читать дальше →
                        • Maxmertkit. Идеальный css-фреймворк



                            Всю документацию на английском языке вы сможете прочесть на maxmert.com.

                            Требования и задачи


                            При создании версии 1.0 мне пришлось пересмотреть основные требования к фреймворку:

                            • Возможность легко добавить/удалить размер или тему. Json-файл с прописанными темами и размерами для каждого виджета. Таким образом можно конфигурировать фреймворк исправляя json-файл.
                            • Модульность. При отключении или добавлении любого виджета фреймворк должен стабильно работать (привет bootstrap).
                            • Особое именование классов для избежания переопределения пользовательских классов.
                            • Javascript компоненты без jQuery (но с возможностью его использования, если он подключен).


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

                            Осторожно! Трафик.
                            Читать дальше →
                          • Ускоряем PHP (с ReactPHP)

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

                              • Перевод


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


                              Читать дальше →
                            • Qt 5.2, от желания до Google Play

                              Здравствуйте, коллеги.

                              Случилось так, что мне рассказали о Qt5.2 и его новой возможности быстро и легко создавать кроссплатформенные приложения под Android и iOS. С Qt я знаком был уже давно, но в последнее время работа была связана с другими технологиями и я немного запустил его развитие. Узнав это, я отправился на сайт Qt, посмотрел красивое видео, где за 10 минут HelloWorld приложение создается сразу под android и ios. Впечатления были очень положительные.

                              Было принято решиение заняться мобильной разработкой. Появился план пройти путь от желания сделать приложение до его публикации в Google Play. Но на первом этапе хотелось пройти это с тем что не жалко и в чем можно делать ошибки. И все это на новом Qt5.2.

                              Читать дальше →
                            • Colobot Gold — opensource версия игры Colobot

                              image

                              Привет хабр. Несмотря на то, что прошло уже немало времени с момента передачи исходных кодов этой замечательной игрушки сообществу PPC (Polish Portal of Colobot), на хабре до сих пор не было статей касательно того, как сложилась судьба творения Epsitec после попадания в руки энтузиастов.

                              Если вы по какой-то причине не слышали об этой игре, то на хабре есть замечательная статья. Ну а я расскажу о том, что было сделано и что планируется сделать в рамках Colobot PPC.
                              Читать дальше →
                            • Отправляем заявление в Государственную Думу относительно "«анти»террористического" пакета законопроектов

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

                                Я против того, чтобы молча на это смотреть.

                                Однако я — не варвар (нет, ну… правда), и поэтому предлагаю попробовать бороться с варварством цивилизованным путем.
                                А именно, предлагаю четко и адресно поставить уважаемых господ законодателей в известность относительно:
                                • Нашего отношения к данным законопроектам
                                • Причины нашего отношения к данным законопроектам
                                • Одного совершенно очевидного фатального (для нужд данного поста мы будем предполагать абсолютную искренность законодателей, а в рамках такого допущения недостаток именно фатальный) данного пакета законопроектов, указывающего на необходимость доработки этого самого пакета.


                                Для реализации этого плана предлагаю отправить в Государственную Думу вежливое (обязательно вежливое! Ибо мы не варвары!) письмо.
                                Узнать, что это за письмо такое, как его отправлять и зачем оно нужно
                              • Своё Certificate Authority — в 5 OpenSSL команд

                                Зачем это нужно?


                                Представим, у нас есть два сервера, работают они себе, и переодически они хотят, что-то друг у друга спросить по протоколу HTTP/HTTPS.

                                Протокол HTTP не безопасен и логично использовать протокол HTTPS для общения меду серверами.

                                Для организации такого общения нам нужно 2 SSL сертификата.

                                Если сервера пренадлежат одной организации, то может быть проще и безопасней подписывать сертификаты самостоятельно, а не покупать.
                                Читать дальше →
                              • Доработка проветривателя или управление вентиляцией от датчика углекислого газа

                                  image
                                  Уровень углекислого газа (CO2) один из важных показателей качества воздуха в помещении. Еще его уровень очень удобно использовать для управления вентиляцией.

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

                                  Читать дальше →
                                • Qt на Android: Episode One

                                  • Перевод
                                  Я начинаю публиковать новую серию постов о Qt на Android.

                                  Первая часть о том, как всё начиналось, как это работает, текущий статус, чего стоит ждать от Qt 5.2 и мои планы на Qt 5.3. В следующей части я расскажу подробнее о разработке для Android.

                                  Давайте начнём:

                                  Как всё начиналось?

                                  В июне 2009 года я присоединился к ROUTE 66 в качестве старшего разработчика для Linux. Моим первым заданием было портирование навигационного движка на Android. Google тогда ещё официально не выпустила NDK, поэтому мне пришлось написать его самому, используя исходный код Android.

                                  Вскоре мне удалось заставить движок работать. Я полюбил Android, но мне стало чего-то не хватать, чего-то, что было для меня очень важным. Это был Qt, мой любимый фреймворк. Вот чего не хватало! И я сказал себе, что я должен изменить положение вещей.

                                  В октябре 2009 года Nokia (да, Qt тогда принадлежал Nokia...) анонсировала проект Lighthouse. Этот проект позволял разработчикам легко портировать Qt на (почти) любую платформу.

                                  Читать дальше →