• Как защитить конструктор сайтов от копирования кода созданного сайта посетителем?

    solotony
    @solotony
    покоряю пик Балмера
    переживайте неприятности по мере их поступления. когда столкнетесь с тем что посетители "воруют" - тогда и займитесь этим. а пока вашей заботой должно быть "где достать посетителей"

    те кто может "скопировать весь код, созданный конструктором сайтов в результате действий пользователя и залить на свой домен" без проблем найдут другие подобные конструкторы
    Ответ написан
    7 комментариев
  • Как правильно получать данные в GridView?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    реализовать в Catalog метод, который выдает нужный массив, дернуть его в контролере, положить в переменную, передать во view, передать в gridView
    Ответ написан
    7 комментариев
  • Как конвертировать даты в behaviors?

    proudmore
    @proudmore
    Вот вам класс моего поведения на схожую тематику:
    <?php
    
    namespace common\behaviors;
    
    
    use yii\base\Behavior;
    use yii\base\InvalidConfigException;
    use yii\db\ActiveRecord;
    use yii\base\Event;
    
    /**
     * Class DateFormatTranslator
     * @package common\behaviors
     */
    class DateFormatTranslator extends Behavior
    {
        public $machineFormat = 'php:Y-m-d';
        public $humanFormat = 'php:d.m.Y';
        public $attributes;
    
        /**
         * @throws InvalidConfigException
         */
        public function init()
        {
            if(empty($this->attributes)){
                throw new InvalidConfigException('attributes can not be empty');
            }
            return parent::init();
        }
    
        /**
         * @return array
         */
        public function events()
        {
            return [
                ActiveRecord::EVENT_BEFORE_UPDATE => 'toMachineFormat',
                ActiveRecord::EVENT_BEFORE_INSERT => 'toMachineFormat',
                ActiveRecord::EVENT_AFTER_INSERT => 'toHumanFormat',
                ActiveRecord::EVENT_AFTER_FIND => 'toHumanFormat',
            ];
        }
    
        /**
         * @param $event Event
         * @var $owner ActiveRecord
         */
        public function toHumanFormat(Event $event){
            $formatter = \Yii::$app->formatter;
            $owner = $event->sender;
            foreach ($this->attributes as $attribute){
                if(!empty($owner->$attribute)){
                    $owner->$attribute = $formatter->asDate($owner->$attribute, $this->humanFormat);
                }
            }
        }
    
        /**
         * @param Event $event
         */
        public function toMachineFormat(Event $event){
            $formatter = \Yii::$app->formatter;
            $owner = $event->sender;
            foreach ($this->attributes as $attribute){
                if(!empty($owner->$attribute)) {
                    $owner->$attribute = $formatter->asDate($owner->$attribute, $this->machineFormat);
                }
            }
        }
    
    }
    Ответ написан
    1 комментарий
  • Как достичь большого КПД от выполняемой работы и заказов?

    Отвечу скорее всего как смежное звено, попытаюсь сам структурировать инфу, ну и может натолкну кого на мысли.

    У меня несколько человек, с которыми я постоянно работаю (около 7). От них идут постоянные заказы (довольно объемные и тд). Теперь к сути вопроса.

    Что я делаю:
    1. Все задачи, все заказчики мне кидают в Trello. Там же они обозначаются по степени важности.
    2. Бывает что это задачи что-то поправить и тд, мелочи в общем. Как раз на таких мелочах и тратится большая часть времени, поэтому указываем степень важности.
    3. Выполнил задачу, перенес ее в категорию Сделано. Клиент сам потом проверяет еще раз, все ли нормально, после чего там же, если нужно, пишет замечания и тд. Все это дело всегда мне доступно из приложения, либо с десктопа, уведомления и тд - полезная вещь. В общем на пустую болтавню время мы не тратим.

    Это что касается мелких задач. Если речь касается проектов.

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

    По тайм-менеджменту ничего толкового не скажу, сам пытаюсь с ним разобраться, однако советую:
    1. работать строго по определенному графику (обычный рабочий или ваш личный, главное чтобы кол-во рабочих часов было адекватным).
    2. бывает что нужно что-то делать в ночь, потому что что-то произошло, если вина ваша - работаете и все, если заказчик предлагает вам допилить в 5 утра новый модуль потому что он про него забыл, а сдавать уже в 7 утра, поднимаете цену за проект и работаете, либо отказываетесь это делать (чревато чем угодно).
    3. Для увеличения КПД вашего собственного нужно отдыхать. Обязательно прогулки на улице 1-1.5 часа в день. Помогает разгрузить голову и не будет проблем со здоровьем (как человек, который на этом попался и получил целый букет псих. расстройств - настоятельно рекомендую), физические нагрузки, и не забывайте про глаза. Каждый 40-60 минут дайте отдохнуть глазам (можно делать 5минутную гимнастику).

    По ценам и срокам, тут уже как каждый горазд. Я смог немного набить руку и просто прочитав тз озвучиваю цену + 10-15% на случай непредвиденных правок и тд. Кто-то рекомендует за каждый пункт тз назначать цену, но я считаю это не всегда выигрышным вариантом, потому что получить адекватное ТЗ - подарок.

    P.S мог многое упустить, поэтому отвечу уже в комментах, если потребуется.
    Ответ написан
    7 комментариев
  • C чего новичку начать изучение SQL?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ничего лучше не придумали
    sql-ex.ru/?Lang=0

    рутинно, но левел повышает
    Ответ написан
    Комментировать
  • Авторские права на GitHub?

    @Z-r
    > Не пойму какое реальное практическое применение имеет сервис github

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

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Это выбор интровертов, социопатов, одиночек и просто людей со сложностями в общении

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

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

    nki
    @nki
    bezkart.ru готовая система лояльности
    Есть ли у вас подобные проблемы и как вы с ними боретесь?

    Таких проблем нет. Вы работаете 24/7? Если нет, то у вас масса времени на социализацию. Найдите занятие не связанное с программированием и подразумевающим социализацию. Хороший вариант - заняться каким-либо спортом, лучше командным. Например, я занимаюсь бегом по пересеченной местности. Постоянно тренировки, выезды с командой на различные соревнования и пр. Сами не заметите, как станете более комуникабельным человеком.
    Просто не заморачивайтесь на работе, живите яркой жизнью.
    Ответ написан
  • Как не стать тупым в общении, профессионально занимаясь программированием?

    BBmike
    @BBmike
    Автор, иди продавцом на рынок или кассиром в макдак. Там одни экстраверты.
    остальные профессии в основном как раз про то, как человек сидит и делает свою работу.
    Ответ написан
    Комментировать
  • Как заработать школьнику на программировании?

    Будем честны друг с другом, не каждый опытный программер может реально зарабатывать фрилансом.
    На питоне заказов мало. В России фриланс это в 30% кидалово, в 50% мозгоебство на уровне профи.
    Тебе это надо? Чтобы за половину от реальной зарплаты джуна тебе все мозги выносили?

    Будь я сейчас в школе я бы занялся тремя вещами:
    1. Спорт
    2. Девушки
    3. Подготовка в нормальный вуз(берлинский технический например).

    От того что ты будешь зарабатывать 10 - 20 тысяч в твоей жизни ничего не изменится. Я думал что закончу универ, буду получать зп 20 и всё будет в шоколаде. Я получаю сейчас примерно в 2 раза больше моих хотелок. За год устал пропивать их, уже купил все ништяки что хотел. На что-то большее не хватит, квартиру и авто купить хорошую нужно или годами так же сидеть и себя ущемлять, либо получать зп в разы больше.

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

    Сорян если огорчаю.

    Но программирование и электроника это реально профессии будущего, которые даже в РФ будут нормально получать.

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

    Я вот в школе когда был напросился ходить в универ на интересные лекции . Учился потихоньку, сверстники смотрели как на сумашедшего=))))
    Ответ написан
    1 комментарий
  • Как отловить сессию при выполнении php скрипта через ajax-запрос?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    ajax от не ajax ничем не отличается, в чем проблема работы с сессией как обычно? Хотя бы попробовали прежде чем вопрос задавать.

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

    @krog
    Developer
    Можно сделать взаимодействие через http.
    Можно через общую базу данных.
    Можно через файл.
    Можно через систему обмена сообщениями.

    Если интересно подробнее, можно почитать здесь:
    https://www.amazon.com/o/asin/0321200683/ref=nosim...
    Ответ написан
    Комментировать
  • На чем можно построить модульную сетку для веба?

    abyrkov
    @abyrkov
    JavaScripter
    Еще есть table для любителей извращений
    Ответ написан
    8 комментариев
  • Широкий кругозор для профессионального программиста?

    AlexMaxTM
    @AlexMaxTM
    Поймите простую вещь, вы идете не экзамены сдавать, на собеседование. Бессмысленно читать ночь перед собеседованием и писать шпоры. В зачет пойдет только ваш реальный опыт, а не теоретические знания.
    Хотите список вопросов, на котором буксовали у меня люди на собеседовании?
    - Каким редактором вы пользуетесь? Какая версия, какие плагины стоят? Какая горячая клавиша для ... (Если человек буксует, значит он мало сидит за редактором).
    - Какую версию MySQL (или PostgreSQL) вы используете, в чем отличие от предыдущей версии?
    - В каких ситуациях необходимо использовать интерфейсы, но категорически нельзя использовать абстрактные классы. И наоборот, в каких ситуациях необходимо использовать абстрактные классы, но недопустимы интерфейсы, или трейды?
    - Даю листок бумаги и пишу длинное число 4923872788828228453. Даю задание, напишите регулярное выражение, чтобы разделить это число по три через пробел: 4 923 872 788 828 228 453. Число может быть произвольным. Если человек не в состоянии сделать это одним регулярным выражением, тогда предлагаю решить ему задачу любым другим способом, но на бумаге и без интернета. Просто интересно как он составит алгоритм. Задачки бывают разными, под рукой всегда было около пары десятков подобных примеров.

    Потому вы не сможете подготовиться к собеседованию, читая книги.
    Ответ написан
  • Какой принцип работы нескольких операторов ->?

    @kayart
    Это называется chaining - цепочка вызовов функций. Благодаря тому, что функция возвращает объект (чаще всего this), можно вызывать такие функции подряд, не прописывая их отдельно.

    Достаточно поискать в гугле запросы в стиле "PHP Chaining"
    В качестве примера - вот
    Ответ написан
    Комментировать
  • Использование Api сайтом, нужно ли?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Почему нельзя, просто, выделить common часть для обоих модулей?
    А в модель поста можно прописать метод который будет доставать и мапить результаты.

    Тогда у вас будет примерно такой код в rest:
    router.get('/', routeCache.cacheSeconds(20), async (req, res) => {
        const posts = await models.Post.getPostsList({ limit: 10 });
    
        res.json(posts);
    });


    и такой для сайта:
    router.get('/', async (req, res) => {
        const posts = await models.Post.getPostsList({ limit: 10 });
    
        res.render('index', { posts_list: posts });
    });


    Все просто и никаких костылей.
    Обращения сервера сайта к rest это лишний код и лишние операции.

    Метод res.json() сам добавляет к ответу заголовок Content-Type со значением 'application/json' если он не добавлен до этого.
    Ответ написан
    Комментировать
  • Приведенный мною код - одно и то же? Или один работет быстрее / эффективнее, а другой - нет?

    Exploding
    @Exploding
    wtf?
    Гггг))) Как бы с первого взгляда и одно и то же, но не совсем.
    Если первый вариант юзать на практике - далеко не всегда ваш ".button" будет совпадать с тем, что находится в таргете. Например на кнопке иконка/рисунок/etc. Поэтому вам придется дописывать специализированный костылеподобный изворот типа:
    if ($(e.target).closest('.button').length){
    	//....
    	e.stopPropagation();
    }

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

    UPD
    Просто когда жму Event Listeners в chrome - там у каждого элемента оочень много listener'ов

    Во втором варианте слушатель вешается не на кнопку, а на документ. Видимо у вас просто установлен чекбокс на "Ancestors".

    Ну а если вам взбредет в голову все таки писать свою реализацию делегирования, то в лучшем случае, как мне кажется, вы придёте к оригинальной реализации метода jq.
    Ответ написан
    Комментировать
  • Можно ли передать яндекс метрике url при динамической загрузки контента?

    Exploding
    @Exploding
    wtf?
    Я хз, но пока всё что придумал, это перед загрузкой данных снести вообще всю метрику к чертям и после загрузки - опять все добавить... Как бы намекая ей, что это была перезагрузка страницы))))
    P.S. Как маленькому ребенку закрывая глаза - "а ку-ку, опа нет мамы, опа - есть мама")))))))
    Ответ написан
  • Почему Линус не любит C++?

    @lesha_penguin
    <Мысль_вслух>Если существует специальный «ад для говнокодеров», то наверняка, одним из самых жестких наказаний в нем была бы отладка того говнокода, который, который в С++ получается по принципу «делается более просто и изящно».</Мысль_вслух>

    Если начинать «от сотворения мира»:

    1) Как известно C++ был был придуман Страуструпом, мы не будем умалять его «ученные регалии» (ученных-то наград куча, но они по сути единственное чего «добился человек», кстати, 90% прямо или косвенно за c++). Однако, заметим, что Страуструп — как раз есть пример «чистого теоретика» (в отличии от «практика»-Торвальдса), т.е. является человеком за свою жизнь не принимавшим участия в разработке ни одного серьезного реального программного проекта. По сути компилятор c++ — единственное более-менее практическое дело в его жизни. Соотвественно о том с какими проблемами приходится сталкиваться в реальном «software development-е» с «высоты его ООП-теорий» он имеет весьма посредственное представление.

    2) Как верно заметили, в упомянутой статье, изначально это был как раз «Це с классами», т.е. изначально НЕ БОЛЕЕ ЧЕМ «академическая» попытка навернуть на C отдельные элементы «обьектности» (типа, Smalltalk обьектный, а давайте попробуем сделать такое на более низком уровне). Кстати, могу Вам сказать, что с C++ я впервые познакомился в 80-90е годы, когда языком «ученной среды» был Фортран, языком «системщиков» Си, а для обучения «всех непрофильных специальностей» основам программирования использовались Basic и Pascal. Да, но правда «тогдашний C++ 80» отличался от нынешнего — он реально производил впечатление «просто прикольной поделки» (на память помню, что например, тогда не было и половины привычного функционала например таких вещей как всяких «reinterpret_cast-ов» или namespac-ов.). Кстати, да… барабанная дробь… НЕ БЫЛО STL!!!

    3) Наверное Страуструповский «Це с классами», наверное так бы и остался в списке «прикольных поделок» в аналах истории, если бы не одно обстоятельство: «ВНЕЗАПНО» произошел «софтверный бум», соотвественно: a) «элитных» «олдскульных» программистов стало резко не хватать b) «требования к качеству софта» резко упали c) понадобилось средство для генерации достаточно низкоуровневого «говнокода в промышленных масштабах». И как ни странно, (ага, угадали, именно с появлением в C++ STL-я) C++ так и не избавившись от своих «академических болячек» был брошен в пучину «мейнстрима».

    4) Вам говорят истинную правду, когда говорят, что «C++» это маркетинговое название для «Це с классами». Да, это так. И можно сказать, к великому сожалению, он нашел свою рыночную нишу. (Сейчас любой дурак может легко «освоить C++ за 21 день (с бустом и стлем)», при этом не умея даже внятно ответить на простой вопрос «Если ты такой умный, обьясни тогда почему, c$k@, у тебя программа течет по памяти и падает», (про такие «неполиткорректные вопросы», как «зачем писать 100 строк на то, что пишется в две-три», мы вообще тактично молчим, а то, мало ли, может у человека «сдельная зарплата» за количество строк ;) ), зато с видом крутого Беара Грилса можно обсуждать такие «высокие материи» как «Паттерны» и «чистый ООП»).

    5) И к самому большему сожалению, в некоторых случаях альтернативы нет. Да, Я еще не встречал ни одного программиста, который в действительно реальной разработке софта активно использовал бы C++ и при этом от него бы не плевался. У C++ есть «Огромный ПЛЮС» — Его Мультипарадигменность! По-сути это его единственный плюс, позволяющий «не уйти в дебри» (типа попыток запихнуть «main()» в обьект только ради «идеи чистого ООП»)!

    6) А теперь, после такого «исторического» вступления еще раз перечистайте внимательно письмо Торвальдса, высказывание человека который лучше многих «теоретиков чистого ООП» знает как это оно «на собственной шкуре» разрабатывать сложные системы, и комментарии от хабраюзеров, которые «на живой практике» знают «почем фунт лиха» в топике. Под большинством утверждений я лично бы поставил свою подпись золотыми буквами.
    Ответ написан
    5 комментариев
  • Как связать booking.com со своим сайтом на wordpress?

    @BorisKorobkov
    Web developer
    Комментировать