Как стать автором
Обновить
46
Карма
0
Рейтинг
Boris Nagaev @starius

User

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

Время прочтения 10 мин
Просмотры 8.4K
Блог компании ua-hosting.company Ненормальное программирование *Системное программирование *
                                                                                    - Что-то беспокоит меня Гондурас...
                                                                                    - Беспокоит? А ты его не чеши.


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

Сетевые системные вызовы. Часть 3

Время прочтения 11 мин
Просмотры 20K
Ненормальное программирование *Системное программирование *
Предыдущую часть обсуждения мы завершили на такой вот оптимистической ноте: «Подобным образом мы можем изменить поведение любого системного вызова Linux». И тут я слукавил — любого… да не любого. Исключение составляют (могут составлять) группа сетевых системных вызовов, работающих с BSD сокетами. Когда сталкиваешься с этим артефактом в первый раз — это изрядно озадачивает.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 2

Модификация системного вызова. Часть 2

Время прочтения 6 мин
Просмотры 15K
Ненормальное программирование *Системное программирование *
В предыдущей части мы договорились до того, что не экспортируемые имена ядра Linux могут использоваться в коде собственных модулей ядра с тем же успехом, что и экспортируемые. Одним из таких имён в ядре является селекторная таблица всех системных вызовов Linux. Собственно, это и есть основной интерфейс любых приложений к сервисам ядра. Теперь мы рассмотрим как можно модифицировать оригинальный обработчик любого системного вызова, подменить его, или внести разнообразие в его выполнение в соответствии с собственным видением.
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 32

Делаем доступным все символы ядра Linux. Часть 1

Время прочтения 11 мин
Просмотры 28K
Ненормальное программирование *Системное программирование *
Из песочницы

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


Это обсуждение относится к ядру операционной системы Linux, и представляет интерес для разработчиков модулей ядра, драйверов под эту операционную систему. Для всех прочих эти заметки вряд ли представляют интерес.
Читать дальше →
Всего голосов 31: ↑22 и ↓9 +13
Комментарии 28

Поиск по геному с помощью Wolfram Language (Mathematica) и HadoopLink

Время прочтения 5 мин
Просмотры 7.3K
Блог компании Wolfram Research Высокая производительность *Программирование *Big Data *Hadoop *
Перевод

Перевод поста Пола-Жана Летурно (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 для создания геномной поисковой системы!
Читать дальше →
Всего голосов 24: ↑21 и ↓3 +18
Комментарии 3

Как нейронные сети рисуют картины

Время прочтения 3 мин
Просмотры 159K
Блог компании .io Алгоритмы *Обработка изображений *
Перевод
Умные алгоритмы уже умеют находить и распознавать лица, определять главную часть картинки, узнавать различные предметы. А нейронные сети пошли дальше и даже могут самостоятельно создавать произведения искусства.

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

image
Читать дальше →
Всего голосов 79: ↑75 и ↓4 +71
Комментарии 38

Топ-10 data mining-алгоритмов простым языком

Время прочтения 24 мин
Просмотры 125K
Блог компании ITI Capital Data Mining *Алгоритмы *
Перевод


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

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

Когда вы узнаете, что они собой представляют, как работают, что делают и где применяются, я надеюсь, что вы используете эту статью в качестве отправной точки для дальнейшего изучения принципов data mining.
Читать дальше →
Всего голосов 55: ↑49 и ↓6 +43
Комментарии 8

Роман в мейлах: советы программисту, переезжающему в Мюнхен

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

Итак, в хронологическом порядке:
Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 3

Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1

Время прочтения 3 мин
Просмотры 36K
Высокая производительность *
Перевод
В NGINX версии 1.9.1 появилась новая возможность, позволяющая использовать сокетную опцию SO_REUSEPORT, которая доступна в современных версиях операционных систем, таких как DragonFly BSD и Linux (ядра 3.9 и новее). Данная опция разрешает открывать сразу несколько слушающих сокетов на одном и том же адресе и порту. При этом, ядро будет распределять входящие соединения между ними.
Читать дальше →
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 31

NGINX изнутри: рожден для производительности и масштабирования

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

Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.
Поехали!
Всего голосов 93: ↑93 и ↓0 +93
Комментарии 32

NGINX — История перерождения под Windows

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

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

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

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

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

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

Я немного изменил порядок, т.к. именно в такой последовательности я разбирался с этими ограничениями, так сказать отсортировано «исторически».
Читать дальше →
Всего голосов 69: ↑66 и ↓3 +63
Комментарии 81

9 анти-паттернов, о которых должен знать каждый программист

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

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

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


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

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


Что это

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

Почему плохо

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

Как избежать

Сначала пишите чистый, читаемый, работающий код, используя известные и проверенные алгоритмы и инструменты. При необходимости используйте инструменты для профилирования для поиска узких мест. Полагайтесь на измерения, а не на догадки и предположения.
Читать дальше →
Всего голосов 117: ↑97 и ↓20 +77
Комментарии 123

Как айтишнику уехать в Германию. Часть 1

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

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

Вариант с Германией мне подсказала знакомая, которая собирается ехать туда учиться. Погуглил, и действительно — для айтишников (я джава-разработчик) всё очень хорошо. Информации на эту тему в интернете полно, не буду лишний раз дублировать (гуглить по ключевому слову bluecard). Если коротко — достаточно желания работодателя платить вам больше, чем 37 000 евро в год.
Читать дальше →
Всего голосов 63: ↑51 и ↓12 +39
Комментарии 152

Разбор финальных задач Яндекс.Алгоритма 2014

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

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



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

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

Не Таиландом единым или Как фрилансеру за три часа поменять место обитания без проблем с визами

Время прочтения 10 мин
Просмотры 51K
Блог компании Airbnb Офисы IT-компаний Лайфхаки для гиков
С падением курса рубля жизнь фрилансера-путешественника сильно осложнилась. Однако если все же заработок позволяет, а европейского гостеприимства, как и солнца, ох как не хватает в России – добро пожаловать в восемь стран, где фрилансер найдет покой и красивую картинку позади монитора без проблем и волнений с оформлением виз.


Маршруты кочевников за полторы тысячи лет не поменялись. Но нравы стали помягче
Читать дальше →
Всего голосов 69: ↑64 и ↓5 +59
Комментарии 126

Область видимости в JavaScript и «поднятие» переменных и объявлений функций

Время прочтения 6 мин
Просмотры 154K
JavaScript *
Перевод
Вы знаете, какое значение выведет этот код на JavaScript?
var foo = 1; 
function bar() { 
    if (!foo) { 
        var foo = 10; 
    } 
    alert(foo); 
} 
bar();

Читать дальше →
Всего голосов 135: ↑122 и ↓13 +109
Комментарии 71

О личном опыте работы с «бодишопами» или предупрежден — значит вооружен

Время прочтения 6 мин
Просмотры 53K
Управление персоналом *Карьера в IT-индустрии
Из песочницы
image
Обманутые программисты пишут жалобу в Departament of Labor

Сегодня хотел бы поделиться своим опытом и опытом работы знакомых с такой штукой, как консалтинговая компания АКА «бодишоп». Думаю, всем желающим поехать за границу работать будет полезен сей опыт.
TLDR: опыт негативный, название фирмы указывать не буду, дабы не нарушать правила.
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 14

Хождение по MOOCам: опыт обучения на онлайн-курсах

Время прочтения 11 мин
Просмотры 27K
Учебный процесс в IT
Из песочницы
Тема онлайн-курсов (MOOC, Massive Open Online Course) за последние пару лет набрала такую популярность, что наверное только ленивый не слышал об этой форме обучения, а очень многие уже успели и распробовать. Я сам пришёл к теме онлайн-обучения в прошлом году, когда осознал, что для текущих рабочих задач мне требуется срочно подтянуть некоторые технические знания, местами подзабытые и частично разрозненные, а что-то и вовсе изучить с нуля. С тех пор я успел освоить две крупнейших MOOC-платформы — Coursera и edX (в «большой тройке» есть ещё Udacity, а также множество мелких образовательных проектов различного формата). Там я успешно закончил несколько курсов (в частности, R programming от John Hopkins University, Machine Learning от Stanford University, Statistical Learning от Stanford Online) и останавливаться на этом не намерен. В своей статье я хочу поделиться своими мыслями и впечатлениями от процесса дистанционного обучения, рассказать о плюсах и минусах, да и просто вдохновить тех, кто слышал и хочет, но пока не знает, как подступиться к онлайн-обучению. Это не обзор конкретных курсов и платформ, а именно личные впечатления от занятий. Речь пойдёт в основном о Coursera и edX, как основных провайдерах дистанционного обучения.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 15

10 заповедей программирования без эго

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

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

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

Когда Стивен приехал домой на каникулы, отец рассказал ему про 10 заповедей программирования без эго. Он распечатал их, и вдвоем со Стивеном они обсудили каждый пункт. Из-за внезапной смерти отца Заповеди стали одной из немногих программистских тем, которые Стивен успел обсудить вместе с ним. Возможно, именно поэтому они ему так запомнились.
Читать дальше →
Всего голосов 72: ↑58 и ↓14 +44
Комментарии 37

Что останавливает вас путешествовать?

Время прочтения 4 мин
Просмотры 19K
Управление проектами *Фриланс Законодательство в IT
Если ваша работа связана с интернет-технологиями, скорее всего вы уже слышали на Твитере о так называемых цифровых кочевниках.

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

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность