• Объясните код шифра табличной маршрутной перестановки?

    Certik
    @Certik
    def enc(text):
        #определяем размеры сетки. Если размер текста меньше 25и символов, то берем сетку 5х5.
        # Иначе берем корень из размера текста и округляем вверх — это будет сторона сетки.
        # можно в принципе упростить до n=max(5, math.ceil(math.sqrt(len(text))))
        if math.sqrt(len(text)) <= 5:
            n = 5
        else: 
            n = math.ceil(math.sqrt(len(text)))
        
        # создаем массив массивов символов '_' — это наша сетка
        # можно упростить до a = [['_']*n]*n
        a = ['_'] * n
        for i in range(n):
            a[i] = ['_'] * n
    
        # в тексте меняем проблелы на подчеркивания
        text = text.replace(' ', '_')
        # и устанавливаем счетчик на ноль.
        t = 0
    
        # для каждого i от 0 до n
        for i in range(0, n):
            # для каждого j от (0 для четных i, n-1 для нечетных) до (n для четных i, -1 для нечетных) c шагом (1 для четных, -1 для нечетных)
            # то есть для четных i берем j от 0 до n-1, а для нечетных — от n до -1.
            # вероятно я обсчиталась и для нечетных должно быть от n-1 до 0. Но мне лень пересчитывать. Извините.
            for j in range(n * (i % 2) - i % 2,  n * ((i + 1) % 2)  - i % 2, 1 - (i % 2) * 2):
                 # если текст еще не закончился
                if t < len(text):
                    # берем следующую его букву (по счетчику, который мы там в начале установили в 0) и вставляем в сетку на место [j][i].
                    # То есть получается записываем текст в таблицу змейкой, сначала сверху вниз, потом снизу вверх, потом сверху вниз... пока текст не закончится
                    a[j][i] = text[t]
                    # прибавляем счетчик
                    t += 1
    
        # создаем пустую строку (ой, это зря, ну да ладно)
        enctext = ''
    
        # прибавляем к пустой строке по порядку строки нашей таблицы.
        # Это очень неэффективно т.к. при каждом добавлении по факту создается новая строчка.
        # стоило написать что-то вроде ''.join(''.join(row) for row in a)
        for i in range(n):
            for j in range(n):
                enctext += a[i][j]
        # возвращаем получившуюся строчку
        return enctext
    
    def dec(text):
        # определяем размер сетки как в первой функции
        if math.sqrt(len(text)) <= 5:
            n = 5
        else: 
            n = math.ceil(math.sqrt(len(text)))
    
        # создаем пустую сетку
        a = ['_'] * n
        for i in range(n):
            a[i] = ['_'] * n
    
        t = 0
        # заполняем ее по порядку
        for i in range(n):
            for j in range(n):
                if t < len(text):
                    a[i][j] = text[t]
                    t += 1
        
        dectext = ''
    
        # читаем змейкой сверху вниз, потом снизу вверх и тд
        for i in range(0, n):
            for j in range(n * (i % 2) - i % 2,  n * ((i + 1) % 2)  - i % 2, 1 - (i % 2) * 2):
                dectext += a[j][i]
        # меняем подчеркивания на проблеы и обрезаем лишнее.
        dectext = dectext.replace('_', ' ').strip()
        return dectext
        
        
    # это просто тестовый код. Энкодим, печатаем, декодим, печатаем. Ничего сложного.
    print("Шифрованный текст: " + enc(text))
    print("Дешифрованный текст: " + dec(enc(text)))
    Ответ написан
    Комментировать
  • Странная ошибка парсинга json?

    Certik
    @Certik
    Позицию надо считать после того, как уберёте экранирующие слэши (перед кавычками). Тогда легко увидеть что должен был быть список объектов, но видимо потерялись внешние `[]`, и получился жсон со множественными корнями, что большинство парсеров не воспринимают.
    Ответ написан
    2 комментария
  • Как сделать так, чтоб телеграм бот переподключался к интернету до тех пор пока он не появится, а не выключался?

    Certik
    @Certik
    Обернуть во что-то типа
    failed = true
    while failed: 
        try:
            #запрос
            failed = false
        except: # тут желательно ограничить набор ловимых эксепшнов
            # не знаю, залогировать, счетчик прибавить, что хотите

    Это будет долбиться вечно и без перерыва. Если нужно ограничение попыток, добавьте счетчик оных. Если есть смысл в задержке перед следующей попыткой, поставьте sleep (не помню как в питоне, но это должно легко гуглиться).
    Ответ написан
    Комментировать
  • Посоветуйте роутер с мощным/пробивным WiFi

    Certik
    @Certik
    Не так давно задавала похожий вопрос, в итоге купила RouterBOARD 751G-2HnD (цена) очень довольна. Живу в дореволюционном доме, на 5м этаже. Вайфай отлично ловится на лестнице и даже немного во дворе. Несмотря на опасения по части сложности в настройке, оказался очень прост в использовании (правда у меня провайдер безо всяких ВПН, а вот знакомый с настройкой пчелайновского ВПН помучался). С начала года его использую, никаких нареканий.
    При необходимости на него можно еще накрутить внешнюю антенну, но мне это не понадобилось
    Ответ написан
    Комментировать
  • Готовы ли вы участвовать в проектах бесплатно?

    Certik
    @Certik
    Я не совсем разработчик, но если бы нашелся интересный проект например по автоматизации веба на selenium webdriver + Python (пока что единственый инструмент автоматизации который я знаю), я бы с удовольствием посвятила ему некоторое количество свободного времени. Не бевозмездно, конечно же, но и не за материальные плюшки. Меня в первую очередь интересует пополнение резюме, опыт и рекомендации, и именно это я считаю главными «плюшками» от таких проектов.
    Ответ написан
    Комментировать
  • Семёрка не хочет выключаться

    Certik
    @Certik
    А через пуск -> Завершение работы пробовали уводить в сон/гибернацию, работает? Если да, перепроверьте все настройки, по-моему где-то я видела отдельно настройки по питанию и отдельно по действиям при нажатии кнопки питания/закрытии крышки (то есть в разных местах есть настройки, которые могут конфликтовать).
    Ответ написан
    Комментировать
  • Подскажите как победить сброс подсветки в Ubuntu 11.10 при работе ноутбука от батареи

    Certik
    @Certik
    В Settings -> System settings -> Power management есть профили энергопотребления. Выберите профиль для работы от аккумулятора и поправьте время через которое уменьшается яркость (или отключите вообще эту опцию).
    Я, например, чаще всего смотрю аниме или короткие сериалы, поэтому у меня стоит сброс яркости через 21 мин неактивности и после этого через минуту выключение экрана. Если я смотрю длинный фильм, приходится подергивать мышкой, но это не сильно мешает. Зато если я куда-то отошла и забыла закрыть крышку, энергия более-менее сохранится.
    Вообще, у меня эта проблема возникает только при просмотре флэш-видео. Если скачать и смотреть через плеер, то система понимает, что это тоже активность.
    И даже для флэш-видео по-моему есть какой-то фикс, но вот совершенно не помню где я про него читала, а гуглить лень.
    Ответ написан
    Комментировать
  • Какой интерфейс выбора получателей самый удобный?

    Certik
    @Certik
    А сделать дерево со сворачиваемыми ветками и чекбоксами у каждого листа и каждой ветки (отмечает все ее листья) не хотите?
    Ответ написан
    1 комментарий
  • Самый «долгий» смартфон?

    Certik
    @Certik
    У меня Xperia P, обычно батарейки хватает на день (включен wi-fi, включены автообновления). Когда не было доступа к зарядке, выключила сети, включала только когда было нужно/хотелось по дороге интернетиков почитать. Ну и сно-текерный будильник выключила, ибо сильно жрет батарейку когда трекает сон. Четыре дня она у меня жила без подзарядки :)
    Ответ написан
    Комментировать
  • Выбор изолирующих наушников

    Certik
    @Certik
    Doctor Head — отличный магазин, где можно померить наушники. И консультанты там в теме, всегда помогут и т.д. (не реклама, правда один из ооочень немногих магазинов где нормально консультируют и можно все потестить, померить, послушать...)
    Сама сейчас пользую вот это: отлично сидят + много разных амбушюр в комплекте, так что действительно можно подобрать по ушам. Единственный минус — при большом количестве совсем низких басов звук получается немного вибрирующий. Но вам это скорее всего не очень важно. Звукоизолируют вполне отлично. Если и этого мало, я иногда ношу сверху меховые уши (типа таких)
    Ответ написан
    Комментировать
  • Система заявок

    Certik
    @Certik
    Как мне кажется, вам подойдет любой баг-трекер. В них можно а) создавать баги/заявки, б) назначать задание на нужного инженера в) изменять статус (открыто, в процессе, выполнено) многие системы позволяют настраивать возможные статусы. И как правило у баг-трекеров есть веб-интерфейс => их можно использовать на телефоне. Из самых простых, посмотрите в сторону Mantis. И кстати, все изменения в заявках падают на почту «наблюдающим» — тем на кого баг был назначен, тем кто его изменял, коментировал и т.д.
    Ответ написан
    2 комментария
  • В чем главные ошибки графического дизайна этого сайта?

    Certik
    @Certik
    1) Как тут выше написали, после 5и минут пребывания на сайте, не становится понятно что это за сайт, зачем он нужен и т.п. Ну хорошо, вы написали чем сайт занимается, но представьте что ваш посетитель придет не с Хабра, где он прочитал кто вы и что вы, а… да, мало ли откуда, это как раз не важно. С первого же взгляда на страницу ему должно стать ясно кто вы, что вы делаете, какая ему с этого польза и почему он должен «остаться с вами».
    2) Цвета — это просто кошмар. Первое впечатление: «Очередной групон, даж смотреть не буду». Умерьте яркость цветов, определите для себя некую цветовую гамму и придерживайтесь ее.
    3) Шапка сайта — выпадает из области внимания. Лучше бы она была тоже на фоне этого органайзера, но отделена от дальнейшего контента. В общем, сейчас шапка — место которое я заметила в последнюю очередь, а ведь у вас там и навигация, и слоган, и могло бы быть сжатое описание сайта. Наример «Мы собираем для вас все самые интересные события Москвы»
    Могу посоветовать книжку Круга «не заставляйте меня думать».
    Ответ написан
    Комментировать
  • "Интерфейсы измерительных систем." Горн Л.С., Хазанов Б.И?

    Certik
    @Certik
    А в библиотеках смотрели?
    //я имею ввиду такие большие здания, в которых можно брать почитать бумажные книжки. На две недели обычно…
    Ответ написан
    Комментировать
  • Мышь для стеклянного стола?

    Certik
    @Certik
    Может быть тачпад?
    Ответ написан
    Комментировать
  • Как разместить закладку на панель навигации?

    Certik
    @Certik
    Для фокса можно нажать правой кнопкой на панели навигации и выбрать customize… после чего перетащить Bookmarks toolbar items туда куда хочется. Правда там окажутся сразу все закладки.
    Или как выше предложил eiji использовать эту ссылку как домашнюю страницу
    Ответ написан
    1 комментарий
  • Список правильных брендов - идея для стартапа или уже есть такой?

    Certik
    @Certik
    По моему, был бы здоровский сервис, особенно если использовать двойную шкалу, по ценам и по качеству. Тогда можно выбрать, что подходит больше очень дешевый но совсем ненадежный «Квень ень партнерз», супер-надежный и оч. дорогой «Хофман унд Майер GmbH» или среднячковый и по цене и по надежности «Певченко и сыновья». Ну и заодно сразу отмести всяких недобросовестных чуваков вроде «Хвань-янь люкс», которые и денег дерут немеряно и надежности никакой.
    А если при этом иметь возможность некого субклассирования брендов, то вообще цены не будет. Поясню: например «Хофман унд Майер GmbH» выпускает две линейки одного и того же продукта — одна супер-дорогая и надежная, а вторая — дешевая, чуть менее качественная и например с не оч. дизайном, или там урезанным количеством функций, то эти линейки надо оценивать отдельно.
    //все названия естественно вымышленные :)
    Ответ написан
    Комментировать
  • Энергосбережение на нетбуках?

    Certik
    @Certik
    В ту же степь: Если я программно отключаю Вай-фай на ноуте, он, по-идее, должен переставать сканировать наличие сетей и т.п. => должен потреблять чуть меньше энергии, но так ли это на практике?

    PS: Если это важно, то в моем случае действующие лица — Asus EEEpc 1015B Seashell И Kubuntu 12.04 в почти дефолтной конфигурации (по крайней мере ничего из дров и области работы с сетью я не меняла)

    PPS: Вопрос почти праздный, т.к. при заявленных 8и часах работы от батареи ноут отрабатывает, в среднем, около 7и, а больше мне и не особо надо. Но вот любопытство не дает покоя :)
    Ответ написан
  • Где написать вопрос ?

    Certik
    @Certik
    Можно попробовать в личку людям, которые пишут в блоге соответствующей тематики. Кто-нибудь ответит. Даже если попадутся только те кто и сами не знают, то что-нибудь они подскажут, наскребете уже и на статейку))
    Ответ написан
    Комментировать
  • Подлый развод и способы информирования населения..

    Certik
    @Certik
    Вообще-то давно известно, что если вам предлагают работу, но предлагают сначала немножко заплатить — это развод. Были тонны статей про таких вот оффлайн-мошенников. Почему это не работает в интернете? Потому что это вообще не работает. Потому что каждый человек, ищущий такого плана работу, думает, что он точно не попадется, и что, несмотря на существование мошенников, «здесь» точно все в порядке.
    Ответ написан
    Комментировать
  • WinXP => Win7?

    Certik
    @Certik
    В 7ке очень непривычная и неудобная панель управления, плюс надо привыкнуть к тому что в старт-меню «все программы» открываются там же (а не в отдельной колонке как в ХР) и папки тоже разворачиваются туда же. За то вместо ланчпада можно просто «пинить» любые программы на таск-бар и несколько более просто чем в ХР пинить их в старт-меню. Все остальное примерно так же (ну еще то что я не увидела с ходу как сделать чтобы в таск-баре были не только иконки приложений, но и подписи, но это не так уж принципиально).
    Если вы пользуетесь компьютером не на уровне «я что-то нажал и теперь ничего не работает», то никаких особых проблем быть не должно, максимум потратите в первый раз на 3 минуты больше на поиск каких-нибудь запрятанных функций, без которых можно и обойтись.
    Ответ написан