Задать вопрос
  • Как объяснить человеку, что ему нужно знать язык досконально?

    @InoMono
    Вы ошибаетесь:
    Досканально знать язык не нужно. Хорошо в нем ориентироватся - да. На остальное - есть справочники. Тебе нужно ориентироваться, чтобы знать где именно искать.

    Вторая ваша ошибка:
    Говнокодерство к уровню знания языка отношения не имеет.
    Да, самое никакующее знание языка будет давать говнокодерство.
    Но при этом и самое отличное знание языка от говнокодерства ничуть тебя не гарантирует.

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

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

    Чтобы не быть г*внокодером


    Кроме отрицательной эмоциональной окраски - что тут такого.
    Даже выдающиеся программисты говнокодят, если проект одноразовый или сроки жмут.
    Это нормально.

    Другое дело, что есть и такие которые всегда говнокодят и иначе не могут.
    Ответ написан
    30 комментариев
  • Kohana ajax выдает ошибку Error 403. Почему и как обойти?

    slo_nik
    @slo_nik
    Добрый день.
    Вот перевод ошибки.
    Доступ запрещен!
    У вас нет разрешения на доступ к запрашиваемому объекту. Он либо защищен от чтения, либо не читается сервером.
    Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру.
    Ошибка 403

    Это значит, что Вам необходимо проверить права доступа к директориям и файлам.
    Для директорий - 755
    Для файлов - 644

    p.s.
    При оформлении кода используйте специальные теги, а не тег "цитата"
    Ответ написан
    3 комментария
  • Все ли значения есть в массиве?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    Ответ написан
    Комментировать
  • Авторизация по username и паролю kohana 3.3, как не соблюдать email?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Обратите внимание на класс Model_Auth_User (modules\orm\classes\Model\Auth\User.php).
    5a5daf57c5954490940086.png
    Это правила валидации модели пользователя. Меняйте их, и все должно получиться.

    P.S. Я не увидел ваш комментарий.
    К слову, эти правила можно переопределить через вашу модель - не потребуется вносить изменения в системный модуль.

    В папке application\classes\Model создаете файл User.php.
    Там пишите подобное:

    <?php defined('SYSPATH') or die('No direct script access.');
    
    class Model_User extends Model_Auth_User
    {
        public function rules()
        {
            return array(
                'username' => array(
    				array('not_empty'),
    				array('max_length', array(':value', 32)),
    				array(array($this, 'unique'), array('username', ':value')),
    			),
    			'password' => array(
    				array('not_empty'),
    			),
    			'email' => array(
    				array('not_empty'),
    				array('email'),
    			),
            );
        }
        
    }
    Ответ написан
    Комментировать
  • Зачем нужен ioncube, если его легко вскрыть?

    latteo
    @latteo
    У вас старая версия.
    Код после вскрытия чаще всего нерабочий и требует допила, иногда всё плохо настолько, что логику скрипта можно лишь угадывать.
    Между выходом свежей версии и появлением декодеров проходит некоторое время.
    Включение дополнительных опций сильно затрудняет декод - деобфускация будет не полная (по отзывам автора одного из декодеров).
    Ответ написан
    Комментировать
  • Что делает эта конструкция в jquery?

    rockon404
    @rockon404
    Frontend Developer
    Такой вариант записи используют в JS, когда надо получить ключ или вызвать функцию с помощью переменной.
    Это возможность самого языка, а не конструкция jquery.
    var foo = {
      bar: 'bar value',
    };
    
    console.log(foo.bar);
    // => bar value
    
    console['log'](foo['bar']);
    // => bar value


    Разберем ваш пример. Такая запись:
    var action = 'addClass';
    
    $('.some-selector')[action]('some-class');

    равносильна такой:
    $('.some-selector').addClass('some-class');

    То же самое для объекта:
    var key = 'name';
    
    var obj = {
      name: 'Tom',
      age: 24,
    };
    
    console.log(obj[key]);
    // => Tom
    
    console.log(obj.name);
    // => Tom
    
    console.log(obj[key] === obj.name);
    // => true
    
    key = 'age';
    
    console.log(obj[key]);
    // => 24


    Так же есть случаи, когда к ключу можно обратиться только таким способом:
    var obj = {
      'three words key': 'value',
    };
    
    console.log(obj['three words key']);
    
    // => value
    Ответ написан
    1 комментарий
  • Учитываются ли ссылки с редиректом для ТИЦ?

    @bkosun
    Большинство сервисов сокращения ссылок передают ссылочный вес, потому что они используют 301 редирект.

    https://www.youtube.com/watch?v=QMkltd6dZzU

    Мэтт Каттс: По сути, сервисы сокращения ссылок работают по принципу редиректа. Если мы индексируем страницу и встречаем 301 редирект (по этой схеме работает большинство сервисов сокращения ссылок, например, bit.ly и goo.gl), то при этом будет передаваться PageRank до конечной страницы.


    Это, конечно, не совсем Ваш случай, но идея понятна?

    Нужно проверить HTTP ответ, если там есть 301 редирект - все ок.
    Ответ написан
    Комментировать
  • Как назначить или прочитать cookies с другого моего сайта?

    @SuperNikiforov
    вставьте картинку с сайта1 на сайт2 и куку пропишите
    Ответ написан
  • Зачем IT гиганты используют много несвязанных доменов?

    Поместив HTML, XML, SVG и т.д. и т.п. файл на домене usercontent.google.com можно
    манипулировать куками домена google.com и фишить. Поэтому пользовательский контент всегда отдается с отдельных sandbox-доменов.
    Так же с отдельных доменов обычно отдается статический контент, это позволяет использовать CDN и упрощает управление кэшированием.
    Отдельный домен обычно используется для PTR-записей (например 1e100.net). Для PTR часто нужна двойная валидация, т.е. PTR должна разрешаться в имя и имя обратно в тот же IP. При этом на одном IP может хоститься много доменов и быть установлено много сертификатов, включая вайлдкарды. И наоборот, один домен может хоститься на многих IP. Чтобы исключить прямое обращение к хосту по "неожиданному" для него имени в своем домене, обычно используются PTR записи в нейтральном домене. Кстати исторически принято использовать именно домены в .net. Google так же использует 1e100.net как нейтральный домен для подписи транзитных писем, раньше для этого использовался собственно домен google.com и это приводило к забавному багу, позволявшему подделывать подписи на письмах от google.com, я рассказывал о нем на PHDays 2014.
    Географические домены исторически используют для организации региональных датацентов и ускорения доступа, например yahoo.jp физически расположен в Японии.
    Ответ написан
    6 комментариев
  • Правильно ли так хранить в таблице локализации статей?

    rework
    @rework
    Помог ответ? В благодарность отметь его решением
    По идее статьи на любом языке должны быть равнозначными, то есть не должно быть parent_id.

    Я бы завёл таблицы:

    atricles_localization_tbl:
    id | localization | title | content | article_id

    article_tbl:
    id | image | create_date | category_id

    Тогда вы сможете в article_tbl записывать общие для любой локализации данные по статье. Но ваш подход тоже имеет право на жизнь.
    Ответ написан
    6 комментариев
  • Правила хорошего тона protected или private?

    А почему вы по умолчанию public не ставите, если выбираете между public и private? Наверное потому что вам инкапсуляция нужна?

    Ситуация с дочерними классами ничем не отличается. Не стоит делать метод protected по умолчанию по той же причине, по которой его не стоит делать public по умолчанию.
    Ответ написан
    Комментировать
  • Какие могут быть подводные камни при установке часового пояса для сессии MySQL?

    @bkosun
    Можно конвертировать часовой пояс:

    SELECT SUM(`visits`) AS `visits` FROM `statistics` WHERE `date` BETWEEN UNIX_TIMESTAMP(CONVERT_TZ(FROM_UNIXTIME('1510693200'), @@global.time_zone, @@session.time_zone)) AND UNIX_TIMESTAMP(CONVERT_TZ(FROM_UNIXTIME('1510779599'), @@global.time_zone, @@session.time_zone))


    SELECT SUM(`visits`) AS `visits`  FROM `statistics` HAVING UNIX_TIMESTAMP(CONVERT_TZ(FROM_UNIXTIME(`date`), @@session.time_zone, @@global.time_zone)) BETWEEN '1510693200' AND '1510779599'


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

    Stalker_RED
    @Stalker_RED
    Если у вас одна пара тегов <article>, то все довольно просто решается при помощи регулярных выражений.

    Обрезать все что до <article> так: 's/.+<article>/<article>/'

    Обрезать все что после </article> так: 's/<\/article>.+/<\/article>/'

    Рекурсивно пройтись по папкам как-то так
    https://stackoverflow.com/questions/6758963/find-a...
    Ответ написан
    22 комментария
  • Другой человек хочет работать под моим профилем на upwork. Чувствуется подстава?

    sim3x
    @sim3x
    Супер-разрабов апворк не блочит

    Скажите, что если появится работа, то вы с ним свяжетесь, если он оставит контакты, линки на свои профили и ценник за работу

    Если сильно хотите заниматься управлением, то вам нужно смотреть в сторону создания агенства и подбора нормального персонала, такого чтоб его не банили

    ПОДСТА́ВА
    Женский род
    В старину: лошади, выставленные впереди по пути следования для смены уставших.
    Ответ написан
    Комментировать
  • Другой человек хочет работать под моим профилем на upwork. Чувствуется подстава?

    jff
    @jff
    Автор блога и форума про фриланс jff.name
    Очень часто такие предложения приходят последний год. Я не соглашаюсь, но один знакомый проводил проекты за 30% для китайца.
    Первый проект длился пару недель была цена в районе 1000$. Ничего через апворк не проводилось (спецификация, сообщения между клиентом-фрилансером) и все закончилось успешно. Через месяц клиента забанили и фрилансеру приостановили аккаунт, пришлось придумывать спецификации для проекта и подтверждать реальность проекта чтобы разбанили.
    После этого мой друг не хотел больше таким заниматься. Но спустя несколько месяцев опять предложение и опять жажда халявных денег. В итоге все опять проходит удачно, но через время опять бан клиента + много вопросов фрилансеру с приостановлением аккаунта. Еле получилось отбрехаться, наверно помогла большое количество репутации по прошлым реальным проектам.
    Вообщем, реально провезти подобные проект и выйти сухим из воды, но я бы не советовал, так как риск очень высок.
    Ответ написан
    1 комментарий
  • Товар во многих категориях, как искать потом?

    amux
    @amux
    alp.ac
    Сделайте категории как тэги.

    Table: Items
    Columns: Item_ID, Item_Title, Content
    
    Table: Categories
    Columns: category_ID, category_Title
    
    Table: Items_categories
    Columns: Item_ID, category_ID


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

    @Brujerizmo
    А я тут... примус админю
    Мне очень понравился Rainloop www.rainloop.net
    Быстрый и простой.
    Ответ написан
    2 комментария
  • В чем суть WinApi?

    @Mercury13
    Программист на «си с крестами» и не только
    Windows API — это самый низкоуровневый интерфейс Windows, доступный прикладному программисту — в том плане, что он на долгосрочной поддержке и не изменится с Windows 11.

    Поверх Windows API работают все BOOST и STL.

    Пример: читать файл в 130 мегабайт по одному байту. Добавив асинхронного чтения через OVERLAPPED, я сумел это сделать менее чем за 2 секунды (это был поток общего назначения с виртуальными read(), write() и seek(); специализированный прикладной буфер даст ещё выигрыша, но и это хорошо). То же самое через FILE* — не дождался.

    Пример второй, всё те же файлы. Дело в том, что Excel захватывает свои файлы на всё время, пока он открыт. Закрывать? — плохой выбор. Добавив один флажок в CreateFile, документы всё-таки стало возможным открывать при работающем Excel.
    Ответ написан
    2 комментария
  • Как узнать ID юзера в facebook?

    totalcount
    @totalcount
    Начиная с API версии 2.0, username вообще нельзя больше использовать — именно поэтому и выдает ошибку. Единственный способ получить доступ к данным юзера фб — это авторизовать его в своем приложении и заюзать эндпоинт /me. Ну и однозначно стоит забыть про юзеров фб, которые не авторизовали ваше приложение, их данные больше никак нельзя получить и обусловлено это вездесущим privacy. Удачи!)

    Если же делать без API — тогда парсить тут.
    Ответ написан
    Комментировать