• Как работает реляционная БД

    • Translation
    • Tutorial
    Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

    На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
    Читать дальше →
  • Программирование — не тяжелый физический труд, но все равно отстой

    Peter Welch
    30 апреля 2014 г.
    Об авторе. Peter Welch писатель и программист, автор книги «And Then I Thought I Was a Fish», автор блога «Still Drinking».


    Изображение: Joe Raedle/Getty Images

    Каждый мой друг, хотя бы дважды в неделю поднимающий на работе что-то тяжелее ноутбука, рано или поздно в разговоре невзначай бросает что-то вроде: «Бро, ты не пашешь на износ. Я только что отработал 4700-часовую неделю, копая тоннель под Мордором, используя отвертку»

    Они правы. Мордор — отстой, и копание тоннеля гораздо трудозатратнее, чем тыкание в клавиши, если конечно вы не муравей. Но для галочки, давайте договоримся о том, что стресс и безумие — это плохо? Отлично.
    Добро пожаловать в мир программирования
  • Опыт маскировки OpenVPN-туннеля с помощью obfsproxy

    • Tutorial
    Примечание: приведённая в статье информация во многом устарела, и предназначена скорее для общего ознакомления. Сейчас можно попробовать использовать утилиты вроде ptproxy для создания туннеля с помощью любого актуального pluggable transport для Tor.

    Преамбула


    В связи с наметившимися тенденциями решил я обфусцировать свой скромный OpenVPN-туннель, просто чтобы набить руку — мало ли пригодится…

    Дано: дешевая VPS с белым IP, работающая под Ubuntu Trusty Server Edition и служащая OpenVPN сервером.
    Требуется: по-возможности скрыть OpenVPN туннель, желательно без изобретения велосипедов.
    Ну и что дальше?
  • Энтропия? Это просто!

      Этот пост является вольным переводом ответа, который Mark Eichenlaub дал на вопрос What's an intuitive way to understand entropy?, заданный на сайте Quora

      Энтропия. Пожалуй, это одно из самых сложных для понимания понятий, с которым вы можете встретиться в курсе физики, по крайней мере если говорить о физике классической. Мало кто из выпускников физических факультетов может объяснить, что это такое. Большинство проблем с пониманием энтропии, однако, можно снять, если понять одну вещь. Энтропия качественно отличается от других термодинамических величин: таких как давление, объём или внутренняя энергия, потому что является свойством не системы, а того, как мы эту систему рассматриваем. К сожалению в курсе термодинамики её обычно рассматривают наравне с другими термодинамическими функциями, что усугубляет непонимание.
      энтропия
      Так что же такое энтропия?
    • Karma Driven Development (KDD)

      В качестве предисловия


      Началось все в феврале 2014 года с приглашения посетить конференцию AgileDays2014. Вечером того же дня я засел на сайте конференции, чтобы выделить интересные мне темы и спланировать посещение докладов. Через 5-10 минут я уже смотрел запись выступления с AgileDays 2013 «Свобода и ответственность» Антона Волкова из Alternativa Platform.

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

      Для того, чтобы взрастить чувство ответственности нужно:
      • Добровольное принятие ответственности. Например, когда человек сам называет срок выполнения задачи, он принимает ответственность. А если срок спускают сверху ни о каком принятии ответственности речи не идет, она на том, кто спустил срок;
      • Свобода выбора — люди в праве решать какую работу брать, выбирать стратегию решения задачи, с кем работать (определяют состав команд);
      • Последствия (положительные и отрицательные) от принятых решений, действий и бездействий. Например, сдал качественно выполненный функционал в срок, получил признание коллег и, возможно, дополнительное денежное вознаграждение. Или, допустил баг в продуктовой среде, получи нагоняй и порицание от коллег.
      Читать дальше →
    • Защищаем приватные ключи от кражи из VPS

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

        В одном из проектов, сделанных в Parallels Labs, наш студент исследовал возможность реализации виртуального Hardware Security Module (HSM). В результате он добавил свою реализацию VHSM в open-source проект OpenVZ. Подробнее о его решении читайте под катом.
        Читать дальше
      • Автоматизация тестирования с применением Ruby и WATIR

        image
        Уважаемые посетители ресурса habrahabr.ru! Мы хотим познакомить Вас со статьей Джереми Суареса (Jeremy Suarez), инженера по автоматизации тестирования. Если Вы планируете организовать автоматизированное тестирование на своем проекте с применением языка Ruby и WATIR – эта статья придется Вам как нельзя кстати. Джереми описывает все простым языком, на элементарных примерах. После прочтения статьи у Вас сформируется четкое понимание процесса – от его начальных шагов, до завершающего этапа.
        Читать дальше →
        • +1
        • 10.2k
        • 7
      • 10 сайтов для поиска работы в Европе

          Поиск работы – задача не из простых, особенно в текущих неблагоприятных экономических условиях. Европейский ресурс Tech.eu в честь запуска своего сервиса по поиску работы подготовил список из десяти сайтов, которые помогут вам подыскать себе место под европейским солнцем, если вы, по какой-либо причине, желаете уехать на заработки в ЕС.
          Завожу трактор
        • Обыск и арест электронных устройств и носителей информации при пересечении границы США



            «Право народа на охрану личности, жилища, бумаг и имущества от необоснованных обысков и арестов не должно нарушаться...» — так начинается Четвертая поправка к Конституции США.

            Можно ли провести обыск электронных устройств без санкции суда? Помогут ли средства криптографии? Каковы границы неприкосновенности личной жизни в цифровую эпоху, при пересечении государственной границы США? Если вам это интересно, прошу под кат.
            Читать дальше →
          • Сообщения в глубине: удивительная история подводного Интернета

              Интернет — неотъемлемая часть нашей жизни, невероятно сложная сеть, строившаяся на протяжении многих лет, фактически — это сеть кабелей, опоясывающих всю Землю, в том числе проходящая через моря и океаны. Человечество прошло долгий путь с момента прокладки первого трансатлантического подводного телеграфного кабеля в 1858 году между Соединенными Штатами и Великобританией. В этой статье мы расскажем о том, как Интернет преодолел «водные барьеры», многокилометровые глубины и подводные катаклизмы, какие сложности были на пути и как невероятно сложно поддерживать эту систему в связанном состоянии в наше время, каких колоссальных затрат средств и энергии это требует.

              Читать дальше →
            • Анонимизация всего траффика через VPN + TOR/I2P. Собираем миддлбокс с нуля

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



                Это поможет не думать о бесконечных настройках прокси и onion, перестать бояться на тему «а не сливает ли торрент клиент мой реальный IP адрес, так как не полностью поддерживает прокси?» и, наконец, быть застрахованным от законодательного запрета TOR-а в России.

                Когда я говорю «TOR», я подразумеваю «TOR и I2P». По схожей методике сюда можно подключить любой даркнет.

                Статья — «чисто конкретная». Теория уже неплохо изложена в статье Pandoshabrahabr.ru/post/204266. В данном тексте будет дана детальная инструкция «как сделать, чтобы работало».

                Постановка задачи


                1. Мой компьютер должен по нажатию одной кнопки переходить в режим «весь трафик — не русский».

                2. По нажатию второй кнопки он должен переходить в режим «весь траффик идет через TOR»

                3. Третья кнопка — для I2P.

                4. Входная TOR-нода должна находиться за рубежом.

                5. Все это должно работать под linux, windows, android. Заранее: с OS X и iPhone тоже все в порядке, просто у меня их нету, так что протестить не смогу.
                Далее
              • AngularJS 1.x – перевод курса от CodeSchool

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

                Введение


                AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
                Читать дальше →
              • Копи деньги смолоду или пара утверждений, легко проверяемых в Excel

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

                  Приведу два простых примера, иллюстрированных табличками в Excel. Для затравки вопрос: имеются два ровесника: Вася и Петя. Вася фрилансер и ему 22 года. Он начал откладывать по штуке долларов в год и откладывал их до 30 лет (всего 8 лет). Потом родился ребенок, с деньгами стало туговато и откладывать он больше не смог. Петя же наоборот, в начале карьеры откладывать не мог, но в 30 лет он стал тимлидером и наконец-то смог относить в банк по той же штуке ежегодно. Делал он это аккурат до выхода на пенсию, т.е. до 65 лет (итого 36 лет). Вопрос: у кого в 65 лет денег на счету больше? Правильный ответ: конечно же у Васи.
                  Читать дальше →
                • 10 способов хранить свои проводки

                    wires
                    Уверен, у каждого хабрачеловека со временем количество различных проводов и шнуров от телефонов, КПК и прочих девайсов начинает превышать все разумные пределы. Стол-то не резиновый. Но не отказываться же в конце концов из-за этого от любимых гаджетов. В этой статье я хочу привести несколько изящных дизайнерских решений, чтобы вы могли «хранить свои проводки» в порядке и радости для глаз. Как и советовал профессор Губерт Фарнсворт.

                    Читать дальше →
                  • Перестаньте называть себя программистом и другие карьерные советы

                    • Translation
                    Есть один курс, который я бы добавил в программу обучения по всякой инженерной специальности, и он не о компиляторах или сложности алгоритмов. Это “Введение в реальность индустрии”, ибо об этом не говорят и это приводит к никому не нужным обломам. Эта статья претендует стать README.txt для молодого инженера в деле построения карьеры. Ее цель — сделать вас счастливее, заполнив пробелы в образовании относительно того, как работает реальный мир. Я не призываю следовать написанному как подробному руководству, но я надеюсь, что эта информация окажется для вас более ценной, чем то ничто, что вам рассказали об этом в университете.
                    Читать дальше →
                  • Советы front-end разработчику



                    Привет, читатель хабра.

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

                    Первое мое общение с HTML и CSS было 10 лет назад, еще в школе, когда у меня только появился интернет, и я понял что тоже хочу делать странички, которые сможет увидеть весь мир. С тех пор у меня есть как минимум 5 полных лет опыта разработки сайтов по-взрослому. Сейчас я могу без лишней скромности сказать, что сверстал я уже пару сотен сайтов, большинство из которых, как ни странно, совершенно не совпадают с моими текущими требованиями к верстке.

                    Я не хочу рассказывать как надо делать, эта статья результат моего опыта и попытка написать рекомендации тем, кто только начинает, хотя и для матерых верстальщиков (слово режущие слух) здесь могут найтись интересные идеи.
                    Если ты заинтересовался прошу под кат…
                    Читать дальше →
                  • Несколько полезностей по работе с NPM

                    image

                    NPM — пакетный менеджер для node.js, аналог GEM в RoR. В статье несколько советов по его использованию.

                    Установка пакетов


                    Все знают
                    # Устанавливает пакет express
                    npm install express
                    

                    Какие варианты еще есть?
                    Читать дальше →
                  • Десктоп в домашнем сервере или «всё-в-одном»

                      image
                      Цель: недорого собрать систему поддерживающую проброс PCI-устройств в виртуальную машину (c IOMMU). Создать полноценное рабочее место, поднять виртуальный маршрутизатор и еще полезные мелочи.
                      Читать дальше →
                    • Миша… нет, Серёжа… нет, Полина! Node-Polina!

                        image

                        Проектируя архитектуру сервиса вы выбираете инструменты, наиболее подходящие для решаемых вами задач. Но чтобы использовать их по максимуму, необходимо найти самый надёжный и удобный драйвер. Конечно, если вы программируете на Python или, к примеру, PHP, найти нужный драйвер не проблема, ведь за много лет разработчики понаписали всякого, что проверено годами и стабильно работает. Но если вы программируете для node.js — это становится проблемой, драйверы скрипят, утекают и отказываются стабильно работать.
                        В данной статье мы расскажем о проблемах, с которыми столкнулись при выборе драйверов, и как их решили.
                        Читать дальше →
                      • Инструкция по выживанию для штатного системного администратора

                          Один в поле – ИТ-директор!


                          image

                          Время от времени меня приглашают в небольшие компании чтобы «разобраться» с их единственным системным администратором. Список претензий к работе их штатного специалиста всегда примерно одинаков: медленно выполняет поставленные задачи, часто «ничего не работает», а даже был вот такой случай…
                          При этом зачастую уровень претензий к работе системного администратора никак не коррелирует с его уровнем технической компетенции, а, в основном, связан с отсутствием у системных администраторов минимальных управленческих компетенций, столь необходимых для работы в компании, в которой ты единственный понимающий в ИТ человек.

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