• План обучения Python и дальнейшие перспективы. Кто подскажет?

    @AlphaRiddick
    Как лучше заниматься практикой? Где поискать задания?

    Не видел, чтобы кто-то упоминал про такие ресурсы:
    www.codewars.com/dashboard
    www.checkio.org
    Ответ написан
    Комментировать
  • План обучения Python и дальнейшие перспективы. Кто подскажет?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Очень часто питон используется в качестве небольших скриптов в кроне под Линукс.

    Рекомендую ознакомиться с базовыми основами работы в Линукс консоли (bash), и принципами файловой системы в Линукс (права доступа, маски). Да и командная строка в Windows тоже нужна. Пусть не powershell, но там тоже поддерживаются и перенаправления и все такое.

    Обязательно основы SQL - питон, как и любой другой язык, активно сотрудничает с базами данных, поэтому знать как получить данные по запросу из SQL, или через JSON - нужны. А чтобы создать даже простой запрос - основы SQL.

    Система контроля версий. В основном питоноиды предпочитают git.
    Ответ написан
    3 комментария
  • План обучения Python и дальнейшие перспективы. Кто подскажет?

    @pgpja
    Как лучше заниматься практикой? Где поискать задания?

    www.checkio.org
    www.codingame.com

    Программировать как можно чаще. Постоянно писать на Python. Фриланс сайты. Придумайте то что вам интересно бы было реализовать.

    Забыл о книге "Byte of Python". Она не толстая. Читается легко. В конце автор пишет программу для резервного копирования. И главное: ни в коем случае не откладайте пркатику.
    Ответ написан
    1 комментарий
  • Можете накидать большую порцию задачек для практики Python-новичка?

    Я когда также искал наткнулся на один сайт там человек выложил тестовое задание которое он получил на вакансию Junior Python Developer.

    Сам сайт я не сохранял сохранил только задание. Выполняя это задание ты охватишь то что учил и освоишь новые технологии.

    Собственно вот само задание:

    Цель тестового задания
    Определить возможную динамику самообучения кандидата. А так же глубину понимания кода, реализующего тестовое задание.

    Задание
    Написать тестовое web-приложение по управлению электронной библиотекой:

    1. Редактирование (доступно авторизованному пользователю при наличии аутентификации):

    Управление списком книг: добавить / удалить / редактировать книгу.
    Управление списком авторов: добавить / удалить / редактировать автора.
    Запись о книге содержит следующие данные: ID, Название.
    Запись об авторе содержит следующие данные: ID, Имя.
    Свзязь между книгами и авторами — многие ко многим.
    2. Поиск книг по названию либо автору (доступно анонимному пользователю при наличии аутентификации).

    3. Аутентификации и авторизация (по желанию кандидата).

    Технологии, которые должны быть задействованы:

    Flask
    SQLAlchemy (Declarative)
    SQLite (встроенный в приложение)
    Jinja2 Templates
    WTForms
    jQuery (желательно, но возможно использование альтернативных решений)
    Список может быть расширен по усмотрению кандидата, но с обязательным использованием технологий, перечисленных выше.

    Дополнительные требования
    Список дополнительных требований следующий:

    1. Код проекта должен быть доступен на сервисе github.org или bitbucket.org.

    2. Проект должен содержать SQL-скрипты для развертывания базы данных и наполнения ее тестовыми данными.

    3. Пользовательские данные должны валидироваться перед сохранением в БД.

    Дополнительные знания
    Дополнительные знания, необходимые при защите проекта:

    HTTP
    WSGI
    SQL, Transactions, Transaction Isolation Levels
    SQLAlchemy
    Уязвимости веб-сайтов
    User Experience
    Ответ написан
    Комментировать
  • Куда податься сисадмину?

    3vi1_0n3
    @3vi1_0n3
    Во-первых, всё, что больше 40 часов в неделю - в топку. Научитесь работать столько, за сколько вам платят. Нефиг нарушать трудовой кодекс. 8 часов в день и всё, если заставляют работать больше - пусть идут лесом, никто заставить не может. Даже можно на часть каких-то левых обязанностей согласиться (но не желательно) в пределах этих 8 рабочих часов. Не перерабатывать - очень важно, если вам за переработки не платят, я думаю, что не платят все-таки. Сразу появится время на что-то еще плюс повысится эффективность в течение рабочего дня. Для начала отоспитесь и начните делать зарядку по утрам. И бросайте пить кофе, особенно растворимый. Если курите, то тоже можно бросить. Начинайте работать четко по часам, насколько это возможно, пусть привыкают. В идеале надо четко соблюдать рабочий график. Через какое-то время полегчает. Потом начинайте что-то делать в плане профессионального развития. Для начала определитесь, чем хотите заниматься. Это тоже займет какое-то время.
    Насчет уменьшения зарплат из-за кризиса - вранье полное, вас просто хотят обуть всех оптом. Одного долбаного псевдо-менеджера уволить будет выгоднее, чем технического специалиста.
    Дисциплина и самоконтроль - это самое первое дело, займитесь им. Сейчас у вас, судя по рабочему графику бардак в работе. Если есть должностная инструкция (вдруг есть) - прочитайте.
    По поводу перевода в центральный офис - если подумать, то наверняка можно решить вопрос без перевода. Коммуникации сейчас хорошо развиты.
    Вот как-то так.
    Ответ написан
    3 комментария
  • Какие самые реальные и действенные проекты\работы\фриланс для python-программиста?

    voidnugget
    @voidnugget
    Программист-прагматик
    Пишу на питоне ещё с 15 лет (2.4+)... ненавижу его runtime и архитектуру. Язык хороший - реализация никакущая. Ну да его синтаксис достаточно упрощён, но и за синтаксический сахар приходится платить сложностями отладки и поддержки.

    Сейчас же почти все известные мне конторы не используют питон в продакшенах с более-менее высокой нагрузкой. Яндекс тому пример. Чаще питон используется для решения прикладных задач администрирования, так как это делается, к примеру, в SaltStack. Все дружно слезают с питона, РНР и рельсов на Golang, Java/Scala, и иногда даже Groovy - производительность выше в десятки раз, и managed runtime на много стабильнее. Правда в случае с JVM очень сильно раздувается куча в виду избыточности объектной модели (оператву жрёт как дурное, а я байтики считать привык). Сейчас это должно лечится с помощью Project Graal и Truffle, правда пока до этого дошёл только jRuby, который тоже в пару десятков раз быстрее Ruby. По идее и Groovy тоже должен переползти как-то ... Вот про jyton ничего не знаю.

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

    Фрилансить с питоном начать можно, но очень желательно опробовать ещё хотя бы пару окружений и фреймворков типа Groovy Grails, или Typesafe Stack. Сейчас требования рынка возросли в пару раз за последние два года - нужны ассинхронности/многопоточности, push-нотификации в мобильные приложения и по вэбсокетам/комету. И это всё с богатыми js-фронтендами на всяких там Angular'ах и React'ах. Естественно можно крутить костыли типа Celery / Gearmand / Beanstalk / RabidMQ, но накладные расходы на коммуникацию слишком большие :( Компилируемые языки со своими Managed Runtime'ами позволяют строить монолитные приложения в которых подобные решения избыточны в рамках одной и той же машины, а если это куча нод в кластере то нужно мерить/думать.

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

    А вот с pyramid (pylons) и SQLAlchemy можно строить достаточно хорошие приложения. У них есть enterprise поддержка и соответствующие гарантии.

    Типовые задачи на питоне:
    - написать какой-то мелкий скрипт с Gui на PyQT / Pyside для какой-то аналитики и отрисовки графиков, иногда попадаются задачки с gstreamer'ом
    - написать какое-то простое RESTful CRUD приложение, в стиле "одна табличка БД - один контролеер", это конечно же тонна копипасты и мне больше нравятся DataMapper'ы по типу TastyPie. Иногда люди хотят чистого Tornado или Flask'a, так как им не нравится overhead в джанге и pylons.
    - написать скрипты для деплоя чего-то, обычно люди не знают про SaltStack.

    В плане архитектуры питонистам чужды различные SOA с CQRS-ES'ом, потому что сам компилятор не располагает. Хотя её достаточно просто поддерживать.

    Проблема всех проектов на Node.js / Python / Ruby это отсутствие долгосрочной поддержки библиотек и фреймворков - часто ломается обратная совместимость, и нужно постоянно следить за состоянием всех зависимостей. Опять же нужен TDD/BDD для того что это всё хорошо контролировать. Тестируешь руками - себя не уважаешь.

    Ну и вроде всё ...
    p.s. я опубликую на хабре статью сегодня-завтра "Freelance - you're doing it wrong" там поделюсь опытом работы и основными организационными проблемами в рамках удалённой работы и фриланса, покажу разницу между ними.
    Ответ написан
    6 комментариев
  • Какая книга/видео-уроки подойдут лучше для изучения c#?

    FFormula
    @FFormula
    Автор проекта VideoSharp.info
    Рекомендую проект videosharp.info.
    Там есть раздел интерактивных задач «консоль», где как раз и можно попрактиковаться в навыках алгоритмизации, то есть в составлении базовых алгоритомов. Ещё там есть видеокурсы по созданию игровых и прикладных программ с нуля. Плюс, еженедельные вебинары (по субботам).
    Ответ написан
    Комментировать
  • Какая книга/видео-уроки подойдут лучше для изучения c#?

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

    Книги:
    CLR via C# (либо видоекурс: тут скачайте CLR Fundamentals)
    C# 5.0. Справочник
    Pro WPF 4.5 in C# (исходники)

    Видоеуроки:
    C# 2012 Fundamentals: Parts I, II, III
    C# Fundamentals with C# 5.0
    Code Clinic: C# (по желанию)

    WPF:
    WPF
    WPF 4 Programming
    Introduction to WPF Custom Controls
    Enterprise WPF with XAML and C# from Scratch
    WPF for the Business Programmer
    Ответ написан
    Комментировать
  • Как восстановить знания по C++ на сегодняшний день?

    mmatrosov
    @mmatrosov
    C++ jedi
    По поводу книг добавлю "A tour of C++" от Страуструпа. Подкупает своей компактностью - этакий ликбез для С++-программистов. Из минусов то, что там в кучу С++98 и С++11. Ещё "Overview of the New C++ (C++11/14)" от Мейерса. Это презентационные материалы с его тренинга именно по С++11/14, я там был, отличный тренинг. Из минусов - это всё же слайды презентации, какие-то моменты могут быть не понятны без докладчика. Далее, поскольку у Вас уже есть опыт, вполне подойдёт выделить список тем и разботать каждую в отдельности по статьям, записям с конференций, вопросам на SO (или Тостере :) ).

    Что именно читать - не так важно, найдёте сами. Чем мне действительно хотелось бы поделиться, так это мыслями по поводу С++11/14 (будем для краткости называть его С++14, т.к. стандарт уже одобрен). Это не просто "новые фишки в С++". Это качественно новый язык. Разница в стилях кодирования между С++14 и С++98 можно сравнить с разницей между С++98 и С. Не такая радикальная, но сравнимая. Возможности С++14 коснулись практически всех аспектов кода. Я позволю себе выделить наиболее значимые, на мой взгляд, изменения, значимые именно для "рядового" программиста, который не пишет буст и не оптимизирует компиляторы:
    • Семантика перемещения*. Контейнеры STL теперь можно возвращать из функции по значению. Строки можно эффективно конкатенировать оператором сложения. Это прекрасно читается.
    • Лямбда-функции. Алгоритмами STL можно, наконец, спокойно пользоваться и не бояться вызвать демонов описанием очередного внешнего шаблонного класса-функтора. Логика работы алгоритма теперь указывается ровно там, где он используется.
    • auto. Казалось бы, это мелочь. Но теперь имя типов итераторов STL не занимает кучу места в программе (ещё очко в пользу STL). Многие конструкции стали более компактными и ушло ненужное дублирование имени типа (принцип DRY!)
    • STL + стандартная библиотека. В С++ чудовищная скудная стандартная библиотека, особенно по сравнению с C#. Но STL, как одна из основных её частей, шагнула вперёд, и не только за счёт других фишек, благодаря которым стало удобно пользоваться тем, что уже было. В ней появились std::unordered_map (хэш-таблицы), std::array и std::tuple - очень полезные в определённых случаях контейнеры. Также добавился ряд полезных алгоритмов (см. доки к заголовочному файлу <algorithm>). А вы знали, что в С++11 есть класс std::Hash, который позволяет считать хэш от произвольных стандартных типов, включая std::string?
    • std::function. Мало того, что класс предоставляет механизм универсальных колбэков, он позволяет элегантно написать и легко использовать классы типа ScopeGuard (Страуструп называет его finally). Это даёт новый виток развития парадигме RAII, ключевой и уникальной для С++. Ранее для этих целей использовался кривоватый BOOST_SCOPE_EXIT.
    • std::unique_ptr. Благодаря семантике перемещения оказалось возможным создать эффективный умный указатель с монопольным владением объектом. У нас уже был boost::shared_ptr, так что std::shared_ptr не стал таким прорывом.

    * Не путать семантику перемещения с r-value references. Последние взрывают мозг. Но это не более чем механизм для реализации семантики перемещения и точной передачи (perfect forwarding). И тем и другим можно прекрасно пользоваться, не заглядывая под капот и не убиваясь в попытках понять, как именно работает эта магия.

    По поводу выбора версии Visual Studio. Если есть возможность, лучше использовать VS2013. В ней добавлены такие замечательные и очень полезные возможности С++14, как списки инициализации и инициализация членов класса прямо в месте объявления. В VS2012 этого нет, а по сравнению с VS2010 из интересного в ней появились только range-based циклы, но они не настолько круты. Полный список отличий в MSDN.

    В С++14 ещё много, реально МНОГО нового, по сравнению с С++98. Но большая часть либо просто заимствована из boost, так что так или иначе народ этим уже пользовался, либо достаточна специфична. Я постарался выделить именно принципиально новые моменты, которые меняют стиль написания кода. И код на С++14 смотрится гораздо компактнее и понятнее, чем на С++98. Да пребудет с вами С++14. Я кончил. Спасибо.
    Ответ написан
    Комментировать
  • Как восстановить знания по C++ на сегодняшний день?

    @Koss1024
    0. Прочитайте Страуструпа последнее издание (англ). Если язык вы знали то это лучшая книга чтобы обновить знания

    1. C++11 C++14, в производстве чаще пока еще С++03
    2. Лучший компилятор clang++ (поддерживает любой стандарт и любую платформу)
    3. boost это набор библиотек на все случаи жизни самый хорошо сынжинереный. Стоит писать не под него а с использованием
    4. пункт 3
    5. C++ для задач требующих точного понимания стоимости каждой операции, это embedded DSP Server computing
    Math много чего еще

    Учтите, С++ это инструмент который нужно учить постоянно

    Дополню
    -----------
    С++ мультипарадигменный
    А так же много уровней абстракции поддерживает

    На нем можно писать как на чистом С - это самый низкий уровень
    Можно ООП и абстракции
    Можно паттерны
    А можно функциональный стиль

    С С++ в этом и проблема что знать нужно очень много.

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

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

    Потом Страуструп (тогда это было издание по стандарту 03). Здесь я дополнил свои знания деталями которые пропустил при самостоятельном изучении. Тут стоит отметить что Страуструп весьма странная книга и написана тяжело. Секцию же ООП вообще там лучше не читать (самая последняя).

    Где-то рядом я прочитал Гради Буч - ООА и ООП с примерами применения. Очень хорошая кика чтобы понять к чему все это придумали вообще. Сильно выправляла мозги

    Потом был Керниган и Ричи Язык программирования С. Эту я прочитал просто от безделья, но теперь считаю что это было необходимо. Здесь можно понять зачем придумали именно С. И насколько там все просто, задумано.

    Следом пошли техники: Герб Саттер Решение сложных задач на С++ и Новые сложные задачи С++
    читать обязательно, разобрано много костылей и проблем языка. Дано очень много дельных советов

    С Мейерс - Эффективное использование С++ туда же. Прекрасный разбор.

    Макконнел - Совершенный код. Очень крутая книга. Она отшлифует уже почти бриллиант.

    Помимо всего прочего я работал над проектами и постоянно читал всяческие форумы, блоги, дискутировал с коллегами. Решал задачки разных собеседований.

    Отдельного внимания заслуживает книга Банды четырех (Паттерны).
    Я ее с трудом дочитал, читал ее я уже аж после всего перечисленного и после примерно 7-8 лет опыта С++.
    Я уже давно был Senior dev. и наконец нашел таки время и для нее. Она мне показалась до ужаса скучной и очевидной, поскольку почти все предложенные решения я придумывал и сам неоднократно. Кроме того, большинство этих решений неоправданно тяжелы, и очень запутывают код. Тема холиварная и спать надо много, но я пожалуй остановлюсь только на том что в моей практике, худшими с точки зрения цены ошибок были разработчики которые учились начиная с этой книги. Их код недодерживаем запутан и очень плохо поддается рефакторингу. Такой код имеет самые долго отлеживаемые ошибки.

    Где-то рядом я прочитал Фаулера - Рефакторинг. Вполне себе неплохо. Рекомендую. Но тут стоит к опытному коллеге обратиться. Идея то проста Тесты - Маленькие комиты - YAGNI KISS и SRP но детали лучше познавать на практике.
    У меня был хороший лид, который меня в конце концов научил :)

    Совсем забыл! Александреску же! Скажем так - не так страшен Александреску как тот кто его начитался :)
    Фана доставил много, а так же дал возможность на эти игрища потерять около 3-х месяцев работы. Даже не знаю
    стоит ли читать. Наверное стоит, но нужно помнить что на практике лучше не использовать если вы уже не эксперт.

    Остальное С++ не касается, но чтобы стать профессионалом Вам потребуются алгоритмы и структуры данных (Кормен, Кнут), многопоточность (Энтони Уильямс), другие языки(питон, JS, java), оптимизация и профилирование.
    и много много разных специфических знаний

    Удачи Вам в этом нелегком но, безусловно, интереснейшем пути :)
    Ответ написан
    7 комментариев
  • Книги по ООП, С++

    @Tibr
    Для начинающих:

    Брюс Эккель — Философия С++. Введение в стандартный С++.
    www.ozon.ru/context/detail/id/1631049/

    Брюс Эккель, Чак Эллисон — Философия C++. Практическое программирование.
    www.ozon.ru/context/detail/id/1895018/

    Для «продолжающих»:

    Скотт Мэйерс — Эффективное использование C++. 55 верных советов улучшить структуру и код ваших программ
    www.ozon.ru/context/detail/id/2610625/

    Скотт Майерс — Эффективное использование С++. 35 новых способов улучшить стиль программирования
    www.ozon.ru/context/detail/id/2623946/

    Скотт Мейерс — Эффективное использование STL
    www.ozon.ru/context/detail/id/1253685/

    Герб Саттер, Андрей Александреску — Стандарты программирования на С++
    www.ozon.ru/context/detail/id/2381848/

    Герб Саттер — Решение сложных задач на C++
    www.ozon.ru/context/detail/id/3817580/
    Ответ написан
    1 комментарий