• Эволюция Python-программиста

      Начинающий


      1. def factorial(x):
      2.     if x == 0:
      3.         return 1
      4.     else:
      5.         return x * factorial(x - 1)
      6. print factorial(6)


      Программирующий уже год (Ранее изучавший Pascal)


      1. def factorial(x):
      2.     result = 1
      3.     i = 2
      4.     while i <= x:
      5.         result = result * i
      6.         i = i + 1
      7.     return result
      8. print factorial(6)

      Читать дальше →
    • Купи себе немножко неBobuk'а


        Да, таким странным заголовком я решил обозначить свой новый топик. Возможно кто-то из старожилов помнит как я подсел на электронные книжки в 2008 и написал небольшой обзор Sony PRS-505, назвав "Купи себе немножко Umputun'а", так как накануне Евгений расхваливал его в Радио-Т. Здесь ситуация получилась схожая, но немного иная. Итак, когда Nook был на пол пути ко мне, в Радио-Т на этот раз о нем высказался наш товарищ Bobuk, причем не очень лестно… Но ничего! С тех пор прошло время, обновились прошивки, девайс давно зарутили и написали несколько софтин, так что постараюсь развеять миф о непригодности Nook для жизни, а так же сравним его с лучшим на сегодня, по мнению обитателей ebook форума, Sony PRS-505.



        Читать дальше →
      • Почему я не стану успешным

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

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

          Почему?
          Читать дальше →
        • 10 способов стать хорошим программистом

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

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

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

          Читать дальше →
        • Незаменимое пособие для авторов статей, текстов и постов

          • Tutorial
          "… Специально для вас, — ответил великий комбинатор. — Вы, я замечаю, все время терзаетесь муками творчества. Писать, конечно, очень трудно. Я, как старый передовик и ваш собрат по перу, могу это засвидетельствовать. Но я изобрел такую штуку, которая избавляет от необходимости ждать, покуда вас окатит потный вал вдохновения. Вот. Извольте посмотреть.

          И Остап протянул Ухудшанскому лист, на котором было написано:

          ТОРЖЕСТВЕННЫЙ КОМПЛЕКТ.
          НЕЗАМЕНИМОЕ ПОСОБИЕ ДЛЯ СОЧИНЕНИЯ ЮБИЛЕЙНЫХ СТАТЕЙ, ТАБЕЛЬНЫХ ФЕЛЬЕТОНОВ, А ТАКЖЕ ПАРАДНЫХ СТИХОТВОРЕНИЙ. ОД И ТРОПАРЕЙ"

          И. Ильф, Е. Петров, «Золотой теленок»


          Хабр — это все-таки больше СМИ, чем просто форум и тусовка «для своих». Это я к тому, что хочешь — не хочешь, а публикуя топик, ты, фактически, занимаешься журналистикой. На Хабре уже не раз упоминалась книга Александра Амзина по интернет-журналистике. Книга, на мой взгляд, удалась, и заслуживает почетного места в закладках у каждого. Тем не менее, одна ссылка хорошо, а много — лучше. Так как я не один год проработал бок о бок с журналистами, то и сам нахватался от них всякого. Под катом — джентльменский набор вкусных и полезных ссылок.
          Читать дальше →
        • Советы Google по кодированию на языке Python. Часть первая: советы по программированию


          Хай, Хабр!
          Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
          Читать дальше →
        • Собеседование на junior позицию. Антипатерны собеседующих

          Добрый день хабраюзеры! Не так давно я начал искать работу на позицию junior разработчика. Даже благодаря моему скромному резюме мне удалось побывать на не малом количестве собеседований за сравнительно малый промежуток времени. Из каждого собеседовании я выносил для себя что-то новое, где-то были мои проколы, но гораздо интереснее было замечать фэйлы меня собеседующих. Собственно о таких проколах я и хотел бы рассказать.
          Читать дальше →
        • Уязвимы по определению

            У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
            Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
            Читать дальше →
          • Свой инструмент нужно знать в лицо: обзор наиболее часто используемых структур данных

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

              Вопрос: Почему поиск в python dict на больших объемах данных быстрее чем итерация по индексированному массиву?

              Ответ: В dict хранятся хэши от ключей. Каждый раз, когда мы ищем в dict значение по ключу, мы сначала вычисляем его хэш, а потом (внезапно), выполняем бинарный поиск. Таким образом, сложность составляет O(lg(N))!

              На самом деле никакого бинарного поиска тут нет. И сложность алгоритма не O(lg(N)), а Amort. O(1) — так как в основе dict питона лежит структура под названием Hash Table.

              Причиной неверного ответа было то, что я не удосужился досконально изучить те структуры, которые лежат в основе работы с коллекциями моего любимого языка. Правда, по результатам опроса нескольких знакомых разработчиков, оказалось что это не только моя проблема, очень многие вообще не задумываются, как работают коллекции в их любимых ЯП. А ведь используем мы их каждый день и не по разу. Так родилась идея этой статьи.
              Читать дальше →
            • 10 способов улучшить свои навыки программирования

              • Translation

              1. Выучить новый язык программирования


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

              Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

              Читать дальше →
              • +215
              • 73.7k
              • 96
            • Встать на рельсы за четыре месяца или Finance on rails


              Обойдусь без копипастов и даже ссылок о том, что Ruby за зверь такой, ибо написано было уже сполна. В данном посте просто хочу рассказать о пути изучения Ruby (и, впоследствии фреймворка Ruby on Rails) человека далекого от программирования.

              1. Любопытство

              «Насколько далекого?», спросите вы, а я отвечу — «Чуть менее, чем полностью», так как в десятом классе в школе у меня были уроки программирования, парочка из которых были уделены Паскалю. Признаюсь, впоследствии о html узнал, и даже мог в Dreamweaver-e сверстать страничку или поставить готовый движок, да по инструкции налепить плагинов, но не более.
              Хотя компьютеры мне нравились, пошел я учиться на экономиста* — бакалавриат, магистратура по бух. учету и аудиту, аспирантура по финансам, работа в банке, преподавание, страхование. Но не жилось мне спокойно в финансах, — финансовый калькулятор удовлетворял необходимости решения тривиальных задач, но не удовлетворял мой мозг. А ему хотелось посчитать не только будущую и приведенную стоимость актива, но и создать массив данных из исторических стоимостей этого актива за n лет, высчитать среднюю доходность, дисперсию и, в конце-концов построить красивый график!
              Читать дальше →
            • Учебник по языку программирования Python (хабраиндекс)

                Серия статей «Основы Python»


                I, Начало
                II, Строки
                III, Списки, кортежи, файлы
                IV, Генераторы списков
                V, Определение функций, основы
                VI, Расширенное определение функций

                Об основах языка Python в сжатой форме

                Продвинутый уровень


                Сила и красота декораторов Короткий экскурс в метапрограммирование.
                Итерируем все и вся Специфика циклов в Питоне.
                Как я учился работать с XML
                Консервация объектов в Python Использование модуля Pickle.
                Memoization в Python Оптимизация работы программ.
                Простейшее рисование с помощью PIL
                Regexp и Python: извлечение токенов из текста
                Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).

                http://netsago.org/ru/docs/1/12/
                Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)

                http://djbook.ru/
                Учебник по Django (Python-фреймворк для веб-приложений)

                Читать дальше →
              • Эффект бабочки

                  Как я уже однажды писал, кто хочет — тот ищет возможности, кто не хочет — ищет причины. Раньше я считал, что это утверждение действует в 99.9% случаях, но в последнее время мое мнение слегка поменялось.

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

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