Search
Write a publication
Pull to refresh
3
0
Send message

Вероятностное программирование

Reading time7 min
Views50K

Вступление


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

Я, автор, Юра Перов, занимаюсь вероятностным программированием в течение уже двух лет в рамках своей основной учебно-научной деятельности. Продуктивное знакомство с вероятностным программированием у меня сложилось, когда будучи студентом Института математики и фундаментальной информатики Сибирского федерального университета, я проходил стажировку в Лаборатории компьютерных наук и искусственного интеллекта в Массачусетском технологическом институте под руководством профессора Джошуа Тененбаума и доктора Викаша Мансингхи, а затем продолжилось на Факультете технических наук Оксфордского университета, где на данный момент я являюсь студентом-магистром под руководством профессора Френка Вуда.

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

«Обычное» программирование


Для знакомства с вероятностным программирование давайте сначала поговорим об «обычном» программировании. В «обычном» программировании основой является алгоритм, обычно детерминированный, который позволяет нам из входных данных получить выходные по четко установленным правилам.
Читать дальше →

Делаем дамп фотографий из диалога vk.com

Reading time7 min
Views126K
Всем привет!

Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.

В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина — это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.

Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.
Читать дальше →

VPN в каждый дом

Reading time1 min
Views190K


Всем привет! Желание сделать VPN сервер максимально простым в установке и удобным в использовании назревало уже давно. За основу я взял L2TP/IPsec, эта технология нативно поддерживается всеми устройствами и в отличии от PPTP не вызывает проблем при подключении через сотовых операторов.

tl;dr
Для установки нам потребуется машинка с Ubuntu 14.04 на борту и «белым» IP-адресом, любой VPS подойдет. Достаточно ввести эту волшебную строчку:
 curl -sS https://raw.githubusercontent.com/sockeye44/instavpn/master/instavpn.sh | sudo bash 

и через несколько минут у вас будет рабочий VPN с управлением через браузер (httр://ip-address:8080/) или консоль (instavpn -h).
Читать дальше →

Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux

Reading time12 min
Views29K

Объяснительная записка


Публикую журналированный результат работы по обеспечению себя универсальным живучим образом установленной операционной системы (далее ОС) Windows XP SP3.

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

Почему это нужно?



Что отличает данный материал от распространенных статей на тему клонирования ОС? Ограничения, поставленные передо мною жизнью и самим собой. Перечислю их:

1) ОС должна устанавливаться и работать на разделах произвольных размеров;
2) ОС должна исправно загружаться, будучи установленной на любой тип носителя, поддерживающий загрузку (оснащенный MBR*);
3) ОС должна функционировать на различных вариантах аппаратно-зависимого уровня (HAL**);
4) Образ ОС должен занимать минимум места на носителе для ускорения его переноса, дооснащения, переборки;
5) Образ ОС должен включать в себя необходимый набор установленного и настроенного лучшим образом ПО (вариант «система под ключ»);
6) Все манипуляции по приготовлению образа и по его развертке должны производиться штатными средствами GNU/Linux***. Смысл: разобрать по косточкам принцип работы имеющегося ПО для клонирования ОС;
7) Носителем образа ОС может быть сервер в сети, USB-накопитель (твердотельный либо винчестер), оптический или жесткий магнитный диск;
8) Носитель образа ОС должен быть оснащен средствами диагностики и ремонта ПО компьютера;
9) Желательно процесс клонирования ОС сделать максимально доступным ради хорошей повторяемости без урезания надежности результата;
10) Команда dd, безусловно, хороша, вот только неохота возиться с пустым пространством, нулями и отсутствием четкого вывода текущего действия. Кроме того, раздел, в который будет установлен клон, должен быть произвольным (см. п. 1).

Вне рассмотрения:

1) Юридические моменты установки неподдерживаемой ныне ОС;
2) Активация неактивируемой ныне официально ОС;
3) Целесообразность производимых действий. Не задротствакрасноглазия ради, но токмо волею пославших меня юзеров. Пославших за попытку убедить в кошерности использования свежего свободно-распространяемого программного обеспечения на их дуболомных машинах;
4) Подробности типовой установки ОС Windows XP и доп. ПО на компьютер, за исключением разбивки диска;
5) Подробности метода сетевого клонирования: рассмотрю в дальнейшем, сейчас такой нужды не имею.

Кому это нужно?

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

Конструктивная критика приветствуется; особенно ценны предложения по совершенствованию способа, а также теория, обосновывающая замечания.

Дата написания статьи — 2 декабря 2014 года, посему будущим поколениям шлю свой привет, а насколько сохранится актуальность материала для вас — не ведаю.

Добро пожаловать, %username%, под отрезок.
Читать дальше →

Модернизация окружения Active Directory

Reading time11 min
Views34K
Впервые Microsoft Active Directory (AD) была выпущена вместе с Windows 2000. В те времена ее основной задачей было предоставление централизованной авторизации и аутентификации пользователей ПК и серверов Windows, а также расширение возможностей службы каталогов для организаций, использующих приложения с поддержкой каталогов (например, Microsoft Exchange).

В наши дни многое изменилось в использовании и управлении AD, в том числе и рекомендации от Microsoft по улучшению организации работы, а также стиль корпоративного управления системой. Было создано множество нормативных требований, повлиявших на развитие AD. Чтобы идти в ногу со временем, организациям стоит пересмотреть свой подход к Active Directory и модернизировать ее. Это облегчит управление и повысит эффективность работы системы.

Давайте рассмотрим значение усовершенствования AD, а также области, на которых стоит сосредоточиться для создания отвечающей современным требованиям инфраструктуры.
Читать дальше →

Для чего blender фотографу?

Reading time3 min
Views51K
Существуют ли эмуляторы фотостудий? Таким вопросом однажды задался мой товарищ, изучая цены на аренду осветителей и вспоминая первые эксперименты с настольными лампами и листами ватмана. Хороший студийный свет стоит дорого, требует затемненное помещение и специальные фоны. В виртуальном мире эксперименты со светом не ограничены ничем, а результат можно повторить в реальности имея готовую схему. Мы отыскали несколько приложений. Платное и даже онлайн. Но руки чесались сделать что-то своё. Выделил пару выходных на благодатное дело и смоделировал виртуальную студию с пресетами освещения и «фотомоделью» Сюзанной — маскотом свободного 3Д редактора blender.



Читать дальше →

Maple: составление уравнений Лагранжа 2 рода и метод избыточных координат

Reading time9 min
Views28K

Предисловие



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

С Maple (на кафедре была 6-я версия, а у лоточников домой была куплена 8-я) познакомился ещё студентом, когда начинал работать над будущей кандидатской под крылом моего первого (ныше покойного) научного руководителя. Были и добрые люди, что помогли на самом первом этапе разобраться с пакетом и начать работать.

И вот так постепенно на его плечи была переложена большая часть вычислительной работы по подготовке диссертации. Диссертация была защищена, а Maple навсегда остался надёжным помошником в научном труде. Часто бывает необходимо быстро оценить какую-нибудь задачу, составить уравнения, исследовать их аналитически, быстро получить численное решение, построить графики. В этом отношении Maple просто незаменим для меня (ни в коем разе не хочу обидеть приверженцев других пакетов).

Сделать всё то, что будет предложено читателю под катом, меня подвигла задача принесенная ученицей (приходится ещё заниматься и репетиторством) со школьной олимпиады. Условие задачи таково:
Груз, висящий на нити длины L = 1,1 м, привязанной к гвоздю, толкнули так, что он поднялся, а затем ударился в гвоздь. Какова его скорость в момент удара о гвоздь? Ускорение свободного падения g = 10 м/с2.

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



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

Это послужило катализатором для того, чтобы взять да и откопать свои старые задумки, накопленные ещё со времен работы в оргкомитете Всероссийской Олимпиады студентов по теоретической механике — три года подряд занимался там подготовкой задач компьютерного конкурса. Задумки касались автоматизации построения уравнений движений для механических систем с неудерживающими связями и трением, используя известные всем уравнения Лагранжа 2 рода



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

Что касается Maple, то его библиотека для решения задач вариационного исчисления дает возможность быстро получить уравнения Эйлера-Лагранжа, решение которых минимизирует действие по Гамильтону, что применимо для консервативных систем



где — функция Лагранжа, равная разности кинетической и потенциальной энергий системы.

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

Читать дальше →

RTKLib – Сантиметровая точность GPS/ГЛОНАСС в пост-обработке

Reading time3 min
Views88K


Здравствуйте!

К сожалению, я не нашел на Хабре упоминаний о замечательной библиотеке для обработки сырых измерений – RTKLib. В связи с этим рискнул написать немного о том, как с её помощью можно получить сантиметры в относительной навигации.
Цель простая – обратить внимание общественности.

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

Поднятие chroot-«виртуалки» с ubuntu для сборки пакетов

Reading time3 min
Views18K
Приветствую.

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

Все действия выполнялись на Arch linux, но действия по настройке chroot-виртуалок и schroot должны быть очень схожими.

Всё, что описано далее, разумеется, разбросано по всей сети. Но проб и ошибок по пути много.
Прошу под кат

SSL-сертификаты: всем, каждому, и пусть никто не уйдёт обиженным

Reading time8 min
Views97K
Как ранее сообщалось на GeekTimes, EFF при поддержке Mozilla, Cisco, Akamai, IdenTrust и исследователей из Мичиганского университета (University of Michigan) создали новый некоммерческий центр сертификации (Certificate Authority) Let's Encrypt [1]. Целью проекта является ускорение перехода всемирной паутины от HTTP к HTTPS.
Подробности, часть из которых уже была описана на GeekTimes

Web-разработка на Python глазами PHP-программиста

Reading time7 min
Views177K

Введение



В статье хотелось бы поднять вопросы отличия использования Python для web-разработки по сравнению с оной на PHP. Надеюсь, статья не приведет к холиварам, так как она вовсе не о том, какой язык лучше или хуже, а исключительно о технических особенностях Python.
Читать дальше →

Использование анонимных методов в Delphi

Reading time8 min
Views34K
Поводом для написания статьи стал интерес к возможностям анонимных функций в Delphi. В разных источниках можно найти их теоретические основы, информацию о внутреннем устройстве, а вот примеры использования везде даются какие-то тривиальные. И многие задают вопросы: а для чего вообще нужны эти reference, какая может быть польза от их применения? Поэтому предлагаю некоторые варианты использования анонимных методов, применяемые в других языках, возможно, более ориентированных на функциональный стиль программирования.
Читать дальше →

Анализ дружеских связей VK с помощью Python. Продолжение

Reading time14 min
Views69K
В предыдущей статье мы на основе общих друзей ВКонтакте строили граф, а сегодня поговорим о том, как получить список друзей, друзей друзей и так далее. Предполагается, что вы уже прочли предыдущую статью, и я не буду описывать все заново. Под хабракатом большие картинки и много текста.
Читать дальше →

9 основных принципов отзывчивого веб-дизайна

Reading time4 min
Views132K

Отзывчивый дизайн — отличное решение проблемы корректного отображения сайта на разных экранах. Однако новичкам зачастую трудно понять основы, обучаясь только по книгам/статьям. С каждым днём появляется всё больше различных устройств, имеющих разные размеры экрана, поэтому создание дизайна в пикселях и только для настольных компьютеров/смартфонов остаётся в прошлом. Именно поэтому сейчас стоит изучить принципы отзывчивого дизайна — дизайна, совмещающего в себе адаптивность и резиновость (если вы ещё не знакомы с адаптивным дизайном, то эта статья будет хорошим выбором для начала изучения).
Читать дальше →

Python реализация парадигмы event-driven с помощью сопрограмм

Reading time7 min
Views56K
Статья про то, как с помощью расширенных генераторов Python сделать собственную реализацию сопрограмм, переключающихся по получению событий. Простота кода получившегося модуля вас приятно удивит и прояснит новые и мало используемые возможности языка, которые можно получить, используя такие генераторы. Статья поможет разобраться и с тем, как это устроено в серьезных реализациях: asyncio, tornado, etc.
Читать дальше →

Слайдшоу на CSS (Sass)

Reading time7 min
Views28K
Тема, мягко говоря, не новая, существует ряд статей — на Smashing Magazine и в блогах, а так же просто реализации (исходный код, только та часть, которая касается анимации). Но, помимо фатального недостатка, у данных реализаций есть недостатки фактические — первые два варианта не предоставляют управления, а последний хоть и предоставляет, но при переключении слайдов анимация останавливается и её приходится запускать снова. Пожалуй, можно сказать что это фича, но мне хотелось полностью спародировать поведение слайдшоу как если бы оно было написано на javascript (что в итоге всё равно не удалось) — то есть при переклчении анимация продолжается, но начинается с выбранного слайда.
Кому лень читать — сразу конечный результат.


Читать дальше →

Подборка интересных CSS рецептов «Голые пятницы #3»

Reading time4 min
Views49K
голые пятницы

Здравствуй, дорогой читатель хабра!
Сегодня мы поговорим о градиентных границах, режимах наложения, о том, как рациональнее сверстать стандартную иконку меню. А так же откроем для себя заново старое css-свойство visibility и рассмотрим новое медиа-выражение @Supports.
Читать дальше →

Жестокость формулы Циолковского

Reading time7 min
Views50K
Жестокими законы окружающей нас природы можно назвать только в переносном смысле. Мы создали машины, способные освободить нас от уз, удерживающих в гравитационном колодце всё человечество, но управление некоторыми из их аспектов остаётся вне наших сил. Если мы хотим начать наше путешествие по Солнечной системе, то эти ограничения придётся как-то обходить.

Современные ракеты отбрасывают часть собственной массы в виде газа из сопел двигателей, что даёт им возможность двигаться в противоположном направлении. Это реально благодаря третьему закону Ньютона, который был сформулирован в 1687 году. Всему нашему ракетному движению мы обязаны формуле Циолковского 1903 года.


В формуле всего четыре переменных (слева направо): конечная скорость летательного аппарата, удельный импульс ракетного двигателя (отношение тяги двигателя к секундному расходу массы топлива), начальная масса летательного аппарата (полезная нагрузка, конструкция и топливо) и его конечная масса (полезная нагрузка и конструкция).

Как можно изменить одну из переменных, если три другие уже заданы? Это просто невозможно, никакая форма желания, хотения или просьб здесь не поможет.

Именно потери на гравитацию определяют пределы человеческого исследования космоса, и мы вынуждены их учитывать, когда мы выбираем место, куда мы хотим отправиться. Сегодня таких мест не так уж и много. С земной поверхности мы можем оказаться на орбите Земли, с орбиты Земли можно отправиться на поверхность Луны, или на поверхность Марса, или в пространство между Луной и Землёй. Возможны различные комбинации, но с текущим развитием технологий это самые вероятные точки назначения.

Представленные ниже значения не учитывают никакие потери на, к примеру, сопротивление атмосферы, но значения достаточно близки для иллюстрации того, что нужно принять как должное. Это в некотором роде стоимость полёта.
Читать дальше →

Портативная дистрибуция .Net приложений с отчетами Microsoft Report Viewer и Oracle Instant Client

Reading time7 min
Views12K


Довольно часто возникает необходимость или желание отказаться от создания инсталлятора и совершать дистрибуцию приложения, копируя папку с файлами на целевой компьютер. Если вам интересно как создать портативный дистрибутив .Net приложения с отчетами Report Viewer или как портативно скопировать клиента и драйвера для доступа к базе Oracle, прошу под кат. Я постараюсь все подробно объяснить.

В качестве практической части будет рассмотрено создание приложения, отображающего отчеты для торговой системы Супермаг (которая, собственно, и использует базу Oracle).
Читать дальше →

Чем занят центральный процессор, когда он ничем не занят?

Reading time3 min
Views28K
Забавно, но микропроцессоры внутри устройств, на которых вы читаете «Гиктаймс», большую часть времени практически ничего не делают. Этот факт хорошо известен людям, так или иначе связавшим свою жизнь со сферой информационных технологий. Обывателю механика перехода процессора в состояние ожидания и выхода из него известна слабо.

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

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

В Windows этот процесс выглядит как System Idle Process или «Бездействие системы». Процесс бездействия имеет один или несколько потоков, и основной целью его существования является устранение необходимости в специальных условиях в планировщике задач. Если бы его не было, то могла бы возникнуть ситуация, когда нет ни одного доступного для запуска потока, но благодаря постоянной готовности одного или нескольких потоков задачи простаивания, этого не происходит.
Читать дальше →

Information

Rating
4,114-th
Location
Кызыл, Тува (Тувинская Респ.), Россия
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker