• Добавить системный вызов. Часть 4 и последняя

                                                                                          - Что-то беспокоит меня Гондурас...
                                                                                          - Беспокоит? А ты его не чеши.
      


      В предыдущих частях обсуждения (1-я, 2-я и 3-я) мы рассматривали как, используя возможность поменять содержимое sys_call_table, изменить поведение того или иного системного вызова Linux. Сейчас мы продолжим эксперименты в сторону того, можно ли (и как) динамически добавить новый системный вызов в целях вашего программного проекта.
      Читать дальше →
    • Сетевые системные вызовы. Часть 3

        Предыдущую часть обсуждения мы завершили на такой вот оптимистической ноте: «Подобным образом мы можем изменить поведение любого системного вызова Linux». И тут я слукавил — любого… да не любого. Исключение составляют (могут составлять) группа сетевых системных вызовов, работающих с BSD сокетами. Когда сталкиваешься с этим артефактом в первый раз — это изрядно озадачивает.
        Читать дальше →
        • +22
        • 18.5k
        • 2
      • Модификация системного вызова. Часть 2

          В предыдущей части мы договорились до того, что не экспортируемые имена ядра Linux могут использоваться в коде собственных модулей ядра с тем же успехом, что и экспортируемые. Одним из таких имён в ядре является селекторная таблица всех системных вызовов Linux. Собственно, это и есть основной интерфейс любых приложений к сервисам ядра. Теперь мы рассмотрим как можно модифицировать оригинальный обработчик любого системного вызова, подменить его, или внести разнообразие в его выполнение в соответствии с собственным видением.
          Читать дальше →
        • Делаем доступным все символы ядра Linux. Часть 1

          Состояние дел


          Это обсуждение относится к ядру операционной системы Linux, и представляет интерес для разработчиков модулей ядра, драйверов под эту операционную систему. Для всех прочих эти заметки вряд ли представляют интерес.
          Читать дальше →
        • Поиск по геному с помощью Wolfram Language (Mathematica) и HadoopLink

          • Translation

          Перевод поста Пола-Жана Летурно (Paul-Jean Letourneau) "Searching Genomes with Mathematica and HadoopLink".
          Код, приведенный в статье, можно скачать здесь.
          Примечание: этот пост написан как продолжение поста Большие массивы данных в Mathematica с HadoopLink.
          Примечание переводчика: автор данной статьи под термином геном понимает всю совокупность генов некоторого структурного элемента живой материи. Это несколько отличается от стандартных определений, близких по смыслу, в которых подразумевается либо вся совокупность генов конкретного вида (Ridley, M. (2006). Genome. New York, NY: Harper Perennial), либо полный набор генетических инструкций, которые можно найти в клетке (http://www.genome.gov/Glossary/index.cfm?id=90). В данном посте будем пользоваться представлением автора.
          В моём предыдущем посте я описал, как писать алгоритмы MapReduce (вики) в Mathematica с помощью пакета HadoopLink. Теперь давайте копнём немного глубже и напишем более серьёзный алгоритм MapReduce.

          Я уже писал раньше о некоторых занятных возможностях в сфере геномики в Wolfram|Alpha. Если вам это интересно, вы даже можете осуществлять поиск по человеческому геному определённых последовательностей ДНК. Биологам часто требуется найти расположение фрагмента ДНК, которые они нашли в лаборатории, для определения того, какому животному принадлежит этого фрагмент, или из какой он хромосомы. Давайте используем HadoopLink для создания геномной поисковой системы!
          Читать дальше →
        • Как нейронные сети рисуют картины

          • Translation
          Умные алгоритмы уже умеют находить и распознавать лица, определять главную часть картинки, узнавать различные предметы. А нейронные сети пошли дальше и даже могут самостоятельно создавать произведения искусства.

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

          image
          Читать дальше →
        • Топ-10 data mining-алгоритмов простым языком

          • Translation


          Примечание переводчика: Мы довольно часто пишем об алгоритмической торговле (вот, например, список литературы по этой теме и соответствующие аналитические материалы) и API для создания торговых роботов, сегодня же речь пойдет непосредственно об алгоритмах, которые можно использовать для анализа различных данных (в том числе на финансовом рынке). Материал является адаптированным переводом статьи американского раработчика и аналитика Рэя Ли.

          Сегодня я постараюсь объяснить простыми словами принципы работы 10 самых эффективных data mining-алгоритмов, которые описаны в этом докладе.

          Когда вы узнаете, что они собой представляют, как работают, что делают и где применяются, я надеюсь, что вы используете эту статью в качестве отправной точки для дальнейшего изучения принципов data mining.
          Читать дальше →
          • +43
          • 119k
          • 8
        • Роман в мейлах: советы программисту, переезжающему в Мюнхен

          Полгода назад мне написал знакомый приятеля, попросив ответить на несколько вопросов относительно жизни в Мюнхене — он заключил контракт на позицию Senior Software Developer и планировал переезд из Петербурга в Мюнхен. На правах старожила (15 лет) я дал ему несколько бытовых советов, причесанная компиляция которых, как мне кажется, естественным образом продолжит недавние публикации. Я осознаю, что несколько емейлов — это не статья, а Q&A, но я уже не в первый раз отвечаю на подобные вопросы и они мне кажутся достаточно типичными, чтоб представить их именно в таком виде и порядке, как они задавались. Last but not least — согласие другой стороны на публикацию получено.

          Итак, в хронологическом порядке:
          Читать дальше →
          • +30
          • 18.4k
          • 3
        • Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1

          • Translation
          В NGINX версии 1.9.1 появилась новая возможность, позволяющая использовать сокетную опцию SO_REUSEPORT, которая доступна в современных версиях операционных систем, таких как DragonFly BSD и Linux (ядра 3.9 и новее). Данная опция разрешает открывать сразу несколько слушающих сокетов на одном и том же адресе и порту. При этом, ядро будет распределять входящие соединения между ними.
          Читать дальше →
        • NGINX изнутри: рожден для производительности и масштабирования

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

          Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.
          Поехали!
        • NGINX — История перерождения под Windows

            Раз уж тут у нас «неделя» nginx, например тут или тут, то попробую и я внести свою, так сказать, лепту. Речь пойдет про nginx 4 windows, а именно про более-менее официальную сборку для этой пропритарной, некоторыми не очень любимой платформы.

            Почему Windows. Все просто, в корпоративном секторе Windows на сервере, да и на рабочих станциях — нередко обязательная программа. И от этих требований к платформе, например в ультимативной форме озвученных клиентом, никуда не денешься.
            И раз уж имеем Windows, но не хочется мучиться с IIS, apache и иже с ними, если хочется использовать любимые инструменты, а nginx однозначно к ним относится, то приходится иногда мириться даже с некоторыми ограничениями на этой платформе. Вернее приходилось…

            Хотя нужно заметить, что даже с этими ограничениями, nginx даст фору практически любому веб-серверу под windows по многим факторам, в том числе по стабильности, потреблению памяти, а главное производительности.

            Спешу сразу поделится хорошей новостью — больше ограничений, критичных к высокой производительности, при использовании nginx под windows практически не существует, и последнее из критичных, с высокой долей вероятности, тоже скоро отпадет. Но по порядку…

            Здесь описаны известные проблемы nginx 4 windows, а именно:

            • Рабочий процесс может обслуживать не более 1024 одновременных соединений.
            • Кэш и другие модули, требующие поддержки разделяемой памяти, не работают под Windows Vista и более поздними версиями в связи с тем, что на этих версиях Windows включена рандомизация адресного пространства.
            • Хоть и возможен запуск нескольких рабочих процессов, только один из них реально работает.

            Я немного изменил порядок, т.к. именно в такой последовательности я разбирался с этими ограничениями, так сказать отсортировано «исторически».
            Читать дальше →
          • 9 анти-паттернов, о которых должен знать каждый программист

            • Translation
            В программировании самокритика – это умение распознать контрпродуктивные решения в дизайне, коде, процессах и поведении. Знание о вредных шаблонах решений полезно для программиста. В этой статье я опишу анти-паттерны, которые я встречал на своём личном опыте время от времени.

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

            1 Преждевременная оптимизация


            В 97% случаев надо забыть об эффективности малых частей программы: преждевременная оптимизация – корень всех зол. Но в 3% случаев об оптимизации забывать не нужно.
            Дональд Кнут

            Хотя никогда зачастую лучше, чем прямо сейчас
            Тим Питерс, Зен языка Python


            Что это

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

            Почему плохо

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

            Как избежать

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

              В последние пару дней мне часто приходится отвечать на вопросы, как я нашёл работу в Германии, поэтому я решил объединить весь свой путь (ещё незаконченный) в единый текст и опубликовать здесь, потому как тема мне кажется интересной и актуальной.

              Идея уехать жить куда-нибудь за пределы этой страны была давно, но как-то не сказать, что здесь всё было совсем плохо и невыносимо. Однако вернувшись в октябре из двухнедельной поездки по Европе (Барселона, Брюссель, Амстердам и Прага), желание заметно укрепилось. Плюс уже изрядно достали все эти #крымняш, нефть, рубль и великий Пу.

              Вариант с Германией мне подсказала знакомая, которая собирается ехать туда учиться. Погуглил, и действительно — для айтишников (я джава-разработчик) всё очень хорошо. Информации на эту тему в интернете полно, не буду лишний раз дублировать (гуглить по ключевому слову bluecard). Если коротко — достаточно желания работодателя платить вам больше, чем 37 000 евро в год.
              Читать дальше →
            • Разбор финальных задач Яндекс.Алгоритма 2014

                1 августа в офисе Яндекса, открывшемся недавно в Берлине, состоялся финал нашего чемпионата по программированию. И его победителем снова стал известный всем, кто интересуется спортивным программированием, Геннадий Короткевич.

                Задания для Алгоритма готовила международная команда. В нее вошли программисты из России, Беларуси, Польши и США. Это специалисты МГУ имени М.В. Ломоносова, Университета Карнеги-Меллон, сотрудники Яндекса и Google. В Яндексе задачи составляли разработчики минского и киевского офиса, а потом проверяли их на своих коллегах. Один из составителей в прошлом году сам был финалистом Алгоритма. Специально для Хабрахабра мы разобрали с авторами все задачи. Кстати, несмотря на то, что соревнование завершено, вы можете попробовать себя в вирутальном контесте.



                На победу претендовали многие финалисты. Среди них были победители и призеры АСМ ICPC и TopCoder Open, разработчики Google и Facebook. В финальном раунде сражались призёры Алгоритма-2013 Евгений Капун и Ши Бисюнь, чемпион АСМ ICPC Михаил Кевер, а также один из самых титулованных спортивных программистов мира Пётр Митричев. В этом году побороться за приз решил также Макото Соэдзимо — составитель заданий для Алгоритма-2013 и администратор TopCoder Open.

                Борьба за первое место разгорелась между Геннадием Короткевичем и Хосакой Кадзухиро из Токийского университета. Лучший результат — четыре задачи при 66 минутах штрафного времени — показал Короткевич, подтвердив титул чемпиона. Кадзухиро решил столько же задач, но набрал больше штрафного времени (90 минут) и занял второе место. Третье место завоевал Ван Циньши из университета Цинхуа: он решил четыре задачи при 125 минутах штрафа.
                Читать дальше →
              • Не Таиландом единым или Как фрилансеру за три часа поменять место обитания без проблем с визами

                  С падением курса рубля жизнь фрилансера-путешественника сильно осложнилась. Однако если все же заработок позволяет, а европейского гостеприимства, как и солнца, ох как не хватает в России – добро пожаловать в восемь стран, где фрилансер найдет покой и красивую картинку позади монитора без проблем и волнений с оформлением виз.


                  Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
                  Читать дальше →
                • О личном опыте работы с «бодишопами» или предупрежден — значит вооружен

                  image
                  Обманутые программисты пишут жалобу в Departament of Labor

                  Сегодня хотел бы поделиться своим опытом и опытом работы знакомых с такой штукой, как консалтинговая компания АКА «бодишоп». Думаю, всем желающим поехать за границу работать будет полезен сей опыт.
                  TLDR: опыт негативный, название фирмы указывать не буду, дабы не нарушать правила.
                  Читать дальше →
                • Хождение по MOOCам: опыт обучения на онлайн-курсах

                  Тема онлайн-курсов (MOOC, Massive Open Online Course) за последние пару лет набрала такую популярность, что наверное только ленивый не слышал об этой форме обучения, а очень многие уже успели и распробовать. Я сам пришёл к теме онлайн-обучения в прошлом году, когда осознал, что для текущих рабочих задач мне требуется срочно подтянуть некоторые технические знания, местами подзабытые и частично разрозненные, а что-то и вовсе изучить с нуля. С тех пор я успел освоить две крупнейших MOOC-платформы — Coursera и edX (в «большой тройке» есть ещё Udacity, а также множество мелких образовательных проектов различного формата). Там я успешно закончил несколько курсов (в частности, R programming от John Hopkins University, Machine Learning от Stanford University, Statistical Learning от Stanford Online) и останавливаться на этом не намерен. В своей статье я хочу поделиться своими мыслями и впечатлениями от процесса дистанционного обучения, рассказать о плюсах и минусах, да и просто вдохновить тех, кто слышал и хочет, но пока не знает, как подступиться к онлайн-обучению. Это не обзор конкретных курсов и платформ, а именно личные впечатления от занятий. Речь пойдёт в основном о Coursera и edX, как основных провайдерах дистанционного обучения.
                  Читать дальше →
                • 10 заповедей программирования без эго

                  • Translation
                  image«Программирование без эго» — перевод понятия egoless programming. Смысл в том, что разработчик осознанно отодвигает эго на второй план ради эффективности в работе. При разработке Web-payment.ru — сайта о платежных системах с каталогами и мониторингом обменников — мы стараемся руководствоваться этими принципами. Если кто-то благодаря этому посту тоже начнет применять их в своем проекте, мы будем очень рады, ведь они помогают избежать конфликтов и несут в себе добро. Перевод и редактура moigagoo.

                  О программировании Стивен начал говорить с отцом за 2 недели до его смерти. Стивену было 22, он изучал графдизайн в колледже и почти получил степень бакалавра. Его отцу было 62 — больше, чем большинству отцов. Когда он только начинал программировать в Теннессийском техническом университете в 60-е, то писал код на Фортране на перфокартах. Знал он очень много.

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

                  Когда Стивен приехал домой на каникулы, отец рассказал ему про 10 заповедей программирования без эго. Он распечатал их, и вдвоем со Стивеном они обсудили каждый пункт. Из-за внезапной смерти отца Заповеди стали одной из немногих программистских тем, которые Стивен успел обсудить вместе с ним. Возможно, именно поэтому они ему так запомнились.
                  Читать дальше →
                • Что останавливает вас путешествовать?

                    Если ваша работа связана с интернет-технологиями, скорее всего вы уже слышали на Твитере о так называемых цифровых кочевниках.

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

                    Если, наблюдая за этим явлением, вы думаете, что это не про вас – вы заблуждаетесь. Мысли о том, что «им хорошо, им повезло!» — не самое удачное объясниние.

                    По словам Кави Гупты (автор Форбса, кочевник), «ни одно другое поколение не обладало такой свободой в создании и формировании своего собственного образа жизни». Это не «им хорошо, им повезло!», это – «нам всем повезло!»
                    Читать дальше →