• «Ошибки в ДНК» или как неправильный дизайн может приводить к миллионным убыткам

      Написать эту заметку меня побудили очередная статья с «криком души»: ну почему Windows в очередной раз требует перезагрузки при изменении чего-либо (обычно это установка/удаление программ, но бывают и другие случаи)? Почему разработчики Windows-приложений — такие лохи, а разработчики Linux-программ (где таких сообщений при установке «обычных программ» не бывает) — такие молодцы?

      Этот феномен всем давно известен — но задумывались ли вы о том откуда у него «ноги растут» и почему в других операционных системах (Linux, MacOS X и т.п.) подобные окна являются чем-то исключительным, а в Windows — постоянным?
      Читать дальше →
    • Как устроен парсер Python, и как втрое уменьшить потребление им памяти

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

        КДПВ

        В Python всё немного сложнее: парсеров два. Первый парсер руководствуется грамматикой, заданной в файле Grammar/Grammar в виде регулярных выражений (с не совсем обычным синтаксисом). По этой грамматике при помощи Parser/pgen во время компиляции python генерируется целый набор конечных автоматов, распознающих заданные регулярные выражения — по одному КА для каждого нетерминала. Формат получающегося набора КА описан в Include/grammar.h, а сами КА задаются в Python/graminit.c, в виде глобальной структуры _PyParser_Grammar. Терминальные символы определены в Include/token.h, и им соответствуют номера 0..56; номера нетерминалов начинаются с 256.

        Проиллюстрировать работу первого парсера проще всего на примере. Пусть у нас есть программа if 42: print("Hello world").
        Читать дальше →
      • Как улучшить свой стиль программирования?

        Исповедь 1


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

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

          В свете дискуссии, развернувшейся в комментариях к посту про "российский смартфон на андроиде", расскажу о том, как я сделал российский вычислительный комплекс с двумя экранами (РВК-ДЭ).
          Читать дальше →
        • Как потерять время и деньги

            Этот пост — перевод эссе Пола Грэма "How to lose time and money".


            Когда мы продали наш стартап в 1998 году, я внезапно разбогател. Мне пришлось задуматься о том, как не потерять это богатство. Я знал, что возможно превратиться из богатого человека в бедного, точно также, как из бедного в богатого. Но в то время как я потратил несколько лет на то, чтобы узнать путь от бедности к богатству, я не знал практически ничего о пути от богатства к бедности. Теперь я должен был узнать это, чтобы избежать этого.
            Читать дальше →
          • Никто ни хрена не знает, что он делает или Три типа знания

            • Перевод
            Наткнулся недавно за любопытную статью под названием «No One Knows What the F*** They're Doing (or The 3 Types of Knowledge)». Если точнее, то эту статью разослала нам наша менеджер проекта. Представляю вашему вниманию свой перевод этой статьи.
            (Я попытался передать экспрессивный заголовок максимально близко — но всё равно не получилось, буду рад предложениям, как можно более точно его передать).

            Читать дальше →
          • Инфляция и образование

              EduflationЯ понимаю, что этот топик не совсем по тематике Хабрахабра, но тем не менее он касается каждого из нас. И я просто хочу обратить Ваше внимание на вопрос, который меня очень беспокоит.

              Не нервничайте. Вы услышали слово инфляция, но это не значит, что я буду рассказывать про $самизнаетечто. Тогда при чем здесь образование? — спросите Вы. При всем! Дело в том, что прямо на наших глазах происходит одна ужасная вещь, мимо которой нельзя пройти равнодушным и которую мы просто обязаны заметить.

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

              А все из-за того, что иметь высшее образование раньше — было круто. Но сейчас получение диплома превратилось в обычный мудатский ритуал, который должен пройти каждый. Ведь иначе, по мнению общества, человек не полноценный?

              Читать дальше →
            • Как стать «ранней пташкой»


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

                Хорошо вставать до рассвета,
                такая привычка способствует здоровью,
                богатству и мудрости.
                Аристотель


                «Жаворонками» рождаются или становятся? В моём случае совершенно точно имело место становление. Когда мне было чуть больше двадцати, я редко ложился спать раньше полуночи и почти всегда вставал поздно. Обычно я не начинал свои дела до конца обеда.

                Но через некоторое время я уже не мог не замечать явную зависимость между успехами и ранним подъёмом, даже в моей личной жизни. В те редкие случаи, когда я вставал рано, моя производительность почти всегда была выше, и не только утром, но и в течение всего дня. Кроме того, я был в прекрасном расположении духа. Будучи человеком, который активно добивается своих целей, я решил выработать привычку рано вставать. Я просто поставил будильник на 5 утра…
                Читать дальше →
              • Первые шаги на пути к покупкам на ebay, dealextreme, focalprice, kaidomain…

                  Не секрет, что на ebay, DX, KD и прочих онлайн-магазинах существует много гаджетов и товаров, которых в РФ не найти. Чтобы удовлетворить свои гиковские потребности, а также просто тратить с умом, рано или поздно приходится обращаться к интернет магазинам. Однако новички теряются во всех этих «палках, клеймах, лотах, диспутах, EMS, USPS и прочее», а также некоторые не владеют английским для того, чтобы элементарно зарегиться в paypal.
                  Для этой цели админом форума ebay-forum.ru был создан подробнейший pdf-мануал, с которым я и предлагаю всем желающим ознакомиться.

                  1. Регистрация

                  Регистрация в PayPal для России
                  Регистрация на аукционе eBay
                  Верификация PayPal аккаунта

                  2. Покупка

                  Часть1: Покупка лота — аукцион
                  Часть2: Покупка лота — фиксированная цена
                  Часть3: Оплата выгранных лотов по PayPal

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

                  Added
                  т.к. возникли вопросы по картам, то немного углубимся

                  visa электрон не пройдет в 90% случаев по личному опыту. Нужна visa классик, но опять таки не всех банков. Гарантированно с paypal работают следующие карты
                  * ВТБ24, Виртуальные карты
                  * Альфа-банка, Виртуальные карты
                  * Банк Москвы, Visa Virtuon
                  * Промсвязьбанк, MasterCard Virtual
                  * Мастер-банк, Visa Virtuon
                  * UniCredit Bank, Visa Virtuon
                  * Собинбанк, MasterCard Virtual, Visa Virtuon
                  * Банк Возрождение, Visa Virtuon
                  * Visa Unembossed Финсервис банка
                  * GE Money Bank, Visa Classic Unembossed

                  — Из комментов:
                  Беларусь, Банк «Москва-Минск» Visa Electron принимается в ПэйПал, если тупо в адресе вместо Беларуси указать Россию

                  карточка виза классик (самая обычная) промсвязьбанка 100% работает с пайпалом

                  VISA Electron банка Русский Банк Развития (www.rbr.ru) — не получилось (PayPal сказал, что карта не подходит)
                  VISA Classic банка Raiffeisen BANK (www.raiffeisen.ru) — успешно зарегистрировался

                  VISA Classic Балтийского банка и VISA Gold Банка Санкт-Петербург нормально работают с онлайновыми магазинами и PayPal

                  Регистрировал на PayPal карту MasterCard Virtual от УралСиб — работает отлично, обслуживание 100р\год, интернет-банк бесплатный

                  — Чтобы узнать подойдет ли Ваша карта для оплаты в интернете, просто позвоните в банк и спросите у них об этом.
                  Карту какого банка выбрать НЕ ВАЖНО. Единственное на что стоит обратить внимание — это на интернет банкинг/смс оповещения, чтобы контролировать сколько денег на текущем счету и сколько снялось с карты.
                  Также имеет смысл добавить, что банки-эмитенты виртуальных карт могут накладывать ограничение на максимальную сумму расходуемых средств в месяц. Так у ВТБ24 это 500долл. Т.е. вы в месяц сможете совершить покупок на сумму до 500долл.
                • Для запуска мечты времени всегда достаточно

                    Это перевод статьи из блога 37signals.

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

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

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

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

                    Я получил множество четверок и троек и я горжусь этим, потому что я почти не тратил на это время. Время, которое я мог потратить на чтение моего собственного курса обучения, начало моих новых проектов, запуск собственного бизнеса.

                    И я это сделал. За время моего обучения я создал Instiki, Rails, Basecamp и встал на путь соучредителя 37signals. Как вы думаете, мог ли я заниматься всем этим, одновременно получать сплошные пятерки и иметь кучу свободного времени для игры в World of Warcraft? Нет.

                    Если вы по-настоящему сильно хотите что-то сделать, вы найдёте время, независимо от других условий. Не позволяйте себе попасться на крючок оправданий. Это слишком просто и, если быть честным — кроме вас это никого не волнует.

                    Именно вы полностью отвечаете за воплощение ваших снов в реальность.
                  • Генная инженерия от A до Z часть 3

                      Краткое содержание предыдущих серий:

                      Ученые открыли ген синего свечения. Мы прочитали об этом гене загорелись сделать светящуюся трансгенную елку. Нашли в специализированных ресурсах его название и последовательность, выбили командировку у шефа и скатались туда, где живет животное – бутявка, в которой содержится этот ген.
                      Путем различных ухищрений с применением специального оборудования мы получили чистые молекулы ДНК гена bl1.
                      К этим молекулам ДНК навесили служебные последовательности для работы внутри клетки, и создали трансгенные бактерии E.coli на их основе.

                      Читать дальше →
                    • Логика английских времен

                        Изучавшие или изучающие английский язык знают, каким страшным может казаться множество английских временных форм глаголов.
                        Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
                        Читать дальше →
                      • Песню группы Radiohead исполнили ZX Spectrum, принтер, сканер и жёсткие диски

                          Группа Radiohead после выхода последнего альбома In Rainbows (который известен тем, что распространялся по Сети за произвольную стоимость) объявила о конкурсе ремиксов на песню Nude.

                          Джеймс Хьюстон (не имеющий отношения к группе) подошёл к делу творчески. Он синхронно запустил различные компьютерные (и не очень) устройства недавнего прошлого так, чтобы из их побочных шумов получилась та самая композиция Nude. Сначала около 70 секунд шума загрузки программы с плёнки, потом всё начнётся.


                          Подробности
                        • 10 способов стать хорошим программистом

                          • Перевод
                          Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
                          Даг Линдер

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

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

                          Читать дальше →
                        • О компиляторах и интерпретаторах


                          Если ты всегда мечтал написать свой язык программирования — добро пожаловать. Здесь ты наверняка найдёшь для себя что-нибудь интересное.

                          GitHub-юзер yawnt собрал чудесную подборку ссылок для любителей драконов, языков и прочих вкусных внутренностей. А знающие камрады в комментариях наверняка поделятся с тобой и другими яствами.

                          Пишет yawnt следующее:

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

                          Я не включил (и не собираюсь) в список ссылки на официальную документацию, т. к. считаю очевидным, что первым делом следует смотреть именно туда ;P.
                          Итак, куча интересных ссылок
                        • Перешагивать скамейку


                            Недавно моя полуторогодовалая дочь участвовала в соревнованиях по бегу. Несколько малышей выходили на дорожки (примерно 4 метра длиной) и, по сигналу судьи, бежали вперёд наперегонки.

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

                              Миф 1. Университет не должен давать профессию — университет должен учить студента учиться.


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

                              Недаром, когда идет набор абитуриентов, все вузы кричат: «наши выпускники возглавляют банки, заводы и работают на самых престижных должностях», «мы вас научим тому-то и тому-то, да вообще, всему что только может понадобится».
                              image
                              И вот на пятом курсе подходит очередной выпускник к лектору и говорит:
                              — Профессор, я иду на красный диплом, но не могу найти работу.
                              — Задача университета — научить человека учится.
                              — ??
                              Читать дальше →
                            • Кое-что о соглашениях об именах почтовых ящиков


                                Заведя для себя «почту для домена» на Яндексе, я решил открыть свободную регистрацию посторонним юзерам почтовых ящиков на своем «модном» домене. Помимо включения функции catch-all, которая направляет всю входящую почту несуществующих ящиков моего домена на мой основной ящик, предо мной встала необходимость зарезервировать за собой все «стандартные» названия ящиков, чтобы не было недоразумений, когда какое-то имя уже забил посторонний, и вся «служебная» почта уходит совсем не вам. В П.Д.Д. можно, конечно, в любой момент экспроприировать любой ящик подконтрольного домена, но ведь осадочек-то остается. Я озадачился: какие же имена почтовых ящиков являются стандартными и системными? Техподдержка Яндекса ответила, что они резервируют для себя только имя postmaster@ на каждом домене, чтобы отслеживать жалобы и проблемы с почтой, и что на данный момент вопрос о наборе резервированных имен у них остается открытым. Далее, результат поиска в интернете оказался немного предсказуем.
                                Читать дальше →
                              • Запоздалая оптимизация

                                • Перевод
                                Вашему вниманию предлагается перевод статьи Дениса Форбса (Dennis Forbes) "The Sad Reality of Post-Mature Optimization". Превосходные иллюстрации также взяты из оригинальной статьи.

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

                                На каком этапе разработки пора обратить внимание на производительность? В какой момент оптимизация перестает быть преждевременной и становится своевременной?

                                Читать дальше →