Задать вопрос
  • Системы управления знаниями - есть ли что-то новое?

    3 комментария
  • Почему асимметричное шифрование слабее симметричного?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    При одинаковой длине ключей, симметричных и асимметричных, криптостойкость алгоритмов разная. И криптостойкость симметричных выше. Асимметричных ниже. ...

    Как это объяснить?

    Это объясняется тем, что у симметричных и асимметричных алгоритмов разная природа.
    Симметричные (например AES) используют ключ для генерации преобразования входного блока в выходной. Количество бит в ключе напрямую определяет размер пространства преобразований -- 128-битный ключ даёт 2128 возможных значений выходного блока для каждого входного.
    Асимметричные используют ключ по-разному, поэтому нужно рассматривать конкретный алгоритм. RSA использует биты ключа для хранения произведения двух простых чисел. 128-битный ключ даёт 64-битные простые числа. Факторизация 128-битного числа не требует перебора 2128 вариантов и занимает на обычном современном железе порядка секунды.
    Ответ написан
    Комментировать
  • Как деплоить небольшие проекты?

    @Stqs
    senior software developer
    вопросы у вас философские, на каждый можно отвести часы обсуждения
    Полноценный CI/CD поднимать не вижу смысла ввиду размеров

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

    1) git не есть инструмент для развертывания по, git лишь для версионирования кода
    и по-идее результатом вашей работы должен быть не код в гитхабе, а какой-то вменяемый артефакт, готовый к деплою (docker-image, pip пакет, npm пакет, deb пакет, jar, war, zip в крайнем случае, и тд и тп). Если производить артефакты то вопрос с тегами отпадет сам собой - у вас будет артефакт какой-то версии и все
    сервер не должен знать ни про какие гиты и ни про какие-то теги в нем
    Здесь я бы рекомендовал паковать все в докер-имеджи хотя бы только потому, что сервер в итоге не будет знать ничего о зависимостях приложения, нужных библиотеках, ниочем вообще, вам нужно установить только докер
    Огромное преимущество использование докера - в Dockerfile вы вынуждены волей/неволей описать точно и явно все шаги требуемые для установки приложения. И что самое замечательное - это все будет храниться в том же репозитории, под контролем гит - шикарно.
    Артефакты желательно хранить в каком-то артефактории,
    но если реально все просто - то можно хранить несколько последних версий прямо на сервере в какой-нибудь папочке

    2) как только вы получили артефакт - его можно деплоить
    неплохо было б знать особенности вашего проекта, но грубо говоря допустим что достаточно его зааплоадить на сервер, положить в нужное место
    опять же с этим дженкинс справится на ура и займет у вас это все дело 10 минут . Если вы опишете логику в Jenkinsfile вы выиграете еще раз потому что процесс развертывания(алгоритм) будет описан опять же ЯВНО. И будет тоже под контролем гита. (Jenkins должен знать только в каком репозитарии и в каком месте ему искать Jenkinsfile)
    Если же вы будете крутить какой-то спрятанный cron скрипт на сервере - о нем никому ничего не будет известно. Поверьте уже через короткое время все это дело начнет усложнятся, что-то забудется, что-то измениться и это все вместе больно ударит вас по яйцам.

    В чем еще преимущество такого подхода: если вам нужно сделать roll-back на предыдущую версию вам не нужно собирать проект заново выкачивая все с гита, ведь у вас есть предыдущие артефакты, ролбек в таком случае вообще не проблема - просто указываем предыдущую версию артефакта и деплоим еще раз и все

    3) Env Variables
    когда приложение стартует - считывает все что ему нужно из переменных окружения
    деплой джоба может каждый раз эти переменные устанавливать перед тем как деплоить - это было бы тоже круто потому что вы сделали бы это знание так же явным

    Итого имеем
    - логика сборки проекта описана в Dockerfile и находится под гитом
    - логика деплоя находится в Jenkinsfile и находится под гитом, и что самое главное является кодом (Jenkinsfile пишем на груви, для простых вещей вам понадобиться 30 минут изучения и все)
    - на сервере мы ничего не устанавливали совершенно кроме самого докера
    - мы храним несколько версий нашего приложения на всякий случай и можем быстро откатиться не прибегая к гиту вообще
    - сервер не знает ничего о гитах
    - на сервере нет НИКАКОЙ дополнительной логики по разворачиванию вашего приложения
    - имея все это очень легко добавлять другие сервера для деплоя - что нам нужно - грубо говоря указать другой айпи и набор env variables к нему ( если они конечно отличаются)
    giphy.gif
    Ответ написан
    5 комментариев
  • [PHP] DataBase на ООП, как лучше написать?

    search
    @search
    мама говорит что я особенный
    Вот тут вкратце описаны все популярные шаблоны проектирования DB слоя https://gist.github.com/codedokode/c4cbc4d7dc8e45ea074a

    Выбирайте тот что вам по душе и кайфуйте.

    Попробуйте DataMapper. Он довольно прост в реализации (вам даже либа не пондобится. Ну разве что стандартная PDO) и меньше чем ActiveRecord склоняет программистов к говнокоду. Ну и гораздо менее тяжеловесен чем полноценная ОРМ. Для понимания и закрепления ООП - самое то.

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

    Вот очень подробная статья на инглише https://www.sitepoint.com/integrating-the-data-mappers/

    А самый, на мой взгляд, лучший пример, предоставлен японцем (не пугайтесь иероглифов, смотрите код): https://github.com/hirak/pdo-datamapper-example
    Ответ написан
    2 комментария
  • Книги по построению БД?

    @Romanchitoz
    Это популярный вопрос.
    Хорошие книги по базам данных
    А так AVKOR предложил хорошие варианты.
    Ответ написан
    Комментировать
  • Книги по построению БД?

    @AVKor
    Kroenke, David M., Auer, David J. Database Processing.
    Connolly, Thomas M., Begg, Carolyn E. Database Systems: A Practical Approach to Design, Implementation, and Management.
    Ответ написан
    Комментировать
  • Средство автоматизации регрессионного тестирования?

    @taktik
    Sr. QA automation | SDET
    Как вариант можно посмотреть на CodeceptJS. Но сам не пользовался, про минусы не знаю.
    Есть статья на хабре - https://habr.com/ru/post/319656/
    Ответ написан
    1 комментарий
  • Какой CMS движок учить начинающему?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никакой. Изучайте разработку ПО, языки программирования, построение архитектуры ПО, алгоритмы, математику и т.д и т.п.

    UPD
    Приведу немного аргументации и очевидных вещей для тех, кто не понимает почему ответ именно такой. На самом деле все очень просто: в IT индустрии всё развивается и меняется очень, очень-очень быстро. И как следствие возникает проблема устаревания знаний и умений. Вот например 15-20 лет назад изучение языка программирования под названием "Дельфи" и популярной тогда его среды разработки для десктопных приложений вполне имело смысл и было популярным явлением, т.к. оно тогда довольно широко использовалось, или например Perl для создания сайтов. А где оно сейчас? Почему сегодня сайты пишутся на джаваскрипте? А как на счет десктопных приложений? А ведь те же десять лет назад попробуй скажи такое — как бы область деятельности не пришлось менять. И вот такое происходит просто с языками программирования за довольно короткое время. А основа любого CMS, фреймворка и иже с ними — это как раз таки язык программирования. И вот за время жизни языка программирования в нём случаются новые стандарты, изменения и прочее, а популярное ПО на нём переписываются десятки и сотни раз. Т.е., изменчивость продуктов какого либо языка зависит как от самого языка так и от его популярности. И чем они выше — тем чаще что-то меняется. Из всего этого вытекает очень логичный вывод: в долгосрочной перспективе выгоднее те знания, которые не устареют как можно дольше. И вот тут как раз таки знания разработки ПО и языков программирования, построения архитектура, алгоритмы и прочее имеют наибольший срок устаревания. А уж сколько тысяч лет математике можно и не вспоминать. А она, кстати именно благодаря стремительному развитию IT тоже развивается очень быстрыми темпами. Так вот, при наличии вот таких фундаментальных знаний можно легко и быстро осваивать любые новые фреймворки, CMS, языки программирования и прочее. А уж при наличии подробных мануалов, гугла, форумов и прочего большинство задач сводится тупо к вбиванию "как сделать YYY в ZZZ" в строке поиска (я вот например никак не могу понять ход мыслей людей, которые задают вопросы на форумах и прочих ресусах, ответ на которые выдается в первых же строчках гугла, складывается впечатление, что они вообще первый раз в интернете и про гугл не знают вообще ничего).
    Если есть желание именно в изучении CMS — ставим себе задачу и решаем её используя разные CMS, далее выбираем наиболее понравившуюся и пользуемся пока не надоест или не устареет. А после — повторить.

    Немного перефразирую сам вопрос и соседний популярный ответ:
    — Каким инструментом учиться пользоваться начинающему строителю?
    — Учись использовать молоток и гвозди, леса полно, доски везде используются.
    Вот только строительство — это не одни только доски, в которые забиваются гвозди, а еще архитектура, сопромат и иже с ним, экстерьер, интерьер, отопление, освещение, канализация, вентиляция и ещё куча всего. Аналогично и во всех остальных областях, в том числе и web разработке.
    Ответ написан
    9 комментариев
  • Как в PHP вывести маленькое дробное число без изменения количества знаков после запятой и перевода в формат "e"?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > Есть какой-то еще способ заставить PHP просто вывести дробное число без изменения его внешнего вида?

    Нет

    Разумеется, никакого способа нет. Потому что никакого "внешнего вида" у дробных чисел не существует в природе. У них есть только внутренний вид, но вам на него смотреть не захочется. А для вывода в десятичном формате его всегда надо преобразовать и отформатировать.

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

    @maniiii
    Тут описана работа из ide и в принципе это шикарный вариант. А тут обсуждалась связка только с шаблонами.
    Ответ написан
    Комментировать
  • Как вы вносите изменения в сайт после установки админки?

    one_day
    @one_day
    концепция модх хранить шаблоны в бд
    для работы локально нужно использовать такой костыль:
    # Snippet to include files from filesystem
    # [[includeFile? &file=`assets/templates/mytemplate/file.html`]]
     
    if ( !isset($file) || $file== "" ) return "No file specified."; //check if there's a file given.
     
    //Start the buffer
    ob_start();
     
    //include
    include $file;
     
    //get contents from the buffer
    $ob_contents = ob_get_contents();
     
    //and kill/delete the buffer
    ob_end_clean();
     
    //return it to MODx
    return $ob_contents;

    1) Создаём сниппет includeFile с этим кодом
    2) Создаём шаблон, и вызваем этот снипет передавая в &file - относительный пусть к файлу шаблона assets/templates/mytemplate/file.html
    Ответ написан
    Комментировать
  • Как работает функция сортировки usort?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ответ написан
    Комментировать
  • Где хранить огромное количество закладок?

    DevMan
    @DevMan
    пользую raindrop.
    не без косяков, но в целом доволен.
    Ответ написан
    8 комментариев
  • Где найти интересные решения макетов для интерфейса сайта?

    romansergeevich
    @romansergeevich
    interfaces.pro - живые
    froala.com/design-blocks - шаблоны
    Ответ написан
    Комментировать
  • Как быстро передать 100 Гб между двумя ПК в разных странах?

    @Fixid
    https://www.resilio.com/
    Суммарно перегнал 6Тб
    Выжирает весь 200мб/с канал между компом в России и сервером в США
    Юзает UDP
    Ответ написан
  • Как организовать процесс разработки масштабируемой системы?

    sim3x
    @sim3x
    Ваш вопрос вцелом не имеет смысла
    Хайлоад появляется только на успешных проектах

    Если вас просто мандраж перед термином
    Возьмите свой проект, любой
    Поставьте себе локально на виртуалку
    И поставьте себе задачу завалить его
    Потом отбейте свой ДДОС без потери легитимных пользователей

    каким образом организовать начальный этап этой разработки?Каков стек необходимого ПО и/или иных инструментов для этого?
    полностью зависит от ТЗ

    Под стеком не имею в виду на каком языке делать бэк, какую использовать БД и что использовать для кэширования, а интересует больше то, каким должно быть окружение процесса разработки - нужно ли с самого начала поддерживать "версионность" и если да, то как это делать?
    гит нужно использовать всегда
    Версионность данных желательно
    Как их хранить? - Делайте консистентные бекапы

    Где вообще изначально разворачивать систему - на локалке или нет?
    у вас джанга. При разработке используйте встроенный сервер, при деплое -nginx/uWSGI/postgreqsl

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

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

    @dimoff66
    Кратко о себе: Я есть
    По шагам:
    1. Базовые конструкции языка
    2. Функции работы со строками, массивами и объектами
    3. Работа с DOM
    4. Функции и замыкания
    4. ООП посредством функций
    5. ES6 (все полностью)
    6. Любой фреймворк
    Ответ написан
    Комментировать