• Релиз неофициального MTProto прокси на Python, особенности протокола

      image

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

      В данной статье хотелось бы, во-первых, рассказать о малоизвестных особенностях протокола общения прокси-сервера с внешними серверами и, во-вторых, рассказать о собственной разработке — реализации прокси-сервера на Python, которая только что достигла релиза и доступна всем желающим под свободной лицензией MIT.
      Читать дальше →
    • Данные из Google Таблиц на вашем сайте

      • Tutorial


      Привет!

      Для тех, кто пользуется Google Таблицами, есть хорошая новость — ниже описано решение, которое позволит импортировать данные из таблицы на ваш сайт.

      Поехали.

      1. Открываем Таблицу Google


      Для примера, я возьму таблицу, в которую падают результаты из Google Формы.
      Читать дальше →
    • Редизайн сайта хостинг-провайдера: ошибки и решения

        image

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

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

        Дизайн и создание интерфейсов продуктов являются одной из областей, в которых молодые проекты подчас вынуждены идти на компромиссы. И отказываться от них в дальнейшем совсем нелегко. Сегодня мы расскажем о том, как создавали сайт проекта хостинг-провайдера 1cloud и как, вскоре после запуска, работали над его редизайном.
        Читать дальше →
      • Очень быстрый и эффективный способ расслабления глаз

          Предисловие


          imageНе знаю, все ли программисты всесторонне любознательные люди, но я всегда пытаюсь получить фундаментальные знания во всех областях, которые могут быть практически полезны. В то время, когда мне в голову пришла эта идея я изучал анатомию и физиологию по журналам «Тело человека. Снаружи и внутри», ну а по работе я занимался стерео-варио фотографиями (для тех кто не знает — были такие советские календарики с ребристой поверхностью, где картинка либо казалась объемной, либо менялась). Так вот, в один из вечеров мне пришла в голову замечательная идея, которую я на протяжении уже 4х лет использую для поддержания своего зрения.
          Обещаю, что эффект почувствуете сразу!
          Читать дальше →
        • Почему онлайн консультант не приносит денег, а только портит мой сайт

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

            Не работают они, потому что (один пункт или комбинация из этого списка):
            1. Мы не умеем ими пользоваться и, соответственно, пользуемся ими не правильно.
            2. Мы не умеем разговаривать и, соответственно, делаем это ужасно.
            3. Мы не дисциплинированы и, соответственно, см. п.2
            4. Мы бы рады пользоваться и разговаривать правильно, но эта чертова поделка только делает вид, что работает и что в ней есть нужные нам функции.
            С 4-м пунктом, боюсь, мы ничего сделать не можем, кроме как пойти и найти что-нибудь человеческое. А над остальными, пожалуй, поразмышляем.

            Что такое система онлайн консультирования? — Это чат с посетителями сайта в режиме реального времени. Это инструмент продаж. И, самое важное – это часть вашего сайта. Именно это и отличает подобную штуку от Skype, ICQ, ….

            Минутку! Мой сайт не интернет магазин. Какие через него продажи? — Но ведь у вас реальный бизнес и зачем то ему понадобился сайт. Попробуйте убедить меня в том, что не для повышения продаж.

            Оговорюсь, есть сайты, использующие такие системы для поддержки существующих клиентов. Эта статья не для них и не про них. Ну, разве что, убедитесь, что онлайн консультант действительно в вашем случае способен только на поддержку.
            Читать дальше →
          • Возможности роутера ZyXEL Keenetic на прошивке второго поколения NDMS v2.00

              Некоторое время назад на сайте ZyXEL в разделе загрузок для интернет-центра Keenetic появилась бета-версия прошивки под названием NDMS 2.0. Приглашение погонять ее получили также зарегистрированно-заинтересованные владельцы обычных «Кинетиков». В аннотации говорится, что это не очередное обновление, а второе поколение программной платформы, кардинально отличающееся от предыдущего и адресованное продвинутым пользователям. Наиболее интересное из заявленного (по сравнению с микропрограммами первого поколения):
              • Полнофункциональный механизм трансляции адресов (Full feature NAT) с поддержкой нескольких внешних IP-адресов; перенаправление портов с возможностью выбора порта назначения в локальной сети; переназначение ролей сетевых интерфейсов.
              • Поддержка множественных PPP-туннелей для доступа в Интернет и подключения к виртуальным частным сетям (VPN).
              • Возможность назначения нескольких дополнительных физических WAN-интерфейсов на порты встроенного коммутатора Ethernet.
              • Резервирование подключения к интернету через USB-модемы 3G/4G и дополнительно назначаемые WAN-интерфейсы.
              • Профессиональный интерфейс настройки через командную строку (Cisco like CLI). Все функции могут быть настроены с командной строки и сохранены в виде текстового файла.
              • Пакетная сборка прошивки «по требованию». Функциональность устройства выбирается пользователем в веб-интерфейсе устройства и прошивается автоматически.
              Читать дальше →
            • Фулвью ор нот фулвью: о пользе и вреде полной BGP-таблицы

                На любом околосетевом форуме легко найти с десяток веток о выборе оборудования для BGP-пиринга с возможностью «держать две, три, пять, двадцать пять фулвью». Большинство таких веток выливается в холивары на тему Cisco vs. Juniper или еще чего похуже. Офлайновое же их развитие нередко напоминает мультфильм о шести шапках из одной овичины. В общем, бывает смешно.


                И крайне редко обсуждается вопрос о необходимости этого самого фулвью.

                Давайте попробуем разобраться.
              • Облако selectel — не помеха для запуска Gentoo

                  Сегодня ночью попробовал установить Gentoo в виртуальной машине selectel.ru.

                  Для начала надо зарегистрироваться и создать виртуалку с какой-нибудь осью.
                  Для тестов выбрал Debian mini.
                  После создания, подключаю еще один жесткий диск, размером как минимум 2Gb.
                  Создаем на нем разделы, форматируем.
                  При форматировании необходимо учесть, что в стандартной конфигурации (stage3+portage) очень много мелких файлов, по этому inode могут закончиться быстрее, чем место на диске. По дефолту, на 1.9 gb их получается 125568, этого не хватит, что бы распаковать stage3 и portage.

                  Форматируем раздел размером 1.9 gb:
                  mkfs.ext3 -i 8192 /dev/xvda1 — получаем 251136 inode
                  mkfs.ext3 -i 4096 /dev/xvda1 — получаем 502272 inode

                  Читать дальше →
                • Эффективная поисковая оптимизация сайтов для Веб-дизайнеров

                  • Перевод
                  Большинство заказчиков просят веб-дизайнеров улучшить индексацию сайта поисковыми системами, чтобы привлечь большее количество посетителей. Некоторые дизайнеры и студии предлагают отдельные услуги по продвижению сайта в поисковых системах (SEO), а другие специалисты не хотят делать ничего для SEO. Большинство заказчиков, желающих продвинуть свой сайт в поисковых системах, знают очень мало о самих способах продвижения, и что требуется для появления сайта на первых позициях выдачи поисковика, по запросам ключевых слов с высокой конкуренцией.

                  Учитывая то, что Веб-дизайн и SEO тесно связаны друг с другом, этот топик можно назвать «Часто Задаваемые Вопросы» для дизайнеров, но зачастую остаются непонятными моменты, связанные с ответственностью веб-дизайнера и с тем, что в его силах для улучшения SEO. Большинство заказчиков именно от дизайнера требуют создания хорошо индексируемого сайта, который бы привлекал целевую аудиторию, однако, SEO – это непрерывный процесс, включающий в себя далеко не только дизайн и код сайта. Такие моменты как: анализ ключевых слов, разработка информационного наполнения, перелинковка и многие другие – безусловно, являются критическими моментами в оптимизации сайта для поисковых систем и, как правило, они представляют непрерывный процесс.

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

                  В этой статье мы проведем детальный анализ темы «Веб-дизайнеры и SEO». Многие другие темы, связанные с SEO, будут так же затронуты.
                  Читать дальше →
                • Использование скрытых Марковских моделей для снятия морфологической омонимии

                    В предыдущем посте я писал о том, что такое морфологическая омонимия (пример со словом «стали») и упоминал о том, что для её разрешения используют скрытые Марковские модели (Hidden Markov Model, HMM).
                    Вначале немного о разметке теста (в английской литературе этот процесс называется «part-of-speech tagging» (POST)) – это ручной или автоматический процесс, в результате которого каждому слову текста приписывает атрибутивная информация (тэг), которая определяет какой частью речи является это слово: существительное, глагол, прилагательное, наречие, местоимение, частица, союз, междометие и т.д. Именно тут мы и наткнёмся на проблему «стали».
                    Читать дальше →
                  • Бэкап на linux

                      В один прекрасный день мне понадобился скрипт бэкапов. Рассматривал большое количество различных вариантов. Многие не устроили по причине громоздкости. В итоге я написал свой скрипт :)

                      Для бэкапа сайтов на веб-сервере — очень полезно и просто :) Пожелания по улучшению — приветствуются

                      Код тут
                    • Ликбез по картографическим проекциям с картинками

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

                        Стереографическая проекция
                        Картинок большого размера будет много
                      • Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

                          Автор: Андрей Курилин

                          В современном мире, при построении облачных сервисов ограничиться лишь установкой платформы не удается, приходится модернизировать компоненты, интегрировать новые аппаратные средства, заниматься масштабированием и вносить множество изменений в настройки. Но как при этом оставаться уверенным в том, что после всех этих изменений ваше облако продолжит исправно работать и служить на благо империи заказчикам?
                          Читать дальше →
                          • +10
                          • 3,2k
                          • 2
                        • Двуликий REQUEST_URI или в поисках корректного HTTP/1.1 сервера

                            Вы знаете, чем отличается %{REQUEST_URI} в Apache mod_rewrite от $_SERVER["REQUEST_URI"] в PHP?

                            Сможете в .htaccess на уровне Apache сделать корректную переадресацию 301 с домена с префиксом www или на него?

                            Для последнего вопроса я и сейчас не смогу предложить решение. Причина в протоколе HTTP/1.1, который пришлось изучить подробнее, когда «изобретал велосипед» (создавал ядро для сайта).

                            Всё дело в HTTP-заголовке запроса «Host:». При определённых условиях там может быть всё, что угодно, причём сервер должен полностью это проигнорировать согласно HTTP/1.1. Большинство же разработчиков используют значение этого поля, например, для SEO-оптимизаций. Забегая вперёд, скажу, что дополнительный прокси (например, nginx) позволит решить эту проблему.

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

                            Что же скрывает REQUEST_URI в HTTP/1.1?

                            Узнать подробности
                          • Эффективное распределение ролей посредством RACI матрицы (Обновлено)

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

                              О таком умном словосочетании, как «разделение полномочий» говорят часто. Но все ли знают, как его применять на практике, и кому удается этим реально воспользоваться? Приглядевшись внимательно, делаем вывод, что такое явление происходит по большому счету, в компаниях частного сектора, в особенности тех, кто работает с иностранным клиентом.

                              Именно из-за «бугра» до нас дошла любопытная аббревиатура под названием RACI. При этом, зачастую перед ней можно наблюдать разного рода умности а-ля «матрица» или «модель». Что это и с чем его едят, попытаюсь объяснить читателю далее. Возможно, кому-то уже повезло работать в коллективах, где каждый знает свои обязанности и область ответственности – за таких людей можно только порадоваться. При этом лично я верю, что далеко не у всех всё идеально в сфере разделения полномочий. Для таких людей данная статья может оказаться полезной.
                              Читать дальше →
                              • +21
                              • 59,3k
                              • 9
                            • CSS 3 Timing Functions и с чем их едят

                              • Перевод


                              Хей народ, пристегните ремни и держитесь покрепче, ибо наступил действительно волнительный момент: вам предстоит разобраться в тонкостях чрезвычайно интересных временных функций CSS!


                              Окей, ваша кровь, конечно, вряд ли закипела от предмета данной статьи, но шутки в сторону: временные функции — своего рода скрытая жемчужина, когда дело касается CSS, и, вполне вероятно, вы удивитесь тому, сколько всего интересного с помощью них можно сделать.

                              Полетели!
                              • +71
                              • 58,3k
                              • 8
                            • Huginn: агенты в стиле Yahoo Pipes и IFTTT на своём сервере



                                Huginn — система программирования агентов и выполнения разнообразных задач в онлайне, сделанная по образцу Yahoo Pipes и IFTTT, но только для установки на собственный сервер. В Huginn мы сами контролируем собственные данные и не зависим от ограничений третьей стороны.
                                Читать дальше →
                                • +22
                                • 5,9k
                                • 3
                              • Логика мышления. Часть 1. Нейрон



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

                                  В настоящем цикле статей планируется рассказать о той концепции интеллекта над которой мы сейчас работаем и продемонстрировать некоторые решения, являющиеся принципиально новыми в сфере моделирования работы мозга. Но чтобы повествование было понятным и последовательным оно будет содержать не только описание новых идей, но и рассказ о работе мозга вообще. Какие-то вещи, особенно в начале, возможно покажутся простыми и общеизвестными, но я бы советовал не пропускать их, так как они во многом определяют общую доказательность повествования.
                                  Читать дальше →
                                • Дизайн сайта в Sketch.app. Часть 2.1: наводим красоту

                                  • Tutorial
                                  Первая часть про прототипы.

                                  intro-img-2

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

                                    Изначально для основного освещения одной из комнат, где шёл капитальный ремонт, планировалась обычная люстра. Но недавно мне на глаза попалась суперяркая светодиодная лента Ultra 5000 со светодиодами smd 5630 торговой марки Arlight. Решение было принято быстро, окончательно и бесповоротно — хочу такую ленту в качестве основного света в комнате.



                                    О реализации светодиодного периметра освещения далее