Модель памяти Rust, видео.

Обзорное выступление с рассказом о модели памяти Rust от ее автора Николоса Мастакиса. Вскользь сравнивается с моделью памяти C++. Достаточно интересное выступление для людей не имеющих какого-то опыта с Rust и оценивающих пригодность языка для решения своих задачь.

Rust в ядре OSX

Как-то в дискуссии на РСДН-е проскользнула мысль о том, что одной из ключевых сфер применения Rust может оказаться разработка не User-mode приложений, а драйверов. Вот и результат небольшого эксперимента:

17/12/13 23:43:23,000 kernel[0]: hello from rust

Continue reading

Дизассемблер под OSX

Иногда бывыет нужно что-то по-быстрому дизассемблировать, понять как работает или почему работает не так, как ожидалось. Недавно, в очередной раз вознила такая задача и я стал думать чем же мне воспользоваться. По большому счету, под OSX с дизассемблерами не очень: возможности OTool как дизассемблера (им я раньше и пользовался, но уж больно не удобно что-либо дизассемблировать в командной строке) очень скудные, IDA Pro за $1129 (да, именно Pro, а не Starter, которую я еще согласен оплатить из своего кармана) и очень понравившееся мне приложение с великолепным соотношением цена/качество – Hopper Disassembler.
Безусловно, по возможностям Hopper Disassembler основательно уступает IDA Pro, но, в большинстве случаев вся мощь IDA Pro не очень-то нужна и возможностей Hopper вполне хватает. Так что, будет кому-то нужен недорого дизассемблер под OSX – поглядите в сторону Hopper.

Вакансии в Mac команде ЛК

У нас, в Mac команде ЛК появилась одна вакансия (работа в офисе в Мск, есть программа релокации). Условия, как всегда, отменные, коллектив прекрасный, офис замечательный и даже бассейн есть (2 минуты пешком)

То что описания вакансии две, не суть важно, т.к. нас устроит человек как с опытом из первой, так и второй вакансии.

Что самое важное, на вакансию “C++ разработчик (логика)” мы готовы рассматривать не только C++ разработчиков с опытом программирования под OSX, но и просто сильных *NIX разработчиков (BSD – предпочтительно, Linux – тоже не плохо), которых однозначно хотят перейти на OSX и готовы инвестировать в это некоторые усилия.

Со второй вакансий все проще – разыскиваются Objective-C разработчики имеющие некоторое представление о C/C++ (нулевое знание плюсов не пойдет однозначно).

C++ разработчик (логика)

Основные функции и задачи:

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

Позиция предполагает работы по:

  • портированию существующих Windows-компонент на Mac (включая и последующую отладку портированного кода);
  • реализации Mac-специфических компонент и сервисов (включая драйвера);
  • интеграции компонент в общий продукт.

Требования к кандидату:

Обязательно:

  • Отличное знание C и C++;
  • Отличное знание библиотек STL и BOOST;
  • Знание платформы Mac OS X ИЛИ обширный опыт разработки под *NIX системы (FreeBSD, Linux, etc.) и желание перейти в разработку под Mac OS X;
  • Знание инструментальных средств разработки под *NIX, таких как GDB, Make, CMake;
  • Знание Sh, стандартных консольных *NIX приложений и какого-либо скриптового языка (предпочтительно Python);
  • Опыт работы с логами и крэш-дампами;
  • Опыт разработки мультиплатформенных систем (Windows, UNIX).

Желательно:

  • Понимание принципов и опыт разработки многоуровневых клиент-серверных приложений;
  • Знание и опыт использования межпроцессных взаимодействий;
  • Понимание принципов основных сетевых протоколов (как минимум TCP/IP);
  • Опыт портирования приложений с Win32 и UNIX.

C++ разработчик (UI)

Основные функции и задачи:

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

Позиция предполагает работы по:

  • портированию существующих Windows-компонент на Mac (включая и последующую отладку портированного кода);
  • реализации Mac-специфических компонент и сервисов;
  • реализации Mac-специфического GUI;
  • интеграции компонент в общий продукт.

Требования к кандидату:

Обязательно:

  • Отличное знание Objective-C, опыт разработки на C/C++;
  • Опыт создания GUI с использованием Cocoa, знание STL и BOOST;
  • Знание платформы Mac OS X;
  • Знание инструментальных средств разработки под Mac OS X;
  • Опыт работы с логами и крэш-дампами.

Желательно:

  • Понимание принципов и опыт разработки многоуровневых клиент-серверных приложений;
  • Знание и опыт использования межпроцессных взаимодействий;
  • Опыт разработки мультиплатформенных систем (Windows, UNIX);
  • Опыт портирования приложений с Win32 и UNIX.

Писать можно мне на e-mail. Если не интересно самим, поделитесь с теми, кому может быть интересно. Заранее спасибо!

Еще один полезный, но малоизвестный ресурс

Последнее время я частенько нахожу интересные Whitepapers с tradepub.com. Ресурс в Рунете малоизвестный, хотя зря – на нем можо найти много чего полезного и есть функционал подписки на интересующие Whitepapers.

Mill CPU

К регистровой и стековой машине мы привыкли давно… А это – интереснеейшее видео о Mill CPU архитектуре. Очень рекомендую к просмотру всем, кому интересна организация процессоров и виртуальных машин.

Оптимизация кода Python

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

Хотя, на первый взгляд кажется, что Python и быстрый код не совместимые понятия, это не совсем правда.

Все тесты проводились на Python 3.3.3 и, само собой, не обошлось без IPython, который ну просто killer-feature этого языка. Continue reading

Pip, update all

Хотелось бы, да? А нету. Нашлось вот такое решение:

import pip
import sys
from subprocess import call

def pip_ver():
    if sys.version_info.major == 3:
        return "pip3"
    else:
        return "pip"

cmd_line = pip_ver() + " install --upgrade "

for dist in pip.get_installed_distributions():
    call(cmd_line + dist.project_name, shell=True)

Использовать просто:

python script_name.py

Делать файл исполнимым не стал, т.к. при явном вызове Python можно указать нужную версию 2.X или 3.X