Как стать автором
Обновить
34
0
Александр @ftynse

Пользователь

Отправить сообщение

Скринкаст: монада Maybe на языке C#

Время на прочтение1 мин
Количество просмотров21K
Небольшая иллюстрация того, как на языке C# реализовать монаду Maybe и зачем это вообще нужно. Смотреть видео рекоммендуется в разрешении 720p.



Сопутствующую статью можно найти тут (англ. яз.). Комментарии приветствуются!
Всего голосов 54: ↑44 и ↓10+34
Комментарии41

Vim+Python. Для начинающих

Время на прочтение1 мин
Количество просмотров13K
Небольшой видеоролик про редактирование кода в vim.
Краткое содержание.
1. Использование аббревиатур.
2. Плагин MRU
3- Плагин tagbar
Сделано с помощью свободного редактора OpenShot — для изготовления видеороликов в домашних условиях он оказался вполне пригоден.

http://youtu.be/eagC7PcGcCk



P.S. В комментариях советуют массу плагинов. Но их такое количество разных, что если у кого-то есть желание написать про них-я не против. Но моё время ограниченно и вынужден ограничиться самым, на мой взгляд, важным.
Всего голосов 65: ↑58 и ↓7+51
Комментарии36

Пользовательские атрибуты в Python

Время на прочтение11 мин
Количество просмотров188K
Вы когда нибудь задумывались о том, что происходит, когда вы ставите точку в python? Что скрывает за собой символ str(“\u002E”)? Какие тайны он хранит? Если без мистики, вы знаете как происходит поиск и установка значений пользовательских атрибутов в python? Хотели бы узнать? Тогда… добро пожаловать!
Читать дальше →
Всего голосов 101: ↑96 и ↓5+91
Комментарии20

viewdoc — удобный доступ к любой документации

Время на прочтение2 мин
Количество просмотров2.3K
Для просмотра разной внешней документации (man/perldoc/pydoc/etc.) в Vim есть множество плагинов и рецептов. Проблема в том, что одни не настраиваются на открытие окон с документацией удобным мне способом, другие не расширяются для поддержки новых источников документации, третьи глючат и написаны слишком криво чтобы их можно было относительно просто пофиксить и выслать патч автору. На днях меня эта ситуация окончательно достала, и я написал плагин viewdoc, решающий все эти проблемы.

Он прост внутри и удобен в использовании, предоставляет единый пользовательский интерфейс для работы с любой документацией (включая встренный :help), умеет определять требуемую документацию по контексту, гибко настраивается, и очень просто расширяется (внешними плагинами или прямо в ~/.vimrc) для добавления новых источников документации. Основной недостаток — тестировался только в linux, может работать в других *nix, точно не будет работать в винде.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии16

Алгоритм Тадао Такаока для нахождения максимальной подматрицы или Maximum Subarray Problem

Время на прочтение5 мин
Количество просмотров11K
Не так давно прошёл конкурс параллельного программирования Acceler8 2011. Суть задачи заключалась в поиске максимальной подматрицы в данной матрице (сумма элементов найденной подматрицы должна быть максимальной). После недолгого «гугления» было найдено, что некий алгоритм Тадао Такаока решает эту задачу быстрее других.

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

Однако всё, что удалось найти, — статьи на английском этого самого Тадао Такаоки (вот одна из этих статей). Пришлось переводить.

Сама идея алгоритма сначала казалась до безобразия простой:
Читать далее про алгоритм
Всего голосов 61: ↑58 и ↓3+55
Комментарии29

Введение в Structure Synth

Время на прочтение3 мин
Количество просмотров3.7K
Structure Synth, Virus
Здравствуй, хабр. Вчера я игрался с новой Ubuntu 11.10 и совершенно случайно наткнулся на такое замечательное приложение, как Structure Synth. Structure Synth уже обсуждался на хабре, а я бы хотел набросать вольно-литературный перевод краткого туториала с официального сайта.
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии9

Functional thinking: Thinking functionally, Часть 2

Время на прочтение9 мин
Количество просмотров5.7K

В первой части серии я начал обсуждение некоторых особенностей функционального программирования, показывая проявления этих идей в Java и других, более функциональных языках. В этой статье я продолжу свой обзор, обращая внимание на функции — объекты первого класса, оптимизации и замыкания. Но основная тема этой статьи — контроль: когда вы его хотите, когда он вам необходим и когда надо просто забить.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии7

Двумерное дерево отрезков (с групповой модификацией элементов)

Время на прочтение4 мин
Количество просмотров17K

Предисловие и постановка задачи


Думаю, многие читатели этого сайта слышали о такой полезной структуре, как дерево отрезков. А если нет, то о нем в интернете можно отыскать множество интересного материала (здесь, статьи на Хабре: раз и два, google, наконец).
Здесь я разберу обобщение дерева отрезков на двумерный случай, причем (в отличие от этой статьи) рассмотрю реализацию дерева именно с поддержкой групповой модификации элементов.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии11

Установка Debian по сети через netboot и ssh

Время на прочтение2 мин
Количество просмотров8.9K
image

Подходит для установки Debian Squeeze и старше. Установщик стандартный для дебиана — debian-installer (сокращенно d-i).

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

Читать дальше →
Всего голосов 37: ↑30 и ↓7+23
Комментарии7

Как работает новый генератор случайных чисел Intel

Время на прочтение10 мин
Количество просмотров58K


Представьте, что сейчас 1995 год и вы собираетесь совершить первую покупку в онлайне. Вы открываете браузер Netscape и прихлёбываете из чашечки кофе, пока главная страница медленно загружается. Ваш путь лежит на Amazon.com — новый онлайн-магазинчик, о которой рассказал вам друг. Когда наступает этап оформить покупку и ввести персональные данные, адрес в браузере меняется с «http» на «https». Это сигнализирует о том, что компьютер установил зашифрованное соединение с сервером Amazon. Теперь можно передавать серверу данные кредитной карты, не опасаясь мошенников, которые хотят перехватить информацию.

К сожалению, ваша первая покупка в интернете была скомпрометирована с самого начала: вскоре обнаружится, что якобы безопасный протокол, по которому браузер установил соединение, на самом деле не очень защищён.
Читать дальше →
Всего голосов 179: ↑170 и ↓9+161
Комментарии113

Opensource-проект с нуля

Время на прочтение2 мин
Количество просмотров22K
Долгое время боялся создавать этот топик, но всё же решился. Надеюсь, что не зря. Периодически на хабре и не только на нём появляются вопросы о том, к какому бы opensource-проекту присоединиться (1, 2, 3, 4, ...etc), ответов на которые к моему удивлению не много. У меня периодически появляется свободное время и хочется поучаствовать в одном из таких проектов. И я пытался, слал pull request'ы в некоторые проекты на гитхабе, их принимали, начинал какие-то свои проекты и так и не доводил их до конца. Но это всё не то…

… Хочется собрать несколько человек, обсудить и создать какой-то интересный проект, пусть без революционной идеи, пусть без новизны, пусть без профита, но свой. Чтобы видеть зарождение с нуля, видеть новые коммиты, добавляющие функциональность, читать чужой код и чужие комментарии, учась чему-то новому, получать опыт, обсуждать, спорить. Хочется потом иметь возможность указать в резюме ссылку на проект, в создании которого я участвовал.
Я пытался искать «opensource проекту требуется разработчик» и ничего актуального не нашёл. То есть нашёл полуразработанные проекты на java, php, но это, опять же, не то. Мои интересы: Python, C/C++, (Boost, LLVM, Qt...).

Наверняка я не один такой, поэтому надеюсь на отклики / идеи / ссылки на интересные проекты в очень зачаточном состоянии. Может быть соберём это всё в одном топике и он будет полезен не только мне.
Читать дальше →
Всего голосов 66: ↑54 и ↓12+42
Комментарии81

Кто разводит рыбок? Или решение загадки Эйнштейна регулярным языком

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



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

Интересно? Прошу под кат.
Всего голосов 121: ↑117 и ↓4+113
Комментарии43

Взлом матановой капчи на C# — это просто!

Время на прочтение4 мин
Количество просмотров41K
В этом топике я хочу вам рассказать о взломе т.н. «матан-капчи», пример которой был представлен в недавнем топике Матановая капча на PHP — это просто!.
Прочитав статью автора об этой замечательной капче, мне захотелось написать программу для её распознавания, как говорится just for fun ;)
Читать дальше →
Всего голосов 184: ↑176 и ↓8+168
Комментарии88

Как применять Linux epoll в Python

Время на прочтение23 мин
Количество просмотров25K
В статье описывается:
  • Примеры использования блокирующих сокетов
  • Преимущества асинхронных сокетов и Linux epoll
  • Примеры асинхронного использования сокетов через epoll
  • Вопросы производительности
  • Исходный код
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии30

Реализация графов и деревьев на Python

Время на прочтение17 мин
Количество просмотров284K
Продолжаем публикацию наиболее интересных глав из книги Magnus Lie Hetland «Python Algorithms». Предыдущая статья расположена по адресу habrahabr.ru/blogs/algorithm/111858. Сегодня же речь пойдет об эффективной работе с графами и деревьями и особенностях их реализации в Python. Базовая терминология теории графов уже обсуждалась (например здесь: habrahabr.ru/blogs/algorithm/65367), так что я не включил часть главы о терминах в эту статью.

Реализация графов и деревьев


Многие задачи, например, задача обхода точек по кратчайшему маршруту, могут быть решены с помощью одного из мощнейших инструментов — с помощью графов. Часто, если вы можете определить, что решаете задачу на графы, вы по-крайней мере на полпути к решению. А если ваши данные можно каким-либо образом представить как деревья, у вас есть все шансы построить действительно эффективное решение.
Читать дальше →
Всего голосов 63: ↑61 и ↓2+59
Комментарии24

ОГО! Светодиодный кубический дисплей 8×8×8 [видео]

Время на прочтение1 мин
Количество просмотров30K
[фото]

Поглядите на этот гиктастический¹ трёхмерный куб светодиодов 8×8×8, созданный пользователем chr на сайте «Instructables»:



Хотите сделать себе такой? Тогда просто последуйте этому *гм* простому DIY-пособию,² и вскорости вы ошеломите своих друзей собственным 3D-LED-кубом!

___________________
¹ В первоисточнике — «geektastic» (от слов «geek» — гик и «fantastic» — фантастический).
² В комментариях опубликован перевод этого пособия, который изготовил sir06Will.
Всего голосов 205: ↑163 и ↓42+121
Комментарии151

Ассемблер для Windows используя Visual Studio

Время на прочтение4 мин
Количество просмотров147K
Многие из нас изучали ассемблер в университете, но почти всегда это ограничивалось простыми алгоритмами под DOS. При разработке программ для Windows может возникнуть необходимость написать часть кода на ассемблер, в этой статье я хочу рассказать вам, как использовать ассемблер в ваших программах под Visual Studio 2005.

image

Создание проекта


В статье мы рассмотрим как вызывать ассемблер из С++ кода и обратно, передавать данные, а также использовать отладчик встроенный в Visual Studio 2005 для отладки кода на ассемблер.
Читать дальше →
Всего голосов 80: ↑63 и ↓17+46
Комментарии31

Проблема трех раскладок в Linux

Время на прочтение2 мин
Количество просмотров15K
Имея одновременно три раскладки (английскую, русскую, украинскую) всегда в них путался, так как отличить их не глядя на индикатор не просто, а при потребности украинской раскладки, добавлять её и убирать каждый раз неудобно. Решается очень просто, расширением русской раскладки четырьмя дополнительными украинскими буквами (є, ї, і, ґ) и апострофом (’). Способ не претендует на уникальность, но здесь никто вроде бы еще не описывал.
Читать дальше →
Всего голосов 67: ↑57 и ↓10+47
Комментарии91

Введение в OCaml: Структура программ на OCaml [2]

Время на прочтение12 мин
Количество просмотров8.2K
[прим. пер.: продолжение перевода, первая статья тут]
тизер к статье с графикой на OCaml

Структура программ на OCaml


Теперь мы потратим немного времени на высокоуровневый анализ некоторых настоящих программ на OCaml'е. Я хотел бы показать вам локальные и глобальные определения, разницу в использовании ;; и ;, модули, вложенные функции, ссылки. Из-за этого мы столкнёмся с множеством концепций OCaml'а, которые пока что не имеют смысла для начинающего изучать OCaml, так как мы не встречали их ранее. Не фокусируйтесь на них, сконцентрируйтесь вместо этого на общем представлении о формате программ и особенностях языка, на которые я буду указывать.

Локальные «переменные» (на самом деле локальные выражения)


Возьмём нашу функцию average на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).

double average (double a, double b)
{
  double sum = a + b;
  return sum / 2;
}

Теперь посмотрим на это для OCaml:

let average a b =
  let sum = a +. b in
  sum /. 2.0;;

Стандартное выражение let name = expression in используется для определения локального именованного выражения и name может быть использовано в дальнейшем вместо expression вплоть до ;;, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in. Просто воспринимайте let ... in так, как будто это один оператор.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии24

Информация

В рейтинге
Не участвует
Откуда
Villebon-sur-Yvette, Essone, Франция
Зарегистрирован
Активность