• Обзор почтовых клиентов под Android, или как я почтовик выбирал



    Доброго времени суток, Хабр (а ныне уже GT).

    Понадобился мне тут почтовый клиент, ибо стандартным на телефоне я пользовался редко (т.к. был дико неудобным), а Яндекс.Почта достала (доканало то, что выйти из неё можно как минимум 3 тапами, а об устаревшем интерфейсе даже говорить не стоит — на момент написания обзора так и было, но клиент неожиданно обновился — под катом). Далее я полез в сеть, в попытках найти какой-нибудь обзор по почтовым клиентам, но стоящего ничего не нашёл (либо я искать не умею). После этого осталось только одно — Google Play Маркет, дабы хотя бы ознакомиться с тем, что сейчас может мне предложить рынок, ибо когда я последний раз смотрел почтовики — это было года 3 назад — мне хватало Яндекс.Почты.

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

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

    Кому интересно — прошу под кат.
    Осторожно, траффик - много картинок!
  • Не-фон неймановский компьютер на базе комбинаторной логики

      Здравствуйте. В этой статье я расскажу про свой хобби-проект не-фон неймановского компьютера. Архитектура соответствует функциональной парадигме: программа есть дерево применений элементарных функций друг к другу. Железо — однородная статическая сеть примитивных узлов, на которую динамическое дерево программы спроецировано, и по которой программа «ползает» вычисляясь.


      Примерно так работает дерево, только здесь для наглядности вычисляются арифметическое выражение, а не комбинаторное; шаг на рисунке — один такт машины.

      Сейчас готов ранний прототип, существующий как в виде потактового программного симулятора, так и в виде реализации на ПЛИС.
      Читать дальше →
    • Twitter-бот на основе цепей Маркова и фраз из сериалов



        Просматривал форумы в поисках вопросов, которые задают python-программистам на собеседованиях и наткнулся на один очень замечательный. Вольно его процитирую: ”Попросили написать генератор бреда на основе марковской цепи n-го порядка”. “А ведь у меня ещё нет такого генератора!” — прокричал мой внутренний голос — “Скорей открывай sublime и пиши!” — продолжал он настойчиво. Что же, пришлось подчиниться.

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

        • Tutorial

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


          Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~5 МБ).

          Введение


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

          Предположим, что у нас есть несколько последовательных метаграмм, скажем:

          мнение-мление-тление-трение-прение-поение-роение-рдение-бдение-биение

          они образуют цепь метаграмм, или цепочку слов.

          Отсюда проистекает игра под названием цепь слов (word ladder), которую придумал в далеком 1879 году Льюис Кэрролл.

          Ясно, что далеко не для каждого начального слова может быть составлена такого рода цепь, а некоторые слова, по-видимому, должны порождать довольно длинные цепи.

          В этом посте мы постараемся проанализировать цепочки слов, которые могут быть построены в русском языке, а также найдем цепочки наибольшей длины.
          Читать дальше →
        • Ищем коды уровней в Prehistorik-2


            В игре Prehistorik 2 не предусмотрены сейвы, но на каждом уровне есть (болтается в воздухе в некотором месте уровня) код уровня. Есть два режима прохождения, Beginner и Expert, код также определяет режим. При старте игры можно начать с первого уровня, а можно ввести код и попасть сразу на соответствующий уровень. На одном и том же компьютере с неизменным окружением коды не меняются, но на разных компьютерах коды, вообще говоря, разные, так что коды, найденные при прохождении и тщательно выписанные на бумажку, станут совершенно бесполезны в другом окружении. Поэтому вместо бумажки лучше иметь программу, которая пишет коды для конкретного окружения. Готовый результат: genpass.com, представляет из себя DOS-программу, которая должна запускаться в том же окружении, что и игра. Альтернативный вариант попасть на нужный уровень из экрана ввода кода: ввести три кода ADDE C0DE F00D либо DEAD C0DE F00D, каждый из трёх кодов сам по себе неверен, но при вводе их в таком порядке четвёртый код — номер уровня от 1 до 10, плюс 10 для режима Expert, приводит сразу на запрошенный уровень.

            Под катом — процесс исследования. Требуется знание ассемблера x86 хотя бы на уровне «читаю со словарём».

            Читать дальше →
          • Гипотеза Бёрча — Свиннертон-Дайера

              Эта примечательная гипотеза связывает поведение функции L там, где в настоящее время неизвестно, определена ли она, и порядок группы Ш, про которую неизвестно, конечна ли она!
              J.T.Tate, The arithmetic of elliptic curves, Inventiones mathematicae 23 (1974)
              Оригинал
              This remarkable conjecture relates the behaviour of a function L at a point where it is not at present known to be defined to the order of a group Ш which is not known to be finite!
              (Краткая справка насчёт актуальности цитаты 40-летней давности: после Уайлса и Ко таки стало известно, что функцию L можно определить на всей комплексной плоскости. Конечность группы Ш в общем случае остаётся неизвестной.)
              Остаётся обсудить возможность ошибки. В качестве предосторожности против внутренних ошибок компьютера можно прогнать все вычисления дважды или делать проверки внутри программы. Более того, компьютеры — в отличие от людей — устроены так, что их ошибки обычно чересчур велики, чтобы их не заметить. Мы уверены, что в наших результатах нет подобных ошибок. С другой стороны, при кодировании замысловатой схемы вычислений в компьютерную программу неизбежны программистские ошибки. Большинство из них обнаруживаются ещё до основных запусков, из-за того, что программа виснет или выдаёт нелепые результаты. Но программа, которую считается работающей, всё ещё может содержать логические ошибки, проявляющиеся при редких стечениях обстоятельств: и действительно, большинство компьютеров подвержено аномалиям, из-за которых те иногда ведут себя не так, как должны по спецификациям. В сущности, наша программа для этапа (ii) оказалась неточной и пропустила очень небольшое количество эквивалентностей, которые должна была найти.

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

              B.J.Birch and H.P.F.Swinnerton-Dyer, Notes on elliptic curves. I, Journal für die reine und angewandte Mathematik 212 (1963)
              Оригинал
              It remains to discuss the question of error. One can take precautions against machine errors either by running all the calculations twice or by checks included in the program. Moreover, machines — unlike human beings — are so designed that the errors they make are usually too gross to be overlooked. We are satisfied that there are in our results no undetected errors of this sort. On the other hand, in translating an elaborate scheme of calculation into a machine program one is bound to make mistakes. Most of these are found before the program is used for production runs; they show up because the program grinds to a halt or produces ridiculous results. But a program which is believed to work may still contain logical errors which only have an effect in rare circumstances: and indeed most computers have anomalies which cause them occasionally not to behave in the way that their specifications suggest. In fact, our program for stage (ii) was imperfect in that a very few equivalences were missed by the machine.

              For these reasons we believe that results obtained from a computer should not be automatically trusted. In some cases they can be checked because they have properties which were not essentially used in the course of the calculation and which would be unlikely to survive if an error had been made. (For example, if a table of a smooth function has been calculated without the use of interpolation, it can be checked by differencing.) But if checks of this sort are not available, results should not be fully trusted until they have been independently reproduced by a different programmer using a different machine. We do not think this sets an unreasonable standard, now that computers are becoming so widely available; and we are satisfied that lower standards have already led to a number of untrue results being published and believed.


              Под катом не будет формулировки гипотезы; знающие выражения вроде «Euler product» и «holomorphic continuation» (и в смысле языка, и в смысле обозначаемых понятий) могут прочитать пятистраничный pdf с сайта института Клэя. Под катом — некоторая попытка пояснить, на каком направлении развития математической мысли вообще находится гипотеза Бёрча — Свиннертон-Дайера. А также — как можно досчитать до больших чисел вроде тех, что показаны на КДПВ, менее чем за секунду.
              Читать дальше →
              • +21
              • 14.2k
              • 8
            • Поиск наилучшей последовательности просмотра списка 250 лучших фильмов с помощью языка Wolfram Language (Mathematica)


                Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~76 МБ).

                Введение


                Некоторое время назад, если быть точным — 515 дней, вышел пост Маттиаса Одисио (Matthias Odisio) под названием “Random and Optimal Mathematica Walks on IMDb’s Top Films” (Случайные и оптимальные блуждания Mathematica по списку 250 лучших фильмов по версии IMDB). В нем рассказывается о том, каким образом можно получить оптимальную последовательность просмотра фильмов из соответствующего списка, основанную на близости жанров фильмов и близости постеров фильмов с точки зрения цвета.
                Читать дальше →
              • За один проход

                  Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
                  С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
                  Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

                  Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

                  Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
                  Другие задачи
                • Уменьшаем потребление CPU Skype под Linux и Mac OS

                    image Skype. Как мы его любим и одновременно ненавидим. Долгое время, Skype был единственной программой, которую я старался закрывать при работе лаптопа от батареи: потреблял около 4% CPU, будил процессор 250-300 раз в секунду, ничего при этом не делая, оставляя процессору меньше времени на нахождение в более энергосберегающем состоянии.

                    Увидел я однажды комментарий пользователя Vayun:
                    Возможно проблема проявляется не у всех, проверить легко: запускаем скайп, запускаем top (на ноутбуке работающем от батареи наглядней будет powertop) и смотрим сколько он отъедает cpu.

                    Я долго не возился, придавил только poll, увеличив timeout. Это даёт наибольший выигрыш (уменьшая %CPU скайпа раз в 5), но наверное можно лучше.

                    Собственно, вот: Skype-poll-fix. Увеличивает таймаут у вызовов poll (Linux) и kevent (Mac OS), снижая потребление процессора в 4-5 раз.
                    Читать дальше →
                  • Способ удобного шифрования данных в облаке (собственными средствами)

                    Уважаемое сообщество!

                    Хочу поделиться способом удобного прозрачного шифрования данных, которые мы передаем/скачиваем из облака.

                    Но начать следует с обзора текущей ситуации.

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

                    Придерживающиеся точки зрения «мне нечего скрывать, пусть смотрят» — дальше могут не читать. Продолжайте наслаждаться утечками фоток из iCloud, произошедшими недавно, удалением из облака нелицензионного контента и т.п. Те же, кому кому важна конфиденциальность личной жизни и в целом неприятно подглядывание за вами в замочную скважину и запускание руки большого брата в ваши личные дела — читаем дальше.
                    Читать дальше →
                  • Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

                      Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):


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

                      Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
                      Читать дальше →
                    • Бесплатные звонки из Hangouts

                        Как говорится, лучше поздно, чем никогда. С большим-большим опозданием, но компания Google всё-таки сделала опцию голосовых звонков из чат-интерфейса Hangouts. С сегодняшнего дня мы можем звонить из Hangouts под Android, iOS и через веб.



                        Звонки другим пользователям Hangouts бесплатны, также как звонки на номера в США и Канаде, а международные тарифы у Google традиционно очень низкие.
                        Читать дальше →
                      • Прием КВ на RTL-SDR, бесплатно без конвертера



                        После прочтения статьи о дешевом SDR из ТВ-тюнера я сразу же кинулся заказывать донгл на R820T. Но всё омрачал факт невозможности приема на коротких волнах, ибо в моем городе на УКВ нет ничего интересного: пара-тройка такси, скорая и изредка появляющиеся радиолюбители. После недолгих поисков я наткнулся на несколько методов «раскрытия» тюнера на 0-15МГц без использования относительно недешевых upconverter-ов.
                        Читать дальше →
                      • Модульные комиксы — простой способ увлечь аудиторию

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

                        Лекции о визуальном мышлении и разнообразные рецепты улучшения «перевариваемости» информации уже успели набить оскомину. Собственно, почему комиксы?

                        image

                        Читать дальше →
                      • Что под капотом у vk.com

                          Данный пост — небольшой отчет о процессе реверсивного проектирования и анализа работы самой популярной соц. сети в СНГ — vk.com. В основном анализ проводился со стороны безопасности (хотя сама соц. сеть весьма привлекательна как high-load проект, безусловно). Для себя вынес некоторые интересные решения и просто получил удовольствие. Пост получился, возможно, немного сумбурный, так углублялся просто в интересные мне моменты.

                          Содержание


                          Обзор

                          Архитектура

                          • php 5.2/5.3
                          • Периоды нагрузки (отключения автоподгрузки ленты)
                          • Врапперы в сообщениях
                          • Разный код для мобильной и полной версий

                          Security

                          • Фичи
                            • Авторизация
                            • Anti-CSRF токены
                            • Запрет iframe
                            • Отключенный POST на контент-серверах
                          • Фиче-баги
                            • Узнать возраст через поиск
                          • Баги
                            • XSS
                            • Загрузка документов без имени
                            • Подгрузка по ajax фото из закрытых альбомов (?)
                            • Не везде anti csrf

                          Разное

                          Читать дальше →
                        • Безопасность OAuth2

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


                            У нас в программе: вольный пересказ спек OAuth2, слабые стороны и Threat Model, 0day на хабретрюк с аутенфикацией.
                            image
                            Читать дальше →
                          • Еще один способ перехвата трафика через ARP Spoofing

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

                              Читать дальше →
                            • Wi-Fi сети: проникновение и защита. 2) Kali. Скрытие SSID. MAC-фильтрация. WPS



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

                                В этой статье мы поговорим о том, как можно обнаружить «скрытые» сети, обойти MAC-фильтрацию на точке доступа и почему же WPS (QSS в терминологии TP-LINK) — это «бэкдор в каждом доме». А перед этим разберёмся, как работает беспроводной адаптер и антенна и как Kali Linux (ex. Backtrack) поможет нам в тестах на проникновение в беспроводные сети.

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

                                Перед прочтением настоятельно советую ознакомиться с матчастью — она короткая, но на её основе базируются все наши дальнейшие действия и выводы.

                                Оглавление:
                                1) Матчасть
                                2) Kali. Скрытие SSID. MAC-фильтрация. WPS
                                3) WPA. OpenCL/CUDA. Статистика подбора
                                Много текста. Очень.