• Семь вещей, которые полезно знать о программистах

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

      — Ложась спать программист ставит рядом на столик 2 стакана.
      — Один с водой — если захочет пить, второй пустой — если не захочет.

      Смеялись только программисты, а остальные и он, в том числе, анекдот не поняли. Пришлось сильно постараться, чтобы объяснить гуманитарию, что в этом анекдоте смешного.

      Программист – относительно новая профессия. Зародилась она по времени где-то между физиком-ядерщиком и космонавтом. Многие «лирики» и даже некоторые «физики» и «космонавты» нас не понимают. И среди этих людей часто находятся наши коллеги, менеджеры, сотрудники коммерческих департаментов, отделов кадров, владельцы бизнеса, заказчики и др. Этот пост для них. Ну и немного для себя (типа, ретроспектива самоанализ).

      Disclaimer. Сейчас программистов много. Хороших и разных. Я буду писать про хороших. И то, не про всех, а про большую часть из тех, с кем имел честь вместе разрабатывать ПО.
      Читать дальше →
    • О другом подходе к устройству на работу

        … или почему я никогда не занимался веерной рассылкой резюме, а долго присматривался, затем посылал одно, и меня там брали.

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

        Этой статьёй хочу выразить протест против устоявшейся практики преподнесения себя соискателями и предложить этому «раболепию по гайдлайнам» какую-то разумную альтернативу.

        Статья для соискателей.
        Читать дальше →
      • 50 цитат о программировании всех времён

        • Перевод
        Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

        50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
        — Rick Cook

        49. Lisp — это не язык, а строительный материал.
        — Alan Kay

        48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
        — Edward V Berard
        Читать дальше →
      • Задачи на собеседованиях в Яндексе

          Открытые вакансии на должность разработчика в Яндексе есть всегда. Компания развивается, и хороших программистов не хватает постоянно. И претендентов на эти должности тоже хоть отбавляй. Главная сложность – отобрать действительно подходящих кандидатов. И в этом плане Яндекс мало чем отличается от большинства крупных IT-компаний. Так что базовые принципы, описываемые в этой статье, могут быть применимы не только к Яндексу.

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

          image
          Читать дальше →
        • Сети для самых маленьких. Часть третья. Статическая маршрутизация

          • Tutorial
          Мальчик сказал маме: “Я хочу кушать”. Мама отправила его к папе.
          Мальчик сказал папе: “Я хочу кушать”. Папа отправил его к маме.
          Мальчик сказал маме: “Я хочу кушать”. Мама отправила его к папе.
          И бегал так мальчик, пока в один момент не упал.
          Что случилось с мальчиком? TTL кончился.




          Итак, поворотный момент в истории компании “Лифт ми Ап”. Руководство понимает, что компания, производящая лифты, едущие только вверх, не выдержит борьбы на высококонкурентном рынке. Необходимо расширять бизнес. Принято решение о покупке двух заводов: в Санкт-Петербурге и Кемерово.
          Нужно срочно организовывать связь до новых офисов, а у вас ещё даже локалка не заработала.
          Сегодня:
          1. Настраиваем маршрутизацию между вланами в нашей сети (InterVlan routing)
          2. Пытаемся разобраться с процессами, происходящими в сети, и что творится с данными.
          3. Планируем расширение сети (IP-адреса, вланы, таблицы коммутации)
          4. Настраиваем статическую маршрутизацию и разбираемся, как она работает.
          5. Используем L3-коммутатор в качестве шлюза

          Читать дальше →
        • Учимся писать модуль ядра (Netfilter) или Прозрачный прокси для HTTPS

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

          Небольшое оглавление, чтобы Вы могли оценить, стоит ли читать дальше:
          1. Как работает прокси сервер. Постановка задачи.
          2. Клиент – серверное приложение с использованием неблокирующих сокетов.
          3. Написание модуля ядра с использованием библиотеки Netfilter.
          4. Взаимодействие с модулем ядра из пользовательского пространства (Netlink)

          P.S. Для тех, кому только хочется посмотреть на прозрачный прокси-сервер для HTTP и HTTPS, достаточно настроить прозрачный прокси-сервер для HTTP, например, Squid с transparent портом 3128, и скачать архив с исходниками Shifter. Скомпилировать (make) и, после удачной компиляции, выполнить ./Start с правами root. При необходимости можно поправить настройки в shifter.h до компиляции.
          Читать дальше →
        • Рейтинг фантастических романов, или Я сделаю свой «IMDB для книг», с преферансом и библиотекаршами

            Долго выбирал между «Алгоритмами», «Читальным залом» и «Я пиарюсь», в итоге остановился на Data Mining.

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

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

            1. Мастер и Маргарита. Михаил Булгаков, 1940 год
            2. Цветы для Элджернона (рассказ). Дэниел Киз, 1959 год
            3. Цветы для Элджернона. Дэниел Киз, 1966 год
            4. Битва Королей. Джордж Мартин, 1998 год
            5. Рыцарь Ордена: Клинки у трона. Сергей Садов, 2000 год
            6. Голубятня в Орехове. Владислав Крапивин, 1983 год


            Эээ… Это совсем не то, что я ожидал увидеть на первых местах в рейтинге фантастики. «Мы пойдём другим путём», — подумал я. Отказавшись от идеи найти нормальный читательский рейтинг, я просто пошёл в Вики, нашёл список лауреатов премий Хьюго и Небьюла и выбрал пару-тройку книг — как, собственно, я всегда раньше и делал.

            «А не замутить ли мне свой рейтинг книг, взяв за основу престижные премии?» — внезапно подумал я. И замутил. Знакомьтесь: top-books.info

            Путь к успеху
          • Еще несколько слов о Path MTU Discovery Black Hole

            Еще несколько слов о Path MTU Discovery Black Hole



            Вместо вступления


            Однажды для каждого настоящего системного администратора (или исполняющего обязанности такового) наступает момент истины. Ему выпадает судьба настроить маршрутизатор на компьютере с установленной ОС GNU/Linux. Те, кто это уже прошел, знают, что ничего сложного в этом нет и можно уложиться в пару команд. И вот наш админ находит эти команды, вбивает их в консоль и гордо идет к пользователям сказать, что уже все работает. Но не тут-то было – пользователи говорят что их любимые сайты не открываются. После траты некоторой части своей жизни на выяснение подробностей обнаруживается, что большая часть сайтов ведет себя следующим образом:
            1. При открытии страницы загружается заголовок и больше ничего;
            2. В таком состоянии страница висит неопределенно долгое время;
            3. Строка статуса браузера все это время показывает что загружает страницу;
            4. Пинги и трассировка до данного сайта проходят нормально;
            5. Соединение по telnet на 80 порт тоже проходит нормально.
            Обескураженный админ звонит в техподдержку провайдера, но там от него быстро избавляются, советуя попробовать настроить маршрутизатор на OC Windows, а если уж и там не работает тогда… купить аппаратный маршрутизатор.
            Я думаю, эта ситуация знакома многим. Некоторые в нее попадали сами, у кого-то с ней сталкивались знакомые, а кто-то встречал таких админов на форумах и прочих конференциях. Итак: если у Вас Такая Ситуация, то — Поздравляю! Вы столкнулись с Path MTU Discovering Black Hole. Данная статья посвящается тому, отчего это бывает, и как решить эту проблему.

            Читать дальше →
          • Кеширующий прокси-сервер на nginx. Хитрая конфигурация

            На Хабре уже есть несколько описаний Nginx, но, думаю, моя конфигурация тоже будет интересна.
            Ситуация выглядит следующим образом: есть размещённый на нескольких серверах IIS сайт (интернет-магазин), перед ним расположен балансировщик. Между ними решено установить nginx для уменьшения нагрузки на IIS.

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

            Плюс к этому хочется поддерживать валидность популярных страниц в кеше автоматически.
            Читать дальше →