Задать вопрос
  • Переход из 1С в web-разработчики (PHP ) в 35 лет. С чего начать и реально ли?

    @NiKO2On
    Продвинутый PHP-программист
    Уважаемый ASDF13. Твой путь будет не быстрым. Чтобы стать мастером в вебе будь готов потратить 8 лет ежедневной работы. З/П у php программистов не больше, чем у 1С, причем чаще 1С-программисты ценнее (с текущим уровнем автоматизации).

    С чего начать. 1) Купи книгу HTML+PHP, сделай в ней все уроки.
    2) Сделай свой сайт без CMS. Здесь поймешь, что тебе нужно изучить ещё.
    3) Выбери одну из популярных CMS или framework (это ускорит разработку твоего продукта).
    4) Развивайся, берись за любые проекты.
    5) Обрати внимание на мобильные приложения. Сейчас в тренде.
    Ответ написан
    Комментировать
  • Как устроена архитектура современного front-end приложения?

    @timda
    asp.net веб-разработчик
    Так сразу не ответишь. Почитайте Интернет, много всего. ITDVN на ютубе посмотреть можно. На хабре много интересных статей. Например, свежий, "легкий" пост https://habrahabr.ru/post/321844/

    По сути архитектура не менялась с появления скриптов в браузере. Три уровня операций в архитектуре:
    1) Верстка. Раньше были таблицы, потом стали дивы. Все писали свои библиотеки. Затем библиотеки стали выкладывать в общий доступ - появились CSS-фреймворки Bootstrap, Foundation и так далее. Стало слышно о предпроцессорах CSS - less, sass. В 2014 году Гугол выпустил свой подход к дизайну Material Design. На базе него есть масса CSS-фреймворков. Сейчас переходим на флексы, приятная вещь.
    1.2) Лет пять назад начался бум мобильного трафика со смартфонов. Поэтому появились медиа-запросы и адаптивная верстка. Я сам года полтора назад взял ксиаоми 5.5 дюймов - первое время в деревне балдел :) Важный элемент.
    2) DOM. Операции по работе с DOM. Парсинг HTML дерева. Раньше писали большие библиотеки для разных браузеров (в основном на Javascript). Модно было менять картинки в меню по наводке мыши. Потом появился jQuery, он во многом снял вопросы о кросс-браузерности. Сейчас это все переросло в JS-фреймворки. Самые популярные, насколько понимаю - Angular, React. Их много.
    3) Запросы на сервер. Когда то давно это называлось XmlHttpRequest в виде COM-объекта в IE. Потом модное слово Web 2.0. Далее - мода на Ajax. Потом появился jQuery - это правда очень хороший и качественный продукт. И опять же JS-фреймворки.
    ---
    Эти операции за последние лет 15 обросли кучей терминов и технологий. Каждый считает, что он сможет написать лучше - и делает свою систему, технологию, подход, фреймворк и так далее. Не говорю, что это плохо - может и хорошо, но бардак аццкий.

    И в серверных технологиях много нового, хотя гиганты вроде Явы, Майкрософта, Оракла - удержались. Вокруг конечно создали много всего, но ИМХО - как был PHP и ASP в Интернете, так и остались. Хотя, такие штуки как REDIS весьма полезны :)

    ЗЫ: я лично смотрю в сторону Angular 2 или React (скорее всего буду пробовать обоих) и Bootstrap 4 с флексами. Если бутстрап до апреля не забЭтится - выкину и напишу свои небольшие библиотеки, мне много не надо :) Хотя мне пока что и на ASP.NET Forms и ASP.NET MVC неплохо живется, ну jQuery конечно, Yandex MAP API, бустрапа в меру. Но у всех свои мнения :)
    Ответ написан
    2 комментария
  • Что учить Angular или React новичку?

    GriNAME
    @GriNAME
    Front-End Developer, Android Developer
    Многие советуют начать изучение с Vue, а потом уже выбрать что лучше. Для многи плюс Vue будет в хорошей документации на русском языке (официальная поддержка русского на сайте). Мне ближе Angular (v.2+) с его MVC, поэтому выбрал его. А вообще эти фреймворки не нужны для обычных простых сайтов. Если страница которую верстаешь язык не поворачивается назвать веб приложением, то там нужна обычная верстка. А когда на странице много модульных частей, которые как-то взаимодействуют друг с другом. То тут уже фреймворки будут кстати.
    Что именно выбрать решать вам. По большому счету это не принципиально и в основном дело вкуса в первую очередь. Все они в итоге делают веб приложения. Я выбрал Angular v.Последняя. Так же симпатичен Vue. Реакт немного недолюбливаю, чисто из-за личных предпочтений, не более.
    А так, JS в первую очередь доводите до хорошего уровня, как тут большинство и советуют. И ищите недорогие заказы. Главное сейчас это практика реальных проектов и просто запустить сам процесс поиска и выполнения работы. Остальное приложится)
    Ответ написан
    Комментировать
  • Как устроиться на работу бывшему ИП?

    @Oblomingo
    Я в 30 начал программировать на C#. Просто так, как хобби.
    Помимо основной работы (в энергетике), сдал Майкрософтский экзамен и устроился джуниором в одну контору.

    За 4 года сменил две работы, сдал еще около 10-ка экзаменов, прочитал кучу книг по архитектуре. Теперь занимаюсь тем, что пишем энтерпрайз системы для крупных иностранных заказчиков. Месяц назад мне предложили перейти на позицию Senior.

    Я к тому, что никогда не поздно начать, что то новое.
    Ответ написан
    4 комментария
  • Какие есть современные способы дистрибьюции электронных книг на ИТ тематику?

    Предпочитаю бумажные версии. Но покупаю и бумажные и электронные. Дома читаю на бумаге, не дома - на телефоне.
    Бумага нифига не прошлый век. Зря вы так.

    На одних электронных как раз таки заработать нереально. После первой покупки будет на торрентах.
    Ответ написан
    Комментировать
  • Какие существуют ресурсы для расширения знаний?

    Epsiloncool
    @Epsiloncool
    Программер, веб-девелопер, гейм-девелопер
    Самый быстрый (и я считаю правильный) путь изучения прикладного программирования - это РЕАЛЬНЫЕ задачи + гугл + английский язык (на первых порах Google Translate). Пустое чтение теории не даёт ровным счётом ничего. Лучше сделать небольшое реально работающее приложение, чем прочитать 100500 книг по программированию.
    Ответ написан
    2 комментария
  • Как при работе единственным веб-мастером-на-все-руки в компании максимально эффективно прогрессировать в веб-разработке?

    Сначала реши что тебе интереснее - код писать или решать проблемы бизнеса. Казалось бы, что код должен решать проблемы бизнеса, но сейчас это не так.
    Если тебе интереснее инженерные штуки (учить фреймворки, разбираться с тулзами и вот это всё), то увольняйся и иди в айти-контору. Там будешь заниматься аутсорсом в обнимку с легаси, новыми технологиями и разговорами о них с ребятами в столовой или возле кулера. Но понимать зачем ты делаешь то, что делаешь ты не будешь. Скорее всего этого не будут понимать даже твои начальники: лид и ПМ. В аутсорсе это норм. Чем больше контора тем больше карго-культа и меньше смысла в том, что происходит. Оверинжиниринг тут не то, что пытаются искоренить, но скорее даже поощряют (хоть и не в голос) - так больше зарабатывается на time & material.
    Если бизнес тебе интереснее, то развивайся в сторону продуктового технолога. В этом направлении вопросы "Зачем что-то делать?" важнее "Как?". Качай переговорные навыки и управленческие. Твоими инструментами будут не редактор, но другие ребята, которым интересно рисовать баннеры, кодить и прикручивать фотогалереи и вот это всё. А основной задачей (очень затратной с точки зрения мозготоплива) будет выяснение задач вместе (и это важно, что именно вместе) с бизнесом и рекомендации как лучше инвестировать заработанное в технологии.
    Ответ написан
    Комментировать
  • Кто пользуется редактором кода CodeLobster?

    Vadiok
    @Vadiok
    Веб разработчик
    Про must have редактор не скажу, но все же очень удобен PhpStorm, обладает огромным функционалом, поэтому многие им и пользуется.
    Мое мнение, почему CodeLobster непопулярен:
    1. Нет версии под Мак - думаю, что большинство, кто составляют более-менее популярные рейтинги пользуются маками.
    2. Если смотреть эту таблицу цен, то бесплатный вариант практически не обладает ничем выдающимся, lite за 40$ тоже слабоват.
    3. Отсутствие возможности ткнуть в папке проекта и тем самым создать новый файл - это вообще жесть.
    4. Нет стилизации кода под стандарт - тоже очень плохо.
    5. Очень мало плагинов - например кому-то важны миникарта, gist'ы, быстрый переход к месту, VIM-mode, возможность написать свой плагин - всего этого нет.
    6. Невнятная справка, древний сайт.
    7. Не понял, есть ли у него "go to definition", но, похоже - нет, без этого IDE - недоIDE.


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

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    я приобрел неплохой навык для IT-специалиста

    Это действительно очень полезный навык. Из позиции "на все руки мастер" гораздо больше перспектив. В сети часто ругают таких специалистов, мол, набрался всего по-маленьку, и ничего не умеешь делать хорошо. Такие люди просто не понимают, о чём говорят, скорее всего из-за собственной неопытности. Грамотные, мудрые спецы имеют познания в море областей, а не только в одной. Чем больше у тебя навыков, тем ты ценнее как специалист, и тем больше у тебя выбора: ты можешь не только углубиться в какую-то одну область, но и стать хорошим руководителем, ведь ты способен теперь понимать большое количество разных людей.

    По-моему, для начала нужно попытаться изменить ситуацию вокруг себя - подготовить разговор с начальством о трудовом процессе. Если безуспешно - либо оттачивать навык переговоров, либо не дергаться до тех пор, пока работа устраивает в целом, либо присматривать другую работу.
    Ответ написан
    5 комментариев
  • Знания Junior php разработчика?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что должен знать идеальный джуниор (мое личное мнение):

    - Сетевой стэк. Нужно иметь хотя бы базовое представление о том как с сервером общаются. Ну то есть не нужно лезть в дебри, но понимать что такое HTTP или чем TCP от UDP отличается - нужно. В целом это пара часов чтения википедии.
    - GIT или любая другая распределенная VCS. Базовые навыки, что бы хотя бы понимал что есть git revert или git rebase, что такое фичабрэнчи и примерное представление как это работает и зачем надо.
    - Базовые основы unix. Ну то есть что бы не пугаться таких вещей как ssh хотя бы.
    - PHP. Без этого никуда. Он должен понимать что такое слабая динамическая типизация (не заучивать табличку кастов типов, а понимать плюсы и минусы, такая же история с приоритетами операторов - не заучивать а знать как избегать проблем с чтением кода)
    - Понимать что код чаще читают чем пишут, а потому не экономить 5 минут на написании кода, а писать так, чтобы сэкономить 30 минут человеку, разбирающемуся в куске кода.
    - Знать базовые вещи в плане безопасности. XSS и как защищаться, SQL инъекции и как защищаться, CSRF, MITM. Понимать что такое NDA, что данные пользователей - секретная информация. Как хэшировать пароли (не md5 а password_hash) и почему это важно.
    - Знать SQL. Глубоких знаний не требуется, нужно лишь понимание того, что такое нормальная форма, желательно разобраться с вопросом денормализации данных. Идеально иметь хотя бы базовые представления о том как работать с NoSQL решениями.
    - Процедурное программирование: почему глобальные переменные порождают сложность, что такое состояние, как можно использовать классы для изоляции состояния и т.д. Инкапсуляция. Инварианты, пост/пред условия, сохранение целостности...
    - Разделение ответственности. Это один из важнейших принципов, и упрощать все это до "mvc фреймворк" слегка неправильно. Вы должны понимать что от чего отделяете и главное зачем.
    - Автоматические тесты. Джуниор должен знать что это такое и иметь хотя бы минимальный опыт их написания. Должен понимать разницу между юнит и интеграционными тестами. Быть знакомым с пирамидой тестирования.
    - Уметь решать стандартные задачи не задавая слишком много вопросов. Например регистрацию пользователя по email-у вы должны написать, или авторизацию через соц сети, или комментарии, или новостную ленту.
    - Уметь дебажить. xdebug, blackfire и тд.

    В целом где-то за годик весь этот список можно влегкую покрыть с нуля.

    p.s. Я в списке специально не указывал ООП, поскольку всеравно первые пару лет у разработчиков выходит процедурщина на классах. Это не плохо, но того что в моем списке более чем должно хватать для решения стандартных задач. Но термины вроде "инкапсуляция/полиморфизм/наследование" требуются в обязательном порядке подавляющем количеством интервьюверов, а стало быть знать это надо. Единственное что - рекомендую в свободное время глубже погрузиться в этот вопрос а не тупо заучивать формулировки.

    Так же вещи вроде docker джуниорам знать не обязательно просто потому, что их врядли допустят сходу к управлению инфраструктурой. А так пару неделек на изучение и вперед.
    Ответ написан
    12 комментариев
  • Как получить заказы по web scraping и какие навыки улучшить?

    Вам не кажется, что у вас слишком много претензий к апворку? "Мне не нравится одно", "мне не нравится другое". Это не вы ставите условия апворку, это он ставит условия тысячам таких как вы.

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


    При этом те тысячи не будут спотыкаться на написании парсеров. Чем вам не нравится ставка 20%? Удвойте ваш ценник и будете зарабатывать больше, заглядывать в карман биржи у вас нет никакого права, они создали бизнес и они на нем зарабатывают. При этом они позволяют зарабатывать вам вместе с ними. Не нравятся их условия - ищите клиентов в других местах, вот только будет ли им достаточно ваших компетенций, если вы в своем пути застряли на написании парсера? Еще и демпинговать при ставке 8 баксов - шикарно.
    Ответ написан
    1 комментарий
  • Ускорение верстки psd?

    Frel: avocode

    Поддерживаю, исползуйте avocode, вот ссылка на хороший курс по нему , а также удобный сервис для смены почты раз в две недели. Удачи.
    Ответ написан
    4 комментария
  • Photoshop, notepad++ и бочка кофе в придачу, что ещё поможет верстать сайты быстрее и с меньшими затратами нервов?

    iiiBird
    @iiiBird Куратор тега Вёрстка
    Пока ты спишь - твой конкурент совершенствуется
    sublime text и ставишь какой нить livereload. ну и плагины для sublime text по вкусу.
    Ответ написан
    Комментировать
  • Как реализовать быстрый поиск в массиве объектов по значению свойства?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Не сваливать все в объект, а сразу писать в IndexedDB, а необходимые для оперативной обработки данные, например выборку по городу, брать средствами работы с IndexedDB.

    Для браузеров не умеющих работать с IndexedDB есть библиотека PouchDB, менее шустрая, чем нативные встроенные в браузер реализации (UPD: если их нет, в противном случае - используются нативные), но даже на старых браузерах (IE7,8) будет выигрыш, как по удобству манипуляции данными, так и по скорости.

    UPD: обращение к IndexedDB НЕ блокирует интерфейс и может использоваться в воркерах (см. issues на странице).

    UPD: кстати, PouchDB :
    • сам использует IndexedDB, когда она доступна, в старых WebKit, в т.ч. на Android использует WebSQL, когда совсем плохо (старые IE) - тоже чего-нибудь придумывает, как минимум - localStorage;
    • дает возможность работать с серверными данными, как c локальными, когда они доступны, идеальное решение для снижения заморочек с созданием "оффлайн" приложения или одностраничника с "миллионом записей", проводя "репликацию";
    • все танцы с бубном вокруг индексов - фоновая, абсолютно прозрачная задача.
    • если поставить на сервере CouchDB или эмулировать ее Rest api - можно забирать всех "Вась из Омска" прямо с сервера одним вызовом
    UPD: И когда, наконец, народ научиться подбирать подходящий инструмент для работы, а не валить лес пилкой для ногтей и не вскапывать грядки карьерным самосвалом?
    Ответ написан
    1 комментарий
  • Существует ли "карта программиста"? Что и за чем учить?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Нет одинаково эффективного пути для всех и каждого.

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

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

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

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

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

    На первых порах, тестирование будет занимать до 99% времени и сил. Заодно подтягивается синтаксис используемых языков (вообще не важно каких), вырабатывается внимательность, концентрация, тренируется память и пр.

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

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

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

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

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

    Ах да, обложись справочниками по любому инструменту и научись быстро вникать и подхватывать необходимый минимум. Обычно достаточно на 20% владеть инструментом, чтобы решать 80% задач.

    В любом случае я за критерий истины держу платежеспособный спрос.
    Ответ написан
    3 комментария
  • Как организовать мини-тренировки по программированию (для себя)?

    copist
    @copist
    Empower people to give
    Список которым пользуюсь я:
    1. Регулярно участвуй в сообществах взаимопомощи веб-разработчиков. Отвечай на вопросы на toster / hashcode / mail.ru / stackoverflow и сотне подобных сервисов. Это тебе самому поможет разобраться в проблемах, заодно набьёт карму. Тут нет противоречия - помогай другим, чтобы учиться самому.
    2. Занимайся проектами с открытым кодом. Например, решай issue из чужих репозиториев на github, вот утилита для выбора случайного issue по нужному языку tevko.github.io/practice/index.html. Заодно включай их в своё портфолио.
    3. Учись читать чужой код, делай ревью чужого кода. Например, на codereview.stackexchange.com/. Потому что читать код - это 80% работы программиста.
    4. Можно попробовать оказывать микроуслуги (пример: work-zilla.com или https://www.fiverr.com/ - ищи аналоги) - будешь получать небольшие деньги за выполнение разовых работ, в частности исправление чужих сайтов, парсинг данных и прочее. Я так и начинал. Не с бирж фрилансеров, а с бирж микроуслуг. Там гораздо меньше объём работ, такие микроработы легко выполнять в свободное время.
    5. Поищи проекты, где начинающие веб-разработчики ищут себе компаньонов для совместных проектов. Например, дизайнер ищет фронта, бакенд ищет фронта. Я видел, есть специальные разделы на форумах на Envato, Behance.
    Ответ написан
    Комментировать
  • Видеоуроки по изучению JavaScript?

    qork
    @qork
    { background: #F00B42 }
    У Борисова что JS что PHP советую.
    Ответ написан
    Комментировать
  • Чем делать "домашние" backup'ы?

    JonNiBravo
    @JonNiBravo
    Я использую Acronis True Image Cloud www.acronis.com/ru-ru/personal/online-backup
    Буржуйские сервисы тоже тестил, оказались слишком медленными
    Ответ написан
    3 комментария
  • Механизм включения/выключения Bootstrap-адаптивности для сайта - как реализовать переход на полную версию сайта?

    Big_person
    @Big_person
    Адаптивная верстка на то и адаптивная, что не требует какого-либо переключения.
    Все компоненты располагаются на странице согласно сетке getbootstrap.com/css/#grid
    Для скрытия и отображения отдельных блоков используйте утилиты адаптивности getbootstrap.com/css/#responsive-utilities

    Если же нужно именно отключить адаптивность, тогда используйте <meta name="viewport" content="width=1024" >
    Ответ написан
    Комментировать
  • Как получить все возможные варианты "соединения" строк из 4 или более массивов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    число перестановок - n факториал

    т.е. count = len(a)*len(b)*len(c)*..*len(x)

    алгоритм - банальный for по вложенным массивам

    a = ['a1','a2','a3',]
    b = ['b1',]
    c = ['c1','c2',]
    d = ['d1','d2','d3','d4',]
    
    
    total = []
    for i in range(0, len(a)):
        for j in range(0, len(b)):
            for k in range(0, len(c)):
                for l in range(0, len(d)):
                    total.append(a[i]+b[j]+c[k]+d[l])
    
    print(total)
    print(len(total))
    Ответ написан
    3 комментария