Задать вопрос
  • Какое образование нужно дизайнеру?

    Vestail
    @Vestail
    Software Engineer
    Направление так и называется "Дизайн".
    В Украине это 6.020207.
    Ответ написан
    Комментировать
  • Есть ли основные правила супер оптимизации?

    ErmIg
    @ErmIg
    Программист
    Есть развернутый ответ для С++ кода, но его можно обобщить и на другие языки и платформы:

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

    1) Важно понимать, что алгоритмическая оптимизация практически всегда может дать лучший эффект, чем программная. Так, если алгоритм имеет сложность O(n^2), то на больших исходных данных он при любой оптимизации будет медленнее, чем неоптимизированный алгоритм сложности O(n). Впрочем, при выборе алгоритма, опираться только на его сложность не стоит: если объем исходных данных не велик, то вполне может оказаться, что алгоритм со сложностью O(n^2) будет работать быстрее, чем с O(n).
    2) Очень важно повторное использование (кеширование) промежуточных данных, вычисленных в программе – ибо быстрее всего выполняется работа, которую не надо делать. Тем не менее, не надо чрезмерно кешированием увлекаться – если объем кэшируемых данных слишком велик, то это может отрицательно сказаться на общей производительности программы (некоторые данные быстрее вычислять на лету, чем считывать из памяти).
    3) Следует избегать излишнего копирования данных (например, передавать сложные типы данных по ссылке, а не по значению).
    4) По возможности следует избегать условных операторов во вложенных циклах. Так как условные переходы, вызываемые такими операторами, плохо обрабатываются современными процессорами с конвейерной архитектурой.
    5) Данные в памяти, которые используются алгоритмами, должны по возможности лежать упорядочено, и использоваться последовательно. Это позволит процессору их эффективно кешировать. Важно помнить, что доступ к кэшу процессора значительнее быстрее, чем к оперативной памяти.
    6) Если алгоритмы это позволяют, то возможно стоит реализовать их параллельное исполнение (в отдельных потоках или процессах). Это позволит эффективно задействовать современные многоядерные процессы.
    7) В некоторых случаях (например обработка изображений) большого эффекта можно достичь применением специализированных расширений процессора (SSE, SSE2, AXX, AVX2 и другие). Стоит отметить, что большинство современных компиляторов (GCC, MSVS, ICC) поддерживают непосредственное использование данных расширений непосредственно из С++ кода при помощи специальных встроенных функций (intrinsics). Минусами такого подхода является потеря переносимости (впрочем, эта проблема решается наличием разных веток программы под разные процессоры) и значительное усложнение программы.
    8) Также большого эффекта можно достичь применением специализированных ускорителей, например GPU (технологии CUDA, OpenCL). Минусами таких решений являются потеря универсальности и значительное усложнение программы, а также то, что на специализированных ускорителях, как правило, хорошо работает далеко не каждый алгоритм.
    Ответ написан
    Комментировать
  • Кто может дистанционно помочь с изучением программирования?

    barmaley_exe
    @barmaley_exe
    Идите делать уже!

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

    0. Бесплатно. Чтобы заинтересовать по-настоящему крутого специалиста Ваше ценовое предложение должно быть очень и очень велико по очевидным причинам. Если же он хочет помогать Вам из альтруистических соображений, но непонятно, чем Вы лучше Пети из соседнего подъезда. Именно для такого рода помощи, сюрприз-сюрприз, и существуют StackOverflow-подобные ресурсы.
    1. Усреднением мнения нескольких людей можно побороть предвзятость и незнание одного конкретного человека.
    2. Если постоянно дёргать кого-то другого, этот кто-то научится, а Вы — нет. Нужно уметь находить ответы самостоятельно, не имея возможности кого-то спросить.
    3. Можно помогать другим участникам сообщества. Один из моих преподавателей когда-то в шутку сказал "Преподаю уже 10 лет — наконец-то сам начал понимать, что читаю". Как известно, в каждой шутке есть доля шутки, так что объяснение чего-либо кому-либо помогает Вам лучше разобраться в сути дела и структурировать собственные знания.

    Я уже распинался как-то раз на эту тему.

    Если Вам нужен начальный вектор, то вот:

    1. Язык — Python. Уже сейчас используется во всех мыслимых областях, обладает огромным сообществом и сравнительно несложен. Нынче, насколько я знаю, с него начинают обучение информатике в MIT. Потом, при желании, можно будет изучить ещё несколько. Изучение нового языка в пределах одной парадигмы не составляет труда.
    2. Если программирование для Вас область новая, то я бы посоветовал не окунаться сразу с головой в написание проекта, а начать с алгоритмических основ. Порешать задач на алгоритмы, научиться отлаживать код в голове. В результате будет проще думать о происходящем в дальнейшем.
    3. Написать таки какое-нибудь приложение. Проще всего сейчас целиться на веб, т.к. у нас есть браузеры с поддержкой хитрой разметки (HTML + CSS), позволяющей отобразить чуть ли не что угодно и не надо возиться с отрисовкой всего этого счастья. Тут нужно будет ознакомиться с HTML и CSS (чтобы приложение не выглядело как привет из 90-х, можно воспользоваться модными CSS фреймворками вроде Twitter Bootstrap), найти и овладеть каким-нибудь веб-фреймворком для выбранного языка (Например, Django для Python, но их очень много). На этой стадии должно быть много гугления, а в особо тяжких случаях — вопрошания на Тостере. Но не в обратном порядке!
    4. Программы обычно работают не в изолированной среде, а взаимодействуют с другими программами. Полезно знать, как это осуществляется. Для этого на более поздних этапах рекомендуется разобраться в, как минимум, сетях и операционных системах.
    Ответ написан
    8 комментариев
  • Объясните коротко, по делу что же лучше/производительнее/удобнее и в каких ситуациях?

    live отметаем сразу, т.к. он уже не только deprecated, но и deleted. С bind и click все интереснее - внутри (в коде jquery) они ссылаются на on, и возможно даже будут удалены в будущем. Отличие функциональности click в том, что он может возвращать уже привязанное событие (аналогично trigger), если оное уже есть. Например, объявление click выглядит как-то так (не скажу за все версии):
    function (data, fn) {
        return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
    }


    Также click не может делегировать события, т.е. вы не сможете сделать так, чтобы событие было актуально не только для всех элементов a, которые уже есть, но и для тех, что сгенерируются любым способом в будущем (собственно, это позволяют live и on, первый из которых имеет статус deleted и недопустим к использованию).

    В целом, использование таких оберток может даже привести к очень незначительному, но все же снижению производительности за счет во многих случаях лишнего вызова дополнительной функции. Поэтому, лично я рекомендовал бы не использовать bind, а выбор между click (и другими "событийными обертками") и on делать на основании приведенного выше участка кода и нужной вам функциональности (еще раз напомню, что click и тп. не позволяют отслеживать появление новых элементов на странице).

    Как-то так. Прошу извинить если немного напутал терминологию.

    UPD. live технически также ссылался на on, но, хотя в отличие от bind и прочих позволял отслеживать появление новых элементов, имел много недостатков - тут можно много интересного прочесть. Возможно, поэтому его и удалили.
    Ответ написан
    2 комментария
  • Можно ли научиться верстать и кодить на LiveScript с нуля?

    @maxyc_webber
    Web-программист
    берите и программируйте. не умеете? читайте как программировать.
    Ответ написан
    Комментировать
  • Какой есть инструмент для планирования задач с багтрекером и диаграммой Ганта?

    renat79
    @renat79
    dude with laptop
    вы это наверно искали?
    habrahabr.ru/post/202552
    ?

    там, кстати, обзор так себе
    мой список
    teamgantt
    worksection ( на русском)
    tomsplanner
    ganttic
    gantter

    все никак руки не дойдет выложить нормальный обзор - давно драфт написан же)
    Ответ написан
    Комментировать
  • Какой язык выбрать для написания веб-серисов?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    > Начал изучать Java - но она такая громадная, что я уже немножко тупикнулся и задал себе вопрос "правильной ли дорогой пошел"?
    > Внутренний глас подсказывает, что мое - это область разработки веб-сервисов.
    Хороша ли для этого Java или пока не поздно сменить лодку!?

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

    В области разработки веб-сервисов, знаний нужно не меньше, а возможно и гораздо больше, потому что IMHO вы сейчас видите только верхушку айсберга

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

    Не бойтесь, если бы все могли сесть и изучить всю громандую java за 5 сек, программисты бы ценились как дворники.
    Ответ написан
    Комментировать
  • Как seo-продвинуть сайт без денег?

    XXX
    @XXX
    Решение где-то рядом
    Alexander-K
    • Проведите аудит сайта на предмет косяков (инструменты вебмастеров Вам в этом помогут)
    • Если сайт еще не добавлен в гугл и яндекс вебмастер, то добавьте.
    • Исправьте косяки, sitemap, robots.txt, meta-теги, описания страниц, заголовки, оптимизация содержимого страниц, перелинковка и т.д.
    • Скормите карту сайта поисковикам
      http://google.com/webmasters/sitemaps/ping?sitemap=ссылка на Ваш sitemap
      http://www.bing.com/webmaster/ping.aspx?siteMap=ссылка на Ваш sitemap

      Для того чтобы яндексу карту отправить, придется зайти на страницу вебмастера. И до кучи можете воспользоваться сервисом пинга в 40 поисковиков.
    • Если сайт региональный, то задайте регион.
      В яндекс вебмастере задается в настройках сайта, География сайта → Регион сайта
      В гугловских инструментах вебмастера, Поисковый трафик → Таргетинг по странам и языкам → Страна
    • Составьте семантическое ядро
    • Напишите SEO тексты заточив под ключи по которым будете двигаться
    • Если сайт не статичный, зарегайте его в соц сетях и постите туда новости со ссылками на свой сайт
    • Регайтесь на крупных форумах, с ссылками не закрытыми от индексации и напишите там про Ваш сайт
    • Оставляйте комменты в dofollow-блогах


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

    @herr_kaizer
    Никому не нужны ваши идеи. Их в сотни раз больше, чем желающих их реализовывать разработчиков.
    Ответ написан
    Комментировать
  • Какие привычки могут сэкономить время?

    Symphony
    @Symphony
    • еще можно не одеваться
    • не здороваться и не прощаться
    • Не переносить код на новую строчку, если не требуется
    • Отключить интернет
    • Не брать отпуск
    • если хочется по большому, не ходить в туалет, а в пакетик и потом выкинуть
    Ответ написан
    Комментировать
  • Где в Убунту находится папка "~/.gimp-2.8"?

    w999d
    @w999d
    Web-developer
    ~/ - это папка текущего пользователя. либо /root либо /home/{username}
    папки с точкой в начале - скрытые по умолчанию. в настройках "Вид" нужно выбрать "Показывать скрытые файлы"
    Ответ написан
    3 комментария
  • Для чего нужен Python?

    @KIN1991
    Python, PHP developer
    Вот кто может его использовать и зачем.
    • Компания Google широко использует Python в своей поисковой системе
    и оплачивает труд создателя Python.
    • Служба коллективного использования видеоматериалов YouTube в значи- YouTube в значи- в значи-
    тельной степени реализована на языке Python.
    • Популярная программа BitTorrent BitTorrent для обмена файлами в пиринговых се- для обмена файлами в пиринговых се- для обмена файлами в пиринговых се-
    тях (peer-to-peer) написана на языке Python.
    • Популярный веб-фреймворк App Engine от компании Google использует
    Python в качестве прикладного языка программирования.
    • Такие компании, как EVE Online и Massively Multiplayer Online Game
    (MMOG), широко используют Python в своих разработках.
    • Мощная система трехмерного моделирования и создания мультиплика-
    ции Maya поддерживает интерфейс для управления из сценариев на языке
    Python.
    • Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm
    и IBM, используют Python для тестирования аппаратного обеспечения.
    • Такие компании, как Industrial Light & Magic, Pixar и другие, используют
    Python в производстве анимационных фильмов.
    • Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для
    прогнозирования финансового рынка.
    • NASA, Los Alamos, Fermilab, JPL и другие используют Python для научных
    вычислений.
    • iRobot использует Python в разработке коммерческих роботизированных
    устройств.
    • ESRI использует Python в качестве инструмента настройки своих популяр- Python в качестве инструмента настройки своих популяр- в качестве инструмента настройки своих популяр-
    ных геоинформационных программных продуктов под нужды конечного
    пользователя.
    • NSA использует Python для шифрования и анализа разведданных.
    • В реализации почтового сервера IronProt используется более 1 миллиона
    строк программного кода на языке Python.
    • Проект «ноутбук каждому ребенку» (One Laptop Per Child, OLPC) строит
    свой пользовательский интерфейс и модель функционирования на языке
    Python.

    Следовательно Python используют в серверном, прикладном и в веб программировании
    Ответ написан
    7 комментариев
  • Будет ли scala востребована на российском рынке?

    @jkotkot
    режим сарказма
    Разработчик скалы без знания java никому не нужен. Если вы не будете понимать как устроены и работают разные открытые java библиотеки, то вы никогда не станете всем нужным профессионалом в этой области.
    Ответ написан
    7 комментариев
  • Будет ли scala востребована на российском рынке?

    mrRontgen
    @mrRontgen
    Scala lover.
    Это утверждение не совсем верно
    Но если проект пишется на java, то scala разработчик туда будет не нужен.


    Scala - даже в том виде, в котором она сейчас, раскрывает гораздо больше возможностей JVM, нежели чем Java. Scala - это не Haskell на JVM и утверждение, что jmv общая тоже не совсем корректно. Scala - это попытка совместного примирения императивной и функциональной парадигмы. Все это дает гораздо больше возможностей грамотно и быстро применить какой-нибудь алгоритм для решения задачи. И если на чистой Java потребуется 50 строк кода для решения задачи, то на Scala - половина, а то и меньше :), а код получается более выразительный! (здесь не надо "кусаться", задачи бывают разные)

    Отсутствие 100500 вакансий на hh это не повод паники ( на linkedin ~2k). Язык молодой, но он очень стремительно набирает обороты. Насколько я знаю, Huawei начинают пилить интеграционные решения в России на scala(вместо оракловских продуктов). Так что все не так плохо :)

    У Одерского и компании очень большие перспективы и амбиции! Так что, по моему мнению, Scala(или ее "апдейты") еще удивят программистов!
    Ответ написан
    7 комментариев
  • Какие самые реальные и действенные проекты\работы\фриланс для 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 комментариев
  • Как разобрать такой массив?

    vserykh
    @vserykh
    Разработка сайтов, лендингов «под ключ»
    Чтобы получить значение из ассоциативного массива по ключу, нужно просто указать этот ключ.

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

    Например:
    $time = $array[681]['activities']['copying']['time']; // Получим значение «480»
    Ответ написан
    Комментировать
  • Имеет ли смысл содержать проект за счет пожертвований?

    opium
    @opium
    Просто люблю качественно работать
    Глупо в это верить: русские люди не любят жертвовать.
    Ответ написан
    2 комментария
  • Каков план личностного развития Wolfram программиста с нуля?

    @OsipovRoman
    Думаю, будет полезно habrahabr.ru/post/244451
    Ответ написан
    Комментировать
  • Как правильно тестировать сверстанный макет?

    bootd
    @bootd Куратор тега HTML
    Гугли и ты откроешь врата знаний!
    А что значит тестировать?
    Это обобщенное понятие. Что конкретно вас интересует?
    1) Адаптивнось - пользователь albert_rar уже вам ответил.
    2) Кроссбраузерность - Скачайте все имеющиеся браузеры и проверьте. browsershots.org в помощь, если нужно много разных версий(Но там нужно url вводить). А так же посоветовал бы сервис caniuse.com для проверки поддержки всяких css свойств.
    3) Скорость загрузки - В хроме есть возможность проверять время загрузки страницы. Но локально вы ее загрузите быстро, ибо грузит не инет же!

    Думаю больше нельзя выделить этапов тестирования для сверстанного макета.

    В любом случае вам нужно все ровно разместить сайт где та на хостинге, что бы проверить его в действиях! Удачи
    Ответ написан
    1 комментарий
  • Возможен ли хайлоад на больших фреймворках?

    FAT
    @FAT
    Developer
    Highload очень интересное направление. Неплохой цикл статей был в журнале Хакер номер 02/2012 (если не ошибаюсь) от монстров высоконагруженных систем - Highload Lab (Highload).
    Так устроен мир программистов, что зачастую проще написать свое, чем дорабатывать чужое решение. Фреймворки создаются для удобства и многие из них не рассчитаны на масштабирование (кластеризацию), да в них есть возможность включить кеширование, но кэширование только отсрочит проблему, в итоге нужно будет заниматься рефакторингом кода, прикручивать разные акселлераторы, но всё прийдет к кластеризации (масштабированию) проекта на другие сервера. Я знаю только один фреймворк, который позволяет делать масштабирование - Битрикс. И как работает это масштабирование я знаю в теории.
    Припоминаю ситуацию, когда фреймворк переписывался под высокие нагрузки (это был Yii по-моему). Также существует мнение что MVC не лучшая модель для хайлоад. В общем нужно смотреть по ситуации.

    Еще про хайлоад популярных проектов можете почитать тут.

    Потратьте день своего времени на освещение этой интересной темы, и сможете ответить на многие ваши вопросы.
    Ответ написан
    Комментировать