Задать вопрос
  • Делегаты, зачем?

    MSerhio
    @MSerhio
    Вхожу в IT
    Делегат позволяет ослабить связность кода, а рассматривать их стоит вместе с событиями.
    Я объясню на примере игростроя.
    Популярный в сети пример: во врага попала пуля. Должно случиться сразу много вещей - нужно снять здоровье врага, выяснить, не погиб ли он, проиграть анимацию, уничтожить пулю, начислить очки игроку и еще что-то.
    Если мы будем всё это вызывать напрямую, то быстро запутаемся и ошибемся. А когда будем переделывать, сломаем всё окончательно.
    Вот тут нас выручат делегаты и события. Мы определим событие, которое срабатывает (вызывает свой делегат) в момент попадания пули. И соответственно, определим делегат для этого события.
    Теперь каждый метод, которому это событие интересно, может подписаться на его делегат (внести себя в список вызываемых делегатом методов - их может быть больше одного).
    И теперь мы можем переделывать что угодно. Главное, не забывать подписываться и отписываться.
    Делегат, это как автолавка в деревне: приезжает и сигналит. Кому надо - выходит. При этом ни автолавке ни покупателям не интересно, что происходит у каждой из сторон в отдельности.
    Ответ написан
    Комментировать
  • Как правильно набирать заказчиков на фрилансе?

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

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

    2) сделать свой сайт (тот же одностраничник), дать рекламу.
    Очень рекомендую.
    Плюсы - отходите от конкуренции, меньше тратите времени на убалтывание клиента, можно ставить выше расценки и т.п. Кстати, правильно настроенная реклама жрет не очень много денег. Но всё же жрет, и это минус.

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

    4) сделать аккаунты в соцсетях, какие ещё работают: типа инсты, ютуб, вк и т.п. И туда залить ваши услуги. Можно также получать клиентов бесплатно, но придется готовить контент для соцсетей, там свои стандарты, просто статьи не прокатят.

    5) разместить посты на профильных форумах или ресурсах типа хабр или vс или яндекс дзен и т.п., если есть что рассказать интересное.

    6) сделать спамную емейл рассылку по базе целевых клиентов. Не солидно, но иногда может сработать очень хорошо за минимальные деньги.

    Ну и где ещё подскажет фантазия.
    Общий смысл такой: где присутствует ваша целевая аудитория, - там вы с услугой. И будут заявки.
    Ответ написан
    Комментировать
  • Насколько реально нужен консул девопсу?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Никто не заставляет использовать docker, systemd, ansible и вообще какие угодно системы оркестрации и оптимизации. Необязательно делать шаблоны конфигов или кластерные конфигурации сервисов, необязательно использовать библиотеки настраиваемого логгирования, возиться с балансерами и реприцируемыми базами. Но люди это делают, значит, смысл всё-таки есть?

    Опытный администратор не должен задавать вопрос "нужно ли это вообще?" и исходить из идей вида "любому специалисто в области DevOps нужно вот конкретно это и не нужно конкретно другое". Он должен сам понимать, в какой момент сложность его инфраструктуры достигает того состояния, при котором ей нужно то или иное усложнение. Не рассуждать о том, что консул вообще не нужен или остро необходим, а принять решение о том, что и когда ему нужно для решения практических задач. Прекрасно, что в современном мире существует множество инструментов, которые позволяют достаточно быстро делать различные полезные вещи.

    Консул - это тоже инструмент. Вряд ли хоть кто-то использует его возможности целиком и полностью, тем более что никто не заставляет. Кому-то достаточно того, что у него все сервисы зарегистрированы в одном месте и из коробки имеют автоматическое DNS-имя вида NAME.service.consul. Кто-то использует kv-хранилище для хранения параметров, а кто-то хранит в нём секреты и целые конфиги, настраивает токены с различными acl и скрещивает всё это с consul-template. Вообще, необязательно использовать именно консул, есть и другие инструменты для подобных задач. Например, zk/etcd.

    Консул чаще используют совсем не с ансиблом, а с инструментами оркестрации, в которых сервисы могут расширяться и сворачиваться, перезагружаться и мигрировать. Скажем, пусть у нас есть условный сервис rabbitmq на три ноды. Тогда у нас может быть три контейнера rabbitm{1..3}, при запуске они регистрируются в консуле скриптом запуска вместе с проверками, а далее consul отдаёт их все три в виде имени rabbitmq.service.consul. Если какой-то из них вдруг упадёт, consul оперативно это обнаружит и исключит из DNS проблемный узел. Если вдруг управляющий всем этим администратор или автоматическая система оркестрации посчитает нужным добавить новые узлы или перенести их куда-то ещё в кластере, то consul также отразит все нужные изменения. При этом использующее rabbitmq приложение должно будет знать только адрес rabbitmq.

    Конечно, любую задачу можно обвесить скриптами, костылями и даже самописными плейбуками без использования готовых инструментов, а потом повторно решать десятки задач, которые уже сто раз решены до тебя опытными людьми, но зачем?
    Ответ написан
    1 комментарий
  • Как детально проверить SAS диски под linux?

    hint000
    @hint000
    у админа три руки
    SMART совершенно скудную информацию выдает

    https://qna.habr.com/q/1069110
    У SCSI и SAS-дисков нет SMART в "классическом" понимании этого слова.
    Ответ написан
    1 комментарий
  • Какой стек технологий лучше всего подойдет для работы с объемными базами данных?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

    Для начала немного контекста - 2 важных примечания:
    1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
    2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

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

    Насчет стоимости и условий:
    полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
    полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

    По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

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

    UPD:
    проект планируется на 100 к+ посетителей в месяц...
    предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
    ок, пусть будет 200к для наглядности.
    В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
    Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
    Ответ написан
    2 комментария
  • Скейлинг в терраформ. Как?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    тот же terraform plan вам напишет почему он хочет заменить инстансы - какие параметры общей для инстансов конфигурации изменились, при невозможности их замены на лету
    Если вы меняете важный элемент в настройке, который невозможно заменить без пересоздания инстанса, его надо игнорировать через lifecycle -> ignore changes
    Однако так вы потенциально можете получить исключительно увеличение количества объектов
    Если вы деплоите в AWS то ASG может помочь - она не пересоздает инстансы без надобности, при добавлении необходимого количества инстансов. При уменьшении, базовая политика удаления инстансов - удалять наиболее старый.
    Ответ написан
    Комментировать
  • Как правильно организовать работу серверов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. API
    2. Сервера могут общаться через базу данных
    3. Сервера могут общаться через брокер очередей
    4. Можно подумать насчет общего стораджа - S3, распределенная файловая система, просто сетевой диск замапленный на каждый сервер.

    Вопрос не в том, чтобы "как связать", вопрос зачем вам это надо, как вы себе представляете "связывание" и какая у него цель?
    Ответ написан
    1 комментарий
  • Ошибка при изменении класса хранилища объекта. Почему?

    @Looka Автор вопроса
    Отвечу частично сам.
    Восстановление работает командой:
    $ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

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

    Понять статус объекта можно так:
    $aws s3api head-object --bucket looka1 --key 1Cv77_Bin.zip
    { "AcceptRanges": "bytes",
    "Restore": "ongoing-request=\"true\"",
    "LastModified": "2019-11-01T10:50:19+00:00",
    "ContentLength": 10771150,
    "ETag": "\"f4fc5cdcfeccf75b3a432c1ae6c540f9\"",
    "VersionId": "CefbquFTCKrUa0xf5TEKv.2UdWCXNuNs",
    "ContentType": "application/zip",
    "Metadata": {},
    "StorageClass": "DEEP_ARCHIVE"
    }

    Обратить внимание:
    "Restore": "ongoing-request=\"true\""
    true - идет восстановление, falsh - восстановлен, есть доступ.

    Соответсвенно тоже самое делает в веб интерфейсе пункт Initial restore
    Но пункт доступен только для файлов, если в списке есть папка Dir\ то интерфейс не нает выбрать опцию восстановления, только изменить класс, который не работает для этого класса.

    А для  CLI решения для рекурсивного вызова не нашел, только. скрипты, а усложняется еще наличием кирилицы и пробелов в именах. В этом смысле вопрос остается. БУду признателен за подсказку и помощь.

    А кирилица не причем
    Ответ написан
    Комментировать
  • Как настроить PITR PostgreSQL?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Для pitr вам нужен:
    - basebackup как основа, должно быть завершено его снятие до датывремени требуемого восстановления pitr
    - непрерывный архив всех и абсолютно каждого сегмента wal без пропусков от момента checkpoint перед снятием используемого в восстановлении basebackup и до требуемой точки восстановления

    database system was shut down at 2022-02-10 13:31:25 UTC
    starting point-in-time recovery to 2022-02-10 07:00:00+00

    Это, конечно, невозможно даже с корректным архивом WAL.
    У postgresql REDO recovery, а не UNDO. Pitr только вперёд от текущей позиции. И не раньше достижения точки консистентности состояния (окончания снятия basebackup)

    Чтобы не ходить по граблям консистентности ещё и файловой системы, basebackup предпочтительнее снимать с самого postgresql, а не снимком блочного устройства. Но в целом вариант предусмотренный, ничем неотличимый от обычного crash recovery вроде старта после пропадания электричества (лишь бы fsync работал на всех уровнях корректно и не игнорировался).
    Ответ написан
    6 комментариев
  • Будет ли недоступность сайта при смене DNS-серверов?

    suffix_ixbt
    @suffix_ixbt
    https://www.babai.ru/
    Нет, не будет если Вы не удалите зону со всеми записями со "старого" dns-хостинга, пока ns-сервера "нового" dns-хостинга (куда Вы зону скопировали) кэшируются везде.
    Ответ написан
    Комментировать
  • Для каких примерно целей программисту нужен computer science?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Можете отвечать этим выпендрёжникам, что computer science у всех в школе была.
    61f95ecd99b46818468684.png
    Ответ написан
    1 комментарий
  • Как рулить docker-compose в проде?

    DoctorStein
    @DoctorStein
    QNX, Linux, С++, С#, mono
    docker-compose не очень, сейчас в моде kubernetes. Но если очень хочется, то можно:
    1. Редактируем yaml и Dockerfile если надо. docker-compose build, docker-compose down, docker-compose up -d. Если изменения yaml большие, например меняется состав сервисов, то стоит down сначала, потом редактирование.
    2,3. По возможности локально image не собираются. Есть отдельный процесс разработки, image выкладываются в частный registry, откуда и берутся композом.
    4. Образы строятся на том, на чём удобно разработчику. Ни разу не было задачи заменить типа описанной. Но бывает наоборот - новая ОС, на ней запускаются старые проверенные докеры.
    5. docker-compse stop servicename
    Ответ написан
    4 комментария
  • Какие наиболее выгодные фриланс-биржи на русском языке?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Нормальные бывают не биржи, а знания.
    Пока знаний нет, будет высокая конкуренция и демпинг. И никакая биржа не спасёт. Нет такого чудесного поля дураков, где всем подряд раздают вкусные заказы.

    Как знания подтянутся, можно будет уже играть в другом классе, по другому ценнику и с меньшей конкуренцией.
    Ответ написан
    3 комментария
  • Правда ли то, что например сайт или сервис електронной почты не имеют доступа к паролям?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Теоретически, это можно сделать, если хешировать/солить ваш пароль на клиенте и не передавать на сервер.
    Практически, это все равно остается вопросом доверия между вами и сайтом - сегодня они не передают пароль при авторизации, завтра фронтенд Василий шото напутал, и пароль улетел не только в базу сайта, но и к кампании, которая предоставляет аудит пользовательских метрик.
    Ответ написан
    2 комментария
  • Как создать контейнер приложения, которое развернуто?

    @rPman
    в общем случае это невозможно
    docker файл это список команд, которые необходимо выполнить на 'нулевой системе' чтобы приложение заработало

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

    в некоторых случаях, пакетный менеджер linux предлагает вполне законченное описание того что нужно для того чтобы приложение заработало, к сожалению в реальности не все так просто, не все приложения корректно описаны, а для некоторых требуется ручная первоначальная настройка
    Ответ написан
    2 комментария
  • Закрытие бесплатного G Suite (Workspace), куда мигрировать?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Можно и на месте остаться, это же сервис для компаний, несколько тысяч в месяц за то, что Яндекс с тащмайором не будет индексировать вашу переписку со страшной силой, имхо, не так дорого. Ну или свой почтовик настройте - но возможны неожиданные нюансы.
    Ответ написан
    Комментировать
  • Недостатки видеоуроков?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Многое зависит от особенностей конкретного человека. Я вот, например, с огромным трудом воспринимаю информацию в видеоуроках, а на прошлом месте работал с коллегой, который наоборот гораздо лучше воспринимал новое на слух, он как раз предпочитал видеоуроки.
    Ответ написан
    Комментировать
  • Достаточна ли защита сайта php?

    @d-sem
    Безопасность вещь комплексная и многое зависит от конкретной реализации. То что в одном месте закрывается (и то не факт, так как не известна реализация) один вектор мало влияет на общую безопасность.

    Например, у Вас может быть супер защищенный сайт, но рядом у вас в соседней папке у вас лежит приложение, которое принимает команду из пользовательского ввода и подкладывает ее в exec(). Или веб-сервер настроен так, что по отдельным запросам на другие виртуальные хосты отдает содержимое конфиг файлов. Или ньюансы срезания углов при разработке (добавим более тщательную фильтрацию полей позже. ага). Или внезапно выяснилось что в версии вашего ЯП, конкретной библиотеке или субд есть фундаментальная уязвимость.

    Хотите комплексно подойти к вопросу? Копайте в сторону изучения материалов от OWASP. Например, https://owasp.org/www-project-web-security-testing... Там достаточно много материалов для чеклистов. Или смотрите готовые чеклисты что проверять. Например, https://github.com/0xRadi/OWASP-Web-Checklist (я не говорю что это прям лучший чеклист, но посмотрите на число пунктов для быстрой оценки).

    Хотите подойти еще комплексней? Начните с книги для новичков по поиску узявимостей - Ловушка для багов. Полевое руководство по веб-хакингу | Яворски Питер https://www.piter.com/product_by_id/196618476

    А далее например обратите внимание на более сложную книгу как строить защиту в приложениях
    Безопасно by design | Берг Джонсон Д., Деоган Д., Савано Д. https://www.piter.com/product/bezopasno-by-design
    Там уже более основательно доводится доводится мысль как выстраивать защиту на основании архитектуры.
    Ответ написан
    Комментировать
  • Чему учит Марк Лутц?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Но полистав pdf-файл этой книжки я не смог найти ни одного куска кода, который был бы для меня не понятен. Разве что незнакомые модули.


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

    Потом попробуй почитать стандартные вопросы на интервью для джуна.
    Ответ написан
    5 комментариев
  • Как повысить свои навыки в построении архитектуры сложных приложений?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Читать книги на эту тему, работать на проектах, где более опытные коллеги строят сложные архитектуры, участвовать в этом посильно.
    Ответ написан
    Комментировать
OSZAR »