• Как я начал писать сторонние проекты, чтобы набраться опыта

    • Translation

    (Поскольку люди спрашивали: Sublime Text 3 с «Spacegray Light» («платиново-серый светлый») из Materialize и гарнитура Ubuntu Mono Bold)

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

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

    Если вы сейчас изучаете компьютерные науки или предполагаете делать это, то надеюсь, что вам будет полезен мой опыт.
    Читать дальше →
  • Простой Blender. Часть 4

    • Tutorial

    КДПВ. System's check.

    Дисклеймер


    Как вы заранее догадались, в этой серии я тоже не покажу, как нарисовать танк. В этой серии я напишу про менеджмент объектов (в прошлой писал про геометрию). Просто потому, что сейчас — самое время (вообще, я хотел вставить эту часть сразу после первой, но не срослось).
    Где. Мой. Танк?!
    • +21
    • 33.5k
    • 6
  • Пользуйтесь подсветкой кода

    Это обзор и частичный перевод статьи Advait Sarkar из Computer Laboratory, University of Cambridge «The impact of syntax colouring on program comprehension».

    Краткое содержание


    Взяли 10 случайных «computer science» студентов-магистров из University of Cambridge (на самом деле 7, так как 3 очкарика оказались частично несовместимы с оборудованием Tobii2 X120 eye tracker). Предложили разбираться с короткими вычислительными задачами на Python (надо было назвать корректный результат выполнения кода). Замеряли время выполнения задач. Не давали ничего записывать на бумажке (только думать, можно вслух). Следили за глазами с помощью упомянутой окулографической системы.

    В конце попросили оценить свой опыт в программировании (да, с учетом возможного эффект Даннинга — Крюгера).

    Выводы


    • Подсветка помогает быстрее понимать код. На примере 6 задач с общим временем решения в 13 — 20 минут:
      • 8.4 секунды разницы между медианами времени выполнения задачи (с гипотезой, что для больших задач эффект становится заметнее)
      • значительное (на 23 штуки) уменьшение количества переключений внимания (переводов и фиксации взгяда с места чтения на различимо другую область задания)
    • эффективность помощи обратнопропорциональна квалификации (но нелинейно, т.е. не установлено, что когда-то подсветка перестанет помогать)
    • работает только в том случае, если вы знаете что каким цветом подсвечивается
    • мозг может игнорировать подсказки подсветки, если вы «ищете свободным поиском» (т.е. подсветка не мешает размышлять)

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



    В общем, все хорошо, всем цветов!

    Графики, цифры и более подробные выводы из статьи:
    Читать дальше →
  • Лучшее время для изучения микроконтроллеров

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

    Почему я решил, что этот вопрос интересен аудитории Хабра? Достаточно проанализировать количество добавления в избранное некоторых постов и выводы напрашиваются сами собой.

    С другой стороны, в моём текущем окружении очень много программистов, но почти нет имбедеров. Когда я разговариваю с ними на тему микроконтроллеров, у меня создаётся впечатление, что мнение о них у многих осталось на уровне 10-летней давности.
    Читать дальше →
  • Осваиваем Linux за три недели

      Идея вводного курса по работе с Linux возникла у нас с коллегами довольно давно. Я с 2011 года занимаюсь биоинформатикой в Лаборатории алгоритмической биологии СПбАУ РАН (тут и тут мой напарник писал про то, чем мы занимаемся). Сразу нужно сказать, что работа биоинформатика без Linux практически невозможна, поскольку большинство биоинформатических программ созданы именно под эту операционную систему и работают только на ней.

      xkcd.com/456/

      В силу того, что это область на стыке наук, мы постоянно общаемся с биологами. Биологам же сейчас приходится работать с очень большими объемами данных, поэтому умение использовать Linux, оптимальную для подобных задач операционную систему, становится необходимым навыком. На самом деле, речь не только об умении обращаться с Linux, а в целом о компьютерной грамотности: какие существуют правила работы на сервере, как загружать и эффективно хранить файлы с данными, какие программы запускать для их обработки и как это сделать и т.д. — все те вещи, которые как упрощают и ускоряют вашу работу, так и значительно облегчают совместную деятельность с коллегам. Несмотря на то, что разобраться с Linux можно и самостоятельно, почитав умные книжки и сайты, для людей из не технической среды это часто вызывает определенные сложности и многие сдаются на начальных этапах освоения этой ОС (например, на знакомстве с командной строкой).

      На основе нашего опыта я и мой коллега Андрей Пржибельский (@andrewprzh) изначально собирались провести несколько занятий для биологов по компьютерной грамотности. А потом эта идея выросла в трехнедельный открытый онлайн-курс (MOOC) Института биоинформатики на русском языке, который позже был сужен до именно введения в Linux, как отправной точки, — поскольку вместить все в три недели оказалось очень и очень трудно. Курс уже начался и оказался достаточно популярен (на данный момент на него записалось более пяти тысяч человек), но первый дедлайн по заданиям — 24 ноября, поэтому еще можно присоединиться без потери баллов или просто изучать курс в свободном режиме (все материалы останутся открытыми).
      Читать дальше →
    • «Программирование мышкой» в XCode 6 для Swift

        Привет, Хабрахабр!

        По причине недавно возникшей необходимости, пришлось писать под iOS, и я заметил сильную нехватку гайдов на русском языке даже для элементарных действий вроде «прицепить к нажатию кнопки какое-то действие», «считать данные из текстового окошка». Статья для начинающих разработчиков под iOS, прошу таких под кат.
        Читать дальше →
      • «Программирование мышкой» в Swift ч.2 — навигация

        • Tutorial
        И снова привет, хабаровчане!

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

        Читать дальше →
        • +15
        • 20.1k
        • 3
      • Бесплатный CppCat для студентов

          Бесплатный CppCat для студентов
          CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010-2013. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си++. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся. Достаточно прислать фотографию студенческого билета или зачётной книжки.
          Читать дальше →
        • Интервью Скотта Мейерса в Яндексе. О настоящем и будущем C++

            Скотт Мейерс — один из самых известных и признанных экспертов по C++, автор серии книг «Эффективное использование C++», которые читал почти каждый профессиональный разработчик на C++ и которые оказали заметное влияние на всю экосистему и качество использование языка.

            Лично я стал почти его фанатом ещё студентом, когда в начале 2000-х читал статьи Скотта, лежащие в основе его книг (сами книги на тот момент в России ещё не были переведены, а на английские с Амазона у меня, как бедного студента, денег не было).

            Поэтому, когда он некоторое время назад приехал в Яндекс, чтобы провести тренинг для наших разработчиков, я не мог не воспользоваться этим шансом, чтобы поговорить с ним. Разговор получился о том, каким он видит будущее C++ и программирования вообще, как отличаются разработчики в разных странах и в разных индустриях, и о нём самом.



            Полные тексты оригинала и перевода интервью
          • Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»

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

              Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».

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

              Так какой же важный секрет люди упускают из виду?
            • Мои любимые ошибки в программировании

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

              Мне нравится подразделять эти ошибки на три большие группы: провалы, погрешности и недочеты. Провал – это когда ты сидишь тупо смотришь на экран и тихо говоришь «ой»; вещи вроде удаления базы данных или целого сайта, записи чего-либо поверх результата трехдневной работы, или случайной отсылки письма 20 тысячам человек.

              Погрешности могут быть различными: от простых синтаксических ошибок (например, забыть поставить } ) до критических ошибок и ошибок в вычислениях.

              Когда ошибка настолько неочевидна и неуловима, что это почти прекрасно, я зову это недочетом. Такое случается, когда кусок кода сталкивается с совершенно непредсказуемыми и весьма маловероятными обстоятельствами. Вы откидываетесь на спинку стула и думаете «Ого!», словно увидев яркую радугу или падающую звезду.
              Читать дальше →
            • Учебник по языку программирования 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-фреймворк для веб-приложений)

                Читать дальше →
              • Основы Python — кратко. Часть 6. Расширенное определение функций.

                  Продолжение, начало см. тут.

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

                  Параметры по-умолчанию


                  Для всех параметров функций можно указывать значения по-умолчанию, это дает возможность вызвать функцию с меньшим числом параметров. Например, у нас есть функция для авторизации пользователя на сайте:
                  def login(username="anonymous", password=None):
                      """Тут какие-то действия"""
                      pass
                  
                  # вызвать эу функцию мы можем одним 
                  # из нижеприведенных способов
                  login("root", "ujdyzysqgfhjkm")
                  login("guest")
                  login()
                  # мы можем указать какой из параметров мы передаем, 
                  # указав его имя в явном виде
                  login(password="nobody@mail.com") 
                  

                  Читать дальше →
                • Основы Python — кратко. Часть 5. Определение функций, основы.

                    Начав писать главу про ООП, понял что совсем забыл освятить такой большой и нужный раздел Пайтона как функции. Тема это большая и обширная, потому, чтобы не сильно растягивать паузу между уроками, решил разделить ее на 2 части. Сначала расскажу основы, потом уже углубленные особенности Пайтоновского функциестроения.

                    Функции в Пайтоне объявляются не просто, а очень просто. Вот пример самой простой:

                    def empty_func():
                        pass

                    Начинается объявление с ключевого слова def, что как не сложно догадаться является сокращением от define. После него идет имя функции. После имени в круглых скобках задается список параметров, в данном случае отсутствующих.
                    Читать дальше →
                  • Основы Python — кратко. Часть 4. Генераторы списков

                      List comprehensions

                      Продолжим наш цикл уроков. Добрый день.

                      Генерация списков

                      Генерация списков (не знаю как адекватно перевести на русский list comprehensions) — яркий пример «синтаксического сахара». То есть конструкции, без которой легко можно обойтись, но с ней намного лучше :) Генераторы списков, как это не странно, предназначены для удобной обработки списков, к которой можно отнести и создание новых списков, и модификацию существующих.
                      Допустим, нам необходимо получить список нечетных чисел, не превышающих 25.
                      В принципе, только познакомившись с работой команды xrange решить эту проблему несложно.

                      >>> res = []
                      >>> for x in xrange(1, 25, 2):
                      ...     res.append(x)
                      ...
                      >>> print res 

                      В общем-то, полученный результат — целиком нас устраивает всем, кроме длинной записи. тут-то на помощь и придет наш «сахарок». В самом простом виде, он обычно
                      выглядит так:
                    • Основы Python — кратко. Часть 3. Списки, кортежи, файлы.

                        В общем-то последняя из готовых глав. Остальные будут выходить чуть реже, поскольку еще не написаны (но я уверен что будут, хотя это зависит только от ваших пожеланий, уважаемые читатели :)

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

                        В общем, те кому не интересно — читают следующую новость, а остальных — прошу пройти
                        под кат
                      • Основы Python — кратко. Строки.

                          Поскольку число положительных отзывов превысило число отрицательных, продолжу выкладывание уроков. Те кто уже знаком с основами — можете или просто пропустить урок, или попробовать сделать задание 3 самым коротким способом :)

                          Для начала маленькое замечание.

                          Начиная с Python 2.3, всем, кто использует не-ASCII кодировку нужно добавлять указание о кодировке в самом начале программы. Для русского языка это будет в основном:
                          # -*- coding: cp1251 -*-

                          или использовать для хранения исходных текстов файлы utf-8 (что предпочтительней).

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

                          Строки

                          Существует множество способов задать строку в Пайтоне...
                        • Основы Python в кратком изложении

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

                            Python для начинающих. Глава первая. «О чем это мы»

                            На всякий случай, немного скучного «evangelism». Кому он надоел, можно пропустить несколько абзацев.
                            Python (читается как «Пайтон» а не «питон») — скриптовый язык, разработанный Гвидо ван Россумом в качестве простого языка, легкого в изучении новичку.
                            В наше время Пайтон – широко распространенный язык, который используется во многих областях:
                            — Разработка прикладного ПО (например linux-утилиты yum, pirut, system-config-*, IM-клиент Gajim и многие другие)
                            — Разработка web-приложений (мощнейший Application-сервер Zope и разработанная на его основе CMS Plone, на основе которой работает например сайт ЦРУ, и масса фреймворков для быстрой разработки приложений Plones, Django, TurboGears и многие другие)
                            — Использование в качестве встраиваемого скриптового языка во многих играх, и не только (в офисном пакете OpenOffice.org, 3d редакторе Blender, СУБД Postgre)
                            — Использование в научных рассчетах (с пакетами SciPy и numPy для расчетов и PyPlot для рисования графиков Пайтон становится практически сравним с пакетами типа MatLab)

                            И это конечно далеко не полный список проектов, использующих этот замечательный язык.

                            Так, что же необходимо новичку для изучения Пайтона?
                          • Portable Python — все свое ношу с собой!

                              Если встретить linux-дистрибутив без интерпретатора python почти невозможно, то по отношению к Windows ситуация диаметрально противоположная. А питон ведь кроссплатформенный!
                              Конечно, можно поставить интерпретатор и на windows, но если хочеться запустить любимый скрипт на чужом/рабочем компьютере, под управлением данной ос?
                              Что, тоже мучиться с установкой? А если на машину нельзя/нецелесообразно ставить ПО. Да и время на это тратить, ради запуска одного скрипта не хочется?
                              Тогда, на помощь нам придет Portable Python!

                              Нет, не нужно идти на сайт и покупать на нем специальную флешку, достаточно скачать архив, и установить питон на свою.
                              Читать дальше →
                            • Первые шаги в программировании на Python

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