• Устраиваемся программистом за рубежом

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

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

    image

       Расскажу лишь про свой опыт восстановления зрения – именно оно больше всего подвержено риску у любого «компьютерного» человека.
    Читать дальше →
  • Обзор INSTEAD 1.2.0

      Выкладываю обзор INSTEAD, который был написан для журнала LGT непосредственно после выпуска версии 1.2.0.

      Введение


      В августе была выпущена новая версия INSTEAD — интерпретатора простых текстовых приключенческих игр. Журнал LGT уже писал об этом проекте в своем первом номере. Напомним, что больше года назад вышла первая версия программы под номером 0.7.5. Тогда вместе с интерпретатором поставлялась первая и единственная приключенческая игра «Возвращение квантового кота». Игра, будучи по своей сути текстовым приключением, содержала графику и трекерную музыку, что делало ее похожей, в том числе, и на визуальную новеллу. Такой смешанный жанр задал тон и для большинства последующих игр, написанных для INSTEAD.
      Код игр для INSTEAD пишется на Lua, а сам движок использует в своей работе SDL и в данный момент работает в Linux/Windows/Mac OS X.
      Читать дальше →
    • Квартет Анскомбе

        Статистика — это такой инструмент… Очень страшный в неумелых руках. В умелых того страшнее, способен разорвать мозг на куски.

        Вот есть последовательности A, B, C и D, про которые известно следующее:
          A B C D
        Среднее значение x 9.00 9.00 9.00 9.00
        Дисперсия х 10.00 10.00 10.00 10.00
        Среднее значение y 7.50 7.50 7.50 7.50
        Дисперсия y 3.75 3.75 3.75 3.75
        Корреляция между x и y 0.82 0.82 0.82 0.82
        Прямая линейной регрессии y = 3 + 0.5 x y = 3 + 0.5 x y = 3 + 0.5 x y = 3 + 0.5 x
        То есть все указанные величины для них совпадают. По крайней мере, до второго знака после запятой.
        А теперь смотрим глазами
      • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

          И что же них такого деформированного?
        • 50 цитат о программировании всех времён

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

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

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

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



            Автор изображения MVBen

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

            В ходе работ у меня накопилось немного готовых решений, которые я сам ныне держу у себя под рукой и крайне часто использую, чем и с вами хочу поделиться.
            Читать дальше →
          • *nix-way: Даже если тебя съели, у тебя есть как минимум два выхода

              В процессе работы с операционными системами GNU/Linux обычно привыкаешь делать какие-то операции одними и теми же средствами. Философия UNIX (*nix-way) предполагает наличие большого количества простых программ для выполнения простых действий, а результаты работы можно передавать между разными программами через потоки. Но вот представьте, что возникает ситуация, когда кто-то нечаянно, по глупости или из нехороших побуждений удалил исполнимый файл, который являлся бинарным файлом какой-то команды, которой вы более или менее часто пользовались. И что тогда делать?

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

              Читать дальше →
            • Конвертируем видео… в SVG

                Так уж сложилось, что испокон веков единственный кроссбраузерный способ показать анимацию в браузере без JS — анимированный gif. Был бы у него JPEG-based аналог — и интернет мог бы быть совсем другим… Современные альтернативы, например APNG — работает не везде и со столь же небольшим сжатием, а долгожданный тэг <video> страдает от патентов.

                Хочу поделится результатами моего небольшого академического эксперимента по конвертированию видео в формат SVG (которое затем при везении можно просто показать через <img src="">).

                Академического — потому что проблемы кросс-браузерной совместимости далеки от решения, и потому в нынешнем виде это едва-ли где-то применимо.
                SVG — это не только векторная графика, но и 3 а то и 4 метра качественного видео...
                Читать дальше →
              • Возможно, вы идете не туда



                  Анти-GTD


                  Добро пожаловать в двадцать первый век! Вот ваш iPad, вот ваш кредит, получите — распишетесь, и вставайте в очередь за Успехом — главной ценностью современного Человечества! Если на пути к Успеху вы проголодаетесь, то перекусите бигмаком, запейте диетической колой и продолжайте дальше работать изо всех сил, так как на следующей неделе ваш iPad станет неактуальным и вам, вероятно, необходимо будет приобрести новую модель. Не забывайте, про ваш абонемент в наш фитнес-центр, который не позволит вам развалиться на полпути к Успеху. Удачи!

                  — Именно так я бы сформулировал сообщение, которое каждый день доносит до нас общество. Нам больше не требуется думать, к чему нам идти, путь совершенно ясен и подсвечен яркими лампочками — нужно, во что бы то ни стало, быть Успешным, а опционально еще Лучшим и Эффективным. Теперь то, в третьем тысячелетии, это совсем не сложно, достаточно основать стартап и не вставая с кресла стать богатым персонажем кинофильма, с особняком и личным самолетом.
                  Читать дальше →
                • Ограничение проектирования систем на уровне сознания

                  Я рад приветствовать вас, дорогие читатели.

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

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

                  • Translation
                  1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
                  Читать дальше →
                • Консоль для маководов: Beyond the GUI

                  • Tutorial
                  Доброго дня, уважаемые хабравчане-маководы!

                  Сегодня я расскажу как увеличить эффективность работы в Mac OS X за счёт использования консоли.

                  Лирическое отступление


                  Думаю, ни для кого не секрет, что Mac OS является Unix-based системой, но переработанной почти до неузнаваемости. Даже консоль засунули куда подальше — не сразу и найдёшь. И вся система нацелена на использование GUI, при дефолтных настройках даже переключение между кнопками по Tab не работает — без мыши никуда. И тем не менее, Мак — это не только окошки, не только док и лаунчер. Мак это ещё и вся мощь shell скриптов и консоли!

                  Если Вы пришли из мира M$, то для начала неплохо бы поучить общие команды shell'а, например, по вот этому учебному пособию. Как минимум, нужно усвоить команды перехода по каталогам и способы запуска программ и скриптов.

                  Если Вы пришли в мир Mac OS из мира Linux'а и FreeBSD, то, скорее всего, знаете как минимум основы shell-скриптинга. Но и для вас в статье может оказаться кое-что интересное, ведь в маке есть уникальные консольные команды, которые так же полезно знать.

                  Вот о некоторых особенностях маковской консоли далее и пойдёт речь.
                  Поехали!
                • Функциональное программирование для всех

                  • Translation

                  Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

                  Мнение переводчика может иногда не совпадать с мнением автора, но переводить статью было крайне занимательно.

                  UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
                  Читать дальше →
                • Прячем Bash скрипты

                  Очень часто на фрилансе бывает, так что заказчик просит сделать некоторую работу, получив тестовую версию, принимает её и отказывается платить
                  Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
                  Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого Bash.
                  Читать дальше →
                • Собираем свои счетчики через collectd протокол

                    Приветствую!

                    Думаете как собирать счетчики со своих собственных сервисов?
                    Запарились парсить логи?
                    Постоянно забываете настроить сбор счетчиков для нового или переехавшего в другое место сервиса?



                    Тогда welcome!
                    Читать дальше →
                  • CSS3 с погружением

                      CSS3 видели и пробовали все, кого он мог заинтересовать. И закругленные уголки и падающие тени мы уже можем генерировать без лишнего труда.

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

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

                      Браузеры, поддерживающие свойства перечислены в виде CSS комментариев. Генераторы и инструменты чаще всего могут выполнять сразу несколько функций, поэтому в таких случаях я указывал их только там, где они, по-моему, справляются лучше всего.
                      Читать дальше →
                    • Уроки Python от компании Google

                        Отличный способ освоить Python — учебный класс Python в Google Code University. Уроки для этого класса написал Ник Парланте из Стэнфорда, и прошедшие курс люди отмечают не просто высокое, а фантастически высокое качество уроков.

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

                        Есть ещё скачиваемые задачки. Они довольно простые и созданы специально для начинающих. Курс идеально подходит для изучения Python программистами, имеющими опыт работы с другими языками программирования.
                      • CSS кнопки с помощью псевдо-элементов

                        • Translation
                        • Tutorial


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

                        В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

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

                          Известно, что следуя идеям старой школы, а именно, добавляя ссылки на JS и CSS в страницы, может обернуться большим временем загрузки страницы. Браузер отображает страницу по мере скачивания, но останавливается, если натыкается на тег script со ссылкой, до того момента, пока скрипт не будет загружен и выполнен. Сайты стали использовать всё большее количество скриптов, начальное отображение страницы занимает всё больше времени, к примеру, на этой странице, которую вы читаете, 13 скриптов, 7 из которых находятся в head'е. Ко всему прочему, некоторые браузеры по-прежнему придерживаются ограничений на одновременное количество загрузок с одного хоста.

                          Сразу предлагаю принять, что все JS файлы минимизированы, и передаются в сжатом виде.

                          Существует несколько решений, как то:
                          — поместить стили и скрипты прямо в страницу;
                          — установка аттрибутов async/defer тегу script;
                          — склеить все скрипты в один файл;
                          — помесить ссылки на скрипты в конец body;
                          — разместить все файлы на CDN/на разных хостах;
                          — свой вариант…

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

                          Началось всё, конечно, с того, что я взялся за один проект, и в какой-то момент мне показалось, что простенькая страница достаточно долго загружается, и посмотрел на график загрузки, и на результаты YSlow. Огонь на секунду потух в моих глазах, но зная, что может быть лучше, я полез искать,
                          как сделать лучше.