Новости


Мемоизация дефолтным kwarg в Python

Вот так можно мемоизировать питоновскую функцию: def memo_square(a, cache={}): if a not in cache: cache[a] = a*a return cache[a] Приём незаслуженно малоизвестный, так что под катом мы разберём, как он работает и для чего нужен.

Курс MIT «Безопасность компьютерных систем». Лекция 11: «Язык программирования Ur-Web», часть 2

Массачусетский Технологический институт. Курс лекций #6. 858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем.

Чарльз Наттер. Как перенести древний монолитный проект на JRuby и стоит ли это делать?

Через пару дней в Москве пройдет конференция RubyRussia. Наш гость Чарльз Наттер (работает над JRuby и JVM поддержкой в Red Hat) ответил на пару вопросов. Как вы попали в мир программирования и Ruby? В 2004 году я работал по контракту в правительственной фирме в качестве Java Enterprise архитектора.

Ещё больше практики! Научим Spring Framework и профилированию без всяких конференций

Вы читаете посты в нашем блоге и думаете: «Кому они нужны, я не хожу на конференции». А на конференции вы не ходите потому, что вам хочется научиться каким-то конкретным вещам, а не просто увеличить кругозор.

Асинхронная бизнес-логика в наши дни

Вкратце: Пруф уже реализован на C++, JS и PHP, подходит для Java. Быстрее чем coroutine и Promise, больше фич. Не требует выделения отдельного программного стека. Дружит со всеми средствами безопасности и отладки.

Курс MIT «Безопасность компьютерных систем». Лекция 8: «Модель сетевой безопасности», часть 1

Массачусетский Технологический институт. Курс лекций #6. 858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем.

Курс MIT «Безопасность компьютерных систем». Лекция 5: «Откуда берутся ошибки систем безопасности», часть 2

Массачусетский Технологический институт. Курс лекций #6. 858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем.

Объединение сортировки подсчётом и деревом

Доброго времени суток! После телефонного собеседования в одну известную компанию, где меня попросили перечислить несколько видов сортировок (я назвал 10, к слову), я слегка озадачился этим вопросом. Подумав минут 30 над этой проблемой, загуглив какие ещё есть виды сортировок, наткнулся на сортировку подсчётом.

Открытый урок «Пишем свою библиотеку для работы с xlsx файлами»

И снова здравствуйте! Небольшой открытый урок в рамках курса «Web-разработчик на Python», на котором преподаватель курса Илья Лебедев рассказывал как устроен формат xlsx, как с ним работать без специализированных библиотек, вроде openpyxl и показал как разработать свою библиотеку для работы с этим форматом с нужным набором функций.

9 секретов ASP.NET Core

Совсем недавно мы обновили ASP. NET Core до версии 2. 1. Один из создателей платформы, наш коллега Дэвид Фоулер поделился некоторыми её полезными особенностями, о которых мало кто знает. Кроме того, помимо 9 секретных фич ASP.

Компьютерное зрение и машинное обучение в PHP используя библиотеку opencv

Всем привет. Это моя юбилейная статья на хабре. За почти 7 лет я написал 10 статей (включая эту), 8 из них — технические. Общее количество просмотров всех статей — около полумиллиона. Основной вклад я внёс в два хаба: PHP и Серверное администрирование.

Облачные вычисления. Ключевые определения

«Как и в случае появления любой новой технологии, рецепт успеха включает в себя сочетание технических знаний, деловой хватки и навыков доставки» — Erik T. Heidt, Gartner Research Vice President Зачем? Несмотря на устоявшийся тренд и частые обсуждения «облаков», все чаще сталкиваюсь с путаницей определений даже в ИТ-кругах.

Google Cloud: новая платформа и возможности машинного обучения

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

Java и Project Reactor. Эпизод 2

Привет! Удивительно, но первая часть статьи даже кому-то понравилась. Отдельное спасибо за ваши отзывы и комментарии. У меня для вас плохая хорошая новость: нам ещё есть о чём поговорить! А если точнее, то о некоторых деталях работы Reactor.

JS DevDay. Запись докладов

27 апреля мы провели JavaScript DevDay — разговаривали и про мобилку, и про веб, и про гибридные приложения. Делимся записями трёх докладов. Первый будет полезен, если вам понадобилась аргументация почему НЕ стоит использовать Аppcelerator Titanium.

Курс MIT «Безопасность компьютерных систем». Лекция 1: «Вступление: модели угроз», часть 3

Массачусетский Технологический институт. Курс лекций #6. 858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем.

Курс MIT «Безопасность компьютерных систем». Лекция 1: «Вступление: модели угроз», часть 2

Массачусетский Технологический институт. Курс лекций #6. 858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем.

The Swift Programming Language. Основы. Часть 1 — Константы и Переменные

Swift — это новый язык программирования для разработки приложений на iOS, macOS, watchOS и tvOS. Тем не менее, многие части Swift будут схожи с вашим опытом разработки на C и Objective-C. Swift предлагает вам свою версию всех фундаментальных переменных C и Objective-C, включая Int для целых значений, Double и Float для значений с плавающей запятой, […]

Работа с временем на Swift

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

Асинхронные циклы в Node.js 10

В этом месяце выходит десятая версия Node. js, в которой нас ждет изменение поведения потоков (readable-stream), вызванное появлением асинхронных циклов for-await-of. Давайте разберемся что это такое и к чему нам готовиться.

Настройка Sublime Text 3 для работы с VHDL файлами

Работа с VHDL в Sublime Text 3 Редактор Sublime Text существенно экономит время при работе с vhdl и verilog файлами. Для тех, кто не работал с редакторами типа Sublime Text, Notepad++ и т.п. опишу основные полезные функции данных редакторов: множественное выделение/редактирование строк кода (нажатие средней кнопки мыши или при зажатой клавише Ctrl) установка меток (закладок) […]

Разбор основных концепций параллелизма

Всем кофе! Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

Как программирование влияет на мозг и мышление

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

Анализ данных с использованием Python

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

Конференция DEFCON 23. «Как я сбивал назойливый дрон соседского ребёнка». Майкл Робинсон

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

Знакомство с гео-библиотекой S2 от Google и примеры использования

Привет! Меня зовут Марко, я работаю в Badoo в команде «Платформа». Не так давно на GopherCon Russia 2018 я рассказывал, как работать с координатами. Для тех, кто не любит смотреть видео (и всех интересующихся, конечно), публикую текстовый вариант своего доклада.

Что нового в LLVM

LLVM 6 уменьшает опасность Spectre, имеет улучшенную поддержку Windows и CPU компании Intel, а также включает WebAssembly в число поддерживаемых целевых платформ. Инфраструктура компилятора LLVM прошла путь от технически любопытной вещи до живой части современного ландшафта программного обеспечения.

Новая микроархитектура процессоров Intel: быстро, но не бесплатно

Выявление аппаратных уязвимостей Spectre и Meltdown в процессорах Intel поставило перед архитекторами компании сложнейшую задачу – внести в микроархитектуру CPU изменения, обеспечивающие полную безопасность исполнения при сохранении и даже повышении производительности процессоров.

Выпуск#16: ITренировка — актуальные вопросы и задачи от ведущих компаний

Публикуем очередную подборку задач и вопросов с собеседований в крупных IT-компаниях (для тех, кому мало задач из предыдущего сета :) Ниже приведены вопросы и задачи для соискателей в Google, с различным уровнем сложности.

Конференция DEFCON 21. “Секретная жизнь SIM карт”. Эрик Батлер, Карл Кошер

Меня зовут Эрик Батлер, а это Карл Кошер, и мы хотим поговорить с Вами о чтении, создании, загрузке и использовании кода на SIM-картах. Этот проект стартовал в прошлом году, когда я узнал о мероприятии Tourcamp 2012, лагере хакеров на побережье штата Вашингтон, таком выездном DEFCON'е.

Bluebird: магия внутри

Асинхронность. Асинхронность никогда не меняется. Node. js использовал асинхронность, чтобы получить большой rps для io-операций. TC39 добавила промисы в спецификацию для борьбы с адом колбеков. Наконец, мы стандартизировали async/await.

Логирование в Adaptivist ScriptRunner

В этой статье я хотел бы поговорить о логировании в Adaptivist ScriptRunner. Логи являются основным инструментом разработчиков и экспулатирующего персонала для анализа нештатных ситуаций в промышленной среде.

Композиция интерфейсов в Go

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

Задача про forEach(ps::println) от СКБ Контур

На конференции JBreak я не читал задачки спонсоров специально. Ну, конечно, кроме ада от Excelsior: уж эти ребята всем задали жару. А тут принесли мне листок от СКБ Контур, смотри, мол, посмейся. Я посмеялся: первая задача действительно выглядела настолько наивно сформированной и недоопределённой, что даже не хотелось идти к стенду и убеждать в этом сотрудников […]

#CES 2018 | Misty: первый робот для программистов

На сегодняшний день существует уже не один робот, которого можно запрограммировать набором заранее существующих команд даже людям, не имеющим специальной подготовки. Однако компания Sphero в рамках выставки CES 2018 решила представить нечто новое: робота с широкими возможностями, для управления которым нужно знать лишь основы JavaScript.

Собираем пользовательскую активность в Js и ASP

После написания функционала авторекордера действий пользователя, названного нами breadcrumbs, в WinForms и Wpf, пришло время добраться и до клиент-серверных технологий. Начнем с простого — JavaScript.

Текстуры кода

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

Эх, не люблю писать бойлерплейты, ведь есть IntelliJ IDEA и Apache Velocity

Добрый день! Речь в этой статье пойдет о том, как частично сократить объем кода, который зачастую приходится набирать вручную или откуда-то копипастить (боже упаси), средствами IntelliJ IDEA, а конкретнее — шаблонами файлов и кода.

— бухой, пофиксю позже

long long ago; /* in a galaxy far far away */ // // _oo0oo_ // o8888888o // 88" . "88 // (| -_- |) // 0 = /0 // ___/`---'___ // .' \| |// '. // / \||| : |||// // / _||||| -:- |||||- // | | \ - /// | | // | […]

Ещё один шажок к C++20. Встреча в Альбукерке

Из центральной части Канады — на юго-запад США! Альбукерке расположен в штате Нью-Мексико: На встрече международного комитета по стандартизации C++, которая прошла в этом городе, приняли одно очень большое нововведение в С++20 и несколько маленьких.

Как можно взломать свой же Web проект?

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

Приглашаем на конференцию YAPC::Russia 4 ноября

В эту субботу мы приглашаем всех Perl’оводов и им сочувствующих на ежегодную конференцию YAPC::Russia, посвящённую языку Perl и его сообществу. Она проводится в Москве и Санкт-Петербурге под названием May Perl, а в Киеве — под названием Perl Mova.

Что каждый программист на C должен знать об Undefined Behavior. Часть 1-3

Люди иногда спрашивают, почему код, скомпиливанный в LLVM иногда генерирует сигналы SIGTRAP, когда оптимизация была включена. Покопавшись, они обнаруживают, что Clang сгенерировал инструкцию «ud2» (подразумевается код X86) — то же, что генерируется __builtin_trap().

Игрострой: от хаотичного кода к грамотной архитектуре игры

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

Как отлаживать маленькие программы

Довольно много плохих вопросов, которые я вижу на StackOverflow, можно описать следующей формулой: Вот моё решение домашнего задания. Оно не работает. [20 строк кода] И… всё. Прим. пер.: это перевод статьи "How to debug small programs", на которую ссылаются в справочном разделе английского StackOverflow, посвящённом созданию минимальных, самодостаточных и воспроизводимых примеров. Мне кажется, она прекрасно […]

Игрушечный фронтенд для LLVM, написанный на Rust: Руководство для начинающих

Примечание переводчика Приведённый в статье код скомпилирован с достаточно старыми версиями крейтов peg и peg_syntax_ext. Для текущих версий в исходники нужно внести минимальные изменения. Я вставил изменённые участки в спойлеры по тексту статьи.

Работа с ресурсами, или как я пропихивал @Cleanup

Это вымышленная история, и все совпадения случайны. Наконец-то команда разработки компании Unknown Ltd. выпустила релиз вовремя. Руководитель отдела разработки Эндрю, системный архитектор Юг и простой рядовой разработчик Боб собрались на планирование.

Пять вещей, которые нужно знать о Spring Framework 5

На этой неделе, сразу за релизом Java 9 вышла новая мажорная версия одного из самых популярных фреймворков для разработки приложения на Java — Spring Framework версии 5. Под катом подробности и краткое описание, что же поменялось.

Лучшее

Настоящий ИИ можно создать, решив три основные проблемы

На проходившей в прошлом месяце в Лондоне конференции по вопросам глубинного машинного обучения несколько раз затрагивалась одна тема: важность понимания того, чем на самом деле мы занимаемся. В то время как такие компании, как Google, продолжают заявлять, что все мы живем в «первом веке ИИ», когда технологии машинного обучения лишь начинают открывать для себя новые […]

Актуальное

Разработан конструктор приложений для «умной» колонки Alexa

Смарт-колонка Alexa от Amazon продолжает завоёвывать популярность пользователей. Число купивших её людей приближается к сорока миллионам, а разработчики продолжают создавать для неё всё новые и новые приложения, наделяя и без того неглупое устройство различными навыками.

Как это работает? | BitTorrent

BitTorrent — это сетевой протокол для обмена файлами через Интернет. Он был создан американским программистом Брэмом Коэном, который написал первый torrent-клиент «BitTorrent» на языке Python в апреле 2001 года.

ИИ от NVIDIA научился рисовать 3D-графику по-человечески

На конференции SIGGRAPH (Special Interest Group on Graphics and Interactive Techniques — Специальная группа по графическим и интерактивным методам) компания NVIDIA продемонстрировала свой новый ИИ, способный создавать трёхмерные графические изображения.

Microsoft учит детей программировать с помощью игры Minecraft

Игра-конструктор Minecraft стала феноменом игровой индустрии. Любительский проект, созданный шведским программистом Маркусом Перссоном, быстро обрёл миллионы фанатов и превратился в одну из самых прибыльных игр в мире.

DARPA хочет создать идеальное программное обеспечение, не требующее обновлений

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