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

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

Rust в ядре OSX

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

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

Continue reading

Оптимизация кода 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

Явное удаление функций в C++11

Думаю что все помнят что в C++03 для того, что бы сделать какой-либо класс защищенным от копирования было необходимо объявить его конструктор копирования и защищенными.

class Foo {
public:
    Foo(){}
    ~Foo(){}
private:
    Foo(const Foo&);
    Foo& operator=(const Foo&);
};

Continue reading

Make && 10.9

В 10.9 подложили неожиданную пакость. Make внезапно стал запускаться с дополнительной выставленной переменной окружения следующего вида: SDKROOT=/. А так как у нас есть своя, довольно развесистая логика определения используемой SDK, она, конечно же, развалилась.
Микро Makefile:

$(info $(shell env))

И если напустить на него make в консоли получим приблизительно следующее:

... _=/usr/bin/make SDKROOT=/

WTF?!

Список языков и его обработка

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

langs_info[:1]

Continue reading

Парсинг Wikipedia

Недавно с удивлением узнал о том, что Wikipedia – это не только ценный мех отличный источник информации, но еще и очень приличное API для доступа к этой самой отличной информации. Ну а там, где есть какое-то API, почти наверняка найдется Python библиотека к нему.

А вообще, затеял я все это дело ради того, что бы загрузить список языков программирования с Wikipedia и получить немного дополнительной информации по ним. Что удивительно, полностью подходящей мне библиотеки не нашлось, и пришлось писать небольшой патчик к библиотеки Wikipedia, благо на Python код пишется очень быстро. В примерах используется та версия, что лежит у меня на GitHub. Это вызвано тем, что мои изменения в основном репозитории библиотеки Wikipedia несколько видоизменили и теперь результат новых функций выглядит более читабельным, но бесполезным в моем случае, т.к. возвращает отформатированный текст, а не Markdown. Continue reading

Получение сертификатов сайта

Практически любая, сколь-нибудь не стандартная задача выливается в часы малопродуктивного гугления, что печалит. Сегодня я искал ответ на вопрос, как в OSX получить сертификаты сайта, с которым ты планируешь общаться по HTTPS. До кучи дело осложняется тем, что все должно работать не только напрямую, но и через прокси.
Если говорить о Windows, данная задача решается довольно просто, благодаря библиотеке WinHTTP (кажется, ее так звать) и функции WinHttpQueryOption с флагом WINHTTP_OPTION_SERVER_CERT_CONTEXT, но мне-то нужно решение для OSX! И оно было найдено, как и ожидалось, в дебрях очень любимой мной библиотеки cURL. Continue reading