• Почему космонавтам недоступна искусственная гравитация?

    • Translation

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

    Если поместить человека в космос, подальше от гравитационных воздействий, испытываемых им на поверхности Земли, он испытает невесомость. Хотя все массы Вселенной продолжат притягивать его, они продолжат притягивать и космический корабль, поэтому человек будет «плавать» внутри. В сериалах и фильмах типа «Звёздный путь», «Звёздные войны», «Боевой крейсер „Галактика“ и множестве других нам всегда показывают, как члены команды стабильно стоят на полу корабля вне зависимости от прочих условий. Это потребовало бы возможности создания искусственной гравитации – но с учётом законов физики в том виде, в котором мы их знаем сегодня, это слишком трудная задача.
    Читать дальше →
  • Почему мне кажется, что студентов учат ООП неправильно

    • Tutorial
    Когда я учился в университете мне довольно тяжело было понять ООП (Объектно-ориентированное программирование), сейчас я понимаю, что просто нас учили ООП на не совсем ясных и правильных аналогиях и вообще, кажется, сами преподаватели не совсем понимали, в чем же суть ООП.

    image

    Вспомните, классические аналогии ООП, вот есть класс Домашние любимцы с методами «голос» и «есть», от него мы наследуем Кошку и Собаку и все хорошо.

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

    Мы уже запутались, но Вовочка спрашивает: «а где в этом зоопарке статические методы, интерфейсы, абстрактные классы и чем отличается объект класса от самого класса?». Объяснить, несомненно, можно, но сложно. Понять, еще сложнее.

    Или другой классический пример, вот есть прямоугольник, от которого так и хочется унаследовать квадрат (ну по логике, квадрат это частный случай прямоугольника), но у прямоугольника есть длина и ширина, а у квадрата только одна сторона. Что-то тут тоже запутано.

    Теперь подумаем как объяснить ООП лучше?
    Читать дальше →
  • Считаем до трёх

      Троичные вычисления


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



      Я выбрал сбалансированную троичную систему, в которой один трит может представлять одно из трёх значений -1, 0 или 1. Весьма подробно о ней можно почитать тут.

      На любые вопросы из разряда «зачем?!» я отвечаю заранее: «Because I can».


      Читать дальше →
    • Считаем до трёх: два

      • Tutorial

      Троичные вычисления


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

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

      Итак, вот список опубликованных статей цикла (будет обновляться):


      Напоминаю, что единственным строительным блоком вычислителя будет троичный мультиплексор. Вот фотография оригинального тримукса дизайна Александра Шабаршина и моего исполнения на поверхностном монтаже. Одна такая плата несёт на себе два троичных (де-)мультиплексора:


      Читать дальше →
      • +26
      • 9.6k
      • 3
    • Считаем до трёх: три

        Троичный счётчик


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

        Это уже третья статья, по мере готовности будет продолжение. Оглавление:


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


        Читать дальше →
      • Считаем до трёх: четыре

          Проверка жизнеспособности идеи: однотритный вычислитель


          Это уже четвёртая статья, по мере готовности будет продолжение. Оглавление:


          Вот так выглядит основная железка, о которой сегодня будет идти речь (больше перемычек богу перемычек!):


          Читать дальше →
        • Датасет: ассоциации к словам и выражениям русского языка

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

            Мы хотим поделиться с сообществом собранной нами базой ассоциаций к словам и выражениям русского языка. Этот набор данных лишён недостатков методов дистрибутивной семантики. Ассоциации хорошо сохраняют эмоциональную полярность и они по своей природе асимметричны. Подробнее расскажем в статье.
            Читать дальше →
          • Поиск документов в сетевых шарах и файловых помойках

              Помойка


              Почти каждый из нас когда-либо работал в компании, где есть всеми ненавистная "файлопомойка" — шара с тысячами документов без какой-либо структуры. И наверняка у каждого был момент, когда ему нужно было что-то в этой помойке отыскать. "А Василич этот отчёт на шару кидал в прошлом месяце, глянь там" — слышали мы от коллеги, а тот самый Василич на вопрос "А в какой папке?" конечно же отвечал "А х… не помню, в общем, сам ищи". И мы погружались в многочасовой ад — бродили по папкам с документами из 90-х, фотографиями котов, договорами вперемешку с анекдотами и прочим шлаком в надежде найти заветный документ.

              Читать дальше →
            • Загадки и мифы SPF

              • Tutorial


              SPF (Sender Policy Framework), полное название можно перевести как «Основы политики отправителя для авторизации использования домена в Email» — протокол, посредством которого домен электронной почты может указать, какие хосты Интернет авторизованы использовать этот домен в командах SMTP HELO и MAIL FROM. Публикация политики SPF не требует никакого дополнительного софта и поэтому чрезвычайно проста: достаточно добавить в зону DNS запись типа TXT, содержащую политику, пример записи есть в конце статьи. Для работы с SPF есть многочисленные мануалы и даже онлайн-конструкторы.


              Первая версия стандарта SPF принята более 10 лет назад. За это время были созданы многочисленные реализации, выработаны практики применения и появилась свежая версия стандарта. Но самое удивительное, что почему-то именно SPF, более чем любой другой стандарт, оброс за 10 лет невероятным количеством мифов и заблуждений, которые кочуют из статьи в статью и с завидной регулярностью выскакивают в обсуждениях и ответах на вопросы на форумах. А протокол, казалось бы, такой простой: внедрение занимает всего пару минут. Давайте попробуем вспомнить и разобрать наиболее частые заблуждения.


              TL;DR — рекомендации в конце.

              Читать дальше →
            • Знай сложности алгоритмов

              • Translation
              Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
              Читать дальше →
            • Как победить старение — план действий


                Старение — это генетическая патология, заложенная в каждого из нас. Это ВИЧ 2.0, неумолимая «возрастная инволюция человека». Я твёрдо верю, что нам нужно срочно бросить все силы на поиск средств её излечения или хотя бы купирования. Есть ли у меня план? Есть! Попробую изложить его ниже и буду рад любой критике или альтернативным предложениям. Мне важен лишь результат — продление человеческой жизни хотя бы на 50%.

                До сих пор не существует никаких доказанных путей увеличения продолжительности жизни человека более чем на 10%. За последние десятиления было предложено множество различных подходов, и их всех объединяет лишь то, насколько они малоэффективны. Начиная от голодания или ограничения калорий (как показали опыты на приматах), метформина (на диабетиках), рапамицина (на мышах или собаках) и заканчивая целым рядом одинаково слабых «геропротекторов».

                Продление на 10% лично меня не устраивает. Я считаю, что Человечеству необходимо срочно начать разрабатывать методы продления жизни хотя бы на 50%, иначе наши родители просто не доживут до того момента, когда механизмы старения будут разгаданы окончательно, и наука наконец-то сможет его остановить. Поэтому моя задача-минимум — разработать терапию, способную продлевать жизнь приматов хотя бы на 50%. Причем такую терапию, омолаживающее действие которой будет быстро заметно после её применения. Заметно по каким-либо достоверным возрастным биомаркерам: например, эпигенетическим часам или биохимическим показателям крови.
                Читать дальше →
              • О культуре разработки в группах программистов

                  «Почему ж всё так плохо?» — каждый раз я задаюсь этим вопросом, когда приходится иметь дело с очередным кодом, продуктом или API, созданными для внутренних нужд в непрофильной организации.

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

                  И деньги ничего не решают: ужасный код и ужасные продукты пишут как маленькие бедные ВУЗы, у которых денег хватает только на рабский труд аспирантов, так и крупные и богатые компании, включая IT-компании, включая зарубежные: несколько раз сталкивался с кодом, который писали зарубежные подрядчики и каждый раз от него хотелось рыдать и биться головой об стену.

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

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

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

                  Читать дальше →
                • Методы обхода защитных средств веб-приложений при эксплуатации XSS-векторов

                    image

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

                    Читать дальше →
                  • Раскрутка нового агентства на upwork с нуля — личный опыт

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

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

                      Команда состоит из 12 web-разработчиков широкого профиля (full-stack, как говорится).

                      Исходные данные: колоссальный (с моей точки зрения) опыт работы вне upwork, абсолютно нулевой аккаунт на upwork, большое желание продвинуться на этой бирже и неудачная попытка сделать это своими силами: ребята уже пробовали искать там заказы в течение 2х месяцев: у них было за это время 7 интервью, но они не смогли взять ни одного проекта.

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

                      • Tutorial
                      Почти 4 года назад мы написали одну из самых популярных статей в рунете про проектирование больших проектов с таким же названием, как и эта: часть 1 и часть 2. Только на Хабре её прочитало более 170 тыс. человек, а вообще она публиковалась в самых разных изданиях мира. Более 1000 стартапов использовали наработки из этой статьи для проектирования, и это только те, о которых я слышал и которые нам писали. Но время не стоит на месте, а мы постоянно развиваемся. С тех пор наша технология проектирования значительно эволюционировала и стала еще лучше. В этой статье мы опишем нашу обновленную технологию проектирования и покажем много живых примеров для каждой стадии.

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


                      Читать дальше →
                    • Проприоцепция для неспециалистов. Часть 1: Ровная спина стоя за 10 секунд

                      • Tutorial
                      Совсем недавно мою статью о чувствах человека сильно штормило – оценка пользователей колебалась от +5 до -4. В комментариях отмечались такие забавные моменты, как:

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

                      Урок из данной статьи займёт 10-15 секунд и он позволит вам найти то внутреннее ощущение, которое позволит удобно держать ровную спину стоя длительное время. Вы на собственном опыте сможете убедиться в том, стоит ли выделять отдельно проприоцепцию (суставно-мышечное чувство).
                      Читать дальше →
                    • [ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

                      • Translation


                      Это первая часть, вот вторая.
                      За всеми архитектурами нейронных сетей, которые то и дело возникают последнее время, уследить непросто. Даже понимание всех аббревиатур, которыми бросаются профессионалы, поначалу может показаться невыполнимой задачей.

                      Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
                      Читать дальше →
                    • Стандарты кодирования и другие практики в IT

                      Много приходится читать и обсуждать разные стандарты кодирования, ограничивающие применение тех или иных конструкций языка (goto, множественное наследование классов в C++) или приемов программирования (рекурсия, динамическое выделение памяти после инициализации приложения). Применительно к С/С++, наиболее известными стандартами кодирования являются MISRA, HICPP, Google C++ Style Guide. Интересной является и статья на Хабре про 10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками.

                      Под катом немного юмора и серьезных рассуждений о применении различных практик ведения проектов.
                      Читать дальше →
                    • Знаменитая фотография из Чернобыльской АЭС — это селфи с длинной выдержкой

                      • Translation

                      Артур Корнеев, зам. директора объекта «Укрытие» на Чернобыльской АЭС, изучает ядерную лаву (так называемую «слоновью ногу»), Чернобыль, 1996. Фото: Министерство энергетики США

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

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