• Paraquire, или Перестаньте доверять библиотекам

      TL; DR


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



      Под катом описывается proof-of-concept библиотеки, реализующей механизм загрузки npm-модулей с возможностью установить права подобно тому, как на Android можно выдавать приложению конкретные разрешения.

      Вместо

      var lib = require('untrusted-lib');
      

      предлагается писать где-нибудь

      var paraquire = require('paraquire')(module);
      

      и затем

      var lib = paraquire('untrusted-lib');
      

      или же

      var lib = paraquire('untrusted-lib', {builtin:{https:true}});
      

      Исходный код доступен на гитхабе под LGPLv3.

      Кроме того я, не будучи достаточно опытным NodeJS-разработчиком, прошу у сообщества советов и обсуждения.
      Читать дальше →
    • Яндекс.Карты (а также Google Maps и др.), когда вы начнёте использовать mesh-сети?

        А ведь для этого есть очень хорошие предпосылки:


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


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

        Читать дальше →
      • Чебурашка и торренты (сказка)

          Все совпадения с реальными ситуациями и названиями проектов случайны.
          На правах фанфика.


          Сказка — ложь, да в ней намёк — добрым молодцам урок!


          Жил да был Чебурашка, как водится, в телефонной будке. Жил — не тужил, и был у него диалап — ни в сказке сказать, ни пером описать. Не 4G, конечно, но книжки с рецептами мороженого и чертежи вертолётов с трекера volshebnik.su он регулярно скачивал. И картинки с апельсинами. И жил бы он себе припеваючи, но злобная Шапокляк послала к его провайдеру крыску Лариску со спецзаданием: заблокировать Чебурашке доступ к volshebnik.su!
          Скоро сказка сказывается, да не скоро дело делается. Тридцать дней крыска Лариска грызла провода, куда-то что-то закорачивала да хвостом по клавиатуре ночами лупила. А на тридцать первый день набрал Чебурашка адрес любимого сайта — а ему заглушка: так мол и так, сайт заблокирован.

          Читать дальше →
        • Сборник песен под гитару ко дню системного администратора (с аккордами!)

            Доброго времени суток, товарищи!


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


            Кусочек кода отправлять кому-то

            Оригинал: "Философы в тринадцать с половиной"


            Em                      Am
            Перелистав известные тома,
                   D                  G   E
            Мы научились понимать английский.
                     Am          H         C
            Но разве это не свинцовая тюрьма -  
                         Am                H
            Плутать всю жизнь меж строчек манов к циске?
            
                  E                  Am
            И каждый час, и каждую минуту,
                      D                 G   E
            О чьём-то софте вечная забота.
                      Am    H          C
            Кусочек кода отправлять кому-то – 
                     Am     H          Em (E) 
            Такая, брат, у нас с тобой работа.
            
            Они порою знают больше нас - 
            Мэйнтэйнеры в тринадцать с половиной.
            И в спорах забываются подчас,
            Пуская в ход банхаммеры админа.
            
            И каждый час, и каждую минуту,
            О чьём-то софте вечная забота.
            Коммиты патчем направлять кому-то -  
            Слова ничто, когда они без кода.
            
            А если не справляешься один -  
            Бредёшь на форум в поисках подмоги.
            Часами в ожидании сидишь,
            Под спойлер заворачивая логи.
            
            И каждый час, и каждую минуту,
            О чьём-то софте вечная забота.
            Скупой багрепорт отсылать кому-то -  
            Такая, брат, у нас с тобой работа.
            
            С трудом по клаве мечется рука -  
            Луна на стол сквозь окна блики стелит,
            Да плещется в измученных зрачках
            Счастливый сон о выспавшемся теле.
            
            И каждый час, и каждую минуту,
            Об общем софте вечная забота.
            Лицом на клаве засыпать под утро -  
            Такая, брат, сейчас цена свободы.
            
            Который год врезаются в лицо
            Сквозняк из окон, град прогнивших яблок.
            Плечом к плечу - не дав сомкнуть кольцо -  
            Лиса, пингвин и с жёлтой вилкой дьявол.
            
            И каждый час, и каждую минуту,
            Об общем софте вечная забота.
            Держать для сна одну шестую суток -  
            Такая, брат, сейчас цена свободы.
            Читать дальше →
          • Кэш, хэш и няш-меш

              UPD0 (2016-07-19 23-31): судя по всему, первая половина моей статьи — успешно изобретённый велосипед. Спасибо хабравчанам за ссылку на спецификацию
              Статья ценна не более, чем вольное описание уже придуманной технологии.


              Предыстория


              Июльский субботний вечер подходил к концу. Нарубив дров на шашлык, я повесил USB-модем на багету, скомандовал sudo wvdial, развернул браузер и обновил вкладку с открытым гитхабом. Вернее, попытался обновить. Скорость не радовала, и в итоге страница-то обновилась, но явно не хватало какого-то из стилевых файлов; и дело было не в блокировке, поскольку аналогичные проблемы я наблюдал и с другими сайтами, и зачастую они решались просто многократным обновлением страницы. Во всём был виноват перегруз 3G-сети.


              Стоп! А как же кэш?

              Читать дальше →
            • Определяем, что у пользователя заблокирована Википедия


                Недавно Роскомнадзор предпринял попытку блокировки доступа с территории РФ к Википедии. Попытка провалилась, и самое время перейти в контрнаступление. В статье под катом я покажу, что, если пользователь Х зашёл на сайт А, то сайт А может определить, заблокирован ли для пользователя другой сайт Б. А дальше, по намечающейся традиции, изложение пойдёт в вопросно-ответной форме.

                Для чего это вообще нужно?


                При обсуждении блокировки Википедии сообщество заметило два обстоятельства, которые весьма выгодны цензуре. Во-первых, Википедия использует HTTPS и, более того, HSTS. Это означает, что заблокирована энциклопедия может быть только целиком (с точностью до домена), но при этом перенаправить на пресловутую страницу с сообщением о блокировке нельзя. Вместо этого высвечивается сообщение об ошибке установления соединения. Это выглядит как внутренняя проблема Википедии и смягчает недовольство пользователя действиями Роскомнадзора; в то же время для развития правового государства необходима обратная связь. Во-вторых, даже если пользователи узнают о блокировке, многие из них просто не будут знать, что делать. Вешать перманентную плашку «Если заблокировали Википедию — качайте Tor Browser!» на неравнодушных сайтах как минимум странно; в то же время, оповещение пользователей о блокировке Википедии и способах её обхода необходимо. Решение поставленной проблемы и пытается дать настоящая статья.
                Читать дальше →
              • Делаем себя развидеть это, или Право на предварительную правку

                Мы часто видим ошибки и опечатки в интернете. Как правило, принято или с достоинством пройти мимо, в глубине души презирая неграмотного (или невнимательного) писателя, или, наоборот, с увлечением развернуть просветительскую деятельность (не всегда, к сожалению, уважительную). В лучшем случае, если на сайте установлен Orphus — нажать Ctrl+Enter.

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