Задать вопрос
  • Для чего нужен Docker?

    @spotifi
    Внутри Docker только Linux, и, экспериментально, FreeBSD. Запускается нативно под Linux и, экспериментально, под FreeBSD. Под MacOSX, Windows - через виртуальную машину.

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

    Это почти виртуальная машина. Почти, да не совсем.


    Есть такое понятие "ад зависимостей". Любое ПО устанавливаемое на компьютер, тянет за собой зависимости (конфигурационные файлы, статические файлы называемые обычно asset, вспомогательные утилиты/сервисы, библиотеки и пр.). Ряд из этих библиотек/утилит/сервисов несовместим друг с другом. А с учетом того, что каждая из этих библиотек/утилит/сервисов имеет и свои зависимости - ситуация еще хуже.

    Например, мы используем Yandex.Cocaine, которая нормально компилируется только на Ubuntu 14.04 (и, вроде, на Debian 7). Но не под CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16 и пр. - скомпилировать его невозможно. Запускаем в этих операционных системах в Докере.

    С другой стороны, и одновременно с этим, вам необходимо установить другое, более современное ПО. И одновременно более старое. Причем речь даже не идет об серьезно отличающихся версиях Linux. Например, одно ПО требует не менее Ubuntu 14.10, а другое не более Linux 14.04.

    Docker - это одна программа внутри индивидуального окружения с индивидуальной версией операционной системы. За счет слоеных контейнеров, если вы используете один корень для всех образом, то размер Docker контейнера всего-то на несколько килобайтов больше размера бинарного файла, запускаемого под Docker.

    Таким образом, мы имеем бинарный файл запускаемый как бы в своей операционной системе.

    Вы можете сказать - ба, да это же давно известная виртуальная машина. Но нет, это не так. Это так называемые контейнера. Никакой виртуальной машиной там и не пахнет. За исключением Windows и MacOSX, где работа без виртуальном машины пока экспериментально возможно только, а нормой в этих ОС является использование Докера внутри полноценной виртуальной машины.

    Но виртуальные машины с Докером используются только для разработки. Для запуска в production виртуальные машины с Докер не используются.

    Докер использует контейнеры операционной системы. LXC в Linux, Jails в FreeBSD. Контейнер - это область операционной системы, изолированная от основной части операционной системы. В контейнере свое дерево каталогов (включая системные /dev, /bin, /sbin и пр.), свои сетевые порты и пр. и пр.

    Но при этом не используется полная виртуализация. Что существенно экономит ресурсы. Запустить 100 полноценных виртуальных машин вряд ли получится даже на мощном сервере. А вот запустить 100 контейнеров Docker даже на слабом домашнем компьютере - возможно.

    Правда использование не полной виртуализации ограничивает использование операционных систем внутри контейнеров. Как правило, это специально подготовленные версии Linux или FreeBSD. Именно специально подготовленные. Windows - в принципе в контейнере запустить невозможно.

    Контейнеры существовали и до Docker. Докер, строго говоря, это всего лишь очень удобный набор инструментов, собранных воедино, для управления контейнерной виртуализацией. Но очень удобный.

    Зачем это используется?

    Ребята из всяческих Dropbox, Facebook и и пр. гигантах, запускающие по 1 млн. различных программ в своих сервисах, столкнулись, что невозможно везде гарантировать идентичные настройки операционной системы. А это критично.

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

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

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

    Это позволяет гарантировать гораздо большую идентичность среды разработки и среды исполнения.

    До этого люди мучались, придумывали хитрые инсталяторы...

    Потом плюнули на попытки упорядочить окружение в ОС - и сейчас концепция такова - устанавливать программы на сервера вместе со своими индивидуально настроенными под них операционными системами - то есть внутри контейнеров. 1 контейнер = 1 настройка ОС = 1 программа внутри.

    Другими словами:
    • Докер-контейнер нужно использовать для отладки.
    • Тот же Докер-контейнер нужно использовать и на сервере.


    Это позволяет не трудиться с настройками "под сервер" локально на машине разработчика. Это позволяет разрабатывать на машине разработчика совершенно разные программы одновременно, которые требует несовместимых настроек операционной системы. Это позволяет давать гораздо больше гарантий, что программа на сервере будет вести себя также как и на машине разработчика. Это позволяет разрабатывать под Windows/MacOSX с удобным "прозрачным" тестированием под Linux.

    Докер применим к созданию/настройке только серверного программного обеспечения под Linux (экспериментально под FreeBSD). Не для смартфонов. А если десктопов - то только программное обеспечение без GUI.

    Посколько Докер позволил одним махом упростить работу разработчикам и админам и повысить качество результата - сейчас бум на Докер. Придумано огромная гора инструментов для управления развертыванием приложений созданных с Докером. Если раньше чтобы запустить 10 000 программ на 1000 серверах нужно было как минимум 3 высококвалифицированнейших девопса, которые писали кучу описаний как это сделать на Puppet, Salt, Chef, Ansible, да и то не было гарантий, это все тестилось месяцами. То сейчас с Докер даже один квалифицированных девопс может рулить миллионами программ на десятках тысяч серверов. С куда как большей гарантией, что все это заведется нормально.

    UPD:

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

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

    То есть при правильной огранизации дела разработчик не может/не должен влиять на то, какой будет образ.
    А вот в тестовой среде (запускаемом на сервер, недоступном разработчику в больших командах) и в production как раз используется один и тот же образ.

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

    Sergei_Erjemin
    @Sergei_Erjemin
    Улыбайся, будь самураем...
    Практически художественная детско-приключенческая литература по математике для 4-5 классов -- "Три дня в Карликании" и "Черная маска из Аль-Джебры". Ну прочее Владимира Левшина.

    И еще книги Якова Перельмана: "Занимательная Алгебра", "Занимательная Математика", "Занимательная Арифметика", "Физика на каждом шагу" и т.п. Их наши дедушки читали с увлечением, и правильно делали (ссылка для справки)... Сейчас много новых изданий, но в детстве я читал растрепанные издания 40-х, 50-х и 60-х... захватывающее чтение!

    Для более продвинутых в математике, проверенная классика моего детства -- книги Мартина Гарднера (иногда с соавторами): "Математические досуги" (1972), "Крестики-нолики" (1988), "Математические новеллы" (1974), "Математические чудеса и тайны" (1982)... К счастью Мартина Гарднера иногда переиздают до сих пор.

    Для совсем увлеченных очень классные были "Библиотечки КВАНТ". В букинистических стоят копейки. А реально офигительные!
    Ответ написан
    Комментировать
  • Как сделать сслылку для viber и wathsapp?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Комментировать
  • Где взять актуальную базу России регионов->городов->улиц в формате sql?

    andrew72ru
    @andrew72ru
    системный администратор, веб-разработчик
    Ответ написан
    Комментировать
  • Нужно ли из ноутбука снимать батарею?

    @Dum_spiro_spero
    Asus K73 (17", i5), используется в качестве десктопа - к нему подключены большой монитор, клавиатура, мышь. 100% времени включен в розетку, батарея не вынимается. 4 года в таком режиме - полет нормальный. Иногда таскаю в поездки - заявленные изначально три часа часа по прежнему держит. На пару фильмов в самолете хватает.
    Ответ написан
    Комментировать
  • Где можно оценить свой код?

    maaGames
    @maaGames
    Погроммирую программы
    "Ваш код гавно!" (с)
    Если возникают сомнения, а не г0вно ли мой код, то он, однозначно, гавно.
    Ответ написан
    3 комментария
  • Какой список литературы для структурированного изучения программирования?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Если бы имел машину времени, чтоб вбить "Я-в-прошлом" то что надо читать, то это было бы так:
    1. Таненбаум про его Операционные системы
    2. Таненбаум про аппаратное обеспечение
    3. Язык программирования Python по книге Лутза и при этом чтение "Structure And Interpretation Of Computer Program".
    4. Только после этого приступил бы к чтению Керниган, Ричи "Язык С"
    5. Попытался бы влиться в какой-нибудь OpenSource проект

    Далеее уже следуют попытки понять к чему душа лежит, толи вебу, толи linux kernel module, толи еще что.
    В течении этих пункто НЕПРЕРЫВНО улучшать английский. Большинство серьезной литературы о новых технологиях появлятся сначала на английском.
    Ответ написан
    10 комментариев
  • Как самому доучить математику?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Во-первых, определите, зачем вам математика, и нужна ли она вообще реально вам на сверхглубоком уровне? Если вы действительно занимаетесь версткой хтмл+цсс, математика вам постольку-поскольку нужна, того что знали вполне хватит.
    Во-вторых, если вы хотите куда-то двигаться в более специфичные сферы, типа программирование, анализ данных, биг-дата, статистика, и прочее - то берете любой учебник, читаете содержание и пытаетесь изучать каждую главу как из этого самого же учебника, так и читая все что выдает поисковик по этой теме. Ну и главное пробуете решать, проверяете свои решения и сверяете ответы - вы должны понимать суть и уметь решать. Тогда к вам придет осознание смысла математики и как ее применять.
    В-третьих, чтобы не забыть что уже изучили изредка решайте примеры на уже пройденные намного ранее темы, а лучше устраивайте себе тесты и контрольные. Учебников, задачников в интернете навалом, даже яндекс предлагает сервис по тестированию для ЕГЭ, повторяйте и это, школьный уровень тоже будет полезен, основы повторите. А сканированных книг, методик и программ обучения математике - пруд пруди.
    Поставьте конкретные цели, определите что вам и зачем и вперед по собственному намеченному плану! Удачи вам! Математика - всегда пригодиться! Это вещь!
    Ответ написан
    2 комментария
  • Как перезапустить функцию после ajax?

    @kgorozhanov
    Front-End Developer
    var count = 0;
    $(function() {
        count = $('input.com-check:checked').length;
        displayCount();
    
        $(document).on('click', 'input.com-check', function(e, a) {   
             if (this.checked) {
                  count += a ? -1 : 1;
             } else {
                  count += a ? 1 : -1;
             }
             displayCount();
        });
        $('#invert').click(function(e) {    
             $('input.com-check').trigger('click', true)
        });
    });
    function displayCount() {
        $('#count').text(count);
    }
    Ответ написан
    2 комментария
  • Верстать без фреймвороков это значит быть не професионалом?

    @hopajeci
    Без фрейморков верстают или профи (при соответствующих хороших бюджетах).
    Или новички, которые слов таких даже не знают.
    Или те, кому освоить фреймворки не позволяет лень, глупость, гордость или, наоборот, и так хорошие заработки - кто способен потом с заказчика брать дополнительные деньги, когда выясниться, что в версии Y браузера Х не работает что-то что будет исправлено за отдельные деньги.

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

    Верстаем мы всегда с макета.
    Я не говорю о таком кейсе как собрать админку из компонентов бутстрапа по прототипу - это как раз самое правильное его использование.

    Так вот от макета мы очень сильно зависим.
    Если дизайнер потрудился хотя бы использовать сетку, то сетка и система breakpoints из Botstrap (4 версия, на scss) нам очень поможет. Если дизайнер идиот - не поможет ничего.

    В моем шаблоне проекта сетка и брекпоинты есть по умолчанию. Так же как некоторые helper-классы.

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

    Насколько классы предлагаемые бутстрапом впишутся в общий стиль проекта?

    Насколько мы облегчим поддержку проекта, перекостылив под дизайн половину того что взяли от бутстрапа, а 2/3 проекта написав своими стилями?

    Я видел как по дефолту суют
    bootstrap.min.css
    bootstrap-theme.min.css
    bootstrap.min.js
    потом в отдельном файле переопределяя и дописывая все что нужно. Целый мать его bootstrap.min.js из которого использовалось только меню-бутерброд!

    Видел целую коллекцию костылей, перемотанную изолентой чтобы было как в дизайне.

    И что, насколько я новичёк и максималист с моей библиотекой миксинов (документированных, в т.ч. из бутстрапа), scss файлами, разнесенными по блокам и BEM-подходом к наименованию классов?
    С опрятным css на выходе и инструкцией-рекомендацией как и зачем всё же использовать препроцессоры.

    Таким образом, присоединяюсь к ответам Сергей и Serj-One . Каждой задаче - свой инструмент.
    А поддерживать легко не столько код где использовался фреймворк (особенно в контексте css), а код, где использовалась голова.

    P.S. Вот ещё достойное мнение например:https://gist.github.com/iAdramelk/d328b73c72cab92ef95f
    Ответ написан
    Комментировать
  • Верстать без фреймвороков это значит быть не професионалом?

    Sanes
    @Sanes
    Хочет на фреймворке, сделайте. Если дольше получается, значит и цена соответствующая. Я для себя стараюсь использовать. Кто его знает, что завтра понадобится...
    Ответ написан
    3 комментария
  • Верстать без фреймвороков это значит быть не професионалом?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Новички поступают как раз наоборот, т.е. лепят тот же бутстрап всюду, независимо от того, нужен ли он там на самом деле.
    Дело в том, что css фреймворки - скорей инструмент прототипирования, нежели основа проекта.
    Их применение оправдано в проекте без дизайна, какой-то технической вёрстке, админке, и т.д. Но в большинстве проектов с уникальным дизайном они попросту неуместны.
    Верстай с нуля, и не парься. Это будет только плюсом, наберёшься опыта.
    Ответ написан
    2 комментария
  • Что значит "опыт верстки под битрикс, вордпресс и т. д."?

    SV0L0Ch
    @SV0L0Ch
    Разработчик специализируюсь на Bitrix и Wordpress
    В большинстве случаев верстка под CMS это верстка с учетом особенностей движка и его "требований" по стилям.
    Пример из жизни - для сайта на битриксе была сделана верстка. При натяжке оказалось, что прописанный в css фон сайта появляется в визуальном редакторе битрикса из-за пересечения стилей. После того как в шаблоне сайта был переименован основной контейнер и соответствующий стили, все стало нормально.
    Т.е. ваша верстка не должна перекрывать стандартные стили служебных частей движка.
    Ответ написан
    Комментировать
  • Что значит "опыт верстки под битрикс, вордпресс и т. д."?

    Тут 2 варианта:

    1. Заказывают верстку, подразумевают создание шаблона/темы для CMS. По хитрости, по не знанию, по глупости - не важно. Важно не подписаться пилить это по цене только верстки.

    Верстка - это когда макет превращается в набор html/css/js файлов.

    Да, могут быть вариации. Может быть сразу под движок: Smarty, Twig, Jade, или все шаблоны в Handlebars, или сразу чтобы всё под Angular было. Но это всё частные случаи, требующие более высокой квалификации, или находящиеся уже где-то во front-end разработке.

    2. Просят учесть особенности CMS.

    Маленьких нюансов может быть много.

    Вот Битрикс, например, и его Эрмитаж (тыкнул в блок - тут же его отредактировал если по простому). Где-то лишняя обертка элемента, чтобы в режиме редактирования не разваливалось. Везде - z-index меньше 1000, чтобы Эрмитаж не перекрывало.

    Wordpress вообще генерирует огромное количество своих классов. Взять те же навигационные меню. Использовать их = наплевать на все эти ваши БЭМ и прочее.
    И т.д.

    Если я верстал и без проблем натягивал свои макеты на Wordpress - могу ли сказать что у меня есть опыт верстки под Wordpress?

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

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

    Когда ему движок выдаст меню в виде
    .menu
        ul
            li

    Но я не считаю это своей проблемой.
    Когда понадобилось, оказалось нет ничего сложного 1 раз потратить время и написать свой вывод меню в Wordpress, чтобы можно было любую верстку натянуть. Почему так не может сделать тот кто натягивает? Почему в ТЗ об этом не предупредили?

    Уменьшает ли "опыт верстки под CMS" время верстки?
    Если не были оговорены нюансы (те же меню WP) - то нет.
    Может увеличиться время натягивания верстки на движок, но это уже проблемы заказчика, который не озвучил требования заранее.

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

    @lomikman
    Лучше начинать на практике с простых шаблонов (singleton, fabric). Попробуйте для начала научиться просто "видеть" их в используемых библиотеках. Дальше можно смотреть реализации и пробовать применять в собственном коде.
    Самый быстрый способ прокачаться это закодить что-нибудь, потом попросить знакомого/эксперта/дядечку с опытом за деньги/пиво дать комментарии по коду и выстроить архитектуру(повторить n раз). Тогда вам станет понятно зачем они нужны и области их применимости.
    Главное не заболеть "шаблоном проектирования головного мозга" - это когда кодер сует шаблоны куда не нужно, "лишь бы были", следуя модным течениям.
    Ответ написан
    1 комментарий
  • Опыт использования Avocode, кто-то может поделиться?

    dsadasdad
    @dsadasdad
    lol
    Вроде есть уже подобный инструмент от адоба. И в самом авакоде есть триал. Пробуй.
    Ответ написан
    5 комментариев
  • Как можно убрать неиспользуемые css-стили из файла?

    Kublyakov
    @Kublyakov
    Как уже посоветовали, gulp-uncss должен помочь. В хроме в инструментах разработчика на вкладке "Audit" запустите собственно аудит и в результатах среди прочего будет список неиспользуемых селекторов на странице и процент от всего css.
    Ответ написан
    Комментировать
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    akubintsev
    @akubintsev
    Опытный backend разработчик
    Тут многие пишут про вес, спину, глаза...
    Но не всё так просто, как кажется. Видимая и казалось бы легко обратимая симптоматика либо влечет за собой более тяжелые последствия, либо происходят сами по себе негативные процессы, которые выплывут наружу не скоро.
    Чем больше возраст, тем хуже регенеративные функции организма. Недостаток движения, гиподинамия, затормаживает сперва обмен веществ, а потом происходят и нарушения. Вылиться это может легко в:
    - гипертонию
    - простатит
    - камни в почках
    - камни в желчном
    - гастрит
    - общее снижение иммунитета и тонуса

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

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Сейчас все работают сутками за компом, не только программисты. А проблемы со здоровьем у программистов не из-за этого, а сами знаете почему. Им просто впадлу что-то предпринимать, да и не считают нужным (и я в том числе, т.к. у меня всё ок).
    Но, почему-то, именно программисты очень любят винить стул, мышь, клавиатуру, что там ещё у них неэргономичное?) Может потому, что проще купить дорогой стул, придумать работать стоя, лёжа, купить powerball, раскосую клавиатуру, силиконовый коврик для мышки и успокоиться, мол, вот теперь заживём?)
    Вот у меня никаких проблем, абсолютно. 8 лет уже программист.
    Ответ написан
    Комментировать