Задать вопрос
  • Переход из С++ в PHP?

    allishappy
    @allishappy
    Не совсем понятно, зачем вам уходить из C++. Специалисты по С++ зарабатывают куда больше, чем профессионалы в других языках, ибо очень высокий порог вхождения и нехватка кадров. Если будете дальше развиваться в данном направлении, то не будет проблем ни с деньгами, ни с трудоустройством (хотя придётся работать скорее всего в офисе или частично удалённо).

    Если говорить о PHP, то вы его освоите на среднем уровне за неделю.
    З.Ы. Сам веб-разработчик
    Ответ написан
    5 комментариев
  • Что почитать об архитектуре CMS?

    riky
    @riky
    Laravel
    не уточнили какую цмс вам надо.
    цмс бывают двух типов:
    (1) просто система для управления контентом, которая ставится на сервер как правило в одном экземпляре, для упрощения работы менеджерам над контентом, или пользователм сайта.
    (2) и коробочные цмс которые либо свободно распространяются либо продаются, но факт в том что много юзеров использует их.

    для проектирования цмс первого типа, нужны общие знания о ООП в пхп и MVC. проект очень простой, нужно знать только ООП/MVC и желательно выбрать какой нибудь фреймворк symfony/laravel/yii.
    во втором случае система должна быть супер универсальной, функциональной. очень большие сложности возникают для обеспечения писателям плагинов(сторонним разработчикам) хорошего внутреннего апи (систему хуков hooks).

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

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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Единственно-верный вариант здесь: построение "дерева" связей между частями речи (внутри одного предложения), собранное из множества разных текстов с помощью человека на конкретных эталонных примерах.

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

    А задача такого плана решается исключительно только с помощью создания и обучения НС.

    Пример:
    Подаём текст на анализ: "Сервер не включался из-за сломанного блока питания."
    Отправляем на вход: "Почему не включался сервер?"
    Получить должны: "Был сломан блок питания."
    или
    Отправляем на вход: "Блок питания был сломан?"
    Получить должны: "Да."

    Возможно, что автор имел ввиду разделить и заменить местоимения на цельно-выраженные сущности.
    "Вот дом, который построил Джек":
    1. "Дом" ("вот" - удаляем, т.к. это частица)
    2. "Дом построил Джек" ("который" заменяем на управляющее существительное "Дом")

    scheme-parts.png

    PS: По ссылкам от Mikhail есть только простой шаблонный/словарный поиск с использованием правил и регулярных выражений - это не решение задачи в том виде, в котором возможно добиться правильной работы и корректного результата.
    Ответ написан
    2 комментария
  • Какие вопросы на собеседовании ожидать по JS?

    @kahi4
    Коварные вопросы, говорите?

    1. Какое из нововведений es6 принципиально не полифилится в es5? Почему? (И на какой черт оно вообще нужно, вдогонку). (И я бы заодно вдогонку попросил набросать полифил какой-то из фичей, например, this в arrow function).

    2. Какие условия должны быть соблюдены для того, чтобы v8 мог скомпилировать функцию в нативный код? Ну и разумеется, почему?

    3. Почему до es5.1 включительно typeof null === "object"?

    4. Что на самом деле произойдет, если вы напишите
    const arr = [];
    arr[3484] = 5;


    5. Аналог второго вопроса, но все же: с чем, по вашему мнению, могла быть связана бага в одной из версий хрома, приводящая к следующему результату:
    function foo() {
        return typeof null === 'undefined';
    }
    for(var i = 0; i < 1000; i++) console.log(foo());
    
    >>> 121 false
    >>> 879 true


    6. Какие вы знаете способы заставить js произвести несколько операций одновременно (буквально, за такт)?

    7. Сработает ли documeny.onready, если скрипт загружать с аттрибутом async? В каких случаях и когда именно он сработает?

    8. Что можно и что нельзя делать в событии document.beforeunload?

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

    @Yarrs
    Привет, тоже кину пять копеек.
    Во первых задай себе вопрос, чего ты хочешь, и чего тебе надо. С этого надо начать.
    Мы что-то делаем не просто так, а ради чего-то. Задай себе простые вопросы, кто ты, где ты находишься, в чем твои цели и предназначение. Программирование само по себе отстой, но с него можно начать. Когда то в 80 годы меня обуял восторг, когда я в классе третьем смог понять смысл a=a+1 Но с тех пор много воды утекло. Пойми чем ты хочешь на самом деле заниматься. Что является твоей настоящей целью, заработать денег, вырасти в социуме, поднять детей, прожить интересную жизнь. Как правило в жизни не выйдет получить всё, время это такой ресурс, который можно пустить либо туда, либо туда, либо еще куда. Делай всегда это с умом.

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

    Теперь немного конкретики.
    Вариантом отщепить время себе масса.
    1) Сними комнату рядом с работой.
    2) Вставай раньше. Ложись раньше
    3) Усталость, это усталость от схожего вида деятельности. Усталость можно легко побороть если заняться чем-то иным. Умственно / физически например переключается будь здоров.
    4) Первый час на работе посвяти только обучению. Обычно люди первый час тратят на котиков, чатики и прочую п-нь, будь не как все.
    5) Поговори с начальником, и скажи что тебе нужно развиваться и обучаться. Посмотри на реакцию. Если он не монстр вопрос можно решить.
    6) Всегда думай перед тем как делать. Решения существуют, часто не на поверхности.

    Теперь несколько вредных советов. Как стоит жить и работать.
    1) Если решил связать свою жизнь с программированием, стоит понимать, что платят те у кого есть деньги, и платят столько сколько готовы заплатить. Отсюда выводы. Больше получают узкие специалисты, которые работают с чем то редким и нужным тем у кого есть деньги. Работая на бедных ты заработаешь ровно чуть больше чем на спасибо. Это как у врачей, стоматологи, к которым захаживают сытые бюргеры с зубной болью на коне, кокой-нибудь травматолог / хирург имеют 90 процентов своей обычной клиентуры бомжей и нищебродов. Но процентов 10 попадается людей с деньгами. А вот анестезиолог вообще с клиентурой не работает, денег дополнительно ему вообще не приходит. Отсюда обилие медицинских анекдотов про бедных анестезиологов.
    2) Собственники и заинтересованные в бизнесе люди на платят просто так, а платят за решение проблем. Чем страшнее на первый взгляд проблема, тем больше за нее можно попросить денег. Сложные проблемы решаются разбиением на более мелкие задачки. Но переоценивать свои силы тоже не стоит. Если сделал что-то крутое скромничать не надо. Тебя будут оценивать в том числе по тому, сколько ты просишь.
    3) У предыдущего пункта есть небольшое следствие. Владельцу главное решение и сроки, ему похрен на красоту кода и прочий глупый перфекционизм.
    4) Лучше место работы для получения стартового опыта, какая-нибудь программисткая контора, но она же худшая в плане роста. Ты окружен людьми примерно твоего уровня и способностей, которые будут неизбежно грызться за место под солнцем, каждый твой начальник будет воспринимать тебе как угрозу своему месту. Прорваться в такой системе сложно. Кроме того работать надо на первое звено в пищевой цепочке. Пока линейному программисту что-то перепадет от базовой ставки 10 человек отщипнут по цепочке.
    5) Если ты работаешь в обычной конторе, постарайся выйти со своими идеями на руководителя бизнеса (гендира), он единственный кто заинтересован в проекте в целом, и может воспринять что-то от твоих мыслей лично. Люди ниже просто попытаются тебя использовать в своих целях.
    6) Люди если смотреть поверх бла бла бла всегда действуют в своих интересах, но только так как сами их понимают. Людей можно предсказывать и читать.
    7) Руководители нагружают тех лошадей что тянут. Идеальный работник тот, кто просит мало работает много. Повышения? Не слышали. Зачем повышать того кто хорош на своем месте.
    8) Добиваются чего-то только те, кто выходит за флажки. Есть загон для стада, где всегда будет скучно, обыденно и тухло, но жить можно, есть и другие возможности.
    9) Самая тупая ошибка людей верить, что если будешь хорошо и долго работать что-то изменится. Ничего не изменится.

    Ну хватит в общем, что-то я увлекся, всегда думай головой, вот мой совет.

    ПС: Забыл добавить. Обязательно надо выбираться из провинции в Москву Питер, лучше в Москву. Дальше уже можно как остаться, так и двигать дальше. Если возраст и прочие дела позволяют.
    Ответ написан
    10 комментариев
  • Как учиться новому после рабочего дня?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. 9 часов. Это уже ошибка. КЗОТ писали не дурни. 8 часов достаточно для работы, если человек не чаи пьет
    2. Пересмотрите процесс работы. По приходу на работу сначала делать самые важные. Прошу прочесть внимательно: сначала важные, а только потом срочные и другие. Отличие важных от срочных в том, что одни, как правило, делаются разово и про них забываются, а другие хоть и не срочные, но они влияют стратегически.
    3. Уделяйте время на то, чтобы подумать над "светлым будущим", т.е. создать\актуализировать список страгеческих целей и задач
    4. Делайте утром зарядку. Растяжку, отжимания, приседания. Это влияет на энергетику в организме
    5. Делайте перерывы во время работы.
    6. Чаще пейте воду
    7. Займитесь спортом. На своей шкуре опробовал и четко знаю то, что до занятия плаванием делал меньше, чем сейчас
    8. Окружите себя теми, кто куда-то стремится. Это не значит что надо всех других послать в Южную Америку на оз. Нахой. Это значит, что надо чаще общаться с одним типом людей и меньше с другим
    9. Стремитесь работать на результат, а не подсчет "жопочасов". В дальнейшем ставьте работодателю на собеседовании вопрос "Вам нужны жопо-часы или результаты?". Старайтесь выявить жмотов. Если вы вдруг справились не за 5, а за 4 часа, а работодатель жмотится и боится выделить время на самообучение сотрудника, хотя эти же знания будут применены при решении рабочих задач, то уходите от такого работодателя!

    Не смотря на то, что возникает соблазн прочесть еще одну главу в книге или что-то попрограммировать в ущерб занятиям спортом не стоит этого делать! Спорт обогащает энергетикой! При нём много чего развивается. К примеру из физических качеств развиваются выносливость и мышцы, а среди психологических стрессоустойчивость и упорство.

    После работы лучше тупить. Мозг должен "отдыхать". То есть заниматься структуризацией, обработкой того, что произошло за день.

    Старайтесь избегать рывко-образной работы. Все должно быть стабильно. Пусть даже небольшими кусками работы, но стабильно и бессбойно!
    Ответ написан
    6 комментариев
  • Что будет если выкинуть платную книгу к себе на сайт?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Реалии: это нарушение прав правообладателя контента.
    Худший вариант: возмещение убытков через суд: сумма будет зависеть от ценности контента и сроков существования этого контента на Вашем сайте: возмещение правообладателю упущенной выгоды.
    А дальше - думайте сами.

    Что будет если выкинуть платную книгу к себе на сайт?
    для Вас, к сожалению, только убытки с большей долей вероятности...

    UPD: Для повышения образованности: читаем
    Ответ написан
    1 комментарий
  • Есть ли смысл читать паттерны банды четырех, если ты js-разработчик?

    dimka-dooz
    @dimka-dooz
    front-end разработчик)
    Банда четырех пишет достаточно академично, и въехать будет тяжеловато.
    Я думаю знакомство с патернами стоит начать с книги
    "Эрик Фримен, Элизабет Фримен - Паттерны проектирования (Head First O'Reilly)" + тут примеры на java.
    Что касается js- там есть свои особенности поэтому в помощь Стоян Стефанов - JavaScript. Шаблоны и Эдди Османи Паттерны для масштабируемых JavaScript-приложений.
    Ответ написан
    Комментировать
  • Есть ли смысл читать паттерны банды четырех, если ты js-разработчик?

    @dmitryKovalskiy
    программист средней руки
    Да
    Ответ написан
    Комментировать
  • Какие есть способы предотвращения воровства файлов?

    riky
    @riky
    Laravel
    предлагаю просто в js делать закладки. например проверка текущего домена, если не равен вашему тестовому - редиректить на ваш домен с предупреждением типа работа не была оплачена.
    только естественно нужно усложнить и запутать
    - во первых - название домена не должно легко находится (можно например использовать хэш функции, типа md5, наличие кода которой также усложнит разбор кода)
    - во вторых хотя бы js обфусцировать, лучше всего придумать свою функцию обфускации, которая берет весь код скрипта и как то его преобразует, либо хотя бы частично.
    - желательно чтобы редирект был не слишком явный, например наступает только в 1% запусков и срабатывает только через 2 минуты. это также усложнит поиск дебаггером, + клиент может стырить код (или заказать кому то копирование) - и он покажется ему рабочим, кинет вас, а потом поймет что зря это сделал. но даже срабатывая 1% раз, эта защита испортит ему репутацию.

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

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

    100% защита это также как и в десктоп программах - только если часть алгоритма будет выполняться на вашем сервере (облачная обработка/сервисы). но это для вас наверное не очень актуально.

    еще один неплохой вариант - сделать приложение на любом десктопном языке программирования типа мини веббраузер. то есть все приложение это просто WebView во весь экран. и клиенту вы передаете один ехе файл который он должен запустить и увидеть сайт. скопировать будет очень сложно, если хорошо упаковать, сам клиент этого сделать не сможет скорее всгео, заказать взлом выйдет наверное не дешевле чем ваша работа. из минусов не очень удобно, для обоих, и клиент не сможет проверить качество кода и работу в реальных браузерах. PS: ищите компоненты WebView на базе хромиума, чаще всего стандартные компоненты основаны на IE да еще старых версий. также можно попробовать использовать для этих же целей понятные для фронтендеров срежы типа NWJS или electron - все программирование на JS и построены на базе хромиума, но в них сложнее обеспечить защиту кода, хотя тоже в какой то степени можно.

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

    neluzhin
    @neluzhin
    Полностью защититься не получится, но как минимум можно сделать код абсолютно неподдерживаемым - черт ногу сломит даже при малейших изменениях.

    Для начала, вы должны заинлайнить всё в один HTML-файл, как предложил Александр Татарин. Обязательно минифицируйте и объедините JS и засуньте его в единственный тег <script>. После минификации имена переменных вашего кода будут нечитаемыми.

    Затем прогоните страницу через HTML Muncher - это такая штука, которая переименует все CSS-классы в теге <style>, в атрибутах class вашей разметки, а также заменит все совпадения имен классов в JavaScript. Таким образом, был у вас класс .home, а станет .a, .icon превратится в .b и т.д.

    Ну а затем уже обмазываться тем, что порекомендовал вам пользователь neeil.
    Ответ написан
    Комментировать
  • Какие есть способы предотвращения воровства файлов?

    @neeil
    добрый вечер) клиентскую часть зашифровать просто используйте вот эту статью https://habrahabr.ru/company/xakep/blog/128741/
    Ответ написан
    Комментировать
  • Кто как адаптивно верстает 50% бэкграунды (слева одна картинка, справа другая)?

    @sergeyloysha
    Front-end developer
    Что-то все мудрят. Вот правильное, на мой взгляд, решение: https://sergeyloysha.github.io/cerius-home

    Сделано через before, after с поддержкой любого разрешения
    Ответ написан
    7 комментариев
  • Возможна ли конвертация сайта в формат .PSD или .AI со слоями?

    Nekto_Habr
    @Nekto_Habr
    Чат дизайнеров: https://t.me/figma_life
    Да как два пальца, чувак.

    Заходишь на сайт, жмешь CTRL+P, выбираешь Adobe PDF, меняешь формат бумаги (тостер, например, при печати в формат А4 печатается в планшетной версии) и открываешь PDF в иллюстраторе. Всё! Вместо текста, правда, будут кракозябры, но форматирование и вёрстка сохранятся, как и иконки.

    85d4065387c5454aa94b26bc22b0590a.png
    Ответ написан
    5 комментариев
  • Кто как адаптивно верстает 50% бэкграунды (слева одна картинка, справа другая)?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Я такие вещи делаю через after и before, я за чистоту кода в html.
    UPD1: Забыл добавить для .block { overflow-x: hidden; } , чтобы не было прокрутки.

    UPD2: При перестраивании на мобильную версию собственно ничего не уедет.

    UPD3: Адаптация https://jsfiddle.net/webirus/z5cbaq91/
    Всего 3 стиля переопределяешь и все.

    UPD4: Если блок с контентом должен быть как тут dohodnaya-kvartira.webflow.io , то в принципе ничего не меняется. Убираем .form, через after кидаем картинку на .wrapper и двигаем. А блоку .content добавляем z-index. И тогда контентный блок будет на всю ширину.
    Ответ написан
    4 комментария
  • Как реализовать быстрый поиск в массиве объектов по значению свойства?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Обходить миллионные массивы при каждом чихе - это жесть.

    Необходима индексация!

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

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

    Tpona
    @Tpona
    Ужасный перфекционист
    1) Попробуйте функцию Array.filter
    2) Попробуйте индекс по полю сделать, например, на основе хешей.
    3) Попробуйте использовать indexeddb или websql
    Ответ написан
    3 комментария
  • Это хорошая стратегия вёрстки?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    это техника не для новичков. когда ты научишься создавать дивы и запоминать классы, не смотря в html, и не смотря в браузер после задания каждого стиля - тогда такой способ сильно ускоряет верстку. тобишь ты просто сначала создаешь элементы в dom а потом начинаешь их стилизовать. и из за того что большой опыт - ты уже знаешь наперед какой стиль как и куда поставит тот или иной элемент, не смотря в браузер. тем самым ты просто сразу пишешь стили для 10 элементов вслепую, а потом только смотришь и правишь если вдруг все же ошибся где то. и так далее
    Ответ написан
    1 комментарий
  • Как правильно, быстро и без вырванных волос сверстать html css из шаблона?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Сетка (+подключение необходимых js/css) с расположением динамически подгружаемых блоков. Используем https://github.com/xmoonlight/includeHTML
    2. Общий CSS
    3. Отдельные блоки (меню, header, footer и т.д.)
    4. Добавление стилей для блоков в общий CSS по мере необходимости.

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

    Я делаю сначала html разметку всех страниц, затем определяю стили шрифта для p, a, h1, h2, h3 и т.д Затем делаю сетку всех страниц, после чего сверху вниз верстаю все элементы с уже рабочей сеткой. Элементы сетки нельзя позиционировать абсолютно. Если все так плохо, то на HtmlAcademy можно пройти эпичный курс Кексби, там поэтапно делается сайт
    Ответ написан
    8 комментариев