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

Фотограф-любитель, фронтенд тимлид

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

Python. Неочевидное поведение некоторых конструкций

Время на прочтение4 мин
Количество просмотров34K
Рассмотрены примеры таких конструкций + некоторые очевидные, но не менее опасные конструкции, которых в коде желательно избегать. Статья рассчитана на python программистов с опытом 0 — 1,5 года. Опытные разработчики могут в коментах покритиковать или дополнить своими примерами.
Читать дальше →
Всего голосов 66: ↑59 и ↓7+52
Комментарии53

Эллиптическая криптография: теория

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

Привет, %username%!
Недавно на хабре была опубликована очень спорная статья под названием «Эксперты призывают готовиться к криптоапокалипсису». Честно говоря, я не согласен с выводами авторов о том, что «голактеко опасносте», все скоро взломают и подорожает гречка. Однако я хочу поговорить не об этом.
В комментариях к той статье я высказал мнение, что кое в чем докладчики правы и переходить на эллиптическую криптографию уже давно пора. Ну в самом деле, кто-нибудь видел в интернете ECDSA сертификат? Хотя стандарту уже без малого 13 лет, мы продолжаем по старинке использовать старый добрый RSA. В общем сказал я это, и как это часто бывает, задумался а так ли необходим переход на «эллиптику»? Да и что это за зверь такой эллиптическая криптография? Какие имеет плюсы, минусы, тонкости. Одним словом, давайте разбираться.
Читать дальше →
Всего голосов 140: ↑133 и ↓7+126
Комментарии72

Анонимный браузер своими руками или Hide your ass yourself

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

Этот небольшой топик расскажет о том, как просто и быстро сделать свой браузер, с небольшими добавками, которые помогут нам остаться анонимным в сети. Всю черную работу за нас сделает Qt, а именно его модуль QtWebKit. Мы лишь добавим в нужные места строки, подменяющие http-заголовки наших http- запросов. Это позволит оставаться анонимными при пассивном анализе http-запросов. Также переопределим navigator, что позволить оставаться анонимными для javascript-ов при активной идентификации. Для определенности обозначим основные параметры, с помощью которых нас можно идентифицировать в сети – вот именно их мы и будем подменять. Первое – это конечно IP адрес, тут все просто – используем прокси. Второе – любые заголовки http-запроса (user-agent будет наиболее интересен: его значение нужно подменять как в заголовках http-запросов, так и в проверке javascript-ами). Также реализуем возможность редактировать и подставлять свои сookies для определенных сайтов, раз уж есть такая возможность. И дополним все это встроенным редактором для подменяемых параметров с возможностью их сохранения для последующего использования.
Читать дальше →
Всего голосов 59: ↑53 и ↓6+47
Комментарии34

Учим Python качественно

Время на прочтение4 мин
Количество просмотров1.4M
Здравствуйте всем!

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

Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?
Читать дальше →
Всего голосов 86: ↑59 и ↓27+32
Комментарии88

SOINN — самообучающийся алгоритм для роботов

Время на прочтение23 мин
Количество просмотров52K
Пост №1. Что такое SOINN

робот SOINN
SOINN – это самоорганизующаяся инкрементная нейронная сеть. Структура и алгоритм такой нейронной сети повидимому хорошо себя зарекомендовал в японской лаборатории Hasegawa (сайт — haselab.info), потому что он в итоге был взят за основу и дальнейшее развитие алгоритмов искусственного интеллекта шло путем небольших модификаций и надстроек к сети SOINN.

Базовая сеть SOINN состоит из двух слоев. Сеть получает входной вектор и на первом слое после обучения создает узел (нейрон) – определяющий класс для входных данных. Если входной вектор похож на существующий класс (мера похожести определяется настройками алгоритма обучения) то два самых похожих нейрона первого слоя объединяются связью, либо если входной вектор не похож не на один существующей класс, то в первом слое создается новый нейрон, определяющий текущий класс. Очень похожие нейроны первого слоя, объединенные связью, определяются как один класс. Первый слой является входным слоем для второго слоя, и по аналогичному алгоритму, с небольшим исключением, создаются классы во втором слое.

На основе SOINN созданы такие сети, как (далее представлены название сети и описание сети от ее создателей):
Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии17

О молекулах РНК

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

О рибонуклеиновых кислотах (РНК)



Для поддержания жизни в живом организме происходит множество процессов. Некоторые из них мы можем наблюдать — дыхание, прием пищи, избавление от продуктов жизнедеятельности, получение информации органами чувств и забывание этой информации. Но большая часть химических процессов скрыта от глаз.
image
Приоткроем завесу тайны
Всего голосов 28: ↑15 и ↓13+2
Комментарии15

Замена Dropbox на BitTorrent Sync + Raspberry Pi

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


Для Raspberry Pi нашли ещё одно полезное применение. Мини-компьютер отлично справляется с бэкапом и синхронизацией файлов между различными устройствами. К нему можно подключить внешний диск или большую флэшку, и RPi готов работать круглосуточно, синхронизируя файлы с компьютеров, ноутбуков и Android-устройств (скоро выйдет и клиент для iOS). Незачем платить за облачный сервис, если можно сделать такое же удобное «облако» у себя дома, и бесплатно.

Американский программист Джек Минарди опубликовал пошаговую инструкцию, как запустить BitTorrent Sync на Raspberry Pi.
Читать дальше →
Всего голосов 89: ↑79 и ↓10+69
Комментарии62

Кроссплатформенное программирование под современные мобильные Windows-платформы

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

Актуальность


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

Symbian, лидировавшая по всем показателям еще пару лет назад, постепенно с рынка ушла. Blackberry – это, в основном, бизнес-пользователи, и, в основном, в Америке; в остальном мире она не так распространена. Тенденции показывают, что третье место сейчас достается Windows Phone. И вот тут у каждого, будь то частный разработчик или компания, встает вопрос:



Читать дальше →
Всего голосов 88: ↑56 и ↓32+24
Комментарии16

Видео лекций курса «Операционные системы» с Алексеем Брагиным в МГТУ им. Баумана

Время на прочтение1 мин
Количество просмотров82K
Месяц назад здесь было объявлено, что image Алексей Брагин теперь читает авторский курс лекций об операционных системах. С тех пор Алексей успел провести уже несколько занятий, которые были записаны на видео. Думаю, вполне логичным шагом будет поделиться этими записями с сообществом. Что нам стоит поступить так же как, к примеру, сделал MIT?

Прошу принять во внимание, что это пилотный проект. А так конструктивная критика приветствуется, пожелания принимаются.
Приносим извинения за качество звука, смотреть лучше в HD и погромче.

Читать дальше →
Всего голосов 107: ↑94 и ↓13+81
Комментарии65

Философия математики

Время на прочтение5 мин
Количество просмотров71K
image Карл Гаусс, в своё время, назвал математику царицей всех наук, отдавая ей особое место в сфере человеческого знания. Действительно, совершенно непохожая на другие науки, она скорее служит для них языком или методом изучения. Являясь, пожалуй, самой строгой из всех наук, она не имеет собственного строгого и общепринятого определения. На протяжении всей своей истории, преобразуясь сама, преобразовывалось и понятие о математике. Учёные, в течении всего развития математики, смогли составить скорее не определения математики, а набор афоризмов характеризующий её или представления о ней.
«Математика — это язык, на котором написана книга природы»(Г. Галилей)
«Математика – это наука о необходимых заключениях»(Б. Пирс)
«Математика – это строгий язык, служащий для перехода от одних опытных суждений, к другим»(Н. Бор)
«Математика – это иерархия формальных структур»(Н. Бурбаки)
«Математика — это наука о количественных отношениях и пространственных формах действительного мира»(А. Колмогоров)
— это лишь малая часть суждений, показывающая разнородность представлений о математике. Помимо вопроса определения математики, интересными и дискуссионными являются вопросы о её природе(основаниях), её методологии, целях и связи с реальным миром. Ответы на них также неоднозначны и значительно изменялись со временем, создавая различные философские течения.
Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии16

Путешествие через вычислительный конвейер процессора

Время на прочтение16 мин
Количество просмотров135K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →
Всего голосов 160: ↑159 и ↓1+158
Комментарии43

Отчет за полугодие. Компьютерная литература ИД Питер

Время на прочтение9 мин
Количество просмотров12K
Всем привет! В этом посте мы хотели бы подвести итог за полугодие и рассказать о наших переводных книгах, вышедших в этом году.


Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии26

Скрываем процесс в диспетчере задач Windows

Время на прочтение5 мин
Количество просмотров115K
Intro

Часто анонимность и скрытность играют ключевую роль в успешном выполнении каких-либо действий как в реальности, так и в виртуальности, в частности в операционных системах. В данной статье речь пойдет о том, как стать анонимным в OS Windows. Вся информация предоставлена лишь для цели ознакомления.

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


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

Что использовалось для исследования:

1) Spy++ от Microsoft ( для изучения иерархии дочерних окон Диспетчера задач )
2) OllyDBG для просмотра функций, используемых диспетчером для получения снэпшота процессов.
3) Собственно, сам taskmng.exe( Диспетчер задач )
Читать дальше →
Всего голосов 58: ↑26 и ↓32-6
Комментарии16

Russian Code Cup 2013 – разбор задач 2-го квалификационного раунда

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

Вот и прошел второй квалификационный раунд Russian Code Cup. Майские праздники, многие разъехались кто куда… Однако для того чтобы пройти в отборочный тур, участникам второго квалификационного раунда пришлось побороться.
Как и в предыдущем раунде, зарегистрировавшихся было больше, чем приславших решения. Поэтому в числе принявших участие мы отражаем только тех, кто прислал хотя бы одно решение.
Майская жара и 5 задач, которые требуется решить за 2 часа:
  • задача A. Молекула
  • задача B. Морской бой
  • задача C. Пробка
  • задача D. Таблица
  • задача E. Космическая экспедиция

Условия и решение — под катом.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+18
Комментарии8

Подключение SkyDrive в Linux

Время на прочтение3 мин
Количество просмотров23K
SkyDrive&Ubuntu

Доброго времени суток.

Хочу обратить ваше внимание на пару скриптов для работы со SkyDrive в Linux. Скрипты написаны на Python и скорее всего будут работать в любой *NIX системе, и не только *NIX. Первый предоставляет возможность работать с аккаунтом в командной строке, второй, модуль для FUSE, позволяет подключить содержимое SkyDrive к файловой системе. Проект практически нигде не упоминается. Сам я на него наткнулся случайно, после того, как не смог подключить SkyDrive с использованием недокументированного WebDAV. И стал искать другой способ подключения, исходя из предположения, что, раз у SkyDrive есть API, то кто-нибудь должен этим воспользоваться.
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии9

Проектирование собственного компьютера. Часть 1

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

Вступительная часть. «Наполеоновские планы»


Почти год назад у меня возникла мысль понять, как устроен компьютер, как он работает. Ну и конечно же, появилось огромное желание создать свой собственный на элементарных логических элементах (если быть точнее — на транзисторах).
Тогда у меня было только маленькое представление о его работе: я знал, что вся цифровая электроника построена на логических элементах (для меня это было, как постулат), но никак не мог сообразить, как исполняется программа, суммируются числа, зачем прерывания… Этот перечень вопросов можно продолжать и дальше, но сейчас не об этом.
Определим характеристику разрабатываемого компьютера:
  • Вид логики: двоичная логика
  • Разрадность шины данных: 32 бита
  • Разрядность шины адреса: 24 бита (можно адресовать 16 777 216 32-разрядних чисел)
  • Исполнение основных арифметических, логических, побитовых операций над данными, а также операций над ячейками памяти (mov, xchg)
  • Реализация функции выделения памяти (предусмотрено 4 ассемлерных инструкции)
  • Обработка данных напрямую и с помощью указателей
Читать дальше →
Всего голосов 58: ↑53 и ↓5+48
Комментарии47

Запускаем OpenGL на python3 (ubuntu)

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

Лирическое отступление


Пару месяцев назад решил я таки изучить Python. Но… только сунувшись во всю эту среду, передо мной встал выбор: учить относительно новый python3 или же python2.7. Выбор пал в сторону python 3, пусть на нём работает лишь малое количество того, что уже есть под python2.7, да и просто интересно было поучаствовать в развитии языка.
Недавно встала потребность визуализации некоторых данных (именно в openGL), поэтому было решено разобраться, что и как, собрать всё воедино и рассказать об этом хабражителям.
Статья ориентирована в первую очередь на новичков в python (таких как я), и написана в стиле «установи то-то и то-то», поэтому просьба старожилам не кидаться тапками и отнестись с пониманием.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии9

Настройка Vim для работы с Python и Django

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


Vim — уникальный по своей гибкости редактор, который при должной настройке может едва ли не идеально удовлетворять все пожелания работающего с ним. Правда эта настройка может продолжаться месяцы, а то и годы, что является и достоинством, и недостатком vim’а. Существует множество статей и туториалов по использованию Vim для разработки на Python и Django, надеюсь мне удастся рассказать что-то новое. В своей статье я постараюсь по минимуму упоминать плагины общего назначения, вроде NERDTree или surround.vim и опишу несколько более специализированных расширений и настроек, которые существенно упростили процесс работы на Python.
Читать дальше →
Всего голосов 65: ↑63 и ↓2+61
Комментарии39

Простой классификатор на PyBrain и PyQt4 (Python3)

Время на прочтение12 мин
Количество просмотров34K
Изучая Python3, я портировал (как смог) библиотечку PyBrain. Об этом я уже писал здесь.
image
Теперь же я хочу немного «поиграть» с данной библиотечкой. Как я уже говорил в предыдущем посте, питон я только начал изучать, так что все написанное в этой статье не стоит воспринимать как Истину. Изучение — это путь, и он извилист.

Задачу поставим перед искусственной нейронной сетью (ИНС) весьма простую — классификацию, а именно: распознавание букв латинского алфавита.

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

Под хабракатом вас ждёт: описание способа подготовки данных на PyQt4, использование модуля argparse, ну и конечно же PyBrain!
Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии29

White-box cryptography в картинках

Время на прочтение4 мин
Количество просмотров11K
Доброго времени суток!

Вы всегда хотели знать о принципах шифрования с открытым ключом, но боялись спросить? Нет? Все равно статья интересная (и даже понятная), а в конце лежит игрушка по мотивам исследовавшегося материала.
Итак, тема — шифрование с открытым ключом, а точнее, White-Box Encrypting. Разница в том, что у «коробки» вместо обычной шифровальной функции некая программа, в которой эта функция и спрятана. Но об этом я расскажу позже, а сначала…

Чтобы узнать, что было сначала, нажми сюда. Да-да, сюда.
Всего голосов 35: ↑26 и ↓9+17
Комментарии31

Информация

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