• Куда копать(что читать), дабы написать свою СУБД?

    не книги конечно, а курс, но возможно вам будет интересно, там если я правильно помню как раз цель - создание своей БД
    База данных (2012)
    База данных (2013)
    Ответ написан
    1 комментарий
  • Как написать операционную систему с нуля?

    svd71
    @svd71
    Согласен с большинством коллег - писанина операционки для коммерческого применения - весьма хлопотное занятие и в денежнов эквиваленте, и в трудоресурсах, и по времени , и даже в маркетинге.
    Учитывая все это, такие системы обычно пишут не совсем с нуля. Пример: QNX. За основу взято юниксовое ядро и переписано под систему реального времени. Теперь они активно продают свою систему для управленя атомными реакторами.

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

    Если же речь идет о создании операционки "для себя", вопросов нет - ваше время и ваше желание. Вам нужно просто проанализировать, какие функции для разработчиков предоставляют другие ОС (в основном это базовые: возможность работать с файловой системой и конвертация данный в файловой системы из/в устроств ввода/вывода и хранения данных.

    Так же можно изучить все грабли, сделанные другими: например ту же коллибри, или поискать исходники какого-нибудь ДОСа (Микрософт своей досни опубликовали вроде бы, TR-DOS можно найти и т.п.) или поизучать предтече Линукса - minix (ведь Торвальдс начал именно с нее). А еще лучше присоединиться к какому-нибудь существующему проекту (Minix, Linux, Kollibry, ReactOS) и начать создание чего-либо под них.
    Ответ написан
    1 комментарий
  • Как сделать так, чтоб на локальной машине и в репозитории git были разные версии файлов?

    Считаю, что стоит в одном Gemfile выделить различные группы для каждого окружения (development и production). На локальной машине использовать development а на сервере production. Почитайте подробнее об этом здесь: bundler.io/v1.5/groups.html

    You'll sometimes have groups of gems that only make sense in particular environments. For instance, you might develop your app (at an early stage) using SQLite, but deploy it using mysql2 or pg. In this example, you might not have MySQL or Postgres installed on your development machine, and want bundler to skip it.


    Иногда у Вас может возникнуть необходимость использовать разные наборы гемов в разных окружениях. К примеру: вы разрабатываете приложение, используя SQLite, но при этом на сервере используете Postgres. В таком случае, Вам не нужно, чтобы Postgres устанавливался на локальной машине.


    P.S. Перевод немножко упрощен.
    Ответ написан
    2 комментария
  • Обновление мастер-ветки: git pull VS git pull --rebase?

    toxa82
    @toxa82
    Вы неправильно поняли второй вариант git pull --rebase origin master,
    он убирает ваши локальные коммиты, обновляет ветку (обычно это fast-forward), и потом после обновления снова применяет ваши коммиты.
    А git fetch обновляет ваш origin репозиторий, но не применяет полученные изменения с вашими рабочими копиями
    Ответ написан
    2 комментария
  • Почему все калькуляторы под android неправильно работают?

    @ANDRE888
    Плохо ищете. Бесплатен и имеет запрашиваемый вами функционал. Имеется также платная версия. Советую.
    RealCalc Scientific Calculator
    https://play.google.com/store/apps/details?id=uk.co.nickfines.RealCalc
    Ответ написан
    1 комментарий
  • Как лучше организовать совместную работу с базой данных?

    AMar4enko
    @AMar4enko

    Не совсем понятно, что имеется в виду под термином "совмесТная работа".
    Изменение структуры? Это делается миграциями. Один решил, что нужно в БД добавить таблицу, делает миграцию, пушит в гит. Остальным придется это изменение принять перед своими пушами, ну и после pull-a они увидят, что добавилась новая миграция и должны будут ее накатить на свою БД.
    Другого пока ничего не придумали.

    Ответ написан
    Комментировать
  • В последнее время появилось много критики Монго. С чем связано это?

    @baadf00d
    эйфория от новых возможностей прошла и вскрылись недостатки, на мой взгляд основные их них:
    — Слабая производительность на 1-серверной БД. Особенно заметно на map-reduce по данным, которые полностью влезли в память.
    — Особенности документо-ориентированной структуры. Многие переходили с табличных БД и тут понеслась: сначала радость, что не надо возиться со структурой, а потом расплата — в одной коллекции куча разных объектов и приложение регулярно читает из вроде бы известной коллекции что-то для себя неожиданное (очень старые объекты, некорректно измененные и т.п.).
    — Целостность данных. Кто-то привык, что БД контролирует этот вопрос, вешают констрейнты и ловят ошибки в логе в случае какой промашки по части бизнес-логики. Монга же ничего такого сама не контролирует, ну и получаются внутри БД ссылки на объекты, которых нет.
    — Отсутствие полноценных транзакций. Те, кто бросились все хранить в монге с ужасом поняли, что для биллинга нужно что-то другое. (должен оговориться, что не все пока поняли)

    По моему мнению отказаться от классической реляционной БД в пользу монги может позволить далеко не каждый проект. Если перетаскивать какой-нибудь небольшой интернет-магазин, то с бОльшей вероятностью это принесет боль и страдание нежели ожидаемый профит. Эффективным решением будет параллельное использование монги и реляционной БД, но чтобы это имело смысл — проект должен быть соответствующих размеров. Для небольшого проекта городить такой огород контрпродуктивно.

    PS Мое мнение основано на годичном опыте неплотной работы с монгой, опыт работы с реляционными БД — примерно 10 лет.
    Ответ написан
    2 комментария
  • Rails: Какие гемы Вы используете

    Loremaster
    @Loremaster
    Тестирование:

    * Cucumber — этот bdd фреймворк изменил мое сознание и дал увидеть какими красивыми могут быть тесты. Использую для интеграционного тестирования.
    * Capybara — высокоуровневый движок для проверки существования элементов на странице и прочего барахла.
    * Rspec — чудная штукенция, красивый и очень удобный тестовый фреймворк, который использую преимущественно для тестов контроллера и моделей.
    * FactoryGirl — удобная библиотека для создания фабрик для создания объектов.
    * DatabaseCleaner — для подчищения мусора перед/до/во время тестов.
    * CapybaraWebkit — это чтобы не открывать браузер при запуске тестов. Экономит время и вообще труъ. В своем проекте только за счет этого уменьшил время прогона тестов раза в 2.
    * ParallelTests — распаралеливаем тесты, за счет этой штуки выигрыш по скорости получил в 5 раз примерно.

    Разработка:

    * BetterErrors — ну уж очень удобная штука! Красиво отображает ошибки. Настолько полюбилось, что таскаю из проекта в проект и везде ставлю. Только добавьте к нему binding_of_caller, чтобы включить продвинутые возможности, такие как консоль прямо в окне с ошибкой!
    * QuietAssets — просим ассеты не шуметь в логах. Рекомендуется только для development режима.
    * Annotate — добавляем в модели (а также можно и в тесты соответствующие) схему таблички. Я нахожу это весьма удобным.
    * Brakeman — нам же не начхать на безопасность, правда? Правда! Поэтому мы будем хорошими молодцами и будем хотя бы иногда сканировать наше приложение в поисках уязвимостей, порой можно что-то очень даже дельное найти.
    * Gon — передаем данные из рельс в js легко и непринужденно. Очень удобный инструмент, правда! Попробуйте!
    * Slim — красивый и очень легкий шаблонизатор. Приятнее, чем, erb, легче (как минимум — визуально), чем haml.

    Перечислено, конечно же, далеко не все, что использую. Пользуйтесь на здоровье. :)
    Ответ написан
    Комментировать
  • Что такое «101»?

    @werwooolf
    Классы кодируются как 3-4 буквы предмета + 3 цифры уровня класса. Сотни в коде примерно соответствуют году обучения в 4-летнем колледже.
    1хх — freshhman (1 курс) — вводные классы
    2xx — sophmore (2 курс)
    3xx — junior (3 курс)
    4xx — senior (4 курс) — специализированные классы повышенного уровня сложности

    Студенту нельзя (или просто не рекоммендуется) брать курсы по номеру выше чем его год обучения.
    Для магистров и аспирантов классы будут соотвественно начинаться с 5хх-9хх.

    Десятки и сотни в номере обозначают разные классы, чаще всего нумерация идет в порядке увеличения сложности, или зависимости классов. Так, например, чтобы взять класс FIN345 («Финансы — средний уровень») нужно обязательно взять FIN302 — «Введение в финансы» и тп. А FIN445 будет наверняка на порядок сложнее чем FIN345.

    Итого, 101 — самый начальный воодный класс в любом предмете, например МАТ101 — введение в математику или BIO101 — введение в биологию.
    Ответ написан
    1 комментарий
  • Как хранить конфиги с паролями в репозитории

    slang
    @slang
    Есть несколько подходов, например:
    1. Хранить файл build.xml.example (в репе)
    В таком случае, каждый разработчик должен скопировать его с именем build.xml, изменив параметры на нужные, а сам же build.xml добавлен в .svnignore, чтобы не перетирались значения отдельных разработчиков и всегда был пример конфига.

    2. Иногда, делают так — build.xml (в репе) хранит общие для всех настроки, а для переопределения или добавления каждому разработчику нужно создать свой build.xml.local, который занесён в игнор репозитория. Естественно, при подключении конфигов это должно быть учтено, и должна происходить проверка на локальный конфиг.

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

    И да, отвечая на вопрос, хранить параметры доступа в репозитории нормально, если конечно это не общедоступный реп, для общих подойдёт 1й, и частично 2й методы.
    Ответ написан
    3 комментария
  • Как работает связь bugtracker'a и VCS?

    casey
    @casey
    Все очень просто — в главном репозитории подключается post-commit-hook, который анализирует лог коммита и вносит нужные записи в БД Trac/Redmine/etc
    Ответ написан
    1 комментарий
  • Sendmail для Windows

    afi
    @afi
    <?php
    /*
     * Скрипт перехватывает поток, предназначенный для программы sendmail
     * 
     * Настройка: 
     * 1. в php.ini прописать путь к этому файлу 
     *    sendmail_path = "php -f c:\Tools\mailtool\mailtool.php"
     * 
     * 2. указать в переменной $mailDir путь к каталогу, куда будут складываться 
     *    отправленные письма
     */
    
    
    $mailDir = "c:\\server\\mail\\";
    $fileName = date('d.m.Y-H.i.s') . "[". round(microtime(), 3) ."]";
    
    // получаем поток
    $contents = file_get_contents("php://stdin");
    
    // Нужно все одиночные \n Заменить на \r\n
    $pattern = "/(\\n(\\r)?)|(\\r(\\n)?)/m";
    $replacement = "\r\n";
    $contents = preg_replace($pattern, $replacement, $contents);
    
    // запишем в файл
    file_put_contents($mailDir . "{$fileName}.eml", $contents);
    
    ?>
    
    Ответ написан
    Комментировать