Search
Write a publication
Pull to refresh
52
0
Андрей Кравчук @prefrontalCortex

Software Engineer

Send message

Как предупредить об устаревшей версии внутренней утилиты

Reading time2 min
Views819

Представьте себе такую ситуацию:

  • У нас есть внутренняя утилита (скажем, редактор уровней). Время от времени выходят новые версии.
  • Информация хранится в XML или другом древовидном расширяемом формате. При этом мы, как светлые джедаи, следим за совместимостью «снизу вверх», и более поздние версии открывают все ранние проекты.
  • Утилитой пользуются люди нетехнические и не подверженные «синдрому раннего подражателя». Им не обязательно иметь свежайшую версию редактора; главное — стабильную и одинаковую в рамках одного проекта.
  • Время от времени появляются новые функции, в XML для этих функций появляются новые блоки. При этом возможна такая ситуация: пусть над одним проектом работают двое. У одного программа новые блоки поддерживает, у другого — нет. Второй, сохранив проект, просто потеряет эти блоки.

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

Веб Эволюция (Часть 2: Кому будет принадлежать Интернет?)

Reading time7 min
Views1.5K
Будущее — это взгляд настоящего в прошлое

image

Эту статью я хотел бы посвятить вопросу власти и управления Интернет-сообществом. Интернет — это особая область, специфическая. Моря и океаны, земля, воздушное пространство, космос и… Интернет. Так кому же владеть Интернетом? Разделят ли власть национальные государства под эгидой ООН, захватят ли власть корпорации, либо же Интернет будет принадлежать людям? Но если людям — то как это будет выглядеть? Анархия? Свобода пиратства? Или власть организованного гражданского общества? Я опишу два варианта развития событий. И вам решать — какой из них станет реальностью. А также расскажу о новой социальной концепции — «профократии».
Узнать будущее

Возьми Python с собой

Reading time5 min
Views36K
Думали ли вы (в очередной раз подготавливая среду для Python) о том, как было бы здорово, если бы не приходилось настраивать с нуля рабочее окружение (да ещё и под разными операционными системами), а можно было бы сесть и просто начать писать? Я случайно открыл для себя pythonanywhere.com — сервис, позволяющий вести разработку на Python онлайн, прямо в браузере. Под катом — описание сервиса с картинками и видео.
Читать дальше →

Прогнозирование финансовых временных рядов

Reading time8 min
Views86K
Введение

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

Китайцы ворвались на рынок мини-компьютеров

Reading time1 min
Views34K


У Raspberry Pi и Cotton Candy появился китайский конкурент. Компьютер размером с флешку стоит 74 доллара — как раз посередине между Raspberry Pi (25 — 35 долларов) и Cotton Candy (200). Внутри — одноядерный процессор ARM Cortex A8 AllWinner A10 1.5GHz, графический чип Mali 400, 512 мегабайт DDR3 RAM и 4 гигабайта встроенной флеш-памяти. Есть полноразмерный слот USB, microUSB, кардридер micro TF, порт HDMI и беспроводной модуль WiFi 802.11b/g. Размеры «китайца» — 8.8 х 3.5 х 1.2 см, вес — 200 граммов.
Читать дальше →

Deployment вашего софта для OS Inferno

Reading time5 min
Views1.5K
К сожалению, встроенного механизма для распространения и установки дополнительного софта в OS Inferno нет. Если вы написали модуль для Limbo или полноценное приложение, и хотите им поделиться, то вариантов его распространения немного:
  1. просто выложить ваши файлы на любом сайте, и предоставить пользователям вручную устанавливать их в свою систему куда и как угодно
  2. использовать такие же mkfile/mkconfig файлы какие используются стандартными модулями и приложениями в /appl/

Как вы понимаете, первый вариант — это, фактически, не вариант. :) Это возврат назад, в пещеры. Второй вариант используется, например, для всего софта в репозитории mjl. Но и у этого подхода есть неприятные ограничения, вызванные тем, что ваши файлы в результате просто копируются в системные каталоги /dis/, /module/, etc. (точно так же, как стандартные модули и приложения из /appl/):
  • если используется *nix как host OS, и Inferno установлена общесистемно root-ом или менеджером пакетов вашего дистрибутива, то для установки дополнительных модулей/приложений потребуются права root (либо sudo mk в host OS, либо sudo emu и нативный mk)
  • глобальная установка неудобна, если хочется для своего приложения использовать модифицированную версию этих модулей/приложений
  • глобальная установка неудобна, если разным приложениям нужны разные версии одного и того же модуля (mjl решает эту проблему традиционным для *nix способом добавляя номер major версии к имени модуля, что не очень элегантно и приводит к именам вроде «util0.m»)
  • деинсталляция превращается в нетривиальную операцию, что в конечном итоге приводит к замусориванию системных каталогов
  • имена модулей/приложений разных разработчиков могут конфликтовать (впрочем, эта проблема есть и в *nix/win, и её можно обойти используя подкаталоги в /dis/ и /module/ с именем разработчика или его сайта)

Я хочу предложить альтернативный подход, разработанный по мотивам DJB'шного slashpackage. Update: этот подход был недавно принят разработчиками инферно, так что его уже можно считать не альтернативным, а официальным. :)
Читать дальше →

Подготовка ваших приложений Inferno к standalone установке

Reading time4 min
Views2.6K
Итак, вы написали некое приложение на Limbo, и хотите установить его на другую машину, или распространять через интернет. Скорее всего, там где будет устанавливаться это приложение OS Inferno не установлена. Это горько, но более чем вероятно. :) Что же делать? Обучать пользователей вашего приложения устанавливать и настраивать у себя OS Inferno? Включать полную инсталляцию Inferno (до 250 MB) в архив с каждым вашим приложением? Нет, всё гораздо проще!

Давайте посмотрим, как можно урезать Inferno до минимума, необходимого для работы вашего приложения. Для этого надо разобраться, что происходит при запуске emu — как загружается OS Inferno.
Читать дальше →

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

Reading time6 min
Views14K
Идея написать подобный пост у меня появилась давно; в некоторых кописрачах я прямым текстом писал, что копирайт убивает классическое искусство и обещал раскрыть этот тезис позже. Долгое время меня останавливало то, что на Хабре такой топик вряд ли будет сильно интересен. Но, после некоторых раздумий, я пришёл к выводу, что проблема «копирайт — искусство» шире собственно классической музыки и литературы и затрагивает многие куда более приземлённые вещи. Например, игровую индустрию.

Если мы посмотрим внимательно на жанровое разнообразие в игровой индустрии (сразу оговорюсь, я имею в виду сюжетные single-player игры, не касаясь mmorpg и казуальщины), то мы обнаружим, что оно существенно деградировало по сравнению с 90-ми годами. Жанр квеста исчез совсем, TBS находится на грани вымирания. Существенно сократилось поголовье классических RPG типа Baldur Gate, Planescape Torment (т.е. таких RPG, где надо думать головой при билде персонажа). Стало значительно меньше игр с оригинальной игровой механикой (типа Settlers I-II). Собственно, за меня здесь уже всё сказали, см. картинку слева.

Большая часть современных игр — это какая-то помесь RPG от первого лица, шутера и аркады. При этом, что характерно, на разработку этих игр тратится очень много денег, так что проблема явно не в желании издателя сэкономить. Ровно то же самое произошло и с музыкой: всё многообразие жанров (опера, симфония, соната, фуга, etc.) в классическом искусстве деградировало ровно до одного — песни. И, если я не ошибаюсь в своих предположениях, то очень скоро с геймдевом произойдёт то же самое.

Собственно, если некоторые студии перестанут регулярно выкапывать труп стюардессы (см. Might & Magic Heroes VI, Civilization V, Diablo 3, etc), то это может произойти прямо завтра. Почему же? Что общего у геймдева 90-х и классической музыки?

А вот что

Вам больше ничего не принадлежит

Reading time6 min
Views11K
Предисловие переводчика

После запуска Google Drive по интернету прокатилась очередная волна недовольства условиями использования сервисов Google. На самом деле проблема TOS присуща практически всему современному интернету. Мне показалась интересной статья, пусть не бесспорная и не слишком глубокая, но доступно описывающая ситуацию.

Вам больше ничего не принадлежит

Не переживайте об условиях использования Google Drive, посмотрите на условия использования у всех сервисов. В интернете мы с вами — товары на распродаже.

Вдумчиво ли вы читали условия использования (TOS) на сайтах вроде Google или Facebook? Или спрошу по-другому: читали ли вы условия использования на достаточном количестве сайтов? Если да, вы легко узнаете пример: после более или менее длительного предисловия, напоминающего прочистку горла, большинство условий подходят к печальному пункту:

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

Для большинства людей этот пункт — самый значимый. Это как раз то место, где каждая компания, с которой вы общаетесь в онлайне — Facebook, Pinterest, Microsoft или, как в вышеприведенном случае, Google — объясняет вам, прямо в ваше простоватое лицо, что загружая ваш контент, вы его отдаете. И хотя этот отрывок написан наиболее ясно, вас не покидает чувство, что вы стали жертвой мошенничества. Именно он “достает” вас в интернете.
Читать дальше →

Устраиваемся программистом за рубежом

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

Обзор клавиатуры Razer BlackWidow Ultimate

Reading time10 min
Views88K
Можете даже не смотреть этот пост, если лет 10 назад у вас не было “тёплой ламповой” клавиатуры с механическими клавишами. А вот если была и вы скучаете по ней — заходите под кат, “погреетесь” =) Впрочем, я почти уверен, что “такая” клавиатура была у всех и мне не придётся объяснять, в чём её прелесть. Поэтому под катом — обзор одной механической новинки.



C маленьким бонусом!
Читать дальше →

Kickstarter: статистика народного финансирования

Reading time1 min
Views9K
Разработчик Бенджамин Джексон (Benjamin Jackson) написал скрипт и собрал информацию по всем проектам Kickstarter с апреля 2011 по апрель 2012 года.

Kickstarter — площадка для «народного финансирования» интересных идей и стартапов за комиссию в 5%. Третий год бизнеса оказался вполне успешным: профинансировано проектов на $119,6 млн, заработок Kickstarter составил около шести миллионов.

Под катом — список самых успешных проектов Kickstarter, а также любопытная статистика по количеству собранных денег.
Читать дальше →

Машинное восприятие времени, если бы наносекунды были секундами

Reading time2 min
Views7.8K
Давайте сразу обговорим масштаб времени. Процессор вашего компьютера живёт наносекундами: большинство CPU может сделать несколько вещей за одну наносекунду — в основном, простую математику и сравнения. Чтобы облегчить восприятие, предположим, что вы являетесь процессором и вместо наносекунд живёте и работаете секунда за секундой. Для ясности, применим эту метафору на одноядерном процессоре.

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

Практическая биоинформатика

Reading time5 min
Views11K
    Обнаружил жесткую нехватку информации по биоинформатике в русском сегменте. Не знаю, уж, востребована она или нет, но хочу предоставить на суд читателя вводную часть, которую можно назвать практическая биоинформатика, которой мне очень не хватало для ознакомления с предметом. В этой главе я хочу описать путь, который пришлось пройти мне до настоящего момента, когда я уже не шарахаюсь от фраз: вот вам FASTQ файл и постройте мне bed graph для genome browser. Чтобы в дальнейшем вести разговор об интересном, хочу по диагонали пройтись по определениям и программам первичной обработки данных, без которых трудно говорить на одном языке.
Читать дальше →

Как я патентовал программу (интернет-сервис)

Reading time3 min
Views43K
Программу можно защищать как полезную модель (систему) и как способ.

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

Теория и Практика Поиска Работы в Канаде (часть первая)

Reading time4 min
Views7.9K
Предисловие

Искренне уповаю на то, что эти заметки могут вырасти в полноценный цикл статей по поиску работы в Канаде, если достаточное количество читателей сочтет данный труд полезным.

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

Вот это как раз следует прочитать обязательно!

Я сам из тех самонадеянных персон, которые любят пропускать вступление!

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

Бизнес-аналитика: «Как правильно написать список требований к системе?», Алистер Коберн, обзор часть 1

Reading time4 min
Views9.1K
Книга на мой взгляд очень интересная, по секрету поделюсь, что я прочитала ее не с начала, скорее — с конца — в начало, поскольку все самое интересное, включая словарь и сферы применения в рамках сбора требований, все это написано как раз в конце книги. Даны четкие рекомендации как составить список требований и описать систему с разной степенью детализации, начиная от общей концепции, как должно работать приложение, до постраничного составления сценариев.
Для чего она нужна — чтобы лучше понимать, что все-таки делают исполненные очей бизнес-аналитики, когда приходит запрос — хочу сайт, как там по ссылке.
Читать дальше →

Коллаборационный подход в машинном творчестве

Reading time5 min
Views3.8K

Введение


Природа человеческого творчества изучена ещё меньше, чем природа интеллекта. Тем не менее, машинное творчество, как направление в искусственном интеллекте, существует. Здесь поставлены проблемы написания компьютером музыки, литературных и живописных произведений, а создание реалистичных образов уже широко используется в кино и индустрии игр. Созданные системы позволяют производить конкретные образы, легко воспринимаемые человеком, что особенно полезно для интуитивных знаний, проверка которых в формальном виде требует значительных умственных усилий [1].
Под катом вас ждет краткий обзор предметной области, предлагаемый мной подход к написанию музыки компьютером и немного математики.
Читать дальше →

Некоторые идеи написания искуственного интелекта для шахмат

Reading time7 min
Views20K
К сожалению, для шахмат пока нет лучших алгоритмов, чем перебор очень многих позиций. Правда, перебор порядком (и не одним) оптимизированный, но все же это большой перебор. Для поиска ответного хода строится дерево с исходным ходом в корне, ребрами — ходами-ответами и узлами — новыми позициями.

image

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

Правило Хебба: «универсальный нейрофизиологический постулат» и великое заблуждение математиков

Reading time12 min
Views64K

Введение


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

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

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

Information

Rating
10,478-th
Location
Подгорица, Подгорица, Черногория
Works in
Date of birth
Registered
Activity

Specialization

Software Developer, Fullstack Developer
Senior
From 5,000 €
Lisp
Clojure
Unix
Linux
Docker