• Как вы выбираете что нужно изучить?

    IonDen
    @IonDen Куратор тега IT-образование
    JavaScript developer. IonDen.com
    Есть база: EcmaScript 5 и CSS(3) - надо знать
    Есть будущее: EcmaScript 2015 и CSS3(4)+ - надо поглядывать и быть в курсе
    Есть популярные расширения CSS: LESS/SASS/Stylus и т.д. - выбрать что-то одно и изучать использовать.
    Популярные расширения JS: EcmaScript 2015 on Babel, TypeScript, CoffeScript и т.д. - я бы выбрал EcmaScript, так как 2 зайцев одним выстрелом.
    Есть известные фреймворки CSS: Bootstrap - приятно знать
    Есть известные JS фреймворки: jQuery - обязательно знать, SPA-фремворки/библиотеки (Angular, Ember, React, Backbone и т.д.) - обязательно начать что-то изучать и использовать.
    Так же не стоит забывать про системы сборки: Grunt/Gulp/Webpack и т.д. обязательно начать изучать что-то из этого.
    Плюс всегда стоит помнить о работе в команде (даже если вы сейчас работаете один): это Git и GitHub/Bitbucket - тоже обязательно изучать.
    + я не затронул кучу других вопросов: оптимизация, алогоритмы, сетевые протоколы, особенности работы браузеров и т.д.
    + для общего развития полезно изучать еще какой-то язык, помимо JS

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

    @LeonidShifrin
    Разработчик, Wolfram Research Inc. PhD, Physics
    Изучите один из функциональных языков. Проще всего начать со Scheme. Это поставит Вам мышление правильно, и даст общее понимание принципов программирования. Вам уже советовали SICP, я еще от себя добавлю HTDP (How to design programs) - как раз рассчитана на начинающих. Порешайте на нем алгоритмические задачи. Хороший источник - Project Euler. По более общим задачам посмотрите Rosetta Code. Не ставьте задачу сразу начать применять это к Вашим приложениям, просто спокойно развивайтесь.
    На первом этапе постарайтесь по минимуму использовать готовые библиотеки - разве что для проверки.

    Постепенно переходите к более сложным задачам. Не зацикливайтесь на чисто алгоритмических задачах - они хорошо ставят мышление, но в реальной жизни лишь часть кода полностью алгоритмизуется, и дизайн кода занимает большее место чем именно алгоритмы (если не брать более специализированные области вроде ML). Если не брать математические задачи, то хорошие задачи возникают в областях работы с текстами, преобразования данных. Скажем, упрощенный вариант HTML или XML парсера, или задачи по анализу текстов, или например перевод данных из одного формата в другой. Напишите пару простых интерпретаторов. Реализуйте парсер для какого-нибудь языка (возможно, его упрощенного варианта). Не стесняйтесь находить ресурсы с тем, что близко в Вашим задачам, и читать чужой код (это необходимо!) - но и не работайте по принципу copy - paste.

    Неплохой задачей будет например реализовать парсер и интерпретатор для какого-нибудь trading - языка, вроде metastock, с парой десятков основных финансовых индикаторов. И к нему в довесок - собственный упрощенный парсер скажем CSV формата - так что Вы сможете загружать данные по стокам и прогонять торговые стратегии целиком на собственном коде. Ну и например, генератор HTML - отчета с графиком и точками входа и выхода для данной стратегии, плюс отчетом о доходности. Можете потом поднять простое web-приложение, которое будет гонять торговые стратегии на исторических данных, хранящихся скажем как CSV файлы - и все это на Scheme. Потом можете перейти на использование реальной БД. Это уже будет в совокупности неплохой проект. Чем меньше будете использовать готовых библиотек - тем лучше, цель здесь - учеба, а не максимальная эффективность.

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

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

    И еще один момент: если у Вас хромает Английский, подтяните его. Специально этим не нужно заниматься, просто читайте литературу на Английском - всегда. Это сделает Вас частью большего сообщества, даст доступ к гораздо большей базе ресурсов. На более продвинутом уровне, это важно еще и потому, что Вам будет легче писать код, когда Вы начнете думать на Английском - он ближе к формальным языкам.
    Ответ написан
    Комментировать
  • Где найти работу по удаленке в 40+ лет?

    @gladkikh01
    Освойте, хорошо, одну технологию и попробуйте подыскать работу вот здесь:

    talentboard.me/candidate
    https://weworkremotely.com/
    remotive.io
    Ответ написан
    Комментировать
  • Какие книги нужно читать, если хочешь изучить HTML5, CSS3, JavaScript?

    @jackroll
    Сверхразум
    Ты сейчас делаешь следующее: "сейчас я хорошенько поузнаю, что мне нужно учить, а учить буду потом". Когда этот этап пройдёт, ты будешь думать "так сейчас надо найти самые лучшие книжки и курсы, а потом буду их читать и учить". Когда найдёшь - "так, нужно почитать программач ещё разок, чтобы быть в курсе, не изменилось ли чего". Потом "ага, надо ещё работы посмотреть на данный момент и сделать проекцию в будущее, чтобы предположить свой заработок". И после ещё десятка таких типа-как-небесполезных откладываний ты либо найдёшь какую-то другую великую цель для себя, либо попробуешь начать изучать то, что подготовил, но не протянешь дольше недели.

    Это я к тому, что из этого паттерна прокрастинации и фантазий нужно выбираться прямо сейчас, а не потом. Если ещё более прямо надо - бери любой язык и учи его месяц, не тратя время на всякую чушь. Иначе гроб.
    Ответ написан
    Комментировать
  • Существует ли краткое древовидное руководство по вёрстке?

    neoshinji
    @neoshinji
    Проектировщик простых интерфейсов
    Берёшь готовый HTML-шаблон, похожий под требуемую реализацию проекта на последней адаптивной версии Bootstrap. Меняешь классы у блоков до достижения необходимой структуры новых блоков/страниц. CSS желательно редактируя сразу на SASS. После тестирования на кроссбраузерность(основа Chrome) Десктопной версии переходишь к адаптивному мобильному виду.

    Всё время следуя правилу - Достаточно ли я чисто выполнил вёрстку данного элемента, не наделал ли я лишнего из-за недостатка знаний. Не делайте лишних блоков для оформления, используйте псевдоэлементы и CSS 3.

    Если необходимо создать новую страницу(если вы отвечаете за дизайн также), то до вёрстки желательно сделать её динамический прототип на Axure, утвердить данную страницу с программистами, директорами и только потом верстать. Таким образом максимум придётся дорабатывать готовую страницу 1-2 раза, а не 10-20 раз. Следовательно экономия времени.

    Дизайнер должен знать как верстаются элементы по сетке. Верстальщик должен знать дизайн, чтобы быть уверенным что дизайнер спроектировал качественный адаптивный дизайн. А вот верстальщик необязательно должен сразу становится фронтендом, то есть изучать сразу JS.

    Если нет чёткого представления оформления элемента, добейтесь этого, иначе даже качественная вёрстка не будет полезна для проекта и возможно всю разработку данного элемента вы произвели впустую.

    Чем больше знаний и опыта у специалиста тем меньше требуется ему времени на разработку элемента. Однако спешить не следует, необходимо следовать системному подходу, продумывать юзабилити заранее и начинать с прототипа, который строится от максимально эффективно(функционально) реализованной идеи.

    Древовидное руководство по вёрстке) Рекомендую побольше почитать про "шаблонизацию", думаю, вы про это хотите узнать.
    Ответ написан
    Комментировать
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    zooks
    @zooks
    Frontend
    Да, работаю больше 10 лет. Имеется небольшой лишний вес. Но просто учишься делать перерывы, делать разминку. Как в первом классе "мы писали, наши пальчики устали". К оборудованию рабочего места подходишь с большей ответственностью, чтобы осанка была прямая, колени согнуты на 90 градусов.

    Больше всего страдает зрение - на помощь приходят программы EyeLeo и F.lux.

    Для сброса/поддержания веса и укрепления мышц рекомендую ходьбу.
    Ответ написан
    2 комментария
  • Как попасть в backend-разработку?

    yucom
    @yucom
    Ruby on Rails Developer
    У вас хорошая база. Я бы посоветовал написать небольшое приложение на Django с использованием методологий TDD и Gitflow, например, микроблог - пользователи, сообщения, подписка. И выложите код на github, чтобы показывать работодателям. Интерфейс можно сделать просто на bootstrap. Потом ищите проект на фрилансе или в офис, где в команду требуется джуниор на бекенд и начинайте решать поставленные задачи, смотрите как работают другие. Изучайте теорию и функциональное программирование. Так от простого к сложному дорастете до сеньора и высоких нагрузок.
    Ответ написан
    2 комментария
  • Нужен совет по направлению развития начинающего программиста?

    @Kup9_NpS
    Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.
    Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
    Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
    Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
    Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
    Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
    Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
    Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
    За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
    А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
    Ответ написан
    2 комментария
  • Какой должна быть результативная заявка на Upwork?

    Надо отвечать быстро (или если у проекта мало ответов), вникать в проект и писать по существу, без общих фраз. Плюс нужны отзывы в профиле (да и вообще нормальный профиль).

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

    У меня в последнем проекте у человека был сайт незавершенный на 4 ларавеле с включенным дебаггером, я ради интереса посмотрел его, обнаружил в логе дебаггера пару внутренних ссылок на апи сайта, нашел, что один такие адреса отдают ошибку, так как не могут найти метод у авторизованного пользователя. А адрес сам по логике вообще не должен был быть доступен для неавторизованных. Написал, что здесь нужен фильтр перед адресом с запретом доступа, заодно предложил на ларавел 5 перейти. Ну и вообще портянку длинную ему в ответе оставил. Заключили контракт на 5000$. До этого небольшие проекты были, по большей части для раскрутки, но на них то же самое работает.
    Ответ написан
    Комментировать
  • Верстка -> Frontend -> Full Stack developer - какой оптимальный путь развития?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что бы быть full stack вы должны понимать что происходит на каждом уровне вашего приложения. от кнопочек которые вы верстаете, до того как обрабатываются запросы на сервере, в плодь до взаимодействия с базой данных через все прослойки.

    Вне зависимости от выбранного языка или фреймворка, принципы остаются примерно те же. С Symfony мы можем говорить о гексагональной архитектуре, луковой архитектуре, data mapper и т.д. С nodejs мы тоже можем обо всем этом говорить но там не особо развиты идеи data mapper (на данный момент). Приходится жить с active record или dbal. Ну и опять же управление зависимостями в js и в php по разному организованы, хотя суть (dependency inversion) остается той же.

    Единственный совет дам - не распыляйтесь. Старайтесь не переключаться между фронтэндом и бэкэндом слишком часто, это уменьшит скорость обучения. Большая часть знаний в принципе спокойно мигрирует из одной сферы в другую, так что не переживайте.
    Ответ написан
    Комментировать
  • Какие технические курсы можете порекомендовать?

    LittleFatNinja
    @LittleFatNinja
    горе девелопер, любитель лютой садомии
    Ответ написан
    Комментировать
  • Как анализировать вакансии front/-backend разработчиков?

    @rsi
    software engineer
    Типичная ситуация на рынке вакансий. Работодатель запрашивает ненужные знания и предлагает вымышленную зарплату, на вакансию откликаются люди которые якобы знают все эти технологии. По факту работу получает человек который дай бог знает половину из того что он наговорил, а работодатель хорошо если платит половину от тех денег которые обещал.
    Ответ написан
    16 комментариев
  • Как анализировать вакансии front/-backend разработчиков?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Как правило, это пишет "специалист" из отдела кадров, который понятия не имеет об используемых терминах.
    Просто напишите резюме, в котором будет как можно больше слов из описания вакансии.
    Я понимаю, что сложно заявить о знании Oracle Pl/SQL не использовав его, но можно написать "SQL, MySQL". Такое резюме имеет хорошие шансы пройти первичный отбор, а уж затем можно пообщаться с кем-то более вменяемым.
    Иногда в небольших компаниях начальство и отдел кадров понятия не имеют, что используется на производстве, поэтому и пишется отсебятина. Очень важно пройти первичный отсев и выйти на уровень реально связанный с используемыми технологиями. Даже если потом выяснится, что вы не подходите, вы можете спокойно развернуться и уйти, а можете и подучиться. SVN и GIT не так уж сложны. Да и освоить Oracle после MySQL тоже будет несложно. Подавайте смелее, а на месте уже разберетесь.
    Ответ написан
    2 комментария
  • Как вернуть мотивацию к обучению?

    @FranzK
    Чувак, тут нужен системный подход.

    Самое простое, необходимое, но не достаточное
    Для начала потребуется поднять боевой дух. Здесь нужна ударная доза гормонов счастья: серотонина и дофамина. Фактически, по теме серотонина уже успел высказаться Станислав Макаров: физическая нагрузка, сон, отдых. Но все равно, всегда есть что добавить.

    Что касается дофамина, он вырабатывается каждый раз, когда достигаешь успеха. Ставишь задачу, выполняешь, получаешь дофамин, такой вот нехитрый бартер. Так что, для надёжного повышения бодрости нужно поставить на поток выполнение а)частых мелких задачек и б)более редких крупных, весомых, значимых задачищ. Эти достижения не должны быть надуманными, себя не обманешь, а поэтому пора поскорее переходить от самообучения к практике. То есть нет, самообучение остается, но приоритет смещается от учения, в котором тяжело, - в сторону боя, где легче.

    Основное, скажем так, мясо мотивации
    Разовый прилив гормонов счастья способен вернуть к жизни загибающуюся разочарованную душу, но далеко на этом топливе не уедешь. Эти гормоны, вообще-то, должны вырабатываться сами собой, без привлечения к себе нашего внимания. Но у многих людей механизм выработки даёт сбой, как правило, причины этого имеют психологический характер. Мысли, что ничего не получится, что тлен и мрак, что ночь темна и полна ужасов, - эти мысли повисают мертвым грузом на наших ногах и чертовски отравляют жизнь. Но, к счастью, есть ноги свободные от этих гирь - это ноги людей, которые верят в себя, которых в детстве поддерживали родители. Таким людям легко идётся по жизни, у них всё получается, потому что они не боятся, не откладывают, а делают. Кому не так повезло, и кто с гирями, им придется избавляться от неверия и низкой самооценки уже в пути. Нужно через силу заставлять себя поверить в успех, словом взять на себя ту работу, которую в жизни уверенных людей проделали их родители. Внушать, прямо вдалбливать, что у меня получится, я преодолею это, ну и всё в таком духе. И, повторюсь, поскорее переходить от теории к практике. Будет страшно, но это окупится.

    И неправы снобы, говорящие: "Не нужно себя мотивировать. Оставайтесь в жопе". Сколько достойных людей оказалось в жопе в какой-то момент, и погибло, не сумев справиться с судьбой? Есенин. Высоцкий. Кафка, вот уж кто был главный кандидат, чтобы остаться в жопе: был издан после смерти, вопреки завещанию, и оказалось - гений, да каких поискать. Или Гоголь: я бы, вот честное слово, легко променял бы Артемия Лебедева вместе с его великой студией и Татьяной Никитичной на второй том "Мёртвых душ". В общем, много их было, кто в жопе и не вернулся. И никому от этого лучше не стало.
    Ответ написан
    2 комментария
  • Какие задачи нужно уметь выполнять на JS начинающему?

    copist
    @copist
    Empower people to give
    Какие задачи нужно уметь решать на чистом JS, перед тем как переходить к изучению библиотек и фреймворков?


    Кроме синтаксических конструкций, математических и логических выражений, нужно знать:
    • Область видимости переменных
    • Замыкания
    • Объектно-ориентированное программирование, в частности наследование через прототипы
    • Шаблон проектирования "модуль"
    • Операции над DOM
    • Понимание принципов событийно-ориентированного программирования
    Важно - нужно знать, откуда копипастить.
    Тебе нужно быть очень хорошо знакомым с одной-двумя-тремя популярными библиотеками на JavaScript. В идеале ты должен иметь представление о том, что определённый класс задач может быть решен с помощью определённых библиотек, хотя бы одной, но такие знания приходят с практикой. Вообще ты должен быть знаком с ними так близко, чтобы помнить, в какой части мануала по библиотеке можно найти описание форматов входных данных нужной тебе функции и какой будет результат, чтобы скопировать и вставить в свой код, а потом поправить, чтобы работало.

    Важно - инструменты программиста JavaScript
    У тебя должен быть удобный инструмент для разработки (IDE, Integrated Development Environment), чтобы он тебе подсвечивал код (syntax highlight) и подсказывал о синтаксических ошибках (syntax check), о формальных параметрах функций (type hinting), о стиле кодирования (code style), помогал писать код (live templates).
    Ты должен знать, как отлаживать скрипты в популярных браузерах (Firebug, Chrome Developer Tools и другое). Что такое точки останова, как управлять исполнением во время останова, как посмотреть и поменять содержимое переменных, как настроить останов по условию.

    Хотелось бы узнать что это за задачи(упомянутые вами 80%)


    Реальные задачи джунов:
    1. Возьми из сборника задач по javascript любой скрипт случайно и вслух расскажи, что он делает.
      Важно - читать и понимать чужой код намного важнее, чем писать свой. И на работе тебе это приддётся делать чаще, чем ты думаешь. Чтобы подключить к своему проекту чужую JS либу, нужно понимать что она делает, как она конфигурируется, как управлять её поведением. Скажу точно, что написать свой скрипт, который строит графики, намного сложнее, чем понять, как настраивается highcharts.

    2. Напиши скрипт на JS, который в заданном тексте удалит один или два символа, выбранных случайно
      1. Усложнение: удалять можно только буквы в словах, а знаки пунктуации и цифры удалять нельзя
      2. Усложнение: принять, что этот текст является программной на Javascript, удалить одну-две команды JS, но только если они не в строковых литерах (break как команду удалить можно, а в строке "break my heart" нельзя)
      3. Усложнение: воспользуйся этим скриптом и "попорти" код какого-нибудь другого скрипта на Javascript, а потом отладь, найди ошибку и восстанови работоспособность
      Важно - этим обычно все и занимаются - ищут баги. Только в реальной жизни они и без этого скрипта появляются. И не по одному, а прям пачками.

    3. На страницу HTML нужно встроить график курса доллара по отношению к рублю. Формат входного массива значений курса определи сам, исходя из своего скрипта для построения графиков.
      1. Усложнение: на одном графике должны быть два курса, по разным шкалам. Наприме, курс доллара к евро и курс юаня к рублю
      2. Усложнение: первоначально график вывести в детализации по месяцам, но чтобы можно было "приблизить" (drilldown) детализацию до дней
      3. Усложнение: первоначально график вывести текущем месяце, но чтобы можно было загрузить данные для предыдущего месяца без перезагрузки страницы (AJAX)

    4. При клике по картинкам, вставленным в текст HTML, показывать всплывающее окно для просмотра увеличенной картинки.
      1. Усложнение: в всплывающем окне сделать навигацию по картинкам, вперёд/назад и к нужной картинке
      2. Усложнение: в всплывающем окне вместо картинки показать видео-ролик с Youtube
      3. Усложнение: в всплывающем окне показать текст HTML

    5. По клику на кнопку "Click me" показать всплывающую форму.
      1. Усложнение: реализовать проверку данных на корректность перед отправкой формы (непустое значение, минимальное количество символов, максимальное количество символов, минимальное числовое значение, максимальное числовое значение)
      2. Усложнение: если в значении текстового поля встретилась гиперссылка, то считать её за 22 символа при любой длине этой ссылки (как в твитере)
      3. Усложнение: реализовать отправку формы на сервер через AJAX, без перезагрузки страницы
      4. Усложнение: саму форму в виде HTML загрузить с сервера через AJAX, в момент клика по кнопке "Click me", правила проверок данных должны как-нибудь "извлечься" из самой загруженной формы, например из аттрибутов полей ввода

    6. К форме ввода данных на поле ввода даты "навешать" всплывающий календарь для выбора даты.
      1. Усложнение: сделать форму календаря мультиязычной. Хотя бы через настройки на том же JavaScript
      2. Усложнение: сделать так, чтобы с помощью календаря можно было выбрать диапазон дат, чтобы она была привязана к двум полям формы "дата начала" и "дата окончания", и чтобы значение в поле "дата начала" обязательно была меньше чем в поле "дата окончания"
      3. Усложнение: сделать так, чтобы с помощью в календаре можно было видно визуально этот диапазон
      4. Усложнение: диапазон может быть открытым, но не пустым, то есть пользователь должен задать хотя бы дату начала или дату окончания.

    7. Сделать пред-просмотр веб-страницы HTML с разными темами. Тему страницы выбирать через селектор на javascript, а показывать в фрейме.
      1. Усложнение: сделать селектор "тип устройства", чтобы менять размер фрейма (например, "iPhone 5c 1136x640") и "чекбокс" для смены ориентации страницы "горизонтальная" или "вертикальная" (соответственно 1136x640 или 640x1136)
      2. Усложнение: в селекторе тем предусмотреть поиск тем по подстроке, и аналогично поиск устройств по части названия (авто-дополнение, auto-complete)
      3. Усложнение: тема страницы должна меняться без перезагрузки фрейма



    Задачи повышенной сложности, исходя из личного интереса
    1. Реализовать форму для многошагового мастера: форма должна состоять из нескольких страниц (шагов), пользователь может переключать страницы через какие-нибудь элементы управления "вперёд/назад" или "перейти на страницу".
      1. Усложнение: реализовать функциональную связь значений, когда некоторые данные зависят друг от друга (ввёл число в поле "количество" и в поле "сумма" значение пересчиталось)
      2. Усложение: доступность некоторых полей ввода должна зависеть от данных (например, если указал "есть личный самолёт", то значит можно ввести "марка самолёта")
      3. Усложение: видимость некоторых страниц должна зависеть от данных из предыдущих страниц (например, если указал "есть личный самолёт", значит появилась страница "ТТХ самолёта"; иначе страница должна скрыться)

    2. Реализовать однопользовательскую браузерную игру "змейка", "тетрис", "найди пару"
    3. Реализовать многопользовательскую браузерную игру "крестики-нолики", "морской бой" на два игрока в режиме "hot seat"
      1. Усложнение: два игрока на разных компьютерах, ходы передаются по websocket
      2. Усложнение: ограничение на ожидания окончания хода 15 секунд, по окончании ожидания автоматически делается случайный ход

    4. Реализовать todo-list. Пользователь вводит список, затем он превращается в строки с "чек-боксами". Когда "чекбокс" включен, строка зачёркивается.
      1. Усложнение: пользователь может переименовывать, удалять, добавлять строки
      2. Усложнение: список хранить в localStorage браузера, чтобы при перезагрузке страницы он восстанавливался
      3. Усложнение: пользователь может иметь несколько независимых списков todo

    5. Реализовать простой графический редактор. Пусть рисуется точка в месте, где пользователь кликнул.
      1. Усложнение: добавить переключатель режимов "точка"/"линия", в режиме "линия" рисуются линии между двумя последовательно кликнутыми точками
      2. Усложнение: можно менять толщину, цвет линий, размер точек
      3. Усложнение: последовательность кликов можно воспроизвести ещё раз с самого начала, равномерно или с реальной задержкой между кликами, с обычной скоростью или ускоренно
      4. Усложнение: можно выгрузить получившийся рисунок в формате PNG или SVG, причём SVG c анимацией воспроизведения



    Можно использовать любую существующую библиотеку.
    Например,
    для построения графиков www.highcharts.com
    для загрузки и передачи данных через AJAX: jquery.com + что-нибудь на сервере
    для всплывающих диалогов с картиками, видео и формами: fancyapps.com/fancybox и https://jqueryui.com/dialog/
    для валидации форм rickharrison.github.io/validate.js
    для календаря https://jqueryui.com/datepicker/
    для автодополнения https://jqueryui.com/autocomplete/
    для передачи данных между несколькими пользователями socket.io или обычный AJAX
    Ответ написан
    16 комментариев
  • Как распарсить строку и построить дерево категорий товаров и услуг?

    orlov0562
    @orlov0562
    I'm cool!
    Я напишу в целом, т.к. это подойдет для любого языка

    Алгоритм работы парсера довольно прост, и по большей части делится на 3и этапа:
    1) Получить данные
    2) Разобрать данные
    3) Сохранить данные

    1) Для того чтобы получить данные, надо изучить стек функций для работы с сетью. Можно гуглить по такому запросу "Как скачать веб-страницу" + твой ЯП (PHP, Java, Python и т.д.). Тут ты должен написать функцию которой на вход передашь url, а на выход получишь данные (html, json, xml и т.д.)

    2) Разобрать данные можно либо с помощью готовых библиотек под нужный формат, либо с помощью регулярных выражений, либо с помощью строковых функций. Тут на помощь придет запрос "Строковые функции" + твой ЯП или "регулярные выражения" + твой ЯП. На этом этапе ты должен написать функцию, которой на вход поступают данные, а на выходе получаешь заранее утвержденную структуру.

    3) Сохранять данные в необходимой структуре можно в файлы или в БД. Опять в гугл с запросом "Работа с бд " + твой ЯП, либо "Работа с файлами" + твой ЯП. Тут твоя задача написать функцию, на вход которой приходит заранее утвержденная структура, а на выходе ты получаешь результат "сохраненные данные"

    Ну, собственно и всё. Идешь в гугл, изучаешь матчасть и пишешь парсер.

    Если же тебя в большей степени интересуют алгоритмы разбора, тогда советую посмотреть код "калькуляторов" на твоем ЯП, погуглить можно по запросу "калькулятор со скобками", "Разбор и вычисление выражений". Это классическая задача, разбор твоего куска будет очень похож.
    Ответ написан
    6 комментариев
  • Входной уровень на Python Junior Developer?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Могу посоветовать изучение основ промышленного программирования на Python с наставником. Для работы помимо знания самого языка нужно уметь работать в команде, а это - git/mercurial, трекеры задач, проф средства разработки, тестирование кода, ревью, рефактор и деплой. Знание библиотек конечно же важно, но по опыту могу сказать, что общее понимание приходит быстро, а вот тонкости работы - только в процессе разработки и эксплуатации. Тем более что заранее сказать, что придется изучать - невозможно. Джанго - да, но вдруг поставят задачу, к примеру, интегрировать с рекламной сетью фейсбука - и вперед, изучай библы :)
    В итоге - я собираюсь вести такие курсы. Цель: базовые навыки для пром.разработки на пайтон. Опыт преподавания у меня по интернету есть + прочитал курс пром.программирования в МШП. Собирём группу из 7 человек и запилим какой-нить проект django/mysql/git/redmine :) Пишите, отвечу.
    Ответ написан
    8 комментариев
  • Не могу найти работу стажёром?

    v_sadist
    @v_sadist
    DevOps engineer
    Много бессмысленной грубости в треде. Как будто все с 5+ опытом программирования родились и вопросов глупых не задавали никогда.
    Топик стартер по вашему вопросу:
    "На сайт объявлений в разделе резюме добавил своё резюме ."
    Только на один? Позаливайте везде, чтобы на хх, кареер.ру, работа,ру и тд висело ваше резюме. Не забывайте про узкоспециализированные "Мой круг" (быв. Брэйнсторадж), и итмозг.

    "Заполнил должность , возраст , пол и т.д в разделе "Дополнительная информация:" написал : Хочу набраться опыта. Владею Html, css(bootstrap), javascript(jquery, ajax), php, Mysql ,Sql, ООП и MVC."
    Уберите отсюда "Хочу набраться опыта". Вы же не за еду работать будете, так?

    "Eсть опыт работы с разнообразным ПО. Указал свой номер телефона и скайп чтобы со мной могли связаться ."
    Опишите "опыт работы с разнообразным ПО". Строчка откровенно глупая. Вы умеете работать с Оракл и фотошопом? с Маткадом и вордпрессом? Что значит "разнообразное". Эта строчка очень портит ваше резюме, лучше напишите "есть опыт с soft1, soft2, soft3, да попродробнее - что конкретно делали с каждым продуктов.

    "Но уже как месяц ко мне не кто не звонит и не пишет, просмотры вроде есть. В разделе вакансии везде требуют опытных программистов."
    Если бы меня спросили, хочу ли я зеленого инженера или опытного, я бы сказал - опытного.
    1) Месяц - это не так много. В стране кризис, сокращения, текущие вакансии замораживают, новых не открывают, набор не увеличивают.
    2) Вы ИТшник. Будет мужиком, вычеркните из своего лексикона слово "вроде" и "наверное". Это я к "просмотры вроде есть". Я занудничаю по этому слову, потому что из вашего вопроса кажется, что вы растеряны и/или напуганы отсутствием предложений о работе. Бояться нечего. Хороший специалист без работы не останется, но если вы будете на собеседовании "мямлить" и на вопрос "работали когда-нибудь с фронтендом", ответите "вроде да"... Результат собеса вы знаете :) Вы круты. Вы знаете столько всяких штук (я напр. из всего этого только мускуль знаю, и то как админ). Все будет хорошо.
    3) Один из отвечающих уже сказал, что направление популярное, конкурс большой. Готовьтесь уничтожать конкурентов и пожирать их сердца на глазах рекрутеров.

    "Что я не так делаю ? стоит ли звонить на прямую в разные компания чтобы узнать нужен ли стажер ?"
    1) Оформите резюме согласно моим комментариям и комментариям других отвечающих
    2) Соберитесь. У вас есть кадык, так докажите право его иметь.
    3) Если вы из мск/питера/любого другого города, где есть представительства крупных софтверных контор и интеграторов, то
    а) отправьте туда свое резюме (если вакансий подходящих нет)
    б) найдите номер телефона ХР, позвоните и скажите "я вот вам сивишечку отправил, у вас есть что-то релевантное моим навыками?"
    Если да - то договаривайтесь о собеседовании, проходите, начинайте работать
    Если нет - попробуйте поискать удаленную работу.

    Вы хотите работу? Вы берете и ищете. В своем городе или нет. Удаленно или нет. Не хватает навыков? Учитесь. Проблемы с языком? Учитесь.

    Все получится. Удачи.
    Ответ написан
    Комментировать
  • Какой план обучения программирования можно предложить школьнику на лето?

    @estj
    prepodavatel Vuza po background programming
    Если считаешь, что надо делать проекты , то надо их делать, а книги, лекции -- это фон....

    Спланируй так, -- вот 21 лекция Курячего из ВМИК МГУ -- как раз, только закончились, и там не
    только пайтон , но и разработка на нем ... и пайгейм есть, и джанго, и гит, и сфинкс и ....

    www.uneex.ru/LecturesCMC/PythonIntro2014
    или на ютубе смотришь ....

    Первый месяц слушаешь все лекции (по -2-3 раза), можешь скачать и потом пропускать на скорости
    где-нибудь в полтора раза быстрее, но с конца месяца начинаешь проект - и это обязательно и потом,
    уже именно по проекту и будешь специализироваться , а не по языку...

    Направлений программирования - много -- от параллельного (если есть нвидиа карточка , то CUDA тебе как флаг тебе в руки) , если гаджетовое - то для роботов или смартфонов (тут свои технологии) -- модный наступающий мейнстрим - интернет вещей -- IoT.... , если веб, то смотри куда тянет больше (в т.ч. и пайтоновская джанго как технология может помочь)....
    Главное - повторяю, проект на лето, и свой, выстраданный,
    и до конца (до промежуточного финиша хотя бы)...
    Ответ написан
    Комментировать