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

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    Практика спасет вас. Со временем поймете где что нужно.
    Для приближения к пониманию можете попробовать сами ответить на следующие вопросы:
    - как быть, если в результате выполнения функции надо получить два значения?
    - вам нужно передать в функцию Bitmap. Как вы его будете передавать?
    - вам нужно создать односвязный список. Опишите его структуру.
    - у вас есть два массива одного типа. И есть две функции, которые по разному модифицируют массив того же типа. Какие будут прототипы функций?
    Ответ написан
    Комментировать
  • С чего начать создавать сайт, вопрос с CMS?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    Сколько много букв и все не о чем!
    Простая истина для начинающих - "Начните!".

    У меня, просто, та же беда! Никак не могу начать, даже, изучать cms, то боюсь, что не освою, то не знаю с какой стороны подойти, то 5, то 10-ое!

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

    Раз освоил js, значит и все остальное освоишь!
    Ответ написан
    1 комментарий
  • Соблюдается ли второй принцип SOLID в Javascript?

    miraage
    @miraage
    Старый прогер
    На мой взгляд, скорее подразумевается сам принцип работы с сущностями, нежели возможности какого-то конкретного языка программирования.

    В том же PHP можно изменить private свойство какого-либо объекта через Reflection.
    Предположу, что такое же можно делать в других языках.

    Важно само понимание, что можно изменять в программе.

    И вернемся к вопросу. SOLID должен соблюдаться при написании программы, а не в языке программирования. Вот в чем дело.
    Ответ написан
    Комментировать
  • Какие есть объективные причины для перехода на Linux вебразработчику?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Почему до сих пор считается, что основной ОС вебразработчика должна быть ОС на основе Linux?

    Как правило, это на порядок удобнее.

    Да, можно под виртуалкой запустить линуху, но зачем?)
    Да, можно эмулировать линушную консольку, но половина хоткеев у вас работать не будет.
    Да, можно докер в виртуалке поднять, но под линухой он будет нейтивно работать.
    Да, можно считать, что вагрант вас спасет, но тот же ансайбл придется таки вовнутри поднимать, а не использовать хостовой.
    Да, можно приблуды для виртуальных рабочих столов прикрутить, но зачем, это идет в коробке с большинством DE.
    Да, можно по полной программе обмазываться putty и понасохранять все ваши доступы, но проще настроить ~/.ssh/config.
    Да, можно понаустанавливать вот это ваше все с официальных сайтов, но проще натапть "apt install **", или "yum install **".
    Да, можно залезть в политики безопасности и сделать "зашибись", но для обычной dev тачки под nix чаще всего вам это и не нужно.
    Да, можно закачать крутых прог, которые вам скрытые процессы покажут, но проще ввести есть ps aux.
    Да, можно в .gitattributes понапрописывать text eol=lf, но опять же зачем, если только у винды принят crlf?
    Да, можно понаотключать BOM, но опять же зачем?
    Да, можно считать реестр - удобной штукой, но это не так))
    и т. д...

    Из таких мелочей и состоит пользование ОС.

    Чуть не забыл:
    Да, можно считать, что комп под виндой принадлежит вам...))
    Ответ написан
    12 комментариев
  • Имеет ли смысл спрашивать старых клиентов не нужно ли им что то еще(если с ними был тока 1 заказ)?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Если вы обратитесь к старому клиенту, то возможно два варианта - вы получите новый заказ или не получите новый заказ. Если же вы к ним не обратитесь, то вариант один - вы не получите новый заказ.
    Решать вам.
    Ответ написан
    2 комментария
  • Как пишутся системы оплаты для сайта?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Как осуществляется написание платежной системы касательно visa и mastercard или для конкретного банка? что делается в данном случае? (Допустим требуется работа со сбербанком и альфабанком).

    Из личного опыта:
    a. Приезжаете в офис банка у которого есть услуга "интернет эквайринг", показываете своё юрлицо, уставные документы, бенефициаров, обороты от 50 млн в месяц.
    * некоторые работают и с меньшими оборотами, но % будет крайне не выгодным.
    ** без запущенного и работающего проекта идти в банк бессмысленно.
    b. Ждете 2-6 недель пока СБ банка проверит все.
    c. Ждете 2-4 недели пока банк подпишет договор
    d. Получаете реквизиты и документацию API конкретного банка.
    e. Реализуете
    f. Ждете 1-2 недели пока банк проверит что у Вас все согласно их протоколу.
    g. Получаете боевые реквизиты.

    Учтите что:
    1. Если Ваши объемы меньше чем 50млн+ в месяц - с вероятностью 99% Вам будет СИЛЬНО выгоднее работать через посредника. Посмотрите на uniteller.ru , payture.com/ru , payler.com - если Вы будете достаточно убедительны на переговорах, вполне реально сторговать их до 2-2.5% даже на маленьких оборотах (1млн-5млн)

    2. Прямые API банков мягко говоря не современны. Как правило там не будет ни удобного личного кабинета, ни вменяемой службы поддержки - ничего. Зато будут проверки, требования бумажной отчетности и прочие милые сердцу советского бюрократа вещи.

    3. Риски при работе через посредника - по факту минимальны. Все приведенные выше делают выплаты ежесуточно, т.е даже если посредник накроется - Вы максимум рискуете дневным оборотом.

    С учетом данных пунктов, по моему мнению прямой договор с банком имеет смысл если у Вас настолько большие обороты - что разница в десятые доли процента окупает весь этот геморрой.
    По факту есть море проектов с большими оборотами (mamba, badoo, etc) кто продолжает работать через агрегатор, минимизируя расходы на юристов, бухгалтеров, техническую поддержку работы шлюза итд итп.
    Ответ написан
    1 комментарий
  • Как определить допустимый предел размера подключаемого жесткого диска?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Хардварные ограничения: текущий стандарт адресации (2003 года) LBA-48 требует 48-битные абреса блоков, т.е. 2^48 блоков - устройства до 128 ПиБ.

    По софту:
    Старый MBR ограничен в 2,2Тб, есть такое. Размечать диск надо будет в GPT, там 64-битные адреса.
    Debian - это вам не странные windows, а нормальный Linux. Никаких бредовых ограничений на использование GPT нет. Хоть системный, хоть загрузочный, хоть с UEFI, хоть с BIOS - ему всё равно. Будет загружаться и работать как ни в чём не бывало.
    Ответ написан
    Комментировать
  • Как изменить права на системный каталог Linux через PHP (выполнить команды от рута)?

    shambler81
    @shambler81 Куратор тега Linux
    И правильно делает, поскольку это не просто костыль а мега костыль и крест на безопасности.
    Могу порекомендовать вам поднять демона на отдельном порту который уже смоежт работать от рута а апачь уже будет управлять им
    Ответ написан
    Комментировать
  • Утилита для переименования в глубину во всех файлах?

    @strelmax
    for i in `find /yourdirectory -type f`;do sed -i 's/чтоменять/начтоменять/g' $i;done
    с gui вот скрипт:
    a=`zenity --entry --text="Что меняем" --entry-text=""`
    b=`zenity --entry --text="На что меняем" --entry-text=""`
    for i in `find /yourdirectory -type f`;do sed -i "s/${a}/${b}/g" $i;done
    Ответ написан
    1 комментарий
  • Как создать утверждение в MySQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    MySQL не поддерживает ASSERTION.
    Используйте триггеры BEFORE INSERT и BEFORE UPDATE.
    Ответ написан
    2 комментария
  • Как защитить проект от воровства программистом?

    newross
    @newross
    Product owner
    Все просто - если ваш программист может сделать этот бизнес без вас, значит любой другой тоже это может сделать\скопировать\разреверсить. От копирования вы уже ничем себя не защитите, можете даже не строить иллюзий - меняется название софта, немного правится интерфейс и, вуаля, другой проект к которому не подкапаешься. Если вас проект легко скопировать, подумайте, а стоит ли вообще им заниматься?

    Насчет исходников. Не слушайте советы про бэкапы, это бред сивой кобылы. Потом не разберетесь где какая версия и что вообще происходит с кодом. Поставленный процесс разработки с системой контроля версий, автоматическим тестированием и прочими радостями не дадут испортить или удалить код. Естественно, все это должно быть оформлено на вас, как на администратора.
    Ответ написан
    Комментировать
  • Для чего нужен 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 комментариев
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

    1) Есть одна физическая машина. Вы устанвливаете софт, разные приложухи, базы, web сервера, заходят тестовые юзеры, что-то запускают. Первая проблема - вы не понимаете кому что надо, кто владелец файлов, приложух, зачем висят демоны и кто за это ответственнен. Как выход, вы решаете это разделить на виртуалки.

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев
  • Как перейти с консольных приложений на графические (оконные)?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Создавать GUI с помощью WinAPI - это, конечно, очень полезно с точки зрения своего развития, но... сейчас мало кто этим занимается. Есть Qt, есть GTK, есть <вставьте свое название>, которые заметно упрощают разработку пользовательских интерфейсов. Если вам будет необходимо создавать сложные интерфейсы (вспомните MS Office или Adobe Photoshop) - стоит выбрать что-то из этого и использовать, но в случае с разработкой игр ситуация немного другая: в играх интерфейс такого рода обычно не нужен. Вообще. Там обычно только одно "главное меню" и немножко элементов интерфейса, которые мало похожи на то, что вы видите в среднестатистическом приложении. Поэтому (личное мнение) если вы хотите заниматься разработкой игр, вам стоит изучать то, что в них более востребовано - например SDL. И сразу читать что-то вроде SDL Game Development и писать. Через некоторое время будете делать 2D-игры без проблем (со звуком, спрайтами, клавиатурой/мышью/джойстиком, нормальными уровнями, и.т.д.) и, заодно, поймете принципы создания архитектуры подобного рода проектов. А потом смотреть в сторону каких-либо физических движков или углубляться в графику (OpenGL/DirectX).
    Ответ написан
    1 комментарий
  • Разработка под iOS сильно отличается от разработки под Android?

    @four4
    Да.
    Ответ написан
    Комментировать
  • Что читать дальше?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    Без практики читать бесполезно.
    Берите себе какую то задачу, пробуйте реализовать, параллельно читайте что то умное.
    Ответ написан
    4 комментария
  • Бесплатный проект для портфолио превратился в бесконечный. Как быть?

    Спланируйте релизы. Сейчас вы работаете только над v.1.0 для которого у вас есть ТЗ и все те доработки, на которые вы по доброте душевной согласились.

    Принимать новые feature request'ы от клиента можно, но даже не думайте их реализовывать, пусть, для этого всего одну строку поправить – все они пойдут уже в будущие, платные релизы. Принимайте хотелки клиента, аккуратно записывайте, и забывайте про них до поры до времени.

    Держите клиента в курсе, у вас всё прозрачно: покажите клиенту ТЗ и планируемые к последующим релизам правки. Можете сразу раскидать планы на несколько будущих релизов – это пойдёт в v.1.1 через месяц после приёмки 1.0 и начала платного сотрудничества. А это – в v.2 – где-то летом.
    Ответ написан
    Комментировать
  • Тень текста в SVG?

    Можно использовать фильтр drop-shadow. Правда, поддержка у этой фичи пока не очень большая. Это если вы хотите сохранить логотип в векторе - тогда тень придется добавлять динамически через css - векторная графика не предназначена для теней и подобного. Однако учтите, что для этого вам необходимо вставить svg на страницу как текст (способы), чтобы иметь возможность использовать селекторы.

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

    petermzg
    @petermzg
    Самый лучший программист
    Так вы разделите классы ComPort и Device.
    И при создание обьекта Device передавайте в него обьект ComPort.
    Наследование в вашей задаче не нужно.
    Ответ написан
  • Как найти нужный POST или GET запрос?

    FireFox + FireBug
    Ответ написан
    Комментировать