• Хакеры в фильмах - сколько правды?

    Больше всего нравится подбор паролей посимвольно. Причём, как правило, последовательный подбор, причём все знаки перебираются вроде как параллельно, но последний всё равно несколько минут.

    Хотя помню встретился как-то BIOS в котором я пароль подобрал посимвольно. Он писал Invalid password как только нажал не ту клавишу :)
    Ответ написан
    Комментировать
  • Статика VS Singleton?

    Смотря как использовать. Даже если забыть про конструктуры/деструкторы и прочий «сахар», то у синглтона есть и другое преимущества — его можно передать в качестве параметра функции/метода, то есть уменьшить связанность кода.
    Ответ написан
    Комментировать
  • Кто является Владельцем сайта

    Мама не может быть юридическим лицом — это раз.

    Права на сайт состоят из прав трех видов:
    — права на домен
    — права на движок (имущественные и неимущественные права на объекты авторского права)
    — права на контент (аналогично)

    В вашем вопросе не ясно кто на что предендует.
    Ответ написан
  • Как начать писать тесты?

    Мне помог такой подход на существующем коде:
    — функциональные/приемочные тесты на новые или изменяемые фичи (по сути описание ТЗ на неком DSL)
    — модульные/интеграционные при рефакторинге
    — тесты на баги

    И не надо в большинстве случаев, имхо, тестировать внутреннее состояние хоть системы в целом, хоть отдельных её объектов или переменных. Тестировать нужно её поведение. Соответствие результата ожидаемому. При этом нужно ориентироваться на семантику, а не на знание внутренностей, не нарушать инкапсуляцию. При таком подходе не нужно будет писать, например, тесты на геттеры и сеттеры отдельно, достаточно написать один тест, что значение, возвращаемое геттером равно установленному раннее сеттером. Или, переходя на систему в целом, не нужно тестировать что нажатие кнопки «сохранить» пользователем вызывает какие-то изменения в БД. Нужно тестировать, что после нажатия этой кнопки пользователь может получить эти данные.
    Ответ написан
    Комментировать
  • Хабрахабр: чем отличаются лента и посты?

    В «ленте» ваши подписки, в «постах» нет отхабренных. Получается нет возможности увидеть отхабренный топик (включая новый) без подписки. Чревато прежде всего «потерей» заминусованных (или малоплюсованных) бпостов компаний — на них «одним кликом» не подписаться.
    Ответ написан
  • Python vs Perl vs Ruby?

    Плюсик в сторону Python: он широко используется не только в вебе, но и во множестве других областей, от замены баша до «взрослого» геймдева. Ruby тоже может, но на практике он скорее экзотика, чем рабочий инструмент. С чем связано не знаю, может просто биндингов маловато или они сырые, может объективные причины есть, может Python проще. Хотя Capistrano, да, мощная штука :) Да и вообще в качестве платформы для DSL самый известный Ruby всё же, имхо.
    Ответ написан
    Комментировать
  • Окружение на боевом сервере для веб-приложений на Ruby. Как правильно настроить сервер?

    На Debian я использовал www.dotdeb.org/ — последние версии nginx и passenger. RVM system-wide по инструкциям с сайта (пакетов подходящих не нашлось :(). Как следствие — ruby всё-таки приходится собирать на сервере. Деплоил по схеме приложение->пользователь/группа, добавляя пользователя www-data в группу приложения, чтобы nginx мог читать файлы с правами вроде 440.
    Ответ написан
  • Понять язык c# (да и вообще ООП, наверное)?

    Класс B является «свойством» класса A, а не экземпляров этого класса. Это просто по логике — класс сущность декларативная, метаданные, используется на этапе компиляции, а не в рантайме. А C# язык статический.
    Ответ написан
    Комментировать
  • Нужна помощь web-разработчиков

    Вообще system('bash /etc/startup/start_2.sh') делает что вам нужно, но как писали выше есть нюансы с конфигами веб-серверов. Например если у вас стоит nginx перед apache+mod_php, то поведение предсказать невозьмусь.
    Ответ написан
    Комментировать
  • Файловая система в ОЗУ?

    Файловая система — абстракция над устройством хранения. ОЗУ обычно используется без неё, а диски обычно используются с нею. Но ни первое, ни второе не абсолют. А есть ещё такая штука как виртуальная память, которая прозрачно (для приложения) отображает адреса памяти на сектора диска через файловую систему диска.
    Ответ написан
    Комментировать
  • Лаконичный класс для логирования событий

    Monolog — компактным назвать нельзя, но вот по гибкости куда-чего назначать… Различные обёртки а-ля пайпы и т. п. Например понравилась возможность на error отправлять и мыло, кроме записи в лог.
    Ответ написан
    Комментировать
  • PHP и строки близкие в maxint?

    Чем нужно руководствоваться чтобы такое придумать?

    Тем что PHP изначально шаблонизатор, работает с текстовыми данными (вход скрипта с веб-сервера, записи в БД, файлы — всё строки), но данные зачастую числовые по сути. Вот и «облегчили» жизнь разработчикам, чтоб не нужно было на каждый чих типы приводить.

    Помню случайно наткнулся на эту сомнительную «фичу», сравнивал примерно так: $str1. 'fake' == $str2. 'fake'
    Ответ написан
    3 комментария
  • Git, сайт local + remote + файл настроек

    Реализовать наследование настроек. Например, в settings.php инклудить settings_default.php и переписывать локальные настройки. settings.php в .gitignore занести.
    Ответ написан
    Комментировать
  • Вопрос студентам, которые живут в студ.общежитиях. Как у вас обстоят дела с интернетом?

    100% опрошенных в Интернете студентов показали, что доступ в Интернет у них есть…
    Ответ написан
    Комментировать
  • Когда расчитывать налоги на УСН (РФ) с партнёрок и контекстной рекламы?

    Статья 346.17. Порядок признания доходов и расходов

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

    Статья 346.18. Налоговая база

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


    Если мне память не изменяет, то Адсенс начисляет деньги доступные для вывода раз в месяц при достижении какой-то суммы. С этого момента у вас на них возникает имущественное право, а значит вы их должны зачислить себе в доходы этим днём по курсу ЦБ. То есть как только у вас появляется возможность вывода денег у вас возникает на них имущественное право. Возможности по договору нет — права нет — дохода нет.

    В общем ориентируйтесь на сумму доступную для вывода — именно она отражает ваш реальный доход. Если она изменилась (в большую сторону) — у вас возник доход в виде имущественного права дельты этой суммы со вчерашним днём. Хуже всего с партнерками, которые начисляют каждый день, но имеют минимальную сумму для вывода. Пока у вас минималка не набралась — доходов у вас нет. Минималка (скажем 10$ за 10 дней) набралась — доход появился сразу 10$ по курсу ЦБ на этот день. В следующий день зачислили 1$ — ещё доход 1$ по курсу ЦБ на этот день. Вывели и опять 10 дней накапливается минималка — 10 дней без дохода.

    Это если хотите чисто по закону, ни на йоту не нарушая его букву. А так можете считать по поступлению на р/с.
    Ответ написан
    6 комментариев
  • MVC в PHP??????

    Это тоже MVC :)
    <?php
    // /user.php?<id>
    
    function getUserNameById($id) {
      mysql_connect() or die("Can't connect");
      mysql_select_db('myapp_db') or die("Can't select");
    
      $result = mysql_query("SELECT name FROM users WHERE id = " . mysql_escape_string($id) . " LIMIT 1") or die("Can't query");
      $row = mysql_fetch_row($result) or die("Can't find");
      mysql_close();
      $name = $row[0];
    
      return $name;
    }
    
    public function showUser($id, $name) {
      echo "<html>Name of user with id = " . htmlspecialchars($id) . " is " . htmlspecialchars($name) . "</html>";
    }
    
    $user_id = empty($_GET['id']) ? $_GET['id'] : null;
    $user_name = getUserNameById($user_id);
    showUser($user_id, $user_name);
    

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

    Так писать, конечно же не стоит (по крайней мере без особых причин), но понимать, что это тоже MVC, что MVC это не свойство ООП-фреймворков, и даже не свойство ООП, а свойство архитектуры приложения — нужно. И для того чтобы архитектура обладала этим свойством (использовала паттерн MVC) вовсе не нужно раскидывать компоненты приложения по куче разных объектов и/или файлов, использовать другие паттерны архитектуры и реализации, достаточно чтобы данные, их представление и управление ими были разделены логически.
    Ответ написан
    Комментировать
  • Как можно применить анализ данных Хабра для моделирования поведения российского общества?

    Даже анализ данных всего Рунета не даст репрезентативной картины, имхо. «Опрос показал, что 100% посетителей сайта example.com имеют доступ в интернет».
    Ответ написан
    Комментировать
  • Вы читали Энциклопедию профессора Фортрана?

    Полистал и пошёл кодить на C свой первый SaaS, с получением запросов обычными письмами и доставкой контента ценными письмами (или бандеролями? — склероз) наложенным платежом, причём multipart было реализовано (несколько распечаток в одном конверте), Почта России СССР в роли транспортного протокола :)
    Ответ написан
    Комментировать
  • Насколько оправданно решение с контроллерами-не-классами?

    В symfony вроде как контроллер вовсе не обязан быть классом. Вернее классом он не может быть в принципе. Может быть методом класса, может быть функций, в общем любым callable.

    Если же вообще имеется в виду код глобального неймспейса без какой-либо обёртки (практически «спагетти»-код, только с разделением M и V), то категорически против — сильно затрудняет какое-либо совместное использование, потому что переменные любого контроллера становятся переменными глобального неймспейса.
    Ответ написан
  • Выбор PHP ORM, ActiveRecord?

    Сначала, наверное, нужно оценить вам ActiveRecord или DataMapper — если второе, то у Doctrine 2 конкурентов вроде нет, даже если ограничиваться не только PHP. Если ActiveRecord то вариантов тьма. Включая первую Doctrine — я бы её в качестве AR выбрал, если б не смущало, что поддержка её вряд ли будет полноценной, а развития скорее всего вообще не будет.

    Кстати, спасибо, за то что дали повод заклянуть на сайт Doctrine и увидеть, что у них появился ODM не только для Mongo, но и для Couch (правда в альфе пока). Кстати, это ещё один плюс в сторону Doctrine 2 — больших изменений в коде не потребуется, если захотите перейти на Couch или Mongo.
    Ответ написан