Как стать автором
Обновить
47
0

Здесь могла бы быть моя специализация

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

Написание бота для мессенджера Tox

Время на прочтение12 мин
Количество просмотров19K
На фоне общей увлеченности созданием ботов для Telegram я бы хотел рассказать об API не очень широко известного мессенджера Tox и показать на примере простого echo-бота, как можно так же легко и быстро создавать собственных.

image

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

Ускоренный курс по нотациям в теории языков программирования

Время на прочтение10 мин
Количество просмотров32K
Программисты часто сталкиваются с проблемами чтения математических нотаций, когда пытаются разобраться с теоретическими основами какого-либо языка программирования. Также с ними толкнулся и я в своих теоретических изысканиях. К счастью, мне очень помогла замечательная статья Джереми Сиека (Jeremy Siek), чьим переводом я хочу с вами поделиться. Надеюсь она поможет многим программистам-«не математикам».
Читать дальше →

Интернет как новое огораживание

Время на прочтение6 мин
Количество просмотров15K
Предлагаю читателям Geektimes перевод публикации «The Internet as New Enclosure». Перевод был прислан в песочницу на Хабр, пролежал там довольно долгое время и лежал бы и дальше, недоступный широкой аудитории, однако его достали модераторы и перенесли сюда.

image

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

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

Всеобщее участие и децентрализация внезапно стали мейнстримом с появлением общедоступных цифровых медиа. Во многих отношениях, Интернет представлял из себя более раскрепощающее и укрепляющее самооценку пространство для новых методов коммуникации. Поскольку его базовая модель была разработана исследователями, финансируемыми военными, а не частным сектором, он проектировался для того, чтобы приносить пользу, а не прибыль. По сей день, большая часть Интернета остаётся своего рода «Диким Западом», в котором затруднительно следить за исполнением традиционного вещного права. Возможность делиться материалами бесплатно и напрямую с другими пользователями оказала огромное воздействие на некоторые отрасли, в то время как коллаборативные форматы вроде Википедии и ПО с открытым исходным кодом показали, как просто люди могут удовлетворять свои потребности без частной собственности. Корпорации по-прежнему ищут способы делания денег в Интернет кроме как через онлайн-торговлю и рекламу.

image

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

Богатый, разнообразный, свободный веб, который я так любил, за годы, проведенные мной в Иранской тюрьме просто умер. Почему никто не остановит это?

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

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

Вычислите длину окружности

Время на прочтение6 мин
Количество просмотров90K
«Пожалуйста, напишите на C++ функцию, которая получает диаметр круга как float и возвращает длину окружности как float».

Звучит как задание на первой неделе курса по C++. Но это только на первый взгляд. Сложности возникают уже на первых этапах решения задачи. Предлагаю рассмотреть несколько подходов.

Студент: Как вам такой вариант?

#include <math.h>
float CalcCircumference1(float d)
{
    return d * M_PI;
}

Преподаватель: Да, этот код может нормально откомпилироваться. А может и нет.
Читать дальше →

Почтовый сервер на собственном сайте через sendmail

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

Форматы файлов для программ на FASM под Windows

Время на прочтение6 мин
Количество просмотров24K
При создании программы на ассемблере (для примера будет приведён FASM) из-под ОС Windows возникает вопрос о том, какой выбрать формат файла.
Для определения формата создаваемого исполняемого файла используется директива «format» со следующим за ним идентификатором формата.
Под катом краткое описание COM-программы и EXE-программы форматов MZ и PE с шаблоном программ (в виде традиционного «Hello World!»).
Читать дальше →

Документируем код эффективно при помощи Doxygen

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


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

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

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

Обработка фотографий текста с помощью Gimp

Время на прочтение2 мин
Количество просмотров16K
Здесь я предложу несколько вариантов решения этой задачи. Основная проблема фотографий это неравномерность освещенности страницы, когда в центре яркость больше, а по краям меньше или что-либо подобное. Так же часто необходимо повысить контрастность текста по сравнению со страницей. При обычной коррекции Уровней некоторые части изображения получаются засвечены, а некоторые наоборот слишком тёмные. Все методы более или менее решают эти проблемы.

В качестве материала для обработки я взял эту страничку(Предварительно обрезав всё лишнее):
Читать дальше →

Встраиваем бэкдор в публичный ключ RSA

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

Привет, %username%!
Когда я увидел, как это работает, сказать, что я был в шоке — ничего не сказать. Это довольно простой трюк но после прочтения этой статьи вы больше никогда не будете смотреть на RSA по-прежнему. Это не взлом RSA, это нечто, что заставит вашу паранойю очень сильно разбухнуть.
Читать дальше →

Curve25519, EdDSA и Poly1305: Три обделенных вниманием криптопримитива

Время на прочтение2 мин
Количество просмотров40K
Есть такой очень хороший товарищ по имени Daniel Julius Bernstein. Математик, программист и спец по компьютерной безопасности. Его хэш CubeHash чуть не дотянул до третьего раунда SHA-3, а потоковый шифр Salsa20 попал в шорт лист проекта eStream. А еще он автор культовой в узких кругах криптобиблиотеки NaCl, о трех штуках из которой я бы хотел вкратце рассказать.
Читать дальше →

Игра про автора systemd — Леннарта Поттеринга

Время на прочтение2 мин
Количество просмотров22K
Пока вокруг внедрения systemd в различные дистрибутивы разгораются нешуточные страсти, вплоть до покидания постов в совете, как это было с Debian, некоторые разработчики вместо бесплодных и жарких баталий по переписке занимаются полезным делом.

Кто-то внедряет systemd, кто-то несогласный делает форки, а кто-то — игры.


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

Именованные аргументы функции в C

Время на прочтение3 мин
Количество просмотров15K
В некоторых языках существует возможность вызова функции с именованными параметрами. Такой способ позволяет указать аргумент для определённого параметра, связав его с именем параметра, а не с позицией. Это возможно, например, в C# или Python.

Рассмотрим «игрушечный» пример на Python с использованием именованных аргументов:

#вычислим объем параллелепипеда
#если значение стороны не указано, то считаем что оно равно единице
def volume(length=1, width=1, height=1): 
  return length * width * height; 
print(volume())                            # V = 1 
print(volume(length=2))                    # V = 2 
print(volume(length=2, width=3))           # V = 6 
print(volume(length=2, width=3, height=4)) # V = 24

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

Ниже я покажу, как можно сымитировать использование именованных аргументов в C.
Читать дальше →

Xargs: многообразие вариантов использования

Время на прочтение7 мин
Количество просмотров145K
xargs

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

Сначала мы рассмотрим принцип работы xargs и разберем примеры попроще, а затем перейдем к разбору сложных и интересных кейсов.
Читать дальше →

Маленькие секреты большой экономии

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

Почему 16 байт достаточно для сохранения игры, и другие мелочи


Пятьдесят и сто лет спустя у программистов будут всё те же проблемы: им будет очень сильно не хватать объёма доступной памяти для реализации всего, что хочется.

25 лет назад игровые картриджи содержали 64—128 килобайтов памяти, но каким-то образом этого объёма хватало, чтобы уместить игру на десятки часов геймплея. Сегодня 128 килобайт — это размер маленькой JPEG-картинки, а о том, что доступно в современном бытовом компьютере, в эпоху Super Mario Bros. даже не приходилось мечтать.

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

Стимпанк-компьютер Альберта Майкельсона

Время на прочтение2 мин
Количество просмотров14K
Оказывается, ещё в 19 веке существовали вычислительные машины, способные осуществлять сложнейшие математические расчёты. Один из уникальных экземпляров — гармонический анализатор Альберта Майкельсона. Прибор выполнял преобразование Фурье. Эта функция сегодня широко используется в информатике, обработке сигналов, физике, теории чисел, комбинаторике, теории вероятностей, криптографии и других областях.

В честь 100-летия гармонического анализатора Майкельсона опубликована бесплатная электронная книга с великолепными иллюстрациями, где описывается принцип действия этого замечательного прибора.


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

В мире математических парадоксов

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

Доброго времени суток, уважаемое хабрасообщество.

Сегодня я хотел бы затронуть такую увлекательную тему, как математические парадоксы. По данной теме на хабре уже было опубликовано несколько замечательных статей (1,2,3,4,5), но в математике интересные парадоксы этой выборкой далеко не исчерпываются.

Поэтому попробуем рассмотреть другие занимательные парадоксы (а некоторые и «не совсем» парадоксы), которые пока еще не получили здесь должного освещения.
Читать дальше →

Как работают ленивые вычисления

Время на прочтение10 мин
Количество просмотров45K
Маленькая Лямбда решила, что уборку в комнате можно отложить и на потом.

Ленивые вычисления — часто используемая методика при исполнении компьютером программ на Haskell. Они делают наш код проще и модульнее, но могут вызвать и замешательство, особенно когда речь заходит об использовании памяти, становясь для новичков распространённой ловушкой. Например, безобидно выглядящее выражение
foldl (+) 0 [1..10^8]
потребует для своего вычисления гигабайты памяти.

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

Тема ленивых вычислений рассматривалась во многих учебниках (например, в книге Саймона Томпсона «Haskell — The Craft of Functional Programming»), но информацию о них, кажется, всё ещё проблематично найти в сети. Надеюсь, моё руководство посодействует решению этой проблемы.

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

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

О диагонали квадрата

Время на прочтение4 мин
Количество просмотров54K
Введение в оборот комплексных чисел было далеко не первой революцией в понимании человеком природы числа. За две тысячи лет до этого мощнейшее потрясение испытал мир древнегреческой математики.

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

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

Как растаращить class-файл

Время на прочтение4 мин
Количество просмотров45K
Обычно при компиляции Java-файла получаются .class-файлы примерно того же размера, что и исходник. Меня заинтересовало, можно ли по небольшому исходнику сделать .class-файл, который больше, сильно больше исходника.

Можно поискать какие-то короткие конструкции языка, которые компилируются в длинные цепочки байткода, но линейный прирост меня не устраивал. Я сразу подумал про компиляцию finally-блоков: про неё уже писали на Хабре. Если вкратце, то для каждого finally-блока при непустом try-блоке создаётся минимум два варианта в байткоде: для случая нормального завершения try-блока и для случая завершения с исключением. В последнем случае исключение сохраняется в новую локальную переменную, выполняется код finally, затем исключение достаётся из локальной переменной и перебрасывается. А что если внутри finally снова разместить try-finally и так далее? Результат превзошёл все ожидания.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность